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 import anchovy.gui.databinding.list;
16 
17 class TestApplication : Application!GlfwWindow
18 {
19 	DockingRootBehavior dockManager;
20 	size_t frameCounter;
21 
22 	void addFrame()
23 	{
24 		auto frame = context.createWidget("frame");
25 		frame["caption"] = "Frame " ~ to!string(frameCounter++);
26 		frame["minSize"] = ivec2(100, 100);
27 
28 		dockManager.registerFrame(frame);
29 	}
30 
31 	override void load(in string[] args)
32 	{
33 		writeln("---------------------- System info ----------------------");
34 		foreach(item; getHardwareInfo())
35 			writeln(item);
36 		writeln("---------------------------------------------------------\n");
37 
38 		fpsHelper.limitFps = false;
39 
40 		// ----------------------------- Creating widgets -----------------------------
41 		templateManager.parseFile("example02.sdl");
42 
43 		auto mainLayer = context.createWidget("mainLayer");
44 		context.addRoot(mainLayer);
45 
46 		auto frameLayer = context.createWidget("frameLayer");
47 		context.addRoot(frameLayer);
48 
49 		context.getWidgetById("createFrame")
50 			.addEventHandler(
51 				delegate bool(Widget w, PointerClickEvent e){
52 					addFrame();
53 					return true;
54 			});
55 
56 		context.getWidgetById("printTree")
57 			.addEventHandler(
58 				delegate bool(Widget w, PointerClickEvent e){
59 					printTree();
60 					return true;
61 			});
62 
63 		auto dockingRoot = context.getWidgetById("dockingroot");
64 
65 		dockManager = cast(DockingRootBehavior)dockingRoot.getWidgetBehavior!DockingRootBehavior;
66 		dockManager.registerUndockedStorage(frameLayer);
67 
68 		addFrame();
69 
70 
71 		writeln("\n----------------------------- Load end -----------------------------\n");
72 	}
73 
74 	override void closePressed()
75 	{
76 		isRunning = false;
77 	}
78 }