[tekui-devel] tekui: added
Timm S. Mueller
tmueller at neoscientists.org
Thu May 15 00:08:22 CEST 2008
details: http://hg.teklib.org/tekui/rev/f4c05efc2af1
changeset: 483:f4c05efc2af1
user: Timm S. Mueller <tmueller at neoscientists.org>
date: Sun May 11 09:06:41 2008 +0200
description:
added
diffs (truncated from 260 to 100 lines):
diff -r 1f4abcb77edb -r f4c05efc2af1 tek/class/ui/tabgroup.lua
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tek/class/ui/tabgroup.lua Sun May 11 09:06:41 2008 +0200
@@ -0,0 +1,256 @@
+
+--
+-- tek.class.ui.tabgroup
+-- Written by Timm S. Mueller <tmueller at schulze-mueller.de>
+-- See copyright notice in COPYRIGHT
+--
+
+local db = require "tek.lib.debug"
+local ui = require "tek.lib.ui"
+local Gadget = ui.Gadget
+local Group = ui.Group
+
+local ipairs = ipairs
+local tostring = tostring
+local type = type
+
+module("tek.class.ui.tabgroup", tek.class.ui.group)
+_VERSION = "TabGroup 1.0"
+local TabGroup = _M
+
+-------------------------------------------------------------------------------
+-- Constants & Class data:
+-------------------------------------------------------------------------------
+
+local DEF_NULL = { 0, 0, 0, 0 }
+local DEF_TABBORDER = { 1, 1, 1, 0 }
+local DEF_TABIBORDER = { 2, 2, 2, 0 }
+local DEF_TABPADDING = { 4, 3, 4, 3 }
+local DEF_TABGROUPMARGIN = { 0, 2, 0, 0 }
+
+-------------------------------------------------------------------------------
+-- TabButton group:
+-------------------------------------------------------------------------------
+
+local TabButton = ui.Text:newClass { _NAME = "_tabbutton" }
+
+function TabButton.init(self)
+ self.BorderStyle = "blank"
+ self.IBorderStyle = "tab"
+ self.Border = DEF_TABBORDER
+ self.IBorder = DEF_TABIBORDER
+ self.Margin = DEF_TABGROUPMARGIN
+ self.Padding = DEF_TABPADDING
+ self.Mode = "touch"
+ self.Width = "auto"
+ return ui.Text.init(self)
+end
+
+function TabButton:setState(bg, fg)
+ bg = bg or self.Selected and ui.PEN_GROUPBACK
+ fg = fg or ui.PEN_BUTTONTEXT
+ ui.Text.setState(self, bg, fg)
+end
+
+-------------------------------------------------------------------------------
+-- init:
+-------------------------------------------------------------------------------
+
+function TabGroup.init(self)
+ self.Layout = "dummy"
+ self.TabElement = self.TabElement or false
+ self.TabNumber = self.TabNumber or false
+ return Group.init(self)
+end
+
+-------------------------------------------------------------------------------
+-- new:
+-------------------------------------------------------------------------------
+
+local function changeTab(group, tabbuttons, newtabn)
+ tabbuttons[group.TabNumber]:setValue("Selected", false)
+ group.TabNumber = newtabn
+ group.TabElement:cleanupDisplay()
+ group.TabElement = group.Children[newtabn]
+ group.TabElement:setupDisplay(group.Display, group.Drawable)
+ group.TabElement:rethinkLayout(2)
+end
+
+function TabGroup.new(class, self)
+
+ self = self or { }
+
+ local legend, id = self.Legend, self.Id
+ self.Legend = false
+ self.Id = false
+
+ self.TabElement = type(self.TabNumber) == "number" and
+ (self.TabNumber >= 1 and self.TabNumber <= #self.Children) and
+ self.Children[self.TabNumber]
+ if not self.TabElement and #self.Children > 0 then
+ self.TabNumber = 1
+ self.TabElement = self.Children[1]
+ end
+
+ self = Group.new(class, self)
+
More information about the tekui-devel
mailing list