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 }