Author: jghali
Date: Sun Oct 14 13:08:04 2018
New Revision: 22733

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=22733
Log:
cmdtext.cpp refactoring and consequent scribus/scribusdoc cleanups

Modified:
    trunk/Scribus/scribus/plugins/fontpreview/fontpreviewplugin.cpp
    trunk/Scribus/scribus/plugins/scriptplugin/cmdtext.cpp
    trunk/Scribus/scribus/scribus.cpp
    trunk/Scribus/scribus/scribus.h
    trunk/Scribus/scribus/scribusdoc.cpp
    trunk/Scribus/scribus/scribusdoc.h
    trunk/Scribus/scribus/ui/propertiespalette_text.cpp
    trunk/Scribus/scribus/ui/search.h

Modified: trunk/Scribus/scribus/plugins/fontpreview/fontpreviewplugin.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22733&path=/trunk/Scribus/scribus/plugins/fontpreview/fontpreviewplugin.cpp
==============================================================================
--- trunk/Scribus/scribus/plugins/fontpreview/fontpreviewplugin.cpp     
(original)
+++ trunk/Scribus/scribus/plugins/fontpreview/fontpreviewplugin.cpp     Sun Oct 
14 13:08:04 2018
@@ -100,7 +100,7 @@
        if (dlg->exec() == QDialog::Accepted)
        {
                if  (target.isEmpty())
-                       doc->scMW()->SetNewFont(dlg->getCurrentFont());
+                       doc->itemSelection_SetFont(dlg->getCurrentFont());
                else
                        m_runResult = dlg->getCurrentFont();
        }

Modified: trunk/Scribus/scribus/plugins/scriptplugin/cmdtext.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22733&path=/trunk/Scribus/scribus/plugins/scriptplugin/cmdtext.cpp
==============================================================================
--- trunk/Scribus/scribus/plugins/scriptplugin/cmdtext.cpp      (original)
+++ trunk/Scribus/scribus/plugins/scriptplugin/cmdtext.cpp      Sun Oct 14 
13:08:04 2018
@@ -438,14 +438,16 @@
                PyErr_SetString(WrongFrameTypeError, QObject::tr("Cannot set 
text alignment on a non-text frame.","python error").toLocal8Bit().constData());
                return nullptr;
        }
-       int Apm = ScCore->primaryMainWindow()->doc->appMode;
-       ScCore->primaryMainWindow()->doc->m_Selection->clear();
-       ScCore->primaryMainWindow()->doc->m_Selection->addItem(item);
+       
+       ScribusDoc* doc = ScCore->primaryMainWindow()->doc;
+       int oldAppMode  = ScCore->primaryMainWindow()->doc->appMode;
+
+       Selection tmpSelection(nullptr, false);
+       tmpSelection.addItem(item);
        if (item->HasSel)
-               ScCore->primaryMainWindow()->doc->appMode = modeEdit;
-       ScCore->primaryMainWindow()->setNewAlignment(alignment);
-       ScCore->primaryMainWindow()->doc->appMode = Apm;
-       ScCore->primaryMainWindow()->view->Deselect();
+               doc->appMode = modeEdit;
+       doc->itemSelection_SetAlignment(alignment, &tmpSelection);
+       doc->appMode = oldAppMode;
 
        Py_RETURN_NONE;
 }
@@ -471,14 +473,16 @@
                PyErr_SetString(WrongFrameTypeError, QObject::tr("Cannot set 
text direction on a non-text frame.","python error").toLocal8Bit().constData());
                return nullptr;
        }
-       int Apm = ScCore->primaryMainWindow()->doc->appMode;
-       ScCore->primaryMainWindow()->doc->m_Selection->clear();
-       ScCore->primaryMainWindow()->doc->m_Selection->addItem(item);
+
+       ScribusDoc* doc = ScCore->primaryMainWindow()->doc;
+       int oldAppMode = ScCore->primaryMainWindow()->doc->appMode;
+
+       Selection tmpSelection(nullptr, false);
+       tmpSelection.addItem(item);
        if (item->HasSel)
-               ScCore->primaryMainWindow()->doc->appMode = modeEdit;
-       ScCore->primaryMainWindow()->setNewDirection(direction);
-       ScCore->primaryMainWindow()->doc->appMode = Apm;
-       ScCore->primaryMainWindow()->view->Deselect();
+               doc->appMode = modeEdit;
+       doc->itemSelection_SetDirection(direction, &tmpSelection);
+       doc->appMode = oldAppMode;
 
        Py_RETURN_NONE;
 }
@@ -505,14 +509,16 @@
                PyErr_SetString(WrongFrameTypeError, QObject::tr("Cannot set 
font size on a non-text frame.","python error").toLocal8Bit().constData());
                return nullptr;
        }
-       int Apm = ScCore->primaryMainWindow()->doc->appMode;
-       ScCore->primaryMainWindow()->doc->m_Selection->clear();
-       ScCore->primaryMainWindow()->doc->m_Selection->addItem(item);
+
+       ScribusDoc* doc = ScCore->primaryMainWindow()->doc;
+       int oldAppMode = ScCore->primaryMainWindow()->doc->appMode;
+
+       Selection tmpSelection(nullptr, false);
+       tmpSelection.addItem(item);
        if (item->HasSel)
-               ScCore->primaryMainWindow()->doc->appMode = modeEdit;
-       ScCore->primaryMainWindow()->doc->itemSelection_SetFontSize(qRound(size 
* 10.0));
-       ScCore->primaryMainWindow()->doc->appMode = Apm;
-       ScCore->primaryMainWindow()->view->Deselect();
+               doc->appMode = modeEdit;
+       doc->itemSelection_SetFontSize(qRound(size * 10.0), &tmpSelection);
+       doc->appMode = oldAppMode;
 
        Py_RETURN_NONE;
 }
@@ -535,14 +541,16 @@
                PyErr_SetString(WrongFrameTypeError, QObject::tr("Cannot set 
font feature on a non-text frame.","python error").toLocal8Bit().constData());
                return nullptr;
        }
-       int Apm = ScCore->primaryMainWindow()->doc->appMode;
-       ScCore->primaryMainWindow()->doc->m_Selection->clear();
-       ScCore->primaryMainWindow()->doc->m_Selection->addItem(item);
+
+       ScribusDoc* doc = ScCore->primaryMainWindow()->doc;
+       int oldAppMode = ScCore->primaryMainWindow()->doc->appMode;
+
+       Selection tmpSelection(nullptr, false);
+       tmpSelection.addItem(item);
        if (item->HasSel)
-               ScCore->primaryMainWindow()->doc->appMode = modeEdit;
-       
ScCore->primaryMainWindow()->doc->itemSelection_SetFontFeatures(QString::fromUtf8(fontfeature));
-       ScCore->primaryMainWindow()->doc->appMode = Apm;
-       ScCore->primaryMainWindow()->view->Deselect();
+               doc->appMode = modeEdit;
+       doc->itemSelection_SetFontFeatures(QString::fromUtf8(fontfeature), 
&tmpSelection);
+       doc->appMode = oldAppMode;
 
        Py_RETURN_NONE;
 }
@@ -563,22 +571,22 @@
                PyErr_SetString(WrongFrameTypeError, QObject::tr("Cannot set 
font on a non-text frame.","python error").toLocal8Bit().constData());
                return nullptr;
        }
-       if 
(PrefsManager::instance()->appPrefs.fontPrefs.AvailFonts.contains(QString::fromUtf8(Font)))
-       {
-               int Apm = ScCore->primaryMainWindow()->doc->appMode;
-               ScCore->primaryMainWindow()->doc->m_Selection->clear();
-               ScCore->primaryMainWindow()->doc->m_Selection->addItem(item);
-               if (item->HasSel)
-                       ScCore->primaryMainWindow()->doc->appMode = modeEdit;
-               
ScCore->primaryMainWindow()->SetNewFont(QString::fromUtf8(Font));
-               ScCore->primaryMainWindow()->doc->appMode = Apm;
-               ScCore->primaryMainWindow()->view->Deselect();
-       }
-       else
-       {
-               PyErr_SetString(PyExc_ValueError, QObject::tr("Font not 
found.","python error").toLocal8Bit().constData());
-               return nullptr;
-       }
+       if 
(!PrefsManager::instance()->appPrefs.fontPrefs.AvailFonts.contains(QString::fromUtf8(Font)))
+       {
+               PyErr_SetString(PyExc_ValueError, QObject::tr("Font not 
found.", "python error").toLocal8Bit().constData());
+               return nullptr;
+       }
+
+       ScribusDoc* doc = ScCore->primaryMainWindow()->doc;
+       int oldAppMode = ScCore->primaryMainWindow()->doc->appMode;
+
+       Selection tmpSelection(nullptr, false);
+       tmpSelection.addItem(item);
+       if (item->HasSel)
+               doc->appMode = modeEdit;
+       doc->itemSelection_SetFont(QString::fromUtf8(Font), &tmpSelection);
+       doc->appMode = oldAppMode;
+
        Py_RETURN_NONE;
 }
 
@@ -603,15 +611,16 @@
                PyErr_SetString(WrongFrameTypeError, QObject::tr("Cannot set 
line spacing on a non-text frame.","python error").toLocal8Bit().constData());
                return nullptr;
        }
-       
-       int Apm = ScCore->primaryMainWindow()->doc->appMode;
-       ScCore->primaryMainWindow()->doc->m_Selection->clear();
-       ScCore->primaryMainWindow()->doc->m_Selection->addItem(item);
+
+       ScribusDoc* doc = ScCore->primaryMainWindow()->doc;
+       int oldAppMode = ScCore->primaryMainWindow()->doc->appMode;
+
+       Selection tmpSelection(nullptr, false);
+       tmpSelection.addItem(item);
        if (item->HasSel)
-               ScCore->primaryMainWindow()->doc->appMode = modeEdit;
-       ScCore->primaryMainWindow()->doc->itemSelection_SetLineSpacing(w);
-       ScCore->primaryMainWindow()->doc->appMode = Apm;
-       ScCore->primaryMainWindow()->view->Deselect();
+               doc->appMode = modeEdit;
+       doc->itemSelection_SetLineSpacing(w, &tmpSelection);
+       doc->appMode = oldAppMode;
                
 //     item->setLineSpacing(w);
        Py_RETURN_NONE;
@@ -638,15 +647,16 @@
                PyErr_SetString(WrongFrameTypeError, QObject::tr("Cannot set 
line spacing mode on a non-text frame.","python 
error").toLocal8Bit().constData());
                return nullptr;
        }
-       
-       int Apm = ScCore->primaryMainWindow()->doc->appMode;
-       ScCore->primaryMainWindow()->doc->m_Selection->clear();
-       ScCore->primaryMainWindow()->doc->m_Selection->addItem(item);
+
+       ScribusDoc* doc = ScCore->primaryMainWindow()->doc;
+       int oldAppMode = ScCore->primaryMainWindow()->doc->appMode;
+
+       Selection tmpSelection(nullptr, false);
+       tmpSelection.addItem(item);
        if (item->HasSel)
-               ScCore->primaryMainWindow()->doc->appMode = modeEdit;
-       ScCore->primaryMainWindow()->doc->itemSelection_SetLineSpacingMode(w);
-       ScCore->primaryMainWindow()->doc->appMode = Apm;
-       ScCore->primaryMainWindow()->view->Deselect();
+               doc->appMode = modeEdit;
+       doc->itemSelection_SetLineSpacingMode(w, &tmpSelection);
+       doc->appMode = oldAppMode;
                
        Py_RETURN_NONE;
 }
@@ -925,15 +935,16 @@
                PyErr_SetString(WrongFrameTypeError, QObject::tr("Cannot set 
character scaling on a non-text frame.","python 
error").toLocal8Bit().constData());
                return nullptr;
        }
-       
-       int Apm = ScCore->primaryMainWindow()->doc->appMode;
-       ScCore->primaryMainWindow()->doc->m_Selection->clear();
-       ScCore->primaryMainWindow()->doc->m_Selection->addItem(item);
+
+       ScribusDoc* doc = ScCore->primaryMainWindow()->doc;
+       int oldAppMode = ScCore->primaryMainWindow()->doc->appMode;
+
+       Selection tmpSelection(nullptr, false);
+       tmpSelection.addItem(item);
        if (item->HasSel)
-               ScCore->primaryMainWindow()->doc->appMode = modeEdit;
-       ScCore->primaryMainWindow()->doc->itemSelection_SetScaleH(qRound(sc * 
10));
-       ScCore->primaryMainWindow()->doc->appMode = Apm;
-       ScCore->primaryMainWindow()->view->Deselect();
+               doc->appMode = modeEdit;
+       doc->itemSelection_SetScaleH(qRound(sc * 10), &tmpSelection);
+       doc->appMode = oldAppMode;
                
        Py_RETURN_NONE;
 }
@@ -960,15 +971,16 @@
                PyErr_SetString(WrongFrameTypeError, QObject::tr("Cannot set 
character scaling on a non-text frame.","python 
error").toLocal8Bit().constData());
                return nullptr;
        }
-       
-       int Apm = ScCore->primaryMainWindow()->doc->appMode;
-       ScCore->primaryMainWindow()->doc->m_Selection->clear();
-       ScCore->primaryMainWindow()->doc->m_Selection->addItem(item);
+
+       ScribusDoc* doc = ScCore->primaryMainWindow()->doc;
+       int oldAppMode = ScCore->primaryMainWindow()->doc->appMode;
+
+       Selection tmpSelection(nullptr, false);
+       tmpSelection.addItem(item);
        if (item->HasSel)
-               ScCore->primaryMainWindow()->doc->appMode = modeEdit;
-       ScCore->primaryMainWindow()->doc->itemSelection_SetScaleV(qRound(sc * 
10));
-       ScCore->primaryMainWindow()->doc->appMode = Apm;
-       ScCore->primaryMainWindow()->view->Deselect();
+               doc->appMode = modeEdit;
+       doc->itemSelection_SetScaleV(qRound(sc * 10), &tmpSelection);
+       doc->appMode = oldAppMode;
                
        Py_RETURN_NONE;
 }

Modified: trunk/Scribus/scribus/scribus.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22733&path=/trunk/Scribus/scribus/scribus.cpp
==============================================================================
--- trunk/Scribus/scribus/scribus.cpp   (original)
+++ trunk/Scribus/scribus/scribus.cpp   Sun Oct 14 13:08:04 2018
@@ -6291,12 +6291,6 @@
        doc->updateEndnotesFrames();
 }
 
-void ScribusMainWindow::SetNewFont(const QString& nf)
-{
-       setMainWindowActive();
-       doc->itemSetFont(nf);
-}
-
 void ScribusMainWindow::setItemFontSize(int fontSize)
 {
        int fs=fontSize;
@@ -8486,8 +8480,6 @@
        view->requestMode(modeEdit);
        currItem->itemText.setCursorPosition(0);
        SearchReplace* dia = new SearchReplace(this, doc, currItem);
-       connect(dia, SIGNAL(NewFont(const QString&)), this, 
SLOT(SetNewFont(const QString&)));
-       connect(dia, SIGNAL(NewAbs(int)), this, SLOT(setAlignmentValue(int)));
        dia->exec();
        dia->disconnect();
        delete dia;

Modified: trunk/Scribus/scribus/scribus.h
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22733&path=/trunk/Scribus/scribus/scribus.h
==============================================================================
--- trunk/Scribus/scribus/scribus.h     (original)
+++ trunk/Scribus/scribus/scribus.h     Sun Oct 14 13:08:04 2018
@@ -457,9 +457,6 @@
        void slotDocCh(bool reb = true);
        /** Setzt die Abstufung */
        //void setItemShade(int id);
-       /** Setzt den Font */
-       /** Korrigiert das FontMenu */
-       void SetNewFont(const QString& nf);
        /** Setz die Zeichensatzgroesse */
        void setItemFontSize(int fontSize);
        void setItemLanguage(const QString& language);

Modified: trunk/Scribus/scribus/scribusdoc.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22733&path=/trunk/Scribus/scribus/scribusdoc.cpp
==============================================================================
--- trunk/Scribus/scribus/scribusdoc.cpp        (original)
+++ trunk/Scribus/scribus/scribusdoc.cpp        Sun Oct 14 13:08:04 2018
@@ -2441,7 +2441,6 @@
 
 bool ScribusDoc::AddFont(const QString& name, int fsize)
 {
-       bool ret = false;
        if (UsedFonts.contains(name))
                return true;
 
@@ -2450,8 +2449,8 @@
 
        UsedFonts[name] = fsize;
        (*AllFonts)[name].increaseUsage();
-       ret = true;
-       return ret;
+
+       return true;
 }
 
 
@@ -7826,8 +7825,6 @@
        changed();
 }
 
-
-
 void ScribusDoc::itemSelection_SetLineSpacing(double w, Selection* 
customSelection)
 {
        ParagraphStyle newStyle;
@@ -7835,11 +7832,35 @@
        itemSelection_ApplyParagraphStyle(newStyle, customSelection);
 }
 
-void ScribusDoc::itemSelection_SetFont(const QString& fon, Selection* 
customSelection)
-{
+void ScribusDoc::itemSelection_SetFont(const QString& font, Selection* 
customSelection)
+{
+       Selection* itemSelection = (customSelection != nullptr) ? 
customSelection : m_Selection;
+       assert(itemSelection != nullptr);
+
+       uint selectedItemCount = itemSelection->count();
+       if (selectedItemCount == 0)
+               return;
+
+       QString newFont(font);
+       if (!UsedFonts.contains(newFont))
+       {
+               if (!AddFont(font))
+               {
+                       PageItem *currItem = m_Selection->itemAt(0);
+                       newFont = currItem->currentCharStyle().font().scName();
+               }
+       }
+
        CharStyle newStyle;
-       newStyle.setFont((*AllFonts)[fon]);
+       newStyle.setFont((*AllFonts)[newFont]);
        itemSelection_ApplyCharStyle(newStyle, customSelection, "FONT");
+}
+
+void ScribusDoc::itemSelection_SetFontSize(int size, Selection* 
customSelection)
+{
+       CharStyle newStyle;
+       newStyle.setFontSize(size);
+       itemSelection_ApplyCharStyle(newStyle, customSelection, "FONT_SIZE");
 }
 
 void ScribusDoc::itemSelection_SetFontFeatures(const QString& fontfeature, 
Selection* customSelection)
@@ -8872,39 +8893,6 @@
        itemSelection_ApplyCharStyle(newStyle, customSelection, "LANGUAGE");
 }
 
-void ScribusDoc::itemSetFont(const QString &newFont)
-{
-       QString nf2(newFont);
-       if (!UsedFonts.contains(newFont))
-       {
-               if (!AddFont(newFont))
-               {
-                       if (m_Selection->count() != 0)
-                       {
-                               PageItem *currItem = m_Selection->itemAt(0);
-                               nf2 = 
currItem->currentCharStyle().font().scName();
-                       }
-               }
-       }
-       PageItem *i2 = m_Selection->itemAt(0);
-       if (appMode == modeEditTable)
-               i2 = 
m_Selection->itemAt(0)->asTable()->activeCell().textFrame();
-       if (i2 != nullptr)
-       {
-               Selection tempSelection(this, false);
-               tempSelection.addItem(i2, true);
-               itemSelection_SetFont(nf2, &tempSelection);
-       }
-       m_View->DrawNew();
-}
-
-void ScribusDoc::itemSelection_SetFontSize(int size, Selection* 
customSelection)
-{
-       CharStyle newStyle;
-       newStyle.setFontSize(size);
-       itemSelection_ApplyCharStyle(newStyle, customSelection, "FONT_SIZE");
-}
-
 void ScribusDoc::itemSelection_ToggleBookMark(Selection *customSelection)
 {
        Selection* itemSelection = (customSelection!=nullptr) ? customSelection 
: m_Selection;

Modified: trunk/Scribus/scribus/scribusdoc.h
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22733&path=/trunk/Scribus/scribus/scribusdoc.h
==============================================================================
--- trunk/Scribus/scribus/scribusdoc.h  (original)
+++ trunk/Scribus/scribus/scribusdoc.h  Sun Oct 14 13:08:04 2018
@@ -1064,8 +1064,9 @@
        void itemSelection_SetLineSpacing(double w, Selection* customSelection 
= nullptr);
        void itemSelection_SetLineSpacingMode(int w, Selection* customSelection 
= nullptr);
        void itemSelection_SetLanguage(const QString& w, Selection* 
customSelection = nullptr);
-       void itemSetFont(const QString& newFont);
-       void itemSelection_SetFont(const QString& fon, Selection* 
customSelection = nullptr);
+       void itemSelection_SetFont(const QString& font, Selection* 
customSelection = nullptr);
+       void itemSelection_SetFontSize(int size, Selection* customSelection = 
nullptr);
+       void itemSelection_SetFontFeatures(const QString& fontfeature, 
Selection* customSelection = nullptr);
        void itemSelection_SetParBackgroundColor(QString farbe, Selection* 
customSelection = nullptr);
        void itemSelection_SetParBackgroundShade(int sha, Selection* 
customSelection = nullptr);
        void itemSelection_SetBackgroundColor(QString farbe, Selection* 
customSelection = nullptr);
@@ -1089,7 +1090,6 @@
        void itemSelection_SetCompressionMethod(int cmIndex, Selection* 
customSelection = nullptr);
        void itemSelection_SetCompressionQuality(int cqIndex, Selection* 
customSelection = nullptr);
        void itemSelection_SetTracking(int us, Selection* customSelection = 
nullptr);
-       void itemSelection_SetFontSize(int size, Selection* customSelection = 
nullptr);
        void MirrorPolyH(PageItem *currItem);
        void MirrorPolyV(PageItem *currItem);
        bool getItem(PageItem **currItem, int nr = -1);
@@ -1457,7 +1457,6 @@
        //! Delete the items in the current selection. When force is true, we 
do not warn the user and make SE happy too. Force is used from @sa 
Page::restorePageItemCreation
        void itemSelection_DeleteItem(Selection* customSelection = nullptr, 
bool forceDeletion=false);
        void itemSelection_SetItemFillTransparency(double t);
-       void itemSelection_SetFontFeatures(const QString& fontfeature, 
Selection* customSelection = nullptr);
        void itemSelection_SetHyphenWordMin(int wordMin, Selection* 
customSelection = nullptr);
        void itemSelection_SetHyphenConsecutiveLines(int consecutiveLines, 
Selection* customSelection = nullptr);
        void itemSelection_SetHyphenChar(uint hyphenChar, Selection* 
customSelection = nullptr);

Modified: trunk/Scribus/scribus/ui/propertiespalette_text.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22733&path=/trunk/Scribus/scribus/ui/propertiespalette_text.cpp
==============================================================================
--- trunk/Scribus/scribus/ui/propertiespalette_text.cpp (original)
+++ trunk/Scribus/scribus/ui/propertiespalette_text.cpp Sun Oct 14 13:08:04 2018
@@ -649,11 +649,13 @@
        }
 }
 
-void PropertiesPalette_Text::handleTextFont(const QString& c)
+void PropertiesPalette_Text::handleTextFont(const QString& font)
 {
        if (!m_haveDoc || !m_haveItem || !m_ScMW || m_ScMW->scriptIsRunning())
                return;
-       m_ScMW->SetNewFont(c);
+       Selection tempSelection(this, false);
+       tempSelection.addItem(m_item, true);
+       m_doc->itemSelection_SetFont(font, &tempSelection);
 }
 
 void PropertiesPalette_Text::doClearCStyle()

Modified: trunk/Scribus/scribus/ui/search.h
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22733&path=/trunk/Scribus/scribus/ui/search.h
==============================================================================
--- trunk/Scribus/scribus/ui/search.h   (original)
+++ trunk/Scribus/scribus/ui/search.h   Sun Oct 14 13:08:04 2018
@@ -120,10 +120,6 @@
        virtual void writePrefs();
        virtual void clear();
 
-signals:
-       void NewFont(const QString&);
-       void NewAbs(int);
-
 protected:
        PageItem*   m_item;
        ScribusDoc* m_doc;


_______________________________________________
scribus-commit mailing list
[email protected]
http://lists.scribus.net/mailman/listinfo/scribus-commit

Reply via email to