1 module examplewidgets.tabtext; 2 3 import qt.config; 4 import qt.core.coreevent; 5 import qt.helpers; 6 import qt.widgets.ui; 7 import qt.widgets.widget; 8 9 class TabText : QWidget 10 { 11 mixin(Q_OBJECT_D); 12 13 public: 14 /+ explicit +/this(QWidget parent = null) 15 { 16 import core.stdcpp.new_; 17 super(parent); 18 this.ui = cpp_new!(typeof(*ui)); 19 20 ui.setupUi(this); 21 22 connect(ui.textEdit.signal!"undoAvailable", ui.pushButtonUndo.slot!"setEnabled"); 23 connect(ui.textEdit.signal!"redoAvailable", ui.pushButtonRedo.slot!"setEnabled"); 24 connect(ui.pushButtonUndo.signal!"clicked", ui.textEdit.slot!"undo"); 25 connect(ui.pushButtonRedo.signal!"clicked", ui.textEdit.slot!"redo"); 26 27 connect(ui.pushButtonBold.signal!"clicked", this.slot!"changeFormat"); 28 connect(ui.pushButtonItalic.signal!"clicked", this.slot!"changeFormat"); 29 30 on_textEdit_textChanged(); 31 } 32 ~this() 33 { 34 import core.stdcpp.new_; 35 36 cpp_delete(ui); 37 } 38 39 private /+ slots +/: 40 @QSlot final void on_textEdit_textChanged() 41 { 42 ui.textBrowser.setHtml(ui.textEdit.document().toHtml()); 43 } 44 45 @QSlot final void on_textEdit_cursorPositionChanged() 46 { 47 import qt.gui.font; 48 import qt.gui.textcursor; 49 50 QTextCursor cursor = ui.textEdit.textCursor(); 51 ui.pushButtonList.setChecked(cursor.currentList() !is null); 52 ui.pushButtonBold.setChecked(cursor.charFormat().fontWeight() == QFont.Weight.Bold); 53 ui.pushButtonItalic.setChecked(cursor.charFormat().fontItalic()); 54 } 55 56 @QSlot final void changeFormat() 57 { 58 import qt.gui.font; 59 import qt.gui.textcursor; 60 import qt.gui.textformat; 61 62 QTextCharFormat format; 63 format.setFontWeight(ui.pushButtonBold.isChecked() ? QFont.Weight.Bold : QFont.Weight.Normal); 64 format.setFontItalic(ui.pushButtonItalic.isChecked()); 65 QTextCursor cursor = ui.textEdit.textCursor(); 66 cursor.mergeCharFormat(format); 67 ui.textEdit.mergeCurrentCharFormat(format); 68 ui.textEdit.setFocus(); 69 } 70 71 @QSlot final void on_pushButtonList_clicked() 72 { 73 import qt.gui.textcursor; 74 import qt.gui.textformat; 75 import qt.gui.textlist; 76 77 QTextCursor cursor = ui.textEdit.textCursor(); 78 if(ui.pushButtonList.isChecked()) 79 { 80 QTextListFormat listFmt; 81 listFmt.setStyle(QTextListFormat.Style.ListDecimal); 82 //cursor.createList(listFmt);TODO: only the following works 83 cursor.createList(QTextListFormat.Style.ListDecimal); 84 } 85 else 86 { 87 QTextList list = cursor.currentList(); 88 if(list) 89 { 90 list.remove(cursor.block()); 91 } 92 93 QTextBlockFormat blockFmt = cursor.blockFormat(); 94 blockFmt.setIndent(0); 95 cursor.setBlockFormat(blockFmt); 96 } 97 } 98 99 protected: 100 override extern(C++) void changeEvent(QEvent event) 101 { 102 if(event.type() == QEvent.Type.LanguageChange) 103 ui.retranslateUi(this); 104 QWidget.changeEvent(event); 105 } 106 107 private: 108 UIStruct!"tabtext.ui"* ui; 109 } 110