dlangide/src/dlangide.d

177 lines
5.5 KiB
D

module app;
import dlangui;
import std.stdio;
import std.conv;
import dlangide.ui.frame;
import dlangide.ui.commands;
import dlangide.workspace.workspace;
import std.experimental.logger;
mixin APP_ENTRY_POINT;
/// entry point for dlangui based application
extern (C) int UIAppMain(string[] args) {
version(Windows) {
debug {
sharedLog = new FileLogger("dcd.log");
} else {
sharedLog = new NullLogger();
}
} else {
debug {
//sharedLog = new FileLogger("dcd.log");
} else {
sharedLog = new NullLogger();
}
}
//version (Windows) {
// import derelict.lldb.lldbtest;
// runLldbTests();
//}
// embed non-standard resources listed in views/resources.list into executable
embeddedResourceList.addResources(embedResourcesFromList!("resources.list")());
Platform.instance.uiTheme = "ide_theme_default";
// you can override default hinting mode here
//FontManager.hintingMode = HintingMode.Light;
//FontManager.hintingMode = HintingMode.AutoHint;
FontManager.hintingMode = HintingMode.Normal;
//FontManager.hintingMode = HintingMode.Disabled;
// you can override antialiasing setting here
FontManager.minAnitialiasedFontSize = 0;
/// set font gamma (1.0 is neutral, < 1.0 makes glyphs lighter, >1.0 makes glyphs bolder)
FontManager.fontGamma = 0.8;
version (USE_OPENGL) {
// you can turn on subpixel font rendering (ClearType) here
FontManager.subpixelRenderingMode = SubpixelRenderingMode.None; //
FontManager.fontGamma = 0.9;
FontManager.hintingMode = HintingMode.AutoHint;
} else {
version (USE_FREETYPE) {
// you can turn on subpixel font rendering (ClearType) here
FontManager.fontGamma = 0.8;
//FontManager.subpixelRenderingMode = SubpixelRenderingMode.BGR; //SubpixelRenderingMode.None; //
FontManager.hintingMode = HintingMode.AutoHint;
}
}
//version(USE_WIN_DEBUG) {
// debuggerTest();
//}
//version(USE_GDB_DEBUG) {
// debuggerTestGDB();
//}
// create window
Window window = Platform.instance.createWindow("Dlang IDE", null, WindowFlag.Resizable, 900, 730);
// set window icon
window.windowIcon = drawableCache.getImage("dlangui-logo1");
//Widget w = new Widget();
//pragma(msg, w.click.return_t, "", w.click.params_t);
IDEFrame frame = new IDEFrame(window);
// open home screen tab
frame.showHomeScreen();
// for testing: load workspace at startup
//frame.openFileOrWorkspace(appendPath(exePath, "../workspaces/sample1/sample1.dlangidews"));
// show window
window.show();
//jsonTest();
// run message loop
return Platform.instance.enterMessageLoop();
}
/*
version(USE_WIN_DEBUG) {
void debuggerTest() {
import ddebug.windows.windebug;
WinDebugger debugger = new WinDebugger("test\\dmledit.exe", "");
debugger.start();
}
}
version(USE_GDB_DEBUG) {
void debuggerTestGDB() {
import ddebug.gdb.gdbinterface;
import core.thread;
Log.d("Testing GDB debugger");
DebuggerBase debugger = new DebuggerBase();
debugger.startDebugging("gdb", "test", [], "", delegate(ResponseCode code, string msg) {
Log.d("startDebugging result: ", code, " : ", msg);
//assert(code == ResponseCode.NotImplemented);
});
debugger.stop();
destroy(debugger);
// async
debugger = new GDBInterface();
DebuggerProxy proxy = new DebuggerProxy(debugger, delegate(Runnable runnable) {
runnable();
});
Log.d("calling debugger.start()");
debugger.start();
Log.d("calling proxy.startDebugging()");
proxy.startDebugging("gdb", "/home/lve/src/d/dlangide/test/gdbtest", ["param1", "param2"], "/home/lve/src/d/dlangide/test", delegate(ResponseCode code, string msg) {
Log.d("startDebugging result: ", code, " : ", msg);
//assert(code == ResponseCode.NotImplemented);
});
Thread.sleep(dur!"msecs"(200000));
debugger.stop();
Thread.sleep(dur!"msecs"(200000));
destroy(debugger);
Log.d("Testing of GDB debugger is finished");
}
}
*/
unittest {
void jsonTest() {
import dlangui.core.settings;
Setting s = new Setting();
s["param1_ulong"] = cast(ulong)1543453u;
s["param2_long"] = cast(long)-22934;
s["param3_double"] = -39.123e-10;
s["param4_string"] = "some string value";
s["param5_bool_true"] = true;
s["param6_bool_false"] = false;
s["param7_null"] = new Setting();
Setting a = new Setting();
a[0] = cast(ulong)1u;
a[1] = cast(long)-2;
a[2] = 3.3;
a[3] = "some string value";
a[4] = true;
a[5] = false;
a[6] = new Setting();
Setting mm = new Setting();
mm["n"] = cast(ulong)5u;
mm["name"] = "test";
a[7] = mm;
s["param8_array"] = a;
Setting m = new Setting();
m["aaa"] = "bbb";
m["aaa2"] = cast(ulong)5u;
m["aaa3"] = false;
s["param9_object"] = m;
string json = s.toJSON(true);
s.save("test_file.json");
Setting loaded = new Setting();
loaded.load("test_file.json");
string json2 = loaded.toJSON(true);
loaded.save("test_file2.json");
}
}