summaryrefslogtreecommitdiffstats
path: root/scribus/storyeditor.h
diff options
context:
space:
mode:
authorcraig <craig@11d20701-8431-0410-a711-e3c959e3b870>2012-01-01 11:40:09 +0000
committercraig <craig@11d20701-8431-0410-a711-e3c959e3b870>2012-01-01 11:40:09 +0000
commit7ed83b6c6666eb8b6b104c211ae7e52907350372 (patch)
tree4430b556abac0ad660a0aacf1887d77f85d8be02 /scribus/storyeditor.h
downloadscribus-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.h547
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
+
+