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