From 1be50e306ae154bb54cfcdefbf8abd436904f8f0 Mon Sep 17 00:00:00 2001 From: tobtoht Date: Mon, 1 Feb 2021 04:33:57 +0100 Subject: [PATCH] Initial commit --- .gitignore | 2 + CMakeLists.txt | 221 ++ cmake/CheckLinkerFlag.c | 14 + cmake/CheckLinkerFlag.cmake | 47 + cmake/FindCcache.cmake | 56 + src/CMakeLists.txt | 68 + src/CommandLineEdit.cpp | 61 + src/CommandLineEdit.h | 33 + src/Config.cpp | 118 + src/Config.h | 64 + src/Configurator.cpp | 86 + src/Configurator.h | 27 + src/Configurator.ui | 345 +++ src/DaemonManager.cpp | 240 ++ src/DaemonManager.h | 64 + src/FutureScheduler.cpp | 96 + src/FutureScheduler.h | 67 + src/assets.qrc | 5 + src/assets/monero_grey.png | Bin 0 -> 4021 bytes src/main.cpp | 21 + src/mainwindow.cpp | 233 ++ src/mainwindow.h | 51 + src/mainwindow.ui | 109 + src/ui/BreezeStyleSheets/breeze.qrc | 89 + src/ui/BreezeStyleSheets/dark.qss | 1664 +++++++++++++ .../dark/branch_closed-on.svg | 3 + .../BreezeStyleSheets/dark/branch_closed.svg | 3 + .../BreezeStyleSheets/dark/branch_open-on.svg | 3 + src/ui/BreezeStyleSheets/dark/branch_open.svg | 3 + .../dark/checkbox_checked.svg | 5 + .../dark/checkbox_checked_disabled.svg | 5 + .../dark/checkbox_indeterminate.svg | 7 + .../dark/checkbox_indeterminate_disabled.svg | 7 + .../dark/checkbox_unchecked.svg | 4 + .../dark/checkbox_unchecked_disabled.svg | 4 + src/ui/BreezeStyleSheets/dark/close-hover.svg | 3 + .../BreezeStyleSheets/dark/close-pressed.svg | 3 + src/ui/BreezeStyleSheets/dark/close.svg | 3 + .../dark/down_arrow-hover.svg | 3 + src/ui/BreezeStyleSheets/dark/down_arrow.svg | 3 + .../dark/down_arrow_disabled.svg | 3 + .../BreezeStyleSheets/dark/hmovetoolbar.svg | 4 + .../BreezeStyleSheets/dark/hsepartoolbar.svg | 3 + src/ui/BreezeStyleSheets/dark/left_arrow.svg | 3 + .../dark/left_arrow_disabled.svg | 3 + .../BreezeStyleSheets/dark/radio_checked.svg | 5 + .../dark/radio_checked_disabled.svg | 5 + .../dark/radio_unchecked.svg | 4 + .../dark/radio_unchecked_disabled.svg | 4 + src/ui/BreezeStyleSheets/dark/right_arrow.svg | 3 + .../dark/right_arrow_disabled.svg | 3 + src/ui/BreezeStyleSheets/dark/sizegrip.svg | 3 + .../dark/spinup_disabled.svg | 3 + .../dark/stylesheet-branch-end-closed.svg | 4 + .../dark/stylesheet-branch-end-open.svg | 4 + .../dark/stylesheet-branch-end.svg | 4 + .../dark/stylesheet-branch-more.svg | 4 + .../dark/stylesheet-vline.svg | 3 + src/ui/BreezeStyleSheets/dark/transparent.svg | 1 + .../BreezeStyleSheets/dark/undock-hover.svg | 5 + src/ui/BreezeStyleSheets/dark/undock.svg | 3 + .../BreezeStyleSheets/dark/up_arrow-hover.svg | 3 + src/ui/BreezeStyleSheets/dark/up_arrow.svg | 3 + .../dark/up_arrow_disabled.svg | 3 + .../BreezeStyleSheets/dark/vmovetoolbar.svg | 8 + .../BreezeStyleSheets/dark/vsepartoolbars.svg | 7 + src/ui/BreezeStyleSheets/light.qss | 1687 +++++++++++++ .../light/branch_closed-on.svg | 3 + .../BreezeStyleSheets/light/branch_closed.svg | 3 + .../light/branch_open-on.svg | 3 + .../BreezeStyleSheets/light/branch_open.svg | 3 + .../light/checkbox_checked-hover.svg | 5 + .../light/checkbox_checked.svg | 5 + .../light/checkbox_checked_disabled.svg | 5 + .../light/checkbox_indeterminate-hover.svg | 7 + .../light/checkbox_indeterminate.svg | 7 + .../light/checkbox_indeterminate_disabled.svg | 7 + .../light/checkbox_unchecked-hover.svg | 4 + .../light/checkbox_unchecked_disabled.svg | 4 + .../BreezeStyleSheets/light/close-hover.svg | 3 + .../BreezeStyleSheets/light/close-pressed.svg | 3 + src/ui/BreezeStyleSheets/light/close.svg | 3 + .../light/down_arrow-hover.svg | 3 + src/ui/BreezeStyleSheets/light/down_arrow.svg | 3 + .../light/down_arrow_disabled.svg | 3 + .../BreezeStyleSheets/light/hmovetoolbar.svg | 5 + .../BreezeStyleSheets/light/hsepartoolbar.svg | 3 + src/ui/BreezeStyleSheets/light/left_arrow.svg | 3 + .../light/left_arrow_disabled.svg | 3 + .../light/radio_checked-hover.svg | 5 + .../BreezeStyleSheets/light/radio_checked.svg | 5 + .../light/radio_checked_disabled.svg | 5 + .../light/radio_unchecked-hover.svg | 4 + .../light/radio_unchecked_disabled.svg | 4 + .../BreezeStyleSheets/light/right_arrow.svg | 3 + .../light/right_arrow_disabled.svg | 3 + src/ui/BreezeStyleSheets/light/sizegrip.svg | 3 + .../light/spinup_disabled.svg | 3 + .../light/stylesheet-branch-end-closed.svg | 4 + .../light/stylesheet-branch-end-open.svg | 4 + .../light/stylesheet-branch-end.svg | 4 + .../light/stylesheet-branch-more.svg | 4 + .../light/stylesheet-vline.svg | 3 + .../BreezeStyleSheets/light/transparent.svg | 1 + .../BreezeStyleSheets/light/undock-hover.svg | 5 + src/ui/BreezeStyleSheets/light/undock.svg | 3 + .../light/up_arrow-hover.svg | 3 + src/ui/BreezeStyleSheets/light/up_arrow.svg | 3 + .../light/up_arrow_disabled.svg | 3 + .../BreezeStyleSheets/light/vmovetoolbar.svg | 8 + .../light/vsepartoolbars.svg | 7 + src/ui/qdarkstyle/rc/arrow_down.png | Bin 0 -> 525 bytes src/ui/qdarkstyle/rc/arrow_down@2x.png | Bin 0 -> 977 bytes src/ui/qdarkstyle/rc/arrow_down_disabled.png | Bin 0 -> 547 bytes .../qdarkstyle/rc/arrow_down_disabled@2x.png | Bin 0 -> 1040 bytes src/ui/qdarkstyle/rc/arrow_down_focus.png | Bin 0 -> 530 bytes src/ui/qdarkstyle/rc/arrow_down_focus@2x.png | Bin 0 -> 1025 bytes src/ui/qdarkstyle/rc/arrow_down_pressed.png | Bin 0 -> 518 bytes .../qdarkstyle/rc/arrow_down_pressed@2x.png | Bin 0 -> 1007 bytes src/ui/qdarkstyle/rc/arrow_left.png | Bin 0 -> 546 bytes src/ui/qdarkstyle/rc/arrow_left@2x.png | Bin 0 -> 1072 bytes src/ui/qdarkstyle/rc/arrow_left_disabled.png | Bin 0 -> 569 bytes .../qdarkstyle/rc/arrow_left_disabled@2x.png | Bin 0 -> 1126 bytes src/ui/qdarkstyle/rc/arrow_left_focus.png | Bin 0 -> 565 bytes src/ui/qdarkstyle/rc/arrow_left_focus@2x.png | Bin 0 -> 1143 bytes src/ui/qdarkstyle/rc/arrow_left_pressed.png | Bin 0 -> 541 bytes .../qdarkstyle/rc/arrow_left_pressed@2x.png | Bin 0 -> 1120 bytes src/ui/qdarkstyle/rc/arrow_right.png | Bin 0 -> 518 bytes src/ui/qdarkstyle/rc/arrow_right@2x.png | Bin 0 -> 1062 bytes src/ui/qdarkstyle/rc/arrow_right_disabled.png | Bin 0 -> 553 bytes .../qdarkstyle/rc/arrow_right_disabled@2x.png | Bin 0 -> 1143 bytes src/ui/qdarkstyle/rc/arrow_right_focus.png | Bin 0 -> 543 bytes src/ui/qdarkstyle/rc/arrow_right_focus@2x.png | Bin 0 -> 1139 bytes src/ui/qdarkstyle/rc/arrow_right_pressed.png | Bin 0 -> 544 bytes .../qdarkstyle/rc/arrow_right_pressed@2x.png | Bin 0 -> 1121 bytes src/ui/qdarkstyle/rc/arrow_up.png | Bin 0 -> 512 bytes src/ui/qdarkstyle/rc/arrow_up@2x.png | Bin 0 -> 969 bytes src/ui/qdarkstyle/rc/arrow_up_disabled.png | Bin 0 -> 538 bytes src/ui/qdarkstyle/rc/arrow_up_disabled@2x.png | Bin 0 -> 1046 bytes src/ui/qdarkstyle/rc/arrow_up_focus.png | Bin 0 -> 530 bytes src/ui/qdarkstyle/rc/arrow_up_focus@2x.png | Bin 0 -> 1017 bytes src/ui/qdarkstyle/rc/arrow_up_pressed.png | Bin 0 -> 518 bytes src/ui/qdarkstyle/rc/arrow_up_pressed@2x.png | Bin 0 -> 998 bytes src/ui/qdarkstyle/rc/base_icon.png | Bin 0 -> 1256 bytes src/ui/qdarkstyle/rc/base_icon@2x.png | Bin 0 -> 3286 bytes src/ui/qdarkstyle/rc/base_icon_disabled.png | Bin 0 -> 1256 bytes .../qdarkstyle/rc/base_icon_disabled@2x.png | Bin 0 -> 3286 bytes src/ui/qdarkstyle/rc/base_icon_focus.png | Bin 0 -> 1256 bytes src/ui/qdarkstyle/rc/base_icon_focus@2x.png | Bin 0 -> 3286 bytes src/ui/qdarkstyle/rc/base_icon_pressed.png | Bin 0 -> 1256 bytes src/ui/qdarkstyle/rc/base_icon_pressed@2x.png | Bin 0 -> 3286 bytes src/ui/qdarkstyle/rc/branch_closed.png | Bin 0 -> 350 bytes src/ui/qdarkstyle/rc/branch_closed@2x.png | Bin 0 -> 704 bytes .../qdarkstyle/rc/branch_closed_disabled.png | Bin 0 -> 373 bytes .../rc/branch_closed_disabled@2x.png | Bin 0 -> 729 bytes src/ui/qdarkstyle/rc/branch_closed_focus.png | Bin 0 -> 380 bytes .../qdarkstyle/rc/branch_closed_focus@2x.png | Bin 0 -> 717 bytes .../qdarkstyle/rc/branch_closed_pressed.png | Bin 0 -> 372 bytes .../rc/branch_closed_pressed@2x.png | Bin 0 -> 725 bytes src/ui/qdarkstyle/rc/branch_end.png | Bin 0 -> 142 bytes src/ui/qdarkstyle/rc/branch_end@2x.png | Bin 0 -> 220 bytes src/ui/qdarkstyle/rc/branch_end_disabled.png | Bin 0 -> 146 bytes .../qdarkstyle/rc/branch_end_disabled@2x.png | Bin 0 -> 225 bytes src/ui/qdarkstyle/rc/branch_end_focus.png | Bin 0 -> 146 bytes src/ui/qdarkstyle/rc/branch_end_focus@2x.png | Bin 0 -> 226 bytes src/ui/qdarkstyle/rc/branch_end_pressed.png | Bin 0 -> 146 bytes .../qdarkstyle/rc/branch_end_pressed@2x.png | Bin 0 -> 225 bytes src/ui/qdarkstyle/rc/branch_line.png | Bin 0 -> 130 bytes src/ui/qdarkstyle/rc/branch_line@2x.png | Bin 0 -> 242 bytes src/ui/qdarkstyle/rc/branch_line_disabled.png | Bin 0 -> 134 bytes .../qdarkstyle/rc/branch_line_disabled@2x.png | Bin 0 -> 248 bytes src/ui/qdarkstyle/rc/branch_line_focus.png | Bin 0 -> 134 bytes src/ui/qdarkstyle/rc/branch_line_focus@2x.png | Bin 0 -> 249 bytes src/ui/qdarkstyle/rc/branch_line_pressed.png | Bin 0 -> 134 bytes .../qdarkstyle/rc/branch_line_pressed@2x.png | Bin 0 -> 248 bytes src/ui/qdarkstyle/rc/branch_more.png | Bin 0 -> 155 bytes src/ui/qdarkstyle/rc/branch_more@2x.png | Bin 0 -> 257 bytes src/ui/qdarkstyle/rc/branch_more_disabled.png | Bin 0 -> 162 bytes .../qdarkstyle/rc/branch_more_disabled@2x.png | Bin 0 -> 265 bytes src/ui/qdarkstyle/rc/branch_more_focus.png | Bin 0 -> 162 bytes src/ui/qdarkstyle/rc/branch_more_focus@2x.png | Bin 0 -> 266 bytes src/ui/qdarkstyle/rc/branch_more_pressed.png | Bin 0 -> 162 bytes .../qdarkstyle/rc/branch_more_pressed@2x.png | Bin 0 -> 265 bytes src/ui/qdarkstyle/rc/branch_open.png | Bin 0 -> 354 bytes src/ui/qdarkstyle/rc/branch_open@2x.png | Bin 0 -> 657 bytes src/ui/qdarkstyle/rc/branch_open_disabled.png | Bin 0 -> 375 bytes .../qdarkstyle/rc/branch_open_disabled@2x.png | Bin 0 -> 682 bytes src/ui/qdarkstyle/rc/branch_open_focus.png | Bin 0 -> 367 bytes src/ui/qdarkstyle/rc/branch_open_focus@2x.png | Bin 0 -> 665 bytes src/ui/qdarkstyle/rc/branch_open_pressed.png | Bin 0 -> 369 bytes .../qdarkstyle/rc/branch_open_pressed@2x.png | Bin 0 -> 661 bytes src/ui/qdarkstyle/rc/checkbox_checked.png | Bin 0 -> 452 bytes src/ui/qdarkstyle/rc/checkbox_checked@2x.png | Bin 0 -> 825 bytes .../rc/checkbox_checked_disabled.png | Bin 0 -> 467 bytes .../rc/checkbox_checked_disabled@2x.png | Bin 0 -> 845 bytes .../qdarkstyle/rc/checkbox_checked_focus.png | Bin 0 -> 441 bytes .../rc/checkbox_checked_focus@2x.png | Bin 0 -> 823 bytes .../rc/checkbox_checked_pressed.png | Bin 0 -> 418 bytes .../rc/checkbox_checked_pressed@2x.png | Bin 0 -> 829 bytes .../qdarkstyle/rc/checkbox_indeterminate.png | Bin 0 -> 581 bytes .../rc/checkbox_indeterminate@2x.png | Bin 0 -> 1081 bytes .../rc/checkbox_indeterminate_disabled.png | Bin 0 -> 614 bytes .../rc/checkbox_indeterminate_disabled@2x.png | Bin 0 -> 1105 bytes .../rc/checkbox_indeterminate_focus.png | Bin 0 -> 576 bytes .../rc/checkbox_indeterminate_focus@2x.png | Bin 0 -> 1066 bytes .../rc/checkbox_indeterminate_pressed.png | Bin 0 -> 563 bytes .../rc/checkbox_indeterminate_pressed@2x.png | Bin 0 -> 1087 bytes src/ui/qdarkstyle/rc/checkbox_unchecked.png | Bin 0 -> 397 bytes .../qdarkstyle/rc/checkbox_unchecked@2x.png | Bin 0 -> 828 bytes .../rc/checkbox_unchecked_disabled.png | Bin 0 -> 386 bytes .../rc/checkbox_unchecked_disabled@2x.png | Bin 0 -> 875 bytes .../rc/checkbox_unchecked_focus.png | Bin 0 -> 394 bytes .../rc/checkbox_unchecked_focus@2x.png | Bin 0 -> 866 bytes .../rc/checkbox_unchecked_pressed.png | Bin 0 -> 403 bytes .../rc/checkbox_unchecked_pressed@2x.png | Bin 0 -> 861 bytes src/ui/qdarkstyle/rc/line_horizontal.png | Bin 0 -> 117 bytes src/ui/qdarkstyle/rc/line_horizontal@2x.png | Bin 0 -> 135 bytes .../rc/line_horizontal_disabled.png | Bin 0 -> 121 bytes .../rc/line_horizontal_disabled@2x.png | Bin 0 -> 139 bytes .../qdarkstyle/rc/line_horizontal_focus.png | Bin 0 -> 120 bytes .../rc/line_horizontal_focus@2x.png | Bin 0 -> 138 bytes .../qdarkstyle/rc/line_horizontal_pressed.png | Bin 0 -> 120 bytes .../rc/line_horizontal_pressed@2x.png | Bin 0 -> 138 bytes src/ui/qdarkstyle/rc/line_vertical.png | Bin 0 -> 130 bytes src/ui/qdarkstyle/rc/line_vertical@2x.png | Bin 0 -> 242 bytes .../qdarkstyle/rc/line_vertical_disabled.png | Bin 0 -> 134 bytes .../rc/line_vertical_disabled@2x.png | Bin 0 -> 248 bytes src/ui/qdarkstyle/rc/line_vertical_focus.png | Bin 0 -> 134 bytes .../qdarkstyle/rc/line_vertical_focus@2x.png | Bin 0 -> 249 bytes .../qdarkstyle/rc/line_vertical_pressed.png | Bin 0 -> 134 bytes .../rc/line_vertical_pressed@2x.png | Bin 0 -> 248 bytes src/ui/qdarkstyle/rc/radio_checked.png | Bin 0 -> 1224 bytes src/ui/qdarkstyle/rc/radio_checked@2x.png | Bin 0 -> 2714 bytes .../qdarkstyle/rc/radio_checked_disabled.png | Bin 0 -> 1325 bytes .../rc/radio_checked_disabled@2x.png | Bin 0 -> 2893 bytes src/ui/qdarkstyle/rc/radio_checked_focus.png | Bin 0 -> 1293 bytes .../qdarkstyle/rc/radio_checked_focus@2x.png | Bin 0 -> 2736 bytes .../qdarkstyle/rc/radio_checked_pressed.png | Bin 0 -> 1276 bytes .../rc/radio_checked_pressed@2x.png | Bin 0 -> 2765 bytes src/ui/qdarkstyle/rc/radio_unchecked.png | Bin 0 -> 963 bytes src/ui/qdarkstyle/rc/radio_unchecked@2x.png | Bin 0 -> 2195 bytes .../rc/radio_unchecked_disabled.png | Bin 0 -> 1040 bytes .../rc/radio_unchecked_disabled@2x.png | Bin 0 -> 2294 bytes .../qdarkstyle/rc/radio_unchecked_focus.png | Bin 0 -> 1032 bytes .../rc/radio_unchecked_focus@2x.png | Bin 0 -> 2186 bytes .../qdarkstyle/rc/radio_unchecked_pressed.png | Bin 0 -> 1022 bytes .../rc/radio_unchecked_pressed@2x.png | Bin 0 -> 2197 bytes .../qdarkstyle/rc/toolbar_move_horizontal.png | Bin 0 -> 150 bytes .../rc/toolbar_move_horizontal@2x.png | Bin 0 -> 304 bytes .../rc/toolbar_move_horizontal_disabled.png | Bin 0 -> 155 bytes .../toolbar_move_horizontal_disabled@2x.png | Bin 0 -> 308 bytes .../rc/toolbar_move_horizontal_focus.png | Bin 0 -> 154 bytes .../rc/toolbar_move_horizontal_focus@2x.png | Bin 0 -> 311 bytes .../rc/toolbar_move_horizontal_pressed.png | Bin 0 -> 154 bytes .../rc/toolbar_move_horizontal_pressed@2x.png | Bin 0 -> 307 bytes .../qdarkstyle/rc/toolbar_move_vertical.png | Bin 0 -> 137 bytes .../rc/toolbar_move_vertical@2x.png | Bin 0 -> 201 bytes .../rc/toolbar_move_vertical_disabled.png | Bin 0 -> 140 bytes .../rc/toolbar_move_vertical_disabled@2x.png | Bin 0 -> 212 bytes .../rc/toolbar_move_vertical_focus.png | Bin 0 -> 144 bytes .../rc/toolbar_move_vertical_focus@2x.png | Bin 0 -> 211 bytes .../rc/toolbar_move_vertical_pressed.png | Bin 0 -> 143 bytes .../rc/toolbar_move_vertical_pressed@2x.png | Bin 0 -> 204 bytes .../rc/toolbar_separator_horizontal.png | Bin 0 -> 145 bytes .../rc/toolbar_separator_horizontal@2x.png | Bin 0 -> 286 bytes .../toolbar_separator_horizontal_disabled.png | Bin 0 -> 151 bytes ...olbar_separator_horizontal_disabled@2x.png | Bin 0 -> 292 bytes .../rc/toolbar_separator_horizontal_focus.png | Bin 0 -> 149 bytes .../toolbar_separator_horizontal_focus@2x.png | Bin 0 -> 294 bytes .../toolbar_separator_horizontal_pressed.png | Bin 0 -> 149 bytes ...oolbar_separator_horizontal_pressed@2x.png | Bin 0 -> 289 bytes .../rc/toolbar_separator_vertical.png | Bin 0 -> 133 bytes .../rc/toolbar_separator_vertical@2x.png | Bin 0 -> 191 bytes .../toolbar_separator_vertical_disabled.png | Bin 0 -> 135 bytes ...toolbar_separator_vertical_disabled@2x.png | Bin 0 -> 199 bytes .../rc/toolbar_separator_vertical_focus.png | Bin 0 -> 139 bytes .../toolbar_separator_vertical_focus@2x.png | Bin 0 -> 196 bytes .../rc/toolbar_separator_vertical_pressed.png | Bin 0 -> 138 bytes .../toolbar_separator_vertical_pressed@2x.png | Bin 0 -> 193 bytes src/ui/qdarkstyle/rc/transparent.png | Bin 0 -> 104 bytes src/ui/qdarkstyle/rc/transparent@2x.png | Bin 0 -> 117 bytes src/ui/qdarkstyle/rc/transparent_disabled.png | Bin 0 -> 104 bytes .../qdarkstyle/rc/transparent_disabled@2x.png | Bin 0 -> 117 bytes src/ui/qdarkstyle/rc/transparent_focus.png | Bin 0 -> 104 bytes src/ui/qdarkstyle/rc/transparent_focus@2x.png | Bin 0 -> 117 bytes src/ui/qdarkstyle/rc/transparent_pressed.png | Bin 0 -> 104 bytes .../qdarkstyle/rc/transparent_pressed@2x.png | Bin 0 -> 117 bytes src/ui/qdarkstyle/rc/window_close.png | Bin 0 -> 766 bytes src/ui/qdarkstyle/rc/window_close@2x.png | Bin 0 -> 1690 bytes .../qdarkstyle/rc/window_close_disabled.png | Bin 0 -> 838 bytes .../rc/window_close_disabled@2x.png | Bin 0 -> 1724 bytes src/ui/qdarkstyle/rc/window_close_focus.png | Bin 0 -> 756 bytes .../qdarkstyle/rc/window_close_focus@2x.png | Bin 0 -> 1704 bytes src/ui/qdarkstyle/rc/window_close_pressed.png | Bin 0 -> 745 bytes .../qdarkstyle/rc/window_close_pressed@2x.png | Bin 0 -> 1679 bytes src/ui/qdarkstyle/rc/window_grip.png | Bin 0 -> 426 bytes src/ui/qdarkstyle/rc/window_grip@2x.png | Bin 0 -> 735 bytes src/ui/qdarkstyle/rc/window_grip_disabled.png | Bin 0 -> 447 bytes .../qdarkstyle/rc/window_grip_disabled@2x.png | Bin 0 -> 768 bytes src/ui/qdarkstyle/rc/window_grip_focus.png | Bin 0 -> 435 bytes src/ui/qdarkstyle/rc/window_grip_focus@2x.png | Bin 0 -> 738 bytes src/ui/qdarkstyle/rc/window_grip_pressed.png | Bin 0 -> 444 bytes .../qdarkstyle/rc/window_grip_pressed@2x.png | Bin 0 -> 729 bytes src/ui/qdarkstyle/rc/window_minimize.png | Bin 0 -> 193 bytes src/ui/qdarkstyle/rc/window_minimize@2x.png | Bin 0 -> 316 bytes .../rc/window_minimize_disabled.png | Bin 0 -> 206 bytes .../rc/window_minimize_disabled@2x.png | Bin 0 -> 332 bytes .../qdarkstyle/rc/window_minimize_focus.png | Bin 0 -> 208 bytes .../rc/window_minimize_focus@2x.png | Bin 0 -> 339 bytes .../qdarkstyle/rc/window_minimize_pressed.png | Bin 0 -> 202 bytes .../rc/window_minimize_pressed@2x.png | Bin 0 -> 336 bytes src/ui/qdarkstyle/rc/window_undock.png | Bin 0 -> 510 bytes src/ui/qdarkstyle/rc/window_undock@2x.png | Bin 0 -> 875 bytes .../qdarkstyle/rc/window_undock_disabled.png | Bin 0 -> 541 bytes .../rc/window_undock_disabled@2x.png | Bin 0 -> 910 bytes src/ui/qdarkstyle/rc/window_undock_focus.png | Bin 0 -> 519 bytes .../qdarkstyle/rc/window_undock_focus@2x.png | Bin 0 -> 877 bytes .../qdarkstyle/rc/window_undock_pressed.png | Bin 0 -> 523 bytes .../rc/window_undock_pressed@2x.png | Bin 0 -> 880 bytes src/ui/qdarkstyle/style.qrc | 216 ++ src/ui/qdarkstyle/style.qss | 2184 +++++++++++++++++ src/ui/qdarkstyle/svg/arrow_down.svg | 93 + src/ui/qdarkstyle/svg/arrow_left.svg | 93 + src/ui/qdarkstyle/svg/arrow_right.svg | 93 + src/ui/qdarkstyle/svg/arrow_up.svg | 93 + src/ui/qdarkstyle/svg/base_icon.svg | 195 ++ src/ui/qdarkstyle/svg/base_palette.svg | 443 ++++ src/ui/qdarkstyle/svg/branch_closed.svg | 94 + src/ui/qdarkstyle/svg/branch_end.svg | 98 + src/ui/qdarkstyle/svg/branch_line.svg | 116 + src/ui/qdarkstyle/svg/branch_more.svg | 87 + src/ui/qdarkstyle/svg/branch_open.svg | 94 + src/ui/qdarkstyle/svg/checkbox_checked.svg | 98 + .../qdarkstyle/svg/checkbox_indeterminate.svg | 95 + src/ui/qdarkstyle/svg/checkbox_unchecked.svg | 87 + src/ui/qdarkstyle/svg/line_horizontal.svg | 82 + src/ui/qdarkstyle/svg/line_vertical.svg | 82 + src/ui/qdarkstyle/svg/radio_checked.svg | 90 + src/ui/qdarkstyle/svg/radio_unchecked.svg | 83 + .../svg/toolbar_move_horizontal.svg | 87 + .../qdarkstyle/svg/toolbar_move_vertical.svg | 87 + .../svg/toolbar_separator_horizontal.svg | 82 + .../svg/toolbar_separator_vertical.svg | 82 + src/ui/qdarkstyle/svg/transparent.svg | 81 + src/ui/qdarkstyle/svg/window_close.svg | 92 + src/ui/qdarkstyle/svg/window_grip.svg | 92 + src/ui/qdarkstyle/svg/window_minimize.svg | 82 + src/ui/qdarkstyle/svg/window_undock.svg | 92 + 348 files changed, 11093 insertions(+) create mode 100644 .gitignore create mode 100644 CMakeLists.txt create mode 100644 cmake/CheckLinkerFlag.c create mode 100644 cmake/CheckLinkerFlag.cmake create mode 100644 cmake/FindCcache.cmake create mode 100644 src/CMakeLists.txt create mode 100644 src/CommandLineEdit.cpp create mode 100644 src/CommandLineEdit.h create mode 100644 src/Config.cpp create mode 100644 src/Config.h create mode 100644 src/Configurator.cpp create mode 100644 src/Configurator.h create mode 100644 src/Configurator.ui create mode 100644 src/DaemonManager.cpp create mode 100644 src/DaemonManager.h create mode 100644 src/FutureScheduler.cpp create mode 100644 src/FutureScheduler.h create mode 100644 src/assets.qrc create mode 100755 src/assets/monero_grey.png create mode 100644 src/main.cpp create mode 100644 src/mainwindow.cpp create mode 100644 src/mainwindow.h create mode 100644 src/mainwindow.ui create mode 100644 src/ui/BreezeStyleSheets/breeze.qrc create mode 100644 src/ui/BreezeStyleSheets/dark.qss create mode 100755 src/ui/BreezeStyleSheets/dark/branch_closed-on.svg create mode 100755 src/ui/BreezeStyleSheets/dark/branch_closed.svg create mode 100755 src/ui/BreezeStyleSheets/dark/branch_open-on.svg create mode 100755 src/ui/BreezeStyleSheets/dark/branch_open.svg create mode 100755 src/ui/BreezeStyleSheets/dark/checkbox_checked.svg create mode 100755 src/ui/BreezeStyleSheets/dark/checkbox_checked_disabled.svg create mode 100755 src/ui/BreezeStyleSheets/dark/checkbox_indeterminate.svg create mode 100755 src/ui/BreezeStyleSheets/dark/checkbox_indeterminate_disabled.svg create mode 100755 src/ui/BreezeStyleSheets/dark/checkbox_unchecked.svg create mode 100755 src/ui/BreezeStyleSheets/dark/checkbox_unchecked_disabled.svg create mode 100755 src/ui/BreezeStyleSheets/dark/close-hover.svg create mode 100755 src/ui/BreezeStyleSheets/dark/close-pressed.svg create mode 100755 src/ui/BreezeStyleSheets/dark/close.svg create mode 100755 src/ui/BreezeStyleSheets/dark/down_arrow-hover.svg create mode 100755 src/ui/BreezeStyleSheets/dark/down_arrow.svg create mode 100755 src/ui/BreezeStyleSheets/dark/down_arrow_disabled.svg create mode 100755 src/ui/BreezeStyleSheets/dark/hmovetoolbar.svg create mode 100755 src/ui/BreezeStyleSheets/dark/hsepartoolbar.svg create mode 100755 src/ui/BreezeStyleSheets/dark/left_arrow.svg create mode 100755 src/ui/BreezeStyleSheets/dark/left_arrow_disabled.svg create mode 100755 src/ui/BreezeStyleSheets/dark/radio_checked.svg create mode 100755 src/ui/BreezeStyleSheets/dark/radio_checked_disabled.svg create mode 100755 src/ui/BreezeStyleSheets/dark/radio_unchecked.svg create mode 100755 src/ui/BreezeStyleSheets/dark/radio_unchecked_disabled.svg create mode 100755 src/ui/BreezeStyleSheets/dark/right_arrow.svg create mode 100755 src/ui/BreezeStyleSheets/dark/right_arrow_disabled.svg create mode 100755 src/ui/BreezeStyleSheets/dark/sizegrip.svg create mode 100755 src/ui/BreezeStyleSheets/dark/spinup_disabled.svg create mode 100755 src/ui/BreezeStyleSheets/dark/stylesheet-branch-end-closed.svg create mode 100755 src/ui/BreezeStyleSheets/dark/stylesheet-branch-end-open.svg create mode 100755 src/ui/BreezeStyleSheets/dark/stylesheet-branch-end.svg create mode 100755 src/ui/BreezeStyleSheets/dark/stylesheet-branch-more.svg create mode 100755 src/ui/BreezeStyleSheets/dark/stylesheet-vline.svg create mode 100755 src/ui/BreezeStyleSheets/dark/transparent.svg create mode 100755 src/ui/BreezeStyleSheets/dark/undock-hover.svg create mode 100755 src/ui/BreezeStyleSheets/dark/undock.svg create mode 100755 src/ui/BreezeStyleSheets/dark/up_arrow-hover.svg create mode 100755 src/ui/BreezeStyleSheets/dark/up_arrow.svg create mode 100755 src/ui/BreezeStyleSheets/dark/up_arrow_disabled.svg create mode 100755 src/ui/BreezeStyleSheets/dark/vmovetoolbar.svg create mode 100755 src/ui/BreezeStyleSheets/dark/vsepartoolbars.svg create mode 100644 src/ui/BreezeStyleSheets/light.qss create mode 100755 src/ui/BreezeStyleSheets/light/branch_closed-on.svg create mode 100755 src/ui/BreezeStyleSheets/light/branch_closed.svg create mode 100755 src/ui/BreezeStyleSheets/light/branch_open-on.svg create mode 100755 src/ui/BreezeStyleSheets/light/branch_open.svg create mode 100755 src/ui/BreezeStyleSheets/light/checkbox_checked-hover.svg create mode 100755 src/ui/BreezeStyleSheets/light/checkbox_checked.svg create mode 100755 src/ui/BreezeStyleSheets/light/checkbox_checked_disabled.svg create mode 100755 src/ui/BreezeStyleSheets/light/checkbox_indeterminate-hover.svg create mode 100755 src/ui/BreezeStyleSheets/light/checkbox_indeterminate.svg create mode 100755 src/ui/BreezeStyleSheets/light/checkbox_indeterminate_disabled.svg create mode 100755 src/ui/BreezeStyleSheets/light/checkbox_unchecked-hover.svg create mode 100755 src/ui/BreezeStyleSheets/light/checkbox_unchecked_disabled.svg create mode 100755 src/ui/BreezeStyleSheets/light/close-hover.svg create mode 100755 src/ui/BreezeStyleSheets/light/close-pressed.svg create mode 100755 src/ui/BreezeStyleSheets/light/close.svg create mode 100755 src/ui/BreezeStyleSheets/light/down_arrow-hover.svg create mode 100755 src/ui/BreezeStyleSheets/light/down_arrow.svg create mode 100755 src/ui/BreezeStyleSheets/light/down_arrow_disabled.svg create mode 100755 src/ui/BreezeStyleSheets/light/hmovetoolbar.svg create mode 100755 src/ui/BreezeStyleSheets/light/hsepartoolbar.svg create mode 100755 src/ui/BreezeStyleSheets/light/left_arrow.svg create mode 100755 src/ui/BreezeStyleSheets/light/left_arrow_disabled.svg create mode 100755 src/ui/BreezeStyleSheets/light/radio_checked-hover.svg create mode 100755 src/ui/BreezeStyleSheets/light/radio_checked.svg create mode 100755 src/ui/BreezeStyleSheets/light/radio_checked_disabled.svg create mode 100755 src/ui/BreezeStyleSheets/light/radio_unchecked-hover.svg create mode 100755 src/ui/BreezeStyleSheets/light/radio_unchecked_disabled.svg create mode 100755 src/ui/BreezeStyleSheets/light/right_arrow.svg create mode 100755 src/ui/BreezeStyleSheets/light/right_arrow_disabled.svg create mode 100755 src/ui/BreezeStyleSheets/light/sizegrip.svg create mode 100755 src/ui/BreezeStyleSheets/light/spinup_disabled.svg create mode 100755 src/ui/BreezeStyleSheets/light/stylesheet-branch-end-closed.svg create mode 100755 src/ui/BreezeStyleSheets/light/stylesheet-branch-end-open.svg create mode 100755 src/ui/BreezeStyleSheets/light/stylesheet-branch-end.svg create mode 100755 src/ui/BreezeStyleSheets/light/stylesheet-branch-more.svg create mode 100755 src/ui/BreezeStyleSheets/light/stylesheet-vline.svg create mode 100755 src/ui/BreezeStyleSheets/light/transparent.svg create mode 100755 src/ui/BreezeStyleSheets/light/undock-hover.svg create mode 100755 src/ui/BreezeStyleSheets/light/undock.svg create mode 100755 src/ui/BreezeStyleSheets/light/up_arrow-hover.svg create mode 100755 src/ui/BreezeStyleSheets/light/up_arrow.svg create mode 100755 src/ui/BreezeStyleSheets/light/up_arrow_disabled.svg create mode 100755 src/ui/BreezeStyleSheets/light/vmovetoolbar.svg create mode 100755 src/ui/BreezeStyleSheets/light/vsepartoolbars.svg create mode 100644 src/ui/qdarkstyle/rc/arrow_down.png create mode 100644 src/ui/qdarkstyle/rc/arrow_down@2x.png create mode 100644 src/ui/qdarkstyle/rc/arrow_down_disabled.png create mode 100644 src/ui/qdarkstyle/rc/arrow_down_disabled@2x.png create mode 100644 src/ui/qdarkstyle/rc/arrow_down_focus.png create mode 100644 src/ui/qdarkstyle/rc/arrow_down_focus@2x.png create mode 100644 src/ui/qdarkstyle/rc/arrow_down_pressed.png create mode 100644 src/ui/qdarkstyle/rc/arrow_down_pressed@2x.png create mode 100644 src/ui/qdarkstyle/rc/arrow_left.png create mode 100644 src/ui/qdarkstyle/rc/arrow_left@2x.png create mode 100644 src/ui/qdarkstyle/rc/arrow_left_disabled.png create mode 100644 src/ui/qdarkstyle/rc/arrow_left_disabled@2x.png create mode 100644 src/ui/qdarkstyle/rc/arrow_left_focus.png create mode 100644 src/ui/qdarkstyle/rc/arrow_left_focus@2x.png create mode 100644 src/ui/qdarkstyle/rc/arrow_left_pressed.png create mode 100644 src/ui/qdarkstyle/rc/arrow_left_pressed@2x.png create mode 100644 src/ui/qdarkstyle/rc/arrow_right.png create mode 100644 src/ui/qdarkstyle/rc/arrow_right@2x.png create mode 100644 src/ui/qdarkstyle/rc/arrow_right_disabled.png create mode 100644 src/ui/qdarkstyle/rc/arrow_right_disabled@2x.png create mode 100644 src/ui/qdarkstyle/rc/arrow_right_focus.png create mode 100644 src/ui/qdarkstyle/rc/arrow_right_focus@2x.png create mode 100644 src/ui/qdarkstyle/rc/arrow_right_pressed.png create mode 100644 src/ui/qdarkstyle/rc/arrow_right_pressed@2x.png create mode 100644 src/ui/qdarkstyle/rc/arrow_up.png create mode 100644 src/ui/qdarkstyle/rc/arrow_up@2x.png create mode 100644 src/ui/qdarkstyle/rc/arrow_up_disabled.png create mode 100644 src/ui/qdarkstyle/rc/arrow_up_disabled@2x.png create mode 100644 src/ui/qdarkstyle/rc/arrow_up_focus.png create mode 100644 src/ui/qdarkstyle/rc/arrow_up_focus@2x.png create mode 100644 src/ui/qdarkstyle/rc/arrow_up_pressed.png create mode 100644 src/ui/qdarkstyle/rc/arrow_up_pressed@2x.png create mode 100644 src/ui/qdarkstyle/rc/base_icon.png create mode 100644 src/ui/qdarkstyle/rc/base_icon@2x.png create mode 100644 src/ui/qdarkstyle/rc/base_icon_disabled.png create mode 100644 src/ui/qdarkstyle/rc/base_icon_disabled@2x.png create mode 100644 src/ui/qdarkstyle/rc/base_icon_focus.png create mode 100644 src/ui/qdarkstyle/rc/base_icon_focus@2x.png create mode 100644 src/ui/qdarkstyle/rc/base_icon_pressed.png create mode 100644 src/ui/qdarkstyle/rc/base_icon_pressed@2x.png create mode 100644 src/ui/qdarkstyle/rc/branch_closed.png create mode 100644 src/ui/qdarkstyle/rc/branch_closed@2x.png create mode 100644 src/ui/qdarkstyle/rc/branch_closed_disabled.png create mode 100644 src/ui/qdarkstyle/rc/branch_closed_disabled@2x.png create mode 100644 src/ui/qdarkstyle/rc/branch_closed_focus.png create mode 100644 src/ui/qdarkstyle/rc/branch_closed_focus@2x.png create mode 100644 src/ui/qdarkstyle/rc/branch_closed_pressed.png create mode 100644 src/ui/qdarkstyle/rc/branch_closed_pressed@2x.png create mode 100644 src/ui/qdarkstyle/rc/branch_end.png create mode 100644 src/ui/qdarkstyle/rc/branch_end@2x.png create mode 100644 src/ui/qdarkstyle/rc/branch_end_disabled.png create mode 100644 src/ui/qdarkstyle/rc/branch_end_disabled@2x.png create mode 100644 src/ui/qdarkstyle/rc/branch_end_focus.png create mode 100644 src/ui/qdarkstyle/rc/branch_end_focus@2x.png create mode 100644 src/ui/qdarkstyle/rc/branch_end_pressed.png create mode 100644 src/ui/qdarkstyle/rc/branch_end_pressed@2x.png create mode 100644 src/ui/qdarkstyle/rc/branch_line.png create mode 100644 src/ui/qdarkstyle/rc/branch_line@2x.png create mode 100644 src/ui/qdarkstyle/rc/branch_line_disabled.png create mode 100644 src/ui/qdarkstyle/rc/branch_line_disabled@2x.png create mode 100644 src/ui/qdarkstyle/rc/branch_line_focus.png create mode 100644 src/ui/qdarkstyle/rc/branch_line_focus@2x.png create mode 100644 src/ui/qdarkstyle/rc/branch_line_pressed.png create mode 100644 src/ui/qdarkstyle/rc/branch_line_pressed@2x.png create mode 100644 src/ui/qdarkstyle/rc/branch_more.png create mode 100644 src/ui/qdarkstyle/rc/branch_more@2x.png create mode 100644 src/ui/qdarkstyle/rc/branch_more_disabled.png create mode 100644 src/ui/qdarkstyle/rc/branch_more_disabled@2x.png create mode 100644 src/ui/qdarkstyle/rc/branch_more_focus.png create mode 100644 src/ui/qdarkstyle/rc/branch_more_focus@2x.png create mode 100644 src/ui/qdarkstyle/rc/branch_more_pressed.png create mode 100644 src/ui/qdarkstyle/rc/branch_more_pressed@2x.png create mode 100644 src/ui/qdarkstyle/rc/branch_open.png create mode 100644 src/ui/qdarkstyle/rc/branch_open@2x.png create mode 100644 src/ui/qdarkstyle/rc/branch_open_disabled.png create mode 100644 src/ui/qdarkstyle/rc/branch_open_disabled@2x.png create mode 100644 src/ui/qdarkstyle/rc/branch_open_focus.png create mode 100644 src/ui/qdarkstyle/rc/branch_open_focus@2x.png create mode 100644 src/ui/qdarkstyle/rc/branch_open_pressed.png create mode 100644 src/ui/qdarkstyle/rc/branch_open_pressed@2x.png create mode 100644 src/ui/qdarkstyle/rc/checkbox_checked.png create mode 100644 src/ui/qdarkstyle/rc/checkbox_checked@2x.png create mode 100644 src/ui/qdarkstyle/rc/checkbox_checked_disabled.png create mode 100644 src/ui/qdarkstyle/rc/checkbox_checked_disabled@2x.png create mode 100644 src/ui/qdarkstyle/rc/checkbox_checked_focus.png create mode 100644 src/ui/qdarkstyle/rc/checkbox_checked_focus@2x.png create mode 100644 src/ui/qdarkstyle/rc/checkbox_checked_pressed.png create mode 100644 src/ui/qdarkstyle/rc/checkbox_checked_pressed@2x.png create mode 100644 src/ui/qdarkstyle/rc/checkbox_indeterminate.png create mode 100644 src/ui/qdarkstyle/rc/checkbox_indeterminate@2x.png create mode 100644 src/ui/qdarkstyle/rc/checkbox_indeterminate_disabled.png create mode 100644 src/ui/qdarkstyle/rc/checkbox_indeterminate_disabled@2x.png create mode 100644 src/ui/qdarkstyle/rc/checkbox_indeterminate_focus.png create mode 100644 src/ui/qdarkstyle/rc/checkbox_indeterminate_focus@2x.png create mode 100644 src/ui/qdarkstyle/rc/checkbox_indeterminate_pressed.png create mode 100644 src/ui/qdarkstyle/rc/checkbox_indeterminate_pressed@2x.png create mode 100644 src/ui/qdarkstyle/rc/checkbox_unchecked.png create mode 100644 src/ui/qdarkstyle/rc/checkbox_unchecked@2x.png create mode 100644 src/ui/qdarkstyle/rc/checkbox_unchecked_disabled.png create mode 100644 src/ui/qdarkstyle/rc/checkbox_unchecked_disabled@2x.png create mode 100644 src/ui/qdarkstyle/rc/checkbox_unchecked_focus.png create mode 100644 src/ui/qdarkstyle/rc/checkbox_unchecked_focus@2x.png create mode 100644 src/ui/qdarkstyle/rc/checkbox_unchecked_pressed.png create mode 100644 src/ui/qdarkstyle/rc/checkbox_unchecked_pressed@2x.png create mode 100644 src/ui/qdarkstyle/rc/line_horizontal.png create mode 100644 src/ui/qdarkstyle/rc/line_horizontal@2x.png create mode 100644 src/ui/qdarkstyle/rc/line_horizontal_disabled.png create mode 100644 src/ui/qdarkstyle/rc/line_horizontal_disabled@2x.png create mode 100644 src/ui/qdarkstyle/rc/line_horizontal_focus.png create mode 100644 src/ui/qdarkstyle/rc/line_horizontal_focus@2x.png create mode 100644 src/ui/qdarkstyle/rc/line_horizontal_pressed.png create mode 100644 src/ui/qdarkstyle/rc/line_horizontal_pressed@2x.png create mode 100644 src/ui/qdarkstyle/rc/line_vertical.png create mode 100644 src/ui/qdarkstyle/rc/line_vertical@2x.png create mode 100644 src/ui/qdarkstyle/rc/line_vertical_disabled.png create mode 100644 src/ui/qdarkstyle/rc/line_vertical_disabled@2x.png create mode 100644 src/ui/qdarkstyle/rc/line_vertical_focus.png create mode 100644 src/ui/qdarkstyle/rc/line_vertical_focus@2x.png create mode 100644 src/ui/qdarkstyle/rc/line_vertical_pressed.png create mode 100644 src/ui/qdarkstyle/rc/line_vertical_pressed@2x.png create mode 100644 src/ui/qdarkstyle/rc/radio_checked.png create mode 100644 src/ui/qdarkstyle/rc/radio_checked@2x.png create mode 100644 src/ui/qdarkstyle/rc/radio_checked_disabled.png create mode 100644 src/ui/qdarkstyle/rc/radio_checked_disabled@2x.png create mode 100644 src/ui/qdarkstyle/rc/radio_checked_focus.png create mode 100644 src/ui/qdarkstyle/rc/radio_checked_focus@2x.png create mode 100644 src/ui/qdarkstyle/rc/radio_checked_pressed.png create mode 100644 src/ui/qdarkstyle/rc/radio_checked_pressed@2x.png create mode 100644 src/ui/qdarkstyle/rc/radio_unchecked.png create mode 100644 src/ui/qdarkstyle/rc/radio_unchecked@2x.png create mode 100644 src/ui/qdarkstyle/rc/radio_unchecked_disabled.png create mode 100644 src/ui/qdarkstyle/rc/radio_unchecked_disabled@2x.png create mode 100644 src/ui/qdarkstyle/rc/radio_unchecked_focus.png create mode 100644 src/ui/qdarkstyle/rc/radio_unchecked_focus@2x.png create mode 100644 src/ui/qdarkstyle/rc/radio_unchecked_pressed.png create mode 100644 src/ui/qdarkstyle/rc/radio_unchecked_pressed@2x.png create mode 100644 src/ui/qdarkstyle/rc/toolbar_move_horizontal.png create mode 100644 src/ui/qdarkstyle/rc/toolbar_move_horizontal@2x.png create mode 100644 src/ui/qdarkstyle/rc/toolbar_move_horizontal_disabled.png create mode 100644 src/ui/qdarkstyle/rc/toolbar_move_horizontal_disabled@2x.png create mode 100644 src/ui/qdarkstyle/rc/toolbar_move_horizontal_focus.png create mode 100644 src/ui/qdarkstyle/rc/toolbar_move_horizontal_focus@2x.png create mode 100644 src/ui/qdarkstyle/rc/toolbar_move_horizontal_pressed.png create mode 100644 src/ui/qdarkstyle/rc/toolbar_move_horizontal_pressed@2x.png create mode 100644 src/ui/qdarkstyle/rc/toolbar_move_vertical.png create mode 100644 src/ui/qdarkstyle/rc/toolbar_move_vertical@2x.png create mode 100644 src/ui/qdarkstyle/rc/toolbar_move_vertical_disabled.png create mode 100644 src/ui/qdarkstyle/rc/toolbar_move_vertical_disabled@2x.png create mode 100644 src/ui/qdarkstyle/rc/toolbar_move_vertical_focus.png create mode 100644 src/ui/qdarkstyle/rc/toolbar_move_vertical_focus@2x.png create mode 100644 src/ui/qdarkstyle/rc/toolbar_move_vertical_pressed.png create mode 100644 src/ui/qdarkstyle/rc/toolbar_move_vertical_pressed@2x.png create mode 100644 src/ui/qdarkstyle/rc/toolbar_separator_horizontal.png create mode 100644 src/ui/qdarkstyle/rc/toolbar_separator_horizontal@2x.png create mode 100644 src/ui/qdarkstyle/rc/toolbar_separator_horizontal_disabled.png create mode 100644 src/ui/qdarkstyle/rc/toolbar_separator_horizontal_disabled@2x.png create mode 100644 src/ui/qdarkstyle/rc/toolbar_separator_horizontal_focus.png create mode 100644 src/ui/qdarkstyle/rc/toolbar_separator_horizontal_focus@2x.png create mode 100644 src/ui/qdarkstyle/rc/toolbar_separator_horizontal_pressed.png create mode 100644 src/ui/qdarkstyle/rc/toolbar_separator_horizontal_pressed@2x.png create mode 100644 src/ui/qdarkstyle/rc/toolbar_separator_vertical.png create mode 100644 src/ui/qdarkstyle/rc/toolbar_separator_vertical@2x.png create mode 100644 src/ui/qdarkstyle/rc/toolbar_separator_vertical_disabled.png create mode 100644 src/ui/qdarkstyle/rc/toolbar_separator_vertical_disabled@2x.png create mode 100644 src/ui/qdarkstyle/rc/toolbar_separator_vertical_focus.png create mode 100644 src/ui/qdarkstyle/rc/toolbar_separator_vertical_focus@2x.png create mode 100644 src/ui/qdarkstyle/rc/toolbar_separator_vertical_pressed.png create mode 100644 src/ui/qdarkstyle/rc/toolbar_separator_vertical_pressed@2x.png create mode 100644 src/ui/qdarkstyle/rc/transparent.png create mode 100644 src/ui/qdarkstyle/rc/transparent@2x.png create mode 100644 src/ui/qdarkstyle/rc/transparent_disabled.png create mode 100644 src/ui/qdarkstyle/rc/transparent_disabled@2x.png create mode 100644 src/ui/qdarkstyle/rc/transparent_focus.png create mode 100644 src/ui/qdarkstyle/rc/transparent_focus@2x.png create mode 100644 src/ui/qdarkstyle/rc/transparent_pressed.png create mode 100644 src/ui/qdarkstyle/rc/transparent_pressed@2x.png create mode 100644 src/ui/qdarkstyle/rc/window_close.png create mode 100644 src/ui/qdarkstyle/rc/window_close@2x.png create mode 100644 src/ui/qdarkstyle/rc/window_close_disabled.png create mode 100644 src/ui/qdarkstyle/rc/window_close_disabled@2x.png create mode 100644 src/ui/qdarkstyle/rc/window_close_focus.png create mode 100644 src/ui/qdarkstyle/rc/window_close_focus@2x.png create mode 100644 src/ui/qdarkstyle/rc/window_close_pressed.png create mode 100644 src/ui/qdarkstyle/rc/window_close_pressed@2x.png create mode 100644 src/ui/qdarkstyle/rc/window_grip.png create mode 100644 src/ui/qdarkstyle/rc/window_grip@2x.png create mode 100644 src/ui/qdarkstyle/rc/window_grip_disabled.png create mode 100644 src/ui/qdarkstyle/rc/window_grip_disabled@2x.png create mode 100644 src/ui/qdarkstyle/rc/window_grip_focus.png create mode 100644 src/ui/qdarkstyle/rc/window_grip_focus@2x.png create mode 100644 src/ui/qdarkstyle/rc/window_grip_pressed.png create mode 100644 src/ui/qdarkstyle/rc/window_grip_pressed@2x.png create mode 100644 src/ui/qdarkstyle/rc/window_minimize.png create mode 100644 src/ui/qdarkstyle/rc/window_minimize@2x.png create mode 100644 src/ui/qdarkstyle/rc/window_minimize_disabled.png create mode 100644 src/ui/qdarkstyle/rc/window_minimize_disabled@2x.png create mode 100644 src/ui/qdarkstyle/rc/window_minimize_focus.png create mode 100644 src/ui/qdarkstyle/rc/window_minimize_focus@2x.png create mode 100644 src/ui/qdarkstyle/rc/window_minimize_pressed.png create mode 100644 src/ui/qdarkstyle/rc/window_minimize_pressed@2x.png create mode 100644 src/ui/qdarkstyle/rc/window_undock.png create mode 100644 src/ui/qdarkstyle/rc/window_undock@2x.png create mode 100644 src/ui/qdarkstyle/rc/window_undock_disabled.png create mode 100644 src/ui/qdarkstyle/rc/window_undock_disabled@2x.png create mode 100644 src/ui/qdarkstyle/rc/window_undock_focus.png create mode 100644 src/ui/qdarkstyle/rc/window_undock_focus@2x.png create mode 100644 src/ui/qdarkstyle/rc/window_undock_pressed.png create mode 100644 src/ui/qdarkstyle/rc/window_undock_pressed@2x.png create mode 100644 src/ui/qdarkstyle/style.qrc create mode 100644 src/ui/qdarkstyle/style.qss create mode 100644 src/ui/qdarkstyle/svg/arrow_down.svg create mode 100644 src/ui/qdarkstyle/svg/arrow_left.svg create mode 100644 src/ui/qdarkstyle/svg/arrow_right.svg create mode 100644 src/ui/qdarkstyle/svg/arrow_up.svg create mode 100644 src/ui/qdarkstyle/svg/base_icon.svg create mode 100644 src/ui/qdarkstyle/svg/base_palette.svg create mode 100644 src/ui/qdarkstyle/svg/branch_closed.svg create mode 100644 src/ui/qdarkstyle/svg/branch_end.svg create mode 100644 src/ui/qdarkstyle/svg/branch_line.svg create mode 100644 src/ui/qdarkstyle/svg/branch_more.svg create mode 100644 src/ui/qdarkstyle/svg/branch_open.svg create mode 100644 src/ui/qdarkstyle/svg/checkbox_checked.svg create mode 100644 src/ui/qdarkstyle/svg/checkbox_indeterminate.svg create mode 100644 src/ui/qdarkstyle/svg/checkbox_unchecked.svg create mode 100644 src/ui/qdarkstyle/svg/line_horizontal.svg create mode 100644 src/ui/qdarkstyle/svg/line_vertical.svg create mode 100644 src/ui/qdarkstyle/svg/radio_checked.svg create mode 100644 src/ui/qdarkstyle/svg/radio_unchecked.svg create mode 100644 src/ui/qdarkstyle/svg/toolbar_move_horizontal.svg create mode 100644 src/ui/qdarkstyle/svg/toolbar_move_vertical.svg create mode 100644 src/ui/qdarkstyle/svg/toolbar_separator_horizontal.svg create mode 100644 src/ui/qdarkstyle/svg/toolbar_separator_vertical.svg create mode 100644 src/ui/qdarkstyle/svg/transparent.svg create mode 100644 src/ui/qdarkstyle/svg/window_close.svg create mode 100644 src/ui/qdarkstyle/svg/window_grip.svg create mode 100644 src/ui/qdarkstyle/svg/window_minimize.svg create mode 100644 src/ui/qdarkstyle/svg/window_undock.svg diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1c828c4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +cmake-build-debug/ +.idea/ diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..a617eff --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,221 @@ +cmake_minimum_required(VERSION 3.13) +project(moneroservice) + +message(STATUS "Initiating compile using CMake ${CMAKE_VERSION}") + +set(THREADS_PREFER_PTHREAD_FLAG ON) +set(VERSION_MAJOR "0") +set(VERSION_MINOR "1") +set(VERSION_REVISION "0") +set(VERSION "beta-3") + +list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_SOURCE_DIR}/cmake") +include(CheckCCompilerFlag) +include(CheckCXXCompilerFlag) +include(CheckLinkerFlag) +include(FetchContent) +include(FindCcache) +include(CheckIncludeFile) +include(CheckSymbolExists) + +if(DEBUG) + set(CMAKE_VERBOSE_MAKEFILE ON) +endif() + +set(ARCH "x86-64") +set(BUILD_64 ON) +set(USE_SINGLE_BUILDDIR ON) + +check_include_file(sys/prctl.h HAVE_SYS_PRCTL_H) +check_symbol_exists(prctl "sys/prctl.h" HAVE_PRCTL) + +function (add_c_flag_if_supported flag var) + string(REPLACE "-" "_" supported ${flag}_c) + check_c_compiler_flag(${flag} ${supported}) + if(${${supported}}) + set(${var} "${${var}} ${flag}" PARENT_SCOPE) + endif() +endfunction() + +function (add_cxx_flag_if_supported flag var) + string(REPLACE "-" "_" supported ${flag}_cxx) + check_cxx_compiler_flag(${flag} ${supported}) + if(${${supported}}) + set(${var} "${${var}} ${flag}" PARENT_SCOPE) + endif() +endfunction() + +function (add_linker_flag_if_supported flag var) + string(REPLACE "-" "_" supported ${flag}_ld) + string(REPLACE "," "_" supported ${flag}_ld) + check_linker_flag(${flag} ${supported}) + if(${${supported}}) + set(${var} "${${var}} ${flag}" PARENT_SCOPE) + endif() +endfunction() + + +include(CMakePackageConfigHelpers) + +if(UNIX AND NOT APPLE) + if (NOT CMAKE_BUILD_TYPE STREQUAL "Debug") + # https://github.com/monero-project/monero-gui/issues/3142#issuecomment-705940446 + set(CMAKE_SKIP_RPATH ON) + endif() + + find_package(X11 REQUIRED) + message(STATUS "X11_FOUND = ${X11_FOUND}") + message(STATUS "X11_INCLUDE_DIR = ${X11_INCLUDE_DIR}") + message(STATUS "X11_LIBRARIES = ${X11_LIBRARIES}") + include_directories(${X11_INCLUDE_DIR}) + link_directories(${X11_LIBRARIES}) + if(STATIC) + find_library(XCB_LIBRARY xcb) + message(STATUS "Found xcb library: ${XCB_LIBRARY}") + endif() +endif() + + +if(MINGW) + string(REGEX MATCH "^[^/]:/[^/]*" msys2_install_path "${CMAKE_C_COMPILER}") + message(STATUS "MSYS location: ${msys2_install_path}") + set(CMAKE_INCLUDE_PATH "${msys2_install_path}/mingw${ARCH_WIDTH}/include") + # This is necessary because otherwise CMake will make Boost libraries -lfoo + # rather than a full path. Unfortunately, this makes the shared libraries get + # linked due to a bug in CMake which misses putting -static flags around the + # -lfoo arguments. + set(DEFLIB ${msys2_install_path}/mingw${ARCH_WIDTH}/lib) + list(REMOVE_ITEM CMAKE_C_IMPLICIT_LINK_DIRECTORIES ${DEFLIB}) + list(REMOVE_ITEM CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES ${DEFLIB}) +endif() + + +if(MINGW) + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wa,-mbig-obj") + set(EXTRA_LIBRARIES mswsock;ws2_32;iphlpapi;crypt32;bcrypt) + if(DEPENDS) + set(ICU_LIBRARIES iconv) + else() + set(ICU_LIBRARIES icuio icuin icuuc icudt icutu iconv) + endif() +elseif(APPLE) + set(EXTRA_LIBRARIES "-framework AppKit") +elseif(OPENBSD) + set(EXTRA_LIBRARIES "") +elseif(FREEBSD) + set(EXTRA_LIBRARIES execinfo) +elseif(DRAGONFLY) + find_library(COMPAT compat) + set(EXTRA_LIBRARIES execinfo ${COMPAT}) +elseif(CMAKE_SYSTEM_NAME MATCHES "(SunOS|Solaris)") + set(EXTRA_LIBRARIES socket nsl resolv) +elseif(NOT MSVC AND NOT DEPENDS) + find_library(RT rt) + set(EXTRA_LIBRARIES ${RT}) +endif() + +list(APPEND EXTRA_LIBRARIES ${CMAKE_DL_LIBS}) + +if(APPLE) + include_directories(SYSTEM /usr/include/malloc) + if(POLICY CMP0042) + cmake_policy(SET CMP0042 NEW) + endif() + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=x86-64 -fvisibility=default -std=c++11") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=default -DGTEST_HAS_TR1_TUPLE=0") +endif() + +if (APPLE AND NOT IOS) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=x86-64 -fvisibility=default -std=c++11") +endif() + +if(APPLE) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=default -DGTEST_HAS_TR1_TUPLE=0") +endif() + +# warnings +# @TODO: enable these 2 for migration to Qt 6 +#add_c_flag_if_supported(-Werror C_SECURITY_FLAGS) +#add_cxx_flag_if_supported(-Werror CXX_SECURITY_FLAGS) +add_c_flag_if_supported(-Wformat C_SECURITY_FLAGS) +add_cxx_flag_if_supported(-Wformat CXX_SECURITY_FLAGS) +add_c_flag_if_supported(-Wformat-security C_SECURITY_FLAGS) +add_cxx_flag_if_supported(-Wformat-security CXX_SECURITY_FLAGS) + +# -fstack-protector +if (NOT OPENBSD AND NOT (WIN32 AND (CMAKE_C_COMPILER_ID STREQUAL "GNU" AND CMAKE_C_COMPILER_VERSION VERSION_LESS 9.1))) + add_c_flag_if_supported(-fstack-protector C_SECURITY_FLAGS) + add_cxx_flag_if_supported(-fstack-protector CXX_SECURITY_FLAGS) + add_c_flag_if_supported(-fstack-protector-strong C_SECURITY_FLAGS) + add_cxx_flag_if_supported(-fstack-protector-strong CXX_SECURITY_FLAGS) +endif() + +# New in GCC 8.2 +if (NOT OPENBSD AND NOT (WIN32 AND (CMAKE_C_COMPILER_ID STREQUAL "GNU" AND CMAKE_C_COMPILER_VERSION VERSION_LESS 9.1))) + add_c_flag_if_supported(-fcf-protection=full C_SECURITY_FLAGS) + add_cxx_flag_if_supported(-fcf-protection=full CXX_SECURITY_FLAGS) +endif() +if (NOT WIN32 AND NOT OPENBSD) + add_c_flag_if_supported(-fstack-clash-protection C_SECURITY_FLAGS) + add_cxx_flag_if_supported(-fstack-clash-protection CXX_SECURITY_FLAGS) +endif() + +# Removed in GCC 9.1 (or before ?), but still accepted, so spams the output +if (NOT (CMAKE_C_COMPILER_ID STREQUAL "GNU" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 9.1)) + add_c_flag_if_supported(-mmitigate-rop C_SECURITY_FLAGS) + add_cxx_flag_if_supported(-mmitigate-rop CXX_SECURITY_FLAGS) +endif() + +# linker +if (APPLE) + add_linker_flag_if_supported(-Wl,-bind_at_load LD_SECURITY_FLAGS) + add_linker_flag_if_supported(-Wl,-dead_strip LD_SECURITY_FLAGS) + add_linker_flag_if_supported(-Wl,-dead_strip_dylibs LD_SECURITY_FLAGS) +endif() +if (NOT APPLE AND NOT (WIN32 AND CMAKE_C_COMPILER_ID STREQUAL "GNU")) + # Windows binaries die on startup with PIE when compiled with GCC + add_linker_flag_if_supported(-pie LD_SECURITY_FLAGS) +endif() +add_linker_flag_if_supported(-Wl,-z,relro LD_SECURITY_FLAGS) +add_linker_flag_if_supported(-Wl,-z,now LD_SECURITY_FLAGS) +add_linker_flag_if_supported(-Wl,-z,noexecstack noexecstack_SUPPORTED) +if (noexecstack_SUPPORTED) + set(LD_SECURITY_FLAGS "${LD_SECURITY_FLAGS} -Wl,-z,noexecstack") +endif() +add_linker_flag_if_supported(-Wl,-z,noexecheap noexecheap_SUPPORTED) +if (noexecheap_SUPPORTED) + set(LD_SECURITY_FLAGS "${LD_SECURITY_FLAGS} -Wl,-z,noexecheap") +endif() + +# some windows linker bits +if (WIN32) + add_linker_flag_if_supported(-Wl,--dynamicbase LD_SECURITY_FLAGS) + add_linker_flag_if_supported(-Wl,--nxcompat LD_SECURITY_FLAGS) + add_linker_flag_if_supported(-Wl,--high-entropy-va LD_SECURITY_FLAGS) +endif() + +if(STATIC) + add_linker_flag_if_supported(-static-libgcc STATIC_FLAGS) + add_linker_flag_if_supported(-static-libstdc++ STATIC_FLAGS) + if(MINGW) + add_linker_flag_if_supported(-static STATIC_FLAGS) + endif() +endif() + +# With GCC 6.1.1 the compiled binary malfunctions due to aliasing. Until that +# is fixed in the code (Issue #847), force compiler to be conservative. +add_c_flag_if_supported(-fno-strict-aliasing C_SECURITY_FLAGS) +add_cxx_flag_if_supported(-fno-strict-aliasing CXX_SECURITY_FLAGS) + +add_c_flag_if_supported(-fPIC C_SECURITY_FLAGS) +add_cxx_flag_if_supported(-fPIC CXX_SECURITY_FLAGS) + +message(STATUS "Using C security hardening flags: ${C_SECURITY_FLAGS}") +message(STATUS "Using C++ security hardening flags: ${CXX_SECURITY_FLAGS}") +message(STATUS "Using linker security hardening flags: ${LD_SECURITY_FLAGS}") + +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11 ${C_SECURITY_FLAGS}") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 ${CXX_SECURITY_FLAGS}") +set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LD_SECURITY_FLAGS} ${STATIC_FLAGS}") + +add_subdirectory(src) diff --git a/cmake/CheckLinkerFlag.c b/cmake/CheckLinkerFlag.c new file mode 100644 index 0000000..a0dcc16 --- /dev/null +++ b/cmake/CheckLinkerFlag.c @@ -0,0 +1,14 @@ +#ifdef __CLASSIC_C__ +int main() +{ + int ac; + char* av[]; +#else +int main(int ac, char* av[]) +{ +#endif + if (ac > 1000) { + return *av[0]; + } + return 0; +} diff --git a/cmake/CheckLinkerFlag.cmake b/cmake/CheckLinkerFlag.cmake new file mode 100644 index 0000000..96f7182 --- /dev/null +++ b/cmake/CheckLinkerFlag.cmake @@ -0,0 +1,47 @@ +include(CheckCCompilerFlag) + +macro(CHECK_LINKER_FLAG flag VARIABLE) + if(NOT DEFINED "${VARIABLE}") + if(NOT CMAKE_REQUIRED_QUIET) + message(STATUS "Looking for ${flag} linker flag") + endif() + + set(_cle_source ${CMAKE_SOURCE_DIR}/cmake/CheckLinkerFlag.c) + + set(saved_CMAKE_C_FLAGS ${CMAKE_C_FLAGS}) + set(CMAKE_C_FLAGS "${flag}") + try_compile(${VARIABLE} + ${CMAKE_BINARY_DIR} + ${_cle_source} + COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} ${flag} + CMAKE_FLAGS + OUTPUT_VARIABLE OUTPUT) + unset(_cle_source) + set(CMAKE_C_FLAGS ${saved_CMAKE_C_FLAGS}) + unset(saved_CMAKE_C_FLAGS) + + if ("${OUTPUT}" MATCHES "warning.*ignored") + set(${VARIABLE} 0) + endif() + + if(${VARIABLE}) + if(NOT CMAKE_REQUIRED_QUIET) + message(STATUS "Looking for ${flag} linker flag - found") + endif() + set(${VARIABLE} 1 CACHE INTERNAL "Have linker flag ${flag}") + file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log + "Determining if the ${flag} linker flag is supported " + "passed with the following output:\n" + "${OUTPUT}\n\n") + else() + if(NOT CMAKE_REQUIRED_QUIET) + message(STATUS "Looking for ${flag} linker flag - not found") + endif() + set(${VARIABLE} "" CACHE INTERNAL "Have linker flag ${flag}") + file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log + "Determining if the ${flag} linker flag is supported " + "failed with the following output:\n" + "${OUTPUT}\n\n") + endif() + endif() +endmacro() diff --git a/cmake/FindCcache.cmake b/cmake/FindCcache.cmake new file mode 100644 index 0000000..29e2d24 --- /dev/null +++ b/cmake/FindCcache.cmake @@ -0,0 +1,56 @@ +# Copyright (c) 2014-2020, The Monero Project +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are +# permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, this list of +# conditions and the following disclaimer. +# +# 2. Redistributions in binary form must reproduce the above copyright notice, this list +# of conditions and the following disclaimer in the documentation and/or other +# materials provided with the distribution. +# +# 3. Neither the name of the copyright holder nor the names of its contributors may be +# used to endorse or promote products derived from this software without specific +# prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# - Try to find readline include dirs and libraries +# +# Automatically finds ccache build accelerator, if it's found in PATH. +# +# Usage of this module as follows: +# +# project(monero) +# include(FindCcache) # Include AFTER the project() macro to be able to reach the CMAKE_CXX_COMPILER variable +# +# Properties modified by this module: +# +# GLOBAL PROPERTY RULE_LAUNCH_COMPILE set to ccache, when ccache found +# GLOBAL PROPERTY RULE_LAUNCH_LINK set to ccache, when ccache found + +find_program(CCACHE_FOUND ccache) +if (CCACHE_FOUND) + set(TEMP_CPP_FILE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/test-program.cpp") + file(WRITE "${TEMP_CPP_FILE}" "int main() { return 0; }") + execute_process(COMMAND "${CCACHE_FOUND}" "${CMAKE_CXX_COMPILER}" "${TEMP_CPP_FILE}" RESULT_VARIABLE RET) + if (${RET} EQUAL 0) + message("found usable ccache: ${CCACHE_FOUND}") + set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_FOUND}") + set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK "${CCACHE_FOUND}") + else() + message("found ccache ${CCACHE_FOUND}, but is UNUSABLE! Return code: ${RET}") + endif() +else() + message("ccache NOT found!") +endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..ebdcb36 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,68 @@ +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +# pthread +find_package(Threads REQUIRED) +find_package(Qt5 REQUIRED COMPONENTS Core Widgets Gui) + +qt5_add_resources(RESOURCES assets.qrc) + +# Compile source files (.h/.cpp) +file(GLOB SOURCE_FILES + "*.h" + "*.cpp" + "ui/BreezeStyleSheets/breeze.qrc" + "ui/qdarkstyle/style.qrc" +) + +set(EXECUTABLE_FLAG) + +add_executable(moneroservice ${EXECUTABLE_FLAG} main.cpp + ${SOURCE_FILES} + ${RESOURCES} +) + +set_property(TARGET moneroservice PROPERTY RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") + +target_include_directories(moneroservice PUBLIC ${Qt5Gui_PRIVATE_INCLUDE_DIRS}) + +file(GLOB_RECURSE SRC_SOURCES *.cpp) +file(GLOB_RECURSE SRC_HEADERS *.h) + +target_include_directories(moneroservice PUBLIC + ${CMAKE_BINARY_DIR}/src/moneroservice_autogen/include + ${CMAKE_SOURCE_DIR}/src + ${CMAKE_CURRENT_SOURCE_DIR} + ${X11_INCLUDE_DIR} + ${Qt5Core_INCLUDE_DIRS} + ${Qt5Widgets_INCLUDE_DIRS} + ${Qt5Gui_INCLUDE_DIRS} +) + +target_compile_definitions(moneroservice + PUBLIC + ${Qt5Core_DEFINITIONS} + ${Qt5Widgets_DEFINITIONS} + ${Qt5Gui_DEFINITIONS} + ) + +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}") + +target_link_libraries(moneroservice + ${CMAKE_DL_LIBS} + ${EXTRA_LIBRARIES} + Qt5::Core + Qt5::Widgets + Qt5::Gui + ${ICU_LIBRARIES} + Threads::Threads + ) + +if(X11_FOUND) + target_link_libraries(moneroservice ${X11_LIBRARIES}) +endif() + +install(TARGETS moneroservice + DESTINATION ${CMAKE_INSTALL_PREFIX} + ) diff --git a/src/CommandLineEdit.cpp b/src/CommandLineEdit.cpp new file mode 100644 index 0000000..86c9032 --- /dev/null +++ b/src/CommandLineEdit.cpp @@ -0,0 +1,61 @@ +// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2021, The Monero Project. + +#include "CommandLineEdit.h" + +#include + +CommandLineEdit::CommandLineEdit(QWidget *parent) : QLineEdit(parent) +{ + connect(this, &QLineEdit::returnPressed, this, &CommandLineEdit::updateHistory); +} + +void CommandLineEdit::keyPressEvent(QKeyEvent *event) { + if (event->key() == Qt::Key_Up) { + if (m_historyIndex == m_history.size()) { + m_currentLine = this->text(); + } + if (this->decreaseIndex()) { + this->setText(this->getCommand(m_historyIndex)); + } + } else if (event->key() == Qt::Key_Down) { + if (this->increaseIndex()) { + this->setText(this->getCommand(m_historyIndex)); + } + } + QLineEdit::keyPressEvent(event); +} + +bool CommandLineEdit::decreaseIndex() { + if (m_historyIndex > 0 && m_history.size() >= m_historyIndex) { + m_historyIndex -= 1; + return true; + } + return false; +} + +bool CommandLineEdit::increaseIndex() { + if (m_historyIndex < m_history.size()) { + m_historyIndex += 1; + return true; + } + return false; +} + +QString CommandLineEdit::getCommand(int index) { + if (index < m_history.size()) { + return m_history[index]; + } else { + return m_currentLine; + } +} + +void CommandLineEdit::updateHistory() { + QString command = this->text(); + if (m_history.isEmpty() || m_history.last() != command) { + m_history << command; + m_historyIndex = m_history.size(); + } + this->setText(""); + emit commandExecuted(command.split(" ")); +} \ No newline at end of file diff --git a/src/CommandLineEdit.h b/src/CommandLineEdit.h new file mode 100644 index 0000000..e17bfe6 --- /dev/null +++ b/src/CommandLineEdit.h @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2021, The Monero Project. + +#ifndef MONEROSERVICE_COMMANDLINEEDIT_H +#define MONEROSERVICE_COMMANDLINEEDIT_H + +#include +#include + +class CommandLineEdit : public QLineEdit { + Q_OBJECT + +public: + explicit CommandLineEdit(QWidget *parent = nullptr); + + void keyPressEvent(QKeyEvent *event) override; + +signals: + void commandExecuted(const QStringList &command); + +private: + void updateHistory(); + bool decreaseIndex(); + bool increaseIndex(); + QString getCommand(int index); + + QString m_currentLine; + int m_historyIndex = 1; + QStringList m_history; +}; + + +#endif //MONEROSERVICE_COMMANDLINEEDIT_H diff --git a/src/Config.cpp b/src/Config.cpp new file mode 100644 index 0000000..4809269 --- /dev/null +++ b/src/Config.cpp @@ -0,0 +1,118 @@ +// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2020-2021, The Monero Project. +// Copyright (c) 2020 KeePassXC Team +// Copyright (c) 2011 Felix Geyer + +#include "Config.h" + +#include +#include + +#define QS QStringLiteral + +struct ConfigDirective +{ + QString name; + QVariant defaultValue; +}; + +static const QHash configStrings = { + {Config::network,{QS("network"), "mainnet"}}, + {Config::pathToMonerod,{QS("pathToMonerod"), ""}}, + {Config::pruneBlockchain,{QS("pruneBlockchain"), true}}, + {Config::dataDir,{QS("dataDir"), ""}}, + {Config::logLevel,{QS("logLevel"), 0}}, + {Config::limitRateDown,{QS("limitRateDown"), 0}}, + {Config::customStartupFlags,{QS("customStartupFlags"), ""}}, + {Config::noZeroMQ,{QS("noZeroMQ"), true}}, + {Config::RPCBindIP,{QS("RPCBindIP"), ""}}, + {Config::RPCBindPort,{QS("RPCBindPort"), 0}}, + {Config::P2PBindIP,{QS("P2PBindIP"), ""}}, + {Config::P2PBindPort,{QS("P2PBindPort"), 0}}, +}; + + +QPointer Config::m_instance(nullptr); + +QVariant Config::get(ConfigKey key) +{ + auto cfg = configStrings[key]; + auto defaultValue = configStrings[key].defaultValue; + + return m_settings->value(cfg.name, defaultValue); +} + +QString Config::getFileName() +{ + return m_settings->fileName(); +} + +void Config::set(ConfigKey key, const QVariant& value) +{ + if (get(key) == value) { + return; + } + + auto cfg = configStrings[key]; + m_settings->setValue(cfg.name, value); + + this->sync(); + emit changed(key); +} + +/** + * Sync configuration with persistent storage. + * + * Usually, you don't need to call this method manually, but if you are writing + * configurations after an emitted \link QCoreApplication::aboutToQuit() signal, + * use it to guarantee your config values are persisted. + */ +void Config::sync() +{ + m_settings->sync(); +} + +void Config::resetToDefaults() +{ + m_settings->clear(); +} + +Config::Config(const QString& fileName, QObject* parent) + : QObject(parent) +{ + init(fileName); +} + +Config::Config(QObject* parent) + : QObject(parent) +{ + QString configPath; + + configPath = QDir::homePath(); + configPath += "/.config/moneroservice/settings.json"; + + init(QDir::toNativeSeparators(configPath)); +} + + +Config::~Config() +{ +} + +void Config::init(const QString& configFileName) +{ +// const QSettings::Format jsonFormat = QSettings::registerFormat("json", Utils::readJsonFile, Utils::writeJsonFile); +// QSettings::setDefaultFormat(jsonFormat); + m_settings.reset(new QSettings()); + + connect(qApp, &QCoreApplication::aboutToQuit, this, &Config::sync); +} + +Config* Config::instance() +{ + if (!m_instance) { + m_instance = new Config(qApp); + } + + return m_instance; +} \ No newline at end of file diff --git a/src/Config.h b/src/Config.h new file mode 100644 index 0000000..6efe31e --- /dev/null +++ b/src/Config.h @@ -0,0 +1,64 @@ +// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2020-2021, The Monero Project. +// Copyright (c) 2020 KeePassXC Team +// Copyright (c) 2011 Felix Geyer + +#ifndef MONEROSERVICE_SETTINGS_H +#define MONEROSERVICE_SETTINGS_H + +#include +#include +#include + +class Config : public QObject +{ +Q_OBJECT + +public: + Q_DISABLE_COPY(Config) + + enum ConfigKey + { + network, + pathToMonerod, + pruneBlockchain, + dataDir, + logLevel, + limitRateDown, + customStartupFlags, + noZeroMQ, + RPCBindIP, + RPCBindPort, + P2PBindIP, + P2PBindPort + }; + + ~Config() override; + QVariant get(ConfigKey key); + QString getFileName(); + void set(ConfigKey key, const QVariant& value); + void sync(); + void resetToDefaults(); + + static Config* instance(); + +signals: + void changed(ConfigKey key); + +private: + Config(const QString& fileName, QObject* parent = nullptr); + explicit Config(QObject* parent); + void init(const QString& configFileName); + + static QPointer m_instance; + + QScopedPointer m_settings; + QHash m_defaults; +}; + +inline Config* config() +{ + return Config::instance(); +} + +#endif //MONEROSERVICE_SETTINGS_H diff --git a/src/Configurator.cpp b/src/Configurator.cpp new file mode 100644 index 0000000..d9a2c2b --- /dev/null +++ b/src/Configurator.cpp @@ -0,0 +1,86 @@ +#include "Configurator.h" +#include "ui_Configurator.h" +#include "Config.h" + +#include + +Configurator::Configurator(QWidget *parent) : + QDialog(parent), + ui(new Ui::Configurator) +{ + ui->setupUi(this); + + // Basic settings + ui->lineMonerod->setText(config()->get(Config::pathToMonerod).toString()); + ui->lineMonerod->setCursorPosition(0); + connect(ui->lineMonerod, &QLineEdit::textChanged, [this](const QString &text){ + this->setConfig(Config::pathToMonerod, text); + }); + + ui->checkPruneBlockchain->setChecked(config()->get(Config::pruneBlockchain).toBool()); + connect(ui->checkPruneBlockchain, &QCheckBox::toggled, [this](bool toggled){ + this->setConfig(Config::pruneBlockchain, toggled); + }); + + ui->lineDataDir->setText(config()->get(Config::dataDir).toString()); + connect(ui->lineDataDir, &QLineEdit::textChanged, [this](const QString &text){ + this->setConfig(Config::dataDir, text); + }); + + ui->spinLimitSpeedDown->setValue(config()->get(Config::limitRateDown).toInt()); + connect(ui->spinLimitSpeedDown, QOverload::of(&QSpinBox::valueChanged), [this](int value){ + this->setConfig(Config::limitRateDown, value); + }); + + // Advanced settings + ui->comboNetwork->setCurrentIndex(config()->get(Config::network).toInt()); + connect(ui->comboNetwork, QOverload::of(&QComboBox::currentIndexChanged), [this](int value){ + this->setConfig(Config::network, value); + }); + + ui->comboLogLevel->setCurrentIndex(config()->get(Config::logLevel).toInt()); + connect(ui->comboLogLevel, QOverload::of(&QComboBox::currentIndexChanged), [this](int value){ + this->setConfig(Config::logLevel, value); + }); + + ui->checkNoZeroMQ->setChecked(config()->get(Config::noZeroMQ).toBool()); + connect(ui->checkNoZeroMQ, &QCheckBox::toggled, [this](bool toggled){ + this->setConfig(Config::noZeroMQ, toggled); + }); + + ui->lineRPCBindIP->setText(config()->get(Config::RPCBindIP).toString()); + connect(ui->lineRPCBindIP, &QLineEdit::textChanged, [this](const QString &text){ + this->setConfig(Config::RPCBindIP, text); + }); + + ui->lineRPCBindPort->setText(config()->get(Config::RPCBindPort).toString()); + connect(ui->lineP2PBindPort, &QLineEdit::textChanged, [this](const QString &text){ + this->setConfig(Config::P2PBindPort, text); + }); + + ui->lineP2PBindIP->setText(config()->get(Config::P2PBindIP).toString()); + connect(ui->lineP2PBindIP, &QLineEdit::textChanged, [this](const QString &text){ + this->setConfig(Config::P2PBindIP, text); + }); + + ui->lineP2PBindPort->setText(config()->get(Config::P2PBindPort).toString()); + connect(ui->lineP2PBindPort, &QLineEdit::textChanged, [this](const QString &text){ + this->setConfig(Config::P2PBindPort, text); + }); + + this->adjustSize(); +} + +bool Configurator::configUpdated() const { + return m_configUpdated; +} + +void Configurator::setConfig(Config::ConfigKey configKey, const QVariant &value) { + this->m_configUpdated = true; + config()->set(configKey, value); +} + +Configurator::~Configurator() +{ + delete ui; +} diff --git a/src/Configurator.h b/src/Configurator.h new file mode 100644 index 0000000..641f8cf --- /dev/null +++ b/src/Configurator.h @@ -0,0 +1,27 @@ +#ifndef MONEROSERVICE_CONFIGURATOR_H +#define MONEROSERVICE_CONFIGURATOR_H + +#include +#include "Config.h" + +namespace Ui { + class Configurator; +} + +class Configurator : public QDialog +{ + Q_OBJECT + +public: + explicit Configurator(QWidget *parent = nullptr); + ~Configurator() override; + bool configUpdated() const; + +private: + void setConfig(Config::ConfigKey configKey, const QVariant &value); + Ui::Configurator *ui; + + bool m_configUpdated = false; +}; + +#endif //MONEROSERVICE_CONFIGURATOR_H diff --git a/src/Configurator.ui b/src/Configurator.ui new file mode 100644 index 0000000..3d5fc20 --- /dev/null +++ b/src/Configurator.ui @@ -0,0 +1,345 @@ + + + Configurator + + + + 0 + 0 + 692 + 585 + + + + + 500 + 0 + + + + Config + + + + + + 1 + + + + Basic + + + + + + Path to monerod: + + + + + + + + + + + Browse + + + + + + + + + + + + Blockchain + + + + + + Prune blockchain + + + true + + + + + + + Data directory: + + + + + + + + + Leave blank for default + + + + + + + Browse + + + + + + + + + + + + Network + + + + + + + + Limit download speed: + + + + + + + 0 + + + + + + + + + + + + Qt::Vertical + + + + 20 + 0 + + + + + + + + + Advanced + + + + + + + + Network + + + + + + + + Mainnet + + + + + Stagenet + + + + + Testnet + + + + + + + + Log level + + + + + + + + Default + + + + + Info + + + + + Debug + + + + + + + + RPC port + + + + + + + P2P port + + + + + + + RPC bind IP + + + + + + + 127.0.0.1 + + + + + + + P2P bind IP + + + + + + + 127.0.0.1 + + + + + + + 18081 + + + + + + + 18082 + + + + + + + + + No ZeroMQ + + + true + + + + + + + Startup flags + + + + + + + + + + + + Qt::Vertical + + + + 20 + 81 + + + + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Ok + + + + + + + + + buttonBox + accepted() + Configurator + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + Configurator + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/src/DaemonManager.cpp b/src/DaemonManager.cpp new file mode 100644 index 0000000..e9b13ab --- /dev/null +++ b/src/DaemonManager.cpp @@ -0,0 +1,240 @@ +// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2014-2021, The Monero Project. + +#include "DaemonManager.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +bool DaemonManager::start(const QStringList &flags, int port) +{ + if (!QFileInfo(m_monerod).isFile()) + { + emit daemonStartFailure("\"" + QDir::toNativeSeparators(m_monerod) + "\" " + tr("executable is missing")); + return false; + } + + m_port = port; + + // prepare command line arguments and pass to monerod + QStringList arguments = flags; + + arguments << "--check-updates" << "disabled"; + + qDebug() << "starting monerod " + m_monerod; + qDebug() << "With command line arguments " << arguments; + + QMutexLocker locker(&m_daemonMutex); + + m_daemon.reset(new QProcess()); + + // Connect output slots + connect(m_daemon.get(), &QProcess::readyReadStandardOutput, this, &DaemonManager::printOutput); + connect(m_daemon.get(), &QProcess::readyReadStandardError, this, &DaemonManager::printError); + + // add state changed listener + connect(m_daemon.get(), &QProcess::stateChanged, this, &DaemonManager::stateChanged); + + // Start monerod + m_daemon->start(m_monerod, arguments); + + // Start start watcher + m_scheduler.run([this] { + if (startWatcher()) { + emit daemonStarted(); + } + }); + + return true; +} + +void DaemonManager::stop() +{ + m_daemon->terminate(); + m_scheduler.run([this]{ + stopWatcher(); + }); +} + +bool DaemonManager::isRunning() const { + return m_running; +} + +bool DaemonManager::startWatcher() +{ + // Check if daemon is started every 2 seconds + QElapsedTimer timer; + timer.start(); + while(!m_app_exit && m_running) { + QThread::sleep(2); + if(!started()) { + qDebug() << "daemon not running. checking again in 2 seconds."; + } else { + qDebug() << "daemon is started. Waiting 5 seconds to let daemon catch up"; + return true; + } + } + return false; +} + +bool DaemonManager::stopWatcher() +{ + // Check if daemon is running every 2 seconds. Kill if still running after 10 seconds + int counter = 0; + while(!m_app_exit && !m_running) { + QThread::sleep(2); + counter++; + if(!started()) { + return true; + } else { + qDebug() << "Daemon still running. " << counter; + if(counter >= 5) { + m_daemon->kill(); + } + } + } + return false; +} + + +void DaemonManager::stateChanged(QProcess::ProcessState state) +{ + qDebug() << "STATE CHANGED: " << state; + m_running = (state != QProcess::NotRunning); + if (state == QProcess::NotRunning) { + emit daemonStopped(); + } +} + +void DaemonManager::printOutput() +{ + QByteArray byteArray = [this]() { + QMutexLocker locker(&m_daemonMutex); + return m_daemon->readAllStandardOutput(); + }(); + QStringList strLines = QString(byteArray).split("\n"); + + for (const auto& line: strLines) { + emit daemonConsoleUpdated(line); + } +} + +void DaemonManager::printError() +{ + QByteArray byteArray = [this]() { + QMutexLocker locker(&m_daemonMutex); + return m_daemon->readAllStandardError(); + }(); + QStringList strLines = QString(byteArray).split("\n"); + + for (const auto& line: strLines) { + emit daemonConsoleUpdated(line); + qDebug() << "Daemon ERROR: " + line; + } +} + +bool DaemonManager::started() +{ + QString status; + sendCommand({"sync_info"}, status); + qDebug() << status; + m_started = status.contains("Height:"); + return m_started; +} + +bool DaemonManager::sendCommand(const QStringList &cmd, QString &message) const +{ + QProcess p; + QStringList external_cmd(cmd); + + external_cmd << "--rpc-bind-port" << QString::number(m_port); + + qDebug() << "sending external cmd: " << external_cmd; + + p.start(m_monerod, external_cmd); + + bool started = p.waitForFinished(-1); + message = p.readAllStandardOutput(); + emit daemonConsoleUpdated(message); + return started; +} + +void DaemonManager::sendCommandAsync(const QStringList &cmd, std::function callback) const +{ + m_scheduler.run([this, cmd] { + QString message; + return QVariantList({sendCommand(cmd, message), message}); + }, std::move(callback)); +} + +void DaemonManager::exit() +{ + qDebug("DaemonManager: exit()"); + m_app_exit = true; +} +// +//QVariantMap DaemonManager::validateDataDir(const QString &dataDir) const +//{ +// QVariantMap result; +// bool valid = true; +// bool readOnly = false; +// int storageAvailable = 0; +// bool lmdbExists = true; +// +// QStorageInfo storage(dataDir); +// if (storage.isValid() && storage.isReady()) { +// if (storage.isReadOnly()) { +// readOnly = true; +// valid = false; +// } +// +// // Make sure there is 75GB storage available +// storageAvailable = storage.bytesAvailable()/1000/1000/1000; +// if (storageAvailable < 75) { +// valid = false; +// } +// } else { +// valid = false; +// } +// +// +// if (!QDir(dataDir+"/lmdb").exists()) { +// lmdbExists = false; +// valid = false; +// } +// +// result.insert("valid", valid); +// result.insert("lmdbExists", lmdbExists); +// result.insert("readOnly", readOnly); +// result.insert("storageAvailable", storageAvailable); +// +// return result; +//} + +void DaemonManager::setMonerodPath(const QString &path) { + m_monerod = path; +} + +DaemonManager::DaemonManager(QObject *parent) + : QObject(parent) + , m_scheduler(this) +{ +} + +DaemonManager::~DaemonManager() +{ + m_scheduler.shutdownWaitForFinished(); +} diff --git a/src/DaemonManager.h b/src/DaemonManager.h new file mode 100644 index 0000000..6e66137 --- /dev/null +++ b/src/DaemonManager.h @@ -0,0 +1,64 @@ +// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2014-2021, The Monero Project. + +#ifndef DAEMONMANAGER_H +#define DAEMONMANAGER_H + +#include + +#include +#include +#include +#include +#include +#include "FutureScheduler.h" + +class DaemonManager : public QObject +{ +Q_OBJECT + +public: + explicit DaemonManager(QObject *parent = nullptr); + ~DaemonManager() override; + + bool start(const QStringList &flags, int port); + void stop(); + + void sendCommandAsync(const QStringList &cmd, std::function callback) const; + void exit(); +// QVariantMap validateDataDir(const QString &dataDir) const; + + void setMonerodPath(const QString &path); + bool isRunning() const; + +private: + bool started(); + bool sendCommand(const QStringList &cmd, QString &message) const; + bool startWatcher(); + bool stopWatcher(); + +signals: + void daemonStarted() const; + void daemonStopped() const; + void daemonStartFailure(const QString &error) const; + void daemonConsoleUpdated(QString message) const; + +public slots: + void printOutput(); + void printError(); + void stateChanged(QProcess::ProcessState state); + +private: + std::unique_ptr m_daemon; + QMutex m_daemonMutex; + QString m_monerod; + + bool m_running = false; + bool m_started = false; + bool m_app_exit = false; + int m_port; + + mutable FutureScheduler m_scheduler; +}; + +#endif // DAEMONMANAGER_H diff --git a/src/FutureScheduler.cpp b/src/FutureScheduler.cpp new file mode 100644 index 0000000..cb936ee --- /dev/null +++ b/src/FutureScheduler.cpp @@ -0,0 +1,96 @@ +// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2014-2021, The Monero Project. + +#include "FutureScheduler.h" + +FutureScheduler::FutureScheduler(QObject *parent) + : QObject(parent), Alive(0), Stopping(false) +{ + static std::once_flag once; + std::call_once(once, []() { + QThreadPool::globalInstance()->setMaxThreadCount(4); + }); +} + +FutureScheduler::~FutureScheduler() +{ + shutdownWaitForFinished(); +} + +void FutureScheduler::shutdownWaitForFinished() noexcept +{ + QMutexLocker locker(&Mutex); + + Stopping = true; + while (Alive > 0) + { + Condition.wait(&Mutex); + } +} + +QPair> FutureScheduler::run(std::function function) noexcept +{ + return execute([this, function](QFutureWatcher *) { + return QtConcurrent::run([this, function] { + try + { + function(); + } + catch (const std::exception &exception) + { + qWarning() << "Exception thrown from async function: " << exception.what(); + } + done(); + }); + }); +} + +QPair> FutureScheduler::run(std::function function, const std::function callback) +{ + return execute([this, function, callback](QFutureWatcher *watcher) { + connect(watcher, &QFutureWatcher::finished, [watcher, callback] { + callback(watcher->future().result()); + }); + return QtConcurrent::run([this, function] { + QVariantList result; + try + { + result = function(); + } + catch (const std::exception &exception) + { + qWarning() << "Exception thrown from async function: " << exception.what(); + } + done(); + return result; + }); + }); +} + +bool FutureScheduler::stopping() const noexcept +{ + return Stopping; +} + +bool FutureScheduler::add() noexcept +{ + QMutexLocker locker(&Mutex); + + if (Stopping) + { + return false; + } + + ++Alive; + return true; +} + +void FutureScheduler::done() noexcept +{ + { + QMutexLocker locker(&Mutex); + --Alive; + } + + Condition.wakeAll(); +} diff --git a/src/FutureScheduler.h b/src/FutureScheduler.h new file mode 100644 index 0000000..3e081ba --- /dev/null +++ b/src/FutureScheduler.h @@ -0,0 +1,67 @@ +// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2014-2021, The Monero Project. + +#ifndef FUTURE_SCHEDULER_H +#define FUTURE_SCHEDULER_H + +#include + +#include +#include +#include +#include +#include +#include + +class FutureScheduler : public QObject +{ +Q_OBJECT + +public: + FutureScheduler(QObject *parent); + ~FutureScheduler(); + + void shutdownWaitForFinished() noexcept; + + QPair> run(std::function function) noexcept; + QPair> run(std::function function, const std::function callback); + bool stopping() const noexcept; + +private: + bool add() noexcept; + void done() noexcept; + + template + QPair> execute(std::function(QFutureWatcher *)> makeFuture) noexcept + { + if (add()) + { + try + { + auto *watcher = new QFutureWatcher(); + connect(watcher, &QFutureWatcher::finished, [watcher] { + watcher->deleteLater(); + }); + watcher->setFuture(makeFuture(watcher)); + return qMakePair(true, watcher->future()); + } + catch (const std::exception &exception) + { + qCritical() << "Failed to schedule async function: " << exception.what(); + done(); + } + } + + return qMakePair(false, QFuture()); + } + + QFutureWatcher schedule(std::function function); + +private: + size_t Alive; + QWaitCondition Condition; + QMutex Mutex; + std::atomic Stopping; +}; + +#endif // FUTURE_SCHEDULER_H diff --git a/src/assets.qrc b/src/assets.qrc new file mode 100644 index 0000000..486939a --- /dev/null +++ b/src/assets.qrc @@ -0,0 +1,5 @@ + + + assets/monero_grey.png + + diff --git a/src/assets/monero_grey.png b/src/assets/monero_grey.png new file mode 100755 index 0000000000000000000000000000000000000000..5006367a376b973d412a3e90c9c18215c7a834cb GIT binary patch literal 4021 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 +#include + +int main(int argc, char *argv[]) +{ + Q_INIT_RESOURCE(assets); + + QApplication a(argc, argv); + + QApplication::setApplicationName("moneroservice"); + QApplication::setOrganizationName("monero"); + + MainWindow w; + w.show(); + + return a.exec(); +} diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp new file mode 100644 index 0000000..75fcf1d --- /dev/null +++ b/src/mainwindow.cpp @@ -0,0 +1,233 @@ +// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2021, The Monero Project. + +#include "mainwindow.h" +#include "ui_mainwindow.h" +#include "Configurator.h" +#include "Config.h" + +#include +#include + +MainWindow::MainWindow(QWidget *parent) : + QMainWindow(parent), + ui(new Ui::MainWindow) +{ + ui->setupUi(this); + + this->setWindowIcon(QIcon(":/assets/monero_grey.png")); + + // Setup tray + m_trayIcon = new QSystemTrayIcon(QIcon(":/assets/monero_grey.png")); + m_trayIcon->show(); + m_showWindow = m_trayMenu.addAction("Show window"); + m_trayIcon->setContextMenu(&m_trayMenu); + + // Daemon manager + daemonManager = new DaemonManager(this); + + QString monerodPath = config()->get(Config::pathToMonerod).toString(); + if (monerodPath.isEmpty()) { + monerodPath = this->defaultMonerodPath(); + } + config()->set(Config::pathToMonerod, monerodPath); + daemonManager->setMonerodPath(monerodPath); + connect(daemonManager, &DaemonManager::daemonConsoleUpdated, this, &MainWindow::writeLogLine); + + connect(m_showWindow, &QAction::triggered, [this]{ + this->show(); + this->raise(); + this->setFocus(); + }); + + connect(ui->btn_Configure, &QPushButton::clicked, this, &MainWindow::showConfigurator); + connect(ui->commandPrompt, &CommandLineEdit::commandExecuted, this, &MainWindow::sendCommand); + + this->setStatus("not running"); + connect(ui->btn_ToggleDaemon, &QPushButton::pressed, [this]{ + if (daemonManager->isRunning()) { + this->setStatus("stopping"); + daemonManager->stop(); + } else { + QStringList flags = this->getStartupFlags(); + this->setStatus("starting"); + ui->btn_ToggleDaemon->setEnabled(false); + daemonManager->start(flags, this->getPort()); + } + }); + connect(daemonManager, &DaemonManager::daemonStarted, [this]{ + this->setStatus("running"); + ui->btn_ToggleDaemon->setEnabled(true); + ui->btn_ToggleDaemon->setText("Stop daemon"); + }); + connect(daemonManager, &DaemonManager::daemonStopped, [this]{ + this->setStatus("stopped"); + ui->btn_ToggleDaemon->setText("Start daemon"); + }); + +// qApp->setStyleSheet(this->loadStylesheet(":/qdarkstyle/style.qss")); + + this->adjustSize(); +// showMinimized(); +} + +void MainWindow::writeLogLine(const QString &line) { + auto l = line.trimmed(); + if (!l.isEmpty()) { + ui->logs->append(l); + } +} + +void MainWindow::changeEvent(QEvent* e) +{ + switch (e->type()) + { + case QEvent::WindowStateChange: + { + if (this->windowState() & Qt::WindowMinimized) + { + QTimer::singleShot(250, this, SLOT(hide())); + } + break; + } + default: + break; + } + + QMainWindow::changeEvent(e); +} + +void MainWindow::sendCommand(const QStringList &command) { + daemonManager->sendCommandAsync(command, [](const QVariantList& l){ + bool success = l[0].toBool(); + QString message = l[1].toString(); + + qDebug() << QString("Command executed: %1, with message: %2").arg(success ? "Success" : "Fail", message); + }); +} + +void MainWindow::showConfigurator() { + auto *dialog = new Configurator(this); + dialog->exec(); + if (dialog->configUpdated()) { + this->askRestartMonerod(); + } + dialog->deleteLater(); +} + +void MainWindow::askRestartMonerod() { + QMessageBox::information(this, "Config Updated", "The config has been altered, do you want to restart monerod now?"); +} + +void MainWindow::setStatus(const QString &status) { + ui->labelStatus->setText(QString("Daemon status: %1").arg(status)); +} + +int MainWindow::getPort() { + int RPCBindPort = config()->get(Config::RPCBindPort).toInt(); + if (RPCBindPort) { + return RPCBindPort; + } + + switch (config()->get(Config::network).toInt()) { + case 0: + return 18081; + case 1: + return 38081; + case 2: + return 28081; + } + return 18081; +} + +QStringList MainWindow::getStartupFlags() { + QStringList startupFlags; + + if (config()->get(Config::pruneBlockchain).toBool()) { + startupFlags << "--prune-blockchain"; + } + + QString dataDir = config()->get(Config::dataDir).toString(); + if (!dataDir.isEmpty()) { + // Todo: check if dir exists + startupFlags << "--data-dir" << dataDir; + } + + int limitRateDown = config()->get(Config::limitRateDown).toInt(); + if (limitRateDown > 0) { + startupFlags << "--limit-rate-down" << QString::number(limitRateDown); + } + + switch (config()->get(Config::network).toInt()) { + case 1: + startupFlags << "--stagenet"; + break; + case 2: + startupFlags << "--testnet"; + break; + default: + break; + } + + if (config()->get(Config::noZeroMQ).toBool()) { + startupFlags << "--no-zmq"; + } + + QString RPCBindIP = config()->get(Config::RPCBindIP).toString(); + if (!RPCBindIP.isEmpty()) { + startupFlags << "--rpc-bind-ip" << RPCBindIP; + } + int RPCBindPort = config()->get(Config::RPCBindPort).toInt(); + if (RPCBindPort > 0) { + startupFlags << "--rpc-bind-port" << QString::number(RPCBindPort); + } + + QString P2PBindIP = config()->get(Config::P2PBindIP).toString(); + if (!RPCBindIP.isEmpty()) { + startupFlags << "--p2p-bind-ip" << P2PBindIP; + } + int P2PBindPort = config()->get(Config::P2PBindPort).toInt(); + if (RPCBindPort > 0) { + startupFlags << "--p2p-bind-port" << QString::number(P2PBindPort); + } + + return startupFlags; +} + +QString MainWindow::defaultMonerodPath() { + QString monerod; + + // Platform dependent path to monerod +#ifdef Q_OS_WIN + monerod = QApplication::applicationDirPath() + "/monerod.exe"; +#elif defined(Q_OS_UNIX) + monerod = QApplication::applicationDirPath() + "/monerod"; +#endif + + if (monerod.length() == 0) { + qCritical() << "no daemon binary defined for current platform"; + } + + return monerod; +} + +QString MainWindow::loadStylesheet(const QString &resource) { + QFile f(resource); + if (!f.exists()) { + printf("Unable to set stylesheet, file not found\n"); + f.close(); + return ""; + } + + f.open(QFile::ReadOnly | QFile::Text); + QTextStream ts(&f); + QString data = ts.readAll(); + f.close(); + + return data; +} + +MainWindow::~MainWindow() +{ + delete ui; +} diff --git a/src/mainwindow.h b/src/mainwindow.h new file mode 100644 index 0000000..ba05462 --- /dev/null +++ b/src/mainwindow.h @@ -0,0 +1,51 @@ +// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2021, The Monero Project. + +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include +#include +#include +#include + +#include "DaemonManager.h" + +namespace Ui { + class MainWindow; +} + +class MainWindow : public QMainWindow +{ + Q_OBJECT + +public: + explicit MainWindow(QWidget *parent = nullptr); + ~MainWindow() override; + +private: + void writeLogLine(const QString &line); + void changeEvent(QEvent *e) override; + void showConfigurator(); + void sendCommand(const QStringList &command); + void askRestartMonerod(); + void setStatus(const QString &status); + QStringList getStartupFlags(); + int getPort(); + QString defaultMonerodPath(); + QString loadStylesheet(const QString &resource); + + Ui::MainWindow *ui; + + QSystemTrayIcon *m_trayIcon; + QMenu m_trayMenu; + QAction *m_stopDaemon; + QAction *m_showWindow; + + + + + DaemonManager *daemonManager; +}; + +#endif // MAINWINDOW_H diff --git a/src/mainwindow.ui b/src/mainwindow.ui new file mode 100644 index 0000000..a0befd1 --- /dev/null +++ b/src/mainwindow.ui @@ -0,0 +1,109 @@ + + + MainWindow + + + + 0 + 0 + 828 + 724 + + + + + 750 + 650 + + + + Monero Daemon Service + + + + + + + 0 + + + + + true + + + Logs are empty + + + + + + + + + + 75 + true + + + + Enter command + + + + + + + + + + + + + status + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Start daemon + + + + + + + Configure + + + + + + + + + + + + CommandLineEdit + QLineEdit +
CommandLineEdit.h
+
+
+ + +
diff --git a/src/ui/BreezeStyleSheets/breeze.qrc b/src/ui/BreezeStyleSheets/breeze.qrc new file mode 100644 index 0000000..88fb185 --- /dev/null +++ b/src/ui/BreezeStyleSheets/breeze.qrc @@ -0,0 +1,89 @@ + + + light/hmovetoolbar.svg + light/vmovetoolbar.svg + light/hsepartoolbar.svg + light/vsepartoolbars.svg + light/stylesheet-branch-end.svg + light/stylesheet-branch-end-closed.svg + light/stylesheet-branch-end-open.svg + light/stylesheet-vline.svg + light/stylesheet-branch-more.svg + light/branch_closed.svg + light/branch_closed-on.svg + light/branch_open.svg + light/branch_open-on.svg + light/down_arrow.svg + light/down_arrow_disabled.svg + light/down_arrow-hover.svg + light/left_arrow.svg + light/left_arrow_disabled.svg + light/right_arrow.svg + light/right_arrow_disabled.svg + light/up_arrow.svg + light/up_arrow_disabled.svg + light/up_arrow-hover.svg + light/sizegrip.svg + light/transparent.svg + light/close.svg + light/close-hover.svg + light/close-pressed.svg + light/undock.svg + light/undock-hover.svg + light/checkbox_checked-hover.svg + light/checkbox_checked.svg + light/checkbox_checked_disabled.svg + light/checkbox_indeterminate.svg + light/checkbox_indeterminate-hover.svg + light/checkbox_indeterminate_disabled.svg + light/checkbox_unchecked-hover.svg + light/checkbox_unchecked_disabled.svg + light/radio_checked-hover.svg + light/radio_checked.svg + light/radio_checked_disabled.svg + light/radio_unchecked-hover.svg + light/radio_unchecked_disabled.svg + dark/hmovetoolbar.svg + dark/vmovetoolbar.svg + dark/hsepartoolbar.svg + dark/vsepartoolbars.svg + dark/stylesheet-branch-end.svg + dark/stylesheet-branch-end-closed.svg + dark/stylesheet-branch-end-open.svg + dark/stylesheet-vline.svg + dark/stylesheet-branch-more.svg + dark/branch_closed.svg + dark/branch_closed-on.svg + dark/branch_open.svg + dark/branch_open-on.svg + dark/down_arrow.svg + dark/down_arrow_disabled.svg + dark/down_arrow-hover.svg + dark/left_arrow.svg + dark/left_arrow_disabled.svg + dark/right_arrow.svg + dark/right_arrow_disabled.svg + dark/up_arrow.svg + dark/up_arrow_disabled.svg + dark/up_arrow-hover.svg + dark/sizegrip.svg + dark/transparent.svg + dark/close.svg + dark/close-hover.svg + dark/close-pressed.svg + dark/undock.svg + dark/undock-hover.svg + dark/checkbox_checked.svg + dark/checkbox_checked_disabled.svg + dark/checkbox_indeterminate.svg + dark/checkbox_indeterminate_disabled.svg + dark/checkbox_unchecked.svg + dark/checkbox_unchecked_disabled.svg + dark/radio_checked.svg + dark/radio_checked_disabled.svg + dark/radio_unchecked.svg + dark/radio_unchecked_disabled.svg + light.qss + dark.qss + + diff --git a/src/ui/BreezeStyleSheets/dark.qss b/src/ui/BreezeStyleSheets/dark.qss new file mode 100644 index 0000000..6829099 --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark.qss @@ -0,0 +1,1664 @@ +/* + * BreezeDark stylesheet. + * + * :author: Colin Duquesnoy + * :editor: Alex Huszagh + * :license: MIT, see LICENSE.md + * + * This is originally a fork of QDarkStyleSheet, and is based on Breeze/ + * BreezeDark color scheme, but is in no way affiliated with KDE. + * + * --------------------------------------------------------------------- + * The MIT License (MIT) + * + * Copyright (c) <2013-2014> + * Copyright (c) <2015-2016> + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * --------------------------------------------------------------------- + */ + +QToolTip +{ + border: 0.1ex solid #eff0f1; + background-color: #31363b; + alternate-background-color: #3b4045; + color: #eff0f1; + padding: 0.5ex; + opacity: 200; +} + +QWidget +{ + color: #eff0f1; + background-color: #31363b; + selection-background-color:#3daee9; + selection-color: #eff0f1; + background-clip: border; + border-image: none; + border: 0px transparent black; + outline: 0; +} + +QWidget::item:hover +{ + background-color: #3daee9; + color: #eff0f1; +} + +QWidget::item:selected +{ + background-color: #3daee9; +} + + +QCheckBox +{ + spacing: 0.5ex; + outline: none; + color: #eff0f1; + margin-bottom: 0.2ex; + opacity: 200; +} + +QCheckBox:disabled +{ + color: #76797c; +} + +QGroupBox::indicator +{ + margin-left: 0.2ex; +} + +QCheckBox::indicator:unchecked, +QCheckBox::indicator:unchecked:focus +{ + border-image: url(:/dark/checkbox_unchecked_disabled.svg); +} + +QCheckBox::indicator:unchecked:hover, +QCheckBox::indicator:unchecked:pressed, +QGroupBox::indicator:unchecked:hover, +QGroupBox::indicator:unchecked:focus, +QGroupBox::indicator:unchecked:pressed +{ + border: none; + border-image: url(:/dark/checkbox_unchecked.svg); +} + +QCheckBox::indicator:checked +{ + border-image: url(:/dark/checkbox_checked.svg); +} + +QCheckBox::indicator:checked:hover, +QCheckBox::indicator:checked:focus, +QCheckBox::indicator:checked:pressed, +QGroupBox::indicator:checked:hover, +QGroupBox::indicator:checked:focus, +QGroupBox::indicator:checked:pressed +{ + border: none; + border-image: url(:/dark/checkbox_checked.svg); +} + +QCheckBox::indicator:indeterminate +{ + border-image: url(:/dark/checkbox_indeterminate.svg); +} + +QCheckBox::indicator:indeterminate:focus, +QCheckBox::indicator:indeterminate:hover, +QCheckBox::indicator:indeterminate:pressed +{ + border-image: url(:/dark/checkbox_indeterminate.svg); +} + +QCheckBox::indicator:indeterminate:disabled +{ + border-image: url(:/dark/checkbox_indeterminate_disabled.svg); +} + +QCheckBox::indicator:checked:disabled, +QGroupBox::indicator:checked:disabled +{ + border-image: url(:/dark/checkbox_checked_disabled.svg); +} + +QCheckBox::indicator:unchecked:disabled, +QGroupBox::indicator:unchecked:disabled +{ + border-image: url(:/dark/checkbox_unchecked_disabled.svg); +} + +QRadioButton +{ + spacing: 0.5ex; + outline: none; + color: #eff0f1; + margin-bottom: 0.2ex; +} + +QRadioButton:disabled +{ + color: #76797c; +} + +QRadioButton::indicator:unchecked, +QRadioButton::indicator:unchecked:focus +{ + border-image: url(:/dark/radio_unchecked_disabled.svg); +} + + +QRadioButton::indicator:unchecked:hover, +QRadioButton::indicator:unchecked:pressed +{ + border: none; + outline: none; + border-image: url(:/dark/radio_unchecked.svg); +} + + +QRadioButton::indicator:checked +{ + border: none; + outline: none; + border-image: url(:/dark/radio_checked.svg); +} + +QRadioButton::indicator:checked:hover, +QRadioButton::indicator:checked:focus, +QRadioButton::indicator:checked:pressed +{ + border: none; + outline: none; + border-image: url(:/dark/radio_checked.svg); +} + +QRadioButton::indicator:checked:disabled +{ + outline: none; + border-image: url(:/dark/radio_checked_disabled.svg); +} + +QRadioButton::indicator:unchecked:disabled +{ + border-image: url(:/dark/radio_unchecked_disabled.svg); +} + +QMenuBar +{ + background-color: #31363b; + color: #eff0f1; +} + +QMenuBar::item +{ + background: transparent; +} + +QMenuBar::item:selected +{ + background: transparent; + border: 0.1ex solid #76797c; +} + +QMenuBar::item:pressed +{ + border: 0.1ex solid #76797c; + background-color: #3daee9; + color: #eff0f1; + margin-bottom: -0.1ex; + padding-bottom: 0.1ex; +} + +QMenu +{ + border: 0.1ex solid #76797c; + color: #eff0f1; + margin: 0.2ex; +} + +QMenu::icon +{ + margin: 0.5ex; +} + +QMenu::item +{ + padding: 0.5ex 3ex 0.5ex 3ex; + margin-left: 0.5ex; + border: 0.1ex solid transparent; /* reserve space for selection border */ +} + +QMenu::item:selected +{ + color: #eff0f1; +} + +QMenu::separator +{ + height: 0.2ex; + background: lightblue; + margin-left: 1ex; + margin-right: 0.5ex; +} + +/* non-exclusive indicator = check box style indicator + (see QActionGroup::setExclusive) */ +QMenu::indicator:non-exclusive:unchecked +{ + border-image: url(:/dark/checkbox_unchecked_disabled.svg); +} + +QMenu::indicator:non-exclusive:unchecked:selected +{ + border-image: url(:/dark/checkbox_unchecked_disabled.svg); +} + +QMenu::indicator:non-exclusive:checked +{ + border-image: url(:/dark/checkbox_checked.svg); +} + +QMenu::indicator:non-exclusive:checked:selected +{ + border-image: url(:/dark/checkbox_checked.svg); +} + +/* exclusive indicator = radio button style indicator (see QActionGroup::setExclusive) */ +QMenu::indicator:exclusive:unchecked +{ + border-image: url(:/dark/radio_unchecked_disabled.svg); +} + +QMenu::indicator:exclusive:unchecked:selected +{ + border-image: url(:/dark/radio_unchecked_disabled.svg); +} + +QMenu::indicator:exclusive:checked +{ + border-image: url(:/dark/radio_checked.svg); +} + +QMenu::indicator:exclusive:checked:selected +{ + border-image: url(:/dark/radio_checked.svg); +} + +QMenu::right-arrow +{ + margin: 0.5ex; + border-image: url(:/light/right_arrow.svg); + width: 0.6ex; + height: 0.9ex; +} + + +QWidget:disabled +{ + color: #454545; + background-color: #31363b; +} + +QAbstractItemView +{ + alternate-background-color: #31363b; + color: #eff0f1; + border: 0.1ex solid 3A3939; + border-radius: 0.2ex; +} + +QWidget:focus, +QMenuBar:focus +{ + border: 0.1ex solid #3daee9; +} + +QTabWidget:focus, +QCheckBox:focus, +QRadioButton:focus, +QSlider:focus +{ + border: none; +} + +QLineEdit +{ + background-color: #232629; + padding: 0.5ex; + border-style: solid; + border: 0.1ex solid #76797c; + border-radius: 0.2ex; + color: #eff0f1; +} + +QGroupBox +{ + border: 0.1ex solid #76797c; + border-radius: 0.2ex; + padding-top: 1ex; + margin-top: 1ex; +} + +QGroupBox::title +{ + subcontrol-origin: margin; + subcontrol-position: top center; + padding-left: 0.1ex; + padding-right: 0.1ex; + margin-top: -0.7ex; +} + +QAbstractScrollArea +{ + border-radius: 0.2ex; + border: 0.1ex solid #76797c; + background-color: transparent; +} + +QScrollBar:horizontal +{ + height: 1.5ex; + margin: 0.3ex 1.5ex 0.3ex 1.5ex; + border: 0.1ex transparent #2A2929; + border-radius: 0.4ex; + background-color: #2A2929; +} + +QScrollBar::handle:horizontal +{ + background-color: #3daee9; + min-width: 0.5ex; + border-radius: 0.4ex; +} + +QScrollBar::add-line:horizontal +{ + margin: 0px 0.3ex 0px 0.3ex; + border-image: url(:/dark/right_arrow_disabled.svg); + width: 1ex; + height: 1ex; + subcontrol-position: right; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:horizontal +{ + margin: 0ex 0.3ex 0ex 0.3ex; + border-image: url(:/dark/left_arrow_disabled.svg); + width: 1ex; + height: 1ex; + subcontrol-position: left; + subcontrol-origin: margin; +} + +QScrollBar::add-line:horizontal:hover, +QScrollBar::add-line:horizontal:on +{ + border-image: url(:/dark/right_arrow.svg); + width: 1ex; + height: 1ex; + subcontrol-position: right; + subcontrol-origin: margin; +} + + +QScrollBar::sub-line:horizontal:hover, +QScrollBar::sub-line:horizontal:on +{ + border-image: url(:/dark/left_arrow.svg); + width: 1ex; + height: 1ex; + subcontrol-position: left; + subcontrol-origin: margin; +} + +QScrollBar::up-arrow:horizontal, +QScrollBar::down-arrow:horizontal +{ + background: none; +} + + +QScrollBar::add-page:horizontal, +QScrollBar::sub-page:horizontal +{ + background: none; +} + +QScrollBar:vertical +{ + background-color: #2A2929; + width: 1.5ex; + margin: 1.5ex 0.3ex 1.5ex 0.3ex; + border: 0.1ex transparent #2A2929; + border-radius: 0.4ex; +} + +QScrollBar::handle:vertical +{ + background-color: #3daee9; + min-height: 0.5ex; + border-radius: 0.4ex; +} + +QScrollBar::sub-line:vertical +{ + margin: 0.3ex 0ex 0.3ex 0ex; + border-image: url(:/dark/up_arrow_disabled.svg); + height: 1ex; + width: 1ex; + subcontrol-position: top; + subcontrol-origin: margin; +} + +QScrollBar::add-line:vertical +{ + margin: 0.3ex 0ex 0.3ex 0ex; + border-image: url(:/dark/down_arrow_disabled.svg); + height: 1ex; + width: 1ex; + subcontrol-position: bottom; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:vertical:hover, +QScrollBar::sub-line:vertical:on +{ + + border-image: url(:/dark/up_arrow.svg); + height: 1ex; + width: 1ex; + subcontrol-position: top; + subcontrol-origin: margin; +} + + +QScrollBar::add-line:vertical:hover, +QScrollBar::add-line:vertical:on +{ + border-image: url(:/dark/down_arrow.svg); + height: 1ex; + width: 1ex; + subcontrol-position: bottom; + subcontrol-origin: margin; +} + +QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical +{ + background: none; +} + + +QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical +{ + background: none; +} + +QTextEdit +{ + background-color: #232629; + color: #eff0f1; + border: 0.1ex solid #76797c; +} + +QPlainTextEdit +{ + background-color: #232629; + color: #eff0f1; + border-radius: 0.2ex; + border: 0.1ex solid #76797c; +} + +QHeaderView::section +{ + background-color: #76797c; + color: #eff0f1; + padding: 0.5ex; + border: 0.1ex solid #76797c; +} + +QSizeGrip +{ + border-image: url(:/dark/sizegrip.svg); + width: 1.2ex; + height: 1.2ex; +} + +QMainWindow::separator +{ + background-color: #31363b; + color: white; + padding-left: 0.4ex; + spacing: 0.2ex; + border: 0.1ex dashed #76797c; +} + +QMainWindow::separator:hover +{ + + background-color: #787876; + color: white; + padding-left: 0.4ex; + border: 0.1ex solid #76797c; + spacing: 0.2ex; +} + +QMenu::separator +{ + height: 0.1ex; + background-color: #76797c; + color: white; + padding-left: 0.4ex; + margin-left: 1ex; + margin-right: 0.5ex; +} + +QFrame[frameShape="2"], /* QFrame::Panel == 0x0003 */ +QFrame[frameShape="3"], /* QFrame::WinPanel == 0x0003 */ +QFrame[frameShape="4"], /* QFrame::HLine == 0x0004 */ +QFrame[frameShape="5"], /* QFrame::VLine == 0x0005 */ +QFrame[frameShape="6"] /* QFrame::StyledPanel == 0x0006 */ +{ + border-width: 0.1ex; + padding: 0.1ex; + border-style: solid; + border-color: #31363b; + background-color: #76797c; + border-radius: 0.5ex; +} + +QStackedWidget +{ + border: 0.1ex transparent black; +} + +QToolBar +{ + border: 0.1ex transparent #393838; + background: 0.1ex solid #31363b; + font-weight: bold; +} + +QToolBar::handle:horizontal +{ + border-image: url(:/dark/hmovetoolbar.svg); + width = 1.6ex; + height = 6.4ex; +} + +QToolBar::handle:vertical +{ + border-image: url(:/dark/vmovetoolbar.svg); + width = 5.4ex; + height = 1ex; +} + +QToolBar::separator:horizontal +{ + border-image: url(:/dark/hsepartoolbar.svg); + width = 0.7ex; + height = 6.3ex; +} + +QToolBar::separator:vertical +{ + border-image: url(:/dark/vsepartoolbars.svg); + width = 6.3ex; + height = 0.7ex; +} + +QPushButton +{ + color: #eff0f1; + background-color: qlineargradient(x1: 0.5, y1: 0.5 x2: 0.5, y2: 1, stop: 0 #3b4045, stop: 0.5 #31363b); + border-width: 0.1ex; + border-color: #76797c; + border-style: solid; + padding: 0.5ex; + border-radius: 0.2ex; + outline: none; +} + +QPushButton:disabled +{ + background-color: #31363b; + border-width: 0.1ex; + border-color: #454545; + border-style: solid; + padding-top: 0.5ex; + padding-bottom: 0.5ex; + padding-left: 1ex; + padding-right: 1ex; + border-radius: 0.2ex; + color: #454545; +} + +QPushButton:focus +{ + color: white; +} + +QPushButton:pressed +{ + background-color: #31363b; + padding-top: -1.5ex; + padding-bottom: -1.7ex; +} + +QComboBox +{ + selection-background-color: #3daee9; + border-style: solid; + border: 0.1ex solid #76797c; + border-radius: 0.2ex; + padding: 0.5ex; + min-width: 7.5ex; +} + +QPushButton:checked +{ + background-color: #76797c; + border-color: #6A6969; +} + +QPushButton:hover +{ + background-color: qlineargradient(x1: 0.5, y1: 0.5 x2: 0.5, y2: 1, stop: 0 #454a4f, stop: 0.5 #3b4045); + border: 0.1ex solid #3daee9; + color: #eff0f1; +} + +QPushButton:checked:hover +{ + background-color: qlineargradient(x1: 0.5, y1: 0.5 x2: 0.5, y2: 1, stop: 0 #808386, stop: 0.5 #76797c); + border: 0.1ex solid #3daee9; + color: #eff0f1; +} + +QComboBox:hover, +QAbstractSpinBox:hover, +QLineEdit:hover, +QTextEdit:hover, +QPlainTextEdit:hover, +QAbstractView:hover, +QTreeView:hover +{ + border: 0.1ex solid #3daee9; + color: #eff0f1; +} + +QComboBox:hover:pressed, +QPushButton:hover:pressed, +QAbstractSpinBox:hover:pressed, +QLineEdit:hover:pressed, +QTextEdit:hover:pressed, +QPlainTextEdit:hover:pressed, +QAbstractView:hover:pressed, +QTreeView:hover:pressed +{ + background-color: #31363b; +} + +QComboBox:on +{ + padding-top: 0.3ex; + padding-left: 0.4ex; + selection-background-color: #4a4a4a; +} + +QComboBox QAbstractItemView +{ + background-color: #232629; + border-radius: 0.2ex; + border: 0.1ex solid #76797c; + selection-background-color: #3daee9; +} + +QComboBox::drop-down +{ + subcontrol-origin: padding; + subcontrol-position: top right; + width: 1.5ex; + + border-left-width: 0ex; + border-left-color: darkgray; + border-left-style: solid; + border-top-right-radius: 0.3ex; + border-bottom-right-radius: 0.3ex; +} + +QComboBox::down-arrow +{ + border-image: url(:/dark/down_arrow_disabled.svg); + width: 0.9ex; + height: 0.6ex; +} + +QComboBox::down-arrow:on, +QComboBox::down-arrow:hover, +QComboBox::down-arrow:focus +{ + border-image: url(:/dark/down_arrow.svg); + width: 0.9ex; + height: 0.6ex; +} + +QAbstractSpinBox +{ + padding: 0.5ex; + border: 0.1ex solid #76797c; + background-color: #232629; + color: #eff0f1; + border-radius: 0.2ex; + min-width: 7.5ex; +} + +QAbstractSpinBox:up-button +{ + background-color: transparent; + subcontrol-origin: border; + subcontrol-position: center right; +} + +QAbstractSpinBox:down-button +{ + background-color: transparent; + subcontrol-origin: border; + subcontrol-position: center left; +} + +QAbstractSpinBox::up-arrow, +QAbstractSpinBox::up-arrow:disabled, +QAbstractSpinBox::up-arrow:off +{ + border-image: url(:/dark/up_arrow_disabled.svg); + width: 0.9ex; + height: 0.6ex; +} + +QAbstractSpinBox::up-arrow:hover +{ + border-image: url(:/dark/up_arrow.svg); + width: 0.9ex; + height: 0.6ex; +} + +QAbstractSpinBox::down-arrow, +QAbstractSpinBox::down-arrow:disabled, +QAbstractSpinBox::down-arrow:off +{ + border-image: url(:/dark/down_arrow_disabled.svg); + width: 0.9ex; + height: 0.6ex; +} + +QAbstractSpinBox::down-arrow:hover +{ + border-image: url(:/dark/down_arrow.svg); + width: 0.9ex; + height: 0.6ex; +} + +QLabel +{ + border: 0ex solid black; +} + +/* BORDERS */ +QTabWidget::pane +{ + padding: 0.5ex; + margin: 0.1ex; +} + +QTabWidget::pane:top +{ + border: 0.1ex solid #76797c; + top: -0.1ex; +} + +QTabWidget::pane:bottom +{ + border: 0.1ex solid #76797c; + bottom: -0.1ex; +} + +QTabWidget::pane:left +{ + border: 0.1ex solid #76797c; + right: -0.1ex; +} + +QTabWidget::pane:right +{ + border: 0.1ex solid #76797c; + left: -0.1ex; +} + + +QTabBar +{ + qproperty-drawBase: 0; + left: 0.5ex; /* move to the right by 0.5ex */ + border-radius: 0.3ex; +} + +QTabBar:focus +{ + border: 0ex transparent black; +} + +QTabBar::close-button +{ + border-image: url(:/dark/close.svg); + background: transparent; +} + +QTabBar::close-button:hover +{ + border-image: url(:/dark/close-hover.svg); + width: 1.2ex; + height: 1.2ex; + background: transparent; +} + +QTabBar::close-button:pressed +{ + border-image: url(:/dark/close-pressed.svg); + width: 1.2ex; + height: 1.2ex; + background: transparent; +} + +/* TOP TABS */ +QTabBar::tab:top +{ + color: #eff0f1; + border: 0.1ex transparent black; + border-left: 0.1ex solid #76797c; + border-top: 0.1ex solid #76797c; + background-color: #31363b; + padding: 0.5ex; + min-width: 50px; + border-top-left-radius: 0.2ex; + border-top-right-radius: 0.2ex; +} + +QTabBar::tab:top:last, +QTabBar::tab:top:only-one +{ + color: #eff0f1; + border: 0.1ex transparent black; + border-left: 0.1ex solid #76797c; + border-right: 0.1ex solid #76797c; + border-top: 0.1ex solid #76797c; + background-color: #31363b; + padding: 0.5ex; + min-width: 50px; + border-top-left-radius: 0.2ex; + border-top-right-radius: 0.2ex; +} + +QTabBar::tab:top:!selected +{ + color: #eff0f1; + background-color: #54575B; + border: 0.1ex transparent black; + border-left: 0.1ex solid #76797c; + border-top-left-radius: 0.2ex; + border-top-right-radius: 0.2ex; +} + +QTabBar::tab:top:first:!selected +{ + color: #eff0f1; + background-color: #54575B; + border: 0.1ex transparent black; + border-top-left-radius: 0.2ex; + border-top-right-radius: 0.2ex; +} + +QTabBar::tab:top:!selected:hover +{ + background-color: rgba(61, 173, 232, 0.2); + border: 0.1ex rgba(61, 173, 232, 0.2); + border-left: 0.1ex solid #76797c; +} + +QTabBar::tab:top:!selected:first:hover +{ + background-color: rgba(61, 173, 232, 0.2); + border: 0.1ex rgba(61, 173, 232, 0.2); +} + +/* BOTTOM TABS */ + +QTabBar::tab:bottom +{ + color: #eff0f1; + border: 0.1ex transparent black; + border-left: 0.1ex solid #76797c; + border-bottom: 0.1ex solid #76797c; + background-color: #31363b; + padding: 0.5ex; + border-bottom-left-radius: 0.2ex; + border-bottom-right-radius: 0.2ex; + min-width: 50px; +} + +QTabBar::tab:bottom:last, +QTabBar::tab:bottom:only-one +{ + color: #eff0f1; + border: 0.1ex transparent black; + border-left: 0.1ex solid #76797c; + border-right: 0.1ex solid #76797c; + border-bottom: 0.1ex solid #76797c; + background-color: #31363b; + padding: 0.5ex; + border-bottom-left-radius: 0.2ex; + border-bottom-right-radius: 0.2ex; + min-width: 50px; +} + +QTabBar::tab:bottom:!selected +{ + color: #eff0f1; + background-color: #54575B; + border: 0.1ex transparent black; + border-left: 0.1ex solid #76797c; + border-bottom-left-radius: 0.2ex; + border-bottom-right-radius: 0.2ex; +} + +QTabBar::tab:bottom:first:!selected +{ + color: #eff0f1; + background-color: #54575B; + border: 0.1ex transparent black; + border-top-left-radius: 0.2ex; + border-top-right-radius: 0.2ex; +} + +QTabBar::tab:bottom:!selected:hover +{ + background-color: rgba(61, 173, 232, 0.2); + border: 0.1ex rgba(61, 173, 232, 0.2); + border-left: 0.1ex solid #76797c; +} + +QTabBar::tab:bottom:!selected:first:hover +{ + background-color: rgba(61, 173, 232, 0.2); + border: 0.1ex rgba(61, 173, 232, 0.2); +} + +/* LEFT TABS */ +QTabBar::tab:left +{ + color: #eff0f1; + border: 0.1ex transparent black; + border-top: 0.1ex solid #76797c; + border-right: 0.1ex solid #76797c; + background-color: #31363b; + padding: 0.5ex; + border-top-right-radius: 0.2ex; + border-bottom-right-radius: 0.2ex; + min-height: 50px; +} + +QTabBar::tab:left:last, +QTabBar::tab:left:only-one +{ + color: #eff0f1; + border: 0.1ex transparent black; + border-top: 0.1ex solid #76797c; + border-bottom: 0.1ex solid #76797c; + border-right: 0.1ex solid #76797c; + background-color: #31363b; + padding: 0.5ex; + border-top-right-radius: 0.2ex; + border-bottom-right-radius: 0.2ex; + min-height: 50px; +} + +QTabBar::tab:left:!selected +{ + color: #eff0f1; + background-color: #54575B; + border: 0.1ex transparent black; + border-top: 0.1ex solid #76797c; + border-top-right-radius: 0.2ex; + border-bottom-right-radius: 0.2ex; +} + +QTabBar::tab:left:!selected:hover +{ + background-color: rgba(61, 173, 232, 0.2); + border: 0.1ex rgba(61, 173, 232, 0.2); + border-top: 0.1ex solid #76797c; +} + +QTabBar::tab:left:!selected:first:hover +{ + background-color: rgba(61, 173, 232, 0.2); + border: 0.1ex rgba(61, 173, 232, 0.2); +} + +/* RIGHT TABS */ +QTabBar::tab:right +{ + color: #eff0f1; + border: 0.1ex transparent black; + border-top: 0.1ex solid #76797c; + border-left: 0.1ex solid #76797c; + background-color: #31363b; + padding: 0.5ex; + border-top-left-radius: 0.2ex; + border-bottom-left-radius: 0.2ex; + min-height: 50px; +} + +QTabBar::tab:right:last, +QTabBar::tab:right:only-one +{ + color: #eff0f1; + border: 0.1ex transparent black; + border-top: 0.1ex solid #76797c; + border-bottom: 0.1ex solid #76797c; + border-left: 0.1ex solid #76797c; + background-color: #31363b; + padding: 0.5ex; + border-top-left-radius: 0.2ex; + border-bottom-left-radius: 0.2ex; + min-height: 50px; +} + +QTabBar::tab:right:!selected +{ + color: #eff0f1; + background-color: #54575B; + border: 0.1ex transparent black; + border-top: 0.1ex solid #76797c; + border-top-left-radius: 0.2ex; + border-bottom-left-radius: 0.2ex; +} + +QTabBar::tab:right:!selected:hover +{ + background-color: rgba(61, 173, 232, 0.2); + border: 0.1ex rgba(61, 173, 232, 0.2); + border-top: 0.1ex solid #76797c; +} + +QTabBar::tab:right:!selected:first:hover +{ + background-color: rgba(61, 173, 232, 0.2); + border: 0.1ex rgba(61, 173, 232, 0.2); +} + +QTabBar QToolButton::right-arrow:enabled +{ + border-image: url(:/dark/right_arrow.svg); +} + +QTabBar QToolButton::left-arrow:enabled +{ + border-image: url(:/dark/left_arrow.svg); +} + +QTabBar QToolButton::right-arrow:disabled +{ + border-image: url(:/dark/right_arrow_disabled.svg); +} + +QTabBar QToolButton::left-arrow:disabled +{ + border-image: url(:/dark/left_arrow_disabled.svg); +} + +QDockWidget +{ + background: #31363b; + border: 0.1ex solid #403F3F; + titlebar-close-icon: url(:/dark/transparent.svg); + titlebar-normal-icon: url(:/dark/transparent.svg); +} + +QDockWidget::close-button, +QDockWidget::float-button +{ + border: 0.1ex solid transparent; + border-radius: 0.2ex; + background: transparent; +} + +QDockWidget::float-button +{ + border-image: url(:/dark/undock.svg); +} + +QDockWidget::float-button:hover +{ + border-image: url(:/dark/undock-hover.svg) ; +} + +QDockWidget::close-button +{ + border-image: url(:/dark/close.svg) ; +} + +QDockWidget::close-button:hover +{ + border-image: url(:/dark/close-hover.svg) ; +} + +QDockWidget::close-button:pressed +{ + border-image: url(:/dark/close-pressed.svg) ; +} + +QTreeView, +QListView +{ + border: 0.1ex solid #76797c; + background-color: #232629; +} + +QTreeView::branch:has-siblings:!adjoins-item +{ + border-image: url(:/dark/stylesheet-vline.svg) 0; +} + +QTreeView::branch:has-siblings:adjoins-item +{ + border-image: url(:/dark/stylesheet-branch-more.svg) 0; +} + +QTreeView::branch:!has-children:!has-siblings:adjoins-item +{ + border-image: url(:/dark/stylesheet-branch-end.svg) 0; +} + +QTreeView::branch:has-children:!has-siblings:closed, +QTreeView::branch:closed:has-children:has-siblings +{ + border-image: url(:/dark/stylesheet-branch-end-closed.svg) 0; + image: url(:/dark/branch_closed.svg); +} + +QTreeView::branch:open:has-children:!has-siblings, +QTreeView::branch:open:has-children:has-siblings +{ + border-image: url(:/dark/stylesheet-branch-end-open.svg) 0; + image: url(:/dark/branch_open.svg); +} + +/* +QTreeView::branch:has-siblings:!adjoins-item { + background: cyan; +} + +QTreeView::branch:has-siblings:adjoins-item { + background: red; +} + +QTreeView::branch:!has-children:!has-siblings:adjoins-item { + background: blue; +} + +QTreeView::branch:closed:has-children:has-siblings { + background: pink; +} + +QTreeView::branch:has-children:!has-siblings:closed { + background: gray; +} + +QTreeView::branch:open:has-children:has-siblings { + background: magenta; +} + +QTreeView::branch:open:has-children:!has-siblings { + background: green; +} +*/ + +QTableView::item, +QListView::item, +QTreeView::item +{ + padding: 0.3ex; +} + +QTableView::item:!selected:hover, +QListView::item:!selected:hover, +QTreeView::item:!selected:hover +{ + background-color: rgba(61, 173, 232, 0.2); + outline: 0; + color: #eff0f1; + padding: 0.3ex; +} + + +QSlider::groove:horizontal +{ + border: 0.1ex solid #31363b; + height: 0.4ex; + background: #565a5e; + margin: 0ex; + border-radius: 0.2ex; +} + +QSlider::handle:horizontal +{ + background: #232629; + border: 0.1ex solid #626568; + width: 1.6ex; + height: 1.6ex; + margin: -0.8ex 0; + border-radius: 0.9ex; +} + +QSlider::groove:vertical +{ + border: 0.1ex solid #31363b; + width: 0.4ex; + background: #565a5e; + margin: 0ex; + border-radius: 0.3ex; +} + +QSlider::handle:vertical +{ + background: #232629; + border: 0.1ex solid #626568; + width: 1.6ex; + height: 1.6ex; + margin: 0 -0.8ex; + border-radius: 0.9ex; +} + +QSlider::handle:horizontal:hover, +QSlider::handle:horizontal:focus, +QSlider::handle:vertical:hover, +QSlider::handle:vertical:focus +{ + border: 0.1ex solid #3daee9; +} + +QSlider::sub-page:horizontal, +QSlider::add-page:vertical +{ + background: #3daee9; + border-radius: 0.3ex; +} + +QSlider::add-page:horizontal, +QSlider::sub-page:vertical +{ + background: #626568; + border-radius: 0.3ex; +} + +QToolButton +{ + background-color: transparent; + border: 0.1ex solid #76797c; + border-radius: 0.2ex; + margin: 0.3ex; + padding: 0.5ex; +} + +QToolButton[popupMode="1"] /* only for MenuButtonPopup */ +{ + padding-right: 2ex; /* make way for the popup button */ +} + +QToolButton[popupMode="2"] /* only for InstantPopup */ +{ + padding-right: 1ex; /* make way for the popup button */ +} + +QToolButton::menu-indicator +{ + border-image: none; + image: url(:/dark/down_arrow.svg); + top: -0.7ex; + left: -0.2ex; +} + +QToolButton::menu-arrow +{ + border-image: none; + image: url(:/dark/down_arrow.svg); +} + +QToolButton:hover, +QToolButton::menu-button:hover +{ + background-color: transparent; + border: 0.1ex solid #3daee9; +} + +QToolButton:checked, +QToolButton:pressed, +QToolButton::menu-button:pressed +{ + background-color: #3daee9; + border: 0.1ex solid #3daee9; + padding: 0.5ex; +} + +QToolButton::menu-button +{ + border: 0.1ex solid #76797c; + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; + /* 1ex width + 0.4ex for border + no text = 2ex allocated above */ + width: 1ex; + padding: 0.5ex; + outline: none; +} + +QToolButton::menu-arrow:open +{ + border: 0.1ex solid #76797c; +} + +QPushButton::menu-indicator +{ + subcontrol-origin: padding; + subcontrol-position: bottom right; + left: 0.8ex; +} + +QTableView +{ + border: 0.1ex solid #76797c; + gridline-color: #31363b; + background-color: #232629; +} + + +QTableView, +QHeaderView +{ + border-radius: 0px; +} + +QTableView::item:pressed, +QListView::item:pressed, +QTreeView::item:pressed +{ + background: #3daee9; + color: #eff0f1; +} + +QTableView::item:selected:active, +QTreeView::item:selected:active, +QListView::item:selected:active +{ + background: #3daee9; + color: #eff0f1; +} + +QListView::item:selected:hover, +QTreeView::item:selected:hover +{ + background-color: #47b8f3; + color: #eff0f1; +} + +QHeaderView +{ + background-color: #31363b; + border: 0.1ex transparent; + border-radius: 0px; + margin: 0px; + padding: 0px; + +} + +QHeaderView::section +{ + background-color: #31363b; + color: #eff0f1; + padding: 0.5ex; + border: 0.1ex solid #76797c; + border-radius: 0px; + text-align: center; +} + +QHeaderView::section::vertical::first, +QHeaderView::section::vertical::only-one +{ + border-top: 0.1ex solid #76797c; +} + +QHeaderView::section::vertical +{ + border-top: transparent; +} + +QHeaderView::section::horizontal::first, +QHeaderView::section::horizontal::only-one +{ + border-left: 0.1ex solid #76797c; +} + +QHeaderView::section::horizontal +{ + border-left: transparent; +} + + +QHeaderView::section:checked +{ + color: white; + background-color: #334e5e; +} + + /* style the sort indicator */ +QHeaderView::down-arrow +{ + image: url(:/dark/down_arrow.svg); +} + +QHeaderView::up-arrow +{ + image: url(:/dark/up_arrow.svg); +} + +QTableCornerButton::section +{ + background-color: #31363b; + border: 0.1ex transparent #76797c; + border-radius: 0px; +} + +QToolBox +{ + padding: 0.5ex; + border: 0.1ex transparent black; +} + +QToolBox:selected +{ + background-color: #31363b; + border-color: #3daee9; +} + +QToolBox:hover +{ + border-color: #3daee9; +} + +QStatusBar::item +{ + border: 0px transparent dark; +} + +QFrame[height="3"], +QFrame[width="3"] +{ + background-color: #76797c; +} + +QSplitter::handle +{ + border: 0.1ex dashed #76797c; +} + +QSplitter::handle:hover +{ + background-color: #787876; + border: 0.1ex solid #76797c; +} + +QSplitter::handle:horizontal +{ + width: 0.1ex; +} + +QSplitter::handle:vertical +{ + height: 0.1ex; +} + +QProgressBar:horizontal +{ + background-color: #626568; + border: 0.1ex solid #31363b; + border-radius: 0.3ex; + height: 0.5ex; + text-align: right; + margin-top: 0.5ex; + margin-bottom: 0.5ex; + margin-right: 5ex; + padding: 0px; +} + +QProgressBar::chunk:horizontal +{ + background-color: #3daee9; + border: 0.1ex transparent; + border-radius: 0.3ex; +} + +QSpinBox, +QDoubleSpinBox +{ + padding-right: 1.5ex; +} + +QSpinBox::up-button, +QDoubleSpinBox::up-button +{ + subcontrol-origin: content; + subcontrol-position: right top; + + width: 1.6ex; + border-width: 0.1ex; +} + +QSpinBox::up-arrow, +QDoubleSpinBox::up-arrow +{ + border-image: url(:/dark/up_arrow.svg); + width: 0.9ex; + height: 0.6ex; +} + +QSpinBox::up-arrow:hover, +QSpinBox::up-arrow:pressed, +QDoubleSpinBox::up-arrow:hover, +QDoubleSpinBox::up-arrow:pressed +{ + border-image: url(:/dark/up_arrow-hover.svg); + width: 0.9ex; + height: 0.6ex; +} + +QSpinBox::up-arrow:disabled, +QSpinBox::up-arrow:off, +QDoubleSpinBox::up-arrow:disabled, +QDoubleSpinBox::up-arrow:off +{ + border-image: url(:/dark/up_arrow_disabled.svg); +} + +QSpinBox::down-button, +QDoubleSpinBox::down-button +{ + subcontrol-origin: content; + subcontrol-position: right bottom; + + width: 1.6ex; + border-width: 0.1ex; +} + +QSpinBox::down-arrow, +QDoubleSpinBox::down-arrow +{ + border-image: url(:/dark/down_arrow.svg); + width: 0.9ex; + height: 0.6ex; +} + +QSpinBox::down-arrow:hover, +QSpinBox::down-arrow:pressed, +QDoubleSpinBox::down-arrow:hover, +QDoubleSpinBox::down-arrow:pressed +{ + border-image: url(:/dark/down_arrow-hover.svg); + width: 0.9ex; + height: 0.6ex; +} + +QSpinBox::down-arrow:disabled, +QSpinBox::down-arrow:off, +QDoubleSpinBox::down-arrow:disabled, +QDoubleSpinBox::down-arrow:off +{ + border-image: url(:/dark/down_arrow_disabled.svg); +} + +/* fixes */ + +QPushButton:flat { + background-color: transparent; + border: none; +} + +QLabel:disabled { + color: #787878; +} + +QTableView::item:!selected:hover +{ + background-color: transparent; +} \ No newline at end of file diff --git a/src/ui/BreezeStyleSheets/dark/branch_closed-on.svg b/src/ui/BreezeStyleSheets/dark/branch_closed-on.svg new file mode 100755 index 0000000..8bd398f --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/branch_closed-on.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/dark/branch_closed.svg b/src/ui/BreezeStyleSheets/dark/branch_closed.svg new file mode 100755 index 0000000..f5a072f --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/branch_closed.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/dark/branch_open-on.svg b/src/ui/BreezeStyleSheets/dark/branch_open-on.svg new file mode 100755 index 0000000..4dd0c06 --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/branch_open-on.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/dark/branch_open.svg b/src/ui/BreezeStyleSheets/dark/branch_open.svg new file mode 100755 index 0000000..0745890 --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/branch_open.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/dark/checkbox_checked.svg b/src/ui/BreezeStyleSheets/dark/checkbox_checked.svg new file mode 100755 index 0000000..6753d8b --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/checkbox_checked.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/ui/BreezeStyleSheets/dark/checkbox_checked_disabled.svg b/src/ui/BreezeStyleSheets/dark/checkbox_checked_disabled.svg new file mode 100755 index 0000000..ff7e63a --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/checkbox_checked_disabled.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/ui/BreezeStyleSheets/dark/checkbox_indeterminate.svg b/src/ui/BreezeStyleSheets/dark/checkbox_indeterminate.svg new file mode 100755 index 0000000..0f17124 --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/checkbox_indeterminate.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/ui/BreezeStyleSheets/dark/checkbox_indeterminate_disabled.svg b/src/ui/BreezeStyleSheets/dark/checkbox_indeterminate_disabled.svg new file mode 100755 index 0000000..bc0f285 --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/checkbox_indeterminate_disabled.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/ui/BreezeStyleSheets/dark/checkbox_unchecked.svg b/src/ui/BreezeStyleSheets/dark/checkbox_unchecked.svg new file mode 100755 index 0000000..6f3e569 --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/checkbox_unchecked.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/ui/BreezeStyleSheets/dark/checkbox_unchecked_disabled.svg b/src/ui/BreezeStyleSheets/dark/checkbox_unchecked_disabled.svg new file mode 100755 index 0000000..dd73f75 --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/checkbox_unchecked_disabled.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/ui/BreezeStyleSheets/dark/close-hover.svg b/src/ui/BreezeStyleSheets/dark/close-hover.svg new file mode 100755 index 0000000..e2b0dd8 --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/close-hover.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/dark/close-pressed.svg b/src/ui/BreezeStyleSheets/dark/close-pressed.svg new file mode 100755 index 0000000..a0dc249 --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/close-pressed.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/dark/close.svg b/src/ui/BreezeStyleSheets/dark/close.svg new file mode 100755 index 0000000..07b50c9 --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/close.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/dark/down_arrow-hover.svg b/src/ui/BreezeStyleSheets/dark/down_arrow-hover.svg new file mode 100755 index 0000000..408397f --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/down_arrow-hover.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/dark/down_arrow.svg b/src/ui/BreezeStyleSheets/dark/down_arrow.svg new file mode 100755 index 0000000..a50df00 --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/down_arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/dark/down_arrow_disabled.svg b/src/ui/BreezeStyleSheets/dark/down_arrow_disabled.svg new file mode 100755 index 0000000..af74a30 --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/down_arrow_disabled.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/dark/hmovetoolbar.svg b/src/ui/BreezeStyleSheets/dark/hmovetoolbar.svg new file mode 100755 index 0000000..e4904db --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/hmovetoolbar.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/ui/BreezeStyleSheets/dark/hsepartoolbar.svg b/src/ui/BreezeStyleSheets/dark/hsepartoolbar.svg new file mode 100755 index 0000000..89beb22 --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/hsepartoolbar.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/dark/left_arrow.svg b/src/ui/BreezeStyleSheets/dark/left_arrow.svg new file mode 100755 index 0000000..9c787ce --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/left_arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/dark/left_arrow_disabled.svg b/src/ui/BreezeStyleSheets/dark/left_arrow_disabled.svg new file mode 100755 index 0000000..2d749e7 --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/left_arrow_disabled.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/dark/radio_checked.svg b/src/ui/BreezeStyleSheets/dark/radio_checked.svg new file mode 100755 index 0000000..b8f7064 --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/radio_checked.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/ui/BreezeStyleSheets/dark/radio_checked_disabled.svg b/src/ui/BreezeStyleSheets/dark/radio_checked_disabled.svg new file mode 100755 index 0000000..523ee00 --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/radio_checked_disabled.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/ui/BreezeStyleSheets/dark/radio_unchecked.svg b/src/ui/BreezeStyleSheets/dark/radio_unchecked.svg new file mode 100755 index 0000000..1a556e3 --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/radio_unchecked.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/ui/BreezeStyleSheets/dark/radio_unchecked_disabled.svg b/src/ui/BreezeStyleSheets/dark/radio_unchecked_disabled.svg new file mode 100755 index 0000000..b3da8a2 --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/radio_unchecked_disabled.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/ui/BreezeStyleSheets/dark/right_arrow.svg b/src/ui/BreezeStyleSheets/dark/right_arrow.svg new file mode 100755 index 0000000..b793513 --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/right_arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/dark/right_arrow_disabled.svg b/src/ui/BreezeStyleSheets/dark/right_arrow_disabled.svg new file mode 100755 index 0000000..4940025 --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/right_arrow_disabled.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/dark/sizegrip.svg b/src/ui/BreezeStyleSheets/dark/sizegrip.svg new file mode 100755 index 0000000..3388f07 --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/sizegrip.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/dark/spinup_disabled.svg b/src/ui/BreezeStyleSheets/dark/spinup_disabled.svg new file mode 100755 index 0000000..838436d --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/spinup_disabled.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/dark/stylesheet-branch-end-closed.svg b/src/ui/BreezeStyleSheets/dark/stylesheet-branch-end-closed.svg new file mode 100755 index 0000000..eb73b13 --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/stylesheet-branch-end-closed.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/ui/BreezeStyleSheets/dark/stylesheet-branch-end-open.svg b/src/ui/BreezeStyleSheets/dark/stylesheet-branch-end-open.svg new file mode 100755 index 0000000..eb73b13 --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/stylesheet-branch-end-open.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/ui/BreezeStyleSheets/dark/stylesheet-branch-end.svg b/src/ui/BreezeStyleSheets/dark/stylesheet-branch-end.svg new file mode 100755 index 0000000..334ca0c --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/stylesheet-branch-end.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/ui/BreezeStyleSheets/dark/stylesheet-branch-more.svg b/src/ui/BreezeStyleSheets/dark/stylesheet-branch-more.svg new file mode 100755 index 0000000..f5250ba --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/stylesheet-branch-more.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/ui/BreezeStyleSheets/dark/stylesheet-vline.svg b/src/ui/BreezeStyleSheets/dark/stylesheet-vline.svg new file mode 100755 index 0000000..4e7ff6a --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/stylesheet-vline.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/dark/transparent.svg b/src/ui/BreezeStyleSheets/dark/transparent.svg new file mode 100755 index 0000000..3a8ca5c --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/transparent.svg @@ -0,0 +1 @@ + diff --git a/src/ui/BreezeStyleSheets/dark/undock-hover.svg b/src/ui/BreezeStyleSheets/dark/undock-hover.svg new file mode 100755 index 0000000..6bddbd7 --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/undock-hover.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/ui/BreezeStyleSheets/dark/undock.svg b/src/ui/BreezeStyleSheets/dark/undock.svg new file mode 100755 index 0000000..9ab2197 --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/undock.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/dark/up_arrow-hover.svg b/src/ui/BreezeStyleSheets/dark/up_arrow-hover.svg new file mode 100755 index 0000000..dd1271a --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/up_arrow-hover.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/dark/up_arrow.svg b/src/ui/BreezeStyleSheets/dark/up_arrow.svg new file mode 100755 index 0000000..9f42239 --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/up_arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/dark/up_arrow_disabled.svg b/src/ui/BreezeStyleSheets/dark/up_arrow_disabled.svg new file mode 100755 index 0000000..742e1c5 --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/up_arrow_disabled.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/dark/vmovetoolbar.svg b/src/ui/BreezeStyleSheets/dark/vmovetoolbar.svg new file mode 100755 index 0000000..0a30d45 --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/vmovetoolbar.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/ui/BreezeStyleSheets/dark/vsepartoolbars.svg b/src/ui/BreezeStyleSheets/dark/vsepartoolbars.svg new file mode 100755 index 0000000..00e91ab --- /dev/null +++ b/src/ui/BreezeStyleSheets/dark/vsepartoolbars.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/ui/BreezeStyleSheets/light.qss b/src/ui/BreezeStyleSheets/light.qss new file mode 100644 index 0000000..20a4a67 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light.qss @@ -0,0 +1,1687 @@ +/* + * Breeze stylesheet. + * + * :author: Colin Duquesnoy + * :editor: Alex Huszagh + * :license: MIT, see LICENSE.md + * + * This is originally a fork of QDarkStyleSheet, and is based on Breeze/ + * BreezeDark color scheme, but is in no way affiliated with KDE. + * + * --------------------------------------------------------------------- + * The MIT License (MIT) + * + * Copyright (c) <2013-2014> + * Copyright (c) <2015-2016> + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * --------------------------------------------------------------------- + */ + +QToolTip +{ + background-color: black; + color: white; + padding: 0.5ex; +} + +QWidget +{ + color: #31363B; + background-color: #EFF0F1; + selection-background-color:#33A4DF; + selection-color: #31363B; + background-clip: border; + border-image: none; + border: 0px transparent black; + outline: 0; +} + +QWidget::item:hover +{ + background-color: #33A4DF; + color: #31363B; +} + +QWidget::item:selected +{ + background-color: #33A4DF; +} + + +QCheckBox +{ + spacing: 0.5ex; + outline: none; + color: #31363B; + margin-bottom: 0.2ex; + opacity: 200; +} + +QCheckBox:disabled +{ + color: #BAB9B8; +} + +QGroupBox::indicator +{ + margin-left: 0.2ex; + margin-left: 0.2ex; +} + +QCheckBox::indicator:unchecked, +QCheckBox::indicator:unchecked:focus +{ + border-image: url(:/light/checkbox_unchecked_disabled.svg); +} + +QCheckBox::indicator:unchecked:hover, +QCheckBox::indicator:unchecked:pressed, +QGroupBox::indicator:unchecked:hover, +QGroupBox::indicator:unchecked:focus, +QGroupBox::indicator:unchecked:pressed +{ + border: none; + border-image: url(:/light/checkbox_unchecked-hover.svg); +} + +QCheckBox::indicator:checked +{ + border-image: url(:/light/checkbox_checked.svg); +} + +QCheckBox::indicator:checked:focus, +QCheckBox::indicator:checked:pressed, +QGroupBox::indicator:checked:focus, +QGroupBox::indicator:checked:pressed +{ + border: none; + border-image: url(:/light/checkbox_checked.svg); +} + +QCheckBox::indicator:checked:hover, +QGroupBox::indicator:checked:hover +{ + border-image: url(:/light/checkbox_checked-hover.svg); +} + +QCheckBox::indicator:indeterminate +{ + border-image: url(:/light/checkbox_indeterminate.svg); +} + +QCheckBox::indicator:indeterminate:hover +{ + border-image: url(:/light/checkbox_indeterminate-hover.svg); +} + +QCheckBox::indicator:indeterminate:focus, +QCheckBox::indicator:indeterminate:pressed +{ +} + +QCheckBox::indicator:indeterminate:disabled +{ + border-image: url(:/light/checkbox_indeterminate_disabled.svg); +} + +QCheckBox::indicator:checked:disabled, +QGroupBox::indicator:checked:disabled +{ + border-image: url(:/light/checkbox_checked_disabled.svg); +} + +QCheckBox::indicator:unchecked:disabled, +QGroupBox::indicator:unchecked:disabled +{ + border-image: url(:/light/checkbox_unchecked_disabled.svg); +} + +QRadioButton +{ + spacing: 0.5ex; + outline: none; + color: #31363B; + margin-bottom: 0.2ex; +} + +QRadioButton:disabled +{ + color: #BAB9B8; +} + +QRadioButton::indicator:unchecked, +QRadioButton::indicator:unchecked:focus +{ + border-image: url(:/light/radio_unchecked_disabled.svg); +} + +QRadioButton::indicator:unchecked:hover, +QRadioButton::indicator:unchecked:pressed +{ + border: none; + outline: none; + border-image: url(:/light/radio_unchecked-hover.svg); +} + +QRadioButton::indicator:checked +{ + border: none; + outline: none; + border-image: url(:/light/radio_checked.svg); +} + +QRadioButton::indicator:checked:focus, +QRadioButton::indicator:checked:pressed +{ + border: none; + outline: none; + border-image: url(:/light/radio_checked.svg); +} + +QRadioButton::indicator:checked:hover +{ + border-image: url(:/light/radio_checked-hover.svg); +} + +QRadioButton::indicator:checked:disabled +{ + outline: none; + border-image: url(:/light/radio_checked_disabled.svg); +} + +QRadioButton::indicator:unchecked:disabled +{ + border-image: url(:/light/radio_unchecked_disabled.svg); +} + +QMenuBar +{ + background-color: #EFF0F1; + color: #31363B; +} + +QMenuBar::item +{ + background: transparent; +} + +QMenuBar::item:selected +{ + background: transparent; + border: 0.1ex solid #BAB9B8; +} + +QMenuBar::item:pressed +{ + border: 0.1ex solid #BAB9B8; + background-color: #33A4DF; + color: #31363B; + margin-bottom: -0.1ex; + padding-bottom: 0.1ex; +} + +QMenu +{ + border: 0.1ex solid #BAB9B8; + color: #31363B; + margin: 0.2ex; +} + +QMenu::icon +{ + margin: 0.5ex; +} + +QMenu::item +{ + padding: 0.5ex 3ex 0.5ex 3ex; + margin-left: 0.5ex; + border: 0.1ex solid transparent; /* reserve space for selection border */ +} + +QMenu::item:selected +{ + color: #31363B; +} + +QMenu::separator +{ + height: 0.2ex; + background: lightblue; + margin-left: 1ex; + margin-right: 0.5ex; +} + +/* non-exclusive indicator = check box style indicator + (see QActionGroup::setExclusive) */ +QMenu::indicator:non-exclusive:unchecked +{ + border-image: url(:/light/checkbox_unchecked_disabled.svg); +} + +QMenu::indicator:non-exclusive:unchecked:selected +{ + border-image: url(:/light/checkbox_unchecked_disabled.svg); +} + +QMenu::indicator:non-exclusive:checked +{ + border-image: url(:/light/checkbox_checked.svg); +} + +QMenu::indicator:non-exclusive:checked:selected +{ + border-image: url(:/light/checkbox_checked.svg); +} + +/* exclusive indicator = radio button style indicator (see QActionGroup::setExclusive) */ +QMenu::indicator:exclusive:unchecked +{ + border-image: url(:/light/radio_unchecked_disabled.svg); +} + +QMenu::indicator:exclusive:unchecked:selected +{ + border-image: url(:/light/radio_unchecked_disabled.svg); +} + +QMenu::indicator:exclusive:checked +{ + border-image: url(:/light/radio_checked.svg); +} + +QMenu::indicator:exclusive:checked:selected +{ + border-image: url(:/light/radio_checked.svg); +} + +QMenu::right-arrow +{ + margin: 0.5ex; + border-image: url(:/light/right_arrow.svg); + width: 0.6ex; + height: 0.9ex; +} + + +QWidget:disabled +{ + color: #454545; + background-color: #EFF0F1; +} + +QAbstractItemView +{ + alternate-background-color: #EFF0F1; + color: #31363B; + border: 0.1ex solid 3A3939; + border-radius: 0.2ex; +} + +QWidget:focus, +QMenuBar:focus +{ + border: 0.1ex solid #33A4DF; +} + +QTabWidget:focus, +QCheckBox:focus, +QRadioButton:focus, +QSlider:focus +{ + border: none; +} + +QLineEdit +{ + background-color: #FCFCFC; + padding: 0.5ex; + border-style: solid; + border: 0.1ex solid #BAB9B8; + border-radius: 0.2ex; + color: #31363B; +} + +QGroupBox +{ + border: 0.1ex solid #BAB9B8; + border-radius: 0.2ex; + padding-top: 1ex; + margin-top: 1ex; +} + +QGroupBox::title +{ + subcontrol-origin: margin; + subcontrol-position: top center; + padding-left: 0.1ex; + padding-right: 0.1ex; + margin-top: -0.7ex; +} + +QAbstractScrollArea +{ + border-radius: 0.2ex; + border: 0.1ex solid #BAB9B8; + background-color: transparent; +} + +QScrollBar:horizontal +{ + height: 1.5ex; + margin: 0.3ex 1.5ex 0.3ex 1.5ex; + border: 0.1ex transparent #2A2929; + border-radius: 0.4ex; + background-color: #2A2929; +} + +QScrollBar::handle:horizontal +{ + background-color: #605F5F; + min-width: 0.5ex; + border-radius: 0.4ex; +} + +QScrollBar::add-line:horizontal +{ + margin: 0ex 0.3ex 0ex 0.3ex; + border-image: url(:/light/right_arrow_disabled.svg); + width: 1ex; + height: 1ex; + subcontrol-position: right; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:horizontal +{ + margin: 0px 0.3ex 0px 0.3ex; + border-image: url(:/light/left_arrow_disabled.svg); + height: 1ex; + width: 1ex; + subcontrol-position: left; + subcontrol-origin: margin; +} + +QScrollBar::add-line:horizontal:hover,QScrollBar::add-line:horizontal:on +{ + border-image: url(:/light/right_arrow.svg); + width: 1ex; + height: 1ex; + subcontrol-position: right; + subcontrol-origin: margin; +} + + +QScrollBar::sub-line:horizontal:hover, QScrollBar::sub-line:horizontal:on +{ + border-image: url(:/light/left_arrow.svg); + width: 1ex; + height: 1ex; + subcontrol-position: left; + subcontrol-origin: margin; +} + +QScrollBar::up-arrow:horizontal, QScrollBar::down-arrow:horizontal +{ + background: none; +} + + +QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal +{ + background: none; +} + +QScrollBar:vertical +{ + background-color: #2A2929; + width: 1.5ex; + margin: 1.5ex 0.3ex 1.5ex 0.3ex; + border: 0.1ex transparent #2A2929; + border-radius: 0.4ex; +} + +QScrollBar::handle:vertical +{ + background-color: #605F5F; + min-height: 0.5ex; + border-radius: 0.4ex; +} + +QScrollBar::sub-line:vertical +{ + margin: 0.3ex 0ex 0.3ex 0ex; + border-image: url(:/light/up_arrow_disabled.svg); + height: 1ex; + width: 1ex; + subcontrol-position: top; + subcontrol-origin: margin; +} + +QScrollBar::add-line:vertical +{ + margin: 0.3ex 0ex 0.3ex 0ex; + border-image: url(:/light/down_arrow_disabled.svg); + height: 1ex; + width: 1ex; + subcontrol-position: bottom; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:vertical:hover, +QScrollBar::sub-line:vertical:on +{ + + border-image: url(:/light/up_arrow.svg); + height: 1ex; + width: 1ex; + subcontrol-position: top; + subcontrol-origin: margin; +} + + +QScrollBar::add-line:vertical:hover, +QScrollBar::add-line:vertical:on +{ + border-image: url(:/light/down_arrow.svg); + height: 1ex; + width: 1ex; + subcontrol-position: bottom; + subcontrol-origin: margin; +} + +QScrollBar::up-arrow:vertical, +QScrollBar::down-arrow:vertical +{ + background: none; +} + + +QScrollBar::add-page:vertical, +QScrollBar::sub-page:vertical +{ + background: none; +} + +QTextEdit +{ + background-color: #EFF0F1; + color: #31363B; + border: 0.1ex solid #BAB9B8; +} + +QPlainTextEdit +{ + background-color: #EFF0F1; + color: #31363B; + border-radius: 0.2ex; + border: 0.1ex solid #BAB9B8; +} + +QHeaderView::section +{ + background-color: #BAB9B8; + color: #31363B; + padding: 0.5ex; + border: 0.1ex solid #BAB9B8; +} + +QSizeGrip +{ + border-image: url(:/light/sizegrip.svg); + width: 1.2ex; + height: 1.2ex; +} + +QMainWindow::separator +{ + background-color: #EFF0F1; + color: white; + padding-left: 0.4ex; + spacing: 0.2ex; + border: 0.1ex dashed #BAB9B8; +} + +QMainWindow::separator:hover +{ + + background-color: #787876; + color: white; + padding-left: 0.4ex; + border: 0.1ex solid #BAB9B8; + spacing: 0.2ex; +} + +QMenu::separator +{ + height: 0.1ex; + background-color: #BAB9B8; + color: white; + padding-left: 0.4ex; + margin-left: 1ex; + margin-right: 0.5ex; +} + +QFrame[frameShape="2"], /* QFrame::Panel == 0x0003 */ +QFrame[frameShape="3"], /* QFrame::WinPanel == 0x0003 */ +QFrame[frameShape="4"], /* QFrame::HLine == 0x0004 */ +QFrame[frameShape="5"], /* QFrame::VLine == 0x0005 */ +QFrame[frameShape="6"] /* QFrame::StyledPanel == 0x0006 */ +{ + border-width: 0.1ex; + padding: 0.1ex; + border-style: solid; + border-color: #EFF0F1; + background-color: #bcbfc2; + border-radius: 0.5ex; +} + +QStackedWidget +{ + border: 0.1ex transparent black; +} + +QToolBar +{ + border: 0.1ex transparent #393838; + background: 0.1ex solid #EFF0F1; + font-weight: bold; +} + +QToolBar::handle:horizontal +{ + border-image: url(:/light/hmovetoolbar.svg); + width = 1.6ex; + height = 6.4ex; +} + +QToolBar::handle:vertical +{ + border-image: url(:/light/vmovetoolbar.svg); + width = 5.4ex; + height = 1ex; +} + +QToolBar::separator:horizontal +{ + border-image: url(:/light/hsepartoolbar.svg); + width = 0.7ex; + height = 6.3ex; +} + +QToolBar::separator:vertical +{ + border-image: url(:/light/vsepartoolbars.svg); + width = 6.3ex; + height = 0.7ex; +} + +QPushButton +{ + color: #31363B; + background-color: qlineargradient(x1: 0.5, y1: 0.5 x2: 0.5, y2: 1, stop: 0 #EFF0F1, stop: 0.5 #eaebec); + border-width: 0.1ex; + border-color: #BAB9B8; + border-style: solid; + padding: 0.5ex; + border-radius: 0.2ex; + outline: none; +} + +QPushButton:disabled +{ + background-color: #e0e1e2; + border-width: 0.1ex; + border-color: #b4b4b4; + border-style: solid; + padding-top: 0.5ex; + padding-bottom: 0.5ex; + padding-left: 1ex; + padding-right: 1ex; + border-radius: 0.2ex; + color: #b4b4b4; +} + +QPushButton:focus +{ + color: black; +} + +QComboBox +{ + selection-background-color: #33A4DF; + border-style: solid; + border: 0.1ex solid #BAB9B8; + border-radius: 0.2ex; + padding: 0.5ex; + min-width: 7.5ex; +} + +QPushButton:checked +{ + background-color: #BAB9B8; + border-color: #6A6969; +} + +QComboBox:hover, +QAbstractSpinBox:hover, +QLineEdit:hover, +QTextEdit:hover, +QPlainTextEdit:hover, +QAbstractView:hover, +QTreeView:hover +{ + border: 0.1ex solid #33A4DF; + color: #31363B; +} + +QComboBox:hover:pressed, +QPushButton:hover:pressed, +QAbstractSpinBox:hover:pressed, +QLineEdit:hover:pressed, +QTextEdit:hover:pressed, +QPlainTextEdit:hover:pressed, +QAbstractView:hover:pressed, +QTreeView:hover:pressed +{ + background-color: #EFF0F1; +} + +QComboBox:on +{ + padding-top: 0.3ex; + padding-left: 0.4ex; + selection-background-color: #4a4a4a; +} + +QComboBox QAbstractItemView +{ + background-color: #FCFCFC; + border-radius: 0.2ex; + border: 0.1ex solid #BAB9B8; + selection-background-color: #33A4DF; +} + +QComboBox::drop-down +{ + subcontrol-origin: padding; + subcontrol-position: top right; + width: 1.5ex; + + border-left-width: 0ex; + border-left-color: darkgray; + border-left-style: solid; + border-top-right-radius: 0.3ex; + border-bottom-right-radius: 0.3ex; +} + +QComboBox::down-arrow +{ + border-image: url(:/light/down_arrow_disabled.svg); + width: 0.9ex; + height: 0.6ex; +} + +QComboBox::down-arrow:on, +QComboBox::down-arrow:hover, +QComboBox::down-arrow:focus +{ + border-image: url(:/light/down_arrow.svg); + width: 0.9ex; + height: 0.6ex; +} + +QAbstractSpinBox +{ + padding: 0.5ex; + border: 0.1ex solid #BAB9B8; + background-color: #D9D8D7; + color: #31363B; + border-radius: 0.2ex; + min-width: 7.5ex; +} + +QAbstractSpinBox:up-button +{ + background-color: transparent; + subcontrol-origin: border; + subcontrol-position: center right; +} + +QAbstractSpinBox:down-button +{ + background-color: transparent; + subcontrol-origin: border; + subcontrol-position: center left; +} + +QAbstractSpinBox::up-arrow, +QAbstractSpinBox::up-arrow:disabled, +QAbstractSpinBox::up-arrow:off +{ + border-image: url(:/light/up_arrow_disabled.svg); + width: 0.9ex; + height: 0.6ex; +} + +QAbstractSpinBox::up-arrow:hover +{ + border-image: url(:/light/up_arrow.svg); + width: 0.9ex; + height: 0.6ex; +} + +QAbstractSpinBox::down-arrow, +QAbstractSpinBox::down-arrow:disabled, +QAbstractSpinBox::down-arrow:off +{ + border-image: url(:/light/down_arrow_disabled.svg); + width: 0.9ex; + height: 0.6ex; +} + +QAbstractSpinBox::down-arrow:hover +{ + border-image: url(:/light/down_arrow.svg); + width: 0.9ex; + height: 0.6ex; +} + +QLabel +{ + border: 0ex solid black; +} + +QTabWidget{ + border: 0.1ex solid #BAB9B8; +} + +/* BORDERS */ +QTabWidget::pane +{ + padding: 0.5ex; + margin: 0.1ex; +} + +QTabWidget::pane:top +{ + border: 0.1ex solid #BAB9B8; + top: -0.1ex; +} + +QTabWidget::pane:bottom +{ + border: 0.1ex solid #BAB9B8; + bottom: -0.1ex; +} + +QTabWidget::pane:left +{ + border: 0.1ex solid #BAB9B8; + right: -0.1ex; +} + +QTabWidget::pane:right +{ + border: 0.1ex solid #BAB9B8; + left: -0.1ex; +} + +QTabBar +{ + qproperty-drawBase: 0; + left: 0.5ex; /* move to the right by 0.5ex */ + border-radius: 0.3ex; +} + +QTabBar:focus +{ + border: 0ex transparent black; +} + +QTabBar::close-button +{ + border-image: url(:/light/close.svg); + width: 1.2ex; + height: 1.2ex; + background: transparent; +} + +QTabBar::close-button:hover +{ + border-image: url(:/light/close-hover.svg); + width: 1.2ex; + height: 1.2ex; + background: transparent; +} + +QTabBar::close-button:pressed +{ + border-image: url(:/light/close-pressed.svg); + width: 1.2ex; + height: 1.2ex; + background: transparent; +} + +/* TOP TABS */ +QTabBar::tab:top +{ + color: #31363B; + border: 0.1ex transparent black; + border-left: 0.1ex solid #BAB9B8; + border-top: 0.1ex solid #BAB9B8; + background-color: #EFF0F1; + padding: 0.5ex; + min-width: 5ex; + border-top-left-radius: 0.2ex; + border-top-right-radius: 0.2ex; +} + +QTabBar::tab:top:last, +QTabBar::tab:top:only-one +{ + color: #31363B; + border: 0.1ex transparent black; + border-left: 0.1ex solid #BAB9B8; + border-right: 0.1ex solid #BAB9B8; + border-top: 0.1ex solid #BAB9B8; + background-color: #EFF0F1; + padding: 0.5ex; + min-width: 5ex; + border-top-left-radius: 0.2ex; + border-top-right-radius: 0.2ex; +} + +QTabBar::tab:top:!selected +{ + color: #31363B; + background-color: #D9D8D7; + border: 0.1ex transparent black; + border-left: 0.1ex solid #BAB9B8; + border-top-left-radius: 0.2ex; + border-top-right-radius: 0.2ex; +} + +QTabBar::tab:top:first:!selected +{ + color: #31363B; + background-color: #D9D8D7; + border: 0.1ex transparent black; + border-top-left-radius: 0.2ex; + border-top-right-radius: 0.2ex; +} + +QTabBar::tab:top:!selected:hover +{ + background-color: rgba(61, 173, 232, 0.1); + border: 0.1ex rgba(61, 173, 232, 0.1); + border-left: 0.1ex solid #BAB9B8; +} + +QTabBar::tab:top:!selected:first:hover +{ + background-color: rgba(61, 173, 232, 0.1); + border: 0.1ex rgba(61, 173, 232, 0.1); +} + +/* BOTTOM TABS */ +QTabBar::tab:bottom +{ + color: #31363B; + border: 0.1ex transparent black; + border-left: 0.1ex solid #BAB9B8; + border-bottom: 0.1ex solid #BAB9B8; + background-color: #EFF0F1; + padding: 0.5ex; + border-bottom-left-radius: 0.2ex; + border-bottom-right-radius: 0.2ex; + min-width: 5ex; +} + +QTabBar::tab:bottom:last, +QTabBar::tab:bottom:only-one +{ + color: #31363B; + border: 0.1ex transparent black; + border-left: 0.1ex solid #BAB9B8; + border-right: 0.1ex solid #BAB9B8; + border-bottom: 0.1ex solid #BAB9B8; + background-color: #EFF0F1; + padding: 0.5ex; + border-bottom-left-radius: 0.2ex; + border-bottom-right-radius: 0.2ex; + min-width: 5ex; +} + +QTabBar::tab:bottom:!selected +{ + color: #31363B; + background-color: #D9D8D7; + border: 0.1ex transparent black; + border-left: 0.1ex solid #BAB9B8; + border-bottom-left-radius: 0.2ex; + border-bottom-right-radius: 0.2ex; +} + +QTabBar::tab:bottom:first:!selected +{ + color: #31363B; + background-color: #D9D8D7; + border: 0.1ex transparent black; + border-bottom-left-radius: 0.2ex; + border-bottom-right-radius: 0.2ex; +} + +QTabBar::tab:bottom:!selected:hover +{ + background-color: rgba(61, 173, 232, 0.1); + border: 0.1ex rgba(61, 173, 232, 0.1); + border-left: 0.1ex solid #BAB9B8; +} + +QTabBar::tab:bottom:!selected:first:hover +{ + background-color: rgba(61, 173, 232, 0.1); + border: 0.1ex rgba(61, 173, 232, 0.1); +} + +/* LEFT TABS */ +QTabBar::tab:left +{ + color: #31363B; + border: 0.1ex transparent black; + border-top: 0.1ex solid #BAB9B8; + border-right: 0.1ex solid #BAB9B8; + background-color: #EFF0F1; + padding: 0.5ex; + border-top-right-radius: 0.2ex; + border-bottom-right-radius: 0.2ex; + min-height: 5ex; +} + +QTabBar::tab:left:last, +QTabBar::tab:left:only-one +{ + color: #31363B; + border: 0.1ex transparent black; + border-top: 0.1ex solid #BAB9B8; + border-bottom: 0.1ex solid #BAB9B8; + border-right: 0.1ex solid #BAB9B8; + background-color: #EFF0F1; + padding: 0.5ex; + border-top-right-radius: 0.2ex; + border-bottom-right-radius: 0.2ex; + min-height: 5ex; +} + +QTabBar::tab:left:!selected +{ + color: #31363B; + background-color: #D9D8D7; + border: 0.1ex transparent black; + border-top: 0.1ex solid #BAB9B8; + border-top-right-radius: 0.2ex; + border-bottom-right-radius: 0.2ex; +} + +QTabBar::tab:left:!selected:hover +{ + background-color: rgba(61, 173, 232, 0.1); + border: 0.1ex rgba(61, 173, 232, 0.1); + border-top: 0.1ex solid #BAB9B8; +} + +QTabBar::tab:left:!selected:first:hover +{ + background-color: rgba(61, 173, 232, 0.1); + border: 0.1ex rgba(61, 173, 232, 0.1); +} + +/* RIGHT TABS */ +QTabBar::tab:right +{ + color: #31363B; + border: 0.1ex transparent black; + border-top: 0.1ex solid #BAB9B8; + border-left: 0.1ex solid #BAB9B8; + background-color: #D9D8D7; + padding: 0.5ex; + border-top-left-radius: 0.2ex; + border-bottom-left-radius: 0.2ex; + min-height: 5ex; +} + +QTabBar::tab:right:last, +QTabBar::tab:right:only-one +{ + color: #31363B; + border: 0.1ex transparent black; + border-top: 0.1ex solid #BAB9B8; + border-bottom: 0.1ex solid #BAB9B8; + border-left: 0.1ex solid #BAB9B8; + background-color: #D9D8D7; + padding: 0.5ex; + border-top-left-radius: 0.2ex; + border-bottom-left-radius: 0.2ex; + min-height: 5ex; +} + +QTabBar::tab:right:!selected +{ + color: #31363B; + background-color: #54575B; + border: 0.1ex transparent black; + border-top: 0.1ex solid #BAB9B8; + border-top-left-radius: 0.2ex; + border-bottom-left-radius: 0.2ex; +} + +QTabBar::tab:right:!selected:hover +{ + background-color: rgba(61, 173, 232, 0.1); + border: 0.1ex rgba(61, 173, 232, 0.1); + border-top: 0.1ex solid #BAB9B8; +} + +QTabBar::tab:right:!selected:first:hover +{ + background-color: rgba(61, 173, 232, 0.1); + border: 0.1ex rgba(61, 173, 232, 0.1); +} + +QTabBar QToolButton::right-arrow:enabled +{ + border-image: url(:/light/right_arrow.svg); +} + +QTabBar QToolButton::left-arrow:enabled +{ + border-image: url(:/light/left_arrow.svg); +} + +QTabBar QToolButton::right-arrow:disabled +{ + border-image: url(:/light/right_arrow_disabled.svg); +} + +QTabBar QToolButton::left-arrow:disabled +{ + border-image: url(:/light/left_arrow_disabled.svg); +} + +QDockWidget +{ + background: #EFF0F1; + border: 0.1ex solid #403F3F; + titlebar-close-icon: url(:/light/transparent.svg); + titlebar-normal-icon: url(:/light/transparent.svg); +} + +QDockWidget::close-button, +QDockWidget::float-button +{ + border: 0.1ex solid transparent; + border-radius: 0.2ex; + background: transparent; +} + + +QDockWidget::float-button +{ + border-image: url(:/dark/undock.svg); +} + +QDockWidget::float-button:hover +{ + border-image: url(:/dark/undock-hover.svg) ; +} + +QDockWidget::close-button +{ + border-image: url(:/dark/close.svg) ; +} + +QDockWidget::close-button:hover +{ + border-image: url(:/dark/close-hover.svg) ; +} + +QDockWidget::close-button:pressed +{ + border-image: url(:/dark/close-pressed.svg) ; +} + +QTreeView, +QListView +{ + border: 0.1ex solid #BAB9B8; + background-color: #FCFCFC; +} + + +QTreeView::branch:has-siblings:!adjoins-item +{ + border-image: url(:/light/stylesheet-vline.svg) 0; +} + +QTreeView::branch:has-siblings:adjoins-item +{ + border-image: url(:/light/stylesheet-branch-more.svg) 0; +} + +QTreeView::branch:!has-children:!has-siblings:adjoins-item +{ + border-image: url(:/light/stylesheet-branch-end.svg) 0; +} + +QTreeView::branch:has-children:!has-siblings:closed, +QTreeView::branch:closed:has-children:has-siblings +{ + border-image: url(:/light/stylesheet-branch-end-closed.svg) 0; + image: url(:/light/branch_closed.svg); +} + +QTreeView::branch:open:has-children:!has-siblings, +QTreeView::branch:open:has-children:has-siblings +{ + border-image: url(:/light/stylesheet-branch-end-open.svg) 0; + image: url(:/light/branch_open.svg); +} + +QTableView::item, +QListView::item, +QTreeView::item +{ + padding: 0.3ex; +} + +QTableView::item:!selected:hover, +QListView::item:!selected:hover, +QTreeView::item:!selected:hover +{ + background-color: rgba(61, 173, 232, 0.1); + outline: 0; + color: #31363B; + padding: 0.3ex; +} + +QSlider::groove:horizontal +{ + border: 0.1ex solid #EFF0F1; + height: 0.4ex; + background: #9CA0A4; + margin: 0px; + border-radius: 0.2ex; +} + +QSlider::handle:horizontal +{ + background: #D9D8D7; + border: 0.1ex solid #BABEC2; + width: 1.6ex; + height: 1.6ex; + margin: -0.8ex 0; + border-radius: 0.9ex; +} + +QSlider::groove:vertical +{ + border: 0.1ex solid #EFF0F1; + width: 0.4ex; + background: #9CA0A4; + margin: 0ex; + border-radius: 0.3ex; +} + +QSlider::handle:vertical +{ + background: #D9D8D7; + border: 0.1ex solid #BABEC2; + width: 1.6ex; + height: 1.6ex; + margin: 0 -0.8ex; + border-radius: 0.9ex; +} + +QSlider::handle:horizontal:focus, +QSlider::handle:vertical:focus +{ + border: 0.1ex solid #33A4DF; +} + +QSlider::handle:horizontal:hover, +QSlider::handle:vertical:hover +{ + border: 0.1ex solid #51c2fc; +} + +QSlider::sub-page:horizontal, +QSlider::add-page:vertical +{ + background: #33A4DF; + border-radius: 0.3ex; +} + +QSlider::add-page:horizontal, +QSlider::sub-page:vertical +{ + background: #BABEC2; + border-radius: 0.3ex; +} + +QToolButton +{ + background-color: transparent; + border: 0.1ex solid #BAB9B8; + border-radius: 0.2ex; + margin: 0.3ex; + padding: 0.5ex; +} + +QToolButton[popupMode="1"] /* only for MenuButtonPopup */ +{ + padding-right: 2ex; /* make way for the popup button */ +} + +QToolButton[popupMode="2"] /* only for InstantPopup */ +{ + padding-right: 1ex; /* make way for the popup button */ +} + +QToolButton::menu-indicator +{ + border-image: url(:/light/down_arrow.svg); + top: -0.7ex; left: -0.2ex; /* shift it a bit */ + width = 0.9ex; + height = 0.6ex; +} + +QToolButton::menu-arrow +{ + border-image: url(:/light/down_arrow.svg); + width = 0.9ex; + height = 0.6ex; +} + +QToolButton:hover, +QToolButton::menu-button:hover +{ + background-color: transparent; + border: 0.1ex solid #33A4DF; +} + +QToolButton:checked, +QToolButton:pressed, +QToolButton::menu-button:pressed +{ + background-color: #47b8fc; + border: 0.1ex solid #47b8fc; + padding: 0.5ex; +} + +QToolButton::menu-button +{ + border: 0.1ex solid #BAB9B8; + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; + /* 1ex width + 0.4ex for border + no text = 2ex allocated above */ + width: 1ex; + padding: 0.5ex; + outline: none; +} + +QToolButton::menu-arrow:open +{ + border: 0.1ex solid #BAB9B8; +} + +QPushButton::menu-indicator +{ + subcontrol-origin: padding; + subcontrol-position: bottom right; + left: 0.8ex; +} + +QTableView +{ + border: 0.1ex solid #BAB9B8; + gridline-color: #BAB9B8; + background-color: #FCFCFC; +} + + +QTableView, +QHeaderView +{ + border-radius: 0px; +} + +QTableView::item:pressed +{ + background: #33A4DF; + color: #31363B; +} + +QTableView::item:selected:active +{ + background: #33A4DF; + color: #31363B; +} + +QTableView::item:selected:hover +{ + background-color: #47b8f3; + color: #31363B; +} + +QListView::item:pressed, +QTreeView::item:pressed +{ + background: #3daee9; + color: #31363B; +} + +QTreeView::item:selected:active, +QListView::item:selected:active +{ + background: #3daee9; + color: #31363B; +} + +QListView::item:selected:hover, +QTreeView::item:selected:hover +{ + background-color: #51c2fc; + color: #31363B; +} + + +QHeaderView +{ + background-color: #EFF0F1; + border: 0.1ex transparent; + border-radius: 0px; + margin: 0px; + padding: 0px; + +} + +QHeaderView::section +{ + background-color: #EFF0F1; + color: #31363B; + padding: 0.5ex; + border: 0.1ex solid #BAB9B8; + border-radius: 0px; + text-align: center; +} + +QHeaderView::section::vertical::first, +QHeaderView::section::vertical::only-one +{ + border-top: 0.1ex solid #BAB9B8; +} + +QHeaderView::section::vertical +{ + border-top: transparent; +} + +QHeaderView::section::horizontal::first, QHeaderView::section::horizontal::only-one +{ + border-left: 0.1ex solid #BAB9B8; +} + +QHeaderView::section::horizontal +{ + border-left: transparent; +} + + +QHeaderView::section:checked + + { + color: black; + background-color: #b9dae7; + } + + /* style the sort indicator */ +QHeaderView::down-arrow +{ + image: url(:/light/down_arrow.svg); +} + +QHeaderView::up-arrow +{ + image: url(:/light/up_arrow.svg); +} + +QTableCornerButton::section +{ + background-color: #EFF0F1; + border: 0.1ex transparent #BAB9B8; + border-radius: 0px; +} + +QToolBox +{ + padding: 0.5ex; + border: 0.1ex transparent black; +} + +QToolBox:selected +{ + background-color: #EFF0F1; + border-color: #33A4DF; +} + +QToolBox:hover +{ + border-color: #33A4DF; +} + +QStatusBar::item +{ + border: 0px transparent dark; +} + +QSplitter::handle +{ + border: 0.1ex dashed #BAB9B8; +} + +QSplitter::handle:hover +{ + background-color: #787876; + border: 0.1ex solid #BAB9B8; +} + +QSplitter::handle:horizontal +{ + width: 0.1ex; +} + +QSplitter::handle:vertical +{ + height: 0.1ex; +} + +QProgressBar:horizontal +{ + background-color: #BABEC2; + border: 0.1ex solid #EFF0F1; + border-radius: 0.3ex; + height: 0.5ex; + text-align: right; + margin-top: 0.5ex; + margin-bottom: 0.5ex; + margin-right: 5ex; + padding: 0px; +} + +QProgressBar::chunk:horizontal +{ + background-color: #33A4DF; + border: 0.1ex transparent; + border-radius: 0.3ex; +} + +QAbstractSpinBox +{ + background-color: #EFF0F1; +} + +QSpinBox, +QDoubleSpinBox +{ + padding-right: 1.5ex; +} + +QSpinBox::up-button, +QDoubleSpinBox::up-button +{ + subcontrol-origin: content; + subcontrol-position: right top; + + width: 1.6ex; + border-width: 0.1ex; +} + +QSpinBox::up-arrow, +QDoubleSpinBox::up-arrow +{ + border-image: url(:/light/up_arrow.svg); + width: 0.9ex; + height: 0.6ex; +} + +QSpinBox::up-arrow:hover, +QSpinBox::up-arrow:pressed, +QDoubleSpinBox::up-arrow:hover, +QDoubleSpinBox::up-arrow:pressed +{ + border-image: url(:/light/up_arrow-hover.svg); + width: 0.9ex; + height: 0.6ex; +} + +QSpinBox::up-arrow:disabled, +QSpinBox::up-arrow:off, +QDoubleSpinBox::up-arrow:disabled, +QDoubleSpinBox::up-arrow:off +{ + border-image: url(:/light/up_arrow_disabled.svg); +} + +QSpinBox::down-button, +QDoubleSpinBox::down-button +{ + subcontrol-origin: content; + subcontrol-position: right bottom; + + width: 1.6ex; + border-width: 0.1ex; +} + +QSpinBox::down-arrow, +QDoubleSpinBox::down-arrow +{ + border-image: url(:/light/down_arrow.svg); + width: 0.9ex; + height: 0.6ex; +} + +QSpinBox::down-arrow:hover, +QSpinBox::down-arrow:pressed, +QDoubleSpinBox::down-arrow:hover, +QDoubleSpinBox::down-arrow:pressed +{ + border-image: url(:/light/down_arrow-hover.svg); + width: 0.9ex; + height: 0.6ex; +} + +QSpinBox::down-arrow:disabled, +QSpinBox::down-arrow:off, +QDoubleSpinBox::down-arrow:disabled, +QDoubleSpinBox::down-arrow:off +{ + border-image: url(:/light/down_arrow_disabled.svg); +} + +QPushButton:hover +{ + border: 0.1ex solid #3daef3; + color: #31363B; +} + +QPushButton:focus +{ + background-color: qlineargradient(x1: 0.5, y1: 0.5 x2: 0.5, y2: 1, stop: 0 #4cbdff, stop: 0.5 #33a4e8); + color: white; +} + +QPushButton:focus:hover +{ + background-color: qlineargradient(x1: 0.5, y1: 0.5 x2: 0.5, y2: 1, stop: 0 #bedfec, stop: 0.5 #b9dae7); + color: #31363B; +} + +QPushButton:focus:pressed, +QPushButton:pressed +{ + background-color: qlineargradient(x1: 0.5, y1: 0.5 x2: 0.5, y2: 1, stop: 0 #bedfec, stop: 0.5 #b9dae7); + color: #31363B; +} + +/* fixes */ + +QPushButton:flat { + background-color: transparent; + border: none; +} + +QScrollBar::handle:vertical, +QScrollBar::handle:horizontal +{ + background-color: #BAB9B8; +} + +QScrollBar:vertical, +QScrollBar:horizontal +{ + background-color: #eff0f1; + border: 0.1ex transparent #eff0f1; +} + +QPlainTextEdit +{ + background-color: #fcfcfc; +} + +QTableView::item:!selected:hover +{ + background-color: transparent; +} + +QLabel:disabled { + color: #787878; +} \ No newline at end of file diff --git a/src/ui/BreezeStyleSheets/light/branch_closed-on.svg b/src/ui/BreezeStyleSheets/light/branch_closed-on.svg new file mode 100755 index 0000000..23c5421 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/branch_closed-on.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/light/branch_closed.svg b/src/ui/BreezeStyleSheets/light/branch_closed.svg new file mode 100755 index 0000000..286c1a9 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/branch_closed.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/light/branch_open-on.svg b/src/ui/BreezeStyleSheets/light/branch_open-on.svg new file mode 100755 index 0000000..9e75927 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/branch_open-on.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/light/branch_open.svg b/src/ui/BreezeStyleSheets/light/branch_open.svg new file mode 100755 index 0000000..514a312 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/branch_open.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/light/checkbox_checked-hover.svg b/src/ui/BreezeStyleSheets/light/checkbox_checked-hover.svg new file mode 100755 index 0000000..64d6667 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/checkbox_checked-hover.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/ui/BreezeStyleSheets/light/checkbox_checked.svg b/src/ui/BreezeStyleSheets/light/checkbox_checked.svg new file mode 100755 index 0000000..f3acb63 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/checkbox_checked.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/ui/BreezeStyleSheets/light/checkbox_checked_disabled.svg b/src/ui/BreezeStyleSheets/light/checkbox_checked_disabled.svg new file mode 100755 index 0000000..b7be04b --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/checkbox_checked_disabled.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/ui/BreezeStyleSheets/light/checkbox_indeterminate-hover.svg b/src/ui/BreezeStyleSheets/light/checkbox_indeterminate-hover.svg new file mode 100755 index 0000000..def9596 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/checkbox_indeterminate-hover.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/ui/BreezeStyleSheets/light/checkbox_indeterminate.svg b/src/ui/BreezeStyleSheets/light/checkbox_indeterminate.svg new file mode 100755 index 0000000..a619ab0 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/checkbox_indeterminate.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/ui/BreezeStyleSheets/light/checkbox_indeterminate_disabled.svg b/src/ui/BreezeStyleSheets/light/checkbox_indeterminate_disabled.svg new file mode 100755 index 0000000..74d7168 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/checkbox_indeterminate_disabled.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/ui/BreezeStyleSheets/light/checkbox_unchecked-hover.svg b/src/ui/BreezeStyleSheets/light/checkbox_unchecked-hover.svg new file mode 100755 index 0000000..8f0bb01 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/checkbox_unchecked-hover.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/ui/BreezeStyleSheets/light/checkbox_unchecked_disabled.svg b/src/ui/BreezeStyleSheets/light/checkbox_unchecked_disabled.svg new file mode 100755 index 0000000..0ef4300 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/checkbox_unchecked_disabled.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/ui/BreezeStyleSheets/light/close-hover.svg b/src/ui/BreezeStyleSheets/light/close-hover.svg new file mode 100755 index 0000000..cb44c78 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/close-hover.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/light/close-pressed.svg b/src/ui/BreezeStyleSheets/light/close-pressed.svg new file mode 100755 index 0000000..a0dc249 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/close-pressed.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/light/close.svg b/src/ui/BreezeStyleSheets/light/close.svg new file mode 100755 index 0000000..07b50c9 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/close.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/light/down_arrow-hover.svg b/src/ui/BreezeStyleSheets/light/down_arrow-hover.svg new file mode 100755 index 0000000..408397f --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/down_arrow-hover.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/light/down_arrow.svg b/src/ui/BreezeStyleSheets/light/down_arrow.svg new file mode 100755 index 0000000..34c5d6a --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/down_arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/light/down_arrow_disabled.svg b/src/ui/BreezeStyleSheets/light/down_arrow_disabled.svg new file mode 100755 index 0000000..af74a30 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/down_arrow_disabled.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/light/hmovetoolbar.svg b/src/ui/BreezeStyleSheets/light/hmovetoolbar.svg new file mode 100755 index 0000000..57e54c9 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/hmovetoolbar.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/ui/BreezeStyleSheets/light/hsepartoolbar.svg b/src/ui/BreezeStyleSheets/light/hsepartoolbar.svg new file mode 100755 index 0000000..a446425 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/hsepartoolbar.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/light/left_arrow.svg b/src/ui/BreezeStyleSheets/light/left_arrow.svg new file mode 100755 index 0000000..f77acf4 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/left_arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/light/left_arrow_disabled.svg b/src/ui/BreezeStyleSheets/light/left_arrow_disabled.svg new file mode 100755 index 0000000..2d749e7 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/left_arrow_disabled.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/light/radio_checked-hover.svg b/src/ui/BreezeStyleSheets/light/radio_checked-hover.svg new file mode 100755 index 0000000..f3d5c98 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/radio_checked-hover.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/ui/BreezeStyleSheets/light/radio_checked.svg b/src/ui/BreezeStyleSheets/light/radio_checked.svg new file mode 100755 index 0000000..86ff6bf --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/radio_checked.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/ui/BreezeStyleSheets/light/radio_checked_disabled.svg b/src/ui/BreezeStyleSheets/light/radio_checked_disabled.svg new file mode 100755 index 0000000..269ae12 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/radio_checked_disabled.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/ui/BreezeStyleSheets/light/radio_unchecked-hover.svg b/src/ui/BreezeStyleSheets/light/radio_unchecked-hover.svg new file mode 100755 index 0000000..f5fc943 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/radio_unchecked-hover.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/ui/BreezeStyleSheets/light/radio_unchecked_disabled.svg b/src/ui/BreezeStyleSheets/light/radio_unchecked_disabled.svg new file mode 100755 index 0000000..41f503d --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/radio_unchecked_disabled.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/ui/BreezeStyleSheets/light/right_arrow.svg b/src/ui/BreezeStyleSheets/light/right_arrow.svg new file mode 100755 index 0000000..a43ea2b --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/right_arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/light/right_arrow_disabled.svg b/src/ui/BreezeStyleSheets/light/right_arrow_disabled.svg new file mode 100755 index 0000000..4940025 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/right_arrow_disabled.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/light/sizegrip.svg b/src/ui/BreezeStyleSheets/light/sizegrip.svg new file mode 100755 index 0000000..3388f07 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/sizegrip.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/light/spinup_disabled.svg b/src/ui/BreezeStyleSheets/light/spinup_disabled.svg new file mode 100755 index 0000000..838436d --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/spinup_disabled.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/light/stylesheet-branch-end-closed.svg b/src/ui/BreezeStyleSheets/light/stylesheet-branch-end-closed.svg new file mode 100755 index 0000000..a31f5c0 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/stylesheet-branch-end-closed.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/ui/BreezeStyleSheets/light/stylesheet-branch-end-open.svg b/src/ui/BreezeStyleSheets/light/stylesheet-branch-end-open.svg new file mode 100755 index 0000000..a31f5c0 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/stylesheet-branch-end-open.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/ui/BreezeStyleSheets/light/stylesheet-branch-end.svg b/src/ui/BreezeStyleSheets/light/stylesheet-branch-end.svg new file mode 100755 index 0000000..a1c0a42 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/stylesheet-branch-end.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/ui/BreezeStyleSheets/light/stylesheet-branch-more.svg b/src/ui/BreezeStyleSheets/light/stylesheet-branch-more.svg new file mode 100755 index 0000000..ebef839 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/stylesheet-branch-more.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/ui/BreezeStyleSheets/light/stylesheet-vline.svg b/src/ui/BreezeStyleSheets/light/stylesheet-vline.svg new file mode 100755 index 0000000..688177e --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/stylesheet-vline.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/light/transparent.svg b/src/ui/BreezeStyleSheets/light/transparent.svg new file mode 100755 index 0000000..3a8ca5c --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/transparent.svg @@ -0,0 +1 @@ + diff --git a/src/ui/BreezeStyleSheets/light/undock-hover.svg b/src/ui/BreezeStyleSheets/light/undock-hover.svg new file mode 100755 index 0000000..6bddbd7 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/undock-hover.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/ui/BreezeStyleSheets/light/undock.svg b/src/ui/BreezeStyleSheets/light/undock.svg new file mode 100755 index 0000000..9ab2197 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/undock.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/light/up_arrow-hover.svg b/src/ui/BreezeStyleSheets/light/up_arrow-hover.svg new file mode 100755 index 0000000..dd1271a --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/up_arrow-hover.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/light/up_arrow.svg b/src/ui/BreezeStyleSheets/light/up_arrow.svg new file mode 100755 index 0000000..b02bb26 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/up_arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/light/up_arrow_disabled.svg b/src/ui/BreezeStyleSheets/light/up_arrow_disabled.svg new file mode 100755 index 0000000..742e1c5 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/up_arrow_disabled.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/BreezeStyleSheets/light/vmovetoolbar.svg b/src/ui/BreezeStyleSheets/light/vmovetoolbar.svg new file mode 100755 index 0000000..0a30d45 --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/vmovetoolbar.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/ui/BreezeStyleSheets/light/vsepartoolbars.svg b/src/ui/BreezeStyleSheets/light/vsepartoolbars.svg new file mode 100755 index 0000000..00e91ab --- /dev/null +++ b/src/ui/BreezeStyleSheets/light/vsepartoolbars.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/ui/qdarkstyle/rc/arrow_down.png b/src/ui/qdarkstyle/rc/arrow_down.png new file mode 100644 index 0000000000000000000000000000000000000000..4fc454ec2e71c74b8664ddc2cfe996bd44b1b5c5 GIT binary patch literal 525 zcmV+o0`mQdP)2Y zFB~FoF6n8tTD=uT(Qdxx)a<0eU@)!M>o01x+Iiqws#D0Hbb*o{kH_P?{eC|=sA#T0 z5Cji_`{}&}Tmkb(#+V25=I;9fd4|K`+eV|YBWX1i)lngwb6(cvlI|H}x`)*t8USE4 z8hvOso1cMo{`ACwAyRVzQ|H{BFbtm@rN8jzwpy(<=iGDPbQ-|Ulw{$4NxE%}d9{e{ zQr+eI{&h(&fip89GV`C3){HS*i)t?2-tBh#sH0W z;0o{txRgHn0<45#I9^t(@FBCYv2oG!ysy9~YwgWmulKE}R!K=o$%*nC0efZw0)NMZ&S%`vY+%zRZlbP!x@4?Hw zJMm>Q^Ag+pTb?uLa{lMux%ZwKuvjb>i^XEGSS%Kc#bU8MTu9y!hT$i`$AAlDfF5^J z6(fKHq`;?2sc6voh#{aao?hUCg3GqH9R+xh1eU^7fU{cb|NF8ZqNnL>-afPk04yvl zOlMhk5qLa5h=^qMq*xga!@Aai*OgM&@(&ve01$@Z3&4-SkwN<*FM>(@8Ze`jx?u_^ zEC4_d1jil6xdI#;v>(zUn8g2@W!Y;kAtj8>f>bSs!(v zJSQ8c*${`AAl!wt};b1-R}MdPAa9YmrQYp z%6F?E2%hcr4@YyZk&93;^S|}(^*5`?vrpys`6Nkh_WFlAIoC-2LxK1^TI)vD;`>R} z!ra{4Q?Bb?He8rs`}^F^L`00&YOVDzj^oV4ar{>udDhm^EiW(s>HGdP&^EYDLQO~V zHQ)EA>knbb2)dv z0C~=Np7(YXMfdB@Z!E2ByWP&3&E};vO`iZ>-tAef_2<6te-K5{&^}QI<7{C8WPX1B zBN6$mz`vlBQjGCu%-BC>bi3W38;!;vB64QHtbzBHQeTWap9A@t)9rR|G#ZUZMdTUa zo`}4wlsbP9xmYX~i^XEGSS%Kc#bU8o9yb03nOZ1NxYy>({(Zd@U~gmV20(u| z9(gT~c;me`!~EvV+}y<2#`t64G6ER`1O3Zsg&D|&M$dcW8&{WWwY6;(09dZo*1Cm! z8T2TO=47@dWIA)qB6H(mw~)UQH{TWjV5L%7pDIjT7c3cIl9Q1-gfNSGEm)d5lE1N1 zsjUCGE=kymvkP|(Zik-((1`8uWe?5owd&P73~6O9N#0DSFycz5jNsZWNL!;%_9LI|Asndu{LHXFf%zv++M+p{yJMa(L| z0feyF)$&B)x=7cWjo{fRx~Yb%c(HWBWKV&ETS5qjAJm^X7MriCuSeBPJ>AnYrD{KfwBO_x^`2}>tr}J)8PNx6>002ovPDHLkV1iU?`kMd% literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/arrow_down_disabled@2x.png b/src/ui/qdarkstyle/rc/arrow_down_disabled@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..5f3ab00dacfd65db0d5cabaee6b78340ef903674 GIT binary patch literal 1040 zcmV+r1n>KaP)pQmUd$h(julvh(!=P8Qet6OsgR_ zLlFu^7cNu;{{g8AMT!dQLJ`~+1VK=wSe$7>Lps+MS50QrO`FukV3ml*P1|UiX5Mj; zNt}6e(@tjIdr9g2EYErO-tW1;-Z>W>4u`|xa5x+ehr{7;I2`vE5;UaJ*>_a*ghE2W z7tqZR78VL3;0aVj<=rWhJ6Y@RXlPIk9zej0OK4QAuCPJ^(Gx)31l;ohwoAhVh{}81 zIC-4R-**;Gxls`kVoF*7X1?;724dB-C3u_I2FwRE|uUoC$tyodAGjW^@o3 z2YP}duvI5P)k7MBp9e;Yh5WRw$+{B&kjjh<_;?c_4+Td8*=m#E(HPIK9+ly#!uZUc z8m-GzVSFZ0=^O&C)O$p93tgaU5B^G`((%-tg2&Rx%3wO%qoQL#%HpmxCo?h<4Hnf) zf_He@OP<+2NEys60Zr9y79RjsvzdRS8jvrqb}XMqO-u2$*?TXy%i?|IMtIQiYBRy76* z{kBRT7~MyL31CmHePcVJaoY?0rWJ;Z7xI@w6H5g7eDOm5vWgA~%+}hgTe+F>Y{Acx zkfE@Hul5}cj}H$&*m1ja3`kns>(vjozfw_`{gKkevA@Do_dk(UbU&Xv_h)Cfp8@^e z;UzZ(U0Y@xuAJ%UBps+JLb>RhL%wm-KBCq7ipSe3ve~WQ>v&$$OOfJ^H$U68xOf7$1t;`$(2wSp*KW*4~dS07@4TWjJO8^X*1nBI@ zXA+!R!;1}t>AnE%aqpV z1A~>IEdS{4;Lx?vqxhRHQH|EOF6i%jHCm6S-krx<0)YsiaVnv%zQ9_Fr`}%p-8@^g zJ+=z9Mip@_ok?KmN~Goh+>9%w8%W#k9eA>0tv+vbH;a`9`5PhAl{MeGQo1)N=|CoH zjf=wffr$YjGV_k5%d3^r!$I0Z_qMRun8SVy>;oD6YX~V|3;2$7Hm;PGhtVDBausWD zP8yy72at@@5Iys@63?|3W}XkLIr8l;-fkXuNLGNu-AW`%Wj-qjr&|lr>rwQ^dT5Gw zn#YnPc_ugtVE7P1m~EA#_oHf!{n8a~y*k3go{vDC&W|(k)f1n_)ym1q$=OwY0?7`c Ur_iO;&Hw-a07*qoM6N<$f+cnF!~g&Q literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/arrow_down_focus@2x.png b/src/ui/qdarkstyle/rc/arrow_down_focus@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..cef37e872a89ef74131161425be50dc07ca89b3b GIT binary patch literal 1025 zcmV+c1pfPpP)5SJ6%k_ z=DnNDWahn@YVU7(&%NiI|GDqJ`vDe<#bU8oEEbE!VzF2(mIn)oHn_Fx5P{Z_ShRzto zpWDIuWIOS9U37pucO^$={Uq>$!A&rL?Q^rGc!nVRsy92<=)_6KYuTF}YYaDX2SoTG zZq*Fh$4^1c;srhNNOtFePQ_z#vK0%Jk+r22{}7_bV@AON=|d4jnz5qIdVJ~0-w*vc zHF{%P-nz;`RovR8InWt{H6*q5AOdQdw4+|Ba2VPC0j{SR%UA2~3CzU|Dj|~eCCV&b zVb(7fk9O^~x1_+WUVIbeD`Lwj$(y86d?+e!EzK0-%W*rNdl`J2$7&Z3hAQ6y*@!8L zqq9Ri&viv!_sfM7J^D`W&z=9Q{-OvcfrlcdUW#B6zpA3I_@&)vy7bvXqJQoDvEQC` zLgzb-t>YIJ3IHMb8q9W!c}p{ZPq;)PSgjokh;#X}z+HWn%)YhJ@Y zDDZ8oMQ+D8o$kKzR{Yl%DkE!Y=hwd*+!1x$+QG zpFmiB0@=nQiAmfomQA@9ilv2?+FRHtNXCBy!m7!fEi#FNnq(#`YcoF>xD02$?>qON zxeyW(67tSSV=q7A@uQQr@3W0&N^w-nz=u~us2D^A_=Cudl}&8>(G4_Qu~czV4Zl(PQ511Q zG&&b-QH@t}i~D{x15bA>Qr_6ROfHu6Klg7>PnL=&C4hs6xS`!Ve> zGjCeqev;X|@4e@q@0pwT&b{DpI2;a#!{Kl^91e%W;dr!=@Plk&b_!!Y0!;xH(7~tG zR|GI14XpjxtLCTg7t@j9M(&!YIq_jZQ%!FK3h)pa?2c#wtR6t+|Gw>`s3=wsgda!V z0RY)TZ49F)fycvPK+_0 zZ{Fk(1jK|_6y*4m>lb%<)#6g;p&pc}v+3-Ot4DxhR8$K|_Ym4NAEn~`IlP~*UvE4} zv@ZWOm27GL5a>HGVuI&~Hs*!H-qDHoyD5H8+cs02dsl=*(Wq(@=q6i-njosY=T~xv zdkNYT**r30Gj9dnx>e3qdJWt&PfgCfW|gmip^(&juMpqb{-fv{emQ@< zr`YtV005cE+RLJP0(dMSD2jA*eh@(88l2mz?Di|UGu>w!T%~VhinZsB=(h@)kkrji zh?p1ft>{kwX#RXJd4^*4mrQB?Il-O=Hieeb=4Y}4;8iW&FI`!4k*(H4Eb5b?|V zF4eWZ4Y(Xs+J3*o!{W?eZW!6tZ}X7QjnE&J($!Sji~<*fiV7^-I;W7xarR=mVPE)t zX5w0Zvuu)R`?}%HFP|{$|2+lrVo*`QGy*S1jqU5t*}v1TE*#stm{g95-U%)o+q*bY zX9voupdz#`UZwSmF|Q{_>bf&Y^LH~zo~g6xjW@286`AN{xGHo0=BFo_9;+vv+F)*l zr^o8IHeD$oe753P)ldD+zZM5!9tO1o{zGMBY5oI6KZ#Y95B+WG`-ZS17B=41TU#vzh4u`|xa5x+ehr{7; dI2?{gjXQmzEi=bH?(F~o002ovPDHLkV1jTe=kWjl literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/arrow_left.png b/src/ui/qdarkstyle/rc/arrow_left.png new file mode 100644 index 0000000000000000000000000000000000000000..bd7d54f20fd162b458d8a9a2af9deb9ef41d4842 GIT binary patch literal 546 zcmV+-0^R+IP)zfNl)H7_+0Qw*W-M>3#_|0$_}} zs;c+)w~fpj17umYt*Vcp${f$Kw*ttr?3{=^17bj%X5I*3I2@i4kv-rrRn}fNz7@b= zFgWd;djT8`WnLR#G#Z_Xp_(CrLDUwS&*$%>C^`>(3kl&RGMmlbs_HiI0}xeh4dE?dt$nSkmw{5M zv8UBo*C+#P?VgBSKcLYVqHziHJb$99JHK_L?hqIX0Ki&%UqtQ#sA?mK)|V*H^V=fw z5WqR-4H2T1bhTRD1fGfrzMT=ImzT?BnWpJA;H7VDuorDInfzR@*O!1de+2+wu~>XB kisB;GYxy;#_P@J+0pK>C2{!7NY5)KL07*qoM6N<$f`iEK8~^|S literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/arrow_left@2x.png b/src/ui/qdarkstyle/rc/arrow_left@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..aa3fcfec5726fc1c6594948ffc7295dec9c189c3 GIT binary patch literal 1072 zcmV-01kd}4P)k7RCt{2n@?yYMHGj>Hxp8diXiGm)RQRQgvFzv=&Fc|e?U(n zih>?Q197H0QF@!5WV(}p2NB)i#e<7_S^~Nny$FKfK@h})AmTw04^ae{ZPxDRA=#z3 zY|JiHbrEyQ+HzW}0cH|Ffj;1kP91+7x(2RYgQ5d7dBkaovHBi-gwF z($bwk3e1Vf5O~$swW9|x8jTLrb-l&8-RdpxIbRnFp(IIeQPmT`<&IVR8Y9{c7>~y{ zsOmOwb&IXO#)%R@k|fuN$To0&=&_;$FdB`n06qe4?qa;C0HkSp$zU)zuBrzd%UjF4 ziUvTMrgLRk9s}-jEXCtZ&s8h{q%6y$z{5^FXz>sU0BdalJne*4M1mF%5dg5(j)9k3 ztXehL(m$(S0VGNCERef#5vjV$p*H~5+DBFOtrn}3nLndm09b4929C9iUlZ_=*QU+^ zj7Fo|f#bluV|89UbbJ^}lH^w4gsNWVSiKYv9d^L-^74(Ux~-~LIaY7QLq`A>7Z+j@c<5jWjK||EMdV}Pre<7s-);3;JOu85g@uJnMPv)Otr_1dKKL&0d=v~o znx=EcnD>A?94ngQArOExO$TLJz6~65tl)>63sndJQkLZg@MJTnyW6{{iiZFIthGzP zf*X&i?VIunz*_qpFln(mJKS8TyaBM*=D?dRR+KY;Mm{^heW3vnY;^XMPXN)j`G3h9 z09AdFf6sRBZ=Cj%w*-r#_&`-(Xt9PO@qUE%IzvTKyrHV88&}n#&vAUpdy5uDaYRI3 zcjKxW<#Gs-l+Mr3zXZJ749f00hz>%Kgt9EFcXoE30zPysiLDcYC9}D?dD4+7sb<1s-9oqe^gajLV)vkH4QfnT7TB^;XS}F z&G=py^a`P~Hk?c*KMn?idx76ua_9|0r|WQab@f{jc>p-sl1DEPI=>N3r_(Q0^%3B7 zOD>&5=;cma6vZdN6SN)`pt0DvsZYGceZz*aNf#R)PB003E*{cVhS9QfR^ zf;yr;IU&RP}4e3U)Jy3IITsWq(#xbwBWZ7vn_-0AOQd z09aXB`AI|$ipWlj?QKa!3jkm`oqo5s9R6}FZ+S-z0AOux?JM9RJ@?m>7yn;on#%M1 qGvJ7-R_uO)Tj@EanP!^lBGEs1+BIzV?hVEO0000=G`P)q$gGR9J=Omc46}Q5431Pmb=;YE5JGcnNK^JwgP-vUxeH@yAgW!AfUKI3f2kv>! z?|j_Lh5y|YTk!JS+{wLeaSIo`_9i*;yYr=($T literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/arrow_left_disabled@2x.png b/src/ui/qdarkstyle/rc/arrow_left_disabled@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..56a1c0f52a69e5a09af346416f6bf969cbc50244 GIT binary patch literal 1126 zcmV-s1eyDZP)ko)jqQZ9G?Z#Xfa z9M+}DZxC`fpi-@0C&Cgin&cH?(R>#VIU7*kKYLAIwGEV#ydts5{{Bo* z%qvj2I(LP{(g7|^2_mtmI$1pAQ~}q{%v>VKhrp#tUWFKki-#O4U}AcDk8Y2?kLr~v zK~Yy_pM=#4*t_?RbG3iYGOFd2peT~>ad$dcGawAZ;-6!iZv&GlLDieZgDnFV7J}cT z^ae1WQ53P?-=7I=>;W=X29&Gy2N4eL zR;2HIyFU$#88A_;9TL^olAN;B<(Z0M1I7$c-St8PAQs#u)AaFG}sMU8h*eJIOI&c~zEv$z+v4g*i`Rw?HEu#x1&VBTIE0I+(j@wqCukeD0P;13qw8vw8t sH9rzKAkY`+2g>uVa~fiZA^scq3;bj?fgFFSZU6uP07*qoM6N<$f-|lDC;$Ke literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/arrow_left_focus.png b/src/ui/qdarkstyle/rc/arrow_left_focus.png new file mode 100644 index 0000000000000000000000000000000000000000..e7fad8f5ef7f4c17a2160f48a6f90413c770f91d GIT binary patch literal 565 zcmV-50?Pe~P)_?X2v~B?lIQh$Mx%yCMmK3b((-3bFI;dy9fjH}K~F z|M_Qj-@^YMmKtz)xpQpD`wueIpPM-PyYCOABtOw?AM)Nm7aTEVt8vNLZ*_*evuA=c zF=c54v|6Rg;lX2xDKd7RPJm>UPoodPE+GN6^%puDtk8FU{2!$a)!L*#Ox(rix~dIW$hH#y{Rpt`hvR?q@UfUtPme~l;y zs*9aT!76Z&&~?~Ls6z4?oqhzMu$h&Kxr(p_;!c23a)a!%ZUg?S%FJp(0 z?pnP)_T711G{IP)^@RCt{2nq6pIMHI(>=k8i9X4Q5#Rq*?vR7!W#LhwVqHcZqne=Qq$}l zA2xlMyHOIDxp&n4Kb}9#IrE#@xo7TO=&7fk{?C%M3s|WN<1-c1yoex}XkW8je96VQ z{|W$w@%nbq&r$8vtC(iFlyNb3*2N$`RhXC=#F$C!#fn^w?`$9+%8%7ArxY~EF-~bf%f1g|YGy4&+DT#bR0l2Pm z{30?7hY$v1ma{D%S2zGFN3y3cX&nS^w&H>U&JMk}!T_Ku`CR^hDtFt4DC%$W5J(?T z7_aXK9*%_-)a&FSfE|z@tvv@?UdHl1c}N*RVYIeegb_Qc0PUn|NDaV-@#%XJ-s&>c zU6;2Kr2-&7TD!%l9PG-kVwO(*#FRLI{KR)Rif{;66SEBBuEkxc5(Th+tiD-HbQrkU zcEsSZ+4(0W2H>)>W7kHQDPVofGA=JSt5qTZE+3uVkfr@8aHZ{}xAN!Z9l*MgZ!c|& zd3a{j$%>13z1*x;egIT7 z>d)oh26kC-5k>v?_p6b60IE{R&5S8LXvKx#CJ!C}^iR~D2liOO&RG}Sb^hgMt>kf0#=E9TL`a~HH0?gRPK zHdMUkU8TGh@>_NA%wlHoPGCA_1p~o*5%YVt&5Ma{2Y!rMLI6!dBCF7NcFXS>)mwpI zZAYWDAtbg9Pm~9aw^eTgPT7t|XnGJ5{T-ev57dov2f`W4kn|uVeh|%-OJ7H7?g7qO zMyE$e96~B5@yX$>pNPla} zjgUV;EW};}K_xlXB$XGi2^MN+Wf{^2#6kFfA@XW(|l%OV=A-krJ$DgW|5owe0L(7%w7mChNSrb z%y%n|+QEjzY-p+jfUHsb`Uvbg2q62T0QF@39Oxf9l{MFw@~kCyl1A%82g?OK_b1?c*ip4fI}~cV1Zs|=`B(V7y*Wr zTk8tlpx=qNCB*=Uh!VSH;Svry@ur!roX{x*QL2Z%)%HV)`#-f53{iTB2A%d@;Biq1 zhhNFmAD+4mdOq%g1!?*`C|j*je>k;h#_P~jzh`x;^*uU_t{J@hI{?7v&BcRnI=U)j fUoiC4{&(XCWl)g;$Agj`00000NkvXXu0mjf^_=c@ literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/arrow_left_pressed@2x.png b/src/ui/qdarkstyle/rc/arrow_left_pressed@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..295558105563b6ff3cff91cbe17a87e9deb12356 GIT binary patch literal 1120 zcmV-m1fTnfP)CSO41K+=)W;!QuH zQ~(TAT91dy;U4)zTz2210P7kUX+0vUM}Zq+mhN~L*lxD~#A zq<&u@!3?l5W~J6VIGTVvc28}}lKmbSiWrh^^Wb0tHjIwl*6oDfB0LZ=R(5%*HV>93 z;O;#~Zq9@^P6H1|9XGqYwa6ZT>hbKQ3rk-Dk46nqSG&Bm$PR#NH5fc|s*bQT<|yJ% z^I!#lN^bW4PZTLc`+#<%uvd}K5{8<4qia$YiV~e4`s)qg zP%JDaUu&C^oq}q$upL}3B77Y+R8YLSG1~h@4(?iBCzoGD`6&_?1k{^Juv*AJ2X`%X zy7~+vCt}u>Nl0JTi&&g2F3NKF6!2%n5Cjj_f|FliZnF4qhTsWcwnzR{Avhbuv-SMR zt_Dv6=MyzZdJvqh!}E>&Z(%4;14|J@)0+h6H=>1!!q0&O&jZWJTGTm&RPMy*#`E6^ z@(MiWh@M$zExH>na z4gf^kcb$Aw&{j0==J4bJ0H9V2=Y}?yQKqAY3YKg10{}p6TW5V&UjqFx=2(T`4*=lQ zWbsn?-@2W^uQAKobHOVB01Jm+zL3cVJAgl23q5ROOTt?K01M61@2au`xEQmpk56U*<{O1yRODGS@`~-+|72#h=En;^fbK=< muKbNwK1{o&zWVCx+R*>gDKCq$x1GfR0000?^9wqP)M=`nxz!)>6#&9@ZwCxbSboJ zhvLQfBttPK!|A*zq|iBp4uO!(l$MSiGI#ILsnDgxLm^kwdl_OCktLQQ&O`D|65PA@ z8csjZ&)P6>uFv@<1u| z+$$hM0LTzWaU8e20&)%kup}at;w77Iga@PDG$+p(|OVK$>Zvjb)NB{sL@-j)1ahZ9_uE781Bs<2K z_a)~k1z@gjUu%6>ws~Pde%S%MOOj-8o8~~lGaw=XNsv4V!|*k(zWujK;VmHfDGb9G z!{N}~Jo@Goy#?pf>GY}A`fnA@ivT77XsvCfY5J$C=Jx@BOG|*7bWCSFrT_o{07*qo IM6N<$g0`;cy8r+H literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/arrow_right@2x.png b/src/ui/qdarkstyle/rc/arrow_right@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..efbc8de3c3cb297fa56a0785f70ce9e7ce14ddd6 GIT binary patch literal 1062 zcmV+>1ljwEP)d}b)>grtQo+}TzY;+2(dCV zGvnFP+zr+YAff`@>%zg2k&!RsI3BX4+b_1KK$i(bG~I5uKZU_V*n?nw4IrYTJROMW ztsn@bZS9?4-2i6Znhx6_B0q{E-?sjL;c6EE5#{C2m|2Bk__nJYbT~7hGYg8+Yyg1I zq9~enl}8z826SM}bP&w^RTzdZIL>8LyaG)|ci%7!V8!?SXI&>#g#m!xggrut?|k2X z%4H%|835=_c&yVr?Q@kxl?DL%HDPa_=j(HGbC0`7plSoQdWQ1Wu)oo0ti^HssBQhq z4d|ddG9SpYY&DMKM{Ek$#QyC2)G|5<_v&-r9-cw3_<0_9bE?aXAdmQ3A|AEQ@lK=n!07*qoM6N<$f)6C<+yDRo literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/arrow_right_disabled.png b/src/ui/qdarkstyle/rc/arrow_right_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..1e59a58c1221c50a25418cd853bd88c8f3bc70f4 GIT binary patch literal 553 zcmV+^0@nSBP)FbLS00h9JGxt4$51kEi|!< zytoLuI!ONlk>Ecd3eF-9LU1W*FfEdRL$^1$ICXFmgran)v^IGkhdYa7@+MpdeWn}k zp5KSN<2d-&OT$d6%+-FNOy$zx!e+bueUgA^xM_A8)2aRaV)OFC!iggQ_!8HP2c>tH zlH}OY09-9jZSTHLlB5tEV2~LY={IP)^@RCt{2n_q}jRUF5^-#fdjvFyGi`XFM2Xub$Lv+9Ge-dS>M z{-m*p_z(n@6!?^cU_`d0kOVyx^pAobq^Kvey}L5H&ea|&?2Z~lAU!M+qCv!J%WjNw ze?9CV>pgd=SB$djAjnVLN>EMcjYTH1L#53&b7_kKK(l$GvO7GC49*S=7uVa$qiqHN07TME zSnCNZTSi7!+eo3k1^|GFB>M&dHg?s!C$|?0{ifyHZvYnh2B_~7vh{hM_I-b)No^+# zXp&+Aciv|2mnNGhmka=a7@}0d?iu!ef}=-`w85bZa?ifOt%1RDh^QT;j8+I`Ik&G&ikc)Bs6oZU}tcAI~0u1Cs~LUX)bY zS^>g7ncW|T;ayX@tzz<`Wb%Ap>scA^3Bz#Sl;(1R9J=W)<1|7K@`XF?{5-R5dXj>9B3nABWyUav#^wF&Pv2a z(AGi@lG9F(VC8ucQLvW7LQd?0D3%s>LQF~vZ3JDT+#Q01%RGzS1nhP<%UI~EwwO1+ z&%B*t;9oCgSv1#q|3ijG&K=)wM&HW>xGalg90m^U^}aiQx3@nyU{VHWcIBS4I@t49 z02l~ctQ{C{u(??Y4*-ua(52d^lMgY=bcf0V2*YH_DC}Boz26QC0Kg37F+kj^ulJS% z0}=(2Pe1O@b^4b>1DH+%klEu}r@s^!FhO8I1+!=Mwcgpl004Z7*k?}N`r6=BXh4Dx z1{^f!U)JvpPJ{-4O%e0n``5KQ?~a58Ob~$J7?tXa@PI#SAv{3Ieg+>I?;g$4QY|sw zVF>u*oI4kOJJEF{3kv`Yy&CT53hm@EGHd1f1%kI#^A~7GqcXxF`vkU3Xe76^ h-Hd*g75={fegk)El~b(2fJOiS002ovPDHLkV1mN7@^b(H literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/arrow_right_focus@2x.png b/src/ui/qdarkstyle/rc/arrow_right_focus@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e24c3baab9acf3c4ac88eeb9d579da883973ec51 GIT binary patch literal 1139 zcmV-(1dRKMP)jPNJ?V0o1n91li+%nIqgrEp~C^uGmO4v(HTwIZu0VG3MK!l^Y-QPYYZAU(U z8eBUf>$pQ{^=ahk|pzlv7+N06Q|o(rTh$l0Vs;iX4(~ump0jy@-qOS7J^wV0*t+#h2rzJWc&>PNUatD5QE;cCE<4f zH-)Sni=GESK#E5q{=k-kH(zH>2moi2tqk5=8R*_)OU2^=%)x`OBeFPnz{@2-0FmK~ zi6<)k;ZECX9?k$(;KaKH#z)cgBYi1l^1SgZ08&7*+~rRy?bTN>nD#++{`j;6%)t}B zT&S+TfK5GBhoWAfU_RF=#?_e(=lUPN?o!x?B|tC-|FdeNb(MV2CD-Cjo&iKD9)4}h z#B0vK8U8Neposwx0mes;i(2WmzxAy=E9IhD0i+H7swRGVs(;0Il1AhM;M8ef)tY*z z2D-nJwj&!r?fqa?%(N{U3=ar; zFp!!7rVe9wl<#W#GZ}#Z$f)ud_^^@>^DZtojp8-{O0Dldj;5p6d>B07HURTl3!Geh zIr}0;o}6{4+Yl}{!Q@~5l)i1zvu8){`@^AT!$@s{KV>wppL*kg%R+j$jKnc`E}m6u zDqFhF3urZr#Q=y>-T_8BLu)VQyMD2!V;6f%fQ>5eiiTPr^@TrJ({O;rf0?=ACoCdn z;^(4#*VoqicZ9_mfL$QO0Aet|9SwAUZmsVYEn2j2#9s~PGV2o(qKyCm002ovPDHLk FV1hVO1_uBD literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/arrow_right_pressed.png b/src/ui/qdarkstyle/rc/arrow_right_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..4f4fc8efb41497bd51eb03c09a0339ad716e5d63 GIT binary patch literal 544 zcmV+*0^j|KP)Ws^3hE%@uB(Hibg7fXF4hEl z862d4fk^Nl5CxYeZIgD87Pn9oM+awjhfabfDh*UL^zP?yNnP)9$D2W)?S*^Z-{+q9 zJvjK+%hEhFA8!3HWFtjahVAfskpM5vLk8!;%5zrgEv$6UItNTjaN~F`dQElr)Jy;X zhAjr=qb}85-#x$-g9&UoDF1u`N_B^d1IUC)^9v30E95&@#1l%(OGi~m>@_H zlAg_noqKKp6UG=}Xe(%RmRtiS2mwCQUM1YT=^6mZ6a<`>S+COAyzUy1AcPR-Bzsd? z-M;D?!1&7$un-fy3m&vDxCJDYTuS3IerbOefWIYOn+3p2vN<4*E~aTH6&!BB7Z3kd zf2006ZBzczN%)}`M~nUT%BQrg`2oViFyNP=+g~?UKW1sqcLYhW0TE`^{(Aj=)-7^O zKsFvd!s>(dT5p`$Sbo)$q1SjEOPy4Of^J&8&^8{p|;WF8oZSN%%|kCOjGmjDByw}auC8qH>$HykqF0fP_zZ~qQ^cSl8prw5o0h1n=R iUK(zPM@5DIFMvPFm6uy&so_rm0000 zBuX&SXCP$2>;cr}7Y5!Ci)|1&13=Sb5kTkt!r)rD_+}6^08#9B6M*mi_R?xW4RIt5 zV9hfhDsyphu78=Jjwq4_%*Ha6QNu6qIOSW=sv8>y0KhAg(ftd4d#TBi-kdRK04J8j zIw1;>&Evvaa6i-2uH8o)#F`v!m%dgo^CJh4s z5Q7pXJg11i%NB;#*vup)1E5_F3}gw>#TW9$<+jpD&wv`bny|zpZ}_F1LoeD$AZ-JH zTGtRiD6OhaMHd!-aAJ{ZaTg4jrEkEi>e$^19>yM2?1`rTIff9rNwxaH}qq{qKCJ?|O16Vis%k!HSY(sD7q$yQb3`kCU zqMxej-aDg*w@sK9PM6wSkH7if6yJY)ytng?Y58;wAkc%NH=RE`k2l;ZcKl@{g)|M& z4SqZ#Z2Yq)H)1P^ve}qVX+S*I-H3QoSls@LpoTbd22B45l8KqICG5*x6^m~OIRlsu08|B| n3h=(L6#O6-yFr5n4Gi%gkp(5TEJoOo00000NkvXXu0mjf&UX1l literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/arrow_up.png b/src/ui/qdarkstyle/rc/arrow_up.png new file mode 100644 index 0000000000000000000000000000000000000000..9f45d8e4cbe3e712854fc309a31bc9ce692880bc GIT binary patch literal 512 zcmV+b0{{JqP)|o3*lVbAQ0$RU%wt zWh-d4B(qzD>10c>vb3_W5=FRfVbTa&S&LU$ij|OsnP;(C&E4+l8a+kG4+5E&H}CuA zV+gdgw6y$Vr0K@dXtd?Me+~3P2wUUv_+yhfQIk!B!QiU*-T^&;D2j?K%dY$t1H<9) zdZ*KIz;>;?4Y)K-d#7r^7_$>Xm;jdm1$^}=a9Knq#+aQ`F<^|@Q`H0Dd?grapF>sK zRMmqtO>eC`x3f-Dnx=Pw=fK7a@de8KQlAx({Uk}=JLlg0wgF?z1K=t1v`!NLWH=PV8S*%=0{&&1R2P^?p@a zOZ=D-QPssAdlJX-Lu>6)dP@o9dA?DWGF05)suM!)G*91F2umgOOE;g5>6w6wJRw|oVEqMoFksH@rl0000`~c6R0fK@bE%5ClOG1VIo4;r)WPYGAGPDFEL9P(*Yi48tp1 zQAcGf2K9aa0)X!U>;|wCz{if`{ArANTy`y`8=$rJ0DO(??EAb{tNmw;`L)b?$~1sH z&-;pquC8;>amR6X7-N1et*9~v34&l-6h+?=(HA{-xmB%JFE*RaSA`aa5)24}V0#or zKM~PMOE~U)D@*KdwOT#fY&N3;%PZD^AP9CxQFM=pj#$F&)V1w#T#V!RWUJNsr-1SR z6lj3&`+J#r4!}p2a9TWw2+W)@fruUg_$&;=zX~X`7y~@d+ebw60QPscGcyxWoYO72 zM-frFu4k1><@nUp)bnB2I&=eE*FC6|ng{S%L>Pv@52MZm+v3wV zTI<6~sRtN9JOB_;%*>o>9%p9by6&Mt>+EJ|1~eLtV*nNb>`8?-B|ag?ggr{BC9U<* zKFiE76a#$UKOM*MeXMS4-_Q}TY4Hi2^&)M;P5^VAv&6s*yc6_&|2#AQ0AO2pdrtBF zkmTrI6Dk1CIF9qe81rP1i3CSt@f`m=C^(m_GUzR)oDYmK3&TjZA)S5ww?uT_5-wUiuv)Wi?Yg647Z(xD4?LRuh={&dSQl*_oM{mzzn{6Rzv-QcB$eV0#6XDLx_3gau|k)$948 zr`KS;ULUJeDvPj-Z=-zi0Ki0KJ5wA}N-fmu^|4-(Y&ZiZCnv|-?e;u?18YX_VP9V& z3Rx{r<2asZwOTLM>$t7~zV9Dk=6L|)-R&bLJ~>I+O!%W?!n54Ic>&jT4=JVQ0IZox zqb5Fu&4j-Jd^$Zn{V1UlBSB7*w;k$eTSLZx?Eet&4mNGJHQ-AOaD*LU rVytQt1VIo4K@bE%5ClOG-fLb1RDv!28%yT>00000NkvXXu0mjfe;m12 literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/arrow_up_disabled.png b/src/ui/qdarkstyle/rc/arrow_up_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..a77807c572c7649c21ee11962886844543103328 GIT binary patch literal 538 zcmV+#0_FXQP)^V*xB2qva_*B!ig9g7cPx(XsyLrnG_--l0v=xT5ML5Tr`)}#AZL$Ff;Fc zzw>xA0|f;I1^*e#8(6s-jg+LPKt%(kk=HL4Kjg{d@&r|{L}yD<3#b6tkM6P`TsyNb z2C6}$>PobLvH+#iWm&g1UXLn!YQUciC!ARfItj?2YtR*v!6`$rKN(K!i2*-oL?kQ$ zM?nITY|XHQv=~DqEY<2^_)iV^L3jtVd0-Gpq=H+?ObiMZ{2;pBPwvuA8*25&UCibH zhY+@{c!o%CmczJydUWj5YUkanyasH%9^MCg03ai=Up@CnBm)C8m>M2EXDgkz@$L-F z&N|;6d1!DCKv=)xsq@XlV7NSXVrAymbKkST91JXm&4v7O4zLgW(x zEKB(LT5k zI=)dUUt5k+Pm~7GR@o0pyt~J5jvX2u@2ixr{Suj|C^k__b*;1aGk~u*xa7+Lx%+0Z zSiBdiFhtM+N~!L3tM@yAuX$raIs^p%gNSe9z%%2AAH7g6mqRrn)DCz)ogVmS!#WQl zsR?g;zH1JHmwL9WSC*H5xD$pxAVdS=FQgx4mz4*Q(1g9k@1pC-Rk`P6t}Nwm1*h&m zLNOrmV(xL-#sVPYo{#`=_E~QEb@6I!J9cbk@xqPZR8}(wozR}jKFt^w1bEDST>#6H390{xCIEQ-m2X9gcyKV9~m9{>t?xhrJeL` z8DJ+fZ(nzvO0XeTot0DRvc3BLH9v|1AY zU}pHpSWo48>0+ySn?fnob%%YQ3UEe~&H*Iw;@!y3$@}hILVoeYV9#4~b942EEGGX^={|XANl-dqq!P3;ONog4{aQ9&I96m1PSOc~$Vste@mZDjPNbUkdyr7Mr-aS|z>%7OK)}`qoN&;+Kj2Rb+cT?$ zpRd+iRo8&H%1n^V0~qq|gf^zTFcHAgJSJ}gcEY2ar&2C0x&xYl0`JvH@}R?N zZ8i7|VAN0Z2+`H1y9b<;`}lv}D%G0Kby|nPU@#aA27|$1Fc=I5gQ3&>3n0o8p2LzV QasU7T07*qoM6N<$f}eNu0{{R3 literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/arrow_up_focus.png b/src/ui/qdarkstyle/rc/arrow_up_focus.png new file mode 100644 index 0000000000000000000000000000000000000000..b3970bd22e2fc9a93f2e4e61975aba338193e2a4 GIT binary patch literal 530 zcmV+t0`2{YP)_e)ZW5To=?k*>NaRq3R3E@DR)QE+q+ z6>)HknS>-QSo{No3N8)`6|q~vZh|J4T_;8DP!t^6=KDG1&Yq^B=2~^RXZnu!``+L4 zz1$t-YdXcvh;CT4u$nM$MEhIFae-KaV4DV9L>^e z=m~`N&Ph4{5;*i*>60@z{rUFs)-e5snm|}@P09J?UbqS90$mINhrRrASZ_`J6@g$j znvt_5U_T&`|5+41mZ-?tQqYLb@2SApY;+mvDKOd#$ModKNU>m-a*;Y(zIq zS^x?I!?#Ez3c#bV8C}mVAX(6C*JQfidp5sAcuK-NfY5x5po%=hnkp800q?*og)VzF2(7K_DVu~;k?%l``*)WWVG%!ufRfTM73 zB|m;_5IP1Dfah0_Ae;f5J5TjUEk7~eZ!J#yF3IBh)dIrV=-P75Emhy?x1Rp(09Ely z)%Ov}-@T*wwb^G2h-g1#^(TO0CFADYvjVSm(p}->mDQCun44NpTUzP?>?vN|aVxj_ zDX_n_ML`{dD4g8|0Sur1ahJ39=XsE+=*m(@_4aR29g3Oa z0`=_vT48K8Esd!K@Yv}eM%LFd3&8U+%hnY7#fZFeV|MSgq_rjo>%jrvvlQ>|-EO21gzE);kqUCZo1NVgb12rI!VB zLBS0*HO+4qHG~pVa4}kO{iT<>SK3M<0l1~$fT(;0>pHhZ>#8hbRIEm6!}EZW}usK zRP`gT9JD!F-<|HNfU0=q-~;gjTAw(4% zsrT7>E2=|C#Kw0Iu(t2F{A8`&@U{UAmxED9brBc~jcnBTL7H#q03~{KRxTN%(>Dqe zzqT8`C2pxYCa?&MwvG}-HHjLZAmTvi5+(e?x=z;$6IZqzwN-<6DwxEu0P2OBdOh8x zhv1-LPf`PYwU!_MK5j_tLC7mFPhqrjPnidrcaG3UsUA@A{NTm7A(0*6m8-{qxoDF2 zIF0|TVr_Q(z0HrKJ3zH~-zyHTk42I)_mSM42 nEEbE!VzF2(7K_DV88rU_>&iA)V))lv00000NkvXXu0mjf(TwT} literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/arrow_up_pressed.png b/src/ui/qdarkstyle/rc/arrow_up_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..8f9dcf4900443a161231c1912e4724cc39f37f1a GIT binary patch literal 518 zcmV+h0{Q)kP);?q^q4HxG4pYt!acIaKGB8Y>6BJCEie?b2Nby1WKodV@@_jTx{q$Uw_iMZSc-sS!Ad_V8Q z%N>-Il$88utmwho-PW9?d_by`rE}Y>jc-NjI7JTm&1jxPpOESRGI!H&teq)RYwQmA zVRTlqb>QT0OFx_}UHrM)*czwaSRL?#XhB#z4;PT;L%^xbaoc_nE&LM!FKjId+dv%4 z1GB#63?ZN@Y{P5Bm!~RF3tBgk-U73EP&Tm1$a1k+jCWob-4R07*qo IM6N<$g8Ys3X#fBK literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/arrow_up_pressed@2x.png b/src/ui/qdarkstyle/rc/arrow_up_pressed@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..40c7f20c102d02167fb9ea9f75a38f7f9d3c24f7 GIT binary patch literal 998 zcmV+LWk%02oz1 zT%DUfu@ySDqyT;p2B@3`%=$%@pfUGqW!PGB!=BI!YR5%+pJ?%g=XV{Pymjl+;@88} zGsF&1@q^kals7lNPfj-~uN()_VW=8T0cPuY@7k4f0);fUt4MYA(S5IRa=e+fw9E^z ze>&Xx$9?h%%49sMwk^R#BLbh_-_&D2%@_X4QeUP8*z?jy51NtYBFcDoL;=%U`)tcl z&BfKo3br}fsFr@uN@HdPc%)DrZRX4p@MJ=`)gvuwQT{gHvd{e*7JnO@x_`-}01wa9 z_T?tXTgptTOX0A6|F3BfJ{k42`^wcmUS6obUH zT~(tKtLF+o3`A&~*y7UKoM@9Go*xeOS6u}aEm}yXeSP_8T zf?4u{+SI1RM(Dc$qviRMAQylgk&s<8-#1C)>=4yYM@wO`-@*Gj3;5;mEs!(B7t^FC zHwdKbyT}V82Pbd-d1>*R%?`N94p8xf`S(ChCB(8auZbNcoE|NO??QCzOvjxk&DQh& zwJT?VQbIH<^PLFE53bU5uGVjbX@!xJDUlVW!{3Od`U6yEN< zn9u<-%m2?jfV91JG0^`5?naV2;2jvqDQ>%A+uj@whr{7;I2;a#!{Kl^9QQQ00WQ!O U`vgegPXGV_07*qoM6N<$f**q7B>(^b literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/base_icon.png b/src/ui/qdarkstyle/rc/base_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..bb00857a4e170543e97fc60ae991b409ca94fb6d GIT binary patch literal 1256 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 literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/branch_closed@2x.png b/src/ui/qdarkstyle/rc/branch_closed@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..bc87d011240a18487ae14e6f049db1d5cf1190fa GIT binary patch literal 704 zcmV;x0zdtUP)8Pm_{ot z7AypXGfaXI0vC6)$<;)Xpu9{ z<#J~_oz54XxvOw={&ClJkNt7;08pCG=WklA)(M@ttI%3NsZ^S0Ts}9MOkR4PSJ0V# zSXvAC8)m*#E|(v}z#eoED+TPksg!D3%m-k%007ulN?o@(fawA_HPoz zb{dVwrtaW%DF6VH?+wJvf$q?CDj-YN$~aQ%R6uIyC!(jiL)WE%)Eq=~&-eYF@n8!a zBp!K0^vL)99aG`fFmvkW0lXfKMt70@;&kL}7C?#PG7!;+*=%-gFc@T=Bxzx*0LsYz zOhlJ^z1|O#gXB$y0efHj{?cD!=5Nfr5d^_k)AJZ#0m+*OFm)VfGYrE|re^`n7m)RW zbHn%j_lD-YOpo!N(_wSXv!ekP8+#&H~PwA=0PI&)W{_3Ujp9LCjZH4oqdfC)2S4a0D# mGgAm5gb+dqA%qa(Ain{*MXymegB2$L0000KP)R9J=W)GoZ0m$rjo+s(~U3jPRj z690pXZo0XMAt0#z1Fg{6MbJfDBpnn?K8K_#I3vS#XPNUsDvvL7@%ed_=P zR7e3-5P){tp44vORo9R!IL3r#}l zU>2QpC^!f@2qKO}94rnlF4{?#2x6PGkfFwIMK6jD4nh$`q#!5-+uFYSgDHx-;9MwE%x~ z)Z-7IfBuoPnu*-QFXx_p(wW;1N9(UIeCx#4k~<=|S?wPh>e8Cq2CW6GG!ZFZGLEjT zI8S`v_jG3OmfjVx4I-T3uI~FVum|nLN&y=#W^;ub7V`nvEdU^lWpl;zHb*dB04v`R zPxR%AIm2^ovatf<#Ah!iewsa5IAUQID+Mq>$rAPgmF|k zHaNJ~`@y)@ zPvx(eNKZil0IB-{02=pm#Sz`vsVHDW^0|SSa9ek1iVA3P$`iL(8UI#_3SedDC*Yy( z)KnC}E#@G?wP3b-M|XA_3UDZ~{t37j%vQ&ZgqsN29y?G^{>k10ombK7!AS#a1uzi- zlsx!XO)orGE|=9eNt#$HfQXor*&jV8Q+!*i{V+L+YcdR2e-tDr2mc)r^7GFp7fsJ& zd9oMk5cnOBC^?##v1?+L5zS$wX^E$W`1VN}Xd$;tS0=@f}vGreGZN_naer9G# zYi=8~zI*!;1aWuIA(tHI1PE&coPATD4s>P;A%qY@2qA3dckeNxI!uzUM+;{HxZt`*gkH_=hVWw)y zRHDW`j5-6Qp2^ng#7j{Dld1afG9Xc*IR5zhd<-eu0}2b=J?Y~tEL5WAwp)R3klGxK z>Pzkg1OT+D#zA?nG3!>~-9o8EV2nK*+HY1J3#1Z+0QOqh^YU(e)Uf~n!2%S35fkvl zy}(yy{zAY2B7j?)Xw0zy34nk)Mx1MJRBy5-bQNnZ10b>1%*VCxDo;w0Z)gC3;!3*~ zUgS;5H-U5mNZg6n!=t>-fvgi4?)zLm#OcG@)K-z^*#(xT6M(V6>;6*rB1rvy$>Z^O ae&!9eu~jR|G6!> z%vf=s*Et&ae*#o$kt-=g@1-Y-yS>jshynzKSP2`c>cg#9irv1)3A6@itOSAWwTe!6 zkIk<0IZ41pP?hL{AmpnecbJ+=`kEr>R{*FHUlk9gU+kLj^&cU00RXl7y6~I8iOhI$ z&_{SX6aY$eQ3M!I7v_3hN4G}-b;J}S0ZSd_*#CQlVl}mXfCwIJencE7tufRaQ zqRIuJib@%kLyKqjzH*vrj4{R-V~jDz7_)-!VCkn1iKF|Y00000NkvXXu0mjfbyiSD literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/branch_closed_pressed.png b/src/ui/qdarkstyle/rc/branch_closed_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..17b7784c34b07c94f6fa3e60fbff37e517595ccf GIT binary patch literal 372 zcmV-)0gL{LP)K@>*MolO%^)T{`iVrgk%Z)ss`Cqlwz(askT zEAa_zL^ewTYG-NVJJ?v;2#O$^U@#zp*=vynf4a@UZsDA%1}@({b75w{;c)zSBwx82 zzuA64%wVS4U%5Zo|F9J>xvF<>JrVH*U4DI^ia~Q8z*b=XO}{s~?T4MCVg>#na4_5K zge3`RIn5Jwcas6(b6q{>k00j1WapPv( z6pIOf!f_HcS~eN^Ch$D@L?rFSeD{>=%v!iDU|=}YT;92atmZ7n z<@oUIXzwSdxiyGf{&*8jyVl)2K!c>BSNl62?{S%13#SF7)0C6f1dgT}m!C5*oN<}G zT}})58-){DZMYBWd=J`6kOBZiwf8`7{CcSTKY|qipfK3nKh_a)2G0eEf>vHqMw@e^ z$NkQ+Ccp}iIB_8Z@*K}4e4u4C(`fDOOQtB%Wmu1*RNP_5qim4~jA z>!bjpss*52EspfuaUUF-5+#p3MeY?xx`%wkr+tKMB1-&Y1j@^q`Nk{BqtV>}p{(3^ za^b&A{fy4?>`c`^Nv;GcKxJj=ue+jrj3}L)e$@5d=Oq3M5EYPQ?l&ZA{Zi~UcFw!Z zt%ci1;K7BGM$t{6jIxMwdbZH{*=eRR#u#IaF~%5U%octDC(xqlE`lUt00000NkvXX Hu0mjf{A^Ov literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/branch_end.png b/src/ui/qdarkstyle/rc/branch_end.png new file mode 100644 index 0000000000000000000000000000000000000000..05cf7b6de7bd467fe08bacf7f158002215aa4f67 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DCpqn z;usRq`u6HZUIqo8BL~`7*4vmhEA~t|c3pkbB^Ab7_qI)cb0g&kJ2Q{L0S0Cs3I2$b m8T%f!#6P&e;5o_U9pe&X4pDZKA0a@q7(8A5T-G@yGywo%Xe+h= literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/branch_end@2x.png b/src/ui/qdarkstyle/rc/branch_end@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..6df213e35bc14e65d3a8c90fcfb9b2c34cd9ed0f GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fAP_WO_ z#WAE}&fA+Cd7TVJSRCzlEoGkmAS#o|sKtfxH>>eX<@sUfY_vChudADP-ZJ>j4$BbU=CT9Gry3oybQXo<`^6i@)=RWYW2skh>vIuOD nE0~k`UDW#-YgAPp(1-~0i&5-ip=_&IfE)%-S3j3^P6db48^jOBK0g)j|IWt!$v&ID_n*H- zrEh#37E`6lbcH#K9DK6>jl}c&4^Q3S-(Yay&hFjzhZv53))E9d1_XYT=KH_pwBuhe Q;V+2m>FVdQ&MBb@0P%%R4*&oF literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/branch_end_focus.png b/src/ui/qdarkstyle/rc/branch_end_focus.png new file mode 100644 index 0000000000000000000000000000000000000000..3227c78c32367921c16c633185154da13e98f353 GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DCpwp z;usRq`u3_LFM|OG%fW0@1?j-64T=JVzCYglQIxjxXgl%hL{|Fo(zbeq1_mY$g@%T& o4Uc(tuaEeo|KSeMgbjHNMprqE|2jBs0P+|-UHx3vIVCg!0GgC6a{vGU literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/branch_end_focus@2x.png b/src/ui/qdarkstyle/rc/branch_end_focus@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..331af9c5fd1aee2fe7628afbf9725ace05c91a34 GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fAP;iQ; zi(^Q|oVPbO@-i8UupZ3MTEO>9X?f4;J|h8J8A+!_4Ymh;o}KX5PLC6|%>VxP^PfGj zVH+QZ#8jy;U18252cPVJbLRW|f~W7}9V8zJ-upX^^+tN^a|J=5Ye3*fss4*N&W~4i RUH$;#db;|#taD0e0syV_PGvzCYglQIxjxXgl%hL{|Fo(zbeq1_mY$g@%T& o4Uc(tuaEeo|KSeMgbjHN(y!T7=Tw~F1o9X>UHx3vIVCg!0D%ZA&Hw-a literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/branch_end_pressed@2x.png b/src/ui/qdarkstyle/rc/branch_end_pressed@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e5e4bce40cdd6763057f2d8671f007e9d59ce233 GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fAP;j!R zi(^Q|oVPbO@-i8UupX?x;?T&V@}-3Ft74Ubq|>4X+k-yOPWWr5-%~5vcklZ1pF88X zB^_V6R literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/branch_line.png b/src/ui/qdarkstyle/rc/branch_line.png new file mode 100644 index 0000000000000000000000000000000000000000..36c7ddf2ab33959b88daca7116263d90675de3c3 GIT binary patch literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5C}`s8 z;usRq`u5yLK?VaJCd2q;Y1P#nL9ePU&WfnsRJmQVC+&|iP#qFzVD`Gk%6mxhu?a}f M)78&qol`;+06TymRR910 literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/branch_line@2x.png b/src/ui/qdarkstyle/rc/branch_line@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..573c55152f05a9c0ae7a7e8171010076226c0591 GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fAP;iN- zi(^Q|oVOP?3N|hYeEyt11Ko-hDlpb7aw)d28mKJ$}1Kp9!cK3H&gA$-MJ^ RKGP16n5V0s%Q~loCIEn*B|-oI literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/branch_line_disabled@2x.png b/src/ui/qdarkstyle/rc/branch_line_disabled@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..cf615a5c9385786501aa6b87a05649bcc97d0819 GIT binary patch literal 248 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fANY2y6 zF{EP7+Y5%G4F(KH0=kx1CAjGu^KA$Tlc{M-+5Pg9k=YTOb6@YCujPHXvHP-pAcO7# z%?7axA`aXcTnkuDST8WmV#;9jW!%!Rj3LS)m{!uySOY(@G#Eele+KAk22WQ%mvv4F FO#te?Oe+8Y literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/branch_line_focus.png b/src/ui/qdarkstyle/rc/branch_line_focus.png new file mode 100644 index 0000000000000000000000000000000000000000..b81bc5b0920ed1dab32babd37f14cec9fbe24716 GIT binary patch literal 134 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5C}`p7 z;usRq`u3cmAcFx1i=&#zopr0HKQ^KL7v# literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/branch_line_focus@2x.png b/src/ui/qdarkstyle/rc/branch_line_focus@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c474ed9022d4b4f72ce4b2aed0173a025e1222fd GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fAP;j-U zi(^Q|oVOPYMH>tljs$eIy>gH>3TWrEnIg(QU-4$%u01`xhU=?qzZc6nSG;-j#b3mM zJA-Qhs|o7`rddoGjJ}Lp8kR9cIRrE4F3@ZcyFfGPO2$}2mIi@#lSe>jGkCiCxvX%J;m-0N^*nQbPkU@8W zW`o!T5eM!Jt_7?ntQVMOF=a6NGHz*D#t`KYOe^VUtl<+`8qWSvoCtI^gQu&X%Q~lo FCIF~2OCA6K literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/branch_more.png b/src/ui/qdarkstyle/rc/branch_more.png new file mode 100644 index 0000000000000000000000000000000000000000..1b91df3e9c2d6b25f0dcd8d22f56be8263631fc4 GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DCq0y z;usRq`u6HUUZ85{Koh>Zf;XhfH>gzn*gJjC7pE3MPt}!kq;G4Mvj9~CfdsqG@;Cb) pb?}Q>$hsSSt~~jX6(Z44c!2eb6(`@-k|L0844$rjF6*2UngFojEB^oh literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/branch_more@2x.png b/src/ui/qdarkstyle/rc/branch_more@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..2e1bebe00497ed0113de56267af7facb52241a20 GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fAP;j%S zi(^Q|oVT|QayA$UFdWnnn=5o_>pqr)Ol}3=r(f4S{a5d{!x_u-&#TvN~2BR literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/branch_more_disabled.png b/src/ui/qdarkstyle/rc/branch_more_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..72ec42b22354a3e12feaf36b8e8dbf8db1929554 GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5C>Y}D z;usRq`u6HZUIqmo=7SA0I(UPO^-ZNW2)$`gZhdsu+G=O#%n9!vm&m*C44hiz0@MQp y4J8hNr(S8B{Z42UD@u<5#KMjk=W=8xt7)3)FsJIY%u6{1-oD!M<#{5?$ literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/branch_more_focus.png b/src/ui/qdarkstyle/rc/branch_more_focus.png new file mode 100644 index 0000000000000000000000000000000000000000..9ff3921ce883b0403ae635080e85dab01ec1edbd GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5C>Y}D z;usRq`u3_LFM|S)^F_xA4SZJ=lV4qEY=77|sps(fy{EnPjfF4Ox_%cu)w^m+JPS}0 w5O}bQEM2oNX*0iAhJN20%XQOz;vo`185yesoJ!~1Jp4f-p00i_>zopr0HIYb;{X5v literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/branch_more_focus@2x.png b/src/ui/qdarkstyle/rc/branch_more_focus@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..95ac204e55fdaf433aa5f0cd2ad7c0d30e55a0bd GIT binary patch literal 266 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fAP;if@ zi(^Q|oVT|Qa<(`KFdPi!dH86@3!cL-dJfC%x!#z-pnBu)?dv9I|D-K%{E_p!vR3|e zxscpuiC-#Q3s_B9FEGtw%3$>gV+TT2ks0U(u(3Y4c}c)Jo?&v p0Z_x{j7Iyv0*-jp<1y|t^TGKXja$xy-U9lA!PC{xWt~$(69C@4S&9Gv literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/branch_more_pressed.png b/src/ui/qdarkstyle/rc/branch_more_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..a4f20e0e1195b2a456774de9fb9158def1b904ea GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5C>Y}D z;usRq`u6HZUIqmo=7S9qjf|QS-A#-)72h-{w?4XSZMCy=<^;R#-*?9D44hiz0@MQp y4J8hNr(S8B{Z42UD}1u%a*N(U);c!!m{_hhPTX1)2?F7epMmGjK>Nir+MRcRlgwYx4y_ n4VyC>?f(im;!%&sxX;W!FE|=^@?ZQ9^ag{ctDnm{r-UW|IEz)a literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/branch_open.png b/src/ui/qdarkstyle/rc/branch_open.png new file mode 100644 index 0000000000000000000000000000000000000000..eee8188b7b5d436f97db3d673ce34466542f9885 GIT binary patch literal 354 zcmV-o0iFJdP)&LUCO2bPp}mjGzwi?NB9Kv|=%Y`=yOc7f@#!B!1f4#;+1^Kk%dBWbg0E~^@tOeXubZx*hmz~_?l-PHC&p64BY zX%Dbb6<|Cb$8NWK8)Mv-bjb2=6F-Hn+U@r7a5#Lg@>lM_B1KW0O1c0t+mhz=t;T;wq_ybo(Pm|)U{Fo zfWctUi7`F{FSdJSSw61nS_iR4i9{liNc;)D08k8CPw`L?zyJUM07*qoM6N<$g8A!@ AZU6uP literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/branch_open@2x.png b/src/ui/qdarkstyle/rc/branch_open@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..bcfdc84d16ec6c3e41e6722777c14c80a0a13c24 GIT binary patch literal 657 zcmV;C0&e|@P)jq>!iu3WdU&s&1<4SrO?2=*N)jFlPXy0Qjm}@;q-n zO0mcduq^8rfD2LU%tBSQ*Xy0H)oOoct&xZ!N8~0hQ{)B&LGT2?D26Q4QW05?vim?x zyH_k0uZ%{cw*amkm_Q^@Rh_lAswPBaUrrJE31H1}oYt&$cWXs0up^((Uo;G(0pMQ9 zZ~$Q1CJ4e$=ob-LbsXo@v>C&kilYbswA<~ibUMA6OeU`axG^?7ZKEeG{-cOw9mn}L zQ^*jpH2?rQosOT)W*ffmCjs0Y8gRH~m%i_>0Jt^bu@A%H@P4II`M#)J%ecpj zWmz@=d+(R3`f4y3Jg!!&TZ;^{uoJLXv)O!~$z(1AxQXqzK_!(+J#$@mxQskYW83y= r+qP57&Ot;(L_|bHL_|bHbVB?Cq`0i=X1ozi00000NkvXXu0mjfW3(z7 literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/branch_open_disabled.png b/src/ui/qdarkstyle/rc/branch_open_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..b6d2d47432369ef250850f672187b174e8bb6f7a GIT binary patch literal 375 zcmV--0f_#IP)^@R9J=WlCeqyK@>&L-K-H}E23oz8w0Rj=KgU4v8y>_dyOU8N06#$@8TZ=F|0!kQWGK2*54YoUR^B|8ecL0Ee zYJEuxnqX6(TQ8E<+ZT=Vysn`F0L-sM<*<<4fjt;O)QKBc!@5R6jL?L~@ zo_pqZ&cobiz!+nUF~%5Uj4{R-V~jEX3kh4GvAwffU=U?LLJCMlkSmvcAmym0MY!!x zjP`{o7J2|p?VVqNgJJ9JiK6mjsnYlTmA#g5B8U-sh{Y6o0D(#`upU8{f1@al_Juip zi0JfAwRIgWaWxKFpSh+G2xy4%4jDNWmR*AGR}=B4A?p4q9@?A9;rX)CwR6B^=9*+_ zU^f&Iz|HdPT;OO+6wUMd3nH;FJNvWZ__4wAb*TeRW-QA_Kf9wKlKpUA=z4JRbt3*T zOxCR;8vwxa%uIT*w`Zv8{ijkvS~HeK6%on(bJ*CDrFmsYD&=Z&eC%74ne+ArZ))$n z4h*n;$O;5G@@#Kjw7>3f#jRK@mX0(edA`CLFLZQ>Ix(PP>*oq88ADKTWP2VJm79KI zq(5I7^L~dnw{09O^fqy6IHeK zM+8m-fe3f}*5(@vcL&yrk*8=p&nxjfue{hfj4{R-V~jDz7-Nhv#+d)aFLe{HCa?(= QQUCw|07*qoM6N<$f*y`GA^-pY literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/branch_open_focus.png b/src/ui/qdarkstyle/rc/branch_open_focus.png new file mode 100644 index 0000000000000000000000000000000000000000..1f7bfdc0350cc9a63f6c042ca4583aea649b92bc GIT binary patch literal 367 zcmV-#0g(QQP)w^U`W^T8g;w@0)cFUgfzjB z0)huXArM#$hG*EKFc=)P7{EYxE@GFYA;A7966Q-r%;e6w=iC_x1OkD;e@8_H(P46H zXcc%DSQ$|>glNbZk9zS6lK-i;Q78sYWk#E2ngi%FmY6N7bwvep?sd)JV(Q2P>9@~j{Z=Gh&OpxM(QsSF3EAX~ zY#QWyWxd%ScjH~8Qvaor0f1?w=F-5=b{B9wM-cJc#P#I40c9}wcQTm)@zWdXrKwLWLTah>6>SL4syTeqfyKepbP+tKB^ z8Q^%spo)v=TALuCPLqfq5O*k_Jov87s5QJl1FDwB;)R~B=t*FvVNldzEzMTsZ?=X@ zUPZdfNBp{Z@UZ~^^P_u9`C{U%h~8{bYc=%*X`ClQrn9(w;>+maoadl5#R3vbXDgn?fX2^D#V(IzP^R9vl1>W}J2VBNI!%xd(ayP!XnbONnb-mlnt4 z|0?w?vOD#$d%a^AV~jDz7-Nhv#u#IaF&o4mJ71=UC|Epq00000NkvXXu0mjf-MBzWE z`~v-q%|=9mQlrsol^TtXT?tD_%)F}^W}ESLRwdq-yyoTP+;iT$;BYt`j{lC>1VPlk zQI!SYLqv5LQ&kZ}YoheJadRHTlxb^rGwLELKz*3u03zQx$8B2ACYYG=7ZpwmcMOn~ z95bN1Ofzl#)E;2W7U22nBz+5)&it3@NnnMtZxe)~&|&wK@?_*D)75Nvgp@yt0e zn_u;fVf8WDxTxwiQUHLtsME+Wx4@levhY4>U61PZ3smywcQ_ml$KT}>vd&n9NM!|a P00000NkvXXu0mjfHrScz literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/branch_open_pressed@2x.png b/src/ui/qdarkstyle/rc/branch_open_pressed@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..bdf8b2d2038f3c62eeb2f1bd0ddfcb254120b5b6 GIT binary patch literal 661 zcmV;G0&4wTfp%j!T%6@$@c&@(G;*5K$Z@Pf-dRp%+2`Tq~tQq89;L;ckYz{)oJbTI5~npb@hcfHd=H4hLAst`cs z<(j)OezG+1eK-l6YgiT(L3X$jgqF<fEHB6w}` zG&QfP%j?yF>#R<>LFWwh5jHws98=X*V4z`J1+5=~;`}}P^+!eI+UIO)IjoGKKf_1o zil@+t`rNAdUn(-ao=ug)%ooW^%x&r>Wct1Hh_#>l8s@1Y0&yr4J@`Wa=KNN$08qUGG|4Il@&z^16)T0i{uQq;}&-r|$^ v(V4q_y^djwF~%5Uj4{R-V~jDz>=J(fSTn4(pLU~*00000NkvXXu0mjf&;vAy literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/checkbox_checked.png b/src/ui/qdarkstyle/rc/checkbox_checked.png new file mode 100644 index 0000000000000000000000000000000000000000..5acad089c0032c7ef3602f92e4ead43bf2bfcebe GIT binary patch literal 452 zcmV;#0XzPQP)Zn4u59cxbAs|-P77dQj5&9K4>zMUO&{9r u_6?R3@-D*Nj^+SviRjE2a~-JWAJIF(Ds=KIT)3P70000i0F@-9%R?MTh@)KK<4VX~VE%UG-5*{m1v$?S1CBW1FHI6T=2^S&gN0 z4j(=|pVRuB?Df+1Q-b=;_AbBP%ObGvIeWyk(rFu_vr>#^2Ipo)ukXCgIQydG_S<_s zg0y@~%9mcT-K(b8urR-(``ecJZ4%!n=C3bgTqAOAjeSCWeY~n-QTVH`zt;YnCwctT zdj?^Ktqi7W3|Wj>J`7iwuFPOq!MehbF@QTDnQ4L8f@3TWx(>aZ4N(nJL?}Fa<}c&s zfA#ZbO})=p$oS);F>Y)@_x+TAHDmJ>Hmw3oD2eAtN!NRY2CPfN7?ST zH@CfIzA@p4n`9HBsN%9KHi( tH%j*w9DjD``yb0?7G~)N5@ECV*ZzDbIXNVJDKIZEc)I$ztaD0e0sysye_8+l literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/checkbox_checked_disabled.png b/src/ui/qdarkstyle/rc/checkbox_checked_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..bad9677cc4f4a9ba26e86e1bd35dedeabd704201 GIT binary patch literal 467 zcmV;^0WAKBP){y%|5A(0corT_4Ei=P>zuR57S>V5m zeg;{qDpp$24W7pI zv2KsO&|+NjHxvSd03kpK5CVh%A;83WVAB75T6uS%1GocZP-f{&F7B?VJqWHW3<943kb>A!xnU0z3&CB^ zfrm-Nn|*zGzFAyat}-J55_14%{PCqWm}`Rgpw%d!`_uEU=o8VUgC_z4p4I>W002ov JPDHLkV1f&9!|nh8 literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/checkbox_checked_disabled@2x.png b/src/ui/qdarkstyle/rc/checkbox_checked_disabled@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..3c3ea0b45e6520062ec5dd12ce13cc39d62df0c0 GIT binary patch literal 845 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|V24 zPZ!6KiaBp*J9x3YuYR!xT*(urlZbjU3v;MWuE6!LE;MM<^ zeQAYY{=te1%c?f89{ln^(Y2a$QOlPAMFE4eY5V22q|WtOq&E9+lJWW6w0*qi_uagE zbAqJ9;)^^+kJMZ*W?Wg*G0~zyl|hg}nBm>mpf$`{41SDnm?LQ=$ZbtA0a!!wB+8dVw<|%;Yiesa+!^qrSly-!nf&edU)Z($6L3e z4i{h5^H33LJpAeBlFT3;m(vVxcOSPoo)6jX9LxZ6ri3#4CENd*Cpc8T7tP%C{nb6= z?4!=5%QrGTSh;$)z>-(OKM!V{U=Kgyai{hZ%b!i{ug^(~H_-!A&G*z*-@4D%T7CKUYORLGLvOw@1O57>)nj?h z?Q{2DeD~32`^R;Gv4Fc^G4lhl2X5>KbPx3MHAFW^%Q9?dFt=jJW6UdIxWjbk1;Y;3 z9T$mEShCk{!R`OgcS`=yb`W(qdlwi|Z?6e|H|6?13+TiLSMFNq%=fR-e5%g%T^QuV zeY+E9iF^(^<7a0?#Gn{ybV{4H{Wx13eeg=xAyv~1#e~IfpP9 LS3j3^P6(c1vXwO+0S`~=`bK$Qhk_w%ms z9*1k@et4QxQYJ_nK!z1x>zhdEBEd-&5E4*j<`g?|7;6Ow>Db-43b>lQ&l|Q$Fz2!p3egJ|87uU5%>8pM=3zm5uOKhnPm2JJsA*NI3eCLDaUCF z!cV}8T*Y!jkhbj&$e&x?l^*UOr5hvLO8I3HdH|qUk*jl2gNcjdJq8EnDaO jdj6Lh1JsWi&5XVQeF1vToxTwd00000NkvXXu0mjfH|DU^ literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/checkbox_checked_focus@2x.png b/src/ui/qdarkstyle/rc/checkbox_checked_focus@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..1c30bd1dbcc9181d26314fcd0b0139c7d1c0c522 GIT binary patch literal 823 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|V1b zPZ!6KiaBp*8+u0viX8v{{O1CZS&qVI6D|g7_455<_1fC~=)yt1ug)y1nkA(~x?0mb zme(axzKPl@S>vOMMY=MCGSgCOnF}W{pyT8-~DplI0qc+cM^g=c*Ilr! z6aKsLx+GgI$8lY&jt`$cen0)|{9XO~TR!hf0vXm=KIN0C@x9v*-d_4}Qu5jJde*$# ze63FYpGs0zFwRmuq}34jeG7Bd(%)7U%qQO6>{S1#{B+a*teaZ`{FZw)cDEmJ*f*m@ zY7bw+sZhIhS5`fK)qAm+zvH-2@u^4at7hD{n{t%d!E&xvq?s7O|5mrDMMF5q5JmmQ+uNz=>Z-Sez|y@uNF3m9i{ z25EW8Y)YGYsqxlh&IU*6cZPyt?4ORN9LQT}JV9Sga?c}>r%f0`vZwkQ)a~%v>(_i; zK8R!8*-P(aA0NLOl^XnZ@Aa}urc~XsZB~`L_c&jBb5{NSqq3jUzlz)cA8q7hNLc1m zs=0O9?9a7)J8I0g9rKy_VT)3uWW+i>yZoq0Pgg&ebxsLQ0OUe`cmMzZ literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/checkbox_checked_pressed.png b/src/ui/qdarkstyle/rc/checkbox_checked_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..4ca57646ab5cb5a2d36bb2154cbaec79c53308ac GIT binary patch literal 418 zcmV;T0bTxyP)Koo$#SD-ssSl}v>XuJT%BOr#xB`bqxsEG?% zLsH}nT)@NxuELLrx+|g2g&oo;KZ~|*?6;b{nauk-GfCfr|Bn0&)I0uJDBJ@Lpq5ge z1u(S~Z$50l?iHwZ{5yn)U1BK_0=?y+{rF3ub~`%PP+x#|Rqd|XOg@J0TN+s_oxw?o zLQ_QgK*drn%t;i@A`P_%h^ls1!<%s$i4D<*j2+h(fl+kDR{&OQT?1gvW|C&|I6)w0 z?^6?t3)Et^neh31y^4l)6D#gnyQS*-nk4CR&_4K}twWQ4K`xLBD{#7|%W-vwk=$;z#f6AkCP1f~Eb3eBtpY+KFVGZWihfu(q%a48~v$Mq!$WD=|4 z5>alA9NX5Wz!MN!if86_H6|X}J+BL=YOxhzB~KZ zz6Q6&nW-yQ1$KTd2v4hSaqws0Vd`Mq@o0GjuLwg5Lykd(ru^&ZgJ1SOa%GQ|IAHqu zuru=)z5}`ZD$UIsLX+xt&ae9Sb5CMhwRmvV%=V(< z_CC4KVRH_y|GSZ!PwCG7s_)eg&u{mSpZa%I($7u)w@~KHeCUW%PRMc6paG zDO*~$xiawkb+@eD``Y~djr^XzY6qZiSf)W zu7tz4G>rHwHAPiatt7WiHG7*Z!)Q=(@|N18nH@8Gs@^=a7BrSjU6z@B*3R5P(82E7 zcBTi*mtKic|yDe$XhR}J@tka|P{Eu)pJFo8D6SL1n{qR%c_{T**jclJC zs^6H%#4tnf{CVFqtA54YXRcd*EPbZncYkex83%)Z?o7|W!xpkVv+ISf#NT_ne)>$E zy)5gdnR!F~>UGkEx9{jRoIRa0`*McK+OzRxc8_!>1wHZr<_88(S3j3^P6T&6n^0%gls) z1Kf6TJP-uIBN5R6)&Z>4YKx^G1`AI}Bl~UW*+F=~W=XJPuyWIz#=WRIW_DS9&`8Z#Rr4b3a2Y^bcZDY() z9mct`7dg^e6TsVSi=P63D&(yLfVFm5r+HCIsl4{uC{~zXDbUVE#+Yx}@Zn7W3(=C3HHSyT0#7B%g`M{fc$J12|06R1XG&A2R{?zHb2Rh)6|m06-JKPNUKI3EF49g4+Xd23$9g^D+y9 zU^yF}-UM(A0G{V<%nQIdm)AbYW5upG5|Jm)xqYoQl~Th(4>yy7AXv`K-vDqVqml1e z;;x89nBUoO0QSN#e4Ph=yBQ@(@}=Ewf53Hz+(do1qf-DMNxlff@O@1+{}KHHS{a;V Ts6Y(Q00000NkvXXu0mjfKve?1 literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/checkbox_indeterminate@2x.png b/src/ui/qdarkstyle/rc/checkbox_indeterminate@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0d8feb94bff6c19c6bc39fcd6c154fc3abcc4394 GIT binary patch literal 1081 zcmV-91jhS`P)q$gGRCt{2o6Tz!Nf^eTYJ0lpYCv*O14~#(y?BU-hQ6tLS@AZT z!)C#Y$DnvfLkDbHu#=ey3z9#;54>b^6TP^5l8&bpc2|fDB8Vsw5AkZxN4*}>hMu0D zab~J!D%tc8=FnB|y#3TO)m=436_AmUv7ceR1i7xO*J`!P0A`5jG=ReZ%%LjlpAf(Y z#@OEgRt>{=dtdsl0rT_o7d1`01K@-Nk)vdTbAG*CF8|pr=s=e`X4|%-Y1%yi zhonjy4Tl(Gzgd=53xZ(1Q&2|(Y}n3a2#ixbN&#(g;?>1X_}{!FGel-<>+m{(|E?%R-@7Qb+0rY0DRxy)HH1t z+r9Q1C!@Bt&}IODnfL_}xy#GTpCoG>I==635|NuIo=L{F84!*0JLtOpM6$M#k;~;C zCyJ($F=;*EaQvcLt-g~fYLq0k6VZ`mOqu~LGrZmQw(o}&?QOHyGz0b(nE|Q=s3tQ& zwE)#*2B;RGn#=&z0#u{RN))Xd-XNkY0DeG^>y3Rt0Nygj?iz;idoSyKy&$Cr*tR_p zhT$_JDq;JtbROH&PMM!Pfa63|3d8W(!otE)8QO&na9vktjI9DVCqYlIoNG3le-w+w zZflx7A#6YxhSva`70ojMXD25ouZt#;@d#X%kVDzMWf<_IgdBr%Of-QE15^&B!XwST zp9f?Hs1~3a83vGq9LkVkz#9oU27)mrd~aa`i0Hm(jzQs^-xJLtY(PGrF9Y~jG*7<} z(Ld3>g%CEt^SoNK*(?HhDVnPfUUJTV@jS04nn=nhP^na2o2GdNz#@Q;GIDm{BY;KI zG|yBjmDe&7N?Q-`Jnstt2Y@p-H)oEGjY(Y(*xK5nm6erHW==q&0da;QbXa5)A=Ls@ zlNq2|fNC-WR0~i|W`Jq|s!21TWfCJ}?Ohcq+S?{*X$E|VUla<337MisNm4sw?0qt( z&46gX{SMLI+dWCWUcZzmdXbDt>jA5Y>syZFj7w8BA{@sVXN-A?;$+*}4KNJj5r9{* zqJy0ChkMC{*kCTrT%`H*c4(*Xx&}Uw*Ld^56I$9hd+BXK86^ zF|DHG5VyX*9$1zY0ysZ3S;L2j$SIXdrA`4|$M_%!g6Zk$=Zvu_?7eeC8=Ujma=HAV zTTtJ}<^W7ZyRLWLvAJlRe}O)Z&1Ga{>~FpTm~Kgr%6Yec00000NkvXXu0mjf_J;4l literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/checkbox_indeterminate_disabled.png b/src/ui/qdarkstyle/rc/checkbox_indeterminate_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..04d7da1d63db438fb27daf4af08c7b38adf3f358 GIT binary patch literal 614 zcmV-s0-61ZP)3zAtjc0@g(#MluA_;+t@=12|_=B zpx{9~vUhM@I- z8s@!u|KIM+?9RY(m;BywK9Rg^RWgWN1mYq2?4r75M00PS7he7mVDwt*zA6t}frTV1 z%G|b_f7AppI+4DjqA!3w6`dJyD*58t+Ltg~FHKFIE|nuGQCR?@27A?e6MbHiV&_0a zMQ7e^tgeJ%?5Xx3D?O!h|)B&Wy?Q3it)RoEBN<^6umd?*wSIs%B6%mZNd zD4#}w7%H=aB`UzZ!*YG6K;h;Qynm5JZu#Z-0tm#~1qd>>=ZnxEK-g=yxFTOW1`uVr zT>yjn{?vQ{PLxh&fJKFGL5*vjp0S7wm%L1h5O$17x?%#wMqSsx8@R22kAsD3v3rZUK~SxmsK8Yp<`q z3yf&aB56@s7)hkXF;4#H8Ll&pO->J$Z8;_AW562GoEK|#G0D-rwb67ji8Mw(eSH7w z?787}RpN+=0jI+8l^s+!jOgucclAj)HUAa;0Jhk&K=5S;`~Uy|07*qoM6N<$f{CgV A!T0R;w2oi7seM zJVg&%!HZ|bV-8ysq;wAp`xmUcc}xJJj$^v9U# zE`WVfrL~5A%ygxrJG7e3EIh0hRMmiEXZm9R?leVOYYBIBhl<(E!nE5(*H@r7eBqpB z(S)P=9f*D^m1ry!Y=0S#$4%){1&BtYzGu0WE?wt-Fy98S*M42o_y@Pwp~3*eF!a3U zf9!bY|8CQKgENzfoP6o>=?h1KYnFKrz*$>$I>3da&W=%Y-kc|Y#QyLMye+k@{kUBo z9sp)06S+3cHwfUJt@_CNNVb6r15h67zCc7nk0&NxOV-$QW+oFkCJZ^MFFWJh4Cu8N zN+lYTDXf*4B`xWw>T$-n8PI7jgo5oaWr}JgF534yW84hbFvHtwy?rCNXs?*Px*4#e z@C;BbKsBBLss*UVGeETf)p!P|7N8nkR-*E{;hviyz6wS+>RfMZ00xi&=(hlW_@$op zzIu@I3+OpJ(3OXO3gD6TztZg}PdjCP+5vnA@JJs1spF?F9+073*Z{*YbT%;x!YLVo z>Vj~}^qGG~qtRMxnsp&;zB%Wi_ zZ66lRAfpphIg|>IG&_DC;2EG=fNEqIz!GvOLxus*CFD@nwuE^A|1O$CpzXV&IfM-; ze&hccz`vq-8ij!Q^|pl&HXt33uUaNWL3kpXt8NHSOp`990M!Ci<7U8y*_Mp8cU8D(ub4@? z8Su(pc$Qn~k}0Z{xM*K?#<&?UYcJ?J_sbO3N_@IC;Ha8&#<&?Ux}n5;yDuCGO4QX7 z`ofVQF>X1kN1bsM1_Zc}0O6^vYVVq5-rG(l*fvYscZ{b4Tu3-$8`>_> zCS_P9x+o7w%@s-w5IXk+&}mKs1>xCV{<(y@4DWK$L5w%9_s2oHs|5tv9tLE XL!w5%9m2vM00000NkvXXu0mjf*z*Hw literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/checkbox_indeterminate_focus.png b/src/ui/qdarkstyle/rc/checkbox_indeterminate_focus.png new file mode 100644 index 0000000000000000000000000000000000000000..f7f6d714ccb84189bc57aaf5ee57b127429226e7 GIT binary patch literal 576 zcmV-G0>Ax)@f11p^egEIi zzRAvm%Pu)TkzL$;V2!${&LB)C;-c&zvSzG!)#B8b3juDGz7;#sOEJ*QZVY<`? zF!}!LL&bas4iw3s7^xi2Pwge)I`Lui=BU-2pk-jfSo0{{iIFf!xmE-fMe@6a>6Ijm zLj^Cgk|}M7sC=?UUEnEzX+^2d0Gt@9Bx!zDe!~fJ>%DO96d)+Lq_(}2e!afC8w|7U z07KFhz|a9kq5^K0zo+*7-yZNx&>J!H9xAe&cCNcW@^>120o45ZJAt{F#-Y-J&eagQ@Y5CKx7SI)M{=}08Yvea?5%+*E$8pif4^J5wx5sZHV7+DrfF+eQA7Q zE90d6oTz*Rtg+&SYn>VskHOW(#f?d*R%_P0I%m(X_oyn!dZ*UxN`C>C6Q#_Cf9+NP O0000}b0K^TVLZ?hnRTg1KO3ME1CH{=W^8nDK zfd|c7))g?9{Gw}0Rn!^BQVhCQ8Ew^r2>aK+%Fq0Ke*a})eNb>?uXRuZ4|>8sm~mAH zKg%_~pFmgFoOHD!WV1E#&pR55puEE=VfOpNAjN>%>u(!$-Fd=5 zhxBeQW+wqR>J0Pf+->W`^o7J1(S+i!Kzc~mb*G`IE}kuV7I8SxzIo-Jb**d`&za@j7LK!yP-r&8e|cg?Q@A_G(l zP>l=&SV9hE$S~legdEDAEo=Y*k3@3_Jo}+&4q*fG1??t)QPDi*!>{L`Erj?hkZGPJ zXYM!ymT<0+Fkq46bRp9`E1FBnERet4I&Ktec!)PT2bS;yrGl-AgJx{{B}JER?%|K^u@Tz;Oq-qHW!!UO;?Q_8-S z=n1MTxemx**xkcSsmjT!3e3P2`(pF;QVqggngaI$Xp$?) k`wC#BoNIFt5fN*f-|6%;oEhcX%K!iX07*qoM6N<$g54zT6951J literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/checkbox_indeterminate_pressed.png b/src/ui/qdarkstyle/rc/checkbox_indeterminate_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..31220be5dcdad4f369e6bb2b48329d935bd80464 GIT binary patch literal 563 zcmV-30?hr1P)gz_*Cp=llS9AMIFl+gACGjBv#judRAWJP4Tcj^v+SO2m``2@w0 z!hfqSi=md#B1-ns01@t;_#%t|pocN)_hJJmPW!UyiiG~uLIKilx{Bx;a56&n38HIh zH(d=ghHk^p@1J}FmRMbV0S_atnN35jW}-Ml0nSyc8HiSN6#Wmo;0gik!LI}4xWe3p zR&F@#1_5jX%rI3L7eFedw)T#lJKqJ4;u+zQh}3iCru6&L@txsf$z5pWQYkG6d;pB2 zc=lRQW8yKswQ+G{V&!Yi=J1_fW2y`61hr<@`U%JamVQIIcQpV2002ovPDHLkV1nm$ B`w;*D literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/checkbox_indeterminate_pressed@2x.png b/src/ui/qdarkstyle/rc/checkbox_indeterminate_pressed@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..8d112b16f5940cf2ea0a41fb4b0a74bb75298b45 GIT binary patch literal 1087 zcmV-F1i<@=P)B8ZQuQ7*=4j2w-R3x*qb z(5Q{Yn~!*-2OCTb>cRN9NGJjc7vN$HUeJWZc!c;$@SrBt(3nz-7!&1D`gx$@c6X~w zXW9YTU&3L&nf>-Z|L*P#lNrFp#bq@^j#`C=^s?w!J%LUD*bkr*z}kEY%YhjHQ2@gX z?oCu~d5o4r$$wq+PXjgtI*)3gy8w1e5Lq|~qbcUglVShUzctgcS21}5-9ZgBh?UlP z0ASQ;puw_pUCjVz{h>YCD!hShK?YyXkGjG^gv0ChzMlE{^3e<1db?oyu^%*rzcSNR zo#;vIThS-f;%fj(jnygeF}v5nYCvd6FONpvAoH<*reW^X zM7Sv?TX#OF2(bey z_6(Rp`z&p2uB$W_V&95B$rM#cY_wOI+t?Y9Im26SU;CwC)oz)+{$(PxI&ck8EkHG{ z0jdS4#x+2-0M)n#s1~3aU0SBlkX|+(xk7}q0Jg&EdZTj~z!)<+6IGjUJ6Z2@f|Mtq z^n7=E9-QVk5e70%@l2Hui~8`0l5E1FBnC=hS+zb{Vm0V1>l z_$(u57CsZ9wK&NK;%)x-G7?H#4;bt6PXh=72yVY{Z*B5>vDEbdz4$wSxPNg50OB(9 zO3by$Z=ovzcOs-(fNER=R0~jzYk+D2s&NfaEkHGP24qfRB&@wF!>ZjfL9;U;YApCl zrmJOYDkL`A$IWf*3>Y>RlFW57MHP}1%^x>~M$Bz21~9nSSSI3Y6@hl2WNmq;BGB$* zrWRw&+&93+fJEh%#{k|LLZvCJ=~+o87&c4)*)dKSP4_K>C2f}{;*iFkf#tkiK1K7# z)4zO<+vU@E1Kt0{fe8R$MljKFw$-jK>pUPHKHbWUVE$wk1ZHq^qT|esYz>?pnj*Rb zMvYu;dB)+Psa%fD?Zd*Z>*aWCZXCeKQjX2JxVWrtegQ6dG>^RSEz literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/checkbox_unchecked.png b/src/ui/qdarkstyle/rc/checkbox_unchecked.png new file mode 100644 index 0000000000000000000000000000000000000000..4e68c78c7eaadd2e3c696d2a96602d307dd65663 GIT binary patch literal 397 zcmV;80doF{P)0#3jQH~}Z%R|`oypz{lv0kEw;PFu3f%)%&&dQBxC{~elH zb|D~X3ABCRUpFB!olb9#ZF#FK%T-nXGMFSu@&r5p2O#I8fvkf72!R&Y29t_7jt8FS rjgPH!_k90{Y|Shy%W`!-nmOJ9Bb0qej2bl$00000NkvXXu0mjfRwbrq literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/checkbox_unchecked@2x.png b/src/ui/qdarkstyle/rc/checkbox_unchecked@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c0c4ec9c5575c62fde28ab6a9ff5de0a89d9ef9d GIT binary patch literal 828 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|V1L zPZ!6KiaBp*AN0EtAky|f_?D=(mSDkqw&Us(whQ#A9LnoZThOgoZpGh_You)`cync^ z+JWc?!Uj8v&MxRoJ-*7fzdQ5et(OKJCFe};={`aKMjc$t#GjD$@|6}=izs~8Z9b31SM$LL6l(98x zv*#ok#vPN}b`{FpKVL7g_D^@;V;#re4-7w_UM0%Uu<}`WRK~e&Z;#f*&1ZZWI{l*O z_FC1Cwf~J9`oyI27^=S498)~@|4cmF;&A6l-=j zmpcA-)o#8j-rDPR6B)O2B{ytg$n0Uf#I(ea&4YWwF$o1-2PtX@cJXwyuLO$SMS!bUGaUODO z3VOx4VqWl_Eq{B|+EcQvXV0FUxh2_VvGnne18*L6ZaWY<^@X6+V?7=M_><1EW)mi1mE(!Z}F#5p# z+j0zLHTUZqoAy0-6jqjLd${ZMt`jo@m;;no9dg@|@chl29A@TO``Y<@HJ8p4oY?=0 z*SB=$&E4NFO!2dF-P94c|F2C|?DfYMX5~%yLbuBw|M)NT*fU^ieEZD2`~HLPE89IK Qf!Tq<)78&qol`;+0PC1@x&QzG literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/checkbox_unchecked_disabled.png b/src/ui/qdarkstyle/rc/checkbox_unchecked_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..9fb0036caa99a6b2cdf74c0637c1ed6814416243 GIT binary patch literal 386 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv(mfq~J) z)5S3)qV?_djeds$B-$Q+Hy3d`)pY$rtBc1gu8Sc`$D|)^bU3tt^T>@E8_F-V zEd74KNp_>k@rAl(TP4-qv}}Q z`Ta~)e`l{0D&>E}!qi%&zc_ZnGA8Z}jT!saPUFANaQEL=fr;u5QuAFNZ+)J7O2hwh z;hZvEBe4Uj20s3eR1TLk#)>{=$UcAjO>YKI4MX0pf2}F_)yk`I3 zQi~_v!h3m0JTt|K$ zeVb`C?Rw+Sg{HqR-AwqRVW22Cw>hOjM=?q0{hqonNt4v}&3Y)*e{Suc&+%#AHE%xu dx$5&=_{fHMm-9T)tAK&Z;OXk;vd$@?2>|bZq7VQ8 literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/checkbox_unchecked_disabled@2x.png b/src/ui/qdarkstyle/rc/checkbox_unchecked_disabled@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..8d6c0edd4af7b755b73cad183dde103b8163b43e GIT binary patch literal 875 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|T?H zr;B4q#hkaZ4|+>GiX7W7el3PYf33vVd*0a&(=U0qwm5MGRt0&t-iltzn%ni-|qKkb?*P3aq@`) zzkvkLb;(^P7Nn?M&RqF}#kgOvfZai!K|3b%e-BeYQo{6(Yg0nwG@lfypH(w8Zg_L$ zgoyAxh8KHtQY`SQq z_Reb$^M^m@HM-9HkYeUredMaP*su5_Gm=6T99w=T@Kgj{zB84fL7XFkvr#+2z}Cw3 z0sp)U{!HhsqNU@T?1T(Y_@&P`$Y4Cs8#Tf4eA%{Z_P^L(H-g+7YPIii&H4WdODFl& zeO53zshGfT|0eac7Q>F0ZC}d7IeY(s^|#hmFcf^6&7M&8mh)?5 zYIcnLbK{1Y$6x8UEZY6%_N4sVuje~zT)Q`O#ZJa|mhaCw$X&euxxV?X6axdxoonnr zcn;j0Kj&7<;t4HVdDgbo*~+Il{LSdO6<990MXKg_-2}$#T*(bv7&3bpFEK4KWb@#j za7;o$*FlOJf=xUDUsZx{OE0;)pyp?T<xx>i496Dis$%yzcY>F(55nHT-i)i283ZhTWx_G!urh6TID zQZCd4aQiN9%FwX=Bv-YaVf9+h~(m>7{ggTYYW^0u_TV8Q#HfyX&6 ze|*?;JF_tF(9L#s35LQgV$8qg&M7=o{bM!jYxERDIEGyuax0tYuz2v-X!< zo-!R2y;Ii~s!5fvpYvULR&Mcco;QM@S9Ptv+P&qhBv0Gxv-vW?PyaN%<2D869tKZW KKbLh*2~7a&iiP1giJ-b)0#o?|5sBR^n|n+is9H1|eq@=;&_0hb z$w^i*^FQB|wk;19q^tL%U9WAi$%w_#KH5~g1f?iA=ydwlio z*Vmp0cJ7zpy2C7eL160npjWQv9by(V8vXgOPL8|b^v6BRJNGc;Ps^%*xix(0l;xSd z&-`?ZSo5+}_Wt#}vPo8pIU(59^1!9+^*UGWHuP>}`~8(?!|r0<)f)CL3=0>`Wn$Ri zz5Da~MJ^7XB_8-EF|Z}TPyt6r+2!n`f;kDX3>^XuJJw#jvvQU7-|eeC0$4JP*rYa| z*uvHF`OiJCSxWYVdVamZz1?jlp7eh44$rjF6*2UngIP8qz3>1 literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/checkbox_unchecked_focus@2x.png b/src/ui/qdarkstyle/rc/checkbox_unchecked_focus@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..ed63aaa3267497c11edcb5114bde7b45eedc80e3 GIT binary patch literal 866 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|T>& zr;B4q#hkaZef@<4McVEgYe+AWUN)_NFZa?7g_{4F3?_A0cd9*LpKw6`LWBde+Mys{ z6~=$8dN;QO-`TP3M#_x|8w7W(?{>1DE2$yWcKK9oSoyoXm-l^tSyNKTpRh4vopI4T z&zCvt&N{Sl@EmaD@6cl~7drQCy^K>pi=$&hDSM2r@7K52tzYIaF4=PasXNOjF^A`= zs(Y2nH0Io^z5JV3$tL&GOQvb&`Mavub_?{V3B6yXFzxT{`eO#a9w_8l{4-KJI`^}k zA}tpUDmH{#SStxe)HP?;pID*``15w>1Zf1yI!X9iF;~wT+Nm(Uw*BB z|5iof_oYJnKW~m)43t|?eJ3ok(p=mL!N_c?Lz|_x!45@B67W~W=4d& zzm?h{E7#9upb;|r4SVIfSxs#%BFx{y`%|@TRFxbWzB*V>o~6&DDrS&)=jNZq56%@9 zZV;O%Ecl>dHG@`lbLNhU=ZmkGY&^zMIqNRJ6W@|n^WqK zyk^PU(s%s8PQl>Yb6RfxOI*UO^I3y^2A{O?@`P6hv@WgKz4oroBy0Z98uwilgt&q{ z85@Gi%K!PA#4$Ww&rmPKy@3IS8e$J9&5ZlpJ4498pV4Io!@ldBclPYs>-S*MD{U)J zW`o)X8d1j|+X&=kKT%DtyeOFd;pXnim#;n6ePO!6NyUfl#C>-k&QN&`xtbX{OW!V# v%Dm$1_WaYo@A7HuUK|lj-|*jLb0zyT(;U5*w~hA$Lz%(T)z4*}Q$iB}(}}4> literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/checkbox_unchecked_pressed@2x.png b/src/ui/qdarkstyle/rc/checkbox_unchecked_pressed@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..2a4b99a3e4e306d15d0c20555282a7dbbe6c5380 GIT binary patch literal 861 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|PU^ zr;B4q#hkaZ&-(>CiX7W-%<6S$Qg`dF^5(CcPjp$7J)b%2$!YgAr#X)CkBo!N0f!Bj{>{v0P;Kzzs9B+vwLiuqwyb(ZH>1zunKfM<_DnM>B<9*a zp3^wBdu|D%!aI>GHyc{dI<~i8JGe!nV^5spo|l*2tLEtb`xyOhL+?zPz27AdIGxrB zP2D8pC<+$;gCD!2crr)LS ze&^oSlrgZJc}H3)Dmh_`CHE5jvS**tN@gtI-KOU*! z;}G7@Xz_Jr(2_;-X3D#z+O1ez#deQh?(^?DZ#jlLYoAzh$lC-L+Q!T^dwh#$MQmxW zVb|8&`}23)ewoiBBE5fRXgTw%?=`s-e`@?m|7X^bZD}&oM7f5?VUJ-#fF(!d-X*5& zby@3vOJ3L`b-3*6U3TU6ZQ1wFH@LT&Iz%;?Tw};&ycEH_gw-RNcY>HgFEs?~*ka7t z*8IM&pxmBad{_TqP_n~=2!Taap4ogQY3qJVIH>ndRGY>0!_SuWVav*C&Xa?U7oBBb zlE2q8QR4KobfzG2i*q&awr($);~_u8Fqdsb*Ddx7Yk1Q>{F?lx?7nR4#+`Qy4c1mJ z^LnLq>25=jV(G~PUEgD+nqAd5Ti=#H-gxrln{%HSWSJ$h&oQm8(>0M5N-BC*9DgQH zkgcohXNTj{4WSb^wJ8<&2>Wg|@wsxNp#0MNKd#a0!N%MhlfER6N5#L z>J=7)6Yu5k7KEnm48B*46_;-xxqcU4 w;%%9^j25bw*k5TC6-?h|*?siWj-TB3x4rv$=2mndFuyQ(y85}Sb4q9e0Bt9Do&W#< literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/line_horizontal.png b/src/ui/qdarkstyle/rc/line_horizontal.png new file mode 100644 index 0000000000000000000000000000000000000000..a89a1ed1dd594c759f9eef2f3f2c54181e28d4f3 GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5D5&n~ z;usRq`u3b7BZC6Z;RB7YcCky|eSFTrh?!x^T$S~f1+xno5?cAUcQ9oi=gi#?)WYED L>gTe~DWM4f7*8Mr literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/line_horizontal@2x.png b/src/ui/qdarkstyle/rc/line_horizontal@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..3c6899f149812308978d4924c719a3a179c1059a GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fAP|(uT z#WAE}&f5!(oD2#A%p0$-+`ZRNk=0YpA`he$2paycRaq{3am#JST(&LD5HW@ad$|=J VGUfZu`YR6-@pScbS?83{1OOY{BDeqm literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/line_horizontal_disabled.png b/src/ui/qdarkstyle/rc/line_horizontal_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..b89b2c927890c87b738e4ee2f227048c5ff0bac9 GIT binary patch literal 121 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5D5&k} z;usRq`u3b5BZC6Zkpp6$7B710Z519%zT;5|WpIdiZ)tA1VNxN(18#l}J;sAs(r=uA P+88`t{an^LB{Ts5Qt%%+ literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/line_horizontal_disabled@2x.png b/src/ui/qdarkstyle/rc/line_horizontal_disabled@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..027a03064f74c50c100789a78a3dd4ef00c3d041 GIT binary patch literal 139 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fAP|()X z#WAE}&f5!toD2#AtOqZ9n0>hYuX2ybCx z;usRq`u3b7BZC6Zkqx}OC+1o4H1<56D3P(6p<%YApr^6ygfs^$h!_LI Yz3kE=rpme$bt907r>mdKI;Vst0AyVvA^-pY literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/line_horizontal_pressed.png b/src/ui/qdarkstyle/rc/line_horizontal_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..c4587b843c4460ad11ee30a1339420264ba7b560 GIT binary patch literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5D5&M> z;usRq`u3b7BZC6Zkqx}O9&-%lH1#~5D3P(6p<%9ULYjjWM2vyq ZUUumQCiyk{^nZXvJYD@<);T3K0RTsjBAx&M literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/line_vertical.png b/src/ui/qdarkstyle/rc/line_vertical.png new file mode 100644 index 0000000000000000000000000000000000000000..36c7ddf2ab33959b88daca7116263d90675de3c3 GIT binary patch literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5C}`s8 z;usRq`u5yLK?VaJCd2q;Y1P#nL9ePU&WfnsRJmQVC+&|iP#qFzVD`Gk%6mxhu?a}f M)78&qol`;+06TymRR910 literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/line_vertical@2x.png b/src/ui/qdarkstyle/rc/line_vertical@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..573c55152f05a9c0ae7a7e8171010076226c0591 GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fAP;iN- zi(^Q|oVOP?3N|hYeEyt11Ko-hDlpb7aw)d28mKJ$}1Kp9!cK3H&gA$-MJ^ RKGP16n5V0s%Q~loCIEn*B|-oI literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/line_vertical_disabled@2x.png b/src/ui/qdarkstyle/rc/line_vertical_disabled@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..cf615a5c9385786501aa6b87a05649bcc97d0819 GIT binary patch literal 248 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fANY2y6 zF{EP7+Y5%G4F(KH0=kx1CAjGu^KA$Tlc{M-+5Pg9k=YTOb6@YCujPHXvHP-pAcO7# z%?7axA`aXcTnkuDST8WmV#;9jW!%!Rj3LS)m{!uySOY(@G#Eele+KAk22WQ%mvv4F FO#te?Oe+8Y literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/line_vertical_focus.png b/src/ui/qdarkstyle/rc/line_vertical_focus.png new file mode 100644 index 0000000000000000000000000000000000000000..b81bc5b0920ed1dab32babd37f14cec9fbe24716 GIT binary patch literal 134 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5C}`p7 z;usRq`u3cmAcFx1i=&#zopr0HKQ^KL7v# literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/line_vertical_focus@2x.png b/src/ui/qdarkstyle/rc/line_vertical_focus@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c474ed9022d4b4f72ce4b2aed0173a025e1222fd GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fAP;j-U zi(^Q|oVOPYMH>tljs$eIy>gH>3TWrEnIg(QU-4$%u01`xhU=?qzZc6nSG;-j#b3mM zJA-Qhs|o7`rddoGjJ}Lp8kR9cIRrE4F3@ZcyFfGPO2$}2mIi@#lSe>jGkCiCxvX%J;m-0N^*nQbPkU@8W zW`o!T5eM!Jt_7?ntQVMOF=a6NGHz*D#t`KYOe^VUtl<+`8qWSvoCtI^gQu&X%Q~lo FCIF~2OCA6K literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/radio_checked.png b/src/ui/qdarkstyle/rc/radio_checked.png new file mode 100644 index 0000000000000000000000000000000000000000..3521990bf5fa9df28896603370425b2ff2dc2f41 GIT binary patch literal 1224 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 URTF31YybcN07*qoM6N<$f{#ECzyJUM literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/radio_checked_disabled.png b/src/ui/qdarkstyle/rc/radio_checked_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..6bf1e26640aa11e642e4eabc3339aae6723ec710 GIT binary patch literal 1325 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 literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/radio_checked_focus.png b/src/ui/qdarkstyle/rc/radio_checked_focus.png new file mode 100644 index 0000000000000000000000000000000000000000..a74da487f7dfd56b182ee3966a00f05dd6eeb152 GIT binary patch literal 1293 zcmV+o1@iidP)E+CA+N|*%1kQfrKFmZtiD2W8Flt37Cg8Rk8!q8mD^Dt`G-0w&a-d(3ua?**2|OdUY8!f{*Wsx_*o z<9_!TlQsIELMviVR?Ey4Wf4dT0Ln2dOP1gMr2N*f1r&JwQ#4|ZAUq3npm>7ao!?P6 zD?I3sJZd@PeD8s521*gGTUZNkSGg}{EMTJ7S89x$0d)`#o2)S(cCDFucTnOKOlfQz zbtm+2kHB)^zKD4xQ1yJvkOJ}=+j6bY!(V|iMRs-GbFZaN%y7u#P?h{0{#p^;0<>eh zW(Gek>qrc7rS`Ex4|ao;fi$Nh&ueHcwp3T3%tx367~mShQ7qT~BmxobRIPU!{H35P zh=dQKItLL=I|Gilbp}Syq68w5(9}D%GyaY{J!<9W_}7c*7r^KN#(ZB?J`1dKf1OBz z$Di$tGZ%qrB2)&drXPzBIH|kQtx@5!DV5yGX+02|%7MrM#;WKpr@^-e)xN>ixkHM4 z9;Ki@(H9rs?7aLq@CMKoxF`FPW@cRLMuZOrAx?k-vbvzbw`}07Awpj0Z(8p=%=+ zfL>2*1w%cB017vIFSx$Zsr4s-r973C0**04C{|KmmzYujLE3w5eF8*J#hmj}l6*t- zx*aY;E;aiT4WedlEbGbs0>a_uD4|rc?_B)Yb**z>Mra&1y~vhZ)fIgwN>vmV0*JAi z`UwcGfAJ=864c4>&RUU}E0`0iK{Hrh3 zTmE+Hb39@DMYl_2wZeR064A^5nj$|+#Ow{OulPM>I>g!0x))&;a4J|;K6_9Bu{!WK zU>b@y*j-*dU_o-|Q1qNHSrSR>SC#yR)@p%mz)d3ImtspDN7|CC!0Vr)#+(821pR?A z_Oigo?(VcC1Ht3Zc5=;bl$8h%5P2=Qw)|Xb*nmZ;({SNw)H(t@1Kbc5PoO(^Ad{lB zAjkiX3Y$Tv0__-G6s)N@pDujRvV8o`mhpDj{#Jx{W2Sagn!y}5wq6b6>ae88*b%$X z#*`SWdB7rK?}rE{h*--4HSWI#;>hS@lDFOWvL)05uVxYtv=}3`T{Yz=h6)_k*Q{`7 z%j9s_T8v2aYX(Jt4YVuLj&d5&rp|TKuM8*eqm6$7&ZORc@EJ*n00000NkvXXu0mjf D{zF*^ literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/radio_checked_focus@2x.png b/src/ui/qdarkstyle/rc/radio_checked_focus@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..3282d3e7045e50e1b107a9ed7fcc473fbe3d2ed6 GIT binary patch literal 2736 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 Tag0vA00000NkvXXu0mjfm#8n< literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/radio_unchecked.png b/src/ui/qdarkstyle/rc/radio_unchecked.png new file mode 100644 index 0000000000000000000000000000000000000000..342825717338cc38dd3ddd985ea36dab4b4feb29 GIT binary patch literal 963 zcmV;!13dhRP)h)CP`<=jGLa-;okGk@4J_G?>QH)cauSa=jZ1qTdmeH5jhA<0tLVT%RpU3F1A{& zg<7rl<4^&L#o~SuiAChGKJ#8S#spCmeZ3=qQmJ&4h`bFvmkl+5MG-kGB1@{;0GxAf zH?UVk4gu4^o-Fy3|(zXhBGR)L4&IKFaC0BdbN zNs@1Xdx1AR&wDitLpO+ccYfdZeINqr#+dz46g9d7%*HR0BsralFYZtrK;t-$f%kxd zbM7NHEc!nH#bWUR;5hKRsvh5=_&S8=d9MIhfdfGhJh3H!F{TWls;^fnl|P3d4nP=& zsff&HxnsI^VI5#@ZtgbVaS{0=m&?5~Eb)$&%jE^yyKrBrRJy+hz&UpW5LNv=48wHT z0D!9M82}M^ss{jgG>iIj1ma}EUuEur%>X6=j4?lr3IJFFP}Ra_0EKL_!H8^ib+rK? zBDa(Mh&}hf|7F(N9)M+ltgwv4^7(ux_e$rESqBi2UjU3TcZ>=^Ri`qy-WlsYh8HsT z@CX480f@-?9spHc%-knuW@c_2fxf8f(F|ar2cTN5t^ntOT@w=%FAiHh2!bQDi`)-U z6s`9L8&83s5n5|)epuqx+A&q_)R_R#O#$LKz6^W}+?piGht}F*98*ct^iA5Uzfh@E zKI@+B5m41m>6~sho3$N6NDu_Csp`wXigWIHx>gTcw`BW782&wo zvbA=s*=(K`k(YpfoO6#`e{m=&F0f0atgSUb}Kd= zMbUSg#c$h|TWfDllH^_BnQW*oB8$$sv%pfCrj2|)@6t5g?VQ^qB8O?W<(&)X+}hgO ziCV4p>sA_lJxqcicrfc^9_}X|xB~cb9G|;Z;6P6^-}m>5$T3wt2uzAdK~-;{y)$)H ly(l6J<#PGzAbGEE`xk5uU>P-3q3i$v002ovPDHLkV1gFhwaNeh literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/radio_unchecked@2x.png b/src/ui/qdarkstyle/rc/radio_unchecked@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b34782bfa60d4caa9e78e978743050c4babe43d8 GIT binary patch literal 2195 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 V00>-870Uns002ovPDHLkV1kw*8D#(f literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/radio_unchecked_disabled.png b/src/ui/qdarkstyle/rc/radio_unchecked_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..1205d7fe6aa3390aaeb546ce2b8d1e67a0bd15df GIT binary patch literal 1040 zcmV+r1n>KaP)b-KVq)|OBMJrF9MG``Ls%)sxL{0>Xh$_JOJ7w}nI0gJ;Qnvoe*iiJ20>^y5(&a_-J>Ww0y~+9`uW|OQ-3fekeYe-&rRduNF_Oun zk;~`fs}s!nE0z}>=KvR~{kwz%Xk;|hts{eu0l3=Jvjn^WU`4xGbr&)M?)sJofJTKI ziG3v>sY;*5GGm!pt6>0CTJj}eQ_>8eFp?#p1+e!CXA1QgnUceZZvuIZ2NsSBK4}7(#C7oBpJ@Y#u zy8?m2qU#IifLDM8RedTN9=x(X&#}?P@!6km9C+yAuZ@~!px!CVon@7e+6JD4i4G!9O-*Z0pCQrqTbTSnURmZzms-s6ba_By{19 zsoN@;j>Dd3Dvfb;pfrJ2C{ixq5Qr(n1i6IL8wrP|cT)H6j(-828(x}aCljOq0000< KMNUMnLSTYJpx%f8 literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/radio_unchecked_disabled@2x.png b/src/ui/qdarkstyle/rc/radio_unchecked_disabled@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e050feeb047fe6cb6d615aaf4ad05e7400a331b4 GIT binary patch literal 2294 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 M07*qoM6N<$f=c}?+5i9m literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/radio_unchecked_pressed.png b/src/ui/qdarkstyle/rc/radio_unchecked_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..21711dc7fd865b552afd6f4bfb4e99aa8ca2646f GIT binary patch literal 1022 zcmVQ)RM;j+Gibfr{a1$B;FW>SKMDq@4jtd1k{Jb_1mcK>laDqG(X%v0lylX*?A=r`eE4s>jHyK)^RQZKG4tY4bSfB6L0>tr11i6c;{g0 z)qmF>7S$jyBP!1&20Jd_6QHtfxZISbzeU-os-L84e|eXl9$Sd{9jR1>qTM2V1jI1T zreuG6JU7EEe8rSy4xwxW##UwyAetKN=miFVTC5!goj2%t0KVX{XHabi5*c%|eP!l% zAd=V0-Uh}&w^Z*r`tqUx7<&LfL_fURzxUe8&0U>pomKRG0E_hIeudirzOLhs051X4 zi9a9cE1J2h)PR2k7#DbIT`=-=9soA80}w>Mn97VHCg`^J+c-yqE>CUl-pz zD^>fA3$rC3K&b<;YJOfV08fcbxR14Y0O|(4UK?kX^q}YOxxUxWO~kx?;D1y2gZTg= zOajcNsaY-0pEdViWb6wBn z188~-K#^DI>hl!eUPVQB0th;i2at?}ra;aCzA9U~r`Yzs&gc&Jkoz%l#DBXsn70a4 zY(iS_l-ll{T(@0Pw~Szh5Es&GoAU!cVe#egwXPg^4sX`7CljAI=yHI6#<7P}p#nQS$T z2xqvZ9f_lX-xu>(*2SbU7=6|l?FF7+PCjtiTDqqr{xkPVEa+-h^VU#9I?XObwz|i6 sE#Lq#MPsO3z|oOZe_*_je(!Jn2OJ?@GFZm_F8}}l07*qoM6N<$f@RRwn*aa+ literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/radio_unchecked_pressed@2x.png b/src/ui/qdarkstyle/rc/radio_unchecked_pressed@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..1a1b9c2e3713ac8789eec43adb736e2685890bb1 GIT binary patch literal 2197 zcmV;G2x|9Kp2q7ui1Q=i>s0 z!_a4dIbOv~2USjjtnFy1+~Gx!7;*y2YPV0Y$a@xeD1*!beh+dGwT`RL_nskUCp}#B ziJBH#sD{7D6001TAu6{bdqBT%b)Kw?&Bv9tAR#@LL`NWf~TW4h(I{O5K!$xUa`BSQ_an)Er zqlJH6XJpCgtm6& z-rTb%|K`7RiEtPH>CH37i-ew6XtHwx+k^Fuv-`WY z-vk6k@eDB8Mzvv?_nwSacV}-kR}j4+KfXedKiJ3sma(1i0e_||GbW(4zWH`hU1p=y zLcbnstZ5sH-CW?^7rx!&$~=n z2tPgBRP+8&4dxmrqt)Fa>by~^kM=b;NSlDtP}4+|FWabuXyPgFY~~j2=L>eCykny# zmlb#4l}?*B0h(tl#x_Y(^wr+y>l(rCMW%}Gwo{f`Rq3SZ9|6?`jL4>kdlC_Bj#;(&Jup*t-IW#W72y^0ei14Dj9eA7Pl@X0m*>%1t4If{(Np*)hV}b z#G`j@z>V#$HzBu-D#(3#v}<0<+wjlmsZ&jShiW@3=MB3Vep?^saiN zTa%gqWtyXG$%udV_XSNjy$h7PHEG@gMxjeE?BDucp}^%`q0p^KlK^#!)XZv)Z6x7j zG}HqmZB&4YR{H>-W)O5Qk{JFG@y(wrq?-s`bd*$6y3MtMX`$#Sz`h=Eh24v;*fl8$ zu+X@(OmS}P zVcoo>Tb4cnmeoSOFm7h2XzFAxo`GhA9bBT)90Lu66lqwt3b$`f^fR2W$ zSH(FP27LI}df_pbC>eLT9_MFor>ME5FMWo60Z~OCcQ8U_ur`{qt~OFIss3j{5q-i% z{~*>_lQISV7#a5lW0C5Ei0pLf_mtIcpD+ZUxj{v1AYt|V0_Pc`zs8K7O_?t1cX!z5 zlgDtbu1+-xy!fe=o7{(^{;LQUbv+MqhmA_8N?m`4D*H{qnXQ#)E%a+Z&&Qmgx1H-Q z+6+1@XN~(qNnP_Jz{7SIdLg^f6G z=5w(~Xw^U>WOWCFbjY|IclUW9hHT5h_{(!J@9sK#ju<`s6Y868$|lxOFyY}HWx;V>zs1#f;B7O>0|RY54CbI@ zMXN7Z-1TD=cNa@2Z1MYz^=GzLp3OS$05D}$Ykv2|e|-yN4RC{_QhC|*^*nfP+wu$9 z#2oY>R$3daQP=|HxvDOKK5Jdh+mOwH#f%6a@CQ$y3L&}{=Xs@GsBVbG3s$pxk(q7i zA&ugtHPN{UFDjIzsXiyL4`iQt*|$IIWK^^UN{TPfMRkE7_kgCGh9?A8v`0b>gK7XC z9G4$o-8j|f^F62NeHmm4;E*5(MD*{N=DSIiPIL6AOTM_8QfL-xk6C0GMmaD;gGnL`A9`xGAwOwpK{`NgZV!|e;Agj z?D*=&sp2!{i7*R`nJSbE6anMt-MP5{#6|drr5p#2t7#qTY^pvsQjX(Z$8}uC|0ezo X>KDm@)a|J<00000NkvXXu0mjfW?(ph literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/toolbar_move_horizontal.png b/src/ui/qdarkstyle/rc/toolbar_move_horizontal.png new file mode 100644 index 0000000000000000000000000000000000000000..5dbf8c27edc06ca6afdd84982afd4fb0b225a6b6 GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DCpto z;usRq`u6%kP6h=YmV*jnX_4V`CR}@?P<8P6yUz*+_gyB;Try?K`rm7B8t4@3OV3?A kpAo1J4ji5v-+Jbk%Knaz>%0*w(^im#r>mdKI;Vst0C#6A-v9sr literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/toolbar_move_horizontal@2x.png b/src/ui/qdarkstyle/rc/toolbar_move_horizontal@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e775854a376ac8ecd0e2d94b246f55cc0392eff1 GIT binary patch literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fAQ1Fqb zi(^Q|oVOP?3LY{LVY&EQw;d literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/toolbar_move_horizontal_disabled.png b/src/ui/qdarkstyle/rc/toolbar_move_horizontal_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..0563329a672659d8b2e1e3912e1148ba26a7224b GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DCq0y z;usRq`u6%pP6h=5mV?1LC-_XZr9O<_%>4C8fw@h^j4!H2t7~1}D(8IFVdQ&MBb@0By!EQ2+n{ literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/toolbar_move_horizontal_disabled@2x.png b/src/ui/qdarkstyle/rc/toolbar_move_horizontal_disabled@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..42eed67f8f9fac4f8a0ca83c73ac3a509115cc89 GIT binary patch literal 308 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fAQ1F?j zi(^Q|oVOP?@*Xl^V7>UBXQJbchFN{0D`sd!UkKdH=)5F}JDA04#hWJ+cBm^#p7g5I zoA~AYsayIt-tr$`;&Xa`)xP`drqBBx&6{mk6S!%6K&sbzp3CLYd^pGZvJM+ zhWlv@RSahtzA(&Ue8FhKe1SQGZ2|iQ9tZvfk_~bW#tgO%)KQSz&Csv^JnsAKHF60a mmZ~!+pIKjg{r99Rk2v@0D_HPbUw;ksF@vY8pUXO@geCwxByiCH literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/toolbar_move_horizontal_focus.png b/src/ui/qdarkstyle/rc/toolbar_move_horizontal_focus.png new file mode 100644 index 0000000000000000000000000000000000000000..d870747e7748d9b2271c54b30fb1f286b0e7a6c7 GIT binary patch literal 154 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DCpzq z;usRq`u6%kPM~VH#7?(@1#Bft4#>_~!K<_MarJTemiMbTM1#4*x$E!dpKVJN{l4X* m3DJeqrCX{PjMg`IA%pWZxaXyY%_bu-U5d^HkQK=J9O%eza;{{?>{H8~x8OcV7Rg zmd)}blWhU}1s(_f1(FSN4#o_&4QUKj3}+d>FwA0n!DzyKfjNUZ3a)V!{Qh+3b|qFEE*~Env;yap1l{9R-qt5B{aT+j{>p00i_>zopr0A?+1vH$=8 literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/toolbar_move_vertical.png b/src/ui/qdarkstyle/rc/toolbar_move_vertical.png new file mode 100644 index 0000000000000000000000000000000000000000..4450862aa205c1d5683a3f388696f8d6f72667fc GIT binary patch literal 137 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5C}{2J z;usRq`u6fdK?VgLmV?cw48BYe3KB8i(&m)ZyfgH@pRLCvyXC0V4{|#L1r_=UL1RBHO>FVdQ&MBb@05R7oq5uE@ literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/toolbar_move_vertical@2x.png b/src/ui/qdarkstyle/rc/toolbar_move_vertical@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..3f0618f72d86f2d3256830f359337eb198619860 GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fAP_Ww5 z#WAE}&fDu7c@H@VupF@Ma=7Bk?K0(qXboqHldqWXj3bPDl21>v6<(*eV|R`)PzwXY zxy8p8Y%QDr{O8msyAIn$&sz2BVs-uhw&{hh793YUnY;7t`B#kTo2wi`Z70{1-AK*8 rTqMolAQbB$eu4FvgE-g-h6gkDd1|WhzmSb*1POS$`njxgN@xNA`WHr@ literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/toolbar_move_vertical_disabled.png b/src/ui/qdarkstyle/rc/toolbar_move_vertical_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..1369e4446a190fe4c0e6602ca9ea0d2ddf8d38be GIT binary patch literal 140 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5C}`*D z;usRq`u6fdK?VgLmV^AV7a2K3zCN1a$$q89DM`3^^}V@OoD37r+*?t*%Tss7?*8?P jo~jxgH6NK67%s)`y2-^}-IrzsG>O5})z4*}Q$iB}eQ+rf literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/toolbar_move_vertical_disabled@2x.png b/src/ui/qdarkstyle/rc/toolbar_move_vertical_disabled@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..58209624c315ad23928dde8351fcb66f248e091e GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fAP_WI@ z#WAE}&fDu71)Bl{ST6h(c^J_yD>3_Klc4Cuj^r$6kwXzJGps%YA8Gu4XfF3Rz1=K8 zT?`F>H7-9W*%veUlIr8cUMFs;SyQ6_@3G%^IL&VR$)}T_{5W^R_wXskZ%d0BHu|1= z{XJC7+(h&3Emekw{}07yoX;)#c|bYa zmp$9dC?}SQ;fH)(V_DYn)9Q7N_x~_~Ok!XtdBm)KL54qZO3_;o*VEO{Wt~$(696~B BOH=>= literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/toolbar_move_vertical_pressed.png b/src/ui/qdarkstyle/rc/toolbar_move_vertical_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..2b413d30552e654fe120e4e1392dc443ee760834 GIT binary patch literal 143 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DCp?v z;usRq`u6fd!2=2+EEij)G&m;P2~27AP@K7Np-7`s($BQ{R@+}WOcK#~8~Dq*v1;Y- mzl&`deg*|tePW%Y(i+XVfs4Ju_U{CsVGN$GelF{r5}E*CL@b>E literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/toolbar_move_vertical_pressed@2x.png b/src/ui/qdarkstyle/rc/toolbar_move_vertical_pressed@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4e80a0bebf0082b5c49e424c5d91a6312c833e54 GIT binary patch literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fAP_WL^ z#WAE}&fDu7c@G8fuv{?KR#1GF#LU7gd{JQ|tFf!Wk>wuD_N5}4mFsPGZnzuE1k}TD zpe#iG&HD4fOW%3&albKMzVMRX{Nq2rO27NHa;n^XmE&gjzNLR^SUb~Z!P2{v_K4p| v&2#SE&d8v0k+p;|b^(70Bgha2hHEdmJr~LG@7Lb-9K`i>^>bP0l+XkKU6@6S literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/toolbar_separator_horizontal.png b/src/ui/qdarkstyle/rc/toolbar_separator_horizontal.png new file mode 100644 index 0000000000000000000000000000000000000000..a1e84c1d852b2e941235fcb4eea586301438c181 GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DCq3z z;usRq`u6%pUIqo8BL_GPC6fOF73w&N+PNRk`)=NvnRPJKNfv z|6F-{TlAzJ!*!=O-8tGfxx&Qr+j)P_W#t@=tS4T7p8wAIB!m4z#xD$OX^ef@Dr$D} oA7$z>)bqTi^13cORQ4UG!8MTp?k_WBfqrA~boFyt=akR{0L0a7O8@`> literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/toolbar_separator_horizontal_disabled.png b/src/ui/qdarkstyle/rc/toolbar_separator_horizontal_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..bedbab447947681f0f6a28358e3ca00893cd6279 GIT binary patch literal 151 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DCp_w z;usRq`u6%pUIqn$!w$_69lQ(DQdPo|J1!)CuZ;bj;8?rv@^h<`z0-QQds6rVE;BQ+ sa0nqd{(g zs0056t_AEFtQVNKFuh=mV*J9emZ7R4jKS7Hn_}sc4EOin*`375w|UR`Gr4Jb->p5% azB99^353Kx4qpiLA%mx@pUXO@geCxy>1;^= literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/toolbar_separator_horizontal_focus.png b/src/ui/qdarkstyle/rc/toolbar_separator_horizontal_focus.png new file mode 100644 index 0000000000000000000000000000000000000000..1632c597926a312e55089ca991dc5679fc4fc618 GIT binary patch literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DCq9# z;usRq`u4gbFM|Tl(F?5#iA@3>Dw8T_D7j3Lep_q*eisMx(|4!tx|*q(=v2rz^Kl3$ qI5aRYGO>Ud483)3&pRKz)|>E_*dT+4w*GI+ZBxvXbP0l+XkKa%5=z literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/toolbar_separator_horizontal_pressed.png b/src/ui/qdarkstyle/rc/toolbar_separator_horizontal_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..e03fb8096ec7e709ad718bdfb06897da03f15495 GIT binary patch literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DCq9# z;usRq`u4gbFM|Tl(F?5#iA@5=i5!YEOjG_ p4h;;9Oe`Pt&nP9=5WD4kXK0BAVfkAzft31q&jn2ap=`o^JJ3wLk`wH>jip`!PC{xWt~$(699`oT?7CC literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/toolbar_separator_vertical.png b/src/ui/qdarkstyle/rc/toolbar_separator_vertical.png new file mode 100644 index 0000000000000000000000000000000000000000..86688ee38c360327cdcaa21e34b74ce0046cc00d GIT binary patch literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5C}{5K z;usRq`u6NXK?Vh$0|ySINR++eknOS#b5`7F`Xn^QVbYTOTcrgzHU@r)ooUHfbunO) c%FCAw`Y%{nR-|og02;yI>FVdQ&MBb@0GO^P`~Uy| literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/toolbar_separator_vertical@2x.png b/src/ui/qdarkstyle/rc/toolbar_separator_vertical@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e4efe8c7d388ed9e68d57e5e6f9830dcdef551f4 GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fAP_WR` z#WAE}&f5zcc@H@VupF@Ma=7Bk?K0(qXboqHldqWXjZWqb$)|T$-8NS{gxXH7@q1CUCG#%G c86d!u#&~3{Fvo3+W!FJmPgg&ebxsLQ0JAwhoB#j- literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/toolbar_separator_vertical_disabled.png b/src/ui/qdarkstyle/rc/toolbar_separator_vertical_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..244536844ffdeb3912ef97ec67ea6fb6894db8c3 GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5C}`>F z;usRq`u6NXQ3e49hKtF{(gG@^%G4Z>f_y$Fo7-n0bqy=K8Oz lb@J9|-o2&@(ag~BwU%LDH9yC;wY>j9LY}UEF6*2UngB=XPC*=SD literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/toolbar_separator_vertical_pressed@2x.png b/src/ui/qdarkstyle/rc/toolbar_separator_vertical_pressed@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..08d83e1e75409cadec4c3fa73cf526038aa3b0f6 GIT binary patch literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fAP_Wq3 z#WAE}&f5zcc@H@VupF?Ba&Wrh%FZFArR2DXJ8P4Vp#KAwH#asNIp4CHyG)-Es09eB z0zN0y*Ur-_^)I@y;QXvMuibm(pIgTe~DWM4fTi`($ literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/transparent.png b/src/ui/qdarkstyle/rc/transparent.png new file mode 100644 index 0000000000000000000000000000000000000000..67753617fec23bbc57360e16d16bdd82ab984743 GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5C@AIW t;usRq`t~3rBaqjm@PB=thXaWDo=rf3fzh3DK?jh-;OXk;vd$@?2>=W@7CHa` literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/transparent@2x.png b/src/ui/qdarkstyle/rc/transparent@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4012944b58252423bd3c84fbf6f5e698b1a39bf0 GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fAP*B~| w#WAE}&f9~Gyg=Te1>gO1`OFspnaH4_oY}#FfwBM7$v}{>r>mdKI;Vst07yI;1ONa4 literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/transparent_disabled.png b/src/ui/qdarkstyle/rc/transparent_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..67753617fec23bbc57360e16d16bdd82ab984743 GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5C@AIW t;usRq`t~3rBaqjm@PB=thXaWDo=rf3fzh3DK?jh-;OXk;vd$@?2>=W@7CHa` literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/transparent_disabled@2x.png b/src/ui/qdarkstyle/rc/transparent_disabled@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4012944b58252423bd3c84fbf6f5e698b1a39bf0 GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fAP*B~| w#WAE}&f9~Gyg=Te1>gO1`OFspnaH4_oY}#FfwBM7$v}{>r>mdKI;Vst07yI;1ONa4 literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/transparent_focus.png b/src/ui/qdarkstyle/rc/transparent_focus.png new file mode 100644 index 0000000000000000000000000000000000000000..67753617fec23bbc57360e16d16bdd82ab984743 GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5C@AIW t;usRq`t~3rBaqjm@PB=thXaWDo=rf3fzh3DK?jh-;OXk;vd$@?2>=W@7CHa` literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/transparent_focus@2x.png b/src/ui/qdarkstyle/rc/transparent_focus@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4012944b58252423bd3c84fbf6f5e698b1a39bf0 GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fAP*B~| w#WAE}&f9~Gyg=Te1>gO1`OFspnaH4_oY}#FfwBM7$v}{>r>mdKI;Vst07yI;1ONa4 literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/transparent_pressed.png b/src/ui/qdarkstyle/rc/transparent_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..67753617fec23bbc57360e16d16bdd82ab984743 GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5C@AIW t;usRq`t~3rBaqjm@PB=thXaWDo=rf3fzh3DK?jh-;OXk;vd$@?2>=W@7CHa` literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/transparent_pressed@2x.png b/src/ui/qdarkstyle/rc/transparent_pressed@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4012944b58252423bd3c84fbf6f5e698b1a39bf0 GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fAP*B~| w#WAE}&f9~Gyg=Te1>gO1`OFspnaH4_oY}#FfwBM7$v}{>r>mdKI;Vst07yI;1ONa4 literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/window_close.png b/src/ui/qdarkstyle/rc/window_close.png new file mode 100644 index 0000000000000000000000000000000000000000..c7ac3e74075f5c04c74cf1c078c7543865de09c0 GIT binary patch literal 766 zcmVh7(gY#2QZoT z30juyT=+*61Tj9vbPp=vANZH(8>kyNE@-d4z3sida5u)Yn#@ek_syBfF-O(t3|TCh?|1!W&j1gRhqI=kTY+xm^Oegzx(wMWjc< z_x-nNn)a2j)?O2lwI=XN0f013Usp+pNUNVj4P5KswF0?>F=ii_Y$6ec;Z+fNRso-_ zgZC8xaL(0A7-ROFbGtbl7#dC?Y2UEc-Vl)$x=-{Wa6N1Hz(r&(j^ihTayJsFlMs<3 zRiz}>7!CurpcrYIzVdzlpmZ>W?nMj*A4;Ggv0swtz*TiVNs`8J=q_EO5RqRZq7_5x zdEU=q^9@yjFbvzkdd+tNw1Xhn&Hs*(3Pe%V0ycoLLU&$?;*Hrh#_Txf_L}5vv<2B? zq6aP_H&u1MAOgpW+Q_OkFa}m248tklc@;d4O7s<|g9EpcBw5Kj zoO5*&Eo01XKZ#m_0r1D=`Odj*W6YOfB`O7?D4GN|o5BkcTXhma5L9kQk3bYfli35Z zyyv(3!HW_>5PSu$lqA|!5?un;+6mxA6+DjPM}y!ek?06mYcGq)%hSS(62_QsRT94M zZ>4GaKJPdl@x0|S99TFBJdY$v9s&z=-xFiNa);ZYsTQB)3M^y^P8C%WB68Rx;CbF6 wZ~*)ek-1U8ixR3j3w&4APr%}+a{v4B2L`lzfwmJ`umAu607*qoM6N<$f?9f4&;S4c literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/window_close@2x.png b/src/ui/qdarkstyle/rc/window_close@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b11aa0818567dc9adcc05071e37e053391310329 GIT binary patch literal 1690 zcmV;L24(q)P)f zAPBw%ECNURE`2yLF>!Ksc6P0I(ex*1G#UYe<^hhV>OvTXla*Clv34*I@a)FMM%ceN z06q*(rhjb!fQUReVz0xhy5M=kpXW506Lw{9B{*7?>&c5#5}Op>2!Y9zc>J3et!NV zYwcOwA?(RGc%FAcL`JrKt~G1z)cpMXNBtLuo&)j?UNpum0*4(oxB>hiNs>P}#Ez{X z2wqUtB@ubpA^fJb_H34A*N0u)769x|2vwSg5ddI+L8#h140#6hE6cLqi^y4EZB#6q z^SGG5mMT>gMb86^uI5E#YLt0!=zy-mFq~A?1sprUT6-qTvJYJI@1!V-p10O60gpI@ z-^`Ef@4Mu71_0oB-nWf0*Vsh}Ma`?~t7)44);0gg5$IKxW!J5>Q@~A!@FOBJ);JV2 zf2*i@DA)mA<(;qqJTxj+RsSs_XOblOW05^dn4c$z z?7E0Jjf03htg1^v5WFxdwy1d#Dctt=)mHY#uEH>UNmZ{=K_`?k-)gm7KD=$Ku>k=1 zzW*H&xrze>;9tg=GjSaMsdq65g5x5xq^d_9a@MscPHN{O$Z{KelRee28)Ay>Zt5>xGfGr4D zfkOpvt=&BA0sz>8umFtu%Dt<*`SG?^^DxFyxQH5!#u~8U8ZROn`8~C(b^uWnJ!7q1 z#_ii%VDq)8s_iI>o~yAmpymg0rZ%E+#&pqF=l!v^Ii2oxZ{xbF>7tx z_x-0GVuz~K2>8DLl!&b0X8x`*=3E@d?IL^R#VUu;>e3B#!4zZP~XeX%ZsWeUh-hW{Lz{QIfzuxI|J^-F{ zNW3TJy9$Ef4DbuwApEn@Xq>ow`SL${7Y9bbTKg0J2h0QH58G+n#^H%hr}NYP#bLh| zf7v0~x~k6XrTMOsBw4c7p2q=#h@9$Q8}<%g1)$$VG&8)$}|AzbZW7yw|5nG=zZhupjlyqP4)K$88Ud?bfLP}NUFWUha` z(Z8^|x_W1Fa`LTavw4Wk*Wd=wHpcv@u76Qisnylhk58UFdBs}$q=-BMd=9*2jQL@! k)%tX=>pRea4z$1YC5@3j+@Cc*@&Et;07*qoM6N<$f(+9)*Z=?k literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/window_close_disabled.png b/src/ui/qdarkstyle/rc/window_close_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..d60edac2fe90e092985987ac51b826664ecf20da GIT binary patch literal 838 zcmV-M1G)T(P)pGbtr%@uv6I)wi}ShrlYb`dM)y>NP>h2 zk4W$VNPGh&9R;rl5)y(^;n2lt=pYG?B;WfCgU*vS!!bwb$SVajTip>^*1i z%+3z{?;&pE_^5dz1~*U+0arIG<<)+IjJ!DsTm!zxXk30)dGZt>=1zzyw@{7&M}QS0 zSDfw_d^l&$04w{sk2Z+iY;ryG4tm-#L>K!ZF`P4JL|ABH9c~j)^a{}Er-YF!P6xmn zB3yAh18$>kTYK@Lv?a&{zxRe9OeB)ow~k%i=@pLXVk;bFcC%7mY7+pc*R0n860u$- z_TdXH`G3JT%J;o<2WW|U&3ZkUO1~pWB9(sQ*j7ggBVU+8Sd0P>6aa8+>s6oxGTBMO z$QPzSTHzW74;64F63Og)gz+d6BctXikOu+qvtjU#0>31xp%Q~bnLVdw?YeMPdWPdk z+A)lrc?Mw~|Bn74!fAjYxQfnht*_ndmOGL_n1mt?P{c1584g{Rz#EQjy-XxC9}t=w zQ$WQ35>bW#E8k*sVnK6BVHpPo;P2wzU@}Z=@yIzf82jMLDm?Is8j9 zAjtA?zEFyiyK4oE(c%Q~FbMv9qdZ@?t1kwV85>~?ZzYgOmFOs7j20(QZG)qFVRK_` z-W_mkD@9fj-?6P1iDddCB0Wh23XJ56_)a%?Q=(RlEYTDg z$(yDitA7jkO2ku{&k`gtl-+h})v7zNPvUwjTw(4{;BIVH%C{Bf@ShV0MD@Dc`F#+H z?@F!;b6b`2?LUQgl2G{3CLqEk-~-^O=xjgWUI~=5z!!lU(zw*G-2Z<31pAGHLH={# QVgLXD07*qoM6N<$f<}LI6951J literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/window_close_disabled@2x.png b/src/ui/qdarkstyle/rc/window_close_disabled@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b571b12e89465d6493e81b05acf66f95d8e5970c GIT binary patch literal 1724 zcmV;t21EIYP)FnkDBWdRE&3pRX>ZdgI|l33Q2aDlW`mYni344qCE48shig*XkigY_I1wp>M$ zrRPfb+Gg;7dG5LAIsc!|xsqkUsZMpO|7Xdd;FX1i^Jo8a_WP=u$H+O9JG*W3llRwd z-aG0B$I+Gf{8!FI?3)O$V|5!SZgc*pf2{xP)85=Z09UUrJ-PKc`%6@#J(unay0~5| zy&G2JL1-qG|GKfZ0$k|1bocBzJO6IEyxAQzy#=w7c@--e4bq zjkUrDMq~kZ2*v&m zr3wK;HVwF92`=VFh^7A^l&f z`o_2re478%3X6Ws!x#X-KLp@fvsPU9bH-7a2Zx8?AT{gdcTl?kJa9;V3RvBLf;%ZT zpN<}dc^DG_>_Jc?iv$cIHlL2#h^gXe-e7(0e6Pk@fo?@px!1+&Z30+_am+VrWtTtR z4%OHb&{3;exMPLuxKBc5|2_RN#pct|cEmW3y{M!oH4gzyKu0sl>^F^a8~CC_`aebF z+PYV00?foSGa^zIc*f!0hoW+Qy=7SCSxV_po|M!isPd8IYQWbgrD zHnntRvTi?9AkTnUJbT#+HGG&~uNG_F!Du4?ZNZj+FF4fr7!yf0tG{@EoPN7CF#x~j z5u0mzWp8k;T-=HlIYI~%t-!u{=dmAV9-vV#)Qw6O$92HACtioKC!ovx^A71-isW0h zLe;HyE^b9jjQ+U}z(1s|$@R6;?_6s4YAgWLiTukEYz;T_+lu5|&3ANE5PYw|QJ9Cl zbr3@q*m6jJP9x&Y&1YWmdycOO*fXyl=nD?%W1H{RTq>JTOA*IOFiN6PFaF-OzB2&d z=9PS_UR-spKTNa9bP_cMLV)130?}0Z(s7vwXnJK2u{j*q!3wolJbT%t_DBHHRQi(G zNX^x}F}f6_`Hq@i*;6EsI|R=K!q62M$9$t&syO71t!N^b60`vQzxo`YkBpKWwho6* zKs1%Ugf-4%FCxofn+Iss3ROjNz_vsB^H%Vt6Zw}9OBgr-9rFSg9S+$Mk)?I7u;P## znEXyc8Mcae^R!kF+DP_tt*?m+ola z3Pe z003=|sIvnsH*3Y)jy;C1MzvINfgsT5tsj6g>{Z=C^*blYd`FFHsUjlF41r*gTfMP9 z0B0gk+yFitaQ~k9da19-NzuAjSUC)Wz&&=`H+tid-oRh){b}njK^_5B z5&2%T7S6w@gVf*d{rSU-FMYKrh8GoiTHs^gE#0->ZM|Lo=(zhk)u~Q(vh-iC4k=6A S>t~Aq0000v-oD7@#eXQmUqZQrYdo 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 b|9<@f<_Uyz{zSKl00000NkvXXu0mjfk|jfJ literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/window_close_pressed@2x.png b/src/ui/qdarkstyle/rc/window_close_pressed@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..749009c00a3e870536530f42c1d25b2756217f41 GIT binary patch literal 1679 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 R$EW}R002ovPDHLkV1f{ZMhgG{ literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/window_grip_disabled.png b/src/ui/qdarkstyle/rc/window_grip_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..3c0d86e823ca647c8ad984df051e1ba98c6e62e5 GIT binary patch literal 447 zcmV;w0YLtVP)dks(p z_ZGkwKOYW{n`!HwmHC=Kj{D$Y61w0@s~N^z7@?J~9~8h9H*f~LWJ+J3$J+4&WPi3J?MZX!yjtgHfAItZ}e70T*1avY89M zH$W8}Sf)z%%5bMi7y>Vwgr#@FAYZOkV%BxPCgDaCI^pYE?oPben8jff6^os4LkC!@ zs8QN*HjOEzFLlIi>b9NG`UK)Q(k7c)TqZD@lOSho%T2>^)U2w}1FCKJbkNDE=H p1K+5#nFkQZ5q6_lJlFm0^9>c)^|Bb>meT+L002ovPDHLkV1m<3yZZnD literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/window_grip_disabled@2x.png b/src/ui/qdarkstyle/rc/window_grip_disabled@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f57b353aac352b6b2059f2d0e868dbb0b75741ba GIT binary patch literal 768 zcmV+b1ONPqP)6!@u5F&c~#4N+Tc- zJd{L0UU(>hfJNZJa{-IOgU14Nz=Nj(bisp%0(8QIX99G?gGT~Pz=J0OOu>T(0!+e# z;{r^>gTn%Bz=NX#Y{7$r0(8R%+l@OSJO@Cjhr{mi=gHrl+7QtVUke*e5srWjU;~kt z@iEQ_Fae*?Hx(xYSb{$Vc^n^GxBzSLqV5lS(TDi>LKi`+@crY%q;m=r-~v1pB)}DT zC_sQq@L*YhYw%!EfQ#?|m8^f9C$``faxm<7-eu`Beg)WsAM~P3@L*Vg>+oPufDiCs zNPsW!U_gLR@Ss_MZ}6Z|fRFH?Nr12Lph18wcu~?Cb)$CHz8hQhyP%!{`u7B#hYuSq zP;E@?33>sqc*P9HTmsyO-`!7u*Rv<+2fVzF_i5P^^cp_p6?yL0Vb|el*fjk)X yqxY`#rRMt1&RP%ztFHEiVR%_*-!jWw;QR#u%+9O6n5j7c0000Plo@#q)sdxCQ+8^NYIzpe)j?( zs1^Uv32>swLB3y0fG=EVqdW&qIm^$yU%>{xC%yUQ(X5sLWw_S>Cb+i%rnr{?Hn{Tu zwz$&(Rd8nkO!4UEAzX;ufxf@>yD>NzM3(p%I7VpY`^}p1LxIO2<2*mBdOg{L~U!Ak>F#HS6_ z-ZtE75_-bTCZQ*M0(90V;YJ6n@Z~FaCms%yX!WnyISH+Cp$$xfro>f0O!-ml8egd^ z>d^8E1{y35DShiwcA=&woxkiANLQ;rtsWX`eFwg+i^3kj+ dPV4@9eFE=T^_JdW17iRH002ovPDHLkV1i9fx48fS literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/window_grip_focus@2x.png b/src/ui/qdarkstyle/rc/window_grip_focus@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d92f09b0d0650b348cf31591fa0cd37344a8facf GIT binary patch literal 738 zcmV<80v-K{P)(u9ILUNrm^qNcTV2%{Q9SR9yyoO>0nvQ zTGk?$lsy5{RqqV$3cOJ8bG62!ACH4!{P}8G6SGl`sNVv5Kuv%@6W#!K;ytx8CT61= zQNM*qj~HVOZYKLGDIg0T_&ZTNP4-q!z%+Of+T$?zlI*Y4B6u16`IF#N);pCEkOv+r zA|Nk3R6sxxc<@|6QF!oJfDU-@RDdpc@KAtGc<@YsZg}uWfC+f;M1U!H@IZh`cyL^R zX?Sp0fDL$XRDdmba8Q75_~zl@o|^C)Kp}hMaPxEgxl;!sy5Sp9zoir>2u*~hpt{K( zX9Spl&&W%a69O#3PXyUd_LeTd7Ci9qJly=4>@Rf@v!H@u7;K6_ZpWs2W z0N>z2qW~Y_L6ZPq;X#7{dpkU}J381po;R-<4Yw8Q6&N@ZbRE8aINVjDj*XlN`T#FV zy=4YtuA8E+!#6sE9n$c6&IG-Hhj-~b4QGNr!xugibRIq$+(&qy%A4`mc_jf=g@-E$ zu(!!kJEL&xWd6MT@GwI_)#2e10nWpB`fZR8sk}LVMwtQ@1s-4}Ina!T+XzQ!f}fI? z8-8kD&IR=UFQ9w6*0{Jf25!Vg^WV(K&dUw2J&(jraN~P@1z3*_6}py^kymK4y7M3* z;OzOWU!o)geghYRY8APYlgd-lE;3o&c~k55%dhKnPuE<{+j#cvy3V|1Eo*`6AFs^5 Ue};D~CjbBd07*qoM6N<$g2j1AhX4Qo literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/window_grip_pressed.png b/src/ui/qdarkstyle/rc/window_grip_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..89d5908828634379a3fa053484ecc318275a74bf GIT binary patch literal 444 zcmV;t0YmB0^W@*BXXh#K-yf+HYhLtQi4N~X)a%>e z>;yp7iW7|x>1dtoX6v;C_{O0PyeL^5W$(Nn!5YrII~!b1YY9+>dktWMdkbKSdkJ8J zI}c!sI}K0;cNV}DZ(ZFsmy6^9;p4r3-UA1N$Pym{2WT4EdRQ~QFYu&7b)3Dcd<0wI zhtr$W*;WBu;ZWfStng(r0``FCJRB@LV2$e(4?@+;!>t1NzySi6c>2eqjBzmNfE6y$ z&;~CJPze_%L7=*MxYZ=|gqux5FZkCdxjG5gE}<2k)@{UdF6OU!pb9oM#oGuIrRTX9 z&g5cB?xvQwNnKHg(hkJ2S`s~$;h-fUx-Y|5>x%H70BI|BG>kX?$;8)!NJGQ87+5P)*S2~@vr-Ra;~GJ3#(eys+PH= z>;>4ajotXRMDko!zOO}-N8jFbz9jFjm9;PzRqw`4RE|+1LHRX_UIVw1JyA((vtIw; z6O0jhBi&a?0a@_C?+NlO-CH>Uv*1OwH9pumP4`!76TAri?6C7G>zT?3$O8`*5s()i zDj=W;JOnPFC_Dr#zyv%5D!>#x1Sr5HJOn1dG&}?(zy>@7BES|r1R%gBJa{g^HavJN zzy&;bD!>&ycqqU$d}BAhqav>WROI2fzwZR$Y500KZmP%$&;S~u+DrF%BftiH zM&49;A;1y*M1;rb-qHoQf=768)^C4I_m{c}x`ZF~+s9eYlqSFjcqmDLFYr);0H5H& zu>jxT!Jz;j;lYsrXYi``M~9sci)2|B;4?f}7T`NPSQHQfJXjJC3Ora45E48X77!Xd z7!(j9JQxxXDm)kv;0zwNM+fcUqIr$(;I1k!!NN??cleFHqit1&*q8~1059kfa~N|8 z@EyM19c*R5o0$oQ0FUx^D$m4BFl6|`GePg+cjJ4Ayqn6K^Xa^lfU3g7CH4S!lN{Z0 z4G(kP0H^T%&dI`g1>xZW0p7#!4O+nask{Y$MwtSZ1s*a4{Qd7d#1Q<9yxj0J^Kx#W z{|ngft=A{DF>pO`HUG(s?7ZCY#`8#h1vbyGUIA)}ONEZ5WaJfEtm!;R3HUnb{1kW! zoC7}uX%;z?GnFT_iY(T2-psoBbq1_P0nhw*nE3#83AZYXRiQH*ulu%V32Txe7C5iJ3cH$Jm|?^5P}*VWL` z;gNdQI68Z`J@?#Vae;W|9z*2~%!lVQH!%3z`^~)ItlTxGrwq0mmR_in5u3;#(XiPe ly~FUFX2|~*B_*Y+ce_`Mvz;@Nw*gwu;OXk;vd$@?2>_REK+FID literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/window_minimize@2x.png b/src/ui/qdarkstyle/rc/window_minimize@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..83b82b6ee6192bdf92ed12ed674086f858516558 GIT binary patch literal 316 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fAQ1G3n zi(^Q|oVV8uy^cDFv_3ReZcIpAx>s62=T5WUfzlf(jE7A$nev6dO>5FSEE~c3$%=cX ziTO68#Su^K4E~4DoBimCNhb@?APC5D`tf>RkX2FUCb`p=xATw7vrDu+-12(Y+$GVT z$Fog~gH&v1-Mnk!oBwsAq{7k?qw}A;mlU@b&HH9}th-R={{Hrjb*rXK`uaaEZqm6k zIpOVR85CQx=i9Lt2D6`Kh`!9TLFe>m#V(7=Rn2J)``%Ap65eli4ybn_-)zRBbMlHU w+MeGh+1buoyT+r+VDsr;+zKC+ksNnayxYute)*9EIgo2TUHx3vIVCg!0F{DysQ>@~ literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/window_minimize_disabled.png b/src/ui/qdarkstyle/rc/window_minimize_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..d66d0703980b539279b536ea5d5588bb92f6cc61 GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DA?fX z;usRq`u5UB-ev=lmWTgm$||My^L$`SXcx(p=xnl5R`BvaAT{xZV%^FG3PN)i?p$wu z`%-M8fS};c8E-f5HaF!iJ{Pa>kIiP!*QAeZ?@ZYnbX_XXRnB3!R29>+ug=opj)C;G zDSh+iB}z|d;`?!B{T9}W+|2swZ|WjIBku73Fq7uqw{?v&&@Bv}u6{1-oD!M%>7QrKVk4qRhWIFd($`{yTd< z10DTuPY*4bx_gSri#2n5qlz}0eGl*detG(j89W76a_>#I)=w(QxOncuvJW>eR+-lR zmHYK$<+H=#zv}h%J=uMK%sG;1)UfBA&#Ro{l`>11zxY@=TqxqUU8D0zL2|(jUh_%w zbZ<%A7O~sicQ~ctYt6rDzvl`s{}y&>x98TptCMzTe|}@}kICZ?2P4dt47DFw=Zl!~ T*UZ&71&MjO`njxgN@xNA0q%`D literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/window_minimize_focus.png b/src/ui/qdarkstyle/rc/window_minimize_focus.png new file mode 100644 index 0000000000000000000000000000000000000000..f533977ed0828714b50bbd4763fbe23f675928e4 GIT binary patch literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DA?rb z;usRq`u5UB-a`%|%@6NS7Znf+PHD|?a&$h+@-kAvH7jkw89tuIDQ6tyLLD@OV&6&C z&-M4;)Xi*cy!p_V$x1HPA+yc4o#oaHV=lYy-u#G7#!QxBagfY%?^T*7(PH_RN{CYUa47vg{7oyfQ%7FnGH9xvX=!;V%u7}d)VNu<{Ub-!(w1|~8CRsH zwurVK%1cxKe)-hi7tivN{_X!%6FkTAY!3_24hSe|`de9QKKH(^$g4|}{;p^|dVifg z-v-M)@%c5GPY(7!iOO6bBN$x1dz;1U{d3>hEkB;qu(kVm=xTL-wOrAa;a%A>TCexY zeUICBT(MT~j9PR3_fL~jZguqbU$T&P2xNEVI@{>ko;i*Gg5ggF$L+;00$aSzGpF$i ztbS@deO{M|)=5*o?y^b8ZZf?8`?i1Ax^HLR1}!^p^ft=0bi4M^H1)qs9)CC(VUA^p Z{m6P@l1t~5#Rr2yVxF#kF6*2UngGs{i(vo& literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/window_minimize_pressed.png b/src/ui/qdarkstyle/rc/window_minimize_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..ac050a040440ea02a91486f819777bc4aa537e03 GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5C|Kj^ z;usRq`u36`Uz3A~>&4&4bp?dV4*T^?Y>E{qOI*0In0MN{V<|DrHCh76PRD&d`+Z-& zbG?Lspy0_fb^hkNt|wkkisw)GXTBigo#_qc6=kvv7w`1Xzx|R^VBhmdKI;Vst01OjIKL7v# literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/window_minimize_pressed@2x.png b/src/ui/qdarkstyle/rc/window_minimize_pressed@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b701572b4685b184d2f9445f3d52c84eeeb42ee8 GIT binary patch literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|O(I zr;B4q#hka-6#bY3MOq(zX7kWk)YNcbBjY5lZw%ZkwEG&4Y-mUmyC7@A!DOMrxg)Pp zc7cZ%CljM@`Y*j{dn5~rJ!kx%{JhVi_)HHA&=v^T;`HNhj^p8zUH(&-`7HWm^RHyB zY{K&|X{&p>CwkU;O81t2HZ;E+yW#20*GE4VSFPdMV7cQ}+t*KqEN^#R`D}bT(pw!p7PVarqc6PUzGIH#8d`PcD~eqE))1JugPl&TPgkE;NDi@$?q<&F>?45 zBRlKm$)yw5M=pD0!>i4_Csuy1e%A*1CElL$dRJ$enqOY~Xw&pMMwPl2m@^p~w*6q5 Wdd?v{r{_OANYK;O&t;ucLK6V)+l9#h literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/window_undock.png b/src/ui/qdarkstyle/rc/window_undock.png new file mode 100644 index 0000000000000000000000000000000000000000..fab0e72e24850a8ad8d7af3fe9d6454926b0c39d GIT binary patch literal 510 zcmVKcZzGltOSS&dd6b#MU4 z3MA!iBc8MP zj;iQ=uBTE{N~vny{qZ1{43KQc3D7l7vlItFpX7!2 zMhtk`uaxoyzG$<6H-^^=9BMir@g=HBGw@YCHi*Boa9Q&k+E~YPI?p)Od1n za9#J+vaB1DNdTJwj1WOdvI`*BXf&=ue76!l0Z{FM^DegZn*aa+07*qoM6N<$g1!LT AQ~&?~ literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/window_undock@2x.png b/src/ui/qdarkstyle/rc/window_undock@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9574d4ab9a0ee9e390abd8c554379f41b3ea92e5 GIT binary patch literal 875 zcmV-x1C;!UP)HN$)24FIb`h)3me`G>C7 zen|`<2!iWT6fFZd+A`QvkeSC)dKw3CerIQA&iDP9TCMgjrCuUke*#iU#mq0zy7)mu zM5CVP)uohoP1cDGKuUQ7K+$C3eKG`K(f9pxrV4ZfAf-G7;IXNK8VnK9lTxWPY(hM4 z1Oxz#6w`%>M#C_?V?sMFfNLfSWq=W1aRL0RTiix`>1>Fc&fLWw`#0sJ{Gzq`A;xUjJBGpTdOR&xgTS|bqA=SrnAp0#e=9PlmcB3Z!9nl zT?Ysu?lbc<69xN)h*Y&&eQ8QR_MM@%wKXmj3eTI(<`#ep-TE13i0p(({RH zu~Ph{00Kw*p~F=TNMBR002ovPDHLkV1jYT Bc;o;8 literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/window_undock_disabled.png b/src/ui/qdarkstyle/rc/window_undock_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..a2e164970dfdc13c33365a103d13aa6b6d32f2ba GIT binary patch literal 541 zcmV+&0^!j&bB!18yi3yF(0r%g z-MxF?&+qqp_wEP(yTt3^!|CZ*^!LCjFb9lv=~WeUlbDe&6^obm0^FD%0*Nk-ovKJo zCYun3Thz_Wdue+nhVCU2?fV~Be(lakqS#v@Kk}#!_=!aY`7YPhtsJ!gh*a7jq_Up0VaC^4e z*7an=zpKsyBY$!k3E(gg0FM7cdAI0VbWWM6ETD@vfQav}EA-E>56}k)9ia2B=Oxv3 zGnH{|-9WWD2xSEX-3$|;Ld?jA0ZL>|g|DBt-}#AcSpoUf z3v-|ztq<(^4YmOyjmR=k>(*VAS6}u&p7@Qo4-P-7$3I8o6Ytf~I4}wf2JlsZiYm+H fy{)$a-s_7iJ>Px-gj^~i00000NkvXXu0mjfS%vv( literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/window_undock_disabled@2x.png b/src/ui/qdarkstyle/rc/window_undock_disabled@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b6d5c6cb278b87e28b79493e1f26d328a01f2988 GIT binary patch literal 910 zcmV;919AL`P)FUT$nCF;VIeUCt z=X@^Tz571j^WE7w5AS&o;Ns%qWXP^SOQ5^18Y}%o=myXVpxVAITciQZFk>{0+Tk~e z(dA;3Z3S?kz4JKdXoP_VJ33MjkRpwHUrdZWDm2GqRooYh^n&RYfGt)vHh_9&>hbQ{ z^KoHrcG_ryr8A%{6g|PraR8bvdmBeq(>QE&CYTPOCD2`0Lo06q>?n)14T6Bw53b#t ze@!s`3sz&L9~E}+0Kh=Qn)kmj9l+Yvz9KR5ZskARS_Utw(0Q-2AX4-`pPY=@?k()# z4@S7i$2#woaupZD4M4R4)wltuHlP|e0M!Om|7NEZPk0JcgS$%lYB=3GxQ5r1apdnGzSU8h>` zFVGf>3=(h`3Jx9s7-$4(Pko_ipJW}w0Q`aIDP{~v7G5VFVjl7b!iS{_=mOXuIJpzV zH>3($z(b_nJQNPsONi?N(8zNUfJiZ`FwnUAlg>+M>jEI4Q=*Vv7$o9L7r;Nf#4X~> z{DKI3ngx6S$TWc{USxvELW}7Dl8JkE8l8gp16=^J64FI+d@Jk*pxS_H+yGP?P>maa zY6Gfq15j;1HEsZ^4XDNqK(ztYSlJ(-iruAFeAhubf52&Hz)b#tqXJ;YX#SXE0w5rj zM(uF^xKjeilE%G8`-YtmKo&&j3hfuJq`QD={%n?x72GWSKL+r7yL@Kz>d@=)@$bbZ z>z10!aIcl(eR49^RBlnDYrvOs7bz2q5~4m=#a~KD8}; z8pNf8bWmujL-7fmEc6Ln1Q8rfl+Kn81&xAQ9BP~6P}4uQNt3pk!G6Eqz2xLOD2S16;)Yz z&&>fK^f@#TGcPOwDrx^E5wDv=zfDxbp6l|QZN0RUsA$}3Zkr7JjrsshH865?KPC8i z1>lDJqj7D=au#C4XZX~|nam9~Hp(3Xh>1HHY#g=%BSO-88iFAh5OcFvILU14yTQCu zfa(^AiW&xUyp_3QF_vMJ&XG#_Tmt~u>)7}Q#P~yS(P?GJ#-_5u0;o&$8=^=w3hq^M{%t(&vv$eRo> zrM(1D1BGJL0|3r~aa{jL4Aiw>QPExj4EMwewDl}YXHH_P8DOT1UYG+YG2zl_a1B7f zE4vGQhWB4(qa%aQW^(*B5rRgVinId}ROt002ov JPDHLkV1l0u<%IwM literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/window_undock_focus@2x.png b/src/ui/qdarkstyle/rc/window_undock_focus@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..62de7badaf550a6bb2085ccefe7b0baccc3c98df GIT binary patch literal 877 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|T?X zr;B4q#hkaZY%_ubMUMY}t`?wkRPou*Mp>P0&6Aex*!i2$YKP~+wXA`f9J#?>?&_=6 z#Fjdiym%2LE*Rx_SLV(VPXR~Q_6B)R=BQqg+0`;Ste@lJX5G1SZ`u2Q$7ati{`Y=< z^?U0(G6#}2vPcH;K3Gy5yGh5rqd?Aq$Dw_fj%pa=lNpBkR<64Ygnqv?k38AnVN~ta z@SLG!^^uDnaZPRBo&VCes&%9(Td#bxfx-Uhx7rGZ7h(@wpNFNbxYn{P%;8Dew=DvD zI9Qpt&*);A`!R}>R~lr=pXhz81shZ^ZR@jnE9AcFd`nxsW8^gDjQ#EG4ev_d{=c|^ z@%8fB=toQU&a{=uZWIgNv88=B$D`l#^wl1n+SF{Q26t}HWudT@;NHHOPfKFPcW zx(7_aOyLUVS7J^VXPUEb*jCocsm^gDyu8lnbDSeT^NHq4$Fh=p`mt|+FBHfQ{t=dY z@yaF3q*=)c{dtOVHB*j=dp%}eFZDBMuGfXomDlbt`Dq#RE<4^PC&y65a`|+IQFUax zkU#UBkg^GqldXjFCkY(bJn_n30~m7W}5y>jyGFb&%N?k!ZT4UHjXXldUTxbE~$M2ii*EVI2g6|>SSKj-`cl^ zS2{qVd!>k#X<^=T1`pYVwVXAYIS3CT`4x$I*{8lilkfWOk9S#CUuAZTX59Iz(LwS+ z&(BvI6(lE!&sB=Gz2TSMz$MBlrC0fdmpzd+q@!?S*!~ZG@r?gxEmhAl_kQofY;o#w}YI z%f=yO&hY2r#5Iu|5pEVW{_Z)`8SfuU_CB!f1@Dc9neAPR-R)m@yp3cR3IFxp;Dd+z zAveW@T^5EPT*7PKJH3!P`E=?(M}}mB?XvrXFDEDp&c8Hs$vgXX)xkR%PZkOFOjfY4 wI=W^u`vw8N&~^2aw%;TpS@E^0*-F#j-ky85}Sb4q9e0A90n^8f$< literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/window_undock_pressed.png b/src/ui/qdarkstyle/rc/window_undock_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..4ccf8a5400100d632d6bd41708ce37ec0352c514 GIT binary patch literal 523 zcmV+m0`&cfP){4i2J=xJbp+PAYu@7eNY+_7RFhL1RIOB5Lk&C@E>{Z4(>KVE^gn=H&d}J@?*2 zfd4LP^l~VA-eY!&T`qFgZWzT*P`<-vSt|04!$?N?pVU%&`?Va3dg&!&*B2qUk93o$YW4sC N002ovPDHLkV1oPC;6nfa literal 0 HcmV?d00001 diff --git a/src/ui/qdarkstyle/rc/window_undock_pressed@2x.png b/src/ui/qdarkstyle/rc/window_undock_pressed@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..fba29fc99ad720a150aff2d7d88f9f90d4ba7f20 GIT binary patch literal 880 zcmV-$1CRWPP)5euiWVSpAdjcCj!(%x3{~0oW>UONu1`b4)ZPT3Sc4chCLw znk*GSD3LlYK;r-+GIbP^vB9x?GWx301W|8gE1rr8&`WIGiwA&+0L@s5bhOfhx>i6a zmOdc_W*`yZI#aU2C*4*;%>h{blkNQX_Xhxb8)9w!$k3LygXMcd&A*^sEDWIeE*=0P zE8hR3<^Wc9`=-Rrdp-AXR|CB0!r?twM-k8Gd@k7|-CM{IPNdo6V~6)<*~OJ%0?=(h zHzokx26STr&}~3Bz7L>kBNVmJZ%?R9^@ZiT9l}@ zCOo^gaBunyF~%9#q1uQG^EUWGJ{f&i%a^Kjf{sqL;w@msQ$t`p*L3j!&>=u?!@a3K zl_IVISc!+{nP^a@@EQq#X*iTf9abga2w-<#Y9AAisuHY&fB-!SU3|1nMR7*}%gb~F z3?*U`bcojCH5G;3Zh=!OgybP5zT5)XsBd|d_^SDZ2yx(m3M0UBClk$hNvlw;Ie_d~ zw@jl`5i33cproR-C%$imO#r$L=*9$~+kkFN0J;t6#sr|-fNo3xx((>Y1fbi1Zt6K7 zpo{(0-uSM8rSbv4t$?}m0bd2cL{sHsehMHXT3ScS2b*aRkfCIQV|kZz!+ux+B?5XY zofqEhE1>FO>CG6x>T&tt9~#b0T>j-X+3~8m0nb`he99$zIvZWoZ4bycTBH#$=$neV zZUMYjAtVa{Z&cKE1R(6vEdWIoV)a764+wEjMQuj_-^b(c!Pp3A16E(1ENAzK6n0UQHhsWh`f2EcSM$Tz> + + rc/arrow_down.png + rc/arrow_down@2x.png + rc/arrow_down_disabled.png + rc/arrow_down_disabled@2x.png + rc/arrow_down_focus.png + rc/arrow_down_focus@2x.png + rc/arrow_down_pressed.png + rc/arrow_down_pressed@2x.png + rc/arrow_left.png + rc/arrow_left@2x.png + rc/arrow_left_disabled.png + rc/arrow_left_disabled@2x.png + rc/arrow_left_focus.png + rc/arrow_left_focus@2x.png + rc/arrow_left_pressed.png + rc/arrow_left_pressed@2x.png + rc/arrow_right.png + rc/arrow_right@2x.png + rc/arrow_right_disabled.png + rc/arrow_right_disabled@2x.png + rc/arrow_right_focus.png + rc/arrow_right_focus@2x.png + rc/arrow_right_pressed.png + rc/arrow_right_pressed@2x.png + rc/arrow_up.png + rc/arrow_up@2x.png + rc/arrow_up_disabled.png + rc/arrow_up_disabled@2x.png + rc/arrow_up_focus.png + rc/arrow_up_focus@2x.png + rc/arrow_up_pressed.png + rc/arrow_up_pressed@2x.png + rc/base_icon.png + rc/base_icon@2x.png + rc/base_icon_disabled.png + rc/base_icon_disabled@2x.png + rc/base_icon_focus.png + rc/base_icon_focus@2x.png + rc/base_icon_pressed.png + rc/base_icon_pressed@2x.png + rc/branch_closed.png + rc/branch_closed@2x.png + rc/branch_closed_disabled.png + rc/branch_closed_disabled@2x.png + rc/branch_closed_focus.png + rc/branch_closed_focus@2x.png + rc/branch_closed_pressed.png + rc/branch_closed_pressed@2x.png + rc/branch_end.png + rc/branch_end@2x.png + rc/branch_end_disabled.png + rc/branch_end_disabled@2x.png + rc/branch_end_focus.png + rc/branch_end_focus@2x.png + rc/branch_end_pressed.png + rc/branch_end_pressed@2x.png + rc/branch_line.png + rc/branch_line@2x.png + rc/branch_line_disabled.png + rc/branch_line_disabled@2x.png + rc/branch_line_focus.png + rc/branch_line_focus@2x.png + rc/branch_line_pressed.png + rc/branch_line_pressed@2x.png + rc/branch_more.png + rc/branch_more@2x.png + rc/branch_more_disabled.png + rc/branch_more_disabled@2x.png + rc/branch_more_focus.png + rc/branch_more_focus@2x.png + rc/branch_more_pressed.png + rc/branch_more_pressed@2x.png + rc/branch_open.png + rc/branch_open@2x.png + rc/branch_open_disabled.png + rc/branch_open_disabled@2x.png + rc/branch_open_focus.png + rc/branch_open_focus@2x.png + rc/branch_open_pressed.png + rc/branch_open_pressed@2x.png + rc/checkbox_checked.png + rc/checkbox_checked@2x.png + rc/checkbox_checked_disabled.png + rc/checkbox_checked_disabled@2x.png + rc/checkbox_checked_focus.png + rc/checkbox_checked_focus@2x.png + rc/checkbox_checked_pressed.png + rc/checkbox_checked_pressed@2x.png + rc/checkbox_indeterminate.png + rc/checkbox_indeterminate@2x.png + rc/checkbox_indeterminate_disabled.png + rc/checkbox_indeterminate_disabled@2x.png + rc/checkbox_indeterminate_focus.png + rc/checkbox_indeterminate_focus@2x.png + rc/checkbox_indeterminate_pressed.png + rc/checkbox_indeterminate_pressed@2x.png + rc/checkbox_unchecked.png + rc/checkbox_unchecked@2x.png + rc/checkbox_unchecked_disabled.png + rc/checkbox_unchecked_disabled@2x.png + rc/checkbox_unchecked_focus.png + rc/checkbox_unchecked_focus@2x.png + rc/checkbox_unchecked_pressed.png + rc/checkbox_unchecked_pressed@2x.png + rc/line_horizontal.png + rc/line_horizontal@2x.png + rc/line_horizontal_disabled.png + rc/line_horizontal_disabled@2x.png + rc/line_horizontal_focus.png + rc/line_horizontal_focus@2x.png + rc/line_horizontal_pressed.png + rc/line_horizontal_pressed@2x.png + rc/line_vertical.png + rc/line_vertical@2x.png + rc/line_vertical_disabled.png + rc/line_vertical_disabled@2x.png + rc/line_vertical_focus.png + rc/line_vertical_focus@2x.png + rc/line_vertical_pressed.png + rc/line_vertical_pressed@2x.png + rc/radio_checked.png + rc/radio_checked@2x.png + rc/radio_checked_disabled.png + rc/radio_checked_disabled@2x.png + rc/radio_checked_focus.png + rc/radio_checked_focus@2x.png + rc/radio_checked_pressed.png + rc/radio_checked_pressed@2x.png + rc/radio_unchecked.png + rc/radio_unchecked@2x.png + rc/radio_unchecked_disabled.png + rc/radio_unchecked_disabled@2x.png + rc/radio_unchecked_focus.png + rc/radio_unchecked_focus@2x.png + rc/radio_unchecked_pressed.png + rc/radio_unchecked_pressed@2x.png + rc/toolbar_move_horizontal.png + rc/toolbar_move_horizontal@2x.png + rc/toolbar_move_horizontal_disabled.png + rc/toolbar_move_horizontal_disabled@2x.png + rc/toolbar_move_horizontal_focus.png + rc/toolbar_move_horizontal_focus@2x.png + rc/toolbar_move_horizontal_pressed.png + rc/toolbar_move_horizontal_pressed@2x.png + rc/toolbar_move_vertical.png + rc/toolbar_move_vertical@2x.png + rc/toolbar_move_vertical_disabled.png + rc/toolbar_move_vertical_disabled@2x.png + rc/toolbar_move_vertical_focus.png + rc/toolbar_move_vertical_focus@2x.png + rc/toolbar_move_vertical_pressed.png + rc/toolbar_move_vertical_pressed@2x.png + rc/toolbar_separator_horizontal.png + rc/toolbar_separator_horizontal@2x.png + rc/toolbar_separator_horizontal_disabled.png + rc/toolbar_separator_horizontal_disabled@2x.png + rc/toolbar_separator_horizontal_focus.png + rc/toolbar_separator_horizontal_focus@2x.png + rc/toolbar_separator_horizontal_pressed.png + rc/toolbar_separator_horizontal_pressed@2x.png + rc/toolbar_separator_vertical.png + rc/toolbar_separator_vertical@2x.png + rc/toolbar_separator_vertical_disabled.png + rc/toolbar_separator_vertical_disabled@2x.png + rc/toolbar_separator_vertical_focus.png + rc/toolbar_separator_vertical_focus@2x.png + rc/toolbar_separator_vertical_pressed.png + rc/toolbar_separator_vertical_pressed@2x.png + rc/transparent.png + rc/transparent@2x.png + rc/transparent_disabled.png + rc/transparent_disabled@2x.png + rc/transparent_focus.png + rc/transparent_focus@2x.png + rc/transparent_pressed.png + rc/transparent_pressed@2x.png + rc/window_close.png + rc/window_close@2x.png + rc/window_close_disabled.png + rc/window_close_disabled@2x.png + rc/window_close_focus.png + rc/window_close_focus@2x.png + rc/window_close_pressed.png + rc/window_close_pressed@2x.png + rc/window_grip.png + rc/window_grip@2x.png + rc/window_grip_disabled.png + rc/window_grip_disabled@2x.png + rc/window_grip_focus.png + rc/window_grip_focus@2x.png + rc/window_grip_pressed.png + rc/window_grip_pressed@2x.png + rc/window_minimize.png + rc/window_minimize@2x.png + rc/window_minimize_disabled.png + rc/window_minimize_disabled@2x.png + rc/window_minimize_focus.png + rc/window_minimize_focus@2x.png + rc/window_minimize_pressed.png + rc/window_minimize_pressed@2x.png + rc/window_undock.png + rc/window_undock@2x.png + rc/window_undock_disabled.png + rc/window_undock_disabled@2x.png + rc/window_undock_focus.png + rc/window_undock_focus@2x.png + rc/window_undock_pressed.png + rc/window_undock_pressed@2x.png + + + style.qss + + diff --git a/src/ui/qdarkstyle/style.qss b/src/ui/qdarkstyle/style.qss new file mode 100644 index 0000000..9b1368d --- /dev/null +++ b/src/ui/qdarkstyle/style.qss @@ -0,0 +1,2184 @@ +/* QDarkStyleSheet ----------------------------------------------------------- + +This is the main style sheet, the palette has nine colors. + +It is based on three selecting colors, three greyish (background) colors +plus three whitish (foreground) colors. Each set of widgets of the same +type have a header like this: + + ------------------ + GroupName -------- + ------------------ + +And each widget is separated with a header like this: + + QWidgetName ------ + +This makes more easy to find and change some css field. The basic +configuration is described bellow. + + BACKGROUND ----------- + + Light (unpressed) + Normal (border, disabled, pressed, checked, toolbars, menus) + Dark (background) + + FOREGROUND ----------- + + Light (texts/labels) + Normal (not used yet) + Dark (disabled texts) + + SELECTION ------------ + + Light (selection/hover/active) + Normal (selected) + Dark (selected disabled) + +If a stranger configuration is required because of a bugfix or anything +else, keep the comment on the line above so nobody changes it, including the +issue number. + +*/ +/* + +See Qt documentation: + + - https://doc.qt.io/qt-5/stylesheet.html + - https://doc.qt.io/qt-5/stylesheet-reference.html + - https://doc.qt.io/qt-5/stylesheet-examples.html + +--------------------------------------------------------------------------- */ +/* QWidget ---------------------------------------------------------------- + +--------------------------------------------------------------------------- */ +QWidget { + background-color: #19232D; + border: 0px solid #32414B; + padding: 0px; + color: #F0F0F0; + selection-background-color: #1464A0; + selection-color: #F0F0F0; +} + +QWidget:disabled { + background-color: #19232D; + color: #787878; + selection-background-color: #14506E; + selection-color: #787878; +} + +QWidget::item:selected { + background-color: #1464A0; +} + +QWidget::item:hover { + color: #32414B; +} + +/* QMainWindow ------------------------------------------------------------ + +This adjusts the splitter in the dock widget, not qsplitter +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qmainwindow + +--------------------------------------------------------------------------- */ +QMainWindow::separator { + background-color: #32414B; + border: 0px solid #19232D; + spacing: 0px; + padding: 2px; +} + +QMainWindow::separator:hover { + background-color: #505F69; + border: 0px solid #148CD2; +} + +QMainWindow::separator:horizontal { + width: 5px; + margin-top: 2px; + margin-bottom: 2px; + image: url(":/qss_icons/rc/toolbar_separator_vertical.png"); +} + +QMainWindow::separator:vertical { + height: 5px; + margin-left: 2px; + margin-right: 2px; + image: url(":/qss_icons/rc/toolbar_separator_horizontal.png"); +} + +/* QToolTip --------------------------------------------------------------- + +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qtooltip + +--------------------------------------------------------------------------- */ +QToolTip { + background-color: #148CD2; + border: 1px solid #19232D; + color: #19232D; + /* Remove padding, for fix combo box tooltip */ + padding: 0px; + /* Remove opacity, fix #174 - may need to use RGBA */ +} + +/* QStatusBar ------------------------------------------------------------- + +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qstatusbar + +--------------------------------------------------------------------------- */ +QStatusBar { + border: 1px solid #32414B; + /* Fixes Spyder #9120, #9121 */ + background: #32414B; + /* Fixes #205, white vertical borders separating items */ +} + +QStatusBar::item { + border: none; +} + +QStatusBar QToolTip { + background-color: #148CD2; + border: 1px solid #19232D; + color: #19232D; + /* Remove padding, for fix combo box tooltip */ + padding: 0px; + /* Reducing transparency to read better */ + opacity: 230; +} + +QStatusBar QLabel { + /* Fixes Spyder #9120, #9121 */ + background: transparent; +} + +/* QCheckBox -------------------------------------------------------------- + +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qcheckbox + +--------------------------------------------------------------------------- */ +QCheckBox { + background-color: #19232D; + color: #F0F0F0; + spacing: 4px; + outline: none; + padding-top: 4px; + padding-bottom: 4px; +} + +QCheckBox:focus { + border: none; +} + +QCheckBox QWidget:disabled { + background-color: #19232D; + color: #787878; +} + +QCheckBox::indicator { + margin-left: 4px; + height: 16px; + width: 16px; +} + +QCheckBox::indicator:unchecked { + image: url(":/qss_icons/rc/checkbox_unchecked.png"); +} + +QCheckBox::indicator:unchecked:hover, QCheckBox::indicator:unchecked:focus, QCheckBox::indicator:unchecked:pressed { + border: none; + image: url(":/qss_icons/rc/checkbox_unchecked_focus.png"); +} + +QCheckBox::indicator:unchecked:disabled { + image: url(":/qss_icons/rc/checkbox_unchecked_disabled.png"); +} + +QCheckBox::indicator:checked { + image: url(":/qss_icons/rc/checkbox_checked.png"); +} + +QCheckBox::indicator:checked:hover, QCheckBox::indicator:checked:focus, QCheckBox::indicator:checked:pressed { + border: none; + image: url(":/qss_icons/rc/checkbox_checked_focus.png"); +} + +QCheckBox::indicator:checked:disabled { + image: url(":/qss_icons/rc/checkbox_checked_disabled.png"); +} + +QCheckBox::indicator:indeterminate { + image: url(":/qss_icons/rc/checkbox_indeterminate.png"); +} + +QCheckBox::indicator:indeterminate:disabled { + image: url(":/qss_icons/rc/checkbox_indeterminate_disabled.png"); +} + +QCheckBox::indicator:indeterminate:focus, QCheckBox::indicator:indeterminate:hover, QCheckBox::indicator:indeterminate:pressed { + image: url(":/qss_icons/rc/checkbox_indeterminate_focus.png"); +} + +/* QGroupBox -------------------------------------------------------------- + +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qgroupbox + +--------------------------------------------------------------------------- */ +QGroupBox { + font-weight: bold; + border: 1px solid #32414B; + border-radius: 4px; + padding: 4px; + margin-top: 16px; +} + +QGroupBox::title { + subcontrol-origin: margin; + subcontrol-position: top left; + left: 3px; + padding-left: 3px; + padding-right: 5px; + padding-top: 8px; + padding-bottom: 16px; +} + +QGroupBox::indicator { + margin-left: 2px; + height: 12px; + width: 12px; +} + +QGroupBox::indicator:unchecked:hover, QGroupBox::indicator:unchecked:focus, QGroupBox::indicator:unchecked:pressed { + border: none; + image: url(":/qss_icons/rc/checkbox_unchecked_focus.png"); +} + +QGroupBox::indicator:unchecked:disabled { + image: url(":/qss_icons/rc/checkbox_unchecked_disabled.png"); +} + +QGroupBox::indicator:checked:hover, QGroupBox::indicator:checked:focus, QGroupBox::indicator:checked:pressed { + border: none; + image: url(":/qss_icons/rc/checkbox_checked_focus.png"); +} + +QGroupBox::indicator:checked:disabled { + image: url(":/qss_icons/rc/checkbox_checked_disabled.png"); +} + +/* QRadioButton ----------------------------------------------------------- + +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qradiobutton + +--------------------------------------------------------------------------- */ +QRadioButton { + background-color: #19232D; + color: #F0F0F0; + spacing: 4px; + padding: 0px; + border: none; + outline: none; +} + +QRadioButton:focus { + border: none; +} + +QRadioButton:disabled { + background-color: #19232D; + color: #787878; + border: none; + outline: none; +} + +QRadioButton QWidget { + background-color: #19232D; + color: #F0F0F0; + spacing: 0px; + padding: 0px; + outline: none; + border: none; +} + +QRadioButton::indicator { + border: none; + outline: none; + margin-left: 4px; + height: 16px; + width: 16px; +} + +QRadioButton::indicator:unchecked { + image: url(":/qss_icons/rc/radio_unchecked.png"); +} + +QRadioButton::indicator:unchecked:hover, QRadioButton::indicator:unchecked:focus, QRadioButton::indicator:unchecked:pressed { + border: none; + outline: none; + image: url(":/qss_icons/rc/radio_unchecked_focus.png"); +} + +QRadioButton::indicator:unchecked:disabled { + image: url(":/qss_icons/rc/radio_unchecked_disabled.png"); +} + +QRadioButton::indicator:checked { + border: none; + outline: none; + image: url(":/qss_icons/rc/radio_checked.png"); +} + +QRadioButton::indicator:checked:hover, QRadioButton::indicator:checked:focus, QRadioButton::indicator:checked:pressed { + border: none; + outline: none; + image: url(":/qss_icons/rc/radio_checked_focus.png"); +} + +QRadioButton::indicator:checked:disabled { + outline: none; + image: url(":/qss_icons/rc/radio_checked_disabled.png"); +} + +/* QMenuBar --------------------------------------------------------------- + +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qmenubar + +--------------------------------------------------------------------------- */ +QMenuBar { + background-color: #32414B; + padding: 2px; + border: 1px solid #19232D; + color: #F0F0F0; +} + +QMenuBar:focus { + border: 1px solid #148CD2; +} + +QMenuBar::item { + background: transparent; + padding: 4px; +} + +QMenuBar::item:selected { + padding: 4px; + background: transparent; + border: 0px solid #32414B; +} + +QMenuBar::item:pressed { + padding: 4px; + border: 0px solid #32414B; + background-color: #148CD2; + color: #F0F0F0; + margin-bottom: 0px; + padding-bottom: 0px; +} + +/* QMenu ------------------------------------------------------------------ + +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qmenu + +--------------------------------------------------------------------------- */ +QMenu { + border: 0px solid #32414B; + color: #F0F0F0; + margin: 0px; +} + +QMenu::separator { + height: 1px; + background-color: #505F69; + color: #F0F0F0; +} + +QMenu::icon { + margin: 0px; + padding-left: 8px; +} + +QMenu::item { + background-color: #32414B; + padding: 4px 24px 4px 24px; + /* Reserve space for selection border */ + border: 1px transparent #32414B; +} + +QMenu::item:selected { + color: #F0F0F0; +} + +QMenu::indicator { + width: 12px; + height: 12px; + padding-left: 6px; + /* non-exclusive indicator = check box style indicator (see QActionGroup::setExclusive) */ + /* exclusive indicator = radio button style indicator (see QActionGroup::setExclusive) */ +} + +QMenu::indicator:non-exclusive:unchecked { + image: url(":/qss_icons/rc/checkbox_unchecked.png"); +} + +QMenu::indicator:non-exclusive:unchecked:selected { + image: url(":/qss_icons/rc/checkbox_unchecked_disabled.png"); +} + +QMenu::indicator:non-exclusive:checked { + image: url(":/qss_icons/rc/checkbox_checked.png"); +} + +QMenu::indicator:non-exclusive:checked:selected { + image: url(":/qss_icons/rc/checkbox_checked_disabled.png"); +} + +QMenu::indicator:exclusive:unchecked { + image: url(":/qss_icons/rc/radio_unchecked.png"); +} + +QMenu::indicator:exclusive:unchecked:selected { + image: url(":/qss_icons/rc/radio_unchecked_disabled.png"); +} + +QMenu::indicator:exclusive:checked { + image: url(":/qss_icons/rc/radio_checked.png"); +} + +QMenu::indicator:exclusive:checked:selected { + image: url(":/qss_icons/rc/radio_checked_disabled.png"); +} + +QMenu::right-arrow { + margin: 5px; + image: url(":/qss_icons/rc/arrow_right.png"); + height: 12px; + width: 12px; +} + +/* QAbstractItemView ------------------------------------------------------ + +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qcombobox + +--------------------------------------------------------------------------- */ +QAbstractItemView { + alternate-background-color: #19232D; + color: #F0F0F0; + border: 1px solid #32414B; + border-radius: 4px; +} + +QAbstractItemView QLineEdit { + padding: 2px; +} + +/* QAbstractScrollArea ---------------------------------------------------- + +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qabstractscrollarea + +--------------------------------------------------------------------------- */ +QAbstractScrollArea { + background-color: #19232D; + border: 1px solid #32414B; + border-radius: 4px; + padding: 2px; + /* fix #159 */ + min-height: 1.25em; + /* fix #159 */ + color: #F0F0F0; +} + +QAbstractScrollArea:disabled { + color: #787878; +} + +/* QScrollArea ------------------------------------------------------------ + +--------------------------------------------------------------------------- */ +QScrollArea QWidget QWidget:disabled { + background-color: #19232D; +} + +/* QScrollBar ------------------------------------------------------------- + +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qscrollbar + +--------------------------------------------------------------------------- */ +QScrollBar:horizontal { + height: 16px; + margin: 2px 16px 2px 16px; + border: 1px solid #32414B; + border-radius: 4px; + background-color: #19232D; +} + +QScrollBar:vertical { + background-color: #19232D; + width: 16px; + margin: 16px 2px 16px 2px; + border: 1px solid #32414B; + border-radius: 4px; +} + +QScrollBar::handle:horizontal { + background-color: #787878; + border: 1px solid #32414B; + border-radius: 4px; + min-width: 8px; +} + +QScrollBar::handle:horizontal:hover { + background-color: #148CD2; + border: 1px solid #148CD2; + border-radius: 4px; + min-width: 8px; +} + +QScrollBar::handle:horizontal:focus { + border: 1px solid #1464A0; +} + +QScrollBar::handle:vertical { + background-color: #787878; + border: 1px solid #32414B; + min-height: 8px; + border-radius: 4px; +} + +QScrollBar::handle:vertical:hover { + background-color: #148CD2; + border: 1px solid #148CD2; + border-radius: 4px; + min-height: 8px; +} + +QScrollBar::handle:vertical:focus { + border: 1px solid #1464A0; +} + +QScrollBar::add-line:horizontal { + margin: 0px 0px 0px 0px; + border-image: url(":/qss_icons/rc/arrow_right_disabled.png"); + height: 12px; + width: 12px; + subcontrol-position: right; + subcontrol-origin: margin; +} + +QScrollBar::add-line:horizontal:hover, QScrollBar::add-line:horizontal:on { + border-image: url(":/qss_icons/rc/arrow_right.png"); + height: 12px; + width: 12px; + subcontrol-position: right; + subcontrol-origin: margin; +} + +QScrollBar::add-line:vertical { + margin: 3px 0px 3px 0px; + border-image: url(":/qss_icons/rc/arrow_down_disabled.png"); + height: 12px; + width: 12px; + subcontrol-position: bottom; + subcontrol-origin: margin; +} + +QScrollBar::add-line:vertical:hover, QScrollBar::add-line:vertical:on { + border-image: url(":/qss_icons/rc/arrow_down.png"); + height: 12px; + width: 12px; + subcontrol-position: bottom; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:horizontal { + margin: 0px 3px 0px 3px; + border-image: url(":/qss_icons/rc/arrow_left_disabled.png"); + height: 12px; + width: 12px; + subcontrol-position: left; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:horizontal:hover, QScrollBar::sub-line:horizontal:on { + border-image: url(":/qss_icons/rc/arrow_left.png"); + height: 12px; + width: 12px; + subcontrol-position: left; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:vertical { + margin: 3px 0px 3px 0px; + border-image: url(":/qss_icons/rc/arrow_up_disabled.png"); + height: 12px; + width: 12px; + subcontrol-position: top; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:vertical:hover, QScrollBar::sub-line:vertical:on { + border-image: url(":/qss_icons/rc/arrow_up.png"); + height: 12px; + width: 12px; + subcontrol-position: top; + subcontrol-origin: margin; +} + +QScrollBar::up-arrow:horizontal, QScrollBar::down-arrow:horizontal { + background: none; +} + +QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical { + background: none; +} + +QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal { + background: none; +} + +QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { + background: none; +} + +/* QTextEdit -------------------------------------------------------------- + +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-specific-widgets + +--------------------------------------------------------------------------- */ +QTextEdit { + background-color: #19232D; + color: #F0F0F0; + border-radius: 4px; + border: 1px solid #32414B; +} + +QTextEdit:hover { + border: 1px solid #148CD2; + color: #F0F0F0; +} + +QTextEdit:focus { + border: 1px solid #1464A0; +} + +QTextEdit:selected { + background: #1464A0; + color: #32414B; +} + +/* QPlainTextEdit --------------------------------------------------------- + +--------------------------------------------------------------------------- */ +QPlainTextEdit { + background-color: #19232D; + color: #F0F0F0; + border-radius: 4px; + border: 1px solid #32414B; +} + +QPlainTextEdit:hover { + border: 1px solid #148CD2; + color: #F0F0F0; +} + +QPlainTextEdit:focus { + border: 1px solid #1464A0; +} + +QPlainTextEdit:selected { + background: #1464A0; + color: #32414B; +} + +/* QSizeGrip -------------------------------------------------------------- + +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qsizegrip + +--------------------------------------------------------------------------- */ +QSizeGrip { + background: transparent; + width: 12px; + height: 12px; + image: url(":/qss_icons/rc/window_grip.png"); +} + +/* QStackedWidget --------------------------------------------------------- + +--------------------------------------------------------------------------- */ +QStackedWidget { + padding: 2px; + border: 1px solid #32414B; + border: 1px solid #19232D; +} + +/* QToolBar --------------------------------------------------------------- + +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qtoolbar + +--------------------------------------------------------------------------- */ +QToolBar { + background-color: #32414B; + border-bottom: 1px solid #19232D; + padding: 2px; + font-weight: bold; + spacing: 2px; +} + +QToolBar QToolButton { + background-color: #32414B; + border: 1px solid #32414B; +} + +QToolBar QToolButton:hover { + border: 1px solid #148CD2; +} + +QToolBar QToolButton:checked { + border: 1px solid #19232D; + background-color: #19232D; +} + +QToolBar QToolButton:checked:hover { + border: 1px solid #148CD2; +} + +QToolBar::handle:horizontal { + width: 16px; + image: url(":/qss_icons/rc/toolbar_move_horizontal.png"); +} + +QToolBar::handle:vertical { + height: 16px; + image: url(":/qss_icons/rc/toolbar_move_vertical.png"); +} + +QToolBar::separator:horizontal { + width: 16px; + image: url(":/qss_icons/rc/toolbar_separator_horizontal.png"); +} + +QToolBar::separator:vertical { + height: 16px; + image: url(":/qss_icons/rc/toolbar_separator_vertical.png"); +} + +QToolButton#qt_toolbar_ext_button { + background: #32414B; + border: 0px; + color: #F0F0F0; + image: url(":/qss_icons/rc/arrow_right.png"); +} + +/* QAbstractSpinBox ------------------------------------------------------- + +--------------------------------------------------------------------------- */ +QAbstractSpinBox { + background-color: #19232D; + border: 1px solid #32414B; + color: #F0F0F0; + /* This fixes 103, 111 */ + padding-top: 2px; + /* This fixes 103, 111 */ + padding-bottom: 2px; + padding-left: 4px; + padding-right: 4px; + border-radius: 4px; + /* min-width: 5px; removed to fix 109 */ +} + +QAbstractSpinBox:up-button { + background-color: transparent #19232D; + subcontrol-origin: border; + subcontrol-position: top right; + border-left: 1px solid #32414B; + border-bottom: 1px solid #32414B; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + margin: 1px; + width: 12px; + margin-bottom: -1px; +} + +QAbstractSpinBox::up-arrow, QAbstractSpinBox::up-arrow:disabled, QAbstractSpinBox::up-arrow:off { + image: url(":/qss_icons/rc/arrow_up_disabled.png"); + height: 8px; + width: 8px; +} + +QAbstractSpinBox::up-arrow:hover { + image: url(":/qss_icons/rc/arrow_up.png"); +} + +QAbstractSpinBox:down-button { + background-color: transparent #19232D; + subcontrol-origin: border; + subcontrol-position: bottom right; + border-left: 1px solid #32414B; + border-top: 1px solid #32414B; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + margin: 1px; + width: 12px; + margin-top: -1px; +} + +QAbstractSpinBox::down-arrow, QAbstractSpinBox::down-arrow:disabled, QAbstractSpinBox::down-arrow:off { + image: url(":/qss_icons/rc/arrow_down_disabled.png"); + height: 8px; + width: 8px; +} + +QAbstractSpinBox::down-arrow:hover { + image: url(":/qss_icons/rc/arrow_down.png"); +} + +QAbstractSpinBox:hover { + border: 1px solid #148CD2; + color: #F0F0F0; +} + +QAbstractSpinBox:focus { + border: 1px solid #1464A0; +} + +QAbstractSpinBox:selected { + background: #1464A0; + color: #32414B; +} + +/* ------------------------------------------------------------------------ */ +/* DISPLAYS --------------------------------------------------------------- */ +/* ------------------------------------------------------------------------ */ +/* QLabel ----------------------------------------------------------------- + +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qframe + +--------------------------------------------------------------------------- */ +QLabel { + background-color: #19232D; + border: 0px solid #32414B; + padding: 2px; + margin: 0px; + color: #F0F0F0; +} + +QLabel:disabled { + background-color: #19232D; + border: 0px solid #32414B; + color: #787878; +} + +/* QTextBrowser ----------------------------------------------------------- + +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qabstractscrollarea + +--------------------------------------------------------------------------- */ +QTextBrowser { + background-color: #19232D; + border: 1px solid #32414B; + color: #F0F0F0; + border-radius: 4px; +} + +QTextBrowser:disabled { + background-color: #19232D; + border: 1px solid #32414B; + color: #787878; + border-radius: 4px; +} + +QTextBrowser:hover, QTextBrowser:!hover, QTextBrowser:selected, QTextBrowser:pressed { + border: 1px solid #32414B; +} + +/* QGraphicsView ---------------------------------------------------------- + +--------------------------------------------------------------------------- */ +QGraphicsView { + background-color: #19232D; + border: 1px solid #32414B; + color: #F0F0F0; + border-radius: 4px; +} + +QGraphicsView:disabled { + background-color: #19232D; + border: 1px solid #32414B; + color: #787878; + border-radius: 4px; +} + +QGraphicsView:hover, QGraphicsView:!hover, QGraphicsView:selected, QGraphicsView:pressed { + border: 1px solid #32414B; +} + +/* QCalendarWidget -------------------------------------------------------- + +--------------------------------------------------------------------------- */ +QCalendarWidget { + border: 1px solid #32414B; + border-radius: 4px; +} + +QCalendarWidget:disabled { + background-color: #19232D; + color: #787878; +} + +/* QLCDNumber ------------------------------------------------------------- + +--------------------------------------------------------------------------- */ +QLCDNumber { + background-color: #19232D; + color: #F0F0F0; +} + +QLCDNumber:disabled { + background-color: #19232D; + color: #787878; +} + +/* QProgressBar ----------------------------------------------------------- + +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qprogressbar + +--------------------------------------------------------------------------- */ +QProgressBar { + background-color: #19232D; + border: 1px solid #32414B; + color: #F0F0F0; + border-radius: 4px; + text-align: center; +} + +QProgressBar:disabled { + background-color: #19232D; + border: 1px solid #32414B; + color: #787878; + border-radius: 4px; + text-align: center; +} + +QProgressBar::chunk { + background-color: #1464A0; + color: #19232D; + border-radius: 4px; +} + +QProgressBar::chunk:disabled { + background-color: #14506E; + color: #787878; + border-radius: 4px; +} + +/* ------------------------------------------------------------------------ */ +/* BUTTONS ---------------------------------------------------------------- */ +/* ------------------------------------------------------------------------ */ +/* QPushButton ------------------------------------------------------------ + +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qpushbutton + +--------------------------------------------------------------------------- */ +QPushButton { + background-color: #505F69; + border: 1px solid #32414B; + color: #F0F0F0; + border-radius: 4px; + padding: 3px; + outline: none; + /* Issue #194 - Special case of QPushButton inside dialogs, for better UI */ + min-width: 80px; +} + +QPushButton:disabled { + background-color: #32414B; + border: 1px solid #32414B; + color: #787878; + border-radius: 4px; + padding: 3px; +} + +QPushButton:checked { + background-color: #32414B; + border: 1px solid #32414B; + border-radius: 4px; + padding: 3px; + outline: none; +} + +QPushButton:checked:disabled { + background-color: #19232D; + border: 1px solid #32414B; + color: #787878; + border-radius: 4px; + padding: 3px; + outline: none; +} + +QPushButton:checked:selected { + background: #1464A0; + color: #32414B; +} + +QPushButton::menu-indicator { + subcontrol-origin: padding; + subcontrol-position: bottom right; + bottom: 4px; +} + +QPushButton:pressed { + background-color: #19232D; + border: 1px solid #19232D; +} + +QPushButton:pressed:hover { + border: 1px solid #148CD2; +} + +QPushButton:hover { + border: 1px solid #148CD2; + color: #F0F0F0; +} + +QPushButton:selected { + background: #1464A0; + color: #32414B; +} + +QPushButton:hover { + border: 1px solid #148CD2; + color: #F0F0F0; +} + +QPushButton:focus { + border: 1px solid #1464A0; +} + +/* QToolButton ------------------------------------------------------------ + +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qtoolbutton + +--------------------------------------------------------------------------- */ +QToolButton { + background-color: transparent; + border: 1px solid transparent; + border-radius: 4px; + margin: 0px; + padding: 2px; + /* The subcontrols below are used only in the DelayedPopup mode */ + /* The subcontrols below are used only in the MenuButtonPopup mode */ + /* The subcontrol below is used only in the InstantPopup or DelayedPopup mode */ +} + +QToolButton:checked { + background-color: transparent; + border: 1px solid #1464A0; +} + +QToolButton:checked:disabled { + border: 1px solid #14506E; +} + +QToolButton:pressed { + margin: 1px; + background-color: transparent; + border: 1px solid #1464A0; +} + +QToolButton:disabled { + border: none; +} + +QToolButton:hover { + border: 1px solid #148CD2; +} + +QToolButton[popupMode="0"] { + /* Only for DelayedPopup */ + padding-right: 2px; +} + +QToolButton[popupMode="1"] { + /* Only for MenuButtonPopup */ + padding-right: 20px; +} + +QToolButton[popupMode="1"]::menu-button { + border: none; +} + +QToolButton[popupMode="1"]::menu-button:hover { + border: none; + border-left: 1px solid #148CD2; + border-radius: 0; +} + +QToolButton[popupMode="2"] { + /* Only for InstantPopup */ + padding-right: 2px; +} + +QToolButton::menu-button { + padding: 2px; + border-radius: 4px; + border: 1px solid #32414B; + width: 12px; + outline: none; +} + +QToolButton::menu-button:hover { + border: 1px solid #148CD2; +} + +QToolButton::menu-button:checked:hover { + border: 1px solid #148CD2; +} + +QToolButton::menu-indicator { + image: url(":/qss_icons/rc/arrow_down.png"); + height: 8px; + width: 8px; + top: 0; + /* Exclude a shift for better image */ + left: -2px; + /* Shift it a bit */ +} + +QToolButton::menu-arrow { + image: url(":/qss_icons/rc/arrow_down.png"); + height: 8px; + width: 8px; +} + +QToolButton::menu-arrow:hover { + image: url(":/qss_icons/rc/arrow_down_focus.png"); +} + +/* QCommandLinkButton ----------------------------------------------------- + +--------------------------------------------------------------------------- */ +QCommandLinkButton { + background-color: transparent; + border: 1px solid #32414B; + color: #F0F0F0; + border-radius: 4px; + padding: 0px; + margin: 0px; +} + +QCommandLinkButton:disabled { + background-color: transparent; + color: #787878; +} + +/* ------------------------------------------------------------------------ */ +/* INPUTS - NO FIELDS ----------------------------------------------------- */ +/* ------------------------------------------------------------------------ */ +/* QComboBox -------------------------------------------------------------- + +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qcombobox + +--------------------------------------------------------------------------- */ +QComboBox { + border: 1px solid #32414B; + border-radius: 4px; + selection-background-color: #1464A0; + padding-left: 4px; + padding-right: 36px; + /* 4 + 16*2 See scrollbar size */ + /* Fixes #103, #111 */ + min-height: 1.5em; + /* padding-top: 2px; removed to fix #132 */ + /* padding-bottom: 2px; removed to fix #132 */ + /* min-width: 75px; removed to fix #109 */ + /* Needed to remove indicator - fix #132 */ +} + +QComboBox QAbstractItemView { + border: 1px solid #32414B; + border-radius: 0; + background-color: #19232D; + selection-background-color: #1464A0; +} + +QComboBox QAbstractItemView:hover { + background-color: #19232D; + color: #F0F0F0; +} + +QComboBox QAbstractItemView:selected { + background: #1464A0; + color: #32414B; +} + +QComboBox QAbstractItemView:alternate { + background: #19232D; +} + +QComboBox:disabled { + background-color: #19232D; + color: #787878; +} + +QComboBox:hover { + border: 1px solid #148CD2; +} + +QComboBox:focus { + border: 1px solid #1464A0; +} + +QComboBox:on { + selection-background-color: #1464A0; +} + +QComboBox::indicator { + border: none; + border-radius: 0; + background-color: transparent; + selection-background-color: transparent; + color: transparent; + selection-color: transparent; + /* Needed to remove indicator - fix #132 */ +} + +QComboBox::indicator:alternate { + background: #19232D; +} + +QComboBox::item:alternate { + background: #19232D; +} + +QComboBox::item:checked { + font-weight: bold; +} + +QComboBox::item:selected { + border: 0px solid transparent; +} + +QComboBox::drop-down { + subcontrol-origin: padding; + subcontrol-position: top right; + width: 12px; + border-left: 1px solid #32414B; +} + +QComboBox::down-arrow { + image: url(":/qss_icons/rc/arrow_down_disabled.png"); + height: 8px; + width: 8px; +} + +QComboBox::down-arrow:on, QComboBox::down-arrow:hover, QComboBox::down-arrow:focus { + image: url(":/qss_icons/rc/arrow_down.png"); +} + +/* QSlider ---------------------------------------------------------------- + +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qslider + +--------------------------------------------------------------------------- */ +QSlider:disabled { + background: #19232D; +} + +QSlider:focus { + border: none; +} + +QSlider::groove:horizontal { + background: #32414B; + border: 1px solid #32414B; + height: 4px; + margin: 0px; + border-radius: 4px; +} + +QSlider::groove:vertical { + background: #32414B; + border: 1px solid #32414B; + width: 4px; + margin: 0px; + border-radius: 4px; +} + +QSlider::add-page:vertical { + background: #1464A0; + border: 1px solid #32414B; + width: 4px; + margin: 0px; + border-radius: 4px; +} + +QSlider::add-page:vertical :disabled { + background: #14506E; +} + +QSlider::sub-page:horizontal { + background: #1464A0; + border: 1px solid #32414B; + height: 4px; + margin: 0px; + border-radius: 4px; +} + +QSlider::sub-page:horizontal:disabled { + background: #14506E; +} + +QSlider::handle:horizontal { + background: #787878; + border: 1px solid #32414B; + width: 8px; + height: 8px; + margin: -8px 0px; + border-radius: 4px; +} + +QSlider::handle:horizontal:hover { + background: #148CD2; + border: 1px solid #148CD2; +} + +QSlider::handle:horizontal:focus { + border: 1px solid #1464A0; +} + +QSlider::handle:vertical { + background: #787878; + border: 1px solid #32414B; + width: 8px; + height: 8px; + margin: 0 -8px; + border-radius: 4px; +} + +QSlider::handle:vertical:hover { + background: #148CD2; + border: 1px solid #148CD2; +} + +QSlider::handle:vertical:focus { + border: 1px solid #1464A0; +} + +/* QLineEdit -------------------------------------------------------------- + +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qlineedit + +--------------------------------------------------------------------------- */ +QLineEdit { + background-color: #19232D; + padding-top: 2px; + /* This QLineEdit fix 103, 111 */ + padding-bottom: 2px; + /* This QLineEdit fix 103, 111 */ + padding-left: 4px; + padding-right: 4px; + border-style: solid; + border: 1px solid #32414B; + border-radius: 4px; + color: #F0F0F0; +} + +QLineEdit:disabled { + background-color: #19232D; + color: #787878; +} + +QLineEdit:hover { + border: 1px solid #148CD2; + color: #F0F0F0; +} + +QLineEdit:focus { + border: 1px solid #1464A0; +} + +QLineEdit:selected { + background-color: #1464A0; + color: #32414B; +} + +/* QTabWiget -------------------------------------------------------------- + +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qtabwidget-and-qtabbar + +--------------------------------------------------------------------------- */ +QTabWidget { + padding: 2px; + selection-background-color: #32414B; +} + +QTabWidget QWidget { + /* Fixes #189 */ + border-radius: 4px; +} + +QTabWidget::pane { + border: 1px solid #32414B; + border-radius: 4px; + margin: 0px; + /* Fixes double border inside pane with pyqt5 */ + padding: 0px; +} + +QTabWidget::pane:selected { + background-color: #32414B; + border: 1px solid #1464A0; +} + +/* QTabBar ---------------------------------------------------------------- + +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qtabwidget-and-qtabbar + +--------------------------------------------------------------------------- */ +QTabBar { + qproperty-drawBase: 0; + border-radius: 4px; + margin: 0px; + padding: 2px; + border: 0; + /* left: 5px; move to the right by 5px - removed for fix */ +} + +QTabBar::close-button { + border: 0; + margin: 2px; + padding: 2px; + image: url(":/qss_icons/rc/window_close.png"); +} + +QTabBar::close-button:hover { + image: url(":/qss_icons/rc/window_close_focus.png"); +} + +QTabBar::close-button:pressed { + image: url(":/qss_icons/rc/window_close_pressed.png"); +} + +/* QTabBar::tab - selected ------------------------------------------------ + +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qtabwidget-and-qtabbar + +--------------------------------------------------------------------------- */ +QTabBar::tab { + /* !selected and disabled ----------------------------------------- */ + /* selected ------------------------------------------------------- */ +} + +QTabBar::tab:top:selected:disabled { + border-bottom: 3px solid #14506E; + color: #787878; + background-color: #32414B; +} + +QTabBar::tab:bottom:selected:disabled { + border-top: 3px solid #14506E; + color: #787878; + background-color: #32414B; +} + +QTabBar::tab:left:selected:disabled { + border-right: 3px solid #14506E; + color: #787878; + background-color: #32414B; +} + +QTabBar::tab:right:selected:disabled { + border-left: 3px solid #14506E; + color: #787878; + background-color: #32414B; +} + +QTabBar::tab:top:!selected:disabled { + border-bottom: 3px solid #19232D; + color: #787878; + background-color: #19232D; +} + +QTabBar::tab:bottom:!selected:disabled { + border-top: 3px solid #19232D; + color: #787878; + background-color: #19232D; +} + +QTabBar::tab:left:!selected:disabled { + border-right: 3px solid #19232D; + color: #787878; + background-color: #19232D; +} + +QTabBar::tab:right:!selected:disabled { + border-left: 3px solid #19232D; + color: #787878; + background-color: #19232D; +} + +QTabBar::tab:top:!selected { + border-bottom: 2px solid #19232D; + margin-top: 2px; +} + +QTabBar::tab:bottom:!selected { + border-top: 2px solid #19232D; + margin-bottom: 3px; +} + +QTabBar::tab:left:!selected { + border-left: 2px solid #19232D; + margin-right: 2px; +} + +QTabBar::tab:right:!selected { + border-right: 2px solid #19232D; + margin-left: 2px; +} + +QTabBar::tab:top { + background-color: #32414B; + color: #F0F0F0; + margin-left: 2px; + padding-left: 4px; + padding-right: 4px; + padding-top: 2px; + padding-bottom: 2px; + min-width: 5px; + border-bottom: 3px solid #32414B; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} + +QTabBar::tab:top:selected { + background-color: #505F69; + color: #F0F0F0; + border-bottom: 3px solid #1464A0; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} + +QTabBar::tab:top:!selected:hover { + border: 1px solid #148CD2; + border-bottom: 3px solid #148CD2; + /* Fixes spyder-ide/spyder#9766 */ + padding-left: 4px; + padding-right: 4px; +} + +QTabBar::tab:bottom { + color: #F0F0F0; + border-top: 3px solid #32414B; + background-color: #32414B; + margin-left: 2px; + padding-left: 4px; + padding-right: 4px; + padding-top: 2px; + padding-bottom: 2px; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; + min-width: 5px; +} + +QTabBar::tab:bottom:selected { + color: #F0F0F0; + background-color: #505F69; + border-top: 3px solid #1464A0; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; +} + +QTabBar::tab:bottom:!selected:hover { + border: 1px solid #148CD2; + border-top: 3px solid #148CD2; + /* Fixes spyder-ide/spyder#9766 */ + padding-left: 4px; + padding-right: 4px; +} + +QTabBar::tab:left { + color: #F0F0F0; + background-color: #32414B; + margin-top: 2px; + padding-left: 2px; + padding-right: 2px; + padding-top: 4px; + padding-bottom: 4px; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + min-height: 5px; +} + +QTabBar::tab:left:selected { + color: #F0F0F0; + background-color: #505F69; + border-right: 3px solid #1464A0; +} + +QTabBar::tab:left:!selected:hover { + border: 1px solid #148CD2; + border-right: 3px solid #148CD2; + padding: 0px; +} + +QTabBar::tab:right { + color: #F0F0F0; + background-color: #32414B; + margin-top: 2px; + padding-left: 2px; + padding-right: 2px; + padding-top: 4px; + padding-bottom: 4px; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + min-height: 5px; +} + +QTabBar::tab:right:selected { + color: #F0F0F0; + background-color: #505F69; + border-left: 3px solid #1464A0; +} + +QTabBar::tab:right:!selected:hover { + border: 1px solid #148CD2; + border-left: 3px solid #148CD2; + padding: 0px; +} + +QTabBar QToolButton { + /* Fixes #136 */ + background-color: #32414B; + height: 12px; + width: 12px; +} + +QTabBar QToolButton:pressed { + background-color: #32414B; +} + +QTabBar QToolButton:pressed:hover { + border: 1px solid #148CD2; +} + +QTabBar QToolButton::left-arrow:enabled { + image: url(":/qss_icons/rc/arrow_left.png"); +} + +QTabBar QToolButton::left-arrow:disabled { + image: url(":/qss_icons/rc/arrow_left_disabled.png"); +} + +QTabBar QToolButton::right-arrow:enabled { + image: url(":/qss_icons/rc/arrow_right.png"); +} + +QTabBar QToolButton::right-arrow:disabled { + image: url(":/qss_icons/rc/arrow_right_disabled.png"); +} + +/* QDockWiget ------------------------------------------------------------- + +--------------------------------------------------------------------------- */ +QDockWidget { + outline: 1px solid #32414B; + background-color: #19232D; + border: 1px solid #32414B; + border-radius: 4px; + titlebar-close-icon: url(":/qss_icons/rc/window_close.png"); + titlebar-normal-icon: url(":/qss_icons/rc/window_undock.png"); +} + +QDockWidget::title { + /* Better size for title bar */ + padding: 6px; + spacing: 4px; + border: none; + background-color: #32414B; +} + +QDockWidget::close-button { + background-color: #32414B; + border-radius: 4px; + border: none; +} + +QDockWidget::close-button:hover { + image: url(":/qss_icons/rc/window_close_focus.png"); +} + +QDockWidget::close-button:pressed { + image: url(":/qss_icons/rc/window_close_pressed.png"); +} + +QDockWidget::float-button { + background-color: #32414B; + border-radius: 4px; + border: none; +} + +QDockWidget::float-button:hover { + image: url(":/qss_icons/rc/window_undock_focus.png"); +} + +QDockWidget::float-button:pressed { + image: url(":/qss_icons/rc/window_undock_pressed.png"); +} + +/* QTreeView QListView QTableView ----------------------------------------- + +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qtreeview +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qlistview +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qtableview + +--------------------------------------------------------------------------- */ +QTreeView:branch:selected, QTreeView:branch:hover { + background: url(":/qss_icons/rc/transparent.png"); +} + +QTreeView:branch:has-siblings:!adjoins-item { + border-image: url(":/qss_icons/rc/branch_line.png") 0; +} + +QTreeView:branch:has-siblings:adjoins-item { + border-image: url(":/qss_icons/rc/branch_more.png") 0; +} + +QTreeView:branch:!has-children:!has-siblings:adjoins-item { + border-image: url(":/qss_icons/rc/branch_end.png") 0; +} + +QTreeView:branch:has-children:!has-siblings:closed, QTreeView:branch:closed:has-children:has-siblings { + border-image: none; + image: url(":/qss_icons/rc/branch_closed.png"); +} + +QTreeView:branch:open:has-children:!has-siblings, QTreeView:branch:open:has-children:has-siblings { + border-image: none; + image: url(":/qss_icons/rc/branch_open.png"); +} + +QTreeView:branch:has-children:!has-siblings:closed:hover, QTreeView:branch:closed:has-children:has-siblings:hover { + image: url(":/qss_icons/rc/branch_closed_focus.png"); +} + +QTreeView:branch:open:has-children:!has-siblings:hover, QTreeView:branch:open:has-children:has-siblings:hover { + image: url(":/qss_icons/rc/branch_open_focus.png"); +} + +QTreeView::indicator:checked, +QListView::indicator:checked { + image: url(":/qss_icons/rc/checkbox_checked.png"); +} + +QTreeView::indicator:checked:hover, QTreeView::indicator:checked:focus, QTreeView::indicator:checked:pressed, +QListView::indicator:checked:hover, +QListView::indicator:checked:focus, +QListView::indicator:checked:pressed { + image: url(":/qss_icons/rc/checkbox_checked_focus.png"); +} + +QTreeView::indicator:unchecked, +QListView::indicator:unchecked { + image: url(":/qss_icons/rc/checkbox_unchecked.png"); +} + +QTreeView::indicator:unchecked:hover, QTreeView::indicator:unchecked:focus, QTreeView::indicator:unchecked:pressed, +QListView::indicator:unchecked:hover, +QListView::indicator:unchecked:focus, +QListView::indicator:unchecked:pressed { + image: url(":/qss_icons/rc/checkbox_unchecked_focus.png"); +} + +QTreeView::indicator:indeterminate, +QListView::indicator:indeterminate { + image: url(":/qss_icons/rc/checkbox_indeterminate.png"); +} + +QTreeView::indicator:indeterminate:hover, QTreeView::indicator:indeterminate:focus, QTreeView::indicator:indeterminate:pressed, +QListView::indicator:indeterminate:hover, +QListView::indicator:indeterminate:focus, +QListView::indicator:indeterminate:pressed { + image: url(":/qss_icons/rc/checkbox_indeterminate_focus.png"); +} + +QTreeView, +QListView, +QTableView, +QColumnView { + background-color: #19232D; + border: 1px solid #32414B; + color: #F0F0F0; + gridline-color: #32414B; + border-radius: 4px; +} + +QTreeView:disabled, +QListView:disabled, +QTableView:disabled, +QColumnView:disabled { + background-color: #19232D; + color: #787878; +} + +QTreeView:selected, +QListView:selected, +QTableView:selected, +QColumnView:selected { + background-color: #1464A0; + color: #32414B; +} + +QTreeView::item:pressed, +QListView::item:pressed, +QTableView::item:pressed, +QColumnView::item:pressed { + color: #FFFFFF; +} + +QTreeView::item:selected:hover, +QListView::item:selected:hover, +QTableView::item:selected:hover, +QColumnView::item:selected:hover { + color: #FFFFFF; +} + +QTreeView::item:selected:active, +QListView::item:selected:active, +QTableView::item:selected:active, +QColumnView::item:selected:active { + color: #FFFFFF; + background-color: #1464A0; +} + +QTreeView::item:!selected:hover, +QListView::item:!selected:hover, +QTableView::item:!selected:hover, +QColumnView::item:!selected:hover { + outline: 0; + color: #FFFFFF; +} + +QTableCornerButton::section { + background-color: #19232D; + border: 1px transparent #32414B; + border-radius: 0px; +} + +/* QHeaderView ------------------------------------------------------------ + +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qheaderview + +--------------------------------------------------------------------------- */ +QHeaderView { + background-color: #32414B; + border: 0px transparent #32414B; + padding: 0px; + margin: 0px; + border-radius: 0px; +} + +QHeaderView:disabled { + background-color: #32414B; + border: 1px transparent #32414B; + padding: 2px; +} + +QHeaderView::section { + background-color: #32414B; + color: #F0F0F0; + padding: 2px; + border-radius: 0px; + text-align: left; +} + +QHeaderView::section:checked { + color: #F0F0F0; + background-color: #32414B; +} + +QHeaderView::section:checked:disabled { + color: #787878; + background-color: #14506E; +} + +QHeaderView::section::horizontal { + padding-left: 4px; + padding-right: 4px; + border-left: 1px solid #19232D; +} + +QHeaderView::section::horizontal::first, QHeaderView::section::horizontal::only-one { + border-left: 1px solid #32414B; +} + +QHeaderView::section::horizontal:disabled { + color: #787878; +} + +QHeaderView::section::vertical { + padding-left: 4px; + padding-right: 4px; + border-top: 1px solid #19232D; +} + +QHeaderView::section::vertical::first, QHeaderView::section::vertical::only-one { + border-top: 1px solid #32414B; +} + +QHeaderView::section::vertical:disabled { + color: #787878; +} + +QHeaderView::down-arrow { + /* Those settings (border/width/height/background-color) solve bug */ + /* transparent arrow background and size */ + background-color: #32414B; + border: none; + height: 12px; + width: 12px; + padding-left: 2px; + padding-right: 2px; + image: url(":/qss_icons/rc/arrow_down.png"); +} + +QHeaderView::up-arrow { + background-color: #32414B; + border: none; + height: 12px; + width: 12px; + padding-left: 2px; + padding-right: 2px; + image: url(":/qss_icons/rc/arrow_up.png"); +} + +/* QToolBox -------------------------------------------------------------- + +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qtoolbox + +--------------------------------------------------------------------------- */ +QToolBox { + padding: 0px; + border: 0px; + border: 1px solid #32414B; +} + +QToolBox:selected { + padding: 0px; + border: 2px solid #1464A0; +} + +QToolBox::tab { + background-color: #19232D; + border: 1px solid #32414B; + color: #F0F0F0; + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} + +QToolBox::tab:disabled { + color: #787878; +} + +QToolBox::tab:selected { + background-color: #505F69; + border-bottom: 2px solid #1464A0; +} + +QToolBox::tab:selected:disabled { + background-color: #32414B; + border-bottom: 2px solid #14506E; +} + +QToolBox::tab:!selected { + background-color: #32414B; + border-bottom: 2px solid #32414B; +} + +QToolBox::tab:!selected:disabled { + background-color: #19232D; +} + +QToolBox::tab:hover { + border-color: #148CD2; + border-bottom: 2px solid #148CD2; +} + +QToolBox QScrollArea QWidget QWidget { + padding: 0px; + border: 0px; + background-color: #19232D; +} + +/* QFrame ----------------------------------------------------------------- + +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qframe +https://doc.qt.io/qt-5/qframe.html#-prop +https://doc.qt.io/qt-5/qframe.html#details +https://stackoverflow.com/questions/14581498/qt-stylesheet-for-hline-vline-color + +--------------------------------------------------------------------------- */ +/* (dot) .QFrame fix #141, #126, #123 */ +.QFrame { + border-radius: 4px; + border: 1px solid #32414B; + /* No frame */ + /* HLine */ + /* HLine */ +} + +.QFrame[frameShape="0"] { + border-radius: 4px; + border: 1px transparent #32414B; +} + +.QFrame[frameShape="4"] { + max-height: 2px; + border: none; + background-color: #32414B; +} + +.QFrame[frameShape="5"] { + max-width: 2px; + border: none; + background-color: #32414B; +} + +/* QSplitter -------------------------------------------------------------- + +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qsplitter + +--------------------------------------------------------------------------- */ +QSplitter { + background-color: #32414B; + spacing: 0px; + padding: 0px; + margin: 0px; +} + +QSplitter::handle { + background-color: #32414B; + border: 0px solid #19232D; + spacing: 0px; + padding: 1px; + margin: 0px; +} + +QSplitter::handle:hover { + background-color: #787878; +} + +QSplitter::handle:horizontal { + width: 5px; + image: url(":/qss_icons/rc/line_vertical.png"); +} + +QSplitter::handle:vertical { + height: 5px; + image: url(":/qss_icons/rc/line_horizontal.png"); +} + +/* QDateEdit -------------------------------------------------------------- + +--------------------------------------------------------------------------- */ +QDateEdit { + selection-background-color: #1464A0; + border-style: solid; + border: 1px solid #32414B; + border-radius: 4px; + /* This fixes 103, 111 */ + padding-top: 2px; + /* This fixes 103, 111 */ + padding-bottom: 2px; + padding-left: 4px; + padding-right: 4px; + min-width: 10px; +} + +QDateEdit:on { + selection-background-color: #1464A0; +} + +QDateEdit::drop-down { + subcontrol-origin: padding; + subcontrol-position: top right; + width: 12px; + border-left: 1px solid #32414B; +} + +QDateEdit::down-arrow { + image: url(":/qss_icons/rc/arrow_down_disabled.png"); + height: 8px; + width: 8px; +} + +QDateEdit::down-arrow:on, QDateEdit::down-arrow:hover, QDateEdit::down-arrow:focus { + image: url(":/qss_icons/rc/arrow_down.png"); +} + +QDateEdit QAbstractItemView { + background-color: #19232D; + border-radius: 4px; + border: 1px solid #32414B; + selection-background-color: #1464A0; +} + +/* QAbstractView ---------------------------------------------------------- + +--------------------------------------------------------------------------- */ +QAbstractView:hover { + border: 1px solid #148CD2; + color: #F0F0F0; +} + +QAbstractView:selected { + background: #1464A0; + color: #32414B; +} + +/* PlotWidget ------------------------------------------------------------- + +--------------------------------------------------------------------------- */ +PlotWidget { + /* Fix cut labels in plots #134 */ + padding: 0px; +} + +/* fixes */ + +QComboBox::item:checked { + font-weight: bold; + max-height: 30px; +} + +QPushButton { + min-width: default; +} + +QPushButton:flat { + background-color: transparent; + border: none; +} + +/* GroupBox checkbox contrast */ + +QGroupBox::indicator:unchecked { + image: url(":/qss_icons/rc/checkbox_unchecked.png"); +} + +QGroupBox::indicator:checked { + image: url(":/qss_icons/rc/checkbox_checked.png"); +} + +QGroupBox::indicator:indeterminate { + image: url(":/qss_icons/rc/checkbox_indeterminate.png"); +} + +QGroupBox::indicator:indeterminate:disabled { + image: url(":/qss_icons/rc/checkbox_indeterminate_disabled.png"); +} + +QGroupBox::indicator:indeterminate:focus, QGroupBox::indicator:indeterminate:hover, QGroupBox::indicator:indeterminate:pressed { + image: url(":/qss_icons/rc/checkbox_indeterminate_focus.png"); +} diff --git a/src/ui/qdarkstyle/svg/arrow_down.svg b/src/ui/qdarkstyle/svg/arrow_down.svg new file mode 100644 index 0000000..301d663 --- /dev/null +++ b/src/ui/qdarkstyle/svg/arrow_down.svg @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/src/ui/qdarkstyle/svg/arrow_left.svg b/src/ui/qdarkstyle/svg/arrow_left.svg new file mode 100644 index 0000000..1f7c290 --- /dev/null +++ b/src/ui/qdarkstyle/svg/arrow_left.svg @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/src/ui/qdarkstyle/svg/arrow_right.svg b/src/ui/qdarkstyle/svg/arrow_right.svg new file mode 100644 index 0000000..03c6620 --- /dev/null +++ b/src/ui/qdarkstyle/svg/arrow_right.svg @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/src/ui/qdarkstyle/svg/arrow_up.svg b/src/ui/qdarkstyle/svg/arrow_up.svg new file mode 100644 index 0000000..ccfa66b --- /dev/null +++ b/src/ui/qdarkstyle/svg/arrow_up.svg @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/src/ui/qdarkstyle/svg/base_icon.svg b/src/ui/qdarkstyle/svg/base_icon.svg new file mode 100644 index 0000000..abf5d6b --- /dev/null +++ b/src/ui/qdarkstyle/svg/base_icon.svg @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ui/qdarkstyle/svg/base_palette.svg b/src/ui/qdarkstyle/svg/base_palette.svg new file mode 100644 index 0000000..317b2eb --- /dev/null +++ b/src/ui/qdarkstyle/svg/base_palette.svg @@ -0,0 +1,443 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ui/qdarkstyle/svg/branch_closed.svg b/src/ui/qdarkstyle/svg/branch_closed.svg new file mode 100644 index 0000000..e7664f4 --- /dev/null +++ b/src/ui/qdarkstyle/svg/branch_closed.svg @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/src/ui/qdarkstyle/svg/branch_end.svg b/src/ui/qdarkstyle/svg/branch_end.svg new file mode 100644 index 0000000..d35acd0 --- /dev/null +++ b/src/ui/qdarkstyle/svg/branch_end.svg @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/ui/qdarkstyle/svg/branch_line.svg b/src/ui/qdarkstyle/svg/branch_line.svg new file mode 100644 index 0000000..f327723 --- /dev/null +++ b/src/ui/qdarkstyle/svg/branch_line.svg @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/ui/qdarkstyle/svg/branch_more.svg b/src/ui/qdarkstyle/svg/branch_more.svg new file mode 100644 index 0000000..f2bf317 --- /dev/null +++ b/src/ui/qdarkstyle/svg/branch_more.svg @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/ui/qdarkstyle/svg/branch_open.svg b/src/ui/qdarkstyle/svg/branch_open.svg new file mode 100644 index 0000000..701cb60 --- /dev/null +++ b/src/ui/qdarkstyle/svg/branch_open.svg @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/src/ui/qdarkstyle/svg/checkbox_checked.svg b/src/ui/qdarkstyle/svg/checkbox_checked.svg new file mode 100644 index 0000000..f8fb5dd --- /dev/null +++ b/src/ui/qdarkstyle/svg/checkbox_checked.svg @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/ui/qdarkstyle/svg/checkbox_indeterminate.svg b/src/ui/qdarkstyle/svg/checkbox_indeterminate.svg new file mode 100644 index 0000000..7c6bdf9 --- /dev/null +++ b/src/ui/qdarkstyle/svg/checkbox_indeterminate.svg @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/ui/qdarkstyle/svg/checkbox_unchecked.svg b/src/ui/qdarkstyle/svg/checkbox_unchecked.svg new file mode 100644 index 0000000..cb17a25 --- /dev/null +++ b/src/ui/qdarkstyle/svg/checkbox_unchecked.svg @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/ui/qdarkstyle/svg/line_horizontal.svg b/src/ui/qdarkstyle/svg/line_horizontal.svg new file mode 100644 index 0000000..f088e55 --- /dev/null +++ b/src/ui/qdarkstyle/svg/line_horizontal.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/ui/qdarkstyle/svg/line_vertical.svg b/src/ui/qdarkstyle/svg/line_vertical.svg new file mode 100644 index 0000000..7bed6cd --- /dev/null +++ b/src/ui/qdarkstyle/svg/line_vertical.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/ui/qdarkstyle/svg/radio_checked.svg b/src/ui/qdarkstyle/svg/radio_checked.svg new file mode 100644 index 0000000..0a0fd71 --- /dev/null +++ b/src/ui/qdarkstyle/svg/radio_checked.svg @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/ui/qdarkstyle/svg/radio_unchecked.svg b/src/ui/qdarkstyle/svg/radio_unchecked.svg new file mode 100644 index 0000000..f1ce8a6 --- /dev/null +++ b/src/ui/qdarkstyle/svg/radio_unchecked.svg @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/ui/qdarkstyle/svg/toolbar_move_horizontal.svg b/src/ui/qdarkstyle/svg/toolbar_move_horizontal.svg new file mode 100644 index 0000000..5ca9132 --- /dev/null +++ b/src/ui/qdarkstyle/svg/toolbar_move_horizontal.svg @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/ui/qdarkstyle/svg/toolbar_move_vertical.svg b/src/ui/qdarkstyle/svg/toolbar_move_vertical.svg new file mode 100644 index 0000000..9db354d --- /dev/null +++ b/src/ui/qdarkstyle/svg/toolbar_move_vertical.svg @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/ui/qdarkstyle/svg/toolbar_separator_horizontal.svg b/src/ui/qdarkstyle/svg/toolbar_separator_horizontal.svg new file mode 100644 index 0000000..49782cc --- /dev/null +++ b/src/ui/qdarkstyle/svg/toolbar_separator_horizontal.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/ui/qdarkstyle/svg/toolbar_separator_vertical.svg b/src/ui/qdarkstyle/svg/toolbar_separator_vertical.svg new file mode 100644 index 0000000..fa6c871 --- /dev/null +++ b/src/ui/qdarkstyle/svg/toolbar_separator_vertical.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/ui/qdarkstyle/svg/transparent.svg b/src/ui/qdarkstyle/svg/transparent.svg new file mode 100644 index 0000000..94adcfd --- /dev/null +++ b/src/ui/qdarkstyle/svg/transparent.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/ui/qdarkstyle/svg/window_close.svg b/src/ui/qdarkstyle/svg/window_close.svg new file mode 100644 index 0000000..bb73e25 --- /dev/null +++ b/src/ui/qdarkstyle/svg/window_close.svg @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/src/ui/qdarkstyle/svg/window_grip.svg b/src/ui/qdarkstyle/svg/window_grip.svg new file mode 100644 index 0000000..2a03260 --- /dev/null +++ b/src/ui/qdarkstyle/svg/window_grip.svg @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/src/ui/qdarkstyle/svg/window_minimize.svg b/src/ui/qdarkstyle/svg/window_minimize.svg new file mode 100644 index 0000000..c5a73b8 --- /dev/null +++ b/src/ui/qdarkstyle/svg/window_minimize.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/ui/qdarkstyle/svg/window_undock.svg b/src/ui/qdarkstyle/svg/window_undock.svg new file mode 100644 index 0000000..b6dda46 --- /dev/null +++ b/src/ui/qdarkstyle/svg/window_undock.svg @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + +