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