View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0017953 | Scribus | User Interface | public | 2026-08-29 10:46 | 2026-08-29 10:48 |
| Reporter | qirat | Assigned To | |||
| Priority | normal | Severity | minor | Reproducibility | have not tried |
| Status | new | Resolution | open | ||
| Platform | Linux | OS | Fedora Workstation | OS Version | 44 |
| Product Version | 1.7.4.svn | ||||
| Summary | 0017953: [patch] Centralise Scribus Stylesheet Processing | ||||
| Description | `scribus.css` loading and dynamic token replacement were duplicated between `ScribusMainWindow` and `PageSelector`. * Fix: adds shared `loadScribusStyleSheet()` in `util_gui` to load the stylesheet and resolve all dynamic tokens in one place. * Both callers now use the same helper instead of maintaining separate replacement logic. * Removes duplicated icon-path and overlay-colour processing code. * Benefit: future stylesheet tokens only need to be implemented once, reducing the chance of one consumer being missed. * Behaviour: no intended visual or UX change; this is a maintainability/refactor patch. | ||||
| Additional Information | Based on Scribus r27791 with patches 0000001–0000005 already applied. | ||||
| Tags | #please_test | ||||
| Attached Files | 6_theme-stylesheet-processing-refactor-v1.0.patch (5,084 bytes)
Index: scribus/scribus.cpp
===================================================================
--- scribus/scribus.cpp (revision 27791 + patches 1-5)
+++ scribus/scribus.cpp (working copy)
@@ -249,6 +249,7 @@
#include "util.h"
#include "util_file.h"
#include "util_formats.h"
+#include "util_gui.h"
#include "third_party/Qt-Advanced-Docking-System/src/DockAreaWidget.h"
#include "third_party/Qt-Advanced-Docking-System/src/IconProvider.h"
@@ -603,25 +604,7 @@
void ScribusMainWindow::setStyleSheet()
{
QByteArray stylesheet;
- if (loadRawText(ScPaths::instance().libDir() + "scribus.css", stylesheet))
- {
- QString downArrow(IconManager::instance().pathForIcon("stylesheet/go-down.png"));
- QByteArray da;
- da.append(downArrow.toUtf8());
- stylesheet.replace("___downArrow___", da);
- QString toolbararrow(IconManager::instance().pathForIcon("stylesheet/down_arrow.png"));
- QByteArray tba;
- tba.append(toolbararrow.toUtf8());
- stylesheet.replace("___tb_menu_arrow___", tba);
-
- const QColor overlayColor = QApplication::palette().color(QPalette::WindowText);
- const QByteArray overlayRgb = QString("%1, %2, %3")
- .arg(overlayColor.red())
- .arg(overlayColor.green())
- .arg(overlayColor.blue())
- .toUtf8();
- stylesheet.replace("___overlayRgb___", overlayRgb);
- }
+ loadScribusStyleSheet(stylesheet);
dockManager->setStyleSheet(stylesheet); // style sheet should be enabled when theme manager is implemented to handle color palettes in css file.
Index: scribus/ui/pageselector.cpp
===================================================================
--- scribus/ui/pageselector.cpp (revision 27791 + patches 1-5)
+++ scribus/ui/pageselector.cpp (working copy)
@@ -6,7 +6,6 @@
*/
#include "pageselector.h"
-#include <QApplication>
#include <QByteArray>
#include <QComboBox>
#include <QDebug>
@@ -14,16 +13,15 @@
#include <QHBoxLayout>
#include <QLabel>
#include <QLineEdit>
-#include <QPalette>
#include <QPixmap>
#include <QPushButton>
#include <QSignalBlocker>
#include <QToolTip>
-#include "scpaths.h"
#include "scribusapp.h"
#include "iconmanager.h"
#include "util.h"
+#include "util_gui.h"
PageSelector::PageSelector( QWidget* parent, int maximumPage ) : QWidget( parent, Qt::WindowFlags() )
{
@@ -208,22 +206,8 @@
lastButton->setIcon(iconManager.loadIcon("go-last"));
QByteArray stylesheet;
- if (loadRawText(ScPaths::instance().libDir() + "scribus.css", stylesheet))
- {
- QString downArrow(IconManager::instance().pathForIcon("stylesheet/go-down.png"));
- QByteArray da;
- da.append(downArrow.toUtf8());
- stylesheet.replace("___downArrow___", da);
-
- const QColor overlayColor = QApplication::palette().color(QPalette::WindowText);
- const QByteArray overlayRgb = QString("%1, %2, %3")
- .arg(overlayColor.red())
- .arg(overlayColor.green())
- .arg(overlayColor.blue())
- .toUtf8();
- stylesheet.replace("___overlayRgb___", overlayRgb);
+ if (loadScribusStyleSheet(stylesheet))
setStyleSheet(QString(stylesheet));
- }
}
void PageSelector::languageChange()
Index: scribus/util_gui.cpp
===================================================================
--- scribus/util_gui.cpp (revision 27791 + patches 1-5)
+++ scribus/util_gui.cpp (working copy)
@@ -1,11 +1,35 @@
#include "util_gui.h"
+#include <QApplication>
#include <QPainterPath>
#include <QPalette>
+#include "iconmanager.h"
#include "scpainter.h"
#include "scpattern.h"
+#include "scpaths.h"
#include "scribusapp.h"
+#include "util.h"
#include "vgradient.h"
+
+bool loadScribusStyleSheet(QByteArray& stylesheet)
+{
+ if (!loadRawText(ScPaths::instance().libDir() + "scribus.css", stylesheet))
+ return false;
+
+ IconManager& iconManager = IconManager::instance();
+ stylesheet.replace("___downArrow___", iconManager.pathForIcon("stylesheet/go-down.png").toUtf8());
+ stylesheet.replace("___tb_menu_arrow___", iconManager.pathForIcon("stylesheet/down_arrow.png").toUtf8());
+
+ const QColor overlayColor = QApplication::palette().color(QPalette::WindowText);
+ const QByteArray overlayRgb = QString("%1, %2, %3")
+ .arg(overlayColor.red())
+ .arg(overlayColor.green())
+ .arg(overlayColor.blue())
+ .toUtf8();
+ stylesheet.replace("___overlayRgb___", overlayRgb);
+
+ return true;
+}
void drawCircularHandle(QPainter *painter, QPointF center, qreal width, QBrush background, bool isEnabled)
{
Index: scribus/util_gui.h
===================================================================
--- scribus/util_gui.h (revision 27791 + patches 1-5)
+++ scribus/util_gui.h (working copy)
@@ -1,6 +1,7 @@
#ifndef _UTIL_GUI_H
#define _UTIL_GUI_H
+#include <QByteArray>
#include <QPainter>
#include <QPalette>
#include "scribusapi.h"
@@ -34,6 +35,7 @@
bool SCRIBUS_API isDarkColor(QColor color);
// Helper
+bool SCRIBUS_API loadScribusStyleSheet(QByteArray& stylesheet);
VColorStop SCRIBUS_API computeInBetweenStop(const VColorStop* last, const VColorStop* actual, double t);
QColor SCRIBUS_API disabledColor(QColor color);
QColor SCRIBUS_API blendColor(double factor, QColor color1, QColor color2);
| ||||
| Patch | Yes | ||||