diff --git a/examples/form.json b/examples/form.json index d128590..02984ea 100755 --- a/examples/form.json +++ b/examples/form.json @@ -1,9 +1,9 @@ { - "type":"haxework.gui.HGroupView", + "type":"haxework.gui.VGroupView", "layoutHAlign":"~haxework.gui.core.HAlign:CENTER", "layoutVAlign":"~haxework.gui.core.VAlign:MIDDLE", "paddings":20, - "layoutMargin":100, + "layoutMargin":10, "skin":{"type":"haxework.gui.skin.ColorSkin", "color":"0xff0000"}, "views":[ { @@ -22,6 +22,41 @@ "leftMargin":5, "rightMargin":10, "skin":{"type":"haxework.gui.skin.ColorSkin", "color":"0x0000ff"} + }, + { + "type":"haxework.gui.HGroupView", + "layoutHAlign":"~haxework.gui.core.HAlign:LEFT", + "layoutVAlign":"~haxework.gui.core.VAlign:MIDDLE", + "pWidth":100, + "height":30, + "paddings":3, + "layoutMargin":3, + "skin":{"type":"haxework.gui.skin.ColorSkin", "color":"0xffff00"}, + "views":[ + { + "type":"haxework.gui.LabelView", + "width":100, + "pHeight":100, + "skin":{"type":"haxework.gui.skin.ColorSkin", "color":"0x00ffff"}, + "text":"Text1" + }, + { + "type":"haxework.gui.LabelView", + "contentSize":true, + "skin":{"type":"haxework.gui.skin.ColorSkin", "color":"0x00ffff"}, + "text":"Text2", + "fontFamily":"Georgia", + "fontColor":"0xffffff" + }, + { + "type":"haxework.gui.LabelView", + "contentSize":true, + "skin":{"type":"haxework.gui.skin.ColorSkin", "color":"0x00ffff"}, + "text":"Text 3333333333 ddd", + "fontFamily":"Tahoma", + "fontColor":"0xff0000" + } + ] } ] } \ No newline at end of file diff --git a/haxework/gui/GuiBuilder.hx b/haxework/gui/GuiBuilder.hx index 8e8511c..e049ddf 100755 --- a/haxework/gui/GuiBuilder.hx +++ b/haxework/gui/GuiBuilder.hx @@ -1,6 +1,15 @@ package haxework.gui; +//ToDo: +import haxework.gui.View; +import haxework.gui.GroupView; +import haxework.gui.HGroupView; +import haxework.gui.VGroupView; +import haxework.gui.TextView; +import haxework.gui.LabelView; +import haxework.gui.skin.ColorSkin; + class GuiBuilder { private function new() {} @@ -27,9 +36,13 @@ class GuiBuilder { var a:Array = s.substr(1).split(":"); var e:Enum = Type.resolveEnum(a[0]); value = Type.createEnum(e, a[1]); + } else if (~/0x[A-Fa-f\d]{6}/.match(value)) { + value = Std.parseInt(value); } } else if (Std.is(value, Float)) { + } else if (Std.is(value, Bool)) { + } else { var o:Dynamic = build(value); fill(o, value); diff --git a/haxework/gui/ITextView.hx b/haxework/gui/ITextView.hx new file mode 100755 index 0000000..f71e9e7 --- /dev/null +++ b/haxework/gui/ITextView.hx @@ -0,0 +1,9 @@ +package haxework.gui; + +interface ITextView extends IView { + public var textField(default, null):T; + public var text(default, set):String; + public var fontFamily(default, set):String; + public var fontColor(default, set):Int; + public var fontSize(default, set):Float; +} diff --git a/haxework/gui/IView.hx b/haxework/gui/IView.hx index dcb1264..6a737b8 100755 --- a/haxework/gui/IView.hx +++ b/haxework/gui/IView.hx @@ -23,6 +23,8 @@ interface IView { public var pWidth(default, set):Float; public var pHeight(default, set):Float; + public var contentSize(default, set):Bool; + public var hAlign(default, set):HAlign; public var vAlign(default, set):VAlign; diff --git a/haxework/gui/LabelView.hx b/haxework/gui/LabelView.hx new file mode 100755 index 0000000..f029185 --- /dev/null +++ b/haxework/gui/LabelView.hx @@ -0,0 +1,17 @@ +package haxework.gui; + +import flash.text.TextFieldAutoSize; + +class LabelView extends TextView { + + public function new() { + super(); + textField.autoSize = TextFieldAutoSize.CENTER; + } + + override public function update():Void { + super.update(); + textField.x = (width - textField.width) / 2; + textField.y = (height - textField.height) / 2; + } +} diff --git a/haxework/gui/Root.hx b/haxework/gui/Root.hx index c0b32b5..2ea38f6 100755 --- a/haxework/gui/Root.hx +++ b/haxework/gui/Root.hx @@ -7,11 +7,6 @@ import flash.display.DisplayObject; import flash.events.Event; import flash.display.Sprite; -//ToDo: -import haxework.gui.HGroupView; -import haxework.gui.VGroupView; -import haxework.gui.skin.ColorSkin; - class Root { private var view:IView; diff --git a/haxework/gui/TextView.hx b/haxework/gui/TextView.hx new file mode 100755 index 0000000..b3b4328 --- /dev/null +++ b/haxework/gui/TextView.hx @@ -0,0 +1,70 @@ +package haxework.gui; + +import flash.text.TextFormat; +import flash.display.Sprite; +import flash.text.TextField; + +class TextView extends View implements ITextView { + + public var textField(default, null):TextField; + public var text(default, set):String; + public var fontFamily(default, set):String; + public var fontColor(default, set):Int; + public var fontSize(default, set):Float; + private var textFormat:TextFormat; + + public function new() { + super(); + textField = new TextField(); + textFormat = textField.defaultTextFormat; + textFormat.font = "Arial"; + textFormat.size = 16; + content.addChild(textField); + } + + private function set_text(value:String):String { + if (text != value) { + text = value; + textField.text = text; + invalidate(); + } + return text; + } + + private function set_fontFamily(value:String):String { + if (fontFamily != value) { + fontFamily = value; + textFormat.font = fontFamily; + invalidate(); + } + return fontFamily; + } + + private function set_fontColor(value:Int):Int { + if (fontColor != value) { + fontColor = value; + textFormat.color = fontColor; + invalidate(); + } + return fontColor; + } + + private function set_fontSize(value:Float):Float { + if (fontSize != value) { + fontSize = value; + textFormat.size = fontSize; + invalidate(); + } + return fontSize; + } + + override public function update():Void { + textField.setTextFormat(textFormat); + if (contentSize) { + width = textField.width; + height = textField.height; + } + super.update(); + } + +} diff --git a/haxework/gui/View.hx b/haxework/gui/View.hx index b293870..64721d5 100755 --- a/haxework/gui/View.hx +++ b/haxework/gui/View.hx @@ -32,6 +32,8 @@ class View implements IView { public var pWidth(default, set):Float; public var pHeight(default, set):Float; + public var contentSize(default, set):Bool; + public var hAlign(default, set):HAlign; public var vAlign(default, set):VAlign; @@ -152,6 +154,15 @@ class View implements IView { return pHeight; } + private function set_contentSize(value:Bool):Bool { + if (contentSize != value) { + contentSize = value; + invalidate(); + invalidateParent(); + } + return contentSize; + } + private function set_hAlign(value:HAlign):HAlign { if (hAlign != value) { hAlign = value;