dfl/examples/buttons/source/buttons_example.d

157 lines
3.9 KiB
D

import dfl;
version(Have_dfl) // For DUB.
{
}
else
{
pragma(lib, "dfl.lib");
}
class MainForm : Form
{
private Button _okButton;
private Button _cancelButton;
private RadioButton _radioButton1;
private RadioButton _radioButton2;
private RadioButton _radioButton3;
private GroupBox _groupbox1;
private RadioButton _radioButton4;
private RadioButton _radioButton5;
private RadioButton _radioButton6;
private GroupBox _groupbox2;
private CheckBox _checkbox1;
private CheckBox _checkbox2;
private CheckBox _checkbox3;
private RadioButton getSelectedRadioButton(RadioButton[] arr)
{
foreach (elem; arr)
{
if (elem.checked)
{
return elem;
}
}
return null;
}
public this()
{
// Form setting
this.text = "Buttons example";
this.size = Size(400,300);
this.formBorderStyle = FormBorderStyle.FIXED_DIALOG;
this.maximizeBox = false;
// Default button
_okButton = new Button();
_okButton.location = Point(10,10);
_okButton.text = "Done";
_okButton.click ~= (Control c, EventArgs e)
{
string s;
RadioButton r1 = getSelectedRadioButton([_radioButton1, _radioButton2, _radioButton3]);
if (r1)
s ~= _groupbox1.text ~ " = " ~ r1.text ~ "\n";
RadioButton r2 = getSelectedRadioButton([_radioButton4, _radioButton5, _radioButton6]);
if (r2)
s ~= _groupbox2.text ~ " = " ~ r2.text ~ "\n";
s ~= _checkbox1.text ~ " = " ~ (_checkbox1.checked ? "CHECKED" : "") ~ "\n";
s ~= _checkbox2.text ~ " = " ~ (_checkbox2.checked ? "CHECKED" : "") ~ "\n";
s ~= _checkbox3.text ~ " = " ~ (_checkbox3.checked ? "CHECKED" : "") ~ "\n";
msgBox(s);
};
_okButton.parent = this;
// Cancel button
_cancelButton = new Button();
_cancelButton.location = Point(100,10);
_cancelButton.text = "Cancel";
_cancelButton.click ~= (Control c, EventArgs e)
{
msgBox("Close this application.");
Application.exit();
};
_cancelButton.parent = this;
this.acceptButton = _okButton; // pushed by ENTER
this.cancelButton = _cancelButton; // pushed by ESC
// First group
_groupbox1 = new GroupBox();
_groupbox1.location = Point(10, 60);
_groupbox1.size = Size(90, 150);
_groupbox1.text = "Color";
_groupbox1.parent = this;
// Default radio button in first group
_radioButton1 = new RadioButton();
_radioButton1.location = Point(10, 40+30*0);
_radioButton1.text = "Red";
_radioButton1.checked = true; // Default
_radioButton1.parent = _groupbox1;
_radioButton2 = new RadioButton();
_radioButton2.location = Point(10, 40+30*1);
_radioButton2.text = "Yellow";
_radioButton2.parent = _groupbox1;
_radioButton3 = new RadioButton();
_radioButton3.location = Point(10, 40+30*2);
_radioButton3.text = "Green";
_radioButton3.parent = _groupbox1;
// Second group
_groupbox2 = new GroupBox();
_groupbox2.location = Point(110, 60);
_groupbox2.size = Size(90, 150);
_groupbox2.text = "Fruits";
_groupbox2.parent = this;
// Default radio button in second group
_radioButton4 = new RadioButton();
_radioButton4.location = Point(10, 40+30*0);
_radioButton4.text = "Apple";
_radioButton4.checked = true; // Default
_radioButton4.parent = _groupbox2;
_radioButton5 = new RadioButton();
_radioButton5.location = Point(10, 40+30*1);
_radioButton5.text = "Banana";
_radioButton5.parent = _groupbox2;
_radioButton6 = new RadioButton();
_radioButton6.location = Point(10, 40+30*2);
_radioButton6.text = "Melon";
_radioButton6.parent = _groupbox2;
// CheckBox
_checkbox1 = new CheckBox();
_checkbox1.location = Point(250, 100);
_checkbox1.text = "Kyoto";
_checkbox1.parent = this;
_checkbox2 = new CheckBox();
_checkbox2.location = Point(250, 100+30*1);
_checkbox2.text = "Tokyo";
_checkbox2.parent = this;
_checkbox3 = new CheckBox();
_checkbox3.location = Point(250, 100+30*2);
_checkbox3.text = "Osaka";
_checkbox3.parent = this;
}
}
void main()
{
Application.run(new MainForm());
}