1 module app; 2 3 import dlangui; 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 Platform.instance.uiTheme = "ide_theme_default"; 21 22 // you can override default hinting mode here 23 //FontManager.hintingMode = HintingMode.Light; 24 //FontManager.hintingMode = HintingMode.AutoHint; 25 FontManager.hintingMode = HintingMode.Normal; 26 //FontManager.hintingMode = HintingMode.Disabled; 27 // you can override antialiasing setting here 28 FontManager.minAnitialiasedFontSize = 0; 29 /// set font gamma (1.0 is neutral, < 1.0 makes glyphs lighter, >1.0 makes glyphs bolder) 30 FontManager.fontGamma = 0.8; 31 version (USE_OPENGL) { 32 // you can turn on subpixel font rendering (ClearType) here 33 FontManager.subpixelRenderingMode = SubpixelRenderingMode.None; // 34 FontManager.fontGamma = 0.8; 35 FontManager.hintingMode = HintingMode.AutoHint; 36 } else { 37 version (USE_FREETYPE) { 38 // you can turn on subpixel font rendering (ClearType) here 39 FontManager.fontGamma = 0.8; 40 //FontManager.subpixelRenderingMode = SubpixelRenderingMode.BGR; //SubpixelRenderingMode.None; // 41 FontManager.hintingMode = HintingMode.AutoHint; 42 } 43 } 44 45 //import ddc.lexer.tokenizer; 46 //runTokenizerTest(); 47 debug(DebugInfo) { 48 version(USE_MAGO) { 49 import ddebug.windows.mago; 50 testMago(); 51 } 52 version(Windows) { 53 import ddebug.windows.debuginfo; 54 import std.file; 55 //debugInfoTest(thisExePath); 56 } 57 } 58 59 version(USE_WIN_DEBUG) { 60 debuggerTest(); 61 } 62 version(USE_GDB_DEBUG) { 63 debuggerTestGDB(); 64 } 65 66 // create window 67 Window window = Platform.instance.createWindow("Dlang IDE", null, WindowFlag.Resizable, 800, 600); 68 // set window icon 69 window.windowIcon = drawableCache.getImage("dlangui-logo1"); 70 71 //Widget w = new Widget(); 72 //pragma(msg, w.click.return_t, "", w.click.params_t); 73 74 IDEFrame frame = new IDEFrame(window); 75 76 77 // open home screen tab 78 frame.showHomeScreen(); 79 // for testing: load workspace at startup 80 //frame.openFileOrWorkspace(appendPath(exePath, "../workspaces/sample1/sample1.dlangidews")); 81 82 // show window 83 window.show(); 84 85 //jsonTest(); 86 87 // run message loop 88 return Platform.instance.enterMessageLoop(); 89 } 90 91 version(USE_WIN_DEBUG) { 92 void debuggerTest() { 93 import ddebug.windows.windebug; 94 WinDebugger debugger = new WinDebugger("test\\dmledit.exe", ""); 95 debugger.start(); 96 } 97 } 98 99 version(USE_GDB_DEBUG) { 100 void debuggerTestGDB() { 101 import ddebug.gdb.gdbinterface; 102 import core.thread; 103 Log.d("Testing GDB debugger"); 104 DebuggerBase debugger = new DebuggerBase(); 105 debugger.startDebugging("gdb", "test", [], "", delegate(ResponseCode code, string msg) { 106 Log.d("startDebugging result: ", code, " : ", msg); 107 //assert(code == ResponseCode.NotImplemented); 108 }); 109 debugger.stop(); 110 destroy(debugger); 111 112 // async 113 114 debugger = new GDBInterface(); 115 DebuggerProxy proxy = new DebuggerProxy(debugger, delegate(Runnable runnable) { 116 runnable(); 117 }); 118 Log.d("calling debugger.start()"); 119 debugger.start(); 120 Log.d("calling proxy.startDebugging()"); 121 proxy.startDebugging("gdb", "/home/lve/src/d/dlangide/test/gdbtest", ["param1", "param2"], "/home/lve/src/d/dlangide/test", delegate(ResponseCode code, string msg) { 122 Log.d("startDebugging result: ", code, " : ", msg); 123 //assert(code == ResponseCode.NotImplemented); 124 }); 125 Thread.sleep(dur!"msecs"(200000)); 126 debugger.stop(); 127 Thread.sleep(dur!"msecs"(200000)); 128 destroy(debugger); 129 Log.d("Testing of GDB debugger is finished"); 130 } 131 } 132 133 unittest { 134 void jsonTest() { 135 import dlangui.core.settings; 136 Setting s = new Setting(); 137 s["param1_ulong"] = cast(ulong)1543453u; 138 s["param2_long"] = cast(long)-22934; 139 s["param3_double"] = -39.123e-10; 140 s["param4_string"] = "some string value"; 141 s["param5_bool_true"] = true; 142 s["param6_bool_false"] = false; 143 s["param7_null"] = new Setting(); 144 Setting a = new Setting(); 145 a[0] = cast(ulong)1u; 146 a[1] = cast(long)-2; 147 a[2] = 3.3; 148 a[3] = "some string value"; 149 a[4] = true; 150 a[5] = false; 151 a[6] = new Setting(); 152 Setting mm = new Setting(); 153 mm["n"] = cast(ulong)5u; 154 mm["name"] = "test"; 155 a[7] = mm; 156 s["param8_array"] = a; 157 Setting m = new Setting(); 158 m["aaa"] = "bbb"; 159 m["aaa2"] = cast(ulong)5u; 160 m["aaa3"] = false; 161 s["param9_object"] = m; 162 string json = s.toJSON(true); 163 s.save("test_file.json"); 164 165 Setting loaded = new Setting(); 166 loaded.load("test_file.json"); 167 string json2 = loaded.toJSON(true); 168 loaded.save("test_file2.json"); 169 } 170 171 }