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 }