mirror of https://github.com/buggins/dlangui.git
Example 1 refactoring part 2
This commit is contained in:
parent
94fd203676
commit
0a7a5e55b4
|
|
@ -29,42 +29,6 @@ import widgets;
|
|||
|
||||
mixin APP_ENTRY_POINT;
|
||||
|
||||
class TimerTest : HorizontalLayout {
|
||||
ulong timerId;
|
||||
TextWidget _counter;
|
||||
int _value;
|
||||
Button _start;
|
||||
Button _stop;
|
||||
override bool onTimer(ulong id) {
|
||||
_value++;
|
||||
_counter.text = to!dstring(_value);
|
||||
return true;
|
||||
}
|
||||
this() {
|
||||
addChild(new TextWidget(null, "Timer test."d));
|
||||
_counter = new TextWidget(null, "0"d);
|
||||
_counter.fontSize(32);
|
||||
_start = new Button(null, "Start timer"d);
|
||||
_stop = new Button(null, "Stop timer"d);
|
||||
_stop.enabled = false;
|
||||
_start.click = delegate(Widget src) {
|
||||
_start.enabled = false;
|
||||
_stop.enabled = true;
|
||||
timerId = setTimer(1000);
|
||||
return true;
|
||||
};
|
||||
_stop.click = delegate(Widget src) {
|
||||
_start.enabled = true;
|
||||
_stop.enabled = false;
|
||||
cancelTimer(timerId);
|
||||
return true;
|
||||
};
|
||||
addChild(_start);
|
||||
addChild(_stop);
|
||||
addChild(_counter);
|
||||
}
|
||||
}
|
||||
|
||||
class TextEditorWidget : VerticalLayout {
|
||||
EditBox _edit;
|
||||
this(string ID) {
|
||||
|
|
@ -99,38 +63,9 @@ Widget createEditorSettingsControl(EditWidgetBase editor) {
|
|||
return res;
|
||||
}
|
||||
|
||||
enum : int {
|
||||
ACTION_FILE_OPEN = 5500,
|
||||
ACTION_FILE_SAVE,
|
||||
ACTION_FILE_CLOSE,
|
||||
ACTION_FILE_EXIT,
|
||||
}
|
||||
|
||||
debug(SDLSettings) {
|
||||
import dlangui.core.settings;
|
||||
void testSDL(string fn) {
|
||||
Log.d("Loading SDL from ", fn);
|
||||
Setting s = new Setting();
|
||||
if (s.load(fn)) {
|
||||
Log.d("JSON:\n", s.toJSON(true));
|
||||
} else {
|
||||
Log.e("failed to read SDL from ", fn);
|
||||
}
|
||||
}
|
||||
void testSDLSettings() {
|
||||
testSDL(`C:\Users\vlopatin\AppData\Roaming\.dlangide\settings.json`);
|
||||
testSDL("dub.json");
|
||||
testSDL("test1.sdl");
|
||||
}
|
||||
}
|
||||
|
||||
/// entry point for dlangui based application
|
||||
extern (C) int UIAppMain(string[] args) {
|
||||
|
||||
debug(SDLSettings) {
|
||||
testSDLSettings();
|
||||
}
|
||||
|
||||
extern (C) int UIAppMain(string[] args)
|
||||
{
|
||||
// always use trace, even for release builds
|
||||
//Log.setLogLevel(LogLevel.Trace);
|
||||
//Log.setFileLogger(new std.stdio.File("ui.log", "w"));
|
||||
|
|
@ -176,7 +111,7 @@ extern (C) int UIAppMain(string[] args) {
|
|||
FontManager.minAnitialiasedFontSize = 0; // 0 means always antialiased
|
||||
//version (USE_OPENGL) {
|
||||
// // you can turn on subpixel font rendering (ClearType) here
|
||||
FontManager.subpixelRenderingMode = SubpixelRenderingMode.None; //
|
||||
FontManager.subpixelRenderingMode = SubpixelRenderingMode.None; //
|
||||
//} else {
|
||||
// you can turn on subpixel font rendering (ClearType) here
|
||||
//FontManager.subpixelRenderingMode = SubpixelRenderingMode.BGR; //SubpixelRenderingMode.None; //
|
||||
|
|
@ -225,15 +160,6 @@ extern (C) int UIAppMain(string[] args) {
|
|||
editItem.add(new Action(EditorActions.Unindent, "MENU_EDIT_UNINDENT"c, "edit-unindent", KeyCode.TAB, KeyFlag.Control));
|
||||
editItem.add(new Action(20, "MENU_EDIT_PREFERENCES"));
|
||||
|
||||
MenuItem editPopupItem = new MenuItem(null);
|
||||
editPopupItem.add(new Action(EditorActions.Copy, "MENU_EDIT_COPY"c, "edit-copy", KeyCode.KEY_C, KeyFlag.Control));
|
||||
editPopupItem.add(new Action(EditorActions.Paste, "MENU_EDIT_PASTE"c, "edit-paste", KeyCode.KEY_V, KeyFlag.Control));
|
||||
editPopupItem.add(new Action(EditorActions.Cut, "MENU_EDIT_CUT"c, "edit-cut", KeyCode.KEY_X, KeyFlag.Control));
|
||||
editPopupItem.add(new Action(EditorActions.Undo, "MENU_EDIT_UNDO"c, "edit-undo", KeyCode.KEY_Z, KeyFlag.Control));
|
||||
editPopupItem.add(new Action(EditorActions.Redo, "MENU_EDIT_REDO"c, "edit-redo", KeyCode.KEY_Y, KeyFlag.Control));
|
||||
editPopupItem.add(new Action(EditorActions.Indent, "MENU_EDIT_INDENT"c, "edit-indent", KeyCode.TAB, 0));
|
||||
editPopupItem.add(new Action(EditorActions.Unindent, "MENU_EDIT_UNINDENT"c, "edit-unindent", KeyCode.TAB, KeyFlag.Control));
|
||||
|
||||
MenuItem viewItem = new MenuItem(new Action(60, "MENU_VIEW"));
|
||||
MenuItem langItem = new MenuItem(new Action(61, "MENU_VIEW_LANGUAGE"));
|
||||
auto onLangChange = delegate (MenuItem item) {
|
||||
|
|
@ -379,469 +305,11 @@ extern (C) int UIAppMain(string[] args) {
|
|||
tabs.layoutWidth(FILL_PARENT).layoutHeight(FILL_PARENT);
|
||||
|
||||
// most of controls example
|
||||
{
|
||||
LinearLayout controls = new VerticalLayout("controls");
|
||||
controls.layoutHeight(FILL_PARENT);
|
||||
controls.padding = Rect(12.pointsToPixels,12.pointsToPixels,12.pointsToPixels,12.pointsToPixels);
|
||||
|
||||
HorizontalLayout line1 = new HorizontalLayout();
|
||||
controls.addChild(line1);
|
||||
|
||||
GroupBox gb = new GroupBox("checkboxes", "CheckBox"d);
|
||||
gb.addChild(new CheckBox("cb1", "CheckBox 1"d));
|
||||
gb.addChild(new CheckBox("cb2", "CheckBox 2"d).checked(true));
|
||||
gb.addChild(new CheckBox("cb3", "CheckBox disabled"d).enabled(false));
|
||||
gb.addChild(new CheckBox("cb4", "CheckBox disabled"d).checked(true).enabled(false));
|
||||
line1.addChild(gb);
|
||||
|
||||
GroupBox gb2 = new GroupBox("radiobuttons", "RadioButton"d);
|
||||
gb2.addChild(new RadioButton("rb1", "RadioButton 1"d).checked(true));
|
||||
gb2.addChild(new RadioButton("rb2", "RadioButton 2"d));
|
||||
gb2.addChild(new RadioButton("rb3", "RadioButton disabled"d).enabled(false));
|
||||
line1.addChild(gb2);
|
||||
|
||||
VerticalLayout col1 = new VerticalLayout();
|
||||
GroupBox gb3 = new GroupBox("textbuttons", "Button"d, Orientation.Horizontal);
|
||||
gb3.addChild(new Button("tb1", "Button"d));
|
||||
gb3.addChild(new Button("tb2", "Button disabled"d).enabled(false));
|
||||
col1.addChild(gb3);
|
||||
GroupBox gb4 = new GroupBox("imagetextbuttons", "ImageTextButton"d, Orientation.Horizontal);
|
||||
gb4.addChild(new ImageTextButton("itb1", "document-open", "Enabled"d));
|
||||
gb4.addChild(new ImageTextButton("itb2", "document-save", "Disabled"d).enabled(false));
|
||||
col1.addChild(gb4);
|
||||
GroupBox gbtext = new GroupBox("text", "TextWidget"d, Orientation.Horizontal);
|
||||
gbtext.addChild(new TextWidget("t1", "Red text"d).fontSize(12.pointsToPixels).textColor(0xFF0000));
|
||||
gbtext.addChild(new TextWidget("t2", "Italic text"d).fontSize(12.pointsToPixels).fontItalic(true));
|
||||
col1.addChild(gbtext);
|
||||
line1.addChild(col1);
|
||||
|
||||
VerticalLayout col2 = new VerticalLayout();
|
||||
GroupBox gb31 = new GroupBox("switches", "SwitchButton"d, Orientation.Vertical);
|
||||
gb31.addChild(new SwitchButton("sb1"));
|
||||
gb31.addChild(new SwitchButton("sb2").checked(true));
|
||||
gb31.addChild(new SwitchButton("sb3").enabled(false));
|
||||
gb31.addChild(new SwitchButton("sb4").enabled(false).checked(true));
|
||||
col2.addChild(gb31);
|
||||
line1.addChild(col2);
|
||||
|
||||
VerticalLayout col3 = new VerticalLayout();
|
||||
GroupBox gb32 = new GroupBox("switches", "ImageButton"d, Orientation.Vertical);
|
||||
gb32.addChild(new ImageButton("ib1", "edit-copy"));
|
||||
gb32.addChild(new ImageButton("ib3", "edit-paste").enabled(false));
|
||||
col3.addChild(gb32);
|
||||
GroupBox gb33 = new GroupBox("images", "ImageWidget"d, Orientation.Vertical);
|
||||
gb33.addChild(new ImageWidget("cr3_logo", "cr3_logo"));
|
||||
col3.addChild(gb33);
|
||||
line1.addChild(col3);
|
||||
|
||||
|
||||
HorizontalLayout line2 = new HorizontalLayout();
|
||||
controls.addChild(line2);
|
||||
|
||||
GroupBox gb5 = new GroupBox("scrollbar", "horizontal ScrollBar"d);
|
||||
gb5.addChild(new ScrollBar("sb1", Orientation.Horizontal));
|
||||
line2.addChild(gb5);
|
||||
GroupBox gb6 = new GroupBox("slider", "horizontal SliderWidget"d);
|
||||
gb6.addChild(new SliderWidget("sb2", Orientation.Horizontal));
|
||||
line2.addChild(gb6);
|
||||
GroupBox gb7 = new GroupBox("editline1", "EditLine"d);
|
||||
gb7.addChild(new EditLine("ed1", "Some text"d).minWidth(120.pointsToPixels));
|
||||
line2.addChild(gb7);
|
||||
GroupBox gb8 = new GroupBox("editline2", "EditLine disabled"d);
|
||||
gb8.addChild(new EditLine("ed2", "Some text"d).enabled(false).minWidth(120.pointsToPixels));
|
||||
line2.addChild(gb8);
|
||||
|
||||
HorizontalLayout line3 = new HorizontalLayout();
|
||||
line3.layoutWidth(FILL_PARENT);
|
||||
GroupBox gbeditbox = new GroupBox("editbox", "EditBox"d, Orientation.Horizontal);
|
||||
gbeditbox.layoutWidth(FILL_PARENT);
|
||||
EditBox ed1 = new EditBox("ed1", "Some text in EditBox\nOne more line\nYet another text line");
|
||||
ed1.layoutHeight(FILL_PARENT);
|
||||
gbeditbox.addChild(ed1);
|
||||
line3.addChild(gbeditbox);
|
||||
GroupBox gbtabs = new GroupBox(null, "TabWidget"d);
|
||||
gbtabs.layoutWidth(FILL_PARENT);
|
||||
TabWidget tabs1 = new TabWidget("tabs1");
|
||||
tabs1.addTab(new TextWidget("tab1", "TextWidget on tab page\nTextWidgets can be\nMultiline"d).maxLines(3), "Tab 1"d);
|
||||
tabs1.addTab(new ImageWidget("tab2", "dlangui-logo1"), "Tab 2"d);
|
||||
tabs1.tabHost.backgroundColor = 0xE0E0E0;
|
||||
tabs1.tabHost.padding = Rect(10.pointsToPixels, 10.pointsToPixels, 10.pointsToPixels, 10.pointsToPixels);
|
||||
gbtabs.addChild(tabs1);
|
||||
line3.addChild(gbtabs);
|
||||
controls.addChild(line3);
|
||||
|
||||
HorizontalLayout line4 = new HorizontalLayout();
|
||||
line4.layoutWidth(FILL_PARENT);
|
||||
line4.layoutHeight(FILL_PARENT);
|
||||
GroupBox gbgrid = new GroupBox("grid", "StringGridWidget"d, Orientation.Horizontal);
|
||||
StringGridWidget grid = new StringGridWidget("stringgrid");
|
||||
grid.resize(12, 10);
|
||||
gbgrid.layoutWidth(FILL_PARENT);
|
||||
gbgrid.layoutHeight(FILL_PARENT);
|
||||
grid.layoutWidth(FILL_PARENT);
|
||||
grid.layoutHeight(FILL_PARENT);
|
||||
foreach (index, month; ["January"d, "February"d, "March"d, "April"d, "May"d, "June"d, "July"d, "August"d, "September"d, "October"d, "November"d, "December"d])
|
||||
grid.setColTitle(cast(int)index, month);
|
||||
for (int y = 0; y < 10; y++)
|
||||
grid.setRowTitle(y, to!dstring(y+1));
|
||||
//grid.alignment = Align.Right;
|
||||
grid.setColWidth(0, 30.pointsToPixels);
|
||||
grid.autoFit();
|
||||
import std.random;
|
||||
import std.string;
|
||||
for (int x = 0; x < 12; x++) {
|
||||
for (int y = 0; y < 10; y++) {
|
||||
int n = uniform(0, 10000);
|
||||
grid.setCellText(x, y, to!dstring("%.2f".format(n / 100.0)));
|
||||
}
|
||||
}
|
||||
//grid.autoFit();
|
||||
gbgrid.addChild(grid);
|
||||
line4.addChild(gbgrid);
|
||||
|
||||
GroupBox gbtree = new GroupBox("tree", "TreeWidget"d, Orientation.Vertical);
|
||||
auto tree = new TreeWidget("gbtree");
|
||||
//tree.layoutWidth(WRAP_CONTENT).layoutHeight(FILL_PARENT);
|
||||
tree.maxHeight(200.pointsToPixels);
|
||||
TreeItem tree1 = tree.items.newChild("group1", "Group 1"d, "document-open");
|
||||
tree1.newChild("g1_1", "Group 1 item 1"d);
|
||||
tree1.newChild("g1_2", "Group 1 item 2"d);
|
||||
tree1.newChild("g1_3", "Group 1 item 3"d);
|
||||
TreeItem tree2 = tree.items.newChild("group2", "Group 2"d, "document-save");
|
||||
tree2.newChild("g2_1", "Group 2 item 1"d, "edit-copy");
|
||||
tree2.newChild("g2_2", "Group 2 item 2"d, "edit-cut");
|
||||
tree2.newChild("g2_3", "Group 2 item 3"d, "edit-paste");
|
||||
tree2.newChild("g2_4", "Group 2 item 4"d);
|
||||
TreeItem tree3 = tree.items.newChild("group3", "Group 3"d);
|
||||
tree3.newChild("g3_1", "Group 3 item 1"d);
|
||||
tree3.newChild("g3_2", "Group 3 item 2"d);
|
||||
TreeItem tree32 = tree3.newChild("g3_3", "Group 3 item 3"d);
|
||||
tree3.newChild("g3_4", "Group 3 item 4"d);
|
||||
tree32.newChild("group3_2_1", "Group 3 item 2 subitem 1"d);
|
||||
tree32.newChild("group3_2_2", "Group 3 item 2 subitem 2"d);
|
||||
tree32.newChild("group3_2_3", "Group 3 item 2 subitem 3"d);
|
||||
tree32.newChild("group3_2_4", "Group 3 item 2 subitem 4"d);
|
||||
tree32.newChild("group3_2_5", "Group 3 item 2 subitem 5"d);
|
||||
tree3.newChild("g3_5", "Group 3 item 5"d);
|
||||
tree3.newChild("g3_6", "Group 3 item 6"d);
|
||||
gbtree.addChild(tree);
|
||||
tree.items.selectItem(tree1);
|
||||
// test adding new tree items
|
||||
HorizontalLayout newTreeItem = new HorizontalLayout();
|
||||
newTreeItem.layoutWidth = FILL_PARENT;
|
||||
EditLine edNewTreeItem = new EditLine("newTreeItem", "new item"d);
|
||||
edNewTreeItem.layoutWidth = FILL_PARENT;
|
||||
Button btnAddItem = new Button("btnAddTreeItem", "Add"d);
|
||||
Button btnRemoveItem = new Button("btnRemoveTreeItem", "Remove"d);
|
||||
newTreeItem.addChild(edNewTreeItem);
|
||||
newTreeItem.addChild(btnAddItem);
|
||||
newTreeItem.addChild(btnRemoveItem);
|
||||
btnAddItem.click = delegate(Widget source) {
|
||||
import std.random;
|
||||
dstring label = edNewTreeItem.text;
|
||||
string id = "item%d".format(uniform(1000000, 9999999, rndGen));
|
||||
TreeItem item = tree.items.selectedItem;
|
||||
if (item) {
|
||||
Log.d("Creating new tree item ", id, " ", label);
|
||||
TreeItem newItem = new TreeItem(id, label);
|
||||
item.addChild(newItem);
|
||||
}
|
||||
return true;
|
||||
};
|
||||
btnRemoveItem.click = delegate(Widget source) {
|
||||
TreeItem item = tree.items.selectedItem;
|
||||
if (item) {
|
||||
Log.d("Removing tree item ", item.id, " ", item.text);
|
||||
item.parent.removeChild(item);
|
||||
}
|
||||
return true;
|
||||
};
|
||||
gbtree.addChild(newTreeItem);
|
||||
line4.addChild(gbtree);
|
||||
|
||||
controls.addChild(line4);
|
||||
|
||||
tabs.addTab(controls, "Controls"d);
|
||||
}
|
||||
|
||||
LinearLayout layout = new LinearLayout("tab1");
|
||||
|
||||
|
||||
layout.addChild((new TextWidget()).textColor(0x00802000).text("Text widget 0"));
|
||||
layout.addChild((new TextWidget()).textColor(0x40FF4000).text("Text widget"));
|
||||
layout.addChild(new ProgressBarWidget().progress(300).animationInterval(50));
|
||||
layout.addChild(new ProgressBarWidget().progress(-1).animationInterval(50));
|
||||
layout.addChild((new Button("BTN1")).textResource("EXIT")); //.textColor(0x40FF4000)
|
||||
layout.addChild(new TimerTest());
|
||||
|
||||
static if (true) {
|
||||
|
||||
|
||||
LinearLayout hlayout = new HorizontalLayout();
|
||||
hlayout.layoutWidth(FILL_PARENT);
|
||||
//hlayout.addChild((new Button()).text("<<")); //.textColor(0x40FF4000)
|
||||
hlayout.addChild((new TextWidget()).text("Several").alignment(Align.Center));
|
||||
hlayout.addChild((new ImageWidget()).drawableId("btn_radio").padding(Rect(5,5,5,5)).alignment(Align.Center));
|
||||
hlayout.addChild((new TextWidget()).text("items").alignment(Align.Center));
|
||||
hlayout.addChild((new ImageWidget()).drawableId("btn_check").padding(Rect(5,5,5,5)).alignment(Align.Center));
|
||||
hlayout.addChild((new TextWidget()).text("in horizontal layout"));
|
||||
hlayout.addChild((new ImageWidget()).drawableId("exit").padding(Rect(5,5,5,5)).alignment(Align.Center));
|
||||
hlayout.addChild((new EditLine("editline", "Some text to edit"d)).popupMenu(editPopupItem).alignment(Align.Center).layoutWidth(FILL_PARENT));
|
||||
hlayout.addChild((new EditLine("passwd", "Password"d)).passwordChar('*').popupMenu(editPopupItem).alignment(Align.Center).layoutWidth(FILL_PARENT));
|
||||
//hlayout.addChild((new Button()).text(">>")); //.textColor(0x40FF4000)
|
||||
hlayout.backgroundColor = 0x8080C0;
|
||||
layout.addChild(hlayout);
|
||||
|
||||
LinearLayout vlayoutgroup = new HorizontalLayout();
|
||||
LinearLayout vlayout = new VerticalLayout();
|
||||
vlayout.addChild((new TextWidget()).text("VLayout line 1").textColor(0x40FF4000)); //
|
||||
vlayout.addChild((new TextWidget()).text("VLayout line 2").textColor(0x40FF8000));
|
||||
vlayout.addChild((new TextWidget()).text("VLayout line 2").textColor(0x40008000));
|
||||
vlayout.addChild(new RadioButton("rb1", "Radio button 1"d));
|
||||
vlayout.addChild(new RadioButton("rb2", "Radio button 2"d));
|
||||
vlayout.addChild(new RadioButton("rb3", "Radio button 3"d));
|
||||
vlayout.layoutWidth(FILL_PARENT);
|
||||
vlayoutgroup.addChild(vlayout);
|
||||
vlayoutgroup.layoutWidth(FILL_PARENT);
|
||||
ScrollBar vsb = new ScrollBar("vscroll", Orientation.Vertical);
|
||||
vlayoutgroup.addChild(vsb);
|
||||
layout.addChild(vlayoutgroup);
|
||||
|
||||
ScrollBar sb = new ScrollBar("hscroll", Orientation.Horizontal);
|
||||
layout.addChild(sb.layoutHeight(WRAP_CONTENT).layoutWidth(FILL_PARENT));
|
||||
|
||||
layout.addChild((new CheckBox("BTN2", "Some checkbox"d)));
|
||||
layout.addChild((new TextWidget()).textColor(0x40FF4000).text("Text widget"));
|
||||
layout.addChild((new ImageWidget()).drawableId("exit").padding(Rect(5,5,5,5)));
|
||||
layout.addChild((new TextWidget()).textColor(0xFF4000).text("Text widget2").padding(Rect(5,5,5,5)).margins(Rect(5,5,5,5)).backgroundColor(0xA0A0A0));
|
||||
layout.addChild((new RadioButton("BTN3", "Some radio button"d)));
|
||||
layout.addChild((new TextWidget(null, "Text widget3 with very long text"d)).textColor(0x004000));
|
||||
layout.addChild(new VSpacer()); // vertical spacer to fill extra space
|
||||
|
||||
|
||||
Widget w = parseML(q{
|
||||
VerticalLayout {
|
||||
id: vlayout
|
||||
margins: Rect { left: 5; right: 3; top: 2; bottom: 4 }
|
||||
padding: Rect { 5, 4, 3, 2 } // same as Rect { left: 5; top: 4; right: 3; bottom: 2 }
|
||||
TextWidget {
|
||||
/* this widget can be accessed via id myLabel1
|
||||
e.g. w.childById!TextWidget("myLabel1")
|
||||
*/
|
||||
id: myLabel1
|
||||
text: "Some text"; padding: 5
|
||||
enabled: false
|
||||
}
|
||||
TextWidget {
|
||||
id: myLabel2
|
||||
text: SOME_TEXT_RESOURCE_ID; margins: 5
|
||||
enabled: true
|
||||
}
|
||||
}
|
||||
});
|
||||
Log.d("id=", w.id, " text=", w.text, " padding=", w.padding, " margins=", w.margins,
|
||||
" lbl1.text=", w.childById!TextWidget("myLabel1").text,
|
||||
" lbl1.enabled=", w.childById!TextWidget("myLabel1").enabled,
|
||||
" lbl2.text=", w.childById!TextWidget("myLabel2").text
|
||||
);
|
||||
destroy(w);
|
||||
|
||||
layout.childById("BTN1").click = delegate (Widget w) {
|
||||
Log.d("onClick ", w.id);
|
||||
//w.backgroundImageId = null;
|
||||
//w.backgroundColor = 0xFF00FF;
|
||||
w.textColor = 0xFF00FF;
|
||||
w.styleId = STYLE_BUTTON_NOMARGINS;
|
||||
return true;
|
||||
};
|
||||
layout.childById("BTN2").click = delegate (Widget w) { Log.d("onClick ", w.id); return true; };
|
||||
layout.childById("BTN3").click = delegate (Widget w) { Log.d("onClick ", w.id); return true; };
|
||||
|
||||
}
|
||||
|
||||
layout.layoutHeight(FILL_PARENT).layoutWidth(FILL_PARENT);
|
||||
|
||||
tabs.addTab(layout, "Misc"d);
|
||||
|
||||
static if (true) {
|
||||
// two long lists
|
||||
// left one is list with widgets as items
|
||||
// right one is list with string list adapter
|
||||
HorizontalLayout longLists = new HorizontalLayout("tab2");
|
||||
longLists.layoutWidth(FILL_PARENT).layoutHeight(FILL_PARENT);
|
||||
|
||||
ListWidget list = new ListWidget("list1", Orientation.Vertical);
|
||||
list.layoutWidth(FILL_PARENT).layoutHeight(FILL_PARENT);
|
||||
|
||||
StringListAdapter stringList = new StringListAdapter();
|
||||
WidgetListAdapter listAdapter = new WidgetListAdapter();
|
||||
listAdapter.add((new TextWidget()).text("This is a list of widgets"d).styleId("LIST_ITEM"));
|
||||
stringList.add("This is a list of strings from StringListAdapter"d);
|
||||
stringList.add("If you type with your keyboard,"d);
|
||||
stringList.add("then you can find the"d);
|
||||
stringList.add("item in the list"d);
|
||||
stringList.add("neat!"d);
|
||||
for (int i = 1; i < 1000; i++) {
|
||||
dstring label = "List item "d ~ to!dstring(i);
|
||||
listAdapter.add((new TextWidget()).text("Widget list - "d ~ label).styleId("LIST_ITEM"));
|
||||
stringList.add("Simple string - "d ~ label);
|
||||
}
|
||||
list.ownAdapter = listAdapter;
|
||||
listAdapter.resetItemState(0, State.Enabled);
|
||||
listAdapter.resetItemState(5, State.Enabled);
|
||||
listAdapter.resetItemState(7, State.Enabled);
|
||||
listAdapter.resetItemState(12, State.Enabled);
|
||||
assert(list.itemEnabled(5) == false);
|
||||
assert(list.itemEnabled(6) == true);
|
||||
list.layoutWidth(FILL_PARENT).layoutHeight(FILL_PARENT);
|
||||
list.selectItem(0);
|
||||
|
||||
longLists.addChild(list);
|
||||
|
||||
ListWidget list2 = new StringListWidget("list2");
|
||||
list2.ownAdapter = stringList;
|
||||
list2.layoutWidth(FILL_PARENT).layoutHeight(FILL_PARENT);
|
||||
list2.selectItem(0);
|
||||
longLists.addChild(list2);
|
||||
|
||||
VerticalLayout itemedit = new VerticalLayout();
|
||||
itemedit.addChild(new TextWidget(null, "New item text:"d));
|
||||
EditLine itemtext = new EditLine(null, "Text for new item"d);
|
||||
itemedit.addChild(itemtext);
|
||||
Button btn = new Button(null, "Add item"d);
|
||||
itemedit.addChild(btn);
|
||||
longLists.addChild(itemedit);
|
||||
btn.click = delegate(Widget src)
|
||||
{
|
||||
stringList.add(itemtext.text);
|
||||
listAdapter.add((new TextWidget()).text(itemtext.text).styleId("LIST_ITEM"));
|
||||
return true;
|
||||
};
|
||||
tabs.addTab(longLists, "TAB_LONG_LIST"c);
|
||||
}
|
||||
|
||||
{
|
||||
LinearLayout layout3 = new VerticalLayout("tab3");
|
||||
// 3 types of buttons: Button, ImageButton, ImageTextButton
|
||||
layout3.addChild(new TextWidget(null, "Buttons in HorizontalLayout"d));
|
||||
WidgetGroup buttons1 = new HorizontalLayout();
|
||||
buttons1.addChild(new TextWidget(null, "Button widgets: "d));
|
||||
buttons1.addChild((new Button("btn1", "Button"d)).tooltipText("Tooltip text for button"d));
|
||||
buttons1.addChild((new Button("btn2", "Disabled Button"d)).enabled(false));
|
||||
buttons1.addChild(new TextWidget(null, "ImageButton widgets: "d));
|
||||
buttons1.addChild(new ImageButton("btn3", "text-plain"));
|
||||
buttons1.addChild(new TextWidget(null, "disabled: "d));
|
||||
buttons1.addChild((new ImageButton("btn4", "folder")).enabled(false));
|
||||
layout3.addChild(buttons1);
|
||||
|
||||
WidgetGroup buttons10 = new HorizontalLayout();
|
||||
buttons10.addChild(new TextWidget(null, "ImageTextButton widgets: "d));
|
||||
buttons10.addChild(new ImageTextButton("btn5", "text-plain", "Enabled"d));
|
||||
buttons10.addChild((new ImageTextButton("btn6", "folder", "Disabled"d)).enabled(false));
|
||||
buttons10.addChild(new TextWidget(null, "SwitchButton widgets: "d));
|
||||
buttons10.addChild((new SwitchButton("SW1")).checked(true));
|
||||
buttons10.addChild((new SwitchButton("SW2")).checked(false));
|
||||
buttons10.addChild((new SwitchButton("SW3")).checked(true).enabled(false));
|
||||
buttons10.addChild((new SwitchButton("SW4")).checked(false).enabled(false));
|
||||
layout3.addChild(buttons10);
|
||||
|
||||
WidgetGroup buttons11 = new HorizontalLayout();
|
||||
buttons11.addChild(new TextWidget(null, "Construct buttons by action (Button, ImageButton, ImageTextButton): "d));
|
||||
Action FILE_OPEN_ACTION = new Action(ACTION_FILE_OPEN, "MENU_FILE_OPEN"c, "document-open", KeyCode.KEY_O, KeyFlag.Control);
|
||||
buttons11.addChild(new Button(FILE_OPEN_ACTION));
|
||||
buttons11.addChild(new ImageButton(FILE_OPEN_ACTION));
|
||||
buttons11.addChild(new ImageTextButton(FILE_OPEN_ACTION));
|
||||
layout3.addChild(buttons11);
|
||||
|
||||
WidgetGroup buttons12 = new HorizontalLayout();
|
||||
buttons12.addChild(new TextWidget(null, "The same in disabled state: "d));
|
||||
buttons12.addChild((new Button(FILE_OPEN_ACTION)).enabled(false));
|
||||
buttons12.addChild((new ImageButton(FILE_OPEN_ACTION)).enabled(false));
|
||||
buttons12.addChild((new ImageTextButton(FILE_OPEN_ACTION)).enabled(false));
|
||||
layout3.addChild(buttons12);
|
||||
|
||||
layout3.addChild(new VSpacer());
|
||||
layout3.addChild(new TextWidget(null, "CheckBoxes in HorizontalLayout"d));
|
||||
WidgetGroup buttons2 = new HorizontalLayout();
|
||||
buttons2.addChild(new CheckBox("btn1", "CheckBox 1"d));
|
||||
buttons2.addChild(new CheckBox("btn2", "CheckBox 2"d));
|
||||
//buttons2.addChild(new ResizerWidget());
|
||||
buttons2.addChild(new CheckBox("btn3", "CheckBox 3"d));
|
||||
buttons2.addChild(new CheckBox("btn4", "CheckBox 4"d));
|
||||
layout3.addChild(buttons2);
|
||||
|
||||
layout3.addChild(new VSpacer());
|
||||
layout3.addChild(new TextWidget(null, "RadioButtons in HorizontalLayout"d));
|
||||
WidgetGroup buttons3 = new HorizontalLayout();
|
||||
buttons3.addChild(new RadioButton("btn1", "RadioButton 1"d));
|
||||
buttons3.addChild(new RadioButton("btn2", "RadioButton 2"d));
|
||||
buttons3.addChild(new RadioButton("btn3", "RadioButton 3"d));
|
||||
buttons3.addChild(new RadioButton("btn4", "RadioButton 4"d));
|
||||
layout3.addChild(buttons3);
|
||||
|
||||
layout3.addChild(new VSpacer());
|
||||
layout3.addChild(new TextWidget(null, "ImageButtons HorizontalLayout"d));
|
||||
WidgetGroup buttons4 = new HorizontalLayout();
|
||||
buttons4.addChild(new ImageButton("btn1", "fileclose"));
|
||||
buttons4.addChild(new ImageButton("btn2", "fileopen"));
|
||||
buttons4.addChild(new ImageButton("btn3", "exit"));
|
||||
layout3.addChild(buttons4);
|
||||
|
||||
layout3.addChild(new VSpacer());
|
||||
layout3.addChild(new TextWidget(null, "In vertical layouts:"d));
|
||||
HorizontalLayout hlayout2 = new HorizontalLayout();
|
||||
hlayout2.layoutHeight(FILL_PARENT); //layoutWidth(FILL_PARENT).
|
||||
|
||||
buttons1 = new VerticalLayout();
|
||||
buttons1.addChild(new TextWidget(null, "Buttons"d));
|
||||
buttons1.addChild(new Button("btn1", "Button 1"d));
|
||||
buttons1.addChild(new Button("btn2", "Button 2"d));
|
||||
buttons1.addChild((new Button("btn3", "Button 3 - disabled"d)).enabled(false));
|
||||
buttons1.addChild(new Button("btn4", "Button 4"d));
|
||||
hlayout2.addChild(buttons1);
|
||||
hlayout2.addChild(new HSpacer());
|
||||
|
||||
buttons2 = new VerticalLayout();
|
||||
buttons2.addChild(new TextWidget(null, "CheckBoxes"d));
|
||||
buttons2.addChild(new CheckBox("btn1", "CheckBox 1"d));
|
||||
buttons2.addChild(new CheckBox("btn2", "CheckBox 2"d));
|
||||
buttons2.addChild(new CheckBox("btn3", "CheckBox 3"d));
|
||||
buttons2.addChild(new CheckBox("btn4", "CheckBox 4"d));
|
||||
hlayout2.addChild(buttons2);
|
||||
hlayout2.addChild(new HSpacer());
|
||||
|
||||
buttons3 = new VerticalLayout();
|
||||
buttons3.addChild(new TextWidget(null, "RadioButtons"d));
|
||||
buttons3.addChild(new RadioButton("btn1", "RadioButton 1"d));
|
||||
buttons3.addChild(new RadioButton("btn2", "RadioButton 2"d));
|
||||
//buttons3.addChild(new ResizerWidget());
|
||||
buttons3.addChild(new RadioButton("btn3", "RadioButton 3"d));
|
||||
buttons3.addChild(new RadioButton("btn4", "RadioButton 4"d));
|
||||
hlayout2.addChild(buttons3);
|
||||
hlayout2.addChild(new HSpacer());
|
||||
|
||||
buttons4 = new VerticalLayout();
|
||||
buttons4.addChild(new TextWidget(null, "ImageButtons"d));
|
||||
buttons4.addChild(new ImageButton("btn1", "fileclose"));
|
||||
buttons4.addChild(new ImageButton("btn2", "fileopen"));
|
||||
buttons4.addChild(new ImageButton("btn3", "exit"));
|
||||
hlayout2.addChild(buttons4);
|
||||
hlayout2.addChild(new HSpacer());
|
||||
|
||||
WidgetGroup buttons5 = new VerticalLayout();
|
||||
buttons5.addChild(new TextWidget(null, "ImageTextButtons"d));
|
||||
buttons5.addChild(new ImageTextButton("btn1", "fileclose", "Close"d));
|
||||
buttons5.addChild(new ImageTextButton("btn2", "fileopen", "Open"d));
|
||||
buttons5.addChild(new ImageTextButton("btn3", "exit", "Exit"d));
|
||||
hlayout2.addChild(buttons5);
|
||||
|
||||
|
||||
layout3.addChild(hlayout2);
|
||||
|
||||
layout3.addChild(new VSpacer());
|
||||
layout3.layoutWidth(FILL_PARENT).layoutHeight(FILL_PARENT);
|
||||
tabs.addTab(layout3, "TAB_BUTTONS"c);
|
||||
}
|
||||
tabs.addTab(new BasicControls("controls"), "Controls"d);
|
||||
tabs.addTab(new MiscExample("tab1"), "Misc"d);
|
||||
tabs.addTab(new LongListsExample("tab2"), "TAB_LONG_LIST"c);
|
||||
tabs.addTab(new ButtonsExample("tab3"), "TAB_BUTTONS"c);
|
||||
|
||||
TableLayout table = new TableLayout("TABLE");
|
||||
table.colCount = 2;
|
||||
|
|
@ -883,7 +351,7 @@ extern (C) int UIAppMain(string[] args) {
|
|||
EditLine editLine = new EditLine("editline1", "Single line editor sample text");
|
||||
editors.addChild(createEditorSettingsControl(editLine));
|
||||
editors.addChild(editLine);
|
||||
editLine.popupMenu = editPopupItem;
|
||||
//editLine.popupMenu = editPopupItem;
|
||||
|
||||
// EditBox sample
|
||||
editors.addChild(new TextWidget(null, "SourceEdit: multiline editor, for source code editing"d));
|
||||
|
|
@ -908,7 +376,7 @@ void main()
|
|||
}d;
|
||||
editors.addChild(createEditorSettingsControl(editBox));
|
||||
editors.addChild(editBox);
|
||||
editBox.popupMenu = editPopupItem;
|
||||
//editBox.popupMenu = editPopupItem;
|
||||
|
||||
editors.addChild(new TextWidget(null, "EditBox: additional view for the same content (split view testing)"d));
|
||||
SourceEdit editBox2 = new SourceEdit("editbox2");
|
||||
|
|
|
|||
|
|
@ -0,0 +1,136 @@
|
|||
module widgets.buttons;
|
||||
|
||||
import dlangui;
|
||||
|
||||
enum : int {
|
||||
ACTION_FILE_OPEN = 5500,
|
||||
ACTION_FILE_SAVE,
|
||||
ACTION_FILE_CLOSE,
|
||||
ACTION_FILE_EXIT,
|
||||
}
|
||||
|
||||
class ButtonsExample : VerticalLayout
|
||||
{
|
||||
this(string ID)
|
||||
{
|
||||
super(ID);
|
||||
// 3 types of buttons: Button, ImageButton, ImageTextButton
|
||||
addChild(new TextWidget(null, "Buttons in HorizontalLayout"d));
|
||||
WidgetGroup buttons1 = new HorizontalLayout();
|
||||
buttons1.addChild(new TextWidget(null, "Button widgets: "d));
|
||||
buttons1.addChild((new Button("btn1", "Button"d)).tooltipText("Tooltip text for button"d));
|
||||
buttons1.addChild((new Button("btn2", "Disabled Button"d)).enabled(false));
|
||||
buttons1.addChild(new TextWidget(null, "ImageButton widgets: "d));
|
||||
buttons1.addChild(new ImageButton("btn3", "text-plain"));
|
||||
buttons1.addChild(new TextWidget(null, "disabled: "d));
|
||||
buttons1.addChild((new ImageButton("btn4", "folder")).enabled(false));
|
||||
addChild(buttons1);
|
||||
|
||||
WidgetGroup buttons10 = new HorizontalLayout();
|
||||
buttons10.addChild(new TextWidget(null, "ImageTextButton widgets: "d));
|
||||
buttons10.addChild(new ImageTextButton("btn5", "text-plain", "Enabled"d));
|
||||
buttons10.addChild((new ImageTextButton("btn6", "folder", "Disabled"d)).enabled(false));
|
||||
buttons10.addChild(new TextWidget(null, "SwitchButton widgets: "d));
|
||||
buttons10.addChild((new SwitchButton("SW1")).checked(true));
|
||||
buttons10.addChild((new SwitchButton("SW2")).checked(false));
|
||||
buttons10.addChild((new SwitchButton("SW3")).checked(true).enabled(false));
|
||||
buttons10.addChild((new SwitchButton("SW4")).checked(false).enabled(false));
|
||||
addChild(buttons10);
|
||||
|
||||
WidgetGroup buttons11 = new HorizontalLayout();
|
||||
buttons11.addChild(new TextWidget(null, "Construct buttons by action (Button, ImageButton, ImageTextButton): "d));
|
||||
Action FILE_OPEN_ACTION = new Action(ACTION_FILE_OPEN, "MENU_FILE_OPEN"c, "document-open", KeyCode.KEY_O, KeyFlag.Control);
|
||||
buttons11.addChild(new Button(FILE_OPEN_ACTION));
|
||||
buttons11.addChild(new ImageButton(FILE_OPEN_ACTION));
|
||||
buttons11.addChild(new ImageTextButton(FILE_OPEN_ACTION));
|
||||
addChild(buttons11);
|
||||
|
||||
WidgetGroup buttons12 = new HorizontalLayout();
|
||||
buttons12.addChild(new TextWidget(null, "The same in disabled state: "d));
|
||||
buttons12.addChild((new Button(FILE_OPEN_ACTION)).enabled(false));
|
||||
buttons12.addChild((new ImageButton(FILE_OPEN_ACTION)).enabled(false));
|
||||
buttons12.addChild((new ImageTextButton(FILE_OPEN_ACTION)).enabled(false));
|
||||
addChild(buttons12);
|
||||
|
||||
addChild(new VSpacer());
|
||||
addChild(new TextWidget(null, "CheckBoxes in HorizontalLayout"d));
|
||||
WidgetGroup buttons2 = new HorizontalLayout();
|
||||
buttons2.addChild(new CheckBox("btn1", "CheckBox 1"d));
|
||||
buttons2.addChild(new CheckBox("btn2", "CheckBox 2"d));
|
||||
//buttons2.addChild(new ResizerWidget());
|
||||
buttons2.addChild(new CheckBox("btn3", "CheckBox 3"d));
|
||||
buttons2.addChild(new CheckBox("btn4", "CheckBox 4"d));
|
||||
addChild(buttons2);
|
||||
|
||||
addChild(new VSpacer());
|
||||
addChild(new TextWidget(null, "RadioButtons in HorizontalLayout"d));
|
||||
WidgetGroup buttons3 = new HorizontalLayout();
|
||||
buttons3.addChild(new RadioButton("btn1", "RadioButton 1"d));
|
||||
buttons3.addChild(new RadioButton("btn2", "RadioButton 2"d));
|
||||
buttons3.addChild(new RadioButton("btn3", "RadioButton 3"d));
|
||||
buttons3.addChild(new RadioButton("btn4", "RadioButton 4"d));
|
||||
addChild(buttons3);
|
||||
|
||||
addChild(new VSpacer());
|
||||
addChild(new TextWidget(null, "ImageButtons HorizontalLayout"d));
|
||||
WidgetGroup buttons4 = new HorizontalLayout();
|
||||
buttons4.addChild(new ImageButton("btn1", "fileclose"));
|
||||
buttons4.addChild(new ImageButton("btn2", "fileopen"));
|
||||
buttons4.addChild(new ImageButton("btn3", "exit"));
|
||||
addChild(buttons4);
|
||||
|
||||
addChild(new VSpacer());
|
||||
addChild(new TextWidget(null, "In vertical layouts:"d));
|
||||
HorizontalLayout hlayout2 = new HorizontalLayout();
|
||||
hlayout2.layoutHeight(FILL_PARENT); //layoutWidth(FILL_PARENT).
|
||||
|
||||
buttons1 = new VerticalLayout();
|
||||
buttons1.addChild(new TextWidget(null, "Buttons"d));
|
||||
buttons1.addChild(new Button("btn1", "Button 1"d));
|
||||
buttons1.addChild(new Button("btn2", "Button 2"d));
|
||||
buttons1.addChild((new Button("btn3", "Button 3 - disabled"d)).enabled(false));
|
||||
buttons1.addChild(new Button("btn4", "Button 4"d));
|
||||
hlayout2.addChild(buttons1);
|
||||
hlayout2.addChild(new HSpacer());
|
||||
|
||||
buttons2 = new VerticalLayout();
|
||||
buttons2.addChild(new TextWidget(null, "CheckBoxes"d));
|
||||
buttons2.addChild(new CheckBox("btn1", "CheckBox 1"d));
|
||||
buttons2.addChild(new CheckBox("btn2", "CheckBox 2"d));
|
||||
buttons2.addChild(new CheckBox("btn3", "CheckBox 3"d));
|
||||
buttons2.addChild(new CheckBox("btn4", "CheckBox 4"d));
|
||||
hlayout2.addChild(buttons2);
|
||||
hlayout2.addChild(new HSpacer());
|
||||
|
||||
buttons3 = new VerticalLayout();
|
||||
buttons3.addChild(new TextWidget(null, "RadioButtons"d));
|
||||
buttons3.addChild(new RadioButton("btn1", "RadioButton 1"d));
|
||||
buttons3.addChild(new RadioButton("btn2", "RadioButton 2"d));
|
||||
//buttons3.addChild(new ResizerWidget());
|
||||
buttons3.addChild(new RadioButton("btn3", "RadioButton 3"d));
|
||||
buttons3.addChild(new RadioButton("btn4", "RadioButton 4"d));
|
||||
hlayout2.addChild(buttons3);
|
||||
hlayout2.addChild(new HSpacer());
|
||||
|
||||
buttons4 = new VerticalLayout();
|
||||
buttons4.addChild(new TextWidget(null, "ImageButtons"d));
|
||||
buttons4.addChild(new ImageButton("btn1", "fileclose"));
|
||||
buttons4.addChild(new ImageButton("btn2", "fileopen"));
|
||||
buttons4.addChild(new ImageButton("btn3", "exit"));
|
||||
hlayout2.addChild(buttons4);
|
||||
hlayout2.addChild(new HSpacer());
|
||||
|
||||
WidgetGroup buttons5 = new VerticalLayout();
|
||||
buttons5.addChild(new TextWidget(null, "ImageTextButtons"d));
|
||||
buttons5.addChild(new ImageTextButton("btn1", "fileclose", "Close"d));
|
||||
buttons5.addChild(new ImageTextButton("btn2", "fileopen", "Open"d));
|
||||
buttons5.addChild(new ImageTextButton("btn3", "exit", "Exit"d));
|
||||
hlayout2.addChild(buttons5);
|
||||
|
||||
|
||||
addChild(hlayout2);
|
||||
|
||||
addChild(new VSpacer());
|
||||
layoutWidth(FILL_PARENT).layoutHeight(FILL_PARENT);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,189 @@
|
|||
module widgets.controls;
|
||||
|
||||
import dlangui;
|
||||
|
||||
class BasicControls : LinearLayout
|
||||
{
|
||||
this(string ID)
|
||||
{
|
||||
super(ID);
|
||||
layoutHeight(FILL_PARENT);
|
||||
padding = Rect(12.pointsToPixels,12.pointsToPixels,12.pointsToPixels,12.pointsToPixels);
|
||||
|
||||
HorizontalLayout line1 = new HorizontalLayout();
|
||||
addChild(line1);
|
||||
|
||||
GroupBox gb = new GroupBox("checkboxes", "CheckBox"d);
|
||||
gb.addChild(new CheckBox("cb1", "CheckBox 1"d));
|
||||
gb.addChild(new CheckBox("cb2", "CheckBox 2"d).checked(true));
|
||||
gb.addChild(new CheckBox("cb3", "CheckBox disabled"d).enabled(false));
|
||||
gb.addChild(new CheckBox("cb4", "CheckBox disabled"d).checked(true).enabled(false));
|
||||
line1.addChild(gb);
|
||||
|
||||
GroupBox gb2 = new GroupBox("radiobuttons", "RadioButton"d);
|
||||
gb2.addChild(new RadioButton("rb1", "RadioButton 1"d).checked(true));
|
||||
gb2.addChild(new RadioButton("rb2", "RadioButton 2"d));
|
||||
gb2.addChild(new RadioButton("rb3", "RadioButton disabled"d).enabled(false));
|
||||
line1.addChild(gb2);
|
||||
|
||||
VerticalLayout col1 = new VerticalLayout();
|
||||
GroupBox gb3 = new GroupBox("textbuttons", "Button"d, Orientation.Horizontal);
|
||||
gb3.addChild(new Button("tb1", "Button"d));
|
||||
gb3.addChild(new Button("tb2", "Button disabled"d).enabled(false));
|
||||
col1.addChild(gb3);
|
||||
GroupBox gb4 = new GroupBox("imagetextbuttons", "ImageTextButton"d, Orientation.Horizontal);
|
||||
gb4.addChild(new ImageTextButton("itb1", "document-open", "Enabled"d));
|
||||
gb4.addChild(new ImageTextButton("itb2", "document-save", "Disabled"d).enabled(false));
|
||||
col1.addChild(gb4);
|
||||
GroupBox gbtext = new GroupBox("text", "TextWidget"d, Orientation.Horizontal);
|
||||
gbtext.addChild(new TextWidget("t1", "Red text"d).fontSize(12.pointsToPixels).textColor(0xFF0000));
|
||||
gbtext.addChild(new TextWidget("t2", "Italic text"d).fontSize(12.pointsToPixels).fontItalic(true));
|
||||
col1.addChild(gbtext);
|
||||
line1.addChild(col1);
|
||||
|
||||
VerticalLayout col2 = new VerticalLayout();
|
||||
GroupBox gb31 = new GroupBox("switches", "SwitchButton"d, Orientation.Vertical);
|
||||
gb31.addChild(new SwitchButton("sb1"));
|
||||
gb31.addChild(new SwitchButton("sb2").checked(true));
|
||||
gb31.addChild(new SwitchButton("sb3").enabled(false));
|
||||
gb31.addChild(new SwitchButton("sb4").enabled(false).checked(true));
|
||||
col2.addChild(gb31);
|
||||
line1.addChild(col2);
|
||||
|
||||
VerticalLayout col3 = new VerticalLayout();
|
||||
GroupBox gb32 = new GroupBox("switches", "ImageButton"d, Orientation.Vertical);
|
||||
gb32.addChild(new ImageButton("ib1", "edit-copy"));
|
||||
gb32.addChild(new ImageButton("ib3", "edit-paste").enabled(false));
|
||||
col3.addChild(gb32);
|
||||
GroupBox gb33 = new GroupBox("images", "ImageWidget"d, Orientation.Vertical);
|
||||
gb33.addChild(new ImageWidget("cr3_logo", "cr3_logo"));
|
||||
col3.addChild(gb33);
|
||||
line1.addChild(col3);
|
||||
|
||||
|
||||
HorizontalLayout line2 = new HorizontalLayout();
|
||||
addChild(line2);
|
||||
|
||||
GroupBox gb5 = new GroupBox("scrollbar", "horizontal ScrollBar"d);
|
||||
gb5.addChild(new ScrollBar("sb1", Orientation.Horizontal));
|
||||
line2.addChild(gb5);
|
||||
GroupBox gb6 = new GroupBox("slider", "horizontal SliderWidget"d);
|
||||
gb6.addChild(new SliderWidget("sb2", Orientation.Horizontal));
|
||||
line2.addChild(gb6);
|
||||
GroupBox gb7 = new GroupBox("editline1", "EditLine"d);
|
||||
gb7.addChild(new EditLine("ed1", "Some text"d).minWidth(120.pointsToPixels));
|
||||
line2.addChild(gb7);
|
||||
GroupBox gb8 = new GroupBox("editline2", "EditLine disabled"d);
|
||||
gb8.addChild(new EditLine("ed2", "Some text"d).enabled(false).minWidth(120.pointsToPixels));
|
||||
line2.addChild(gb8);
|
||||
|
||||
HorizontalLayout line3 = new HorizontalLayout();
|
||||
line3.layoutWidth(FILL_PARENT);
|
||||
GroupBox gbeditbox = new GroupBox("editbox", "EditBox"d, Orientation.Horizontal);
|
||||
gbeditbox.layoutWidth(FILL_PARENT);
|
||||
EditBox ed1 = new EditBox("ed1", "Some text in EditBox\nOne more line\nYet another text line");
|
||||
ed1.layoutHeight(FILL_PARENT);
|
||||
gbeditbox.addChild(ed1);
|
||||
line3.addChild(gbeditbox);
|
||||
GroupBox gbtabs = new GroupBox(null, "TabWidget"d);
|
||||
gbtabs.layoutWidth(FILL_PARENT);
|
||||
TabWidget tabs1 = new TabWidget("tabs1");
|
||||
tabs1.addTab(new TextWidget("tab1", "TextWidget on tab page\nTextWidgets can be\nMultiline"d).maxLines(3), "Tab 1"d);
|
||||
tabs1.addTab(new ImageWidget("tab2", "dlangui-logo1"), "Tab 2"d);
|
||||
tabs1.tabHost.backgroundColor = 0xE0E0E0;
|
||||
tabs1.tabHost.padding = Rect(10.pointsToPixels, 10.pointsToPixels, 10.pointsToPixels, 10.pointsToPixels);
|
||||
gbtabs.addChild(tabs1);
|
||||
line3.addChild(gbtabs);
|
||||
addChild(line3);
|
||||
|
||||
HorizontalLayout line4 = new HorizontalLayout();
|
||||
line4.layoutWidth(FILL_PARENT);
|
||||
line4.layoutHeight(FILL_PARENT);
|
||||
GroupBox gbgrid = new GroupBox("grid", "StringGridWidget"d, Orientation.Horizontal);
|
||||
StringGridWidget grid = new StringGridWidget("stringgrid");
|
||||
grid.resize(12, 10);
|
||||
gbgrid.layoutWidth(FILL_PARENT);
|
||||
gbgrid.layoutHeight(FILL_PARENT);
|
||||
grid.layoutWidth(FILL_PARENT);
|
||||
grid.layoutHeight(FILL_PARENT);
|
||||
foreach (index, month; ["January"d, "February"d, "March"d, "April"d, "May"d, "June"d, "July"d, "August"d, "September"d, "October"d, "November"d, "December"d])
|
||||
grid.setColTitle(cast(int)index, month);
|
||||
for (int y = 0; y < 10; y++)
|
||||
grid.setRowTitle(y, to!dstring(y+1));
|
||||
|
||||
grid.setColWidth(0, 30.pointsToPixels);
|
||||
grid.autoFit();
|
||||
import std.random;
|
||||
import std.string;
|
||||
for (int x = 0; x < 12; x++) {
|
||||
for (int y = 0; y < 10; y++) {
|
||||
int n = uniform(0, 10000);
|
||||
grid.setCellText(x, y, to!dstring("%.2f".format(n / 100.0)));
|
||||
}
|
||||
}
|
||||
|
||||
gbgrid.addChild(grid);
|
||||
line4.addChild(gbgrid);
|
||||
|
||||
GroupBox gbtree = new GroupBox("tree", "TreeWidget"d, Orientation.Vertical);
|
||||
auto tree = new TreeWidget("gbtree");
|
||||
tree.maxHeight(200.pointsToPixels);
|
||||
TreeItem tree1 = tree.items.newChild("group1", "Group 1"d, "document-open");
|
||||
tree1.newChild("g1_1", "Group 1 item 1"d);
|
||||
tree1.newChild("g1_2", "Group 1 item 2"d);
|
||||
tree1.newChild("g1_3", "Group 1 item 3"d);
|
||||
TreeItem tree2 = tree.items.newChild("group2", "Group 2"d, "document-save");
|
||||
tree2.newChild("g2_1", "Group 2 item 1"d, "edit-copy");
|
||||
tree2.newChild("g2_2", "Group 2 item 2"d, "edit-cut");
|
||||
tree2.newChild("g2_3", "Group 2 item 3"d, "edit-paste");
|
||||
tree2.newChild("g2_4", "Group 2 item 4"d);
|
||||
TreeItem tree3 = tree.items.newChild("group3", "Group 3"d);
|
||||
tree3.newChild("g3_1", "Group 3 item 1"d);
|
||||
tree3.newChild("g3_2", "Group 3 item 2"d);
|
||||
TreeItem tree32 = tree3.newChild("g3_3", "Group 3 item 3"d);
|
||||
tree3.newChild("g3_4", "Group 3 item 4"d);
|
||||
tree32.newChild("group3_2_1", "Group 3 item 2 subitem 1"d);
|
||||
tree32.newChild("group3_2_2", "Group 3 item 2 subitem 2"d);
|
||||
tree32.newChild("group3_2_3", "Group 3 item 2 subitem 3"d);
|
||||
tree32.newChild("group3_2_4", "Group 3 item 2 subitem 4"d);
|
||||
tree32.newChild("group3_2_5", "Group 3 item 2 subitem 5"d);
|
||||
tree3.newChild("g3_5", "Group 3 item 5"d);
|
||||
tree3.newChild("g3_6", "Group 3 item 6"d);
|
||||
gbtree.addChild(tree);
|
||||
tree.items.selectItem(tree1);
|
||||
// test adding new tree items
|
||||
HorizontalLayout newTreeItem = new HorizontalLayout();
|
||||
newTreeItem.layoutWidth = FILL_PARENT;
|
||||
EditLine edNewTreeItem = new EditLine("newTreeItem", "new item"d);
|
||||
edNewTreeItem.layoutWidth = FILL_PARENT;
|
||||
Button btnAddItem = new Button("btnAddTreeItem", "Add"d);
|
||||
Button btnRemoveItem = new Button("btnRemoveTreeItem", "Remove"d);
|
||||
newTreeItem.addChild(edNewTreeItem);
|
||||
newTreeItem.addChild(btnAddItem);
|
||||
newTreeItem.addChild(btnRemoveItem);
|
||||
btnAddItem.click = delegate(Widget source) {
|
||||
import std.random;
|
||||
dstring label = edNewTreeItem.text;
|
||||
string id = "item%d".format(uniform(1000000, 9999999, rndGen));
|
||||
TreeItem item = tree.items.selectedItem;
|
||||
if (item) {
|
||||
Log.d("Creating new tree item ", id, " ", label);
|
||||
TreeItem newItem = new TreeItem(id, label);
|
||||
item.addChild(newItem);
|
||||
}
|
||||
return true;
|
||||
};
|
||||
btnRemoveItem.click = delegate(Widget source) {
|
||||
TreeItem item = tree.items.selectedItem;
|
||||
if (item) {
|
||||
Log.d("Removing tree item ", item.id, " ", item.text);
|
||||
item.parent.removeChild(item);
|
||||
}
|
||||
return true;
|
||||
};
|
||||
gbtree.addChild(newTreeItem);
|
||||
line4.addChild(gbtree);
|
||||
|
||||
addChild(line4);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
module widgets.longlists;
|
||||
|
||||
import dlangui;
|
||||
|
||||
class LongListsExample : HorizontalLayout
|
||||
{
|
||||
this(string ID)
|
||||
{
|
||||
super(ID);
|
||||
layoutWidth(FILL_PARENT).layoutHeight(FILL_PARENT);
|
||||
|
||||
ListWidget list = new ListWidget("list1", Orientation.Vertical);
|
||||
list.layoutWidth(FILL_PARENT).layoutHeight(FILL_PARENT);
|
||||
|
||||
StringListAdapter stringList = new StringListAdapter();
|
||||
WidgetListAdapter listAdapter = new WidgetListAdapter();
|
||||
listAdapter.add((new TextWidget()).text("This is a list of widgets"d).styleId("LIST_ITEM"));
|
||||
stringList.add("This is a list of strings from StringListAdapter"d);
|
||||
stringList.add("If you type with your keyboard,"d);
|
||||
stringList.add("then you can find the"d);
|
||||
stringList.add("item in the list"d);
|
||||
stringList.add("neat!"d);
|
||||
for (int i = 1; i < 1000; i++) {
|
||||
dstring label = "List item "d ~ to!dstring(i);
|
||||
listAdapter.add((new TextWidget()).text("Widget list - "d ~ label).styleId("LIST_ITEM"));
|
||||
stringList.add("Simple string - "d ~ label);
|
||||
}
|
||||
list.ownAdapter = listAdapter;
|
||||
listAdapter.resetItemState(0, State.Enabled);
|
||||
listAdapter.resetItemState(5, State.Enabled);
|
||||
listAdapter.resetItemState(7, State.Enabled);
|
||||
listAdapter.resetItemState(12, State.Enabled);
|
||||
assert(list.itemEnabled(5) == false);
|
||||
assert(list.itemEnabled(6) == true);
|
||||
list.layoutWidth(FILL_PARENT).layoutHeight(FILL_PARENT);
|
||||
list.selectItem(0);
|
||||
|
||||
addChild(list);
|
||||
|
||||
ListWidget list2 = new StringListWidget("list2");
|
||||
list2.ownAdapter = stringList;
|
||||
list2.layoutWidth(FILL_PARENT).layoutHeight(FILL_PARENT);
|
||||
list2.selectItem(0);
|
||||
addChild(list2);
|
||||
|
||||
VerticalLayout itemedit = new VerticalLayout();
|
||||
itemedit.addChild(new TextWidget(null, "New item text:"d));
|
||||
EditLine itemtext = new EditLine(null, "Text for new item"d);
|
||||
itemedit.addChild(itemtext);
|
||||
Button btn = new Button(null, "Add item"d);
|
||||
itemedit.addChild(btn);
|
||||
addChild(itemedit);
|
||||
btn.click = delegate(Widget src)
|
||||
{
|
||||
stringList.add(itemtext.text);
|
||||
listAdapter.add((new TextWidget()).text(itemtext.text).styleId("LIST_ITEM"));
|
||||
return true;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,117 @@
|
|||
module widgets.misc;
|
||||
|
||||
import dlangui;
|
||||
|
||||
class TimerTest : HorizontalLayout {
|
||||
ulong timerId;
|
||||
TextWidget _counter;
|
||||
int _value;
|
||||
Button _start;
|
||||
Button _stop;
|
||||
override bool onTimer(ulong id) {
|
||||
_value++;
|
||||
_counter.text = to!dstring(_value);
|
||||
return true;
|
||||
}
|
||||
this() {
|
||||
addChild(new TextWidget(null, "Timer test."d));
|
||||
_counter = new TextWidget(null, "0"d);
|
||||
_counter.fontSize(32);
|
||||
_start = new Button(null, "Start timer"d);
|
||||
_stop = new Button(null, "Stop timer"d);
|
||||
_stop.enabled = false;
|
||||
_start.click = delegate(Widget src) {
|
||||
_start.enabled = false;
|
||||
_stop.enabled = true;
|
||||
timerId = setTimer(1000);
|
||||
return true;
|
||||
};
|
||||
_stop.click = delegate(Widget src) {
|
||||
_start.enabled = true;
|
||||
_stop.enabled = false;
|
||||
cancelTimer(timerId);
|
||||
return true;
|
||||
};
|
||||
addChild(_start);
|
||||
addChild(_stop);
|
||||
addChild(_counter);
|
||||
}
|
||||
}
|
||||
|
||||
class MiscExample : LinearLayout
|
||||
{
|
||||
this(string ID)
|
||||
{
|
||||
super(ID);
|
||||
addChild((new TextWidget()).textColor(0x00802000).text("Text widget 0"));
|
||||
addChild((new TextWidget()).textColor(0x40FF4000).text("Text widget"));
|
||||
addChild(new ProgressBarWidget().progress(300).animationInterval(50));
|
||||
addChild(new ProgressBarWidget().progress(-1).animationInterval(50));
|
||||
addChild((new Button("BTN1")).textResource("EXIT")); //.textColor(0x40FF4000)
|
||||
addChild(new TimerTest());
|
||||
|
||||
MenuItem editPopupItem = new MenuItem(null);
|
||||
editPopupItem.add(new Action(EditorActions.Copy, "MENU_EDIT_COPY"c, "edit-copy", KeyCode.KEY_C, KeyFlag.Control));
|
||||
editPopupItem.add(new Action(EditorActions.Paste, "MENU_EDIT_PASTE"c, "edit-paste", KeyCode.KEY_V, KeyFlag.Control));
|
||||
editPopupItem.add(new Action(EditorActions.Cut, "MENU_EDIT_CUT"c, "edit-cut", KeyCode.KEY_X, KeyFlag.Control));
|
||||
editPopupItem.add(new Action(EditorActions.Undo, "MENU_EDIT_UNDO"c, "edit-undo", KeyCode.KEY_Z, KeyFlag.Control));
|
||||
editPopupItem.add(new Action(EditorActions.Redo, "MENU_EDIT_REDO"c, "edit-redo", KeyCode.KEY_Y, KeyFlag.Control));
|
||||
editPopupItem.add(new Action(EditorActions.Indent, "MENU_EDIT_INDENT"c, "edit-indent", KeyCode.TAB, 0));
|
||||
editPopupItem.add(new Action(EditorActions.Unindent, "MENU_EDIT_UNINDENT"c, "edit-unindent", KeyCode.TAB, KeyFlag.Control));
|
||||
|
||||
LinearLayout hlayout = new HorizontalLayout();
|
||||
hlayout.layoutWidth(FILL_PARENT);
|
||||
//hlayout.addChild((new Button()).text("<<")); //.textColor(0x40FF4000)
|
||||
hlayout.addChild((new TextWidget()).text("Several").alignment(Align.Center));
|
||||
hlayout.addChild((new ImageWidget()).drawableId("btn_radio").padding(Rect(5,5,5,5)).alignment(Align.Center));
|
||||
hlayout.addChild((new TextWidget()).text("items").alignment(Align.Center));
|
||||
hlayout.addChild((new ImageWidget()).drawableId("btn_check").padding(Rect(5,5,5,5)).alignment(Align.Center));
|
||||
hlayout.addChild((new TextWidget()).text("in horizontal layout"));
|
||||
hlayout.addChild((new ImageWidget()).drawableId("exit").padding(Rect(5,5,5,5)).alignment(Align.Center));
|
||||
hlayout.addChild((new EditLine("editline", "Some text to edit"d)).popupMenu(editPopupItem).alignment(Align.Center).layoutWidth(FILL_PARENT));
|
||||
hlayout.addChild((new EditLine("passwd", "Password"d)).passwordChar('*').popupMenu(editPopupItem).alignment(Align.Center).layoutWidth(FILL_PARENT));
|
||||
//hlayout.addChild((new Button()).text(">>")); //.textColor(0x40FF4000)
|
||||
hlayout.backgroundColor = 0x8080C0;
|
||||
addChild(hlayout);
|
||||
|
||||
LinearLayout vlayoutgroup = new HorizontalLayout();
|
||||
LinearLayout vlayout = new VerticalLayout();
|
||||
vlayout.addChild((new TextWidget()).text("VLayout line 1").textColor(0x40FF4000)); //
|
||||
vlayout.addChild((new TextWidget()).text("VLayout line 2").textColor(0x40FF8000));
|
||||
vlayout.addChild((new TextWidget()).text("VLayout line 2").textColor(0x40008000));
|
||||
vlayout.addChild(new RadioButton("rb1", "Radio button 1"d));
|
||||
vlayout.addChild(new RadioButton("rb2", "Radio button 2"d));
|
||||
vlayout.addChild(new RadioButton("rb3", "Radio button 3"d));
|
||||
vlayout.layoutWidth(FILL_PARENT);
|
||||
vlayoutgroup.addChild(vlayout);
|
||||
vlayoutgroup.layoutWidth(FILL_PARENT);
|
||||
ScrollBar vsb = new ScrollBar("vscroll", Orientation.Vertical);
|
||||
vlayoutgroup.addChild(vsb);
|
||||
addChild(vlayoutgroup);
|
||||
|
||||
ScrollBar sb = new ScrollBar("hscroll", Orientation.Horizontal);
|
||||
addChild(sb.layoutHeight(WRAP_CONTENT).layoutWidth(FILL_PARENT));
|
||||
|
||||
addChild((new CheckBox("BTN2", "Some checkbox"d)));
|
||||
addChild((new TextWidget()).textColor(0x40FF4000).text("Text widget"));
|
||||
addChild((new ImageWidget()).drawableId("exit").padding(Rect(5,5,5,5)));
|
||||
addChild((new TextWidget()).textColor(0xFF4000).text("Text widget2").padding(Rect(5,5,5,5)).margins(Rect(5,5,5,5)).backgroundColor(0xA0A0A0));
|
||||
addChild((new RadioButton("BTN3", "Some radio button"d)));
|
||||
addChild((new TextWidget(null, "Text widget3 with very long text"d)).textColor(0x004000));
|
||||
addChild(new VSpacer()); // vertical spacer to fill extra space
|
||||
|
||||
childById("BTN1").click = delegate (Widget w) {
|
||||
Log.d("onClick ", w.id);
|
||||
//w.backgroundImageId = null;
|
||||
//w.backgroundColor = 0xFF00FF;
|
||||
w.textColor = 0xFF00FF;
|
||||
w.styleId = STYLE_BUTTON_NOMARGINS;
|
||||
return true;
|
||||
};
|
||||
childById("BTN2").click = delegate (Widget w) { Log.d("onClick ", w.id); return true; };
|
||||
childById("BTN3").click = delegate (Widget w) { Log.d("onClick ", w.id); return true; };
|
||||
|
||||
layoutHeight(FILL_PARENT).layoutWidth(FILL_PARENT);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -1,7 +1,11 @@
|
|||
module widgets;
|
||||
|
||||
public import widgets.animation;
|
||||
public import widgets.buttons;
|
||||
public import widgets.canvas;
|
||||
public import widgets.charts;
|
||||
public import widgets.controls;
|
||||
public import widgets.icons;
|
||||
public import widgets.longlists;
|
||||
public import widgets.misc;
|
||||
public import widgets.opengl;
|
||||
|
|
|
|||
Loading…
Reference in New Issue