jhilmer@142: /* emacs: -*- Mode: C; c-style: "bsd"; c-basic-offset: 4; c-recognize-knr-p: nil; -*- */ insilmaril@0: #ifndef TEXTEDITOR_H insilmaril@0: #define TEXTEDITOR_H insilmaril@0: insilmaril@0: #include insilmaril@0: #include insilmaril@0: #include insilmaril@0: #include insilmaril@0: #include insilmaril@0: insilmaril@0: insilmaril@0: enum EditorState {inactiveEditor,emptyEditor,filledEditor}; insilmaril@0: jhilmer@142: class MyTextEdit; jhilmer@142: insilmaril@0: class TextEditor : public QMainWindow { insilmaril@0: Q_OBJECT insilmaril@0: public: insilmaril@0: TextEditor(); insilmaril@0: ~TextEditor(); insilmaril@0: insilmaril@0: bool isEmpty(); insilmaril@0: void setShowWithMain (bool); insilmaril@0: bool showWithMain (); insilmaril@0: void setFontHint(const QString&); insilmaril@0: QString getFontHint(); insilmaril@0: QString getFontHintDefault(); insilmaril@0: void setFilename (const QString&); insilmaril@0: QString getFilename (); insilmaril@106: void setFilenameHint (const QString&); insilmaril@106: QString getFilenameHint (); insilmaril@0: bool findText(const QString &, const bool &); // find Text insilmaril@0: insilmaril@0: protected: insilmaril@0: void setupFileActions(); insilmaril@0: void setupEditActions(); insilmaril@0: void setupFormatActions(); insilmaril@0: void setupSettingsActions(); insilmaril@0: void closeEvent( QCloseEvent* ); insilmaril@0: insilmaril@0: insilmaril@0: public: insilmaril@0: QString getText(); insilmaril@0: insilmaril@0: public slots: insilmaril@0: void editorChanged(); // received when text() changed insilmaril@0: void setText(QString); // set Text (by MapEditor) insilmaril@0: void setInactive(); // Nothing can be entered insilmaril@0: void editCopyAll(); insilmaril@0: insilmaril@0: signals: insilmaril@0: void textHasChanged(); insilmaril@0: void fontFamilyHasChanged(); insilmaril@0: void fontSizeHasChanged(); insilmaril@0: insilmaril@0: private slots: insilmaril@0: void textLoad(); insilmaril@0: void textSaveAs(); insilmaril@0: void textSave(); insilmaril@0: void textConvertPar(); insilmaril@0: void textJoinLines(); insilmaril@0: void textExportAsASCII(); insilmaril@0: void textPrint(); insilmaril@0: void textEditUndo(); insilmaril@0: void toggleFonthint(); insilmaril@0: void setFixedFont(); insilmaril@0: void setVarFont(); insilmaril@0: void textBold(); insilmaril@0: void textUnderline(); insilmaril@0: void textItalic(); insilmaril@0: void textFamily( const QString &f ); insilmaril@0: void textSize( const QString &p ); insilmaril@0: void textColor(); insilmaril@0: void textAlign(QAction*); jhilmer@142: void textVAlign(); insilmaril@0: void fontChanged( const QFont &f ); insilmaril@0: void colorChanged( const QColor &c ); insilmaril@0: void alignmentChanged( int a ); jhilmer@142: void verticalAlignmentChanged(int a); insilmaril@0: void enableActions(); insilmaril@0: void disableActions(); insilmaril@0: insilmaril@0: private: insilmaril@0: QPrinter *printer; jhilmer@142: MyTextEdit *e; insilmaril@0: QPoint lastPos; // save last position of window insilmaril@0: QString filename; insilmaril@106: QString filenameHint; insilmaril@0: insilmaril@0: QBrush emptyPaper; // setting the background color insilmaril@0: QBrush filledPaper; // depending on the state insilmaril@0: QBrush inactivePaper; // depending on the state insilmaril@0: EditorState state; insilmaril@0: bool showwithmain; // same visibility as mainwindow? insilmaril@0: insilmaril@0: QFont varFont; insilmaril@0: QFont fixedFont; insilmaril@0: QComboBox insilmaril@0: *comboFont, insilmaril@0: *comboSize; insilmaril@0: insilmaril@0: QAction *actionFileLoad, insilmaril@0: *actionFileSave, insilmaril@0: *actionFileSaveAs, insilmaril@0: *actionFilePrint, insilmaril@0: *actionEditUndo, insilmaril@0: *actionEditRedo, insilmaril@0: *actionEditCopy, insilmaril@0: *actionEditCut, insilmaril@0: *actionEditPaste, insilmaril@0: *actionEditDeleteAll, insilmaril@0: *actionEditConvertPar, insilmaril@0: *actionEditJoinLines, insilmaril@0: *actionFormatUseFixedFont, insilmaril@0: *actionSettingsVarFont, insilmaril@0: *actionSettingsFixedFont, insilmaril@0: *actionSettingsFonthintDefault, insilmaril@0: *actionTextBold, insilmaril@0: *actionTextUnderline, insilmaril@0: *actionTextItalic, insilmaril@0: *actionTextColor, insilmaril@0: *actionAlignLeft, insilmaril@0: *actionAlignCenter, insilmaril@0: *actionAlignRight, jhilmer@142: *actionAlignJustify, jhilmer@142: *actionAlignSubScript, jhilmer@142: *actionAlignSuperScript; jhilmer@142: }; jhilmer@142: jhilmer@142: /* Wraps currentVerticalAlignmentChanged(VerticalAlignment) jhilmer@142: * to currentVerticalAlignmentChanged(int) jhilmer@142: * this way the signal can be used without use of the internal jhilmer@142: * VerticalAlignment enum of QTextEdit jhilmer@142: * If VerticalAlignment has been a global like the normal alignment there jhilmer@142: * have been no problems! jhilmer@142: */ jhilmer@142: jhilmer@142: class MyTextEdit : public QTextEdit jhilmer@142: { jhilmer@142: Q_OBJECT; jhilmer@142: public: jhilmer@142: MyTextEdit(QWidget *parent, const char *name) : QTextEdit(parent, name) { jhilmer@142: connect(this, jhilmer@142: SIGNAL(currentVerticalAlignmentChanged(VerticalAlignment)), jhilmer@142: this, jhilmer@142: SLOT(verticalAlignmentChanged(VerticalAlignment))); jhilmer@142: } jhilmer@142: int verticalAlignment() const { return m_verticalAlignment; } jhilmer@142: signals: jhilmer@142: void currentVerticalAlignmentChanged(int a); jhilmer@142: public slots: jhilmer@142: void verticalAlignmentChanged(VerticalAlignment a) { jhilmer@142: m_verticalAlignment = a; jhilmer@142: emit currentVerticalAlignmentChanged((int)a); jhilmer@142: } jhilmer@142: private: jhilmer@142: int m_verticalAlignment; insilmaril@0: }; insilmaril@0: insilmaril@0: #endif