|
@@ -1,6 +1,97 @@
|
|
|
-import std.stdio;
|
|
|
|
|
|
-void main()
|
|
|
-{
|
|
|
- writeln("Edit source/app.d to start your project.");
|
|
|
+
|
|
|
+//module app;
|
|
|
+
|
|
|
+import dlangui;
|
|
|
+
|
|
|
+mixin APP_ENTRY_POINT;
|
|
|
+
|
|
|
+/// entry point for dlangui based application
|
|
|
+extern (C) int UIAppMain(string[] args) {
|
|
|
+
|
|
|
+ // load theme from file "theme_default.xml"
|
|
|
+ //Platform.instance.uiTheme = "theme_default";
|
|
|
+
|
|
|
+ // create window
|
|
|
+ Log.d("Creating window");
|
|
|
+ //Window window = Platform.instance.createWindow("DlangUI example - HelloWorld", null);
|
|
|
+ Window window = Platform.instance.createWindow("local git for GPT - git4GPT", null, 1, 1200, 900);
|
|
|
+ Log.d("Window created");
|
|
|
+
|
|
|
+ // create some widget to show in window
|
|
|
+ //window.mainWidget = (new Button()).text("Hello, world!"d).margins(Rect(20,20,20,20));
|
|
|
+ window.mainWidget = parseML(q{
|
|
|
+ VerticalLayout {
|
|
|
+ margins: 4pt
|
|
|
+ padding: 3pt
|
|
|
+ layoutWidth: fill
|
|
|
+ // red bold text with size = 150% of base style size and font face Arial
|
|
|
+ //TextWidget { text: "Hello World example for DlangUI"; textColor: "red"; fontSize: 150%; fontWeight: 800; fontFace: "Arial" }
|
|
|
+ //TextWidget { text: "______________________________ localhost RepoGPT ______________________________"; fontSize: 90%; fontFace: "Arial" }
|
|
|
+
|
|
|
+ // arrange controls as form - table with two columns
|
|
|
+ TableLayout {
|
|
|
+ colCount: 2
|
|
|
+ layoutWidth: fill
|
|
|
+ TextWidget { text: "path to git repo" }
|
|
|
+ EditLine { id: edit1; text: "todo read default path from toml file"; layoutWidth: fill }
|
|
|
+ //ComboEdit { id: type1; text: ""; minWidth: 100pt; items: ["Exclude", "Include"] }
|
|
|
+ ComboEdit { id: type1; text: ""; items: ["Exclude", "Include"] }
|
|
|
+ //TextWidget { text: "param 2" }
|
|
|
+ EditLine { id: edit2; text: "*.md, *.MD"; layoutWidth: fill }
|
|
|
+ Button { id: btnRun; text: "Run" }
|
|
|
+ Button { id: btnCopy; text: "Copy" }
|
|
|
+
|
|
|
+ //TextWidget { text: "some radio buttons" }
|
|
|
+ // arrange some radio buttons vertically
|
|
|
+ //VerticalLayout {
|
|
|
+ // layoutWidth: fill
|
|
|
+ // RadioButton { id: rb1; text: "Item 1" }
|
|
|
+ // RadioButton { id: rb2; text: "Item 2" }
|
|
|
+ // RadioButton { id: rb3; text: "Item 3" }
|
|
|
+ //}
|
|
|
+
|
|
|
+ //TextWidget { text: "and checkboxes" }
|
|
|
+ // arrange some checkboxes horizontally
|
|
|
+ //HorizontalLayout {
|
|
|
+ // layoutWidth: fill
|
|
|
+ // CheckBox { id: cb1; text: "checkbox 1" }
|
|
|
+ // CheckBox { id: cb2; text: "checkbox 2" }
|
|
|
+ // ComboEdit { id: ce1; text: "some text"; minWidth: 20pt; items: ["Item 1", "Item 2", "Additional item"] }
|
|
|
+ //}
|
|
|
+ }
|
|
|
+ //EditBox { layoutWidth: 20pt; layoutHeight: 10pt }
|
|
|
+ EditBox { layoutWidth: FILL_PARENT; layoutHeight: FILL_PARENT; minWidth: 1000; minHeight: 750 }
|
|
|
+ //EditBox { minWidth: 1000; minHeight: 200 }
|
|
|
+ //HorizontalLayout {
|
|
|
+ // Button { id: btnOk; text: "Ok" }
|
|
|
+ // Button { id: btnCancel; text: "Cancel" }
|
|
|
+ //}
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ //window.mainWidget.minWidth(900);
|
|
|
+ //window.mainWidget.minHeight(500);
|
|
|
+
|
|
|
+ // you can access loaded items by id - e.g. to assign signal listeners
|
|
|
+ auto edit1 = window.mainWidget.childById!EditLine("edit1");
|
|
|
+ auto edit2 = window.mainWidget.childById!EditLine("edit2");
|
|
|
+ // close window on Cancel button click
|
|
|
+ //window.mainWidget.childById!Button("btnCancel").click = delegate(Widget w) {
|
|
|
+ // window.close();
|
|
|
+ // return true;
|
|
|
+ //};
|
|
|
+ // show message box with content of editors
|
|
|
+ window.mainWidget.childById!Button("btnRun").click = delegate(Widget w) {
|
|
|
+ window.showMessageBox(UIString.fromRaw("Run button pressed"d),
|
|
|
+ UIString.fromRaw("Editors content\nEdit1: "d ~ edit1.text ~ "\nEdit2: "d ~ edit2.text));
|
|
|
+ return true;
|
|
|
+ };
|
|
|
+
|
|
|
+ // show window
|
|
|
+ window.show();
|
|
|
+
|
|
|
+ // run message loop
|
|
|
+ return Platform.instance.enterMessageLoop();
|
|
|
}
|
|
|
+
|