1 /**
2 Copyright: Copyright (c) 2014 Andrey Penechko.
3 License: a$(WEB boost.org/LICENSE_1_0.txt, Boost License 1.0).
4 Authors: Andrey Penechko.
5 */
6 
7 module testapplication;
8 
9 import std.stdio : writeln;
10 
11 import anchovy.graphics.windows.glfwwindow;
12 import anchovy.gui;
13 
14 import anchovy.gui.application.application;
15 
16 class TestApplication : Application!GlfwWindow
17 {
18 	this(uvec2 windowSize, string caption)
19 	{
20 		super(windowSize, caption);
21 	}
22 
23 	override void load(in string[] args)
24 	{
25 		fpsHelper.limitFps = false;
26 
27 		// ----------------------------- Creating widgets -----------------------------
28 		templateManager.parseFile("test.sdl");
29 
30 		auto mainLayer = context.createWidget("mainLayer");
31 		context.addRoot(mainLayer);
32 
33 		auto button1 = context.getWidgetById("button1");
34 		button1.addEventHandler(delegate bool(Widget widget, PointerClickEvent event){
35 			widget["text"] = to!string(event.pointerPosition);
36 			writeln("Clicked at ", event.pointerPosition);
37 			return true;
38 		});
39 		button1.addEventHandler(delegate bool(Widget widget, PointerLeaveEvent event)
40 			{widget["text"] = "Click me!"; return true;});
41 	
42 		auto image = context.getWidgetById("fontTexture");
43 		image.setProperty!("texture")(guiRenderer.getFontTexture);
44 
45 		auto fpsLabel = context.getWidgetById("fpsLabel");
46 		auto fpsSlot = (FpsHelper* helper){fpsLabel["text"] = to!string(helper.fps);};
47 		fpsHelper.fpsUpdated.connect(fpsSlot);
48 
49 		auto firstName = context.getWidgetById("firstName");
50 		auto lastName = context.getWidgetById("lastName");
51 		auto fullName = context.getWidgetById("fullName");
52 		auto calc = (FlexibleObject a, Variant b){fullName["text"] = firstName["text"].coerce!dstring ~ " "d
53 			 ~ lastName["text"].coerce!dstring;};
54 		firstName.property("text").valueChanged.connect(calc);
55 		lastName.property("text").valueChanged.connect(calc);
56 
57 		auto horiText = context.getWidgetById("hori-pos");
58 		auto vertText = context.getWidgetById("vert-pos");
59 		auto updateHori = (FlexibleObject a, Variant b){horiText["text"] = to!string(b);};
60 		auto updateVert = (FlexibleObject a, Variant b){vertText["text"] = to!string(b);};
61 
62 		auto horiScroll = context.getWidgetById("hori-scroll");
63 		horiScroll.property("sliderPos").valueChanged.connect(updateHori);
64 		auto vertScroll = context.getWidgetById("vert-scroll");
65 		vertScroll.property("sliderPos").valueChanged.connect(updateVert);
66 
67 		horiScroll["sliderPos"] = 0.2;
68 		vertScroll["sliderPos"] = 0.3;
69 
70 		writeln("\n----------------------------- Load end -----------------------------\n");
71 	}
72 
73 	override void closePressed()
74 	{
75 		isRunning = false;
76 	}
77 }