diff options
| author | craig <craig@11d20701-8431-0410-a711-e3c959e3b870> | 2012-01-01 11:40:09 +0000 |
|---|---|---|
| committer | craig <craig@11d20701-8431-0410-a711-e3c959e3b870> | 2012-01-01 11:40:09 +0000 |
| commit | 7ed83b6c6666eb8b6b104c211ae7e52907350372 (patch) | |
| tree | 4430b556abac0ad660a0aacf1887d77f85d8be02 /scribus/storyeditor.h | |
| download | scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.tar.gz scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.tar.xz scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.zip | |
Branch 1.3.5 tree to 1.4.x tree, goodbye 1.3.x
git-svn-id: svn://scribus.net/branches/Version14x/Scribus@17163 11d20701-8431-0410-a711-e3c959e3b870
Diffstat (limited to 'scribus/storyeditor.h')
| -rw-r--r-- | scribus/storyeditor.h | 547 |
1 files changed, 547 insertions, 0 deletions
diff --git a/scribus/storyeditor.h b/scribus/storyeditor.h new file mode 100644 index 0000000..1519a1a --- /dev/null +++ b/scribus/storyeditor.h @@ -0,0 +1,547 @@ +/* +For general Scribus (>=1.3.2) copyright and licensing information please refer +to the COPYING file provided with the program. Following this notice may exist +a copyright and/or license notice that predates the release of Scribus 1.3.2 +for which a new license (GPL+exception) is in place. +*/ +/*************************************************************************** + storyeditor.h - description + ------------------- + begin : Tue Nov 11 2003 + copyright : (C) 2003 by Franz Schmid + email : Franz.Schmid@altmuehlnet.de + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#ifndef STORYEDITOR_H +#define STORYEDITOR_H + +#include <QTextEdit> +#include <QAction> +#include <QCheckBox> +#include <QCloseEvent> +#include <QEvent> +#include <QFocusEvent> +#include <QHideEvent> +#include <QKeyEvent> +#include <QLabel> +#include <QLayout> +#include <QList> +#include <QMainWindow> +#include <QMap> +#include <QMenu> +#include <QMenuBar> +#include <QMouseEvent> +#include <QPaintEvent> +#include <QPixmap> +#include <QPointer> +#include <QShowEvent> +#include <QSpinBox> +#include <QSplitter> +#include <QStatusBar> +#include <QStringList> +#include <QToolBar> +#include <QToolButton> +#include <QVariant> +#include <QWidgetAction> + +class QEvent; +class QGridLayout; +class QHBoxLayout; +class QFrame; + +#include "scribusapi.h" +#include "text/storytext.h" + +class PageItem; +class MenuManager; +class ScrSpinBox; +class ParaStyleComboBox; +class StyleSelect; +class AlignSelect; +class FontCombo; +class ScrAction; +class ShadeButton; +class PrefsManager; +class PrefsContext; +class StoryEditor; +class ColorCombo; +class CharSelect; + +class SCRIBUS_API SEditor : public QTextEdit +{ + Q_OBJECT + +public: + SEditor (QWidget* parent, ScribusDoc *docc, StoryEditor* parentSE); + ~SEditor() {}; + void setCurrentDocument(ScribusDoc *docc); + void setAlign(int align); + void saveItemText(PageItem *currItem); + void loadItemText(PageItem *currItem); + void loadText(QString tx, PageItem *currItem); + void updateAll(); + void updateFromChars(int p); + void updateSel(const CharStyle& style); + void updateSel(const ParagraphStyle& style); + void deleteSel(); + void setEffects(int effects); + void setColor(bool marker); + + void insertChars(const QString& text); + void insertChars(const QString& styledText, const QString& editText); + + StoryText StyledText; + QList<PageItem*> FrameItems; + ScribusDoc* doc; + bool unicodeTextEditMode; + bool wasMod; + bool ready; + int unicodeInputCount; + StyleFlag CurrentEffects; + QString currentParaStyle; + int CurrAlign; + double CurrFontSize; + double CurrTextFillSh; + double CurrTextStrokeSh; + double CurrTextScale; + double CurrTextScaleV; + double CurrTextBase; + double CurrTextShadowX; + double CurrTextShadowY; + double CurrTextOutline; + double CurrTextUnderPos; + double CurrTextUnderWidth; + double CurrTextStrikePos; + double CurrTextStrikeWidth; + double CurrTextKern; + QString CurrTextStroke; + QString CurrTextFill; + QString prevFont; + QString CurrFont; + QString unicodeInputString; + bool StoredSel; + int SelParaStart; + int SelParaEnd; + int SelCharStart; + int SelCharEnd; + +protected: + + void insertCharsInternal(const QString& t); + void insertCharsInternal(const QString& t, int position); + + void insertStyledText(const StoryText& styledText); + void insertStyledText(const StoryText& styledText, int position); + + void insertUpdate(int position, int len); + + void setAlign(QTextCursor& tCursor, int style); + void setEffects(QTextCursor& tCursor, int effects); + + int blockContentsChangeHook; + void keyPressEvent(QKeyEvent *k); + void inputMethodEvent(QInputMethodEvent *event); + void focusOutEvent(QFocusEvent *e); + void focusInEvent(QFocusEvent *e); + void scrollContentsBy(int dx, int dy); + virtual bool canInsertFromMimeData( const QMimeData * source ) const; + virtual QMimeData * createMimeDataFromSelection () const; + virtual void insertFromMimeData ( const QMimeData * source ); +// Q3PopupMenu* createPopupMenu(const QPoint & pos); + StoryEditor* parentStoryEditor; + +protected slots: + void handleContentsChange(int position, int charsRemoved, int charsAdded); + +public slots: + void cut(); + void copy(); + void paste(); + void ClipChange(); + void SelClipChange(); + +signals: + void setProps(int, int); + void SideBarUp(bool); + void SideBarUpdate(); + void PasteAvail(); + void contentsMoving(int, int); +}; + +class SCRIBUS_API SideBar : public QLabel +{ + Q_OBJECT + +public: + SideBar(QWidget *pa); + ~SideBar() {}; + int offs; + int CurrentPar; + SEditor *editor; + QMenu *pmen; + QWidgetAction* paraStyleAct; + bool noUpdt; + bool inRep; + +protected: + void paintEvent(QPaintEvent *e); + void mouseReleaseEvent(QMouseEvent *m); + +signals: + void ChangeStyle(int, const QString&); + //! signal raised when user ask for style manager + //void sigEditStyles(); + +public slots: + void setPStyle(const QString&); + void doMove(int x, int y); + void doRepaint(); + void setRepaint(bool r); + //! slot raising style manager + //void editStyles(); +}; + +class SCRIBUS_API SToolBColorF : public QToolBar +{ + Q_OBJECT + +public: + SToolBColorF(QMainWindow* parent, ScribusDoc *doc); + ~SToolBColorF() {}; + + virtual void changeEvent(QEvent *e); + + void setCurrentDocument(ScribusDoc *doc); + QLabel* FillIcon; + ColorCombo* TxFill; + ShadeButton *PM2; + QAction* pm2Action; + QAction* txFillAction; + QAction* fillIconAction; + +public slots: + void SetColor(int c); + void SetShade(double s); + void newShadeHandler(); + void languageChange(); + +signals: + void NewColor(int, int); +}; + +class SCRIBUS_API SToolBColorS : public QToolBar +{ + Q_OBJECT + +public: + SToolBColorS(QMainWindow* parent, ScribusDoc *doc); + ~SToolBColorS() {}; + + virtual void changeEvent(QEvent *e); + + void setCurrentDocument(ScribusDoc *doc); + QLabel* StrokeIcon; + ColorCombo* TxStroke; + ShadeButton *PM1; + QAction* strokeIconAction; + QAction* txStrokeAction; + QAction* pm1Action; + + +public slots: + void SetColor(int c); + void SetShade(double s); + void newShadeHandler(); + void languageChange(); + +signals: + void NewColor(int, int); +}; + +class SCRIBUS_API SToolBStyle : public QToolBar +{ + Q_OBJECT + +public: + SToolBStyle(QMainWindow* parent); + ~SToolBStyle() {}; + + virtual void changeEvent(QEvent *e); + + StyleSelect* SeStyle; + QLabel* trackingLabel; + ScrSpinBox* Extra; + QAction* seStyleAction; + QAction* trackingLabelAction; + QAction* extraAction; + +public slots: + void newStrikeHandler(); + void newUnderlineHandler(); + void newOutlineHandler(); + void newShadowHandler(); + void newKernHandler(); + void SetShadow(double x, double y); + void setStrike(double p, double w); + void setUnderline(double p, double w); + void setOutline(double o); + void SetStyle(int s); + void SetKern(double k); + void languageChange(); + +signals: + void NewKern(double); + void NewShadow(double, double); + void newOutline(double); + void newStrike(double, double); + void newUnderline(double, double); + void newStyle(int); +}; + +class SCRIBUS_API SToolBAlign : public QToolBar +{ + Q_OBJECT + +public: + SToolBAlign(QMainWindow* parent); + ~SToolBAlign() {}; + + virtual void changeEvent(QEvent *e); + + AlignSelect* GroupAlign; + ParaStyleComboBox *paraStyleCombo; + QAction* groupAlignAction; + QAction* paraStyleComboAction; + +public slots: + void SetAlign(int s); + void SetParaStyle(QString s); + void languageChange(); + +signals: + void newAlign(int); + void newParaStyle(const QString&); +}; + +class SCRIBUS_API SToolBFont : public QToolBar +{ + Q_OBJECT + +public: + SToolBFont(QMainWindow* parent); + ~SToolBFont() {}; + + virtual void changeEvent(QEvent *e); + + FontCombo* Fonts; + ScrSpinBox* ChScale; + ScrSpinBox* ChScaleV; + QAction* fontsAction; + QAction* chScaleAction; + QAction* chScaleVAction; + +public slots: + void SetFont(QString f); + void SetSize(double s); + void SetScale(double s); + void SetScaleV(double s); + void newSizeHandler(); + +signals: + void NewFont(const QString &); + void NewSize(double); + void newScale(double); + void newScaleV(double); + +private: + ScrSpinBox* Size; + QLabel* ScaleTxt; + QLabel* ScaleTxtV; + QAction* sizeAction; + QAction* scaleTxtAction; + QAction* scaleTxtVAction; + +private slots: + void languageChange(); +}; + +class SCRIBUS_API StoryEditor : public QMainWindow +{ + Q_OBJECT + friend class SEditor; + +public: + StoryEditor( QWidget* parent ); +// StoryEditor( QWidget* parent, ScribusDoc *docc, PageItem* ite ); + ~StoryEditor(); + + virtual void changeEvent(QEvent *e); + + void setCurrentDocumentAndItem(ScribusDoc *doc=NULL, PageItem *item=NULL); + + ScribusDoc* currentDocument() const; + PageItem* currentItem() const; + SEditor* Editor; + bool activFromApp; + +public slots: + void newStyle(const QString&); + void newAlign(int st); + void newTxFill(int c, int s); + void newTxStroke(int c, int s); + void newTxFont(const QString &f); + void newTxSize(double s); + void newTxStyle(int s); + +signals: + void DocChanged(); + void EditSt(); + +private: + //int exec(); + void changeAlign(int align); + int result; + bool textDataChanged() const; + + /*! \brief Enables/disables the "smart" selection (#1203) - 10/16/2004 pv */ + bool smartSelection; + int smartSel; + + ScribusDoc* currDoc; + PageItem* currItem; + + bool textChanged; + bool firstSet; + + bool blockUpdate; + int CurrPara; + int CurrChar; + +protected slots: + void setBackPref(); + void setFontPref(); + void newTxScale(); + void newTxScaleV(); + void newTxKern(double s); + void newShadowOffs(double x, double y); + void newTxtOutline(double o); + void newTxtUnderline(double p, double w); + void newTxtStrike(double p, double w); + void updateProps(); + void updateProps(QTextCursor &cur); + void updateProps(int p, int ch); + + void changeStyleSB(int pa, const QString&); + void changeStyle(); + void updateStatus(); + void Do_leave(); + void Do_leave2(); + //! \brief Saves the document with editation continued. Signal called from menu. + void Do_saveDocument(); + bool Do_new(); + void slotFileRevert(); + + void Do_selectAll(); + void Do_copy(); + void Do_paste(); + void Do_cut(); + void Do_del(); + void Do_insSp(); + void Do_fontPrev(); + void CopyAvail(bool u); + void PasteAvail(); + void updateTextFrame(); + void SearchText(); + //void slotEditStyles(); + void modifiedText(); + void LoadTextFile(); + void SaveTextFile(); + void setSmart(bool); + void languageChange(); + + void specialActionKeyEvent(const QString& actionName, int unicodevalue); + /*! \brief Slot to insert special characters from charSelect widget. */ + void slot_insertSpecialChar(); + void slot_insertUserSpecialChar(QChar); + // 10/12/2004 - pv - #1203: wrong selection on double click + void doubleClick(int para, int pos); + +protected: + void initActions(); + void updateUnicodeActions(); + void buildMenus(); + void buildGUI(); + void connectSignals(); + void disconnectSignals(); + /*! \brief Loading the preferences (position). + It's in separate method due the 2 constructors. */ + void loadPrefs(); + /*! \brief Saving the preferences (position). */ + void savePrefs(); + + /*! \brief Special Characters dialog. + It uses a little bit ugly method to operate with. + It's a duplication of the main window's charPalette due + the lack of setParent() in qt3 and a ugly behaviour of + the reparent(). + charSelect is created as a copy of the charPalette. + \author Petr Vanek <petr@scribus.info> + */ + CharSelect *charSelect; + //! True when there were some glyphs inserted via charSelect + bool charSelectUsed; + void showEvent(QShowEvent *); + void hideEvent(QHideEvent *); + + void closeEvent(QCloseEvent *); + void keyPressEvent (QKeyEvent * e); + bool eventFilter( QObject* ob, QEvent* ev ); + + QHBoxLayout* StoryEd2Layout; + QGridLayout* ButtonGroup1Layout; + QGridLayout* ButtonGroup2Layout; + + PrefsManager* prefsManager; + PrefsContext* prefs; + + QMap<QString, QPointer<ScrAction> > seActions; + QStringList unicodeCharActionNames; + MenuManager* seMenuMgr; + QPixmap noIcon; + + QToolBar* FileTools; + SToolBFont* FontTools; + SToolBAlign* AlignTools; + SToolBColorF* FillTools; + SToolBColorS* StrokeTools; + SToolBStyle* StyleTools; + QSplitter* EdSplit; + SideBar* EditorBar; + QFrame* ButtonGroup1; + QFrame* ButtonGroup2; + QLabel* WordCT1; + QLabel* WordCT3; + QLabel* ParCT; + QLabel* ParC; + QLabel* WordCT; + QLabel* WordC; + QLabel* CharCT; + QLabel* CharC; + QLabel* WordCT2; + QLabel* WordC2; + QLabel* CharCT2; + QLabel* CharC2; +}; + +#endif + + |
