From 80d0f34bc04adecb3c2ee01785d0846fc155430d Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Fri, 5 Jan 2024 12:46:17 -0600 Subject: [PATCH] Tabs are Windows Tabs don't exist. The are simply windows within a window. There are *lots* of problems with trying to treat everything that way. Luckily, we don't have to care. All the problems with handling that concept can be pushed to the toolkits/ therefore, this primitive code can be kept as clean as possible Makefile and git cleanups Signed-off-by: Jeff Carr --- Makefile | 74 ++++++++---------------------------------------------- doc.go | 14 ++++------- structs.go | 3 --- tab.go | 42 ------------------------------- 4 files changed, 15 insertions(+), 118 deletions(-) delete mode 100644 tab.go diff --git a/Makefile b/Makefile index 97f87bf..7f76096 100644 --- a/Makefile +++ b/Makefile @@ -1,12 +1,9 @@ -.PHONY: README.md log examples - -all: README.md - # reset +all: @echo - @echo "make examples # will run all the Example demos and commands" - @echo "make update # full git update of all the dependencies" + @echo This is the core gui package 'go.wit.com/gui/gui' @echo - @echo This Requires working IPv6 + @echo It creates a binary tree of widgets + @echo The widgets are things like Windows, Buttons, Labels, etc @echo ifeq ($(GO111MODULE),) @echo @@ -19,49 +16,21 @@ ifeq ($(GO111MODULE),) @echo @echo export GO111MODULE=off @echo - sleep 3 endif -ifeq (,$(wildcard go.mod)) - go mod init gui - go mod tidy -endif - make clean - make plugins - make examples-buttons -build-dep: - apt install -f libgtk-3-dev +redomod: + rm -f go.* + go mod init + go mod tidy # should update every go dependancy (?) update: git pull go get -v -t -u ./... -examples: \ - all \ - examples-helloworld \ - examples-buttons \ - examples-console-ui-helloworld - -# this is the most basic one. This syntax should always work -examples-helloworld: - make -C examples/helloworld - -examples-buttons: - make -C examples/buttons - -examples-console-ui-helloworld: - make -C examples/console-ui-helloworld - -git.wit.org: - git push witgui master - git push witgui devel - git push witgui jcarr - git push witgui --tags - # sync repo to the github backup # git remote add github git@github.com:wit-go/gui.git -github: git.wit.org +github: git push origin master git push origin devel git push origin --tags @@ -69,35 +38,12 @@ github: git.wit.org git push github devel git push github --tags @echo + @echo check https://git.wit.org/gui/gui @echo check https://github.com/wit-go/gui @echo doc: godoc -v -goget: - go get -v -t -u - make -C toolkit/gocui goget - make -C toolkit/andlabs goget - -clean: - rm -f toolkit/*.so - -plugins: plugins-gocui plugins-andlabs - -plugins-gocui: - go build -C toolkit/gocui -v -buildmode=plugin -o ../gocui.so - go build -C toolkit/nocui -v -buildmode=plugin -o ../nocui.so - -plugins-andlabs: - go build -C toolkit/andlabs -v -buildmode=plugin -o ../andlabs.so - -objdump: - objdump -t toolkit/andlabs.so |less - -log: - reset - tail -f /tmp/witgui.* /tmp/guilogfile - submit-to-docs: GOPROXY=https://proxy.golang.org GO111MODULE=on go get go.wit.com/gui@v1.0.0 diff --git a/doc.go b/doc.go index c68b0ae..e8f94db 100644 --- a/doc.go +++ b/doc.go @@ -41,20 +41,16 @@ Hello World Example // go will sit here until the window exits func main() { - myGui = gui.New() + myGui = gui.New().Default() + + helloworld() } - // This initializes the first window and 2 tabs + // This initializes the first window, a group and a button func helloworld() { window := myGui.NewWindow("hello world") - addTab(window, "A Simple Tab Demo") - addTab(window, "A Second Tab") - } - func addTab(w *gui.Node, title string) { - tab := w.NewTab(title) - - group := tab.NewGroup("foo bar") + group := window.NewGroup("foo bar") group.NewButton("hello", func() { log.Println("world") }) diff --git a/structs.go b/structs.go index 989a4bd..b3900c0 100644 --- a/structs.go +++ b/structs.go @@ -29,9 +29,6 @@ type guiConfig struct { // This is the master node. The Binary Tree starts here rootNode *Node - // if the user prefers new windows or 'windows within windows' tabs - makeTabs bool - // A node off of rootNode for passing debugging flags flag *Node diff --git a/tab.go b/tab.go deleted file mode 100644 index 0123c10..0000000 --- a/tab.go +++ /dev/null @@ -1,42 +0,0 @@ -package gui - -import ( - "go.wit.com/log" - - "go.wit.com/gui/toolkits" -) - -// This function should make a new node with the parent and -// the 'tab' as a child - -func (n *Node) NewTab(text string) *Node { - // check to make sure n is actually a window - - if (n.WidgetType != toolkit.Window) { - // figure out what the actual window is - log.Warn("NewTab() is being requested on something that isn't a Window. node =", n) - if (n.parent == nil) { - // TODO: find a window. any window. never give up. never die. - log.Warn("NewTab() TODO: make a window here", n) - panic("NewTab did not get passed a window") - } - log.Warn("NewTab() parent =", n.parent) - if (n.parent.WidgetType == toolkit.Root) { - // also broken - log.Warn("NewTab() TODO: make or find a window here", n) - panic("NewTab() did not get passed a window") - } - // go up the binary tree until we find a window widget to add a tab too - return n.parent.NewTab(text) - } - newNode := n.newNode(text, toolkit.Tab) - - a := newAction(newNode, toolkit.Add) - sendAction(a) - - // by default, create a box inside the tab - // TODO: allow this to be configurable - newBox := newNode.NewBox(text + " box", true) - - return newBox -}