1 module widgets.misc;
2
3 import dlangui;
4
5 class TimerTest : HorizontalLayout {
6 ulong timerId;
7 TextWidget _counter;
8 int _value;
9 Button _start;
10 Button _stop;
11 override bool onTimer(ulong id) {
12 _value++;
13 _counter.text = to!dstring(_value);
14 return true;
15 }
16 this() {
17 addChild(new TextWidget(null, "Timer test."d));
18 _counter = new TextWidget(null, "0"d);
19 _counter.fontSize(32);
20 _start = new Button(null, "Start timer"d);
21 _stop = new Button(null, "Stop timer"d);
22 _stop.enabled = false;
23 _start.click = delegate(Widget src) {
24 _start.enabled = false;
25 _stop.enabled = true;
26 timerId = setTimer(1000);
27 return true;
28 };
29 _stop.click = delegate(Widget src) {
30 _start.enabled = true;
31 _stop.enabled = false;
32 cancelTimer(timerId);
33 return true;
34 };
35 addChild(_start);
36 addChild(_stop);
37 addChild(_counter);
38 }
39 }
40
41 class MiscExample : LinearLayout
42 {
43 this(string ID)
44 {
45 super(ID);
46 addChild((new TextWidget()).textColor(0x00802000).text("Text widget 0"));
47 addChild((new TextWidget()).textColor(0x40FF4000).text("Text widget"));
48 addChild(new ProgressBarWidget().progress(300).animationInterval(50));
49 addChild(new ProgressBarWidget().progress(-1).animationInterval(50));
50 addChild((new Button("BTN1")).textResource("EXIT")); //.textColor(0x40FF4000)
51 addChild(new TimerTest());
52
53 MenuItem editPopupItem = new MenuItem(null);
54 editPopupItem.add(new Action(EditorActions.Copy, "MENU_EDIT_COPY"c, "edit-copy", KeyCode.KEY_C, KeyFlag.Control));
55 editPopupItem.add(new Action(EditorActions.Paste, "MENU_EDIT_PASTE"c, "edit-paste", KeyCode.KEY_V, KeyFlag.Control));
56 editPopupItem.add(new Action(EditorActions.Cut, "MENU_EDIT_CUT"c, "edit-cut", KeyCode.KEY_X, KeyFlag.Control));
57 editPopupItem.add(new Action(EditorActions.Undo, "MENU_EDIT_UNDO"c, "edit-undo", KeyCode.KEY_Z, KeyFlag.Control));
58 editPopupItem.add(new Action(EditorActions.Redo, "MENU_EDIT_REDO"c, "edit-redo", KeyCode.KEY_Y, KeyFlag.Control));
59 editPopupItem.add(new Action(EditorActions.Indent, "MENU_EDIT_INDENT"c, "edit-indent", KeyCode.TAB, 0));
60 editPopupItem.add(new Action(EditorActions.Unindent, "MENU_EDIT_UNINDENT"c, "edit-unindent", KeyCode.TAB, KeyFlag.Control));
61
62 LinearLayout hlayout = new HorizontalLayout();
63 hlayout.layoutWidth(FILL_PARENT);
64 //hlayout.addChild((new Button()).text("<<")); //.textColor(0x40FF4000)
65 hlayout.addChild((new TextWidget()).text("Several").alignment(Align.Center));
66 hlayout.addChild((new ImageWidget()).drawableId("btn_radio").padding(Rect(5,5,5,5)).alignment(Align.Center));
67 hlayout.addChild((new TextWidget()).text("items").alignment(Align.Center));
68 hlayout.addChild((new ImageWidget()).drawableId("btn_check").padding(Rect(5,5,5,5)).alignment(Align.Center));
69 hlayout.addChild((new TextWidget()).text("in horizontal layout"));
70 hlayout.addChild((new ImageWidget()).drawableId("exit").padding(Rect(5,5,5,5)).alignment(Align.Center));
71 hlayout.addChild((new EditLine("editline", "Some text to edit"d)).popupMenu(editPopupItem).alignment(Align.Center).layoutWidth(FILL_PARENT));
72 hlayout.addChild((new EditLine("passwd", "Password"d)).passwordChar('*').popupMenu(editPopupItem).alignment(Align.Center).layoutWidth(FILL_PARENT));
73 //hlayout.addChild((new Button()).text(">>")); //.textColor(0x40FF4000)
74 hlayout.backgroundColor = 0x8080C0;
75 addChild(hlayout);
76
77 LinearLayout vlayoutgroup = new HorizontalLayout();
78 LinearLayout vlayout = new VerticalLayout();
79 vlayout.addChild((new TextWidget()).text("VLayout line 1").textColor(0x40FF4000)); //
80 vlayout.addChild((new TextWidget()).text("VLayout line 2").textColor(0x40FF8000));
81 vlayout.addChild((new TextWidget()).text("VLayout line 2").textColor(0x40008000));
82 vlayout.addChild(new RadioButton("rb1", "Radio button 1"d));
83 vlayout.addChild(new RadioButton("rb2", "Radio button 2"d));
84 vlayout.addChild(new RadioButton("rb3", "Radio button 3"d));
85 vlayout.layoutWidth(FILL_PARENT);
86 vlayoutgroup.addChild(vlayout);
87 vlayoutgroup.layoutWidth(FILL_PARENT);
88 ScrollBar vsb = new ScrollBar("vscroll", Orientation.Vertical);
89 vlayoutgroup.addChild(vsb);
90 addChild(vlayoutgroup);
91
92 ScrollBar sb = new ScrollBar("hscroll", Orientation.Horizontal);
93 addChild(sb.layoutHeight(WRAP_CONTENT).layoutWidth(FILL_PARENT));
94
95 addChild((new CheckBox("BTN2", "Some checkbox"d)));
96 addChild((new TextWidget()).textColor(0x40FF4000).text("Text widget"));
97 addChild((new ImageWidget()).drawableId("exit").padding(Rect(5,5,5,5)));
98 addChild((new TextWidget()).textColor(0xFF4000).text("Text widget2").padding(Rect(5,5,5,5)).margins(Rect(5,5,5,5)).backgroundColor(0xA0A0A0));
99 addChild((new RadioButton("BTN3", "Some radio button"d)));
100 addChild((new TextWidget(null, "Text widget3 with very long text"d)).textColor(0x004000));
101 addChild(new VSpacer()); // vertical spacer to fill extra space
102
103 childById("BTN1").click = delegate (Widget w) {
104 Log.d("onClick ", w.id);
105 //w.backgroundImageId = null;
106 //w.backgroundColor = 0xFF00FF;
107 w.textColor = 0xFF00FF;
108 w.styleId = STYLE_BUTTON_NOMARGINS;
109 return true;
110 };
111 childById("BTN2").click = delegate (Widget w) { Log.d("onClick ", w.id); return true; };
112 childById("BTN3").click = delegate (Widget w) { Log.d("onClick ", w.id); return true; };
113
114 layoutHeight(FILL_PARENT).layoutWidth(FILL_PARENT);
115
116 }
117 }