1 module examplewidgets.tabdialogs;
2 
3 import qt.config;
4 import qt.core.coreevent;
5 import qt.core.string;
6 import qt.helpers;
7 import qt.widgets.errormessage;
8 import qt.widgets.ui;
9 import qt.widgets.widget;
10 import core.stdcpp.new_;
11 
12 class TabDialogs : QWidget
13 {
14     mixin(Q_OBJECT_D);
15 
16 public:
17     /+ explicit +/this(QWidget parent = null)
18     {
19         import core.stdcpp.new_;
20         import qt.widgets.spinbox;
21         super(parent);
22         this.ui = cpp_new!(typeof(*ui));
23 
24         ui.setupUi(this);
25 
26         errorMessage = cpp_new!QErrorMessage(this);
27 
28         connect(ui.spinBoxRed.signal!("valueChanged", int), this.slot!"updateColor");
29         connect(ui.spinBoxGreen.signal!("valueChanged", int), this.slot!"updateColor");
30         connect(ui.spinBoxBlue.signal!("valueChanged", int), this.slot!"updateColor");
31         updateColor();
32     }
33     ~this()
34     {
35         import core.stdcpp.new_;
36 
37         cpp_delete(ui);
38     }
39 
40 private /+ slots +/:
41     @QSlot final void on_pushButtonShowMessageBox_clicked()
42     {
43         import qt.widgets.messagebox;
44 
45         QMessageBox msgBox = cpp_new!QMessageBox;
46         msgBox.setIcon(cast(/+ QMessageBox::Icon +/QMessageBox.Icon)ui.comboBoxIcon.currentIndex());
47         msgBox.setText(ui.plainTextEditText.toPlainText());
48         msgBox.setDetailedText(ui.plainTextEditDetailed.toPlainText());
49         QMessageBox.StandardButtons buttons;
50         if(ui.checkBoxOK.isChecked())
51             buttons |= QMessageBox.StandardButton.Ok;
52         if(ui.checkBoxCancel.isChecked())
53             buttons |= QMessageBox.StandardButton.Cancel;
54         if(ui.checkBoxYes.isChecked())
55             buttons |= QMessageBox.StandardButton.Yes;
56         if(ui.checkBoxNo.isChecked())
57             buttons |= QMessageBox.StandardButton.No;
58         msgBox.setStandardButtons(buttons);
59         int ret = msgBox.exec();
60         const(char)* buttonName;
61         switch(ret)
62         {
63         case QMessageBox.StandardButton.Ok:
64             buttonName = "OK";
65             break;
66         case QMessageBox.StandardButton.Cancel:
67             buttonName = "Cancel";
68             break;
69         case QMessageBox.StandardButton.Yes:
70             buttonName = "Yes";
71             break;
72         case QMessageBox.StandardButton.No:
73             buttonName = "No";
74             break;
75         default:
76             buttonName = "Unknown";
77         }
78         ui.labelResult.setText(QString("Clicked: ") ~ buttonName);
79         cpp_delete(msgBox);
80     }
81 
82     @QSlot final void on_pushButtonShowColorDialog_clicked()
83     {
84         import qt.gui.color;
85         import qt.widgets.colordialog;
86 
87         QColor color = QColor.fromRgb(ui.spinBoxRed.value(), ui.spinBoxGreen.value(), ui.spinBoxBlue.value());
88         color = QColorDialog.getColor(color, this, globalInitVar!QString);
89         ui.spinBoxRed.setValue(color.red());
90         ui.spinBoxGreen.setValue(color.green());
91         ui.spinBoxBlue.setValue(color.blue());
92     }
93 
94     @QSlot final void updateColor()
95     {
96         import qt.gui.color;
97         import qt.gui.palette;
98 
99         QColor color = QColor.fromRgb(ui.spinBoxRed.value(), ui.spinBoxGreen.value(), ui.spinBoxBlue.value());
100         QPalette palette = QPalette(color);
101         palette.setColor(QPalette.ColorRole.Window, color);
102         ui.widgetColor.setPalette(palette);
103         ui.widgetColor.update();
104     }
105 
106     @QSlot final void on_pushButtonShowError_clicked()
107     {
108         errorMessage.showMessage(ui.plainTextEditErrorMessage.toPlainText());
109     }
110 
111     @QSlot final void on_pushButtonOpenFile_clicked()
112     {
113         import qt.widgets.filedialog;
114 
115         QString path = ui.lineEditPath.text();
116         path = QFileDialog.getOpenFileName(this, globalInitVar!QString, path);
117         ui.lineEditPath.setText(path);
118     }
119 
120     @QSlot final void on_pushButtonSaveFile_clicked()
121     {
122         import qt.widgets.filedialog;
123 
124         QString path = ui.lineEditPath.text();
125         path = QFileDialog.getSaveFileName(this, globalInitVar!QString, path);
126         ui.lineEditPath.setText(path);
127     }
128 
129     @QSlot final void on_pushButtonSelectDirectory_clicked()
130     {
131         import qt.widgets.filedialog;
132 
133         QString path = ui.lineEditPath.text();
134         path = QFileDialog.getExistingDirectory(this, globalInitVar!QString, path);
135         ui.lineEditPath.setText(path);
136     }
137 
138 protected:
139     override extern(C++) void changeEvent(QEvent event)
140     {
141         if(event.type() == QEvent.Type.LanguageChange)
142             ui.retranslateUi(this);
143         QWidget.changeEvent(event);
144     }
145 
146 private:
147     UIStruct!"tabdialogs.ui"* ui;
148     QErrorMessage errorMessage;
149 }
150