summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--color.go29
-rw-r--r--plugin.go37
-rw-r--r--structs.go5
-rw-r--r--widget.go2
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)