瀏覽代碼

working domkit sample with sub components

ncannasse 6 年之前
父節點
當前提交
6ab157538e
共有 5 個文件被更改,包括 21 次插入15 次删除
  1. 1 1
      h2d/domkit/BaseComponents.hx
  2. 11 8
      h2d/domkit/InitComponents.hx
  3. 1 2
      h2d/domkit/Object.hx
  4. 7 3
      h2d/domkit/Style.hx
  5. 1 1
      samples/Domkit.hx

+ 1 - 1
h2d/domkit/BaseComponents.hx

@@ -137,7 +137,7 @@ class CustomParser extends CssValue.ValueParser {
 
 #if !macro
 @:uiComp("object") @:parser(h2d.domkit.BaseComponents.CustomParser)
-class ObjectComp implements domkit.Component.ComponentDecl<h2d.Object> {
+class ObjectComp implements h2d.domkit.Object implements domkit.Component.ComponentDecl<h2d.Object> {
 
 	@:p(name) var name : String;
 	@:p var x : Float;

+ 11 - 8
h2d/domkit/InitComponents.hx

@@ -9,16 +9,19 @@ class InitComponents {
 		return null;
 	}
 
-	public static function register() {
+	public static function build() {
 		var fields = haxe.macro.Context.getBuildFields();
-		//var file = haxe.macro.Context.getPosInfos(haxe.macro.Context.currentPos()).file;
-		fields = fields.concat((macro class {
-			override function onRemove() {
-				super.onRemove();
-				var style = Std.instance(document.style, h2d.domkit.Style);
-				if( style != null ) @:privateAccess style.remove(this);
+		for( f in fields )
+			if( f.name == "document" ) {
+				fields = fields.concat((macro class {
+					override function onRemove() {
+						super.onRemove();
+						var style = Std.instance(document.style, h2d.domkit.Style);
+						if( style != null ) @:privateAccess style.remove(this);
+					}
+				}).fields);
+				break;
 			}
-		}).fields);
 		return fields;
 	}
 }

+ 1 - 2
h2d/domkit/Object.hx

@@ -2,7 +2,6 @@ package h2d.domkit;
 import h2d.domkit.BaseComponents;
 
 @:build(h2d.domkit.InitComponents.init())
-@:autoBuild(h2d.domkit.InitComponents.register())
+@:autoBuild(h2d.domkit.InitComponents.build())
 interface Object extends domkit.Object {
-	public var document : domkit.Document<h2d.Object>;
 }

+ 7 - 3
h2d/domkit/Style.hx

@@ -14,13 +14,13 @@ class Style extends domkit.CssStyle {
 		resources.push(r);
 		add(new domkit.CssParser().parseSheet(r.entry.getText()));
 		for( o in currentObjects )
-			o.document.setStyle(this);
+			getDocument(o).setStyle(this);
 	}
 
 	public function applyTo( obj ) {
 		currentObjects.remove(obj);
 		currentObjects.push(obj);
-		obj.document.setStyle(this);
+		getDocument(obj).setStyle(this);
 	}
 
 	function remove(obj) {
@@ -37,7 +37,11 @@ class Style extends domkit.CssStyle {
 			add(new domkit.CssParser().parseSheet(txt));
 		}
 		for( o in currentObjects )
-			o.document.setStyle(this);
+			getDocument(o).setStyle(this);
+	}
+
+	function getDocument( o : h2d.domkit.Object ) : domkit.Document<h2d.Object> {
+		return (o : Dynamic).document;
 	}
 
 }

+ 1 - 1
samples/Domkit.hx

@@ -12,7 +12,7 @@ class ViewComp extends h2d.Flow implements h2d.domkit.Object {
 		}
 	</flow>;
 
-	public function new(align,icons:Array<h2d.Tile>,?parent) {
+	public function new(align:h2d.Flow.FlowAlign,icons:Array<h2d.Tile>,?parent) {
 		super(parent);
 		initComponent();
 	}