From 37b0bd3594a0effb8252c22377f003deafc55b19 Mon Sep 17 00:00:00 2001 From: Soeren Apel Date: Sun, 14 Oct 2018 22:27:33 +0200 Subject: [PATCH] Add themes and implement theme support --- README | 9 +- icons/settings-general.png | Bin 0 -> 1488 bytes main.cpp | 2 + pulseview.qrc | 75 +- pv/dialogs/settings.cpp | 47 + pv/dialogs/settings.hpp | 2 + pv/globalsettings.cpp | 70 + pv/globalsettings.hpp | 11 + themes/darkstyle/darkstyle.qss | 343 +++++ themes/darkstyle/icon_branch_closed.png | Bin 0 -> 310 bytes themes/darkstyle/icon_branch_end.png | Bin 0 -> 358 bytes themes/darkstyle/icon_branch_more.png | Bin 0 -> 207 bytes themes/darkstyle/icon_branch_open.png | Bin 0 -> 313 bytes themes/darkstyle/icon_checkbox_checked.png | Bin 0 -> 176 bytes .../icon_checkbox_checked_disabled.png | Bin 0 -> 373 bytes .../icon_checkbox_checked_pressed.png | Bin 0 -> 373 bytes .../darkstyle/icon_checkbox_indeterminate.png | Bin 0 -> 121 bytes .../icon_checkbox_indeterminate_disabled.png | Bin 0 -> 286 bytes .../icon_checkbox_indeterminate_pressed.png | Bin 0 -> 286 bytes themes/darkstyle/icon_checkbox_unchecked.png | Bin 0 -> 119 bytes .../icon_checkbox_unchecked_disabled.png | Bin 0 -> 238 bytes .../icon_checkbox_unchecked_pressed.png | Bin 0 -> 238 bytes themes/darkstyle/icon_close.png | Bin 0 -> 422 bytes themes/darkstyle/icon_radiobutton_checked.png | Bin 0 -> 370 bytes .../icon_radiobutton_checked_disabled.png | Bin 0 -> 617 bytes .../icon_radiobutton_checked_pressed.png | Bin 0 -> 616 bytes .../darkstyle/icon_radiobutton_unchecked.png | Bin 0 -> 310 bytes .../icon_radiobutton_unchecked_disabled.png | Bin 0 -> 538 bytes .../icon_radiobutton_unchecked_pressed.png | Bin 0 -> 537 bytes themes/darkstyle/icon_restore.png | Bin 0 -> 404 bytes themes/darkstyle/icon_undock.png | Bin 0 -> 424 bytes themes/darkstyle/icon_vline.png | Bin 0 -> 303 bytes themes/qdarkstyle/rc/Hmovetoolbar.png | Bin 0 -> 220 bytes themes/qdarkstyle/rc/Hsepartoolbar.png | Bin 0 -> 172 bytes themes/qdarkstyle/rc/Vmovetoolbar.png | Bin 0 -> 228 bytes themes/qdarkstyle/rc/Vsepartoolbar.png | Bin 0 -> 187 bytes themes/qdarkstyle/rc/branch_closed-on.png | Bin 0 -> 147 bytes themes/qdarkstyle/rc/branch_closed.png | Bin 0 -> 160 bytes themes/qdarkstyle/rc/branch_open-on.png | Bin 0 -> 150 bytes themes/qdarkstyle/rc/branch_open.png | Bin 0 -> 166 bytes themes/qdarkstyle/rc/checkbox_checked.png | Bin 0 -> 492 bytes .../rc/checkbox_checked_disabled.png | Bin 0 -> 491 bytes .../qdarkstyle/rc/checkbox_checked_focus.png | Bin 0 -> 252 bytes .../qdarkstyle/rc/checkbox_indeterminate.png | Bin 0 -> 493 bytes .../rc/checkbox_indeterminate_disabled.png | Bin 0 -> 492 bytes .../rc/checkbox_indeterminate_focus.png | Bin 0 -> 249 bytes themes/qdarkstyle/rc/checkbox_unchecked.png | Bin 0 -> 464 bytes .../rc/checkbox_unchecked_disabled.png | Bin 0 -> 464 bytes .../rc/checkbox_unchecked_focus.png | Bin 0 -> 240 bytes themes/qdarkstyle/rc/close-hover.png | Bin 0 -> 598 bytes themes/qdarkstyle/rc/close-pressed.png | Bin 0 -> 598 bytes themes/qdarkstyle/rc/close.png | Bin 0 -> 586 bytes themes/qdarkstyle/rc/down_arrow.png | Bin 0 -> 165 bytes themes/qdarkstyle/rc/down_arrow_disabled.png | Bin 0 -> 166 bytes themes/qdarkstyle/rc/left_arrow.png | Bin 0 -> 166 bytes themes/qdarkstyle/rc/left_arrow_disabled.png | Bin 0 -> 166 bytes themes/qdarkstyle/rc/radio_checked.png | Bin 0 -> 940 bytes .../qdarkstyle/rc/radio_checked_disabled.png | Bin 0 -> 972 bytes themes/qdarkstyle/rc/radio_checked_focus.png | Bin 0 -> 846 bytes themes/qdarkstyle/rc/radio_unchecked.png | Bin 0 -> 728 bytes .../rc/radio_unchecked_disabled.png | Bin 0 -> 760 bytes .../qdarkstyle/rc/radio_unchecked_focus.png | Bin 0 -> 646 bytes themes/qdarkstyle/rc/right_arrow.png | Bin 0 -> 160 bytes themes/qdarkstyle/rc/right_arrow_disabled.png | Bin 0 -> 160 bytes themes/qdarkstyle/rc/sizegrip.png | Bin 0 -> 129 bytes .../qdarkstyle/rc/stylesheet-branch-end.png | Bin 0 -> 224 bytes .../qdarkstyle/rc/stylesheet-branch-more.png | Bin 0 -> 182 bytes themes/qdarkstyle/rc/stylesheet-vline.png | Bin 0 -> 239 bytes themes/qdarkstyle/rc/transparent.png | Bin 0 -> 195 bytes themes/qdarkstyle/rc/undock.png | Bin 0 -> 578 bytes themes/qdarkstyle/rc/up_arrow.png | Bin 0 -> 158 bytes themes/qdarkstyle/rc/up_arrow_disabled.png | Bin 0 -> 159 bytes themes/qdarkstyle/style.qss | 1248 +++++++++++++++++ 73 files changed, 1805 insertions(+), 2 deletions(-) create mode 100644 icons/settings-general.png create mode 100644 themes/darkstyle/darkstyle.qss create mode 100644 themes/darkstyle/icon_branch_closed.png create mode 100644 themes/darkstyle/icon_branch_end.png create mode 100644 themes/darkstyle/icon_branch_more.png create mode 100644 themes/darkstyle/icon_branch_open.png create mode 100644 themes/darkstyle/icon_checkbox_checked.png create mode 100644 themes/darkstyle/icon_checkbox_checked_disabled.png create mode 100644 themes/darkstyle/icon_checkbox_checked_pressed.png create mode 100644 themes/darkstyle/icon_checkbox_indeterminate.png create mode 100644 themes/darkstyle/icon_checkbox_indeterminate_disabled.png create mode 100644 themes/darkstyle/icon_checkbox_indeterminate_pressed.png create mode 100644 themes/darkstyle/icon_checkbox_unchecked.png create mode 100644 themes/darkstyle/icon_checkbox_unchecked_disabled.png create mode 100644 themes/darkstyle/icon_checkbox_unchecked_pressed.png create mode 100644 themes/darkstyle/icon_close.png create mode 100644 themes/darkstyle/icon_radiobutton_checked.png create mode 100644 themes/darkstyle/icon_radiobutton_checked_disabled.png create mode 100644 themes/darkstyle/icon_radiobutton_checked_pressed.png create mode 100644 themes/darkstyle/icon_radiobutton_unchecked.png create mode 100644 themes/darkstyle/icon_radiobutton_unchecked_disabled.png create mode 100644 themes/darkstyle/icon_radiobutton_unchecked_pressed.png create mode 100644 themes/darkstyle/icon_restore.png create mode 100644 themes/darkstyle/icon_undock.png create mode 100644 themes/darkstyle/icon_vline.png create mode 100644 themes/qdarkstyle/rc/Hmovetoolbar.png create mode 100644 themes/qdarkstyle/rc/Hsepartoolbar.png create mode 100644 themes/qdarkstyle/rc/Vmovetoolbar.png create mode 100644 themes/qdarkstyle/rc/Vsepartoolbar.png create mode 100644 themes/qdarkstyle/rc/branch_closed-on.png create mode 100644 themes/qdarkstyle/rc/branch_closed.png create mode 100644 themes/qdarkstyle/rc/branch_open-on.png create mode 100644 themes/qdarkstyle/rc/branch_open.png create mode 100644 themes/qdarkstyle/rc/checkbox_checked.png create mode 100644 themes/qdarkstyle/rc/checkbox_checked_disabled.png create mode 100644 themes/qdarkstyle/rc/checkbox_checked_focus.png create mode 100644 themes/qdarkstyle/rc/checkbox_indeterminate.png create mode 100644 themes/qdarkstyle/rc/checkbox_indeterminate_disabled.png create mode 100644 themes/qdarkstyle/rc/checkbox_indeterminate_focus.png create mode 100644 themes/qdarkstyle/rc/checkbox_unchecked.png create mode 100644 themes/qdarkstyle/rc/checkbox_unchecked_disabled.png create mode 100644 themes/qdarkstyle/rc/checkbox_unchecked_focus.png create mode 100644 themes/qdarkstyle/rc/close-hover.png create mode 100644 themes/qdarkstyle/rc/close-pressed.png create mode 100644 themes/qdarkstyle/rc/close.png create mode 100644 themes/qdarkstyle/rc/down_arrow.png create mode 100644 themes/qdarkstyle/rc/down_arrow_disabled.png create mode 100644 themes/qdarkstyle/rc/left_arrow.png create mode 100644 themes/qdarkstyle/rc/left_arrow_disabled.png create mode 100644 themes/qdarkstyle/rc/radio_checked.png create mode 100644 themes/qdarkstyle/rc/radio_checked_disabled.png create mode 100644 themes/qdarkstyle/rc/radio_checked_focus.png create mode 100644 themes/qdarkstyle/rc/radio_unchecked.png create mode 100644 themes/qdarkstyle/rc/radio_unchecked_disabled.png create mode 100644 themes/qdarkstyle/rc/radio_unchecked_focus.png create mode 100644 themes/qdarkstyle/rc/right_arrow.png create mode 100644 themes/qdarkstyle/rc/right_arrow_disabled.png create mode 100644 themes/qdarkstyle/rc/sizegrip.png create mode 100644 themes/qdarkstyle/rc/stylesheet-branch-end.png create mode 100644 themes/qdarkstyle/rc/stylesheet-branch-more.png create mode 100644 themes/qdarkstyle/rc/stylesheet-vline.png create mode 100644 themes/qdarkstyle/rc/transparent.png create mode 100644 themes/qdarkstyle/rc/undock.png create mode 100644 themes/qdarkstyle/rc/up_arrow.png create mode 100644 themes/qdarkstyle/rc/up_arrow_disabled.png create mode 100644 themes/qdarkstyle/style.qss diff --git a/README b/README index 613ecc5..8a3f8e9 100644 --- a/README +++ b/README @@ -44,12 +44,19 @@ is to be interpreted as Copyright (C) 2010,2011,2012,2013 Contributor Name -Icons authors and licenses +Resource authors and licenses -------------------------- icons/information.svg: Bobarino https://en.wikipedia.org/wiki/File:Information.svg +QDarkStyleSheet: Colin Duquesnoy + https://github.com/ColinDuquesnoy/QDarkStyleSheet + License: https://github.com/ColinDuquesnoy/QDarkStyleSheet/blob/master/LICENSE.md + +DarkStyle: Juergen Skrotzky + https://github.com/Jorgen-VikingGod/Qt-Frameless-Window-DarkStyle + Mailing list ------------ diff --git a/icons/settings-general.png b/icons/settings-general.png new file mode 100644 index 0000000000000000000000000000000000000000..4decc893f846ade39d9ff0592c6d206bc333a177 GIT binary patch literal 1488 zcmV;>1uy!EP)3;q{a$<5OZ>6KCN?#=B*DR6Ck-K((4=XV6g5OmrNm8(h^2n0 z=~MbvSxuhkQ&p*IB`dTpi_%tYAfYeC3KeZ?3alM4226tkn1%JO*SlWt_r1IK_945* zPOGZtX>?}J@BDSnoEgFYVLM;`Xn{}rQt))5*G_X9*mhbHSj-5qRx z>CtBL#S(f!XMC>I@|p8TfmhbX$aT=yj(ih6e{NH=>s)9!d|-V_lN-?_Mnzu*hK9of z!YKUZLBH7zoUDri5UbFGV*^bx`{5g}4%+6UaejGfVHNqs9qnuhD4aTbjfc86@TZH} zdwZRNP4@+eriz@ro?nTK4mGX^A2^)(`mT0wSI{p4J`ch&QKiMr*b1rTJdv4O2qDl^ zh2|zNxs??Dzy=b@EM09)w0P|tok|+1Lgn$u=+NZ7QmD4?|M~RQ^ah_3uvpHPNu*0m z&D>^s_6`nB!=Y(tQX!KmVhI=Nbdgqn1A4{c?K2Bz9lB2Or#1db`Nypb4lxi52vdCjLeWuE#t6hJl5NZL(@oQ3Jh*`3#ye@*0MxsIQ(~D7eG%( z6E6>TqF5%`T#0hILMD?m$4*DjR5kbWk

$z59On($~KFblB_hYlRRrbO0a+b;n%;kk!N~acxrnP0mR}N3WYLTIs^Rt_Y=jk%^!-44lM)RxOVok>bSr4 z(f;iN+qQ1R?X+XpG`6?6*b#KHBWPnXS{#%B9l;=mp%PCPxIUL)aWTun!U~pYl2;lX zb!gqPnWZCzLXO4;C#8bHwSUD~S<$IhRD6wrdo`ZAFl)tPi!7z`q|$k+6%)HnMM#0o zEE%EUux~Bc<@GZvqccFnquC->v3@Sz483t z;&$7`1ziAduDfo}z3}=z`{td;zr3wYNFk6y@JMev|CpNLEaY^g5C|c-zuix3OCwSW^0_kA ziU~mUb{b7nIDdJD_dc#^fDQas_ z70IT~03e9oN+E@yiq7;WQGPd_G0aN&iK$;7jHm$p2Y(Y1mbv>|Pjm>k=8=Y3!Q-hti&#yIM%r3sqK;Z?AB}X0!!)CM-yW|_+GB@A^v(x?|pHg3oL;^ za_qt#F*`Hyvn$6(4#mB_zDx6q-IwN*;psoTaVT+R{0301H&6lGKwHngksm$s>aWfN zgTOPuv!UUzHFrH>MNWTW&0SAeq2aIvJPSMx><0RP&jGDK17NFvO%_m5G-qk{{hz!8 zoB$kvy_OUJ|3=Tc0jw$0fjm$EN{3Ym9+cwJBpSgs{80Q2AQ5mth5AqzVI0000CNB( literal 0 HcmV?d00001 diff --git a/main.cpp b/main.cpp index c7fe9bb..4bd6388 100644 --- a/main.cpp +++ b/main.cpp @@ -256,7 +256,9 @@ int main(int argc, char *argv[]) // Prepare the global settings since logging needs them early on pv::GlobalSettings settings; + settings.save_default_palette(); settings.set_defaults_where_needed(); + settings.apply_theme(); pv::logging.init(); diff --git a/pulseview.qrc b/pulseview.qrc index 9b7510d..33e3610 100644 --- a/pulseview.qrc +++ b/pulseview.qrc @@ -1,5 +1,5 @@ - + icons/add-decoder.svg icons/application-exit.png icons/channels.svg @@ -15,6 +15,7 @@ icons/media-playback-start.png icons/menu.svg icons/preferences-system.png + icons/settings-general.png icons/settings-views.svg icons/pulseview.png icons/pulseview.svg @@ -41,4 +42,76 @@ icons/zoom-in.png icons/zoom-out.png + + + + themes/qdarkstyle/style.qss + themes/qdarkstyle/rc/up_arrow_disabled.png + themes/qdarkstyle/rc/Hmovetoolbar.png + themes/qdarkstyle/rc/stylesheet-branch-end.png + themes/qdarkstyle/rc/branch_closed-on.png + themes/qdarkstyle/rc/stylesheet-vline.png + themes/qdarkstyle/rc/branch_closed.png + themes/qdarkstyle/rc/branch_open-on.png + themes/qdarkstyle/rc/transparent.png + themes/qdarkstyle/rc/right_arrow_disabled.png + themes/qdarkstyle/rc/sizegrip.png + themes/qdarkstyle/rc/close.png + themes/qdarkstyle/rc/close-hover.png + themes/qdarkstyle/rc/close-pressed.png + themes/qdarkstyle/rc/down_arrow.png + themes/qdarkstyle/rc/Vmovetoolbar.png + themes/qdarkstyle/rc/left_arrow.png + themes/qdarkstyle/rc/stylesheet-branch-more.png + themes/qdarkstyle/rc/up_arrow.png + themes/qdarkstyle/rc/right_arrow.png + themes/qdarkstyle/rc/left_arrow_disabled.png + themes/qdarkstyle/rc/Hsepartoolbar.png + themes/qdarkstyle/rc/branch_open.png + themes/qdarkstyle/rc/Vsepartoolbar.png + themes/qdarkstyle/rc/down_arrow_disabled.png + themes/qdarkstyle/rc/undock.png + themes/qdarkstyle/rc/checkbox_checked_disabled.png + themes/qdarkstyle/rc/checkbox_checked_focus.png + themes/qdarkstyle/rc/checkbox_checked.png + themes/qdarkstyle/rc/checkbox_indeterminate.png + themes/qdarkstyle/rc/checkbox_indeterminate_focus.png + themes/qdarkstyle/rc/checkbox_unchecked_disabled.png + themes/qdarkstyle/rc/checkbox_unchecked_focus.png + themes/qdarkstyle/rc/checkbox_unchecked.png + themes/qdarkstyle/rc/radio_checked_disabled.png + themes/qdarkstyle/rc/radio_checked_focus.png + themes/qdarkstyle/rc/radio_checked.png + themes/qdarkstyle/rc/radio_unchecked_disabled.png + themes/qdarkstyle/rc/radio_unchecked_focus.png + themes/qdarkstyle/rc/radio_unchecked.png + + + + + themes/darkstyle/darkstyle.qss + themes/darkstyle/icon_close.png + themes/darkstyle/icon_restore.png + themes/darkstyle/icon_undock.png + themes/darkstyle/icon_branch_closed.png + themes/darkstyle/icon_branch_end.png + themes/darkstyle/icon_branch_more.png + themes/darkstyle/icon_branch_open.png + themes/darkstyle/icon_vline.png + themes/darkstyle/icon_checkbox_checked.png + themes/darkstyle/icon_checkbox_indeterminate.png + themes/darkstyle/icon_checkbox_unchecked.png + themes/darkstyle/icon_checkbox_checked_pressed.png + themes/darkstyle/icon_checkbox_indeterminate_pressed.png + themes/darkstyle/icon_checkbox_unchecked_pressed.png + themes/darkstyle/icon_checkbox_checked_disabled.png + themes/darkstyle/icon_checkbox_indeterminate_disabled.png + themes/darkstyle/icon_checkbox_unchecked_disabled.png + themes/darkstyle/icon_radiobutton_checked.png + themes/darkstyle/icon_radiobutton_unchecked.png + themes/darkstyle/icon_radiobutton_checked_pressed.png + themes/darkstyle/icon_radiobutton_unchecked_pressed.png + themes/darkstyle/icon_radiobutton_checked_disabled.png + themes/darkstyle/icon_radiobutton_unchecked_disabled.png + diff --git a/pv/dialogs/settings.cpp b/pv/dialogs/settings.cpp index ad4fd4a..0795879 100644 --- a/pv/dialogs/settings.cpp +++ b/pv/dialogs/settings.cpp @@ -126,6 +126,15 @@ Settings::Settings(DeviceManager &device_manager, QWidget *parent) : void Settings::create_pages() { + // General page + pages->addWidget(get_general_settings_form(pages)); + + QListWidgetItem *generalButton = new QListWidgetItem(page_list); + generalButton->setIcon(QIcon(":/icons/settings-general.png")); + generalButton->setText(tr("General")); + generalButton->setTextAlignment(Qt::AlignVCenter); + generalButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); + // View page pages->addWidget(get_view_settings_form(pages)); @@ -192,6 +201,37 @@ QPlainTextEdit *Settings::create_log_view() const return log_view; } +QWidget *Settings::get_general_settings_form(QWidget *parent) const +{ + GlobalSettings settings; + + QWidget *form = new QWidget(parent); + QVBoxLayout *form_layout = new QVBoxLayout(form); + + // General settings + QGroupBox *general_group = new QGroupBox(tr("General")); + form_layout->addWidget(general_group); + + QFormLayout *general_layout = new QFormLayout(); + general_group->setLayout(general_layout); + + QComboBox *theme_cb = new QComboBox(); + for (pair entry : Themes) + theme_cb->addItem(entry.first, entry.second); + + theme_cb->setCurrentIndex( + settings.value(GlobalSettings::Key_General_Theme).toInt()); + connect(theme_cb, SIGNAL(currentIndexChanged(int)), + this, SLOT(on_general_theme_changed_changed(int))); + general_layout->addRow(tr("User interface theme"), theme_cb); + + QLabel *description_1 = new QLabel(tr("(You may need to restart PulseView for all UI elements to update)")); + description_1->setAlignment(Qt::AlignRight); + general_layout->addRow(description_1); + + return form; +} + QWidget *Settings::get_view_settings_form(QWidget *parent) const { GlobalSettings settings; @@ -507,6 +547,13 @@ void Settings::on_page_changed(QListWidgetItem *current, QListWidgetItem *previo pages->setCurrentIndex(page_list->row(current)); } +void Settings::on_general_theme_changed_changed(int state) +{ + GlobalSettings settings; + settings.setValue(GlobalSettings::Key_General_Theme, state); + settings.apply_theme(); +} + void Settings::on_view_zoomToFitDuringAcq_changed(int state) { GlobalSettings settings; diff --git a/pv/dialogs/settings.hpp b/pv/dialogs/settings.hpp index f5efe35..1473aa5 100644 --- a/pv/dialogs/settings.hpp +++ b/pv/dialogs/settings.hpp @@ -47,6 +47,7 @@ public: QCheckBox *create_checkbox(const QString& key, const char* slot) const; QPlainTextEdit *create_log_view() const; + QWidget *get_general_settings_form(QWidget *parent) const; QWidget *get_view_settings_form(QWidget *parent) const; QWidget *get_decoder_settings_form(QWidget *parent); QWidget *get_about_page(QWidget *parent) const; @@ -57,6 +58,7 @@ public: private Q_SLOTS: void on_page_changed(QListWidgetItem *current, QListWidgetItem *previous); + void on_general_theme_changed_changed(int state); void on_view_zoomToFitDuringAcq_changed(int state); void on_view_zoomToFitAfterAcq_changed(int state); void on_view_triggerIsZero_changed(int state); diff --git a/pv/globalsettings.cpp b/pv/globalsettings.cpp index ae8682a..55ceb5a 100644 --- a/pv/globalsettings.cpp +++ b/pv/globalsettings.cpp @@ -22,15 +22,25 @@ #include #include #include +#include #include +#include #include using std::map; +using std::pair; using std::string; using std::vector; namespace pv { +const vector< pair > Themes { + {"None" , ""}, + {"QDarkStyleSheet", ":/themes/qdarkstyle/style.qss"}, + {"DarkStyle", ":/themes/darkstyle/darkstyle.qss"} +}; + +const QString GlobalSettings::Key_General_Theme = "General_Theme"; const QString GlobalSettings::Key_View_ZoomToFitDuringAcq = "View_ZoomToFitDuringAcq"; const QString GlobalSettings::Key_View_ZoomToFitAfterAcq = "View_ZoomToFitAfterAcq"; const QString GlobalSettings::Key_View_TriggerIsZeroTime = "View_TriggerIsZeroTime"; @@ -53,6 +63,7 @@ const QString GlobalSettings::Key_Log_NotifyOfStacktrace = "Log_NotifyOfStacktra vector GlobalSettings::callbacks_; bool GlobalSettings::tracking_ = false; map GlobalSettings::tracked_changes_; +QPalette GlobalSettings::default_palette_; GlobalSettings::GlobalSettings() : QSettings() @@ -62,6 +73,10 @@ GlobalSettings::GlobalSettings() : void GlobalSettings::set_defaults_where_needed() { + // Use no theme by default + if (!contains(Key_General_Theme)) + setValue(Key_General_Theme, 0); + // Enable zoom-to-fit after acquisition by default if (!contains(Key_View_ZoomToFitAfterAcq)) setValue(Key_View_ZoomToFitAfterAcq, true); @@ -107,6 +122,61 @@ void GlobalSettings::set_defaults_where_needed() setValue(Key_Log_NotifyOfStacktrace, true); } +void GlobalSettings::save_default_palette() +{ + default_palette_ = QApplication::palette(); +} + +void GlobalSettings::apply_theme() +{ + QString theme_name = Themes.at(value(Key_General_Theme).toInt()).first; + QString resource_name = Themes.at(value(Key_General_Theme).toInt()).second; + + if (!resource_name.isEmpty()) { + QFile file(resource_name); + file.open(QFile::ReadOnly | QFile::Text); + qApp->setStyleSheet(file.readAll()); + } else + qApp->setStyleSheet(""); + + qApp->setPalette(default_palette_); + + if (theme_name.compare("QDarkStyleSheet") == 0) { + QPalette dark_palette; + dark_palette.setColor(QPalette::Window, QColor(53, 53, 53)); + dark_palette.setColor(QPalette::WindowText, Qt::white); + dark_palette.setColor(QPalette::Base, QColor(42, 42, 42)); + dark_palette.setColor(QPalette::Dark, QColor(35, 35, 35)); + dark_palette.setColor(QPalette::Highlight, QColor(42, 130, 218)); + qApp->setPalette(dark_palette); + } else if (theme_name.compare("DarkStyle") == 0) { + QPalette dark_palette; + dark_palette.setColor(QPalette::Window, QColor(53, 53, 53)); + dark_palette.setColor(QPalette::WindowText, Qt::white); + dark_palette.setColor(QPalette::Disabled, QPalette::WindowText, QColor(127, 127, 127)); + dark_palette.setColor(QPalette::Base, QColor(42, 42, 42)); + dark_palette.setColor(QPalette::AlternateBase, QColor(66, 66, 66)); + dark_palette.setColor(QPalette::ToolTipBase, Qt::white); + dark_palette.setColor(QPalette::ToolTipText, QColor(53, 53, 53)); + dark_palette.setColor(QPalette::Text, Qt::white); + dark_palette.setColor(QPalette::Disabled, QPalette::Text, QColor(127, 127, 127)); + dark_palette.setColor(QPalette::Dark, QColor(35, 35, 35)); + dark_palette.setColor(QPalette::Shadow, QColor(20, 20, 20)); + dark_palette.setColor(QPalette::Button, QColor(53, 53, 53)); + dark_palette.setColor(QPalette::ButtonText, Qt::white); + dark_palette.setColor(QPalette::Disabled, QPalette::ButtonText, QColor(127, 127, 127)); + dark_palette.setColor(QPalette::BrightText, Qt::red); + dark_palette.setColor(QPalette::Link, QColor(42, 130, 218)); + dark_palette.setColor(QPalette::Highlight, QColor(42, 130, 218)); + dark_palette.setColor(QPalette::Disabled, QPalette::Highlight, QColor(80, 80, 80)); + dark_palette.setColor(QPalette::HighlightedText, Qt::white); + dark_palette.setColor(QPalette::Disabled, QPalette::HighlightedText, QColor(127, 127, 127)); + qApp->setPalette(dark_palette); + } + + QPixmapCache::clear(); +} + void GlobalSettings::add_change_handler(GlobalSettingsInterface *cb) { callbacks_.push_back(cb); diff --git a/pv/globalsettings.hpp b/pv/globalsettings.hpp index 6e027d7..d23bf63 100644 --- a/pv/globalsettings.hpp +++ b/pv/globalsettings.hpp @@ -25,15 +25,20 @@ #include #include +#include #include #include #include using std::map; +using std::pair; using std::vector; namespace pv { +extern const vector< pair > Themes; + + class GlobalSettingsInterface { public: @@ -46,6 +51,7 @@ class GlobalSettings : public QSettings Q_OBJECT public: + static const QString Key_General_Theme; static const QString Key_View_ZoomToFitDuringAcq; static const QString Key_View_ZoomToFitAfterAcq; static const QString Key_View_TriggerIsZeroTime; @@ -76,6 +82,9 @@ public: void set_defaults_where_needed(); + void save_default_palette(); + void apply_theme(); + static void add_change_handler(GlobalSettingsInterface *cb); static void remove_change_handler(GlobalSettingsInterface *cb); @@ -112,6 +121,8 @@ private: static bool tracking_; static map tracked_changes_; + + static QPalette default_palette_; }; } // namespace pv diff --git a/themes/darkstyle/darkstyle.qss b/themes/darkstyle/darkstyle.qss new file mode 100644 index 0000000..1cb03ad --- /dev/null +++ b/themes/darkstyle/darkstyle.qss @@ -0,0 +1,343 @@ +QToolTip{ + color:#ffffff; + background-color:palette(base); + border:1px solid palette(highlight); + border-radius:4px; +} +QStatusBar{ + background-color:qlineargradient(x1:0,y1:0,x2:0,y2:1,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75)); + color:palette(mid); +} +QMenuBar{ + background-color:qlineargradient(x1:0,y1:0,x2:0,y2:1,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75)); + border-bottom:2px solid rgba(25,25,25,75); +} +QMenuBar::item{ + spacing:2px; + padding:3px 4px; + background:transparent; +} +QMenuBar::item:selected{ + background-color:qlineargradient(x1:0,y1:0,x2:0,y2:1,stop:0 rgba(106,106,106,255),stop:1 rgba(106,106,106,75)); + border-left:1px solid rgba(106,106,106,127); + border-right:1px solid rgba(106,106,106,127); +} +QMenuBar::item:pressed{ + background-color:palette(highlight); + border-left:1px solid rgba(25,25,25,127); + border-right:1px solid rgba(25,25,25,127); +} +QMenu{ + background-color:palette(window); + border:1px solid palette(shadow); +} +QMenu::item{ + padding:3px 25px 3px 25px; + border:1px solid transparent; +} +QMenu::item:disabled{ + background-color:rgba(35,35,35,127); + color:palette(disabled); +} +QMenu::item:selected{ + border-color:rgba(147,191,236,127); + background:palette(highlight); +} +QMenu::icon:checked{ + background-color:qlineargradient(x1:0,y1:1,x2:0,y2:0,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75)); + border:1px solid palette(highlight); + border-radius:2px; +} +QMenu::separator{ + height:1px; + background:palette(alternate-base); + margin-left:5px; + margin-right:5px; +} +QMenu::indicator{ + width:18px; + height:18px; +} +QMenu::indicator:non-exclusive:checked{ + image:url(:/themes/darkstyle/icon_checkbox_checked.png); + padding-left:2px; +} +QMenu::indicator:non-exclusive:unchecked{ + image:url(:/themes/darkstyle/icon_checkbox_unchecked.png); + padding-left:2px; +} +QMenu::indicator:exclusive:checked{ + image:url(:/themes/darkstyle/icon_radiobutton_checked.png); + padding-left:2px; +} +QMenu::indicator:exclusive:unchecked{ + image:url(:/themes/darkstyle/icon_radiobutton_unchecked.png); + padding-left:2px; +} +QToolBar::top{ + background-color:qlineargradient(x1:0,y1:0,x2:0,y2:1,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75)); + border-bottom:3px solid qlineargradient(x1:0,y1:0,x2:0,y2:1,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75)); +} +QToolBar::bottom{ + background-color:qlineargradient(x1:0,y1:1,x2:0,y2:0,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75)); + border-top:3px solid qlineargradient(x1:0,y1:1,x2:0,y2:0,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75)); +} +QToolBar::left{ + background-color:qlineargradient(x1:0,y1:0,x2:1,y2:0,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75)); + border-right:3px solid qlineargradient(x1:0,y1:0,x2:1,y2:0,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75)); +} +QToolBar::right{ + background-color:qlineargradient(x1:1,y1:0,x2:0,y2:0,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75)); + border-left:3px solid qlineargradient(x1:1,y1:0,x2:0,y2:0,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75)); +} +QMainWindow::separator{ + width:6px; + height:5px; + padding:2px; +} +QSplitter::handle:horizontal{ + width:10px; +} +QSplitter::handle:vertical{ + height:10px; +} +QMainWindow::separator:hover,QSplitter::handle:hover{ + background:palette(highlight); +} +QDockWidget::title{ + padding:4px; + background-color:qlineargradient(x1:0,y1:1,x2:0,y2:0,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75)); + border:1px solid rgba(25,25,25,75); + border-bottom:2px solid rgba(25,25,25,75); +} +QDockWidget{ + titlebar-close-icon:url(:/themes/darkstyle/icon_close.png); + titlebar-normal-icon:url(:/themes/darkstyle/icon_restore.png); +} +QDockWidget::close-button,QDockWidget::float-button{ + subcontrol-position:top right; + subcontrol-origin:margin; + position:absolute; + top:3px; + bottom:0px; + width:20px; + height:20px; +} +QDockWidget::close-button{ + right:3px; +} +QDockWidget::float-button{ + right:25px; +} +QGroupBox{ + background-color:rgba(66,66,66,50%); + margin-top:27px; + border:1px solid rgba(25,25,25,127); + border-radius:4px; +} +QGroupBox::title{ + subcontrol-origin:margin; + subcontrol-position:left top; + padding:4px 6px; + margin-left:3px; + background-color:qlineargradient(x1:0,y1:1,x2:0,y2:0,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75)); + border:1px solid rgba(25,25,25,75); + border-bottom:2px solid rgb(127,127,127); + border-top-left-radius:4px; + border-top-right-radius:4px; +} +QTabWidget::pane{ + background-color:rgba(66,66,66,50%); + border-top:1px solid rgba(25,25,25,50%); +} +QTabWidget::tab-bar{ + left:3px; + top:1px; +} +QTabBar{ + background-color:transparent; + qproperty-drawBase:0; + border-bottom:1px solid rgba(25,25,25,50%); +} +QTabBar::tab{ + padding:4px 6px; + background-color:qlineargradient(x1:0,y1:1,x2:0,y2:0,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75)); + border:1px solid rgba(25,25,25,75); + border-top-left-radius:4px; + border-top-right-radius:4px; +} +QTabBar::tab:selected,QTabBar::tab:hover{ + background-color:qlineargradient(x1:0,y1:0,x2:0,y2:1,stop:0 rgba(53,53,53,127),stop:1 rgba(66,66,66,50%)); + border-bottom-color:rgba(66,66,66,75%); +} +QTabBar::tab:selected{ + border-bottom:2px solid palette(highlight); +} +QTabBar::tab::selected:disabled{ + border-bottom:2px solid rgb(127,127,127); +} +QTabBar::tab:!selected{ + margin-top:2px; +} +QCheckBox::indicator{ + width:18px; + height:18px; +} +QCheckBox::indicator:checked,QTreeView::indicator:checked,QTableView::indicator:checked,QGroupBox::indicator:checked{ + image:url(:/themes/darkstyle/icon_checkbox_checked.png); +} +QCheckBox::indicator:checked:pressed,QTreeView::indicator:checked:pressed,QTableView::indicator:checked:pressed,QGroupBox::indicator:checked:pressed{ + image:url(:/themes/darkstyle/icon_checkbox_checked_pressed.png); +} +QCheckBox::indicator:checked:disabled,QTreeView::indicator:checked:disabled,QTableView::indicator:checked:disabled,QGroupBox::indicator:checked:disabled{ + image:url(:/themes/darkstyle/icon_checkbox_checked_disabled.png); +} +QCheckBox::indicator:unchecked,QTreeView::indicator:unchecked,QTableView::indicator:unchecked,QGroupBox::indicator:unchecked{ + image:url(:/themes/darkstyle/icon_checkbox_unchecked.png); +} +QCheckBox::indicator:unchecked:pressed,QTreeView::indicator:unchecked:pressed,QTableView::indicator:unchecked:pressed,QGroupBox::indicator:unchecked:pressed{ + image:url(:/themes/darkstyle/icon_checkbox_unchecked_pressed.png); +} +QCheckBox::indicator:unchecked:disabled,QTreeView::indicator:unchecked:disabled,QTableView::indicator:unchecked:disabled,QGroupBox::indicator:unchecked:disabled{ + image:url(:/themes/darkstyle/icon_checkbox_unchecked_disabled.png); +} +QCheckBox::indicator:indeterminate,QTreeView::indicator:indeterminate,QTableView::indicator:indeterminate,QGroupBox::indicator:indeterminate{ + image:url(:/themes/darkstyle/icon_checkbox_indeterminate.png); +} +QCheckBox::indicator:indeterminate:pressed,QTreeView::indicator:indeterminate:pressed,QTableView::indicator:indeterminate:pressed,QGroupBox::indicator:indeterminate:pressed{ + image:url(:/themes/darkstyle/icon_checkbox_indeterminate_pressed.png); +} +QCheckBox::indicator:indeterminate:disabled,QTreeView::indicator:indeterminate:disabled,QTableView::indicator:indeterminate:disabled,QGroupBox::indicator:indeterminate:disabled{ + image:url(:/themes/darkstyle/icon_checkbox_indeterminate_disabled.png); +} +QRadioButton::indicator{ + width:18px; + height:18px; +} +QRadioButton::indicator:checked{ + image:url(:/themes/darkstyle/icon_radiobutton_checked.png); +} +QRadioButton::indicator:checked:pressed{ + image:url(:/themes/darkstyle/icon_radiobutton_checked_pressed.png); +} +QRadioButton::indicator:checked:disabled{ + image:url(:/themes/darkstyle/icon_radiobutton_checked_disabled.png); +} +QRadioButton::indicator:unchecked{ + image:url(:/themes/darkstyle/icon_radiobutton_unchecked.png); +} +QRadioButton::indicator:unchecked:pressed{ + image:url(:/themes/darkstyle/icon_radiobutton_unchecked_pressed.png); +} +QRadioButton::indicator:unchecked:disabled{ + image:url(:/themes/darkstyle/icon_radiobutton_unchecked_disabled.png); +} +QTreeView, QTableView{ + alternate-background-color:palette(window); + background:palette(base); +} +QTreeView QHeaderView::section, QTableView QHeaderView::section{ + background-color:qlineargradient(x1:0,y1:1,x2:0,y2:0,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75)); + border-style:none; + border-bottom:1px solid palette(dark); + padding-left:5px; + padding-right:5px; +} +QTreeView::item:selected:disabled, QTableView::item:selected:disabled{ + background:rgb(80,80,80); +} +QTreeView::branch{ + background-color:palette(base); +} +QTreeView::branch:has-siblings:!adjoins-item{ + border-image:url(:/themes/darkstyle/icon_vline.png) 0; +} +QTreeView::branch:has-siblings:adjoins-item{ + border-image:url(:/themes/darkstyle/icon_branch_more.png) 0; +} +QTreeView::branch:!has-children:!has-siblings:adjoins-item{ + border-image:url(:/themes/darkstyle/icon_branch_end.png) 0; +} +QTreeView::branch:has-children:!has-siblings:closed, +QTreeView::branch:closed:has-children:has-siblings{ + border-image:none; + image:url(:/themes/darkstyle/icon_branch_closed.png); +} +QTreeView::branch:open:has-children:!has-siblings, +QTreeView::branch:open:has-children:has-siblings{ + border-image:none; + image:url(:/themes/darkstyle/icon_branch_open.png); +} +QScrollBar:vertical{ + background:palette(base); + border-top-right-radius:2px; + border-bottom-right-radius:2px; + width:16px; + margin:0px; +} +QScrollBar::handle:vertical{ + background-color:palette(alternate-base); + border-radius:2px; + min-height:20px; + margin:2px 4px 2px 4px; +} +QScrollBar::handle:vertical:hover{ + background-color:palette(highlight); +} +QScrollBar::add-line:vertical{ + background:none; + height:0px; + subcontrol-position:right; + subcontrol-origin:margin; +} +QScrollBar::sub-line:vertical{ + background:none; + height:0px; + subcontrol-position:left; + subcontrol-origin:margin; +} +QScrollBar:horizontal{ + background:palette(base); + height:16px; + margin:0px; +} +QScrollBar::handle:horizontal{ + background-color:palette(alternate-base); + border-radius:2px; + min-width:20px; + margin:4px 2px 4px 2px; +} +QScrollBar::handle:horizontal:hover{ + background-color:palette(highlight); +} +QScrollBar::add-line:horizontal{ + background:none; + width:0px; + subcontrol-position:bottom; + subcontrol-origin:margin; +} +QScrollBar::sub-line:horizontal{ + background:none; + width:0px; + subcontrol-position:top; + subcontrol-origin:margin; +} +QSlider::handle:horizontal{ + border-radius:4px; + border:1px solid rgba(25,25,25,255); + background-color:palette(alternate-base); + min-height:20px; + margin:0 -4px; +} +QSlider::handle:horizontal:hover{ + background:palette(highlight); +} +QSlider::add-page:horizontal{ + background:palette(base); +} +QSlider::sub-page:horizontal{ + background:palette(highlight); +} +QSlider::sub-page:horizontal:disabled{ + background:rgb(80,80,80); +} diff --git a/themes/darkstyle/icon_branch_closed.png b/themes/darkstyle/icon_branch_closed.png new file mode 100644 index 0000000000000000000000000000000000000000..fa785cc91e6ab6b57b9ff2ab8b17a0a5cc6319a1 GIT binary patch literal 310 zcmeAS@N?(olHy`uVBq!ia0vp^96-#&!3HGb=lz)rq*&4&eH|GXHuiJ>Nn{1`ISV`@ ziy0Ug6+xJhcmI}fprAyFYeY$Kep*R+Vo@qXL1JcJiC$i6iGqoqfu3cKah)Gf%@$7= z#}JL+(hHtkhYUoHeSGtUuc@N{9ZSA)X=LW)W6T`$7OcCY(GgmBKu~=SpXh(VD6dR$ zd!c*385yVyt-!VXGE|c|w9$Xh1f5+6=PY#m#nNhi z$u+a=lXqQ$_}0s7mrUfXF-+PtF<-4Q?q|64N9H*vo@%>1TlgC2eg;ohKbLh*2~7Y8 CYj9%# literal 0 HcmV?d00001 diff --git a/themes/darkstyle/icon_branch_end.png b/themes/darkstyle/icon_branch_end.png new file mode 100644 index 0000000000000000000000000000000000000000..d90a04c33075a3e26db2686fd9a62b21e3d14a5d GIT binary patch literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^fk14a~60+ z7BevL9RguSQ4OyKprAyFYeY$Kep*R+Vo@qXL1JcJiC$i6iGqoqfu3cKah)Gf%@a=- z$B>G+w-*-jGC4}PJbc|`Bw)c)Iw9dDqa*9}FPlCURi+*45cRKl6zBKH`nE)}=kI;@ zm%l&Q`!AaDn5ackqp}#8#DR|fmz$Jo4sbmyd@g9e{C(;J<}ic);v@BEAFsRo`+=!# zcng03+hQY$sRvi^xTP9sH3v%eoJt5GQAqXJH|9Hg)*H{(6P*q8FN3G6pUXO@geCxm C^?Y^! literal 0 HcmV?d00001 diff --git a/themes/darkstyle/icon_branch_more.png b/themes/darkstyle/icon_branch_more.png new file mode 100644 index 0000000000000000000000000000000000000000..bdbe4ed92af5f6fcdd185c752072d727bc6d350d GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^5mw7EWWf>Pm0S#vGboFyt=akR{0R8(u^#A|> literal 0 HcmV?d00001 diff --git a/themes/darkstyle/icon_branch_open.png b/themes/darkstyle/icon_branch_open.png new file mode 100644 index 0000000000000000000000000000000000000000..9dd05d6460df3535a0c8833eef4b617d8cb2e93c GIT binary patch literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CB!3HGHK9Tzfq*&4&eH|GXHuiJ>Nn{1`ISV`@ ziy0Ug6+xJhcmI}fprAyFYeY$Kep*R+Vo@qXL1JcJiC$i6iGqoqfu3cKah)Gf&2~>0 z#}JL+)N`I(ha3c2AKrT@%koiS9ZSA);mt`OnVPc23!l0<`iQX06drmR@HT#uhmg2@ zNci4Yc~2|j?w8&*kE?j(`2L;6x!zx0+~+J7F5Yr2wM((byZokP61Lr_XX8RS-DxvGt3% zkMqH#PZ#?`_iXL#d?+iHSnyRL<=Lon*Ag*cla~T(pPQ6*e2~U<-GP*_hH3&`b%ZkbC+1l*n ZZ6=uTeQ?shqy}^XgQu&X%Q~loCIC{JK~n$# literal 0 HcmV?d00001 diff --git a/themes/darkstyle/icon_checkbox_checked_disabled.png b/themes/darkstyle/icon_checkbox_checked_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..441d0d9148a8badd5620904b2d18defce32fd7ca GIT binary patch literal 373 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33 zJ6J37bZ;R4rebAc+WAn zhTjOpTkc$S@?y&418U;yWUqK{0tt!pUiVfIW;feeaM3_vPA@ai#*7{8Fp~Yxe0TO| zJEVXv_z|J=Q%zx?Sx(j;^+RVT9y(ii>I+LjgTe~DWM4f^5Bfb literal 0 HcmV?d00001 diff --git a/themes/darkstyle/icon_checkbox_checked_pressed.png b/themes/darkstyle/icon_checkbox_checked_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..7b508c8d156a3878a701209c7674dc5584fc90d7 GIT binary patch literal 373 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33 zJ@&NsXv6nQvE@b(uy_5N& zAZ%5Cpw;;A{78Sz)a<-x7hmR?v8@%?yECbxm2I|E`wIttGgH2c1;>_FrUyS>;2g=m z*{J$vGLXq`oF$Xq9{)j)FQ@2X$%?0#LT=By}Z;C1rt33 zJ0#LT=By}Z;C1rt33 zJpVX7N4|TXV6yiU3DYu{zQAO6G=?WX`=#=i4;_Bx$?Q@(zG9RUcI0#LT=By}Z;C1rt33 zJBmQ; a&*+s(r7SrAZQf#_RScf4elF{r5}E*y3QTeU literal 0 HcmV?d00001 diff --git a/themes/darkstyle/icon_checkbox_unchecked_pressed.png b/themes/darkstyle/icon_checkbox_unchecked_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..c24130c552f7f9a31e3891082af80749a11ef16c GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33 zJ`@(t+}9+VxKD(vOcw bpV8Yib^U@4%V)Yks~9|8{an^LB{Ts5&cjUT literal 0 HcmV?d00001 diff --git a/themes/darkstyle/icon_close.png b/themes/darkstyle/icon_close.png new file mode 100644 index 0000000000000000000000000000000000000000..ece7c28b9cf14f2a10fb7b58fe87e19f19f3a25d GIT binary patch literal 422 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3 z1W2#{3nc6{#qKB_n*?NeE3Z~P%Cuv3L8McU)F$19HwtRl0?!u2JoL%=6YxlQ5>NV~ zE^fA5fr}=SGH3Z@&b#;`Fyz9v4brTKxfvMN7xoq(RcyNlv{JRiHKHUXu_Vv=^7b_7#drd7+V>eX&V?=85q3$W9f;aAvZrIGp!Q0h8YVRzXCOAfNUr( zOSei&EKb!eEy`p_%gjl&(%087$t}>&O-#>B&eruwD+sId%}=t++^!GQ!{F)a=d#Wz Gp$PyJ(T2tV literal 0 HcmV?d00001 diff --git a/themes/darkstyle/icon_radiobutton_checked.png b/themes/darkstyle/icon_radiobutton_checked.png new file mode 100644 index 0000000000000000000000000000000000000000..f747f4989cfc6113a43f98a53e4aa337bbb00282 GIT binary patch literal 370 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7{huFj{)LIEGjV?mc+cQ@K!v;llkV z2Em<+TstBfI=U8V#M!8VP!7zLc3X5n1DWZi)qVqVs1`9uK$}qg7^3dx$HoHU|2GE My85}Sb4q9e03n;5kpKVy literal 0 HcmV?d00001 diff --git a/themes/darkstyle/icon_radiobutton_checked_disabled.png b/themes/darkstyle/icon_radiobutton_checked_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..fa554cbb3ba874b49b41b95927db8f3b92fbf1fe GIT binary patch literal 617 zcmV-v0+#)WP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;(#7eog=Y0oqAKK~zXf-IYN~TtO5?TL-!l#VkT33lLFJ z(iogLP)zm_5QGE*8T1a6xQ15e5?p{1)Fo(QCdoO?t^Td4?oS4pc;P_*`)*ZzUe&Me zylnM)y;<0X6Zj6lg1^7QTbND!-^9Q-a0kCzxP{FOYZu{Z_>#eL0lP20NFcZ5Grl-ZgMXZ5%K8#=EATe{ctL({E>_(U#MT@(!^nCNt32Uq* zZhk-BajZs|o^6YBvGi=q=wvlc6F0vQ?>bf^Og|ut!~XHRY}_R76F2WZ>OID4g!$hW zC@q?grRQlGovcPbar3X@UBzmI>D^*+FP7eFyh$u4ZvK6|qgahFy|^rT)TUzVAH=Wm zAu)3v)64kX*o`plpBI;b;ZapQufQqXhdvD7T=D!49BZrp{?HVK&4k?CrP!?^`x<^` z>{{%)2zV=&MZCy{?RqY2;G37pKczHYguJfHBI2I-h58ZMM)9<`p{3{Y5!$coBElQs z#Z@L4hdrO%mT_XBe=b{a4A<}&uHXo|P~XrOqE6=z20Wq*i~*uf00000NkvXXu0mjf DBpw!u literal 0 HcmV?d00001 diff --git a/themes/darkstyle/icon_radiobutton_checked_pressed.png b/themes/darkstyle/icon_radiobutton_checked_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..7b4bb1106ab17be557f94cd40956484fe7909e09 GIT binary patch literal 616 zcmV-u0+;=XP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;(#7eog=Y0oh4JK~zXf-IYyBTtOH`TL-!l#VkT33lK4) zM3hW2P)zm_Xb30>?mGohl5PKaG>A)ZdEW&HKnjWF$>7ngy-QB^!I!3o@jV;H=-;`tLe)>c3N&=iHWgxuVP*sUV_7Jg;y zyV!LR@K!8~c##d-^{=dfZ(b(fOKG$Sd0m%9#69r~^&_&4;%RY1OV4E&+OO*(!mHrL zRVEmPJs;neQDUHfE*o$J*YFsw;1JfKzM-!~oz7p{3_bQImI8wS0000KF1Pf3GwFP5xd6L7An~<5K?75c)&OV+~Pik3(QpMq4JEg6dLbn)58rqb$&R(++nux#}|&W&IEI%b&k?c?cCI>g@qUQ&eZv3-%cDM_^JxOy#N3J07*qo IM6N<$f~R4H-v9sr literal 0 HcmV?d00001 diff --git a/themes/darkstyle/icon_radiobutton_unchecked_disabled.png b/themes/darkstyle/icon_radiobutton_unchecked_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..87d18463ca3de25b42f8f279a70b28f5cd3d0d25 GIT binary patch literal 538 zcmV+#0_FXQP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;(#7eog=Y0gFjQK~zXf-IZNRLQxcj)dwAkQiBL-3W1Us zz4V||gDD7la0W^ZMWO*HQB9$;m-<$$%^|wi>j`|Q1s}-TKj*T~kG21;$z;-kW4MI} zcsKfe14qzudY&jeglG7u;0gLJs}{)(xOTCa!wA~YG#wbj9Yo$0G~A|KBt`QVII&$Q z;&ssCukf{qL&YLNV~OT_wkt($7h;i~?e8L>4UL(v{qiDFqmilh5t_D>Fm+m#Ft?Q@ z>NKv{lcDV-OdUl9N4By>?WudrY$ajpY%AEdl`U#_++%4g2~!tH!JqTnP}FK4)njEV z33KZU#E3e!vPJE#dn{}vVd`yBaBM4E)SkP?)K(Iv9xerS)atf3mTKVMJqEUuFf~6t zTuR73s??mhR--Q7M*@8(>DqT~SBl(ycysN6?P8IjS1}gRLsmL2#Xw&k%`Y7)7fE`q zV-cY}(GArl(inwKi#9Z7E-s+@xek%s13g^PpbX7?{aDIGq5fQkFoPwm%mSt`fL~wC czo1&}6PiV{{Bs1%hyVZp07*qoM6N<$g2%GpegFUf literal 0 HcmV?d00001 diff --git a/themes/darkstyle/icon_radiobutton_unchecked_pressed.png b/themes/darkstyle/icon_radiobutton_unchecked_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..8f4d548b081590f7bd126d98aa00743c0170149e GIT binary patch literal 537 zcmV+!0_OdRP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;(#7eog=Y0g6dPK~zXf-IZNRLQxcj)dwAkQiBL-3W1Us zz4V||gDD7_gJLsLq5&vTO`)=v`c|yXA-dP=33{jnAIRE2=d#a_wg0X8eBOd%xPg0k zGx|M)BWO82PZS=)6TDaO2z{4Ti{u7eyI3q>1Z`-V4vgUzBJT_WQte7PUL>v9gtfsSBjw_xWupYPFB*v9^_j z`RfbBh&r~iMeVM8ENvxW>TOYQY%5#Tp1a4yRuZNjE(LYe>bAF*YT(X22DXzhH9tLE zO2|H{)SS6iqb}Y@0(~dx+IMYNirjs8b?t%eVv(R%F&5E7Ryr=lKwlosFC8iuNqVkh z5urWN4b>&m7==!YHZ*1~E};6k4w2jgJzUYC49$G=Sjt49{#=GIg%zyL5+*Q!A79MB bpjzz%)7KnVvMmjB00000NkvXXu0mjfZmZ&p literal 0 HcmV?d00001 diff --git a/themes/darkstyle/icon_restore.png b/themes/darkstyle/icon_restore.png new file mode 100644 index 0000000000000000000000000000000000000000..be29650401564c0bb4d3f1527dbcd1931ca46708 GIT binary patch literal 404 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3PI1gGYY|NsBjPvS{Q zaWS0SdCe|C@p|f!UsL|s9e64f^Qfi9tyrF?mb+k?Qc>{P2Ok+XHcaqm+t1HtBmdwF zv=^7b_7#drd z7+V>cXd4(<85nFjsqqg*LvDUbW?Cg~4Tq;pZ~|)30NGGnmTr}lSe&X`T9nC?hDGs&BmALjAB#;Q<@k=#Mf-#lAw(+U3%24DaN;GYAZ0t^6TvPy9R S9_vZ~0000a~60+ z7BevL9RguSQ4OyKprAyFYeY$Kep*R+Vo@qXL1JcJiC$i6iGqoqfu3cKah)Gf&00?v z$B>G+w-*))HW)ClI944Blonm`vcbh=9fz^{wLg1yC7;{5)bQBXUH0d$=ChwJWOrrh u;t&zkPzrEa(BUB1sKi7cf&ZNr{p{Q~c4mFyk(~r|ID@CFpUXO@geCxAGgaIG literal 0 HcmV?d00001 diff --git a/themes/qdarkstyle/rc/Hmovetoolbar.png b/themes/qdarkstyle/rc/Hmovetoolbar.png new file mode 100644 index 0000000000000000000000000000000000000000..cead99ed108a83715a939fc293dd7692008ac6b2 GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^0zmA*!3HFSYrjteQfx`y?k)_Q87dhn@7xXk0~Fyb z@Q5sCVBi)8VMc~ob0mO*>?NMQuI%?&Bn5OO*L%Ib02GqV42dXl&d<$F%_{+N85o?4 zQWHy3QxwWGOEMJPJ$(aG^itV@;trlJjv*0;-<~t%Vo=~=cKEuuHadP)@WGQuU7r}S zO7(3kn;EC7l=k(^o8K==q_@k14TBON%sx1ZaXWETh=#i?0*QIL`njxgN@xNAL{>as literal 0 HcmV?d00001 diff --git a/themes/qdarkstyle/rc/Hsepartoolbar.png b/themes/qdarkstyle/rc/Hsepartoolbar.png new file mode 100644 index 0000000000000000000000000000000000000000..7f183c8b3ee5ffaa6157867cb88ebb7e67f9c0fa GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^>_BYK!3HFCsxJuxDYhhUcNd1u43!L(ckTxN0g7-I zctjR6FmMB9xrG@SX3dcR3bL1Y`ns~;XOR@p6Zv)R$U2~qrKgKyh{fsT1O>Ju$B!EW z@!}4{#Nd`-q4nn`YMg93@~{6$nhfv4z>`4eS;NZqID=!NmZu#9Lx(rZWlOyY_CP}z NJYD@<);T3K0RUVxGDiRa literal 0 HcmV?d00001 diff --git a/themes/qdarkstyle/rc/Vmovetoolbar.png b/themes/qdarkstyle/rc/Vmovetoolbar.png new file mode 100644 index 0000000000000000000000000000000000000000..512edcecd69bd11ef3d58930ba8304473319e183 GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^W%Wd+bj3AjN&xsQ+Rrz=y7dXn1bJS$(l?zvsn?)HIstmk1 U3t#Ex0qtY(boFyt=akR{0D|pGN&o-= literal 0 HcmV?d00001 diff --git a/themes/qdarkstyle/rc/Vsepartoolbar.png b/themes/qdarkstyle/rc/Vsepartoolbar.png new file mode 100644 index 0000000000000000000000000000000000000000..d9dc1561b473019a12091725e724a44d979dc238 GIT binary patch literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^_CU| zgW!U_%O?XxI14-?iy0WWg+Z8+Vb&Z8pdfpRr>`sf9S(6$Q|-`GL0Lc{Yfl%)5R22v z2@<^xoY4VJd!B_UMqU2{D9-fNiI+30b a28PTOZq~oq5vPF0FnGH9xvXAmd+F5V%0wNv=peG!PC{xWt~$(69A|)Be?(o literal 0 HcmV?d00001 diff --git a/themes/qdarkstyle/rc/branch_closed.png b/themes/qdarkstyle/rc/branch_closed.png new file mode 100644 index 0000000000000000000000000000000000000000..d652159a365396a046329cfc7695c89ee54431ca GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJ(!2%?APo63Uq!^2X+?^QKos)S90ZA8lL>4nJ za0`PlBg3pY5H=O_B-6{JiOAS{|sjWh15M=978y+r}k{*WnkcFe(-;BX~D)* rS0)5haD*y~YzrxP=F!`JhM)Jr2M#8aN7~DQS{OWC{an^LB{Ts5zf35P literal 0 HcmV?d00001 diff --git a/themes/qdarkstyle/rc/branch_open.png b/themes/qdarkstyle/rc/branch_open.png new file mode 100644 index 0000000000000000000000000000000000000000..66f8e1ac619d242f3d5a31ffb11291c09ea40468 GIT binary patch literal 166 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRR!2%?ApR4f$QjEnx?oJHr&dIz4a+s35-CY>w z1e^Sc1@brxJR*x37`TN&n2}-D90{Nxdx@v7EBhS|ac*foG2iHXppcfQi(?4K_2h&D z3_UzN#dZqZOE?US3>3JRaTpjFIL#0^D8eWr9I$mUBg3(s>=R~}U&3=E8!o-U3d z5v^~hTl*b$5NO-KaZ$^2My7CvC3jk<^u2WvDUf$c)s+rzv%V1E9{A4TMP-Z4lZ6F6 zJvyqaW~@Kfmu*$9pTBmh4fB87Nq1MQib$?;e-iXiZ<}* z4@CWD;9;1v<$&N$mS=`@#Ch2ZV#{}RJvQ4QaCNnQ-mU-(MmI+R8*yI$%dfxAYY;s7 z_m>{S8>aWE2aPM4zg_apbyj4!CUG}xvu2#YiDkvbx1hxrj-4fv9WXW}Qu2zs*=;EB~B@C9lD4Pt3jc#EK9uo4$63*ah<+ zss)BhMo2G`V&I;1@X1nvU9S{R&b}_{bpE^krGqN=vm#%w`~A&$lHbmbGYy8TuE%Y! g4!>ah-@}e^jYL&g^Ys^bz?fn1boFyt=akR{0GqMPK>z>% literal 0 HcmV?d00001 diff --git a/themes/qdarkstyle/rc/checkbox_checked_disabled.png b/themes/qdarkstyle/rc/checkbox_checked_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..cb63cc2fac47ad304451f864be5fb9b9085910ee GIT binary patch literal 491 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmSQK*5Dp-y;YjHK@;M7UB8!3Q zuY)k7lg8`{prB-lYeY$Kep*R+Vo@qXd3m{BW?pu2a$-TMUVc&f>~}U&3=E7Jo-U3d z5v^~h`}!SnkZ7B~UO?mu^MY^z;cfGr%T7e}s1?W?8ZIpHm|nqi{YV9S;d_3jiRW9V zC@j#CiOINs*XRD1%4NQnC4ao1_;X|a8O{J^t^>=I&uJH^EA=Yy=q@QJXMe6{= z3nu?QmTiqn8yL4lU7L4ID46lSggggJ-lhEfrK>ewSvD~j#OXbEpLgByNx%V?Yugz2 z%=F`x=yC0fIn20j(F*mKC7cqgJZ$I97rnv0D^bF3N854ErU!Bp^;Wf}GDU{OUt^u0 zW>d#j^wD7Ns`t{1S6kg*n)>$7^lzH?%EjxII~|lJaHueWsWo@_*Zi9Q-(<7@f_{&8 zrO0b9HEPU+9v)SBw)%l|Fntmmjz{W9#jS ei>v=l+`}wZn5FJg^3NX_F$|urelF{r5}E*p0K`TB literal 0 HcmV?d00001 diff --git a/themes/qdarkstyle/rc/checkbox_checked_focus.png b/themes/qdarkstyle/rc/checkbox_checked_focus.png new file mode 100644 index 0000000000000000000000000000000000000000..671be273b06e2b721f494379ab61e527932ba69e GIT binary patch literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI zppNSx%;=;sy8pirl$i(^Q{;p7B~mkolg-~Zb$e)}u@ ze@5oRhYp5nY;MQ?&){3o{PczlV|l~dUDN*uim-MX2VD+|d1jngsyJ2mc)FUftqnvzx5JtA;>!fgJt|n_5jQ7B^fH6Ii)cTP@1u pu!mvshZ3I`*Gv}|E|RNaU|1Y$kt#XS(go-!22WQ%mvv4FO#o$0SI__e literal 0 HcmV?d00001 diff --git a/themes/qdarkstyle/rc/checkbox_indeterminate.png b/themes/qdarkstyle/rc/checkbox_indeterminate.png new file mode 100644 index 0000000000000000000000000000000000000000..41024f7688c0623c853ee9ceb8138949cb167738 GIT binary patch literal 493 zcmVq3^Yy%*$?9v7vi2H2P(8128Bb|(G4PNvN{@ZTf(3sn_sOi&WJR5%589C1Db zhCs&)0xKfAB%rDi8*{57O<)4_5qWijS3LmgKot?w^!;`wQO?#_V**LxkEL?C;d$Q3 z34D<_j%&$$-a|FC);<7TfKs-gBytH%5;%7a2k<;^G*6NSFcsCSFK#waI05=$7(Tm( zXKA)Hc7gXz!E<>7_ErgOC56D&1`2f;J-djcl1whQ1*)tmxvW08H=aDaB2-ihxwfOi!+%lfAUc7T48B=@f2S)wSqMWl~v zZI(b4)#rJ^CmD~QfYn(73rQ)kZ~?z)ATUOY#(t96+Wf5x{DKuI1xkTZpzt0jI=8N~ z@D(TpewDxrBCCa!&WPR`@bXPS;RdLmG@G0AVz*kYZB*;P;G2LaatSOCE0wD-47cV1 zuZZ-3B^9~I`tuKy4iEtEUw^L;PUs>VUo&4)=p@!2lYf|GrJ*qgDsqPEE>LwM@VVy$ iRL|pXH+A&QKavmPo@ys59Ed6a0000E;YP`4SSj=K`lQnqN;26wzVN;k)FHnvrk3C?wm`aM7umdKI;Vst05m34zW@LL literal 0 HcmV?d00001 diff --git a/themes/qdarkstyle/rc/checkbox_unchecked.png b/themes/qdarkstyle/rc/checkbox_unchecked.png new file mode 100644 index 0000000000000000000000000000000000000000..2159aca9a10f75729912579b33a1226e575799aa GIT binary patch literal 464 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmSQK*5Dp-y;YjHK@;M7UB8!3Q zuY)k7lg8`{prB-lYeY$Kep*R+Vo@qXd3m{BW?pu2a$-TMUVc&f>~}U&3=E9Eo-U3d z5v^~hTl*b$5Mg-k8hGeCL!&lB&^xD7y>BB#3gn$qXZC6ymd#kPSfgCwOO2D=r^N+5 zJw7|dgetV6qbk!>#or&Sckj|)rDfLlx9!BzLz){NpZKh3z}$B1``V5SO@~m`&d1TB zFPXg)nog`1-usI20_&}gBemzbKX;_n9XqyBf99W!7jwS#7#6F4()FBFa_MYZPgcU( zS_U_U-aih`PlO_t6}*e$OX!)Ie`yQ*8keuHPS3X2n8Pqxfn#3m>Ec5MHB4$L|F3^% zND!}B?-loe_r`C{2jMH2Uo}`Q;Db^cY&se~TB4iwmri9$b1?Uu;sB%_cFATAov~jhym_YEdgAln?ixeQ z^=a2;y}eWCW~RA2fzc;$?>Dw)YxnzqlxvtK94R$eY;o}lF!UKbUHx3vIVCg!09=m0 AT>t<8 literal 0 HcmV?d00001 diff --git a/themes/qdarkstyle/rc/checkbox_unchecked_disabled.png b/themes/qdarkstyle/rc/checkbox_unchecked_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..ade721e81ba47fa792d4586516b8744f8c49c8bb GIT binary patch literal 464 zcmV;>0WbcEP)z3Xli7-6*p9aNvlr>Itd;TFIVxd-y|OyrCsEBb@QA; zCyb(7HXkO*sBg@biZoF@2MSgIU*CL)>Rq?ji!Gh`NAd|iaAZN1hu>)c0000U^V1tLjO7h)cTN8vD8kxl9CSG-=9zI~sp3@KWFU8GbZ8()Nlj2>E@cM*00Fv5L_t(|+U=WLk^&(N zMNQT>E=U)k3)21RpJh4PJd%48X!1Rk<{TbF5DteGD^~0|g!!@C>GY`iyW{mLQwXR9 zjuawUp;Cior+G8=rW1YKL<346a~6o?i6 z?{azNxS!7yQSaX@eYYe*y&Lw~I5fO96fyKs5_ zy6%Wq@1q*&nfKd*=(Y$VMgp?uA^!zDB{1N>P63ZikG1hg_|Ito*$P`m0;}iYwLp&q zHaxr-YLO5D|8EUI6+I<5HvIcKKq-fN*91m!MLQ2@g<(~e)B}-PC>A_jKn)xdK16_J zA27UtS~#Wz%?8hwpwaM*^Mp_VHSm!VAk|=R&oeeflxnaSCSoLLra2!WK{LTeNN_t8 zMa*IEe9%Kt!~(_`37Qq2CE;g++G)V5=dIuQ^&@G>nP7%|MFEzZSE$DJ=G|h^>^+ap zZ@wUrJxU{aU6H9xwr+_{8tbBDYw}%RmCY=Ic3C>3gpljWFU8GbZ8()Nlj2>E@cM*00Fv5L_t(|+U=WLk^&(N zMNJl_8_?B`8_ zy6%Wq@1q*&nfKd*=(Y$VMgp?uA^!zDB{1N>P63ZikG1hg_|Ito*$P`m0;}iYwLp&q zHaxr-YLO5D|8EUI6+I<5HvIcKKq-fN*91m!MLQ2@g<(~e)B}-PC>A_jKn)xdK16_J zA27UtS~#Wz%?8hwpwaM*^Mp_VHSm!VAk|=R&oeeflxnaSCSoLLra2!WK{LTeNN_t8 zMa*IEe9%Kt!~(_`37Qq2CE;g++G)V5=dIuQ^&@G>nP7%|MFEzZSE$DJ=G|h^>^+ap zZ@wUrJxU{aU6H9xwr+_{8tbBDYw}%RmCY=Ic3C>3gpljWFU8GbZ8()Nlj2>E@cM*00FK^L_t(|+U=W3lEWYj zMI&9@_Q}(`u2cpl>3<1~)?G61A!s1*ckDcfFZ2UV}LO?5Uq!7sp&5|Lr zfTKjnjPRZkWJYjL5i&cxRf5b8ZWSRb!H-Cg)!=(2=w1ph*!w+IAXfO}IR0~7*F_Qa z`pw#RYZBDEVegGY!&^fUrH_&@lDEd7sB!Nt!IH1UVjcpe@#iI>l*c;nh*$5U8tIw$ z+l1&g2_h;1+4GS90-h2W@Lz|3$D+sDcqIJ$Fn}zDEtSCPdH7ynL;@Qgz8UI~5CQ)& z2cR}RH8?i>>pVc&4v)?WjLjA8JfIhbwX>uih_phn;OPQd;F$0s0xau*=>@dHF(qg= zc(w$MhG(27gbHYZkCXt}4UYCaV^Kue4UWP@RDxz2^AQp>6MTdOw?k3H81~KwJrqSu zV2n!8tne%eQYe>aG`#0`e*H)qaweD|UsZtR<`t^3qj^g#n!V@I`OOz3vPZ3w_Z69r zWc!xbim@+B4kW+tRoToUXqTlkN(i|wpGAW8(Zqf-18CSiA59@;O!aKeLkRQXw z1e^Sc1@brxJR*x37`TN&n2}-D90{Nxdx@v7EBhS|ac(A-+!@lDKp{;}7sn8e>&XcR z7pulY;Wn^IBG(*7A%~?b^VC!N=hHC=sm-IdEdjT~uc)I$ztaD0e F0ssj2CNKa1 literal 0 HcmV?d00001 diff --git a/themes/qdarkstyle/rc/down_arrow_disabled.png b/themes/qdarkstyle/rc/down_arrow_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..5805d9842bb3c8bdf9ae741ebabc690a4929585a GIT binary patch literal 166 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRR!2%?ApR4f$QjEnx?oJHr&dIz4a+s35-CY>| zxA&jf59DzcctjR6FmMZlFeAgPITAoY_7YEDSN1y`;vAyZcdU741BJ9aT^vI=t|uoP zVCdoDDYjGKUczBuWT3#kjKjddz-flSK@mm~;ef4+85xf4WSF7(8A5T-G@y GGywodVJqnX literal 0 HcmV?d00001 diff --git a/themes/qdarkstyle/rc/left_arrow_disabled.png b/themes/qdarkstyle/rc/left_arrow_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..f5b9af8a34edb5f8dd767bf6afa303b89a31d38f GIT binary patch literal 166 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJ(!2%?APo63Uq!^2X+?^QKos)S9bR`<_$&i(E==bj5a^zeU&bwdtch>=_qAH5C#I(A02SZ= z-pqyvve{!vh3V|K2(Z;?j0;|Hq>tJ+4>OtTGCRJHZF@ZOcP8^q5Cr`I<~ScB9o=p= z&m^6bC_rXoz*@WDo;`Hvf?xzGIc?G2OIwY`1pwD|f5YrH(7gbIoJl|JS(+dUbvmTb zB5r&Bqu`aU1z`4E`<=%)mdf9?a};sgxR2RT5LuX#bWVMU#oQ*xD``&)6vecw1(rnna}5U zBv}}JUU#-zt!rHi$mjDrIL<6^D(>w}Oik4Xve{RW-j%cpG=ZjI)y&=*IB?)K*LCj$ zRDHh$oRrzj^z?Kq>70&LUiJM2-~*uKdfs9uz9g&qe#y)}0Tx})E2Z%}7S+9tjgq8G zz(UpczpGZOFDG$V%H`Y_mC6rh_9@YK{BbA$PyEhTe19x7TSPh3(2no@8jnJ}d` zxvz`)Xu-@3Q@U%O-8ttu@B6#&eeXFJcD1YLUFyZ`x^CY1#GHEIZf^VJ)fa|)EWFnC_vkwH{ z6N%(XrPA_FUeEIm3uZ8T)68avQmNeZ^mN!MezY4vBl-Klxl+0Oc_(iW1WUkMr#lwA61mWP^6gmcikThUVXxDm7!9M*?_AgI18~gF z1H*|#;zYYVZ2=^WVYb|CxN5a}7PC=xsG2|quMNcGX92#vbZHT|j#=*jKpN?%*2wG> z^-_116auGOL$e=c_Il3%1~2LHcaC7B3vd(Eku=gAhHwvQuxEgJEbHl{+%bXUhz^zO z1aMzw`&uyYd#6AxNnr@rTl>rgF}wdX0Kb}a^ohVmh_EiNtnd~J1gWB9;< zQeQOsw@G^iF9MGY79E(`tkvF|pP&B+z|Uqc0A~cJFP2I-+U4om@B3+mVcy`Fr2H#G zLmzjg?Ph4o^Sm*c%>u*JKeMaA-Ny3E)PG1ufSZlmvu)!&6#&$4$V4J>LSZIJL>K{la{0H2c zs~|?9C^x;rMaWb-8PX3|8pCWt!biMuy0?XQWQb<;X|43Tx`%u2d*Ay#=bm%m2uC>V zP+^=~UTj8M8r2nG5a!!_AedR2Z~X` z^C#k-|Ev48KfKp7anB!#d;YJu=VuP2fR+8R!0=+yodD>W_Zv61xCvYrMa;V91*W48 zlk+`pV9$aJo67F4y{x)QP|# zuvAI7%`!tkOxID(?!{Xg)et~F>Au&7WnfWmGWAJX(Q5Xad@h zW4pXoZt`faArQrMmE8|4geKr9vZClrczyyP>M$wW1;^C+m=Rbk24>RMfiB>Tz-(v& zg}`J5R?CJlfcYLbaD)NiLsho($9hS_#bPR2np!I<+q}LsH82yJKrt09X&4bjD(?9s z0J&awy%3nQz-?_<0DQpLhJ}c5s}PuT`K0>|VEpS=+R8ut=DfSL?<|gce#SPIk-hj& zt(8>gOaGp2U}Fbv$L{QRX+PHZKoq0E9FWc@-S;(`SC^H&KO$sSHiG-Rwc{`Y$)JXZ zz-et*7KJCUW)t9~eK8%t7hpJ_bZ7s|NY)%tmqqQ2WNlR=*;_}EZE9fVKruhU5e^-G Y1NpBZRoRadK>z>%07*qoM6N<$f;w}DFaQ7m literal 0 HcmV?d00001 diff --git a/themes/qdarkstyle/rc/radio_unchecked.png b/themes/qdarkstyle/rc/radio_unchecked.png new file mode 100644 index 0000000000000000000000000000000000000000..9a4def65c64a9d55441f82fe66fc7f46e5b73a75 GIT binary patch literal 728 zcmV;}0w?{6P)@!=&7gwT^7eV48y+tYIRCxlLiT(zip~u_E}K!eZQ1UCJ)XWpcn*qFv|mj2Hymm zGOGZ1&1OGlqk`+ej=|zgCiDDE0Kzalw_mH}fqMq8tl7*>&(3Zg z<=pb}a>SKCQhxe=1 zDZv#_S~^K`0Q0>2NJI5nZ6eAi5Q&W)Tj`Fao}46Y)*j1A!XehJuV&-U1oWX;y{+O9Vm8?gbB$>af^ zw*ZW{XL~Faoy!4ZGMk^9n`^`d07#`$FMw5G<+u=%tPliCX7&)sr_<@k@^=LQ*e#cH zlGcEH(Ye>fV(~_l?|Kj7Dkc) literal 0 HcmV?d00001 diff --git a/themes/qdarkstyle/rc/radio_unchecked_disabled.png b/themes/qdarkstyle/rc/radio_unchecked_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..6ece890e750b0685bbd818f22e5fbf999ccd35e1 GIT binary patch literal 760 zcmV6Hyq3pRX0tGI#@4O=(z(ra$opASN0&l!V!~ zGsFupMi4Yn7A{E9xN<|Zbl8%Z;>x%YH!O_WHWI)PKm&#gz*M7gJ{PpnM5bj5JNs=u!`ga zdVmk2x~L*MwQ&UK2QB~`Dl%3m6rLT6fN7e+lZKH~)f)mY2nNUV`F!P|tYujVfhklk ztLk(#78{?OoOB!Qf1;T{t^7JLns=NBjk1M8p$uFZv8+*G>eJ>Xz*wU-!A3(nlNkmc z35?D<&ckN1bxP&(QZkYFE+Y35$z-KmF0XlIJs*K-nw{NUU8}&yS;x70*z&)zv)PwG z&(~_T&+A|YycTzd!$Uw!g29Pa$^inZw}4*5Fa|v{UIP(HqgwGgaEIaP+*}D*M%BLn zkV52jtL1e>^_8ez^ev!pO8&g(E#tx$L?XTg094i2O?hBJARzl5{sneL_4H8%R5gO? zZYu(BRiyu@0>FU48{Yx~Mc}+;S&3GgZQD)(=Mi(Ony70 zgw)FKi^z1|aUM4cH~kt$W3lniTU)BCIV+pJ6jU9r-EjY4+jdG^H>WTlBDu5C=s2S%SwytG|&qy1B<|RZG49PACf*`UEpTkaXb%RO9HU}g)|IfP+T{SND8Rm6FUm; qM77uv3N6gc%>4ATZ<{v%H@^W&H{IQg@q%gq0000;(ZNqD1xa&r7l*n1_#$VNv$@8uKpD^(Yg!rs-u&mySz3x zZPmewoA|3(5ed=3lvIQo?lU4S?;e*cbV-``!^wBndk*Jwe%*6`Ofvc3g`y}Qe%Lrf zM~=<{C<7<~DB7nM*t{X(_-1F@|8?!;Zt4JTJ(y!=55OpZ_h7S5!fDy(A~R0{I738D zL8$7fp+~8t=)#MxT`%|Gok$E|orn3AV17^=sdPmu z9ZIFWq|WE0((KlQ>oIJr*0vn02W-QAB%)70FAq({4B!bfkMfUi~ek_$f*RST)55J#+#BE2=;@(#CR+jDgK2NURglS37FQ?Zk`&XaJb+PUn~Z%}G`mo&kx!C)voplk7DK$Im&m^!<{% gmtDJ=WHPAy0n)7IgxW`FVE_OC07*qoM6N<$f`lX-a{vGU literal 0 HcmV?d00001 diff --git a/themes/qdarkstyle/rc/right_arrow.png b/themes/qdarkstyle/rc/right_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..9b0a4e6a7a8097818d9c0626c84f19f4d690dd31 GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJ(!2%?APo63Uq!^2X+?^QKos)S9wUkJ;l%oZHT?}(3D>Wp7T%b9XV|~Y(T_!;F44$rjF6*2UngIS-C?Eg; literal 0 HcmV?d00001 diff --git a/themes/qdarkstyle/rc/sizegrip.png b/themes/qdarkstyle/rc/sizegrip.png new file mode 100644 index 0000000000000000000000000000000000000000..350583aaac4aa474ac449eaea2cc7ddd060276b9 GIT binary patch literal 129 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;TYyi9E0A8dZe4lyHC-T!u_VYZ zn8D%MjWi%f)6>Nz(!sM1rC-2ha+zM<2rMwpeI*@Z@PO%TWH}e*?iSqXK(y9 XcW6R37#&FAr-gY z-rUH`puoZ4SQyZj9Qd}kRkgExspwA+*PdmovgYQ`l$1@M%Pi(EdF8VmvF&CX@A%e}M=bpY`_UHx3vIVCg!0H#+y$^ZZW literal 0 HcmV?d00001 diff --git a/themes/qdarkstyle/rc/stylesheet-branch-more.png b/themes/qdarkstyle/rc/stylesheet-branch-more.png new file mode 100644 index 0000000000000000000000000000000000000000..62711409d7ed69ec98979394795822630458d9eb GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^5PiX%b9eR9<JS%C8jVk7;fc! UBk#RM6lem2r>mdKI;Vst0ANBkrT_o{ literal 0 HcmV?d00001 diff --git a/themes/qdarkstyle/rc/stylesheet-vline.png b/themes/qdarkstyle/rc/stylesheet-vline.png new file mode 100644 index 0000000000000000000000000000000000000000..87536cce16aabb3710663f720f8d354b1bb0b757 GIT binary patch literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^fk14@;zM~Ln>~) zy|9s&!GMF=@x%h2gO1`OFspnaH4_oY}#FfpL8m Q-wTkir>mdKI;Vst0J6j{!2kdN literal 0 HcmV?d00001 diff --git a/themes/qdarkstyle/rc/undock.png b/themes/qdarkstyle/rc/undock.png new file mode 100644 index 0000000000000000000000000000000000000000..88691d779507c9b809391396407f5cb4a6497c40 GIT binary patch literal 578 zcmV-I0=@l-P)WFU8GbZ8()Nlj2>E@cM*00E{+L_t(|+U=X$4#OY} zLz`&--S*43w`rPoNlWaQLS8pfd~hg*uq-oX%osV0`LJ!+SPR{}9r(JUC& zi*OVO>rs3r1nW_FCJ5_Yd@BU&U3e=9yOQ`b5bSE=k3zUrc5+?UXD9c4F9B>-qyH)% z1tH=BQxRVU!7FWl=67leWRLz4ahXo| zoe{&T7oZ-FMxDSsBBvjZ{}acq6e%f?_~rzJ_LzyflS`(bcuN3?R&llQTw-2U8((=NC3B QV*mgE07*qoM6N<$f{lRZzyJUM literal 0 HcmV?d00001 diff --git a/themes/qdarkstyle/rc/up_arrow.png b/themes/qdarkstyle/rc/up_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..abcc7245212f19a5dbff1bb19647b1dd4bb05b6a GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRR!2%?ApR4f$QjEnx?oJHr&dIz4a+s35-CY>| zxA&jf59DzcctjR6FmMZlFeAgPITAoY_7YEDSN1y`;vAy| zxA&jf59DzcctjR6FmMZlFeAgPITAoY_7YEDSN1y`;v6FKKb3EC1BH}5T^vI=t|uoP z;C)upuu)