[tekui-devel] tekui: Window, PopItem: Active=false is now a special notificati...
Timm S. Mueller
tmueller at neoscientists.org
Wed Mar 19 18:41:01 CET 2008
details: http://hg.teklib.org/tekui/rev/6d94190dea59
changeset: 372:6d94190dea59
user: Timm S. Mueller <tmueller at neoscientists.org>
date: Wed Mar 19 03:26:05 2008 +0100
description:
Window, PopItem: Active=false is now a special notification caused by LMB
released over an element that hasn't been activated before - replaces the
"LeftUp" notification; Slider: Mode="touch"; Gadget: added setHover() and
setActive() as notification handlers; Area: added preliminary setState()
diffs (truncated from 281 to 100 lines):
diff -r f99f27868aef -r 6d94190dea59 tek/class/ui/area.lua
--- a/tek/class/ui/area.lua Wed Mar 19 00:19:51 2008 +0100
+++ b/tek/class/ui/area.lua Wed Mar 19 03:26:05 2008 +0100
@@ -75,6 +75,7 @@ function Area:setupDisplay(display, draw
self.Drawable = drawable
self.DamageRegion = false
self:calcOffsets()
+ self:setState()
return true
end
@@ -273,6 +274,7 @@ function Area:draw(bgpen)
function Area:draw(bgpen)
local d = self.Drawable
bgpen = bgpen or d.Pens[self.BackPen or ui.PEN_AREABACK]
+-- bgpen = d.Pens[self.Background]
local dr = self.DamageRegion
if dr then
-- repaint intra-area damagerects:
@@ -361,3 +363,26 @@ end
function Area:checkFocus()
end
+
+-------------------------------------------------------------------------------
+-- setState:
+-------------------------------------------------------------------------------
+
+function Area:setState()
+
+ local s = self.State or "neutral"
+ local p = self.Drawable.Pens
+
+ if s == "neutral" then
+ self.Background = ui.PEN_AREABACK
+ elseif s == "hilite" then
+ self.Background = ui.PEN_BUTTONOVER
+ elseif s == "selected" then
+ self.Background = ui.PEN_BUTTONACTIVE
+ elseif s == "disabled" then
+ self.Background = ui.PEN_BUTTONDISABLED
+ end
+
+ self.Redraw = true
+end
+
diff -r f99f27868aef -r 6d94190dea59 tek/class/ui/gadget.lua
--- a/tek/class/ui/gadget.lua Wed Mar 19 00:19:51 2008 +0100
+++ b/tek/class/ui/gadget.lua Wed Mar 19 03:26:05 2008 +0100
@@ -38,44 +38,11 @@ local Gadget = _M
-- local DEF_BORDERSTYLE = nil -- use frame default
local DEF_IBORDERSTYLE = "button"
--- local NOTIFY_ONHOLD = { ui.NOTIFY_SELF, "onHold" }
--- local NOTIFY_TOGGLESELECT = { ui.NOTIFY_SELF, "setSelected" }
--- local NOTIFY_SELECT = { ui.NOTIFY_SELF, "setValue", "Selected",
--- ui.NOTIFY_VALUE }
-
-
local NOTIFY_REDRAW = { ui.NOTIFY_SELF, "setValue", "Redraw", true }
local NOTIFY_ONPRESS = { ui.NOTIFY_SELF, "onPress" }
local NOTIFY_ONRELEASE = { ui.NOTIFY_SELF, "onRelease" }
-
-local NOTIFY_HOVER = { ui.NOTIFY_SELF, function(self)
- if self.Mode == "button" then
- self:setValue("Selected", self.Active and self.Hover)
- end
- self:setValue("Hilite", self.Hover)
-end }
-
-local NOTIFY_ACTIVE = { ui.NOTIFY_SELF, function(self)
- if self.Mode == "toggle" then
- if self.Active then
- self:setValue("Pressed", true)
- self:setValue("Selected", not self.Selected)
- end
- elseif self.Mode == "touch" then
- if self.Active then
- self:setValue("Pressed", true)
- self:setValue("Selected", true)
- end
- elseif self.Mode == "button" then
- if not self.Selected and self.Active then
- self:setValue("Pressed", true)
- elseif self.Selected and not self.Active then
- self:setValue("Pressed", false)
- end
- self:setValue("Selected", self.Active and self.Hover)
- end
- self:setValue("Hilite", self.Hover)
-end }
+local NOTIFY_HOVER = { ui.NOTIFY_SELF, "setHover" }
+local NOTIFY_ACTIVE = { ui.NOTIFY_SELF, "setActive" }
-------------------------------------------------------------------------------
-- new:
@@ -93,27 +60,13 @@ end
function Gadget:connectGlobal(app, window)
Frame.connectGlobal(self, app, window)
More information about the tekui-devel
mailing list