1 module app;
2 
3 import dlangui.all;
4 import std.stdio;
5 import std.conv;
6 import dlangide.ui.frame;
7 import dlangide.ui.commands;
8 import dlangide.workspace.workspace;
9 
10 
11 mixin APP_ENTRY_POINT;
12 
13 /// entry point for dlangui based application
14 extern (C) int UIAppMain(string[] args) {
15 
16 
17     // embed non-standard resources listed in views/resources.list into executable
18     embeddedResourceList.addResources(embedResourcesFromList!("resources.list")());
19 
20     // you can override default hinting mode here
21     //FontManager.hintingMode = HintingMode.Light;
22     //FontManager.hintingMode = HintingMode.AutoHint;
23     FontManager.hintingMode = HintingMode.Normal;
24     //FontManager.hintingMode = HintingMode.Disabled;
25     // you can override antialiasing setting here
26     FontManager.minAnitialiasedFontSize = 0;
27     /// set font gamma (1.0 is neutral, < 1.0 makes glyphs lighter, >1.0 makes glyphs bolder)
28     FontManager.fontGamma = 0.8;
29 	version (USE_OPENGL) {
30 		// you can turn on subpixel font rendering (ClearType) here
31 		FontManager.subpixelRenderingMode = SubpixelRenderingMode.None; //
32 		FontManager.fontGamma = 0.8;
33 		FontManager.hintingMode = HintingMode.AutoHint;
34 	} else {
35         version (USE_FREETYPE) {
36             // you can turn on subpixel font rendering (ClearType) here
37             FontManager.fontGamma = 0.8;
38 		    //FontManager.subpixelRenderingMode = SubpixelRenderingMode.BGR; //SubpixelRenderingMode.None; //
39             FontManager.hintingMode = HintingMode.AutoHint;
40         }
41 	}
42 
43     //import ddc.lexer.tokenizer;
44     //runTokenizerTest();
45     debug(DebugInfo) {
46         version(Windows) {
47             import ddebug.windows.debuginfo;
48             import std.file;
49             debugInfoTest(thisExePath);
50         }
51     }
52 
53     // create window
54     Window window = Platform.instance.createWindow("Dlang IDE", null, WindowFlag.Resizable, 900, 700);
55 	
56     IDEFrame frame = new IDEFrame(window);
57 
58     // create some widget to show in window
59     window.windowIcon = drawableCache.getImage("dlangui-logo1");
60 
61     // open home screen tab
62     frame.showHomeScreen();
63     // for testing: load workspace at startup
64     //frame.openFileOrWorkspace(appendPath(exePath, "../workspaces/sample1/sample1.dlangidews"));
65 
66     // show window
67     window.show();
68 
69     //jsonTest();
70 
71     // run message loop
72     return Platform.instance.enterMessageLoop();
73 }
74 
75 
76 unittest {
77     void jsonTest() {
78         import dlangui.core.settings;
79         Setting s = new Setting();
80         s["param1_ulong"] = cast(ulong)1543453u;
81         s["param2_long"] = cast(long)-22934;
82         s["param3_double"] = -39.123e-10;
83         s["param4_string"] = "some string value";
84         s["param5_bool_true"] = true;
85         s["param6_bool_false"] = false;
86         s["param7_null"] = new Setting();
87         Setting a = new Setting();
88         a[0] = cast(ulong)1u;
89         a[1] = cast(long)-2;
90         a[2] = 3.3;
91         a[3] = "some string value";
92         a[4] = true;
93         a[5] = false;
94         a[6] = new Setting();
95         Setting mm = new Setting();
96         mm["n"] = cast(ulong)5u;
97         mm["name"] = "test";
98         a[7] = mm;
99         s["param8_array"] = a;
100         Setting m = new Setting();
101         m["aaa"] = "bbb";
102         m["aaa2"] = cast(ulong)5u;
103         m["aaa3"] = false;
104         s["param9_object"] = m;
105         string json = s.toJSON(true);
106         s.save("test_file.json");
107 
108         Setting loaded = new Setting();
109         loaded.load("test_file.json");
110         string json2 = loaded.toJSON(true);
111         loaded.save("test_file2.json");
112     }
113 
114 }