From 4f19c8b64df77d204dfd0fab462f99f4ef5009b7 Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Tue, 30 Jan 2024 02:38:06 -0600 Subject: [PATCH] disable color works Signed-off-by: Jeff Carr --- color.go | 29 ++++++++++++++++++++++++++++- plugin.go | 37 ++++++++++++++++++++++--------------- structs.go | 5 +++++ widget.go | 2 ++ 4 files changed, 57 insertions(+), 16 deletions(-) diff --git a/color.go b/color.go index e02e747..f855d0e 100644 --- a/color.go +++ b/color.go @@ -41,7 +41,14 @@ var superLightGrey gocui.Attribute = gocui.GetColor("#55AAFF") // super light gr // Normal Text On mouseover // // Widget Frame Text background Text background -var colorWindow colorT = colorT{none, gocui.ColorBlue, none, none, powdererBlue, "normal window"} +var colorWindow colorT = colorT { + frame: none, + fg: gocui.ColorBlue, + bg: none, + selFg: none, + selBg: powdererBlue, + name: "normal window", +} var colorActiveW colorT = colorT{none, none, powdererBlue, none, powdererBlue, "active window"} var colorTab colorT = colorT{gocui.ColorBlue, gocui.ColorBlue, none, none, powdererBlue, "normal tab"} @@ -51,6 +58,15 @@ var colorButton colorT = colorT{gocui.ColorGreen, none, gocui.ColorWhite, gocui. var colorLabel colorT = colorT{none, none, superLightGrey, none, superLightGrey, "normal label"} var colorGroup colorT = colorT{none, none, superLightGrey, none, superLightGrey, "normal group"} +var colorDisabled colorT = colorT { + frame: superLightGrey, + fg: superLightGrey, + bg: superLightGrey, + selFg: gocui.ColorBlack, + selBg: gocui.ColorBlack, + name: "disabled widget", +} + // widget debugging colors. these widgets aren't displayed unless you are debugging var colorRoot colorT = colorT{gocui.ColorRed, none, powdererBlue, none, gocui.ColorBlue, "debug root"} var colorFlag colorT = colorT{gocui.ColorRed, none, powdererBlue, none, gocui.ColorGreen, "debug flag"} @@ -83,6 +99,17 @@ func (tk *guiWidget) setColor(newColor *colorT) { tk.recreateView() } +func (w *guiWidget) disableColor() { + if w.color != &colorDisabled { + w.defaultColor = w.color + } + w.setColor(&colorDisabled) +} + +func (w *guiWidget) enableColor() { + w.setColor(w.defaultColor) +} + func (w *guiWidget) setDefaultWidgetColor() { w.showView() } diff --git a/plugin.go b/plugin.go index 223d4e5..774b85d 100644 --- a/plugin.go +++ b/plugin.go @@ -28,6 +28,12 @@ func action(a widget.Action) { me.treeRoot = n } addWidget(n) + w = n.TK.(*guiWidget) + if w.enable { + // don't change the color + } else { + w.setColor(&colorDisabled) + } } else { // this is done to protect the plugin being 'refreshed' with the // widget binary tree. TODO: find a way to keep them in sync @@ -35,10 +41,19 @@ func action(a widget.Action) { a.WidgetId, a.ActionType, a.WidgetType, a.ProgName) } case widget.Show: - if widget.GetBool(a.Value) { - w.showView() + if w.Visible() { + // widget was already shown } else { - w.hideWidgets() + log.Log(INFO, "Setting Visible to true", a.ProgName) + w.SetVisible(true) + } + w.showView() + case widget.Hide: + if w.Visible() { + log.Log(INFO, "Setting Visible to false", a.ProgName) + w.SetVisible(false) + } else { + // widget was already hidden } case widget.Set: if a.WidgetType == widget.Flag { @@ -62,19 +77,11 @@ func action(a widget.Action) { log.Log(NOW, "attempting to close the plugin and release stdout and stderr") standardExit() case widget.Enable: - if w.Visible() { - // widget was already shown - } else { - log.Log(INFO, "Setting Visible to true", a.ProgName) - w.SetVisible(true) - } + w.enable = true + w.enableColor() case widget.Disable: - if w.Visible() { - log.Log(INFO, "Setting Visible to false", a.ProgName) - w.SetVisible(false) - } else { - // widget was already hidden - } + w.enable = false + w.disableColor() case widget.Delete: if w == nil { return diff --git a/structs.go b/structs.go index 60243a8..ddc22c0 100644 --- a/structs.go +++ b/structs.go @@ -151,6 +151,11 @@ type guiWidget struct { active bool + enable bool + defaultColor *colorT // store the color to go back to + + hidden bool + // AtW int // AtH int diff --git a/widget.go b/widget.go index f32238f..59a2cfa 100644 --- a/widget.go +++ b/widget.go @@ -27,6 +27,8 @@ func initWidget(n *tree.Node) *guiWidget { w.labelN = n.GetProgName() } w.frame = true + w.hidden = n.State.Hidden + w.enable = n.State.Enable if n.WidgetType == widget.Root { log.Log(INFO, "setupWidget() FOUND ROOT w.id =", n.WidgetId)