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 <jcarr@wit.com>
This commit is contained in:
Jeff Carr 2024-01-05 12:46:17 -06:00
parent 166614d89d
commit 80d0f34bc0
4 changed files with 15 additions and 118 deletions

View File

@ -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

14
doc.go
View File

@ -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")
})

View File

@ -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

42
tab.go
View File

@ -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
}