Author: jghali
Date: Fri May 29 20:34:34 2020
New Revision: 23856

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=23856
Log:
Use same preference contexts when saving text from story editor or main window, 
also store selected text encoding

Modified:
    trunk/Scribus/scribus/scribus.cpp
    trunk/Scribus/scribus/ui/customfdialog.cpp
    trunk/Scribus/scribus/ui/customfdialog.h
    trunk/Scribus/scribus/ui/storyeditor.cpp

Modified: trunk/Scribus/scribus/scribus.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=23856&path=/trunk/Scribus/scribus/scribus.cpp
==============================================================================
--- trunk/Scribus/scribus/scribus.cpp   (original)
+++ trunk/Scribus/scribus/scribus.cpp   Fri May 29 20:34:34 2020
@@ -5361,20 +5361,25 @@
 void ScribusMainWindow::SaveText()
 {
        PrefsContext* dirsContext = 
m_prefsManager.prefsFile->getContext("dirs");
+       PrefsContext* textContext = 
m_prefsManager.prefsFile->getContext("textsave_dialog");
        QString prefsDocDir = m_prefsManager.documentDir();
        QString workingDir = dirsContext->get("save_text", 
prefsDocDir.isEmpty() ? "." : prefsDocDir);
+       QString textEncoding = textContext->get("encoding");
 
        CustomFDialog dia(this, workingDir, tr("Save as"), tr("Text Files 
(*.txt);;All Files (*)"), fdShowCodecs|fdHidePreviewCheckBox);
+       dia.setTextCodec(textEncoding);
        if (dia.exec() != QDialog::Accepted)
                return;
-       QString fn = dia.selectedFile();
-       if (fn.isEmpty())
-               return;
-       QString loadEnc = dia.optionCombo->currentText();
-
-       m_prefsManager.prefsFile->getContext("dirs")->set("save_text", 
fn.left(fn.lastIndexOf("/")));
+
+       QString fileName = dia.selectedFile();
+       if (fileName.isEmpty())
+               return;
+       textEncoding = dia.textCodec();
+
+       dirsContext->set("save_text", fileName.left(fileName.lastIndexOf("/")));
+       textContext->set("encoding", dia.textCodec());
        const StoryText& story (doc->m_Selection->itemAt(0)->itemText);
-       Serializer::writeWithEncoding(fn, loadEnc, story.plainText());
+       Serializer::writeWithEncoding(fileName, textEncoding, 
story.plainText());
 }
 
 void ScribusMainWindow::applyNewMaster(const QString& name)

Modified: trunk/Scribus/scribus/ui/customfdialog.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=23856&path=/trunk/Scribus/scribus/ui/customfdialog.cpp
==============================================================================
--- trunk/Scribus/scribus/ui/customfdialog.cpp  (original)
+++ trunk/Scribus/scribus/ui/customfdialog.cpp  Fri May 29 20:34:34 2020
@@ -593,7 +593,7 @@
        m_ext = e;
 }
 
-QString CustomFDialog::extension()
+const QString&  CustomFDialog::extension() const
 {
        return m_ext;
 }
@@ -603,7 +603,33 @@
        m_extZip = e;
 }
 
-QString CustomFDialog::zipExtension()
+const QString& CustomFDialog::zipExtension() const
 {
        return m_extZip;
 }
+
+void CustomFDialog::setTextCodec(const QString& textCodec)
+{
+       if ((m_optionFlags & fdShowCodecs) == 0)
+               return;
+       if (!optionCombo)
+               return;
+
+       QString textEncoding = textCodec;
+       if (textCodec.isEmpty())
+               textEncoding = "System";
+
+       int index = optionCombo->findText(textEncoding, Qt::MatchFixedString);
+       if (index < 0)
+               return;
+       optionCombo->setCurrentIndex(index);
+}
+
+QString CustomFDialog::textCodec() const
+{
+       if ((m_optionFlags & fdShowCodecs) == 0)
+               return QString();
+       if (optionCombo)
+               return optionCombo->currentText();
+       return QString();
+}

Modified: trunk/Scribus/scribus/ui/customfdialog.h
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=23856&path=/trunk/Scribus/scribus/ui/customfdialog.h
==============================================================================
--- trunk/Scribus/scribus/ui/customfdialog.h    (original)
+++ trunk/Scribus/scribus/ui/customfdialog.h    Fri May 29 20:34:34 2020
@@ -106,27 +106,31 @@
        void setExtension(const QString& e);
        /*! \brief Get the file extension
        \retval QString see setExtension(QString e) */
-       QString extension();
+       const QString& extension() const;
+
        /*! \brief Set the "compress" extension of the resulting file name.
        \param e string extension without any "."
        */
        void setZipExtension(const QString& e);
        /*! \brief Get the zipped file extension
        \retval QString see setZipExtension(QString e) */
-       QString zipExtension();
+       const QString& zipExtension() const;
 
-       QCheckBox* saveZip;
-       QCheckBox* withFonts;
-       QCheckBox* withProfiles;
-       QFrame* Layout;
-       QFrame* LayoutC;
-       QComboBox *optionCombo;
-       QLabel *optionLabel;
-       ScFileWidget *fileDialog;
-       FDialogPreview *filePreview;
-       QCheckBox *showPreview;
-       QPushButton* okButton;
-       QPushButton* cancelButton;
+       void setTextCodec(const QString& textCodec);
+       QString textCodec() const;
+
+       QCheckBox* saveZip { nullptr };
+       QCheckBox* withFonts { nullptr };
+       QCheckBox* withProfiles { nullptr };
+       QFrame* Layout { nullptr };
+       QFrame* LayoutC { nullptr };
+       QComboBox *optionCombo { nullptr };
+       QLabel *optionLabel { nullptr };
+       ScFileWidget *fileDialog { nullptr };
+       FDialogPreview *filePreview { nullptr };
+       QCheckBox *showPreview { nullptr };
+       QPushButton* okButton { nullptr };
+       QPushButton* cancelButton { nullptr };
 
        void setSelection(const QString& );
        QString selectedFile();

Modified: trunk/Scribus/scribus/ui/storyeditor.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=23856&path=/trunk/Scribus/scribus/ui/storyeditor.cpp
==============================================================================
--- trunk/Scribus/scribus/ui/storyeditor.cpp    (original)
+++ trunk/Scribus/scribus/ui/storyeditor.cpp    Fri May 29 20:34:34 2020
@@ -47,6 +47,7 @@
 #include <QShowEvent>
 #include <QSignalBlocker>
 #include <QScopedPointer>
+#include <QScopedValueRollback>
 #include <QScrollBar>
 #include <QTextBlock>
 #include <QTextCodec>
@@ -3484,26 +3485,26 @@
 
 void StoryEditor::SaveTextFile()
 {
-       m_blockUpdate = true;
-       PrefsContext* dirs = prefsManager.prefsFile->getContext("dirs");
-       QString wdir = dirs->get("story_save", 
prefsManager.appPrefs.pathPrefs.documents);
-       CustomFDialog dia(this, wdir, tr("Save as"), tr("Text Files 
(*.txt);;All Files (*)"), fdShowCodecs|fdHidePreviewCheckBox);
-       qApp->processEvents();
+       QScopedValueRollback<bool> blockUpdateRollback(m_blockUpdate);
+       PrefsContext* dirsContext = prefsManager.prefsFile->getContext("dirs");
+       PrefsContext* textContext = 
prefsManager.prefsFile->getContext("textsave_dialog");
+       QString prefsDocDir = prefsManager.documentDir();
+       QString workingDir = dirsContext->get("save_text", 
prefsDocDir.isEmpty() ? "." : prefsDocDir);
+       QString textEncoding = textContext->get("encoding");
+
+       CustomFDialog dia(this, workingDir, tr("Save as"), tr("Text Files 
(*.txt);;All Files (*)"), fdShowCodecs|fdHidePreviewCheckBox);
+       dia.setTextCodec(textEncoding);
        if (dia.exec() != QDialog::Accepted)
-       {
-               m_blockUpdate = false;
                return;
-       }
-       QString loadEnc = dia.optionCombo->currentText();
-       if (loadEnc == "UTF-16")
-               loadEnc = "ISO-10646-UCS-2";
+       
        QString fileName = dia.selectedFile();
-       if (!fileName.isEmpty())
-       {
-               dirs->set("story_save", 
fileName.left(fileName.lastIndexOf("/")));
-               Serializer::writeWithEncoding(fileName, loadEnc, 
Editor->StyledText.plainText());
-       }
-       m_blockUpdate = false;
+       if (fileName.isEmpty())
+               return;
+       textEncoding = dia.textCodec();
+
+       dirsContext->set("save_text", fileName.left(fileName.lastIndexOf("/")));
+       textContext->set("encoding", dia.textCodec());
+       Serializer::writeWithEncoding(fileName, textEncoding, 
Editor->StyledText.plainText());
 }
 
 bool StoryEditor::textDataChanged() const


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

Reply via email to