mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Make the calibre style object accessible in Python
This commit is contained in:
parent
aea448a5a4
commit
16bae8546e
@ -1201,7 +1201,9 @@ class Application(QApplication):
|
|||||||
transient_scroller = transient_scroller()
|
transient_scroller = transient_scroller()
|
||||||
icon_map[(QStyle.StandardPixmap.SP_CustomBase.value & 0xf0000000) + 1] = I('close-for-light-theme.png')
|
icon_map[(QStyle.StandardPixmap.SP_CustomBase.value & 0xf0000000) + 1] = I('close-for-light-theme.png')
|
||||||
icon_map[(QStyle.StandardPixmap.SP_CustomBase.value & 0xf0000000) + 2] = I('close-for-dark-theme.png')
|
icon_map[(QStyle.StandardPixmap.SP_CustomBase.value & 0xf0000000) + 2] = I('close-for-dark-theme.png')
|
||||||
self.pi.load_style(icon_map, transient_scroller)
|
self.calibre_style = style = self.pi.CalibreStyle(transient_scroller)
|
||||||
|
style.set_icon_map(icon_map)
|
||||||
|
self.setStyle(style)
|
||||||
|
|
||||||
def _send_file_open_events(self):
|
def _send_file_open_events(self):
|
||||||
with self._file_open_lock:
|
with self._file_open_lock:
|
||||||
|
@ -118,7 +118,7 @@ dpiScaled(qreal value) {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
CalibreStyle::CalibreStyle(const QHash<unsigned long, QString> &icmap, int transient_scroller) : QProxyStyle(QString::fromUtf8("Fusion")), icon_map(icmap), transient_scroller(transient_scroller) {
|
CalibreStyle::CalibreStyle(int transient_scroller) : QProxyStyle(QString::fromUtf8("Fusion")), icon_map(), transient_scroller(transient_scroller) {
|
||||||
setObjectName(QString("calibre"));
|
setObjectName(QString("calibre"));
|
||||||
desktop_environment = detectDesktopEnvironment();
|
desktop_environment = detectDesktopEnvironment();
|
||||||
button_layout = static_cast<QDialogButtonBox::ButtonLayout>(QProxyStyle::styleHint(SH_DialogButtonLayout));
|
button_layout = static_cast<QDialogButtonBox::ButtonLayout>(QProxyStyle::styleHint(SH_DialogButtonLayout));
|
||||||
@ -126,6 +126,10 @@ CalibreStyle::CalibreStyle(const QHash<unsigned long, QString> &icmap, int trans
|
|||||||
button_layout = QDialogButtonBox::GnomeLayout;
|
button_layout = QDialogButtonBox::GnomeLayout;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CalibreStyle::set_icon_map(QHash<unsigned long, QString> &ic) {
|
||||||
|
icon_map = ic;
|
||||||
|
}
|
||||||
|
|
||||||
int CalibreStyle::styleHint(StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const {
|
int CalibreStyle::styleHint(StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const {
|
||||||
switch (hint) {
|
switch (hint) {
|
||||||
case SH_DialogButtonBox_ButtonsHaveIcons:
|
case SH_DialogButtonBox_ButtonsHaveIcons:
|
||||||
@ -377,11 +381,6 @@ void CalibreStyle::drawControl(ControlElement element, const QStyleOption *optio
|
|||||||
QProxyStyle::drawControl(element, option, painter, widget);
|
QProxyStyle::drawControl(element, option, painter, widget);
|
||||||
}
|
}
|
||||||
|
|
||||||
int load_style(const QHash<unsigned long,QString> &icon_map, int transient_scroller) {
|
|
||||||
QApplication::setStyle(new CalibreStyle(icon_map, transient_scroller));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
class NoActivateStyle: public QProxyStyle {
|
class NoActivateStyle: public QProxyStyle {
|
||||||
public:
|
public:
|
||||||
NoActivateStyle(QStyle *base) : QProxyStyle(base) { }
|
NoActivateStyle(QStyle *base) : QProxyStyle(base) { }
|
||||||
|
@ -90,14 +90,15 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
class CalibreStyle : public QProxyStyle {
|
class CalibreStyle : public QProxyStyle {
|
||||||
private:
|
protected:
|
||||||
const QHash<unsigned long, QString> icon_map;
|
QHash<unsigned long, QString> icon_map;
|
||||||
QByteArray desktop_environment;
|
QByteArray desktop_environment;
|
||||||
QDialogButtonBox::ButtonLayout button_layout;
|
QDialogButtonBox::ButtonLayout button_layout;
|
||||||
int transient_scroller;
|
int transient_scroller;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CalibreStyle(const QHash<unsigned long, QString> &icmap, int transient_scroller);
|
CalibreStyle(int transient_scroller);
|
||||||
|
void set_icon_map(QHash<unsigned long, QString> &icon_map);
|
||||||
virtual int styleHint(StyleHint hint, const QStyleOption *option = 0, const QWidget *widget = 0, QStyleHintReturn *returnData = 0) const;
|
virtual int styleHint(StyleHint hint, const QStyleOption *option = 0, const QWidget *widget = 0, QStyleHintReturn *returnData = 0) const;
|
||||||
virtual QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption * option = 0, const QWidget * widget = 0) const;
|
virtual QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption * option = 0, const QWidget * widget = 0) const;
|
||||||
virtual int pixelMetric(PixelMetric metric, const QStyleOption * option = 0, const QWidget * widget = 0) const;
|
virtual int pixelMetric(PixelMetric metric, const QStyleOption * option = 0, const QWidget * widget = 0) const;
|
||||||
@ -157,7 +158,6 @@ private:
|
|||||||
SpinAnimator m_animator;
|
SpinAnimator m_animator;
|
||||||
};
|
};
|
||||||
|
|
||||||
int load_style(const QHash<unsigned long,QString> &icon_map, int transient_scroller=0);
|
|
||||||
void set_no_activate_on_click(QWidget *widget);
|
void set_no_activate_on_click(QWidget *widget);
|
||||||
void draw_snake_spinner(QPainter &painter, QRect rect, int angle, const QColor & light, const QColor & dark);
|
void draw_snake_spinner(QPainter &painter, QRect rect, int angle, const QColor & light, const QColor & dark);
|
||||||
void set_menu_on_action(QAction* ac, QMenu* menu);
|
void set_menu_on_action(QAction* ac, QMenu* menu);
|
||||||
|
@ -7,11 +7,33 @@
|
|||||||
|
|
||||||
%ModuleHeaderCode
|
%ModuleHeaderCode
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
int load_style(const QHash<unsigned long,QString> &icon_map, int transient_scroller);
|
|
||||||
void set_no_activate_on_click(QWidget *widget);
|
void set_no_activate_on_click(QWidget *widget);
|
||||||
void draw_snake_spinner(QPainter &painter, QRect rect, int angle, const QColor & light, const QColor & dark);
|
void draw_snake_spinner(QPainter &painter, QRect rect, int angle, const QColor & light, const QColor & dark);
|
||||||
%End
|
%End
|
||||||
|
|
||||||
|
class CalibreStyle : QProxyStyle {
|
||||||
|
%TypeHeaderCode
|
||||||
|
#include <QProgressIndicator.h>
|
||||||
|
%End
|
||||||
|
|
||||||
|
public:
|
||||||
|
CalibreStyle(int transient_scroller);
|
||||||
|
|
||||||
|
void set_icon_map(SIP_PYDICT icon_map_);
|
||||||
|
%MethodCode
|
||||||
|
QHash<unsigned long, QString> icon_map;
|
||||||
|
PyObject *key, *value;
|
||||||
|
Py_ssize_t pos = 0;
|
||||||
|
while (PyDict_Next(a0, &pos, &key, &value)) {
|
||||||
|
icon_map.insert(PyLong_AsUnsignedLong(key), QString::fromUtf8(PyUnicode_AsUTF8(value)));
|
||||||
|
}
|
||||||
|
sipCpp->set_icon_map(icon_map);
|
||||||
|
%End
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
class SpinAnimator : QObject {
|
class SpinAnimator : QObject {
|
||||||
|
|
||||||
%TypeHeaderCode
|
%TypeHeaderCode
|
||||||
@ -74,16 +96,6 @@ signals:
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
int load_style(SIP_PYDICT icon_map_, int transient_scroller);
|
|
||||||
%MethodCode
|
|
||||||
QHash<unsigned long,QString> icon_map;
|
|
||||||
PyObject *key, *value;
|
|
||||||
Py_ssize_t pos = 0;
|
|
||||||
while (PyDict_Next(a0, &pos, &key, &value)) {
|
|
||||||
icon_map.insert(PyLong_AsUnsignedLong(key), QString::fromUtf8(PyUnicode_AsUTF8(value)));
|
|
||||||
}
|
|
||||||
load_style(icon_map, a1);
|
|
||||||
%End
|
|
||||||
void set_no_activate_on_click(QWidget *widget);
|
void set_no_activate_on_click(QWidget *widget);
|
||||||
void draw_snake_spinner(QPainter &painter, QRect rect, int angle, const QColor & light, const QColor & dark) /ReleaseGIL/;
|
void draw_snake_spinner(QPainter &painter, QRect rect, int angle, const QColor & light, const QColor & dark) /ReleaseGIL/;
|
||||||
void set_menu_on_action(QAction* ac, QMenu* menu);
|
void set_menu_on_action(QAction* ac, QMenu* menu);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user