diff --git a/toonz/sources/include/toonz/preferences.h b/toonz/sources/include/toonz/preferences.h index 5df3065..b489cd4 100644 --- a/toonz/sources/include/toonz/preferences.h +++ b/toonz/sources/include/toonz/preferences.h @@ -134,13 +134,14 @@ public: // Interface tab - void setCurrentLanguage(int currentLanguage); + void setCurrentLanguage(const QString ¤tLanguage); QString getCurrentLanguage() const; QString getLanguage(int index) const; int getLanguageCount() const; - void setCurrentStyleSheet(int currentStyleSheet); - QString getCurrentStyleSheet() const; + void setCurrentStyleSheet(const QString ¤tStyleSheet); + QString getCurrentStyleSheetName() const; + QString getCurrentStyleSheetPath() const; QString getStyleSheet(int index) const; int getStyleSheetCount() const; @@ -482,7 +483,8 @@ Q_SIGNALS: private: std::unique_ptr m_settings; - QMap m_languageMaps, m_styleSheetMaps, m_roomMaps; + QStringList m_languageList, m_styleSheetList; + QMap m_roomMaps; std::vector m_levelFormats; @@ -503,8 +505,8 @@ private: m_textureSize, m_autocreationType, m_keyframeType, m_animationStep, m_ffmpegTimeout; // seconds int m_projectRoot, m_importPolicy; - int m_currentLanguage, m_currentStyleSheet, - m_undoMemorySize, // in megabytes + QString m_currentLanguage, m_currentStyleSheet; + int m_undoMemorySize, // in megabytes m_dragCellsBehaviour, m_lineTestFpsCapture, m_defLevelType, m_xsheetStep, m_shmmax, m_shmseg, m_shmall, m_shmmni, m_vectorSnappingTarget; diff --git a/toonz/sources/toonz/main.cpp b/toonz/sources/toonz/main.cpp index e8a0288..43e1010 100644 --- a/toonz/sources/toonz/main.cpp +++ b/toonz/sources/toonz/main.cpp @@ -586,7 +586,7 @@ int main(int argc, char *argv[]) { a.processEvents(); // Carico lo styleSheet - QString currentStyle = Preferences::instance()->getCurrentStyleSheet(); + QString currentStyle = Preferences::instance()->getCurrentStyleSheetPath(); a.setStyleSheet(currentStyle); TApp::instance()->setMainWindow(&w); diff --git a/toonz/sources/toonz/mainwindow.cpp b/toonz/sources/toonz/mainwindow.cpp index 49b6bec..d7e44ee 100644 --- a/toonz/sources/toonz/mainwindow.cpp +++ b/toonz/sources/toonz/mainwindow.cpp @@ -2255,7 +2255,7 @@ class ReloadStyle final : public MenuItemHandler { public: ReloadStyle() : MenuItemHandler("MI_ReloadStyle") {} void execute() override { - QString currentStyle = Preferences::instance()->getCurrentStyleSheet(); + QString currentStyle = Preferences::instance()->getCurrentStyleSheetPath(); QFile file(currentStyle); file.open(QFile::ReadOnly); QString styleSheet = QString(file.readAll()); diff --git a/toonz/sources/toonz/preferencespopup.cpp b/toonz/sources/toonz/preferencespopup.cpp index f7d4059..b3de6d1 100644 --- a/toonz/sources/toonz/preferencespopup.cpp +++ b/toonz/sources/toonz/preferencespopup.cpp @@ -625,8 +625,8 @@ void PreferencesPopup::onAnimationStepChanged() { //----------------------------------------------------------------------------- -void PreferencesPopup::onLanguageTypeChanged(int index) { - m_pref->setCurrentLanguage(index); +void PreferencesPopup::onLanguageTypeChanged(const QString &langName) { + m_pref->setCurrentLanguage(langName); QString currentLanguage = m_pref->getCurrentLanguage(); } @@ -769,10 +769,10 @@ void PreferencesPopup::onShowKeyframesOnCellAreaChanged(int index) { //----------------------------------------------------------------------------- -void PreferencesPopup::onStyleSheetTypeChanged(int index) { - m_pref->setCurrentStyleSheet(index); +void PreferencesPopup::onStyleSheetTypeChanged(const QString &styleSheetName) { + m_pref->setCurrentStyleSheet(styleSheetName); QApplication::setOverrideCursor(Qt::WaitCursor); - QString currentStyle = m_pref->getCurrentStyleSheet(); + QString currentStyle = m_pref->getCurrentStyleSheetPath(); qApp->setStyleSheet(currentStyle); QApplication::restoreOverrideCursor(); } @@ -1339,9 +1339,10 @@ PreferencesPopup::PreferencesPopup() } //--- Interface ------------------------------ QStringList styleSheetList; + currentIndex = 0; for (int i = 0; i < m_pref->getStyleSheetCount(); i++) { QString string = m_pref->getStyleSheet(i); - if (string == m_pref->getCurrentStyleSheet()) currentIndex = i; + if (string == m_pref->getCurrentStyleSheetName()) currentIndex = i; TFilePath path(string.toStdWString()); styleSheetList.push_back(QString::fromStdWString(path.getWideName())); } @@ -2186,8 +2187,9 @@ PreferencesPopup::PreferencesPopup() ret = ret && connect(m_projectRootCustom, SIGNAL(stateChanged(int)), SLOT(onProjectRootChanged())); //--- Interface ---------------------- - ret = ret && connect(styleSheetType, SIGNAL(currentIndexChanged(int)), - SLOT(onStyleSheetTypeChanged(int))); + ret = ret && + connect(styleSheetType, SIGNAL(currentIndexChanged(const QString &)), + SLOT(onStyleSheetTypeChanged(const QString &))); ret = ret && connect(m_pixelsOnlyCB, SIGNAL(stateChanged(int)), SLOT(onPixelsOnlyChanged(int))); // pixels unit may deactivated externally on loading scene (see @@ -2212,8 +2214,9 @@ PreferencesPopup::PreferencesPopup() ret = ret && connect(m_viewStep, SIGNAL(editingFinished()), SLOT(onViewValuesChanged())); if (languageList.size() > 1) - ret = ret && connect(languageType, SIGNAL(currentIndexChanged(int)), - SLOT(onLanguageTypeChanged(int))); + ret = ret && + connect(languageType, SIGNAL(currentIndexChanged(const QString &)), + SLOT(onLanguageTypeChanged(const QString &))); ret = ret && connect(moveCurrentFrameCB, SIGNAL(stateChanged(int)), this, SLOT(onMoveCurrentFrameChanged(int))); ret = diff --git a/toonz/sources/toonz/preferencespopup.h b/toonz/sources/toonz/preferencespopup.h index 1a9f3bc..9996df5 100644 --- a/toonz/sources/toonz/preferencespopup.h +++ b/toonz/sources/toonz/preferencespopup.h @@ -125,8 +125,8 @@ private slots: void onTranspCheckDataChanged(const TPixel32 &, bool isDragging); void onOnionDataChanged(const TPixel32 &, bool isDragging); void onOnionDataChanged(int); - void onLanguageTypeChanged(int); - void onStyleSheetTypeChanged(int); + void onLanguageTypeChanged(const QString &); + void onStyleSheetTypeChanged(const QString &); void onUndoMemorySizeChanged(); void onSVNEnabledChanged(int); void onAutomaticSVNRefreshChanged(int); diff --git a/toonz/sources/toonzlib/preferences.cpp b/toonz/sources/toonzlib/preferences.cpp index 78d3567..8bae1a6 100644 --- a/toonz/sources/toonzlib/preferences.cpp +++ b/toonz/sources/toonzlib/preferences.cpp @@ -249,8 +249,8 @@ Preferences::Preferences() , m_shmall(-1) , m_shmmni(-1) , m_onionPaperThickness(50) - , m_currentLanguage(0) - , m_currentStyleSheet(0) + , m_currentLanguage("English") + , m_currentStyleSheet("Astral_072_Dark") , m_undoMemorySize(100) , m_dragCellsBehaviour(0) , m_lineTestFpsCapture(25) @@ -463,7 +463,7 @@ Preferences::Preferences() // load languages TFilePath lang_path = TEnv::getConfigDir() + "loc"; TFilePathSet lang_fpset; - m_languageMaps[0] = "English"; + m_languageList.append("English"); // m_currentLanguage=0; try { TFileStatus langPathFs(lang_path); @@ -477,8 +477,8 @@ Preferences::Preferences() ++i; if (newPath == lang_path) continue; if (TFileStatus(newPath).isDirectory()) { - QString string = QString::fromStdWString(newPath.getWideName()); - m_languageMaps[i] = string; + QString string = QString::fromStdWString(newPath.getWideName()); + m_languageList.append(string); } } } catch (...) { @@ -494,9 +494,7 @@ Preferences::Preferences() ++i; if (newPath == path) continue; QString fpName = QString::fromStdWString(newPath.getWideName()); - QString string = fpName + QString("/") + fpName + QString(".qss"); - if (fpName == QString("standard")) m_currentStyleSheet = i; - m_styleSheetMaps[i] = "file:///" + path.getQString() + "/" + string; + m_styleSheetList.append(fpName); } } catch (...) { } @@ -535,8 +533,15 @@ Preferences::Preferences() setCurrentRoomChoice(0); } - getValue(*m_settings, "CurrentLanguage", m_currentLanguage); - getValue(*m_settings, "CurrentStyleSheet", m_currentStyleSheet); + QString currentLanguage; + currentLanguage = m_settings->value("CurrentLanguageName").toString(); + if (!currentLanguage.isEmpty() && m_languageList.contains(currentLanguage)) + m_currentLanguage = currentLanguage; + QString currentStyleSheet; + currentStyleSheet = m_settings->value("CurrentStyleSheetName").toString(); + if (!currentStyleSheet.isEmpty() && + m_styleSheetList.contains(currentStyleSheet)) + m_currentStyleSheet = currentStyleSheet; getValue(*m_settings, "DragCellsBehaviour", m_dragCellsBehaviour); @@ -1169,49 +1174,64 @@ void Preferences::setUndoMemorySize(int memorySize) { //----------------------------------------------------------------- QString Preferences::getCurrentLanguage() const { - return m_languageMaps[m_currentLanguage]; + if (m_languageList.contains(m_currentLanguage)) return m_currentLanguage; + // If no valid option selected, then return English + return m_languageList[0]; } //----------------------------------------------------------------- QString Preferences::getLanguage(int index) const { - return m_languageMaps[index]; + return m_languageList[index]; } //----------------------------------------------------------------- -int Preferences::getLanguageCount() const { return (int)m_languageMaps.size(); } +int Preferences::getLanguageCount() const { return (int)m_languageList.size(); } //----------------------------------------------------------------- -void Preferences::setCurrentLanguage(int currentLanguage) { +void Preferences::setCurrentLanguage(const QString ¤tLanguage) { m_currentLanguage = currentLanguage; - m_settings->setValue("CurrentLanguage", m_currentLanguage); + m_settings->setValue("CurrentLanguageName", m_currentLanguage); +} + +//----------------------------------------------------------------- + +QString Preferences::getCurrentStyleSheetName() const { + if (m_styleSheetList.contains(m_currentStyleSheet)) + return m_currentStyleSheet; + // If no valid option selected, then return the first oprion + return m_styleSheetList.isEmpty() ? QString() : m_styleSheetList[0]; } //----------------------------------------------------------------- -QString Preferences::getCurrentStyleSheet() const { - return m_styleSheetMaps[m_currentStyleSheet]; +QString Preferences::getCurrentStyleSheetPath() const { + if (m_currentStyleSheet.isEmpty()) return QString(); + TFilePath path(TEnv::getConfigDir() + "qss"); + QString string = m_currentStyleSheet + QString("/") + m_currentStyleSheet + + QString(".qss"); + return QString("file:///" + path.getQString() + "/" + string); } //----------------------------------------------------------------- QString Preferences::getStyleSheet(int index) const { - return m_styleSheetMaps[index]; + return m_styleSheetList[index]; } //----------------------------------------------------------------- int Preferences::getStyleSheetCount() const { - return (int)m_styleSheetMaps.size(); + return (int)m_styleSheetList.size(); } //----------------------------------------------------------------- -void Preferences::setCurrentStyleSheet(int currentStyleSheet) { +void Preferences::setCurrentStyleSheet(const QString ¤tStyleSheet) { m_currentStyleSheet = currentStyleSheet; - m_settings->setValue("CurrentStyleSheet", m_currentStyleSheet); + m_settings->setValue("CurrentStyleSheetName", m_currentStyleSheet); } //-----------------------------------------------------------------