August 17, 2019 Adam D. Ruppe's Minigui using example | ||||
---|---|---|---|---|
| ||||
https://forum.dlang.org/post/mumgkqopnsnowcmhidop@forum.dlang.org On Saturday, 16 January 2016 at 03:14:01 UTC, Adam D. Ruppe wrote: > On Saturday, 16 January 2016 at 01:27:32 UTC, Andre Polykanine wrote: >> Does anyone have an actual example of, say, a simple form with a set of radio buttons or check boxes to start with? >> Thanks in advance! > > Sort of. I still haven't used it in a real world program so it isn't complete but here's one of my test programs: > > --- > import arsd.minigui; > > void main() { > auto window = new MainWindow(); > > auto exitAction = new Action("E&xit"); > exitAction.triggered ~= { window.close(); }; > > window.statusTip = "D ROX!"; > > auto button = new Checkbox("Uses D!", window); > button.isChecked = true; > > auto hlayout = new HorizontalLayout(window); > auto gb = new Fieldset("Type", hlayout); > auto gb2 = new Fieldset("cool", hlayout); > > auto boxlol1 = new Radiobox("Test", gb); > auto boxlol2 = new Radiobox("Test2", gb2); > > auto boxlol3 = new Radiobox("Test", gb); > auto boxlol4 = new Radiobox("Test2", gb2); > > auto group = new MutuallyExclusiveGroup(); > group.addMember(new Radiobox("Heavyweight", gb)); > > auto btn = group.addMember(new Radiobox("Small library", gb)); > btn.isChecked = true; > btn.statusTip = "205 KB exe on Windows"; > > //auto spinner = new Spinner(window); > ComboboxBase cb = new DropDownSelection(window); > cb.addOption("test"); > cb.addOption("cool"); > cb.setSelection(1); > > //cb.addEventListener("changed", (Event ev) { > //auto bm = new MessageBox("changed " ~ cb.options[cb.selection]); > //}); > > // FIXME: adding this to gb2 instead of window causes wtf stuff > cb = new ComboBox(window); > cb.addOption("test"); > cb.addOption("cool"); > cb.setSelection(1); > > > cb = new FreeEntrySelection(window); > cb.addOption("test"); > cb.addOption("cool"); > cb.setSelection(1); > > auto lineEdit = new LineEdit(window); > > auto menu = new MenuBar(); > auto fileMenu = new Menu("&File"); > auto exitButton = fileMenu.addItem(new MenuItem(exitAction)); > > menu.addItem(fileMenu); > > window.loop(); > } > --- > > > On Windows, it uses the native controls, so it should work reasonably well, though on Linux it does its own thing and is far from complete. > > > > BTW simplewindow doesn't seem to compile on newest dmd because of the new core.sys.windows.windows so I'll have to update that if you're on the newest release... While searching for a minigui example in Google, you likely will find this old outdated example. Therefore I answer this very old post. Here a new example from Adam: module menutest; import arsd.minigui; struct Info { string name; string email; } class MyWindow : MainWindow { this() { super("Menu Demo", 250, 400); setMenuAndToolbarFromAnnotatedCode(this); statusTip = "gnarley"; textEdit = new TextEdit(this); auto hl = new HorizontalLayout(this); auto btn = new Button("test", hl); auto btn2 = new Button("test", hl); btn.addEventListener("click", () { messageBox("You clicked"); }); btn2.addEventListener(EventType.triggered, () { dialog!Info((info) { import std.conv; textEdit.content = to!string(info); }); }); textEdit.content = "generic content here"; } TextEdit textEdit; @menu("File") { @toolbar("") @icon(GenericIcons.New) @accelerator("Ctrl+Shift+N") void New() { textEdit.content = ""; } @toolbar("") @icon(GenericIcons.Open) @accelerator("Ctrl+O") void Open() { getOpenFileName( (string s) { //import std.file; //textEdit.content = (readText(s)); } ); } @toolbar("") @icon(GenericIcons.Save) void Save() @accelerator("Ctrl+S") { getSaveFileName( (string s) {} ); } void SaveAs() {} @separator void Exit() @accelerator("Alt+F4") { this.close(); } } @menu("Edit") { @toolbar("") @icon(GenericIcons.Undo) @accelerator("Ctrl+Z") void Undo() {} @toolbar("") @icon(GenericIcons.Redo) @accelerator("Ctrl+R") void Redo() {} @separator @toolbar("") @icon(GenericIcons.Cut) @accelerator("Ctrl+X") void Cut() {} @toolbar("") @icon(GenericIcons.Copy) @accelerator("Ctrl+C") void Copy() {} @toolbar("") @icon(GenericIcons.Paste) @accelerator("Ctrl+V") void Paste() {} } @menu("Help") { @accelerator("F1") void Topics() {} @separator void About() {} } } void main() { auto window = new MyWindow(); window.loop(); } Kind regards Andre |
Copyright © 1999-2021 by the D Language Foundation