Skip to content
This repository has been archived by the owner on Aug 7, 2022. It is now read-only.

Commit

Permalink
dynamic theme support
Browse files Browse the repository at this point in the history
  • Loading branch information
nitramr committed Nov 13, 2016
1 parent 75138e7 commit 43554ee
Show file tree
Hide file tree
Showing 21 changed files with 1,293 additions and 104 deletions.
6 changes: 4 additions & 2 deletions Scribus.pro
Original file line number Diff line number Diff line change
Expand Up @@ -967,7 +967,8 @@ HEADERS += scribus/actionmanager.h \
scribus/plugins/tools/2geomtools/meshdistortion/meshdistortion.h \
scribus/plugins/tools/2geomtools/meshdistortion/meshdistortiondialog.h \
scribus/plugins/tools/2geomtools/pathalongpath/pathalongpath.h \
scribus/plugins/tools/2geomtools/pathalongpath/pathdialog.h
scribus/plugins/tools/2geomtools/pathalongpath/pathdialog.h \
scribus/thememanager.h
FORMS += scribus/ui/aboutplugins.ui \
scribus/ui/aligndistribute.ui \
scribus/ui/annot.ui \
Expand Down Expand Up @@ -2053,7 +2054,8 @@ SOURCES += scribus/actionmanager.cpp \
scribus/plugins/tools/2geomtools/meshdistortion/meshdistortion.cpp \
scribus/plugins/tools/2geomtools/meshdistortion/meshdistortiondialog.cpp \
scribus/plugins/tools/2geomtools/pathalongpath/pathalongpath.cpp \
scribus/plugins/tools/2geomtools/pathalongpath/pathdialog.cpp
scribus/plugins/tools/2geomtools/pathalongpath/pathdialog.cpp \
scribus/thememanager.cpp
RESOURCES += scribus/plugins/scripter/python/sceditor/dockwidget_icons.qrc
TRANSLATIONS += resources/translations/scribus.af.ts \
resources/translations/scribus.ar.ts \
Expand Down
2 changes: 1 addition & 1 deletion Scribus.pro.user
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.1.0, 2016-11-11T03:03:46. -->
<!-- Written by QtCreator 4.1.0, 2016-11-13T15:06:20. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
Expand Down
6 changes: 3 additions & 3 deletions resources/iconsets/1_5_1/1_5_1.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<license>GPLv2+</license>
<path>1_5_1</path>
<activeversion>1.5.1</activeversion>
<nametext lang="en_US">Scribus 1.5.1</nametext>
<nametext lang="fr">Scribus 1.5.1</nametext>
<nametext lang="de_DE">Scribus 1.5.1</nametext>
<nametext lang="en_US">Scribus 1.5.1 Dark</nametext>
<nametext lang="fr">Scribus 1.5.1 Sombre</nametext>
<nametext lang="de_DE">Scribus 1.5.1 Dunkel</nametext>
</iconset>
6 changes: 3 additions & 3 deletions resources/iconsets/1_5_1_light/1_5_1_light.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<license>GPLv2+</license>
<path>1_5_1_light</path>
<activeversion>1.5.1</activeversion>
<nametext lang="en_US">Scribus 1.5.1 light</nametext>
<nametext lang="fr">Scribus 1.5.1 brillant</nametext>
<nametext lang="de_DE">Scribus 1.5.1 hell</nametext>
<nametext lang="en_US">Scribus 1.5.1 Light</nametext>
<nametext lang="fr">Scribus 1.5.1 Brillant</nametext>
<nametext lang="de_DE">Scribus 1.5.1 Hell</nametext>
</iconset>
Binary file modified resources/iconsets/1_5_1_light/mover.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
12 changes: 8 additions & 4 deletions scribus/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -298,6 +298,7 @@ SET(SCRIBUS_MOC_CLASSES
selectionrubberband.h
styleitem.h
themefactory.h
thememanager.h
tocgenerator.h
undogui.h
undomanager.h
Expand Down Expand Up @@ -744,6 +745,7 @@ SET(SCRIBUS_SOURCES
tableutils.cpp
textwriter.cpp
themefactory.cpp
thememanager.cpp
third_party/fparser/fpoptimizer.cc
third_party/fparser/fparser.cc
tocgenerator.cpp
Expand Down Expand Up @@ -1400,7 +1402,9 @@ ELSE(WANT_HEADERINSTALL)
ENDIF(WANT_HEADERINSTALL)

#Install our stylesheet
INSTALL(FILES
scribus.css
DESTINATION ${LIBDIR}
)
FILE( GLOB SCRIBUS_CSS *.css )
INSTALL(FILES ${SCRIBUS_CSS} DESTINATION ${LIBDIR})

#Install our XML
FILE( GLOB SCRIBUS_XML *.xml )
INSTALL(FILES ${SCRIBUS_XML} DESTINATION ${LIBDIR})
26 changes: 14 additions & 12 deletions scribus/prefsmanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ void PrefsManager::initDefaults()

appPrefs.uiPrefs.mouseMoveTimeout = 150;
appPrefs.uiPrefs.wheelJump = 40;
appPrefs.uiPrefs.style = "";
appPrefs.uiPrefs.style = "Scribus Dark";
/** Set Default window position and size to sane default values which should work on every screen */
// appPrefs.uiPrefs.mainWinSettings.xPosition = 0;
// appPrefs.uiPrefs.mainWinSettings.yPosition = 0;
Expand All @@ -177,7 +177,7 @@ void PrefsManager::initDefaults()
appPrefs.uiPrefs.useTabs = false;
appPrefs.uiPrefs.stickyTools = false;
appPrefs.uiPrefs.grayscaleIcons = false;
appPrefs.uiPrefs.iconSet = "1_5_0";
appPrefs.uiPrefs.iconSet = "Scribus 1.5.1 Light";
appPrefs.guidesPrefs.marginsShown = true;
appPrefs.guidesPrefs.framesShown = true;
appPrefs.guidesPrefs.layerMarkersShown = false;
Expand Down Expand Up @@ -1968,10 +1968,10 @@ bool PrefsManager::ReadPref(QString ho)

if (dc.tagName()=="UI")
{
appPrefs.uiPrefs.style = dc.attribute("Theme","Default");
appPrefs.uiPrefs.style = dc.attribute("Theme","Scribus Dark");
appPrefs.uiPrefs.wheelJump = dc.attribute("ScrollWheelJump").toInt();
appPrefs.uiPrefs.mouseMoveTimeout = dc.attribute("MouseMoveTimeout", "150").toInt();
appPrefs.uiPrefs.applicationFontSize = dc.attribute("ApplicationFontSize", "12").toInt();
appPrefs.uiPrefs.applicationFontSize = dc.attribute("ApplicationFontSize", "10").toInt();
appPrefs.uiPrefs.paletteFontSize = dc.attribute("PaletteFontSize", "10").toInt();
appPrefs.uiPrefs.recentDocCount = dc.attribute("RecentDocumentCount","5").toUInt();
appPrefs.uiPrefs.showStartupDialog = static_cast<bool>(dc.attribute("ShowStartupDialog", "1").toInt());
Expand All @@ -1980,7 +1980,7 @@ bool PrefsManager::ReadPref(QString ho)
appPrefs.uiPrefs.useTabs = static_cast<bool>(dc.attribute("UseDocumentTabs", "0").toInt());
appPrefs.uiPrefs.stickyTools = static_cast<bool>(dc.attribute("StickyTools", "0").toInt());
appPrefs.uiPrefs.grayscaleIcons = static_cast<bool>(dc.attribute("UseGrayscaleIcons",0).toInt());
appPrefs.uiPrefs.iconSet = dc.attribute("IconSet", "1_5_0");
appPrefs.uiPrefs.iconSet = dc.attribute("IconSet", "Scribus 1.5.1 Light");
}

if (dc.tagName()=="DocumentSetup")
Expand Down Expand Up @@ -2679,13 +2679,15 @@ bool PrefsManager::ReadPref(QString ho)
appPrefs.docSetupPrefs.docUnitIndex = int(SC_POINTS);
// Configure GUI
appPrefs.ui_SystemTheme = qApp->style()->objectName();
if (appPrefs.uiPrefs.style.length() > 0)
{
qApp->setStyle(QStyleFactory::create(appPrefs.uiPrefs.style));
// Plain wrong, a style may set a palette different from the standard palette
// Eg : Windows XP and Windows Vista styles
// qApp->setPalette(qApp->style()->standardPalette());
}


// if (appPrefs.uiPrefs.style.length() > 0)
// {
// qApp->setStyle(QStyleFactory::create(appPrefs.uiPrefs.style));
// // Plain wrong, a style may set a palette different from the standard palette
// // Eg : Windows XP and Windows Vista styles
// // qApp->setPalette(qApp->style()->standardPalette());
// }
QFont apf = qApp->font();
apf.setPointSize(appPrefs.uiPrefs.applicationFontSize);
qApp->setFont(apf);
Expand Down
77 changes: 37 additions & 40 deletions scribus/scribus.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,7 @@ for which a new license (GPL+exception) is in place.
#include "serializer.h"
#include "styleoptions.h"
#include "tocgenerator.h"
#include "thememanager.h"
#include "ui/about.h"
#include "ui/aboutplugins.h"
#include "ui/adjustcmsdialog.h"
Expand Down Expand Up @@ -315,11 +316,11 @@ int ScribusMainWindow::initScMW(bool primaryMainWindow)
{
int retVal=0;
qsrand(1234);
QByteArray stylesheet;
if (loadRawText(ScPaths::getApplicationDataDir() + "/stylesheet.css", stylesheet))
{
qApp->setStyleSheet(QString(stylesheet));
}
// QByteArray stylesheet;
// if (loadRawText(ScPaths::getApplicationDataDir() + "/stylesheet.css", stylesheet))
// {
// qApp->setStyleSheet(QString(stylesheet));
// }

setStyleSheet();

Expand Down Expand Up @@ -476,11 +477,11 @@ ScribusMainWindow::~ScribusMainWindow()
delete m_doc;
}

void ScribusMainWindow::addScToolBar(ScToolBar *tb, QString name)
void ScribusMainWindow::addScToolBar(ScToolBar *tb, QString name, Qt::ToolBarArea area)
{
if (!scrToolBars.contains(name))
scrToolBars.insert(name, tb);
addToolBar(tb);
addToolBar(area,tb);
}

void ScribusMainWindow::initToolBars()
Expand All @@ -494,9 +495,9 @@ void ScribusMainWindow::initToolBars()
viewToolBar = new ViewToolBar(this);

addScToolBar(fileToolBar, fileToolBar->objectName());
addScToolBar(editToolBar, editToolBar->objectName());
addScToolBar(modeToolBar, modeToolBar->objectName());
addScToolBar(pdfToolBar, pdfToolBar->objectName());
addScToolBar(editToolBar, editToolBar->objectName());
addScToolBar(modeToolBar, modeToolBar->objectName(), Qt::LeftToolBarArea);
addScToolBar(pdfToolBar, pdfToolBar->objectName(), Qt::LeftToolBarArea);
addScToolBar(viewToolBar, viewToolBar->objectName());
connect(modeToolBar, SIGNAL(visibilityChanged(bool)), scrActions["toolsToolbarTools"], SLOT(setChecked(bool)));
connect(scrActions["toolsToolbarPDF"], SIGNAL(toggled(bool)), pdfToolBar, SLOT(setVisible(bool)));
Expand All @@ -508,19 +509,15 @@ void ScribusMainWindow::initToolBars()

void ScribusMainWindow::setStyleSheet()
{

qApp->setStyle("Fusion");

ThemeFactory *sf = new ThemeFactory();
QByteArray stylesheet;

if (loadRawText(ScPaths::instance().libDir() + "scribus.css", stylesheet))
QString themePath = ScPaths::instance().libDir() + ThemeManager::instance()->activePath();
if (loadRawText(themePath, stylesheet))
{
/*QString downArrow(IconManager::instance()->pathForIcon("16/go-down.png"));
QByteArray da;
da.append(downArrow);
stylesheet.replace("___downArrow___", da);
QString toolbararrow(IconManager::instance()->pathForIcon("stylesheet/down_arrow.png"));
QByteArray tba;
tba.append(toolbararrow);
stylesheet.replace("___tb_menu_arrow___", tba);*/

QString style(stylesheet);
sf->parseString(style);
Expand All @@ -537,19 +534,7 @@ void ScribusMainWindow::setStyleSheet()
qApp->setStyleSheet(style);

}

/*layerMenu->setStyleSheet(stylesheet);
unitSwitcher->setStyleSheet(stylesheet);
zoomDefaultToolbarButton->setStyleSheet(stylesheet);
zoomInToolbarButton->setStyleSheet(stylesheet);
zoomOutToolbarButton->setStyleSheet(stylesheet);
zoomSpinBox->setStyleSheet(stylesheet);
fileToolBar->setStyleSheet(stylesheet);
editToolBar->setStyleSheet(stylesheet);
modeToolBar->setStyleSheet(stylesheet);
pdfToolBar->setStyleSheet(stylesheet);
viewToolBar->setStyleSheet(stylesheet);*/

}


Expand Down Expand Up @@ -6643,14 +6628,26 @@ void ScribusMainWindow::slotPrefsOrg()
QString newUILanguage = m_prefsManager->uiLanguage();
if (oldPrefs.uiPrefs.language != newUILanguage || ScQApp->currGUILanguage()!=newUILanguage)
ScQApp->changeGUILanguage(newUILanguage);
QString newUIStyle = m_prefsManager->guiStyle();
if (oldPrefs.uiPrefs.style != newUIStyle)
{
if (newUIStyle.isEmpty())
qApp->setStyle(m_prefsManager->guiSystemStyle());
else
qApp->setStyle(QStyleFactory::create(newUIStyle));
}



/* TODO: load new css theme */


qApp->setStyle(QStyleFactory::create("Fusion"));

// QString newUIStyle = m_prefsManager->guiStyle();
// if (oldPrefs.uiPrefs.style != newUIStyle)
// {
// if (newUIStyle.isEmpty())
// qApp->setStyle(m_prefsManager->guiSystemStyle());
// else
// qApp->setStyle(QStyleFactory::create(newUIStyle));
// }




int newUIFontSize = m_prefsManager->guiFontSize();
if (oldPrefs.uiPrefs.applicationFontSize != newUIFontSize)
{
Expand Down
10 changes: 5 additions & 5 deletions scribus/scribus.h
Original file line number Diff line number Diff line change
Expand Up @@ -141,8 +141,8 @@ class SCRIBUS_API ScribusMainWindow : public QMainWindow, public UndoObject
/*!
* \retval 0 - ok, 1 - no fonts, ...
*/
int initScMW(bool primaryMainwWindow);
void addScToolBar(ScToolBar *tb, QString name);
int initScMW(bool primaryMainwWindow);
void addScToolBar(ScToolBar *tb, QString name, Qt::ToolBarArea area = Qt::TopToolBarArea);
bool warningVersion(QWidget *parent);
void SetShortCut();
void startUpDialog();
Expand Down Expand Up @@ -610,9 +610,9 @@ public slots:
void createMenuBar();
void addDefaultWindowMenuItems(); // addDefaultWindowMenuItems adds the basic Windows menu items, excluding the actual list of windows
void initStatusBar(); // setup the statusbar
void initToolBars(); // setup the toolbars
void setStyleSheet(); //set stylesheet for app
//Returns false when there are no fonts
void initToolBars(); // setup the toolbars
void setStyleSheet(); //set stylesheet for app
//Returns false when there are no fonts
void initHyphenator();
void initDefaultValues();
void initKeyboardShortcuts();
Expand Down
Loading

0 comments on commit 43554ee

Please sign in to comment.