[tekui-devel] tekui: Sudoku example fixed; Border:draw() no longer receives a ...

Timm S. Mueller tmueller at neoscientists.org
Wed Apr 9 22:00:20 CEST 2008


details:   http://hg.teklib.org/tekui/rev/ee9d6b08d933
changeset: 413:ee9d6b08d933
user:      Timm S. Mueller <tmueller at neoscientists.org>
date:      Wed Apr 09 18:13:29 2008 +0200
description:
Sudoku example fixed; Border:draw() no longer receives a table argument,
Border:getBorder() now returns numbers instead of a table; CheckMark.new()
added, removed TextWidth/Height, added ImageRect, optimized layout/drawing;
added Frame.new(), quicker drawing, adapted to new Border; Slider: adapted to
new Border; Text:layout(): TextRect calculation now independent of changed
Rect

diffs (truncated from 691 to 100 lines):

diff -r c5337aa81c7b -r ee9d6b08d933 tek/app/ui/sudoku.lua
--- a/tek/app/ui/sudoku.lua	Wed Apr 09 12:19:12 2008 +0200
+++ b/tek/app/ui/sudoku.lua	Wed Apr 09 18:13:29 2008 +0200
@@ -105,10 +105,6 @@ function sudokubutton.init(self)
 	return ui.text.init(self)
 end
 
-function sudokubutton.new(class, self)
-	return ui.Text.new(class, self, sudokubutton.init(self or { }))
-end
-
 function sudokubutton:onRelease()
 	if self.changeable then
 		local n = self.Label and tonumber(self.Label)
@@ -116,8 +112,7 @@ function sudokubutton:onRelease()
 		if n >= 10 then
 			n = nil
 		end
-		self.Label = n and tostring(n)
-		self.Redraw = true
+		self:setLabel(n and tostring(n))
 		self.Application:modify()
 	end
 end
@@ -139,22 +134,19 @@ function sudokubutton:setState()
 	self.Redraw = true
 end
 
-function sudokubutton:askMinMax()
-
-	local m1, m2 = ui.Display:textSize(self.Font, "W")
-	m1 = m1 + 1 -- +1 for disabled state
-	m2 = m2 + 1 -- +1 for disabled state
-
-	local m = self.TextMargin
-	local p = self.PaddingAndBorder
-	m1 = m1 + m[1] + m[3] + p[1] + p[3]
-	m2 = m2 + m[2] + m[4] + p[2] + p[4]
-
-	local m3 = self.MaxWidth and max(self.MaxWidth, m1) or nil
-	local m4 = self.MaxHeight and max(self.MaxHeight, m2) or nil
-
+function sudokubutton:setupDisplay(display, drawable)
+	if ui.Text.setupDisplay(self, display, drawable) then
+		self.MinWidth = ui.Display:textSize(self.Font, "W")
+		return true
+	end
+end
+
+function sudokubutton:askMinMax(m1, m2, m3, m4)
+	local savelabel = self.Label
+	self.Label = "8"
+	local m1, m2, m3, m4 = ui.Text.askMinMax(self, m1, m2, m3, m4)
+	self.Label = savelabel
 	return m1, m2, m3, m4
-
 end
 
 -------------------------------------------------------------------------------
diff -r c5337aa81c7b -r ee9d6b08d933 tek/class/ui/border.lua
--- a/tek/class/ui/border.lua	Wed Apr 09 12:19:12 2008 +0200
+++ b/tek/class/ui/border.lua	Wed Apr 09 18:13:29 2008 +0200
@@ -10,13 +10,7 @@ local newregion = ui.Region.new
 local newregion = ui.Region.new
 
 module("tek.class.ui.border", tek.class.ui.object)
-_VERSION = "Border 1.5"
-
--------------------------------------------------------------------------------
---	Constants & Class data:
--------------------------------------------------------------------------------
-
-local DEF_BORDER = { 0, 0, 0, 0 }
+_VERSION = "Border 2.0"
 
 -------------------------------------------------------------------------------
 --	Class implementation:
@@ -32,15 +26,15 @@ function Border.loadClass(style)
 	return class or Border
 end
 
-function Border:getBorder(element, border)
-	return DEF_BORDER
+function Border:getBorder()
+	return 0, 0, 0, 0
 end
 
 function Border:draw()
 end
 
 function Border:getRegion(element, border, rect)
-	local b1, b2, b3, b4 = unpack(self:getBorder(element, border))
+	local b1, b2, b3, b4 = self:getBorder(element, border)
 	if b1 > 0 or b2 > 0 or b3 > 0 or b4 > 0 then
 		local x0, y0, x1, y1 = unpack(rect or element.Rect)
 		local b = newregion(x0 - b1, y0 - b2, x1 + b3, y1 + b4)
diff -r c5337aa81c7b -r ee9d6b08d933 tek/class/ui/border/blank.lua
--- a/tek/class/ui/border/blank.lua	Wed Apr 09 12:19:12 2008 +0200
+++ b/tek/class/ui/border/blank.lua	Wed Apr 09 18:13:29 2008 +0200
@@ -9,7 +9,7 @@ local unpack = unpack


More information about the tekui-devel mailing list