From ff208fddb490ed4d3eb09d92d814851fea203570 Mon Sep 17 00:00:00 2001 From: nayk Date: Mon, 21 Jul 2025 13:04:59 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D1=8F=20=D0=BF=D1=80=D0=B8=D0=BB=D0=BE=D0=B6=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=B4=D0=BB=D1=8F=20=D0=B4=D0=B5=D0=BC?= =?UTF-8?q?=D0=BE=D0=BD=D1=81=D1=82=D1=80=D0=B0=D1=86=D0=B8=D0=B8=20=D1=81?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D1=8B=20=D1=82=D0=B5=D0=BC=D1=8B=20=D0=BE?= =?UTF-8?q?=D1=84=D0=BE=D1=80=D0=BC=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 107 ++++ CMakeLists.txt | 8 + LICENSE | 9 + LICENSE.ru | 25 + README.md | 20 +- _cmake/app_settings.cmake | 28 + _cmake/common.cmake | 54 ++ _cmake/config.h.in | 9 + _cmake/copy_depends.cmake | 289 +++++++++++ _cmake/developer.cmake | 8 + _cmake/lib_settings.cmake | 29 ++ _cmake/post_build.cmake | 40 ++ _cmake/setup_directories.cmake | 39 ++ _cmake/target_options.cmake | 61 +++ _cmake/update_translations.cmake | 70 +++ _cmake/version.cmake | 52 ++ _cmake/versioninfo.rc.in | 35 ++ _include/application_config.cpp | 335 ++++++++++++ _include/application_config.h | 54 ++ _resources/icons.qrc | 7 + _resources/icons/cancel-40.png | Bin 0 -> 1039 bytes _resources/icons/ok-40.png | Bin 0 -> 1100 bytes _resources/icons/shutdown-40.png | Bin 0 -> 1315 bytes _resources/images/main_icon.png | Bin 0 -> 410 bytes _resources/images/main_title.png | Bin 0 -> 5469 bytes _resources/images/screenshot1.png | Bin 0 -> 17921 bytes _resources/images/screenshot2.png | Bin 0 -> 18295 bytes _resources/main.ico | Bin 0 -> 52014 bytes _resources/main.qrc | 6 + _resources/main_icon.rc | 1 + _resources/qss/dark/checkbox_checked.png | Bin 0 -> 650 bytes _resources/qss/dark/checkbox_checked@2x.png | Bin 0 -> 1238 bytes .../qss/dark/checkbox_checked_disabled.png | Bin 0 -> 731 bytes .../qss/dark/checkbox_checked_disabled@2x.png | Bin 0 -> 1334 bytes .../qss/dark/checkbox_checked_focus.png | Bin 0 -> 655 bytes .../qss/dark/checkbox_checked_focus@2x.png | Bin 0 -> 1269 bytes .../qss/dark/checkbox_checked_pressed.png | Bin 0 -> 704 bytes .../qss/dark/checkbox_checked_pressed@2x.png | Bin 0 -> 1319 bytes .../qss/dark/checkbox_indeterminate.png | Bin 0 -> 481 bytes .../qss/dark/checkbox_indeterminate@2x.png | Bin 0 -> 919 bytes .../dark/checkbox_indeterminate_disabled.png | Bin 0 -> 545 bytes .../checkbox_indeterminate_disabled@2x.png | Bin 0 -> 1003 bytes .../qss/dark/checkbox_indeterminate_focus.png | Bin 0 -> 466 bytes .../dark/checkbox_indeterminate_focus@2x.png | Bin 0 -> 930 bytes .../dark/checkbox_indeterminate_pressed.png | Bin 0 -> 518 bytes .../checkbox_indeterminate_pressed@2x.png | Bin 0 -> 995 bytes _resources/qss/dark/checkbox_unchecked.png | Bin 0 -> 385 bytes _resources/qss/dark/checkbox_unchecked@2x.png | Bin 0 -> 847 bytes .../qss/dark/checkbox_unchecked_disabled.png | Bin 0 -> 391 bytes .../dark/checkbox_unchecked_disabled@2x.png | Bin 0 -> 868 bytes .../qss/dark/checkbox_unchecked_focus.png | Bin 0 -> 387 bytes .../qss/dark/checkbox_unchecked_focus@2x.png | Bin 0 -> 850 bytes .../qss/dark/checkbox_unchecked_pressed.png | Bin 0 -> 403 bytes .../dark/checkbox_unchecked_pressed@2x.png | Bin 0 -> 862 bytes _resources/qss/dark/radio_checked.png | Bin 0 -> 1260 bytes _resources/qss/dark/radio_checked@2x.png | Bin 0 -> 2718 bytes .../qss/dark/radio_checked_disabled.png | Bin 0 -> 1336 bytes .../qss/dark/radio_checked_disabled@2x.png | Bin 0 -> 2871 bytes _resources/qss/dark/radio_checked_focus.png | Bin 0 -> 1232 bytes .../qss/dark/radio_checked_focus@2x.png | Bin 0 -> 2656 bytes _resources/qss/dark/radio_checked_pressed.png | Bin 0 -> 1288 bytes .../qss/dark/radio_checked_pressed@2x.png | Bin 0 -> 2804 bytes _resources/qss/dark/radio_unchecked.png | Bin 0 -> 1007 bytes _resources/qss/dark/radio_unchecked@2x.png | Bin 0 -> 2167 bytes .../qss/dark/radio_unchecked_disabled.png | Bin 0 -> 1045 bytes .../qss/dark/radio_unchecked_disabled@2x.png | Bin 0 -> 2277 bytes _resources/qss/dark/radio_unchecked_focus.png | Bin 0 -> 979 bytes .../qss/dark/radio_unchecked_focus@2x.png | Bin 0 -> 2127 bytes .../qss/dark/radio_unchecked_pressed.png | Bin 0 -> 1027 bytes .../qss/dark/radio_unchecked_pressed@2x.png | Bin 0 -> 2263 bytes _resources/qss/dark/toggle_checked.png | Bin 0 -> 3068 bytes _resources/qss/dark/toggle_checked@2x.png | Bin 0 -> 4383 bytes .../qss/dark/toggle_checked_disabled.png | Bin 0 -> 2890 bytes .../qss/dark/toggle_checked_disabled@2x.png | Bin 0 -> 4443 bytes _resources/qss/dark/toggle_checked_focus.png | Bin 0 -> 2821 bytes .../qss/dark/toggle_checked_focus@2x.png | Bin 0 -> 4289 bytes _resources/qss/dark/toggle_pressed.png | Bin 0 -> 2918 bytes _resources/qss/dark/toggle_pressed@2x.png | Bin 0 -> 4515 bytes _resources/qss/dark/toggle_unchecked.png | Bin 0 -> 3073 bytes _resources/qss/dark/toggle_unchecked@2x.png | Bin 0 -> 4524 bytes .../qss/dark/toggle_unchecked_disabled.png | Bin 0 -> 2905 bytes .../qss/dark/toggle_unchecked_disabled@2x.png | Bin 0 -> 4491 bytes .../qss/dark/toggle_unchecked_focus.png | Bin 0 -> 2843 bytes .../qss/dark/toggle_unchecked_focus@2x.png | Bin 0 -> 4336 bytes _resources/qss/light/checkbox_checked.png | Bin 0 -> 719 bytes _resources/qss/light/checkbox_checked@2x.png | Bin 0 -> 1329 bytes .../qss/light/checkbox_checked_disabled.png | Bin 0 -> 666 bytes .../light/checkbox_checked_disabled@2x.png | Bin 0 -> 1270 bytes .../qss/light/checkbox_checked_focus.png | Bin 0 -> 696 bytes .../qss/light/checkbox_checked_focus@2x.png | Bin 0 -> 1278 bytes .../qss/light/checkbox_checked_pressed.png | Bin 0 -> 653 bytes .../qss/light/checkbox_checked_pressed@2x.png | Bin 0 -> 1254 bytes .../qss/light/checkbox_indeterminate.png | Bin 0 -> 524 bytes .../qss/light/checkbox_indeterminate@2x.png | Bin 0 -> 1024 bytes .../light/checkbox_indeterminate_disabled.png | Bin 0 -> 477 bytes .../checkbox_indeterminate_disabled@2x.png | Bin 0 -> 949 bytes .../light/checkbox_indeterminate_focus.png | Bin 0 -> 501 bytes .../light/checkbox_indeterminate_focus@2x.png | Bin 0 -> 962 bytes .../light/checkbox_indeterminate_pressed.png | Bin 0 -> 460 bytes .../checkbox_indeterminate_pressed@2x.png | Bin 0 -> 943 bytes _resources/qss/light/checkbox_unchecked.png | Bin 0 -> 385 bytes .../qss/light/checkbox_unchecked@2x.png | Bin 0 -> 855 bytes .../qss/light/checkbox_unchecked_disabled.png | Bin 0 -> 398 bytes .../light/checkbox_unchecked_disabled@2x.png | Bin 0 -> 890 bytes .../qss/light/checkbox_unchecked_focus.png | Bin 0 -> 384 bytes .../qss/light/checkbox_unchecked_focus@2x.png | Bin 0 -> 873 bytes .../qss/light/checkbox_unchecked_pressed.png | Bin 0 -> 385 bytes .../light/checkbox_unchecked_pressed@2x.png | Bin 0 -> 843 bytes _resources/qss/light/radio_checked.png | Bin 0 -> 1293 bytes _resources/qss/light/radio_checked@2x.png | Bin 0 -> 2792 bytes .../qss/light/radio_checked_disabled.png | Bin 0 -> 1291 bytes .../qss/light/radio_checked_disabled@2x.png | Bin 0 -> 2748 bytes _resources/qss/light/radio_checked_focus.png | Bin 0 -> 1292 bytes .../qss/light/radio_checked_focus@2x.png | Bin 0 -> 2772 bytes .../qss/light/radio_checked_pressed.png | Bin 0 -> 1210 bytes .../qss/light/radio_checked_pressed@2x.png | Bin 0 -> 2580 bytes _resources/qss/light/radio_unchecked.png | Bin 0 -> 1008 bytes _resources/qss/light/radio_unchecked@2x.png | Bin 0 -> 2256 bytes .../qss/light/radio_unchecked_disabled.png | Bin 0 -> 1023 bytes .../qss/light/radio_unchecked_disabled@2x.png | Bin 0 -> 2202 bytes .../qss/light/radio_unchecked_focus.png | Bin 0 -> 1032 bytes .../qss/light/radio_unchecked_focus@2x.png | Bin 0 -> 2215 bytes .../qss/light/radio_unchecked_pressed.png | Bin 0 -> 978 bytes .../qss/light/radio_unchecked_pressed@2x.png | Bin 0 -> 2079 bytes _resources/qss/light/toggle_checked.png | Bin 0 -> 2730 bytes _resources/qss/light/toggle_checked@2x.png | Bin 0 -> 3867 bytes .../qss/light/toggle_checked_disabled.png | Bin 0 -> 2734 bytes .../qss/light/toggle_checked_disabled@2x.png | Bin 0 -> 3867 bytes _resources/qss/light/toggle_checked_focus.png | Bin 0 -> 2730 bytes .../qss/light/toggle_checked_focus@2x.png | Bin 0 -> 3867 bytes _resources/qss/light/toggle_pressed.png | Bin 0 -> 2700 bytes _resources/qss/light/toggle_pressed@2x.png | Bin 0 -> 3838 bytes _resources/qss/light/toggle_unchecked.png | Bin 0 -> 2860 bytes _resources/qss/light/toggle_unchecked@2x.png | Bin 0 -> 4153 bytes .../qss/light/toggle_unchecked_disabled.png | Bin 0 -> 2739 bytes .../light/toggle_unchecked_disabled@2x.png | Bin 0 -> 3888 bytes .../qss/light/toggle_unchecked_focus.png | Bin 0 -> 2750 bytes .../qss/light/toggle_unchecked_focus@2x.png | Bin 0 -> 3892 bytes _resources/qss/style.qss | 486 ++++++++++++++++++ _resources/style.qrc | 113 ++++ sources/CMakeLists.txt | 78 +++ sources/main.cpp | 22 + sources/main_window.cpp | 70 +++ sources/main_window.h | 55 ++ sources/main_window.ui | 298 +++++++++++ 145 files changed, 2407 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 CMakeLists.txt create mode 100644 LICENSE create mode 100644 LICENSE.ru create mode 100644 _cmake/app_settings.cmake create mode 100644 _cmake/common.cmake create mode 100644 _cmake/config.h.in create mode 100644 _cmake/copy_depends.cmake create mode 100644 _cmake/developer.cmake create mode 100644 _cmake/lib_settings.cmake create mode 100644 _cmake/post_build.cmake create mode 100644 _cmake/setup_directories.cmake create mode 100644 _cmake/target_options.cmake create mode 100644 _cmake/update_translations.cmake create mode 100644 _cmake/version.cmake create mode 100644 _cmake/versioninfo.rc.in create mode 100644 _include/application_config.cpp create mode 100644 _include/application_config.h create mode 100644 _resources/icons.qrc create mode 100644 _resources/icons/cancel-40.png create mode 100644 _resources/icons/ok-40.png create mode 100644 _resources/icons/shutdown-40.png create mode 100644 _resources/images/main_icon.png create mode 100644 _resources/images/main_title.png create mode 100644 _resources/images/screenshot1.png create mode 100644 _resources/images/screenshot2.png create mode 100644 _resources/main.ico create mode 100644 _resources/main.qrc create mode 100644 _resources/main_icon.rc create mode 100644 _resources/qss/dark/checkbox_checked.png create mode 100644 _resources/qss/dark/checkbox_checked@2x.png create mode 100644 _resources/qss/dark/checkbox_checked_disabled.png create mode 100644 _resources/qss/dark/checkbox_checked_disabled@2x.png create mode 100644 _resources/qss/dark/checkbox_checked_focus.png create mode 100644 _resources/qss/dark/checkbox_checked_focus@2x.png create mode 100644 _resources/qss/dark/checkbox_checked_pressed.png create mode 100644 _resources/qss/dark/checkbox_checked_pressed@2x.png create mode 100644 _resources/qss/dark/checkbox_indeterminate.png create mode 100644 _resources/qss/dark/checkbox_indeterminate@2x.png create mode 100644 _resources/qss/dark/checkbox_indeterminate_disabled.png create mode 100644 _resources/qss/dark/checkbox_indeterminate_disabled@2x.png create mode 100644 _resources/qss/dark/checkbox_indeterminate_focus.png create mode 100644 _resources/qss/dark/checkbox_indeterminate_focus@2x.png create mode 100644 _resources/qss/dark/checkbox_indeterminate_pressed.png create mode 100644 _resources/qss/dark/checkbox_indeterminate_pressed@2x.png create mode 100644 _resources/qss/dark/checkbox_unchecked.png create mode 100644 _resources/qss/dark/checkbox_unchecked@2x.png create mode 100644 _resources/qss/dark/checkbox_unchecked_disabled.png create mode 100644 _resources/qss/dark/checkbox_unchecked_disabled@2x.png create mode 100644 _resources/qss/dark/checkbox_unchecked_focus.png create mode 100644 _resources/qss/dark/checkbox_unchecked_focus@2x.png create mode 100644 _resources/qss/dark/checkbox_unchecked_pressed.png create mode 100644 _resources/qss/dark/checkbox_unchecked_pressed@2x.png create mode 100644 _resources/qss/dark/radio_checked.png create mode 100644 _resources/qss/dark/radio_checked@2x.png create mode 100644 _resources/qss/dark/radio_checked_disabled.png create mode 100644 _resources/qss/dark/radio_checked_disabled@2x.png create mode 100644 _resources/qss/dark/radio_checked_focus.png create mode 100644 _resources/qss/dark/radio_checked_focus@2x.png create mode 100644 _resources/qss/dark/radio_checked_pressed.png create mode 100644 _resources/qss/dark/radio_checked_pressed@2x.png create mode 100644 _resources/qss/dark/radio_unchecked.png create mode 100644 _resources/qss/dark/radio_unchecked@2x.png create mode 100644 _resources/qss/dark/radio_unchecked_disabled.png create mode 100644 _resources/qss/dark/radio_unchecked_disabled@2x.png create mode 100644 _resources/qss/dark/radio_unchecked_focus.png create mode 100644 _resources/qss/dark/radio_unchecked_focus@2x.png create mode 100644 _resources/qss/dark/radio_unchecked_pressed.png create mode 100644 _resources/qss/dark/radio_unchecked_pressed@2x.png create mode 100644 _resources/qss/dark/toggle_checked.png create mode 100644 _resources/qss/dark/toggle_checked@2x.png create mode 100644 _resources/qss/dark/toggle_checked_disabled.png create mode 100644 _resources/qss/dark/toggle_checked_disabled@2x.png create mode 100644 _resources/qss/dark/toggle_checked_focus.png create mode 100644 _resources/qss/dark/toggle_checked_focus@2x.png create mode 100644 _resources/qss/dark/toggle_pressed.png create mode 100644 _resources/qss/dark/toggle_pressed@2x.png create mode 100644 _resources/qss/dark/toggle_unchecked.png create mode 100644 _resources/qss/dark/toggle_unchecked@2x.png create mode 100644 _resources/qss/dark/toggle_unchecked_disabled.png create mode 100644 _resources/qss/dark/toggle_unchecked_disabled@2x.png create mode 100644 _resources/qss/dark/toggle_unchecked_focus.png create mode 100644 _resources/qss/dark/toggle_unchecked_focus@2x.png create mode 100644 _resources/qss/light/checkbox_checked.png create mode 100644 _resources/qss/light/checkbox_checked@2x.png create mode 100644 _resources/qss/light/checkbox_checked_disabled.png create mode 100644 _resources/qss/light/checkbox_checked_disabled@2x.png create mode 100644 _resources/qss/light/checkbox_checked_focus.png create mode 100644 _resources/qss/light/checkbox_checked_focus@2x.png create mode 100644 _resources/qss/light/checkbox_checked_pressed.png create mode 100644 _resources/qss/light/checkbox_checked_pressed@2x.png create mode 100644 _resources/qss/light/checkbox_indeterminate.png create mode 100644 _resources/qss/light/checkbox_indeterminate@2x.png create mode 100644 _resources/qss/light/checkbox_indeterminate_disabled.png create mode 100644 _resources/qss/light/checkbox_indeterminate_disabled@2x.png create mode 100644 _resources/qss/light/checkbox_indeterminate_focus.png create mode 100644 _resources/qss/light/checkbox_indeterminate_focus@2x.png create mode 100644 _resources/qss/light/checkbox_indeterminate_pressed.png create mode 100644 _resources/qss/light/checkbox_indeterminate_pressed@2x.png create mode 100644 _resources/qss/light/checkbox_unchecked.png create mode 100644 _resources/qss/light/checkbox_unchecked@2x.png create mode 100644 _resources/qss/light/checkbox_unchecked_disabled.png create mode 100644 _resources/qss/light/checkbox_unchecked_disabled@2x.png create mode 100644 _resources/qss/light/checkbox_unchecked_focus.png create mode 100644 _resources/qss/light/checkbox_unchecked_focus@2x.png create mode 100644 _resources/qss/light/checkbox_unchecked_pressed.png create mode 100644 _resources/qss/light/checkbox_unchecked_pressed@2x.png create mode 100644 _resources/qss/light/radio_checked.png create mode 100644 _resources/qss/light/radio_checked@2x.png create mode 100644 _resources/qss/light/radio_checked_disabled.png create mode 100644 _resources/qss/light/radio_checked_disabled@2x.png create mode 100644 _resources/qss/light/radio_checked_focus.png create mode 100644 _resources/qss/light/radio_checked_focus@2x.png create mode 100644 _resources/qss/light/radio_checked_pressed.png create mode 100644 _resources/qss/light/radio_checked_pressed@2x.png create mode 100644 _resources/qss/light/radio_unchecked.png create mode 100644 _resources/qss/light/radio_unchecked@2x.png create mode 100644 _resources/qss/light/radio_unchecked_disabled.png create mode 100644 _resources/qss/light/radio_unchecked_disabled@2x.png create mode 100644 _resources/qss/light/radio_unchecked_focus.png create mode 100644 _resources/qss/light/radio_unchecked_focus@2x.png create mode 100644 _resources/qss/light/radio_unchecked_pressed.png create mode 100644 _resources/qss/light/radio_unchecked_pressed@2x.png create mode 100644 _resources/qss/light/toggle_checked.png create mode 100644 _resources/qss/light/toggle_checked@2x.png create mode 100644 _resources/qss/light/toggle_checked_disabled.png create mode 100644 _resources/qss/light/toggle_checked_disabled@2x.png create mode 100644 _resources/qss/light/toggle_checked_focus.png create mode 100644 _resources/qss/light/toggle_checked_focus@2x.png create mode 100644 _resources/qss/light/toggle_pressed.png create mode 100644 _resources/qss/light/toggle_pressed@2x.png create mode 100644 _resources/qss/light/toggle_unchecked.png create mode 100644 _resources/qss/light/toggle_unchecked@2x.png create mode 100644 _resources/qss/light/toggle_unchecked_disabled.png create mode 100644 _resources/qss/light/toggle_unchecked_disabled@2x.png create mode 100644 _resources/qss/light/toggle_unchecked_focus.png create mode 100644 _resources/qss/light/toggle_unchecked_focus@2x.png create mode 100644 _resources/qss/style.qss create mode 100644 _resources/style.qrc create mode 100644 sources/CMakeLists.txt create mode 100644 sources/main.cpp create mode 100644 sources/main_window.cpp create mode 100644 sources/main_window.h create mode 100644 sources/main_window.ui diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..23a669a --- /dev/null +++ b/.gitignore @@ -0,0 +1,107 @@ +.build/ +_other/ +_distrib*/ + +# Tmp files +*~ +Thumbs.db* + +# C++ objects and libs +*.slo +*.lo +*.o +*.a +*.la +*.lai +*.so +*.so.* +*.dll +*.dylib +*.ko +*.obj +*.elf +*.lib + +# Qt-es +object_script.*.Release +object_script.*.Debug +*_plugin_import.cpp +/.qmake.cache +/.qmake.stash +*.pro.user +*.pro.user.* +*.qbs.user +*.qbs.user.* +*.moc +moc_*.cpp +moc_*.h +qrc_*.cpp +ui_*.h +*.qmlc +*.jsc +Makefile* +*build-* +*.qm +*.prl + +# Qt unit tests +target_wrapper.* + +# QtCreator +*.autosave + +# QtCreator Qml +*.qmlproject.user +*.qmlproject.user.* + +# QtCreator CMake +CMakeLists.txt.user* + +# QtCreator 4.8< compilation database +compile_commands.json + +# QtCreator local machine specific files for imported projects +*creator.user* + +*_qmlcache.qrc + +# ---> C +# Prerequisites +*.d + +# Linker output +*.ilk +*.map +*.exp + +# Precompiled Headers +*.gch +*.pch + +# Executables +*.exe +*.out +*.app +*.i*86 +*.x86_64 +*.hex + +# Debug files +*.dSYM/ +*.su +*.idb +*.pdb + +# Kernel Module Compile Results +*.mod* +*.cmd +.tmp_versions/ +modules.order +Module.symvers +Mkfile.old +dkms.conf + +# Fortran module files +*.mod +*.smod + diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..3dcecc4 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,8 @@ +cmake_minimum_required(VERSION 4.0) + +project (QtCustomStyleExample) + +# application: +add_subdirectory(sources) + + diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9be8c26 --- /dev/null +++ b/LICENSE @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) 2025 Evgeny Teterin (nayk) + +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. diff --git a/LICENSE.ru b/LICENSE.ru new file mode 100644 index 0000000..6aff4e4 --- /dev/null +++ b/LICENSE.ru @@ -0,0 +1,25 @@ +MIT лицензия + +Copyright (c) 2025 Evgeny Teterin (nayk) + +Данная лицензия разрешает лицам, получившим копию +данного программного обеспечения и сопутствующей документации +(в дальнейшем именуемыми «Программное Обеспечение»), безвозмездно +использовать Программное Обеспечение без ограничений, +включая неограниченное право на использование, копирование, изменение, +слияние, публикацию, распространение, сублицензирование и/или продажу +копий Программного Обеспечения, а также лицам, которым предоставляется +данное Программное Обеспечение, при соблюдении следующих условий: + +Указанное выше уведомление об авторском праве и данные условия +должны быть включены во все копии или значимые части данного Программного Обеспечения. + +ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», +БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, +ВКЛЮЧАЯ ГАРАНТИИ ТОВАРНОЙ ПРИГОДНОСТИ, СООТВЕТСТВИЯ ПО ЕГО КОНКРЕТНОМУ +НАЗНАЧЕНИЮ И ОТСУТСТВИЯ НАРУШЕНИЙ, НО НЕ ОГРАНИЧИВАЯСЬ ИМИ. +НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ +ПО КАКИМ-ЛИБО ИСКАМ, ЗА УЩЕРБ ИЛИ ПО ИНЫМ ТРЕБОВАНИЯМ, В ТОМ ЧИСЛЕ, +ПРИ ДЕЙСТВИИ КОНТРАКТА, ДЕЛИКТЕ ИЛИ ИНОЙ СИТУАЦИИ, +ВОЗНИКШИМ ИЗ-ЗА ИСПОЛЬЗОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ +ИЛИ ИНЫХ ДЕЙСТВИЙ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ. diff --git a/README.md b/README.md index 82e0866..1e11fd1 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,21 @@ # Qt_Custom_Style_Example -Пример кастомизации приложения на Qt с использованием стилевых таблиц QSS. \ No newline at end of file +Пример кастомизации приложения на Qt с использованием стилевых таблиц QSS. + +Класс `Application` содержит статичный метод настройки стиля для приложения: + +``` +updateApplicationStyle(AppTheme appTheme); +``` + +## Пример внешнего вида приложения (Qt6, ОС Windows 11) + +Тёмный вариант: + +![picture](/_resources/images/screenshot1.png) + +Светлый вариант: + +![picture](/_resources/images/screenshot2.png) + + diff --git a/_cmake/app_settings.cmake b/_cmake/app_settings.cmake new file mode 100644 index 0000000..3dd65b2 --- /dev/null +++ b/_cmake/app_settings.cmake @@ -0,0 +1,28 @@ + +# Файл для подключения в основной проект через include +# Настройки для приложений + +include(${CMAKE_CURRENT_LIST_DIR}/common.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/developer.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/version.cmake) + +# Имя выходного файла совпадает с названием проекта: +set(RUNTIME_OUTPUT_NAME ${PROJECT_NAME}) + +configure_file( + ${CMAKE_CURRENT_LIST_DIR}/config.h.in + ${CMAKE_CURRENT_BINARY_DIR}/config.h + @ONLY +) + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${DISTRIB_DIR}) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${DISTRIB_DIR}) + +if (CMAKE_SYSTEM_NAME STREQUAL "Windows") + configure_file( + ${CMAKE_CURRENT_LIST_DIR}/versioninfo.rc.in + ${CMAKE_CURRENT_BINARY_DIR}/versioninfo.rc + @ONLY + ) +endif() + diff --git a/_cmake/common.cmake b/_cmake/common.cmake new file mode 100644 index 0000000..7f4a474 --- /dev/null +++ b/_cmake/common.cmake @@ -0,0 +1,54 @@ + +# Общие настройки для всех типов проектов + +set(CMAKE_INCLUDE_CURRENT_DIR ON) +set(CMAKE_AUTOUIC ON) +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) + +if (CMAKE_COMPILER_IS_GNUCXX) + if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "9.0.0") + set(CMAKE_CXX_STANDARD 20) + else() + set(CMAKE_CXX_STANDARD 23) + endif() +else() + set(CMAKE_CXX_STANDARD 23) +endif() + +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +# Поиск библиотек Qt: +find_package(QT NAMES Qt6 Qt5 REQUIRED) + +# Настройки каталогов: +include(${CMAKE_CURRENT_LIST_DIR}/setup_directories.cmake) + +# Определение разрядности: +if (${CMAKE_SIZEOF_VOID_P} STREQUAL 4) + set(DIR_PREFIX "32") +elseif (${CMAKE_SIZEOF_VOID_P} STREQUAL 8) + set(DIR_PREFIX "64") +endif () + +# Каталог для готовых приложений и библиотек после компиляции: +set(DISTRIB_DIR + ${ROOT_PROJECT_DIR}_distrib/${CMAKE_SYSTEM_NAME}_Qt${QT_VERSION}_${DIR_PREFIX}-bit +) + +if(CMAKE_BUILD_TYPE STREQUAL "Debug") + set(IS_DEBUG TRUE) + set(IS_RELEASE FALSE) +else() + set(IS_DEBUG FALSE) + set(IS_RELEASE TRUE) +endif() + +message(STATUS "Project '${PROJECT_NAME}' compiler ${CMAKE_CXX_COMPILER} version: ${CMAKE_CXX_COMPILER_VERSION}") +message(STATUS "Project '${PROJECT_NAME}' compiler dir: '${CXX_COMPILER_DIR}'") +message(STATUS "Project '${PROJECT_NAME}' cmake dir: '${CMAKE_BIN_DIR}'") +message(STATUS "Project '${PROJECT_NAME}' distrib dir: '${DISTRIB_DIR}'") +message(STATUS "Project '${PROJECT_NAME}' IS_RELEASE: ${IS_RELEASE}, IS_DEBUG: ${IS_DEBUG}") +message(STATUS "Project '${PROJECT_NAME}' CMAKE_PREFIX_PATH: '${CMAKE_PREFIX_PATH}'") +message(STATUS "Project '${PROJECT_NAME}' CMAKE_SYSTEM_LIBRARY_PATH: '${CMAKE_SYSTEM_LIBRARY_PATH}'") + diff --git a/_cmake/config.h.in b/_cmake/config.h.in new file mode 100644 index 0000000..41f8ac6 --- /dev/null +++ b/_cmake/config.h.in @@ -0,0 +1,9 @@ +#define PROG_NAME "@PROJECT_NAME@" +#define PROG_VERSION "@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@.@BUILD_NUM@@PROJECT_VERSION_TWEAK@" +#define PROG_CAPTION "@PROJECT_NAME@ v" +#define PROG_DESCRIPTION "@PROJECT_DESCRIPTION@" +#define SOFT_DEVELOPER "@SOFT_DEVELOPER@" +#define DEVELOPER_DOMAIN "@DEVELOPER_DOMAIN@" +#define BUILD_DATE "@BUILD_DATE@" +#define BUILD_NUM "@BUILD_NUM@" +#define ORIGINAL_FILE_NAME "@ORIGINAL_FILE_NAME@" diff --git a/_cmake/copy_depends.cmake b/_cmake/copy_depends.cmake new file mode 100644 index 0000000..211a6a7 --- /dev/null +++ b/_cmake/copy_depends.cmake @@ -0,0 +1,289 @@ + +# Определение зависимостей после сборки приложения + +cmake_minimum_required(VERSION 4.0) + +set(LIBS_FIND_DIRS "${PREFIX}") +set(QT_SHARE_DIR "${PREFIX}") + +if (CMAKE_SYSTEM_NAME STREQUAL "Windows") + + if (EXISTS "${PREFIX}/bin") + set(LIBS_FIND_DIRS "${PREFIX}/bin") + endif() + +else() + + if (EXISTS "${PREFIX}/lib") + set(LIBS_FIND_DIRS "${PREFIX}/lib") + endif() + +endif() + +if (EXISTS "${PREFIX}/share/qt${QT_VERSION_MAJOR}") + set(QT_SHARE_DIR "${PREFIX}/share/qt${QT_VERSION_MAJOR}") +endif() + +if(TARGET_TYPE STREQUAL "EXECUTABLE") + + if (EXISTS "${OUTPUT_DIR}/${TARGET_NAME}") + set(TARGET_FILE "${OUTPUT_DIR}/${TARGET_NAME}") + elseif (EXISTS "${OUTPUT_DIR}/${TARGET_NAME}.exe") + set(TARGET_FILE "${OUTPUT_DIR}/${TARGET_NAME}.exe") + endif() + +else() + + if (EXISTS "${OUTPUT_DIR}/${TARGET_NAME}") + set(TARGET_FILE "${OUTPUT_DIR}/${TARGET_NAME}") + elseif (EXISTS "${OUTPUT_DIR}/${TARGET_NAME}.dll") + set(TARGET_FILE "${OUTPUT_DIR}/${TARGET_NAME}.dll") + elseif (EXISTS "${OUTPUT_DIR}/${TARGET_NAME}.so") + set(TARGET_FILE "${OUTPUT_DIR}/${TARGET_NAME}.so") + endif() + +endif() + +message(STATUS "TARGET_FILE: '${TARGET_FILE}'") +message(STATUS "LIBS_FIND_DIRS: '${LIBS_FIND_DIRS}'") +message(STATUS "OUTPUT_DIR: '${OUTPUT_DIR}'") +message(STATUS "QT_VERSION_MAJOR: '${QT_VERSION_MAJOR}'") +message(STATUS "Find and copy dependencies. Please, wait...") + +# functions -------------------------------------------------------------------- + +# Копирование файла + +function(safe_copy src dest) + + # Пытаемся скопировать через execute_process (кросс-платформенно) + execute_process( + COMMAND ${CMAKE_COMMAND} -E copy_if_different "${src}" "${dest}" + RESULT_VARIABLE copy_result + ERROR_VARIABLE copy_error + OUTPUT_QUIET # Подавляем stdout + ) + + if(NOT copy_result EQUAL 0) + message(WARNING "Не удалось скопировать ${src} -> ${dest}: ${copy_error}") + return() + endif() + +endfunction() + +# Отслеживание цепочки ссылок + +function(get_symlink_chain dep symlink_chain) + unset(chain) + set(current_dep "${dep}") + + # 1. Разрешаем основную цепочку симлинков (исходный файл → конечный файл) + while(IS_SYMLINK "${current_dep}") + execute_process( + COMMAND readlink "${current_dep}" + OUTPUT_VARIABLE link_target + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + list(INSERT chain 0 "${current_dep}") # Добавляем текущий симлинк в начало + get_filename_component(parent_dir "${current_dep}" DIRECTORY) + set(current_dep "${parent_dir}/${link_target}") # Переходим по ссылке + endwhile() + + # 2. Добавляем конечный файл в начало цепочки + list(INSERT chain 0 "${current_dep}") + + # 3. Теперь ищем ВСЕ симлинки в этой директории, которые ссылаются на конечный файл + if(EXISTS "${current_dep}") + get_filename_component(final_file "${current_dep}" REALPATH) # Абсолютный путь конечного файла + get_filename_component(parent_dir "${current_dep}" DIRECTORY) # Директория конечного файла + + # Получаем список всех файлов в этой директории + file(GLOB all_files LIST_DIRECTORIES false "${parent_dir}/*") + foreach(file IN LISTS all_files) + # Если это симлинк, проверяем, ведёт ли он на конечный файл + if(IS_SYMLINK "${file}") + execute_process( + COMMAND readlink -f "${file}" # Абсолютный путь цели симлинка + OUTPUT_VARIABLE symlink_target + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + # Если цель симлинка совпадает с конечным файлом, добавляем в цепочку + if(symlink_target STREQUAL final_file AND NOT file IN_LIST chain) + list(APPEND chain "${file}") + endif() + endif() + endforeach() + endif() + + set(${symlink_chain} "${chain}" PARENT_SCOPE) +endfunction() + +# ------------------------------------------------------------------------------ + +if (EXISTS "${TARGET_FILE}") + + # Получаем runtime-зависимости + file(GET_RUNTIME_DEPENDENCIES + EXECUTABLES ${TARGET_FILE} + RESOLVED_DEPENDENCIES_VAR RESOLVED_DEPS + UNRESOLVED_DEPENDENCIES_VAR UNRESOLVED_DEPS + DIRECTORIES ${LIBS_FIND_DIRS} + ) + + set(USE_SQL OFF) + set(USE_PRINT OFF) + set(USE_NETWORK OFF) + set(USE_SERIALPORT OFF) + set(USE_MULTIMEDIA OFF) + + message(STATUS "\nResolved dependencies copy:\n") + + foreach(DEP ${RESOLVED_DEPS}) + + string(FIND "${DEP}" "${LIBS_FIND_DIRS}" POS) + + if(POS EQUAL 0) + + if (CMAKE_SYSTEM_NAME STREQUAL "Windows") + + message(STATUS "${DEP}") + file(COPY "${DEP}" DESTINATION "${OUTPUT_DIR}") + + else () + + #message(STATUS "${DEP}") + #file(COPY "${DEP}" DESTINATION "${OUTPUT_DIR}/system_lib" FOLLOW_SYMLINK_CHAIN) + + get_symlink_chain("${DEP}" dep_chain) + + foreach(file IN LISTS dep_chain) + + message(STATUS "${file}") + safe_copy("${file}" "${OUTPUT_DIR}") + + endforeach() + + endif() + + endif() + + string(FIND "${DEP}" "Qt${QT_VERSION_MAJOR}Sql" POS) + + if(POS GREATER 0) + set(USE_SQL ON) + endif() + + string(FIND "${DEP}" "Qt${QT_VERSION_MAJOR}Print" POS) + + if(POS GREATER 0) + set(USE_PRINT ON) + endif() + + string(FIND "${DEP}" "Qt${QT_VERSION_MAJOR}Network" POS) + + if(POS GREATER 0) + set(USE_NETWORK ON) + endif() + + string(FIND "${DEP}" "Qt${QT_VERSION_MAJOR}Serial" POS) + + if(POS GREATER 0) + set(USE_SERIALPORT ON) + endif() + + string(FIND "${DEP}" "Qt${QT_VERSION_MAJOR}Multimedia" POS) + + if(POS GREATER 0) + set(USE_MULTIMEDIA ON) + endif() + + endforeach() + + if (EXISTS "${LIBS_FIND_DIRS}/libQt${QT_VERSION_MAJOR}XcbQpa.so") + + get_symlink_chain("${LIBS_FIND_DIRS}/libQt${QT_VERSION_MAJOR}XcbQpa.so" xcb_chain) + + foreach(file IN LISTS xcb_chain) + + message(STATUS "${file}") + safe_copy("${file}" "${OUTPUT_DIR}") + + endforeach() + + endif() + + message(STATUS "\nResolved dependencies not copy:\n") + + foreach(DEP ${RESOLVED_DEPS}) + string(FIND "${DEP}" "${LIBS_FIND_DIRS}" POS) + if(NOT POS EQUAL 0) + message(STATUS "${DEP}") + endif() + endforeach() + + message(STATUS "\nUnresolved dependencies:\n") + + foreach(DEP ${UNRESOLVED_DEPS}) + message(STATUS "${DEP}") + endforeach() + + if (EXISTS "${QT_SHARE_DIR}/plugins/platforms") + file(COPY "${QT_SHARE_DIR}/plugins/platforms" DESTINATION "${OUTPUT_DIR}") + endif() + + if (EXISTS "${QT_SHARE_DIR}/plugins/platformthemes") + file(COPY "${QT_SHARE_DIR}/plugins/platformthemes" DESTINATION "${OUTPUT_DIR}") + endif() + + if (EXISTS "${QT_SHARE_DIR}/plugins/styles") + file(COPY "${QT_SHARE_DIR}/plugins/styles" DESTINATION "${OUTPUT_DIR}") + endif() + + if (EXISTS "${QT_SHARE_DIR}/plugins/imageformats") + file(COPY "${QT_SHARE_DIR}/plugins/imageformats" DESTINATION "${OUTPUT_DIR}") + endif() + + if (USE_SQL AND (EXISTS "${QT_SHARE_DIR}/plugins/sqldrivers")) + file(COPY "${QT_SHARE_DIR}/plugins/sqldrivers" DESTINATION "${OUTPUT_DIR}") + endif() + + if (USE_PRINT AND (EXISTS "${QT_SHARE_DIR}/plugins/printsupport")) + file(COPY "${QT_SHARE_DIR}/plugins/printsupport" DESTINATION "${OUTPUT_DIR}") + endif() + + if (USE_NETWORK AND (EXISTS "${QT_SHARE_DIR}/plugins/networkinformation")) + file(COPY "${QT_SHARE_DIR}/plugins/networkinformation" DESTINATION "${OUTPUT_DIR}") + endif() + + if (USE_MULTIMEDIA AND (EXISTS "${QT_SHARE_DIR}/plugins/multimedia")) + file(COPY "${QT_SHARE_DIR}/plugins/multimedia" DESTINATION "${OUTPUT_DIR}") + endif() + + if (EXISTS "${QT_SHARE_DIR}/translations") + + file(MAKE_DIRECTORY "${OUTPUT_DIR}/translations") + + if (EXISTS "${QT_SHARE_DIR}/translations/qtbase_ru.qm") + file(COPY "${QT_SHARE_DIR}/translations/qtbase_ru.qm" DESTINATION "${OUTPUT_DIR}/translations") + endif() + + if (EXISTS "${QT_SHARE_DIR}/translations/qtdeclarative_ru.qm") + file(COPY "${QT_SHARE_DIR}/translations/qtdeclarative_ru.qm" DESTINATION "${OUTPUT_DIR}/translations") + endif() + + if (USE_SERIALPORT AND (EXISTS "${QT_SHARE_DIR}/translations/qtserialport_ru.qm")) + file(COPY "${QT_SHARE_DIR}/translations/qtserialport_ru.qm" DESTINATION "${OUTPUT_DIR}/translations") + endif() + + if (USE_MULTIMEDIA AND (EXISTS "${QT_SHARE_DIR}/translations/qtmultimedia_ru.qm")) + file(COPY "${QT_SHARE_DIR}/translations/qtmultimedia_ru.qm" DESTINATION "${OUTPUT_DIR}/translations") + endif() + + endif() + +else() + + message(STATUS "'${TARGET_FILE}' not found. Exit.") + +endif() + diff --git a/_cmake/developer.cmake b/_cmake/developer.cmake new file mode 100644 index 0000000..530fa4a --- /dev/null +++ b/_cmake/developer.cmake @@ -0,0 +1,8 @@ + +if(NOT DEFINED SOFT_DEVELOPER OR "${SOFT_DEVELOPER}" STREQUAL "") + set(SOFT_DEVELOPER "Evgeny Teterin") +endif() + +if(NOT DEFINED DEVELOPER_DOMAIN OR "${DEVELOPER_DOMAIN}" STREQUAL "") + set(DEVELOPER_DOMAIN "poseon.ru") +endif() diff --git a/_cmake/lib_settings.cmake b/_cmake/lib_settings.cmake new file mode 100644 index 0000000..324e71d --- /dev/null +++ b/_cmake/lib_settings.cmake @@ -0,0 +1,29 @@ + +# Файл для подключения в основной проект через include +# Настройки для библиотек + +include(${CMAKE_CURRENT_LIST_DIR}/common.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/developer.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/version.cmake) + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${DISTRIB_DIR}) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${DISTRIB_DIR}) + +if (CMAKE_SYSTEM_NAME STREQUAL "Windows") + set(RUNTIME_OUTPUT_NAME lib${PROJECT_NAME}.dll) + configure_file( + ${CMAKE_CURRENT_LIST_DIR}/versioninfo.rc.in + ${CMAKE_CURRENT_BINARY_DIR}/versioninfo.rc + @ONLY + ) +else() + set(RUNTIME_OUTPUT_NAME lib${PROJECT_NAME}.so) +endif() + +configure_file( + ${CMAKE_CURRENT_LIST_DIR}/config.h.in + ${CMAKE_CURRENT_BINARY_DIR}/config.h + @ONLY +) + + diff --git a/_cmake/post_build.cmake b/_cmake/post_build.cmake new file mode 100644 index 0000000..39c5ee3 --- /dev/null +++ b/_cmake/post_build.cmake @@ -0,0 +1,40 @@ + +# Файл для подключения в основной проект через include + +# Вспомогательные действия после сборки проекта + +if(IS_DEBUG) + message(STATUS "Project '${PROJECT_NAME}' [post-build] DEBUG building: skip post-build actions") + return() +endif() + +# Включение/выключение поиска зависимостей: +set(COPY_DEPENDS ON) + +get_target_property(TARGET_TYPE ${PROJECT_NAME} TYPE) + +if(TARGET_TYPE STREQUAL "EXECUTABLE") + message(STATUS "${PROJECT_NAME} is an executable.") +elseif(TARGET_TYPE STREQUAL "STATIC_LIBRARY" OR TARGET_TYPE STREQUAL "SHARED_LIBRARY") + message(STATUS "${PROJECT_NAME} is a library.") +else() + message(STATUS "${PROJECT_NAME} is of another type: ${TARGET_TYPE}") +endif() + +if (COPY_DEPENDS) + + add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E echo "Copying runtime dependencies..." + COMMAND ${CMAKE_COMMAND} + -DTARGET_NAME="${RUNTIME_OUTPUT_NAME}" + -DTARGET_TYPE="${TARGET_TYPE}" + -DOUTPUT_DIR="${DISTRIB_DIR}" + -DPREFIX="${CMAKE_PREFIX_PATH}" + -DQT_VERSION_MAJOR=${QT_VERSION_MAJOR} + -DCMAKE_SYSTEM_NAME="${CMAKE_SYSTEM_NAME}" + -P "${CMAKE_INC_DIR}/copy_depends.cmake" + COMMENT "Copying runtime dependencies for ${PROJECT_NAME}" + ) + +endif() + diff --git a/_cmake/setup_directories.cmake b/_cmake/setup_directories.cmake new file mode 100644 index 0000000..65235b8 --- /dev/null +++ b/_cmake/setup_directories.cmake @@ -0,0 +1,39 @@ + +set(ROOT_PROJECT_DIR + ${CMAKE_CURRENT_LIST_DIR}/.. +) + +cmake_path(NORMAL_PATH ROOT_PROJECT_DIR OUTPUT_VARIABLE ROOT_PROJECT_DIR) + +set(CMAKE_INC_DIR + ${ROOT_PROJECT_DIR}_cmake +) + +set(RESOURCES_DIR + ${ROOT_PROJECT_DIR}_resources +) + +set(COMMON_SOURCES_DIR + ${ROOT_PROJECT_DIR}_include +) + +if(CMAKE_SYSTEM_NAME STREQUAL "Windows") + set(SYSTEM_INCLUDE_DIR "${CMAKE_PREFIX_PATH}/include") +else () + set(SYSTEM_INCLUDE_DIR "/usr/include") +endif () + +get_filename_component(CXX_COMPILER_DIR "${CMAKE_CXX_COMPILER}" DIRECTORY) + +get_filename_component(CMAKE_BIN_DIR "${CMAKE_COMMAND}" DIRECTORY) + +set(ROOT_COMPILER_DIR + ${CXX_COMPILER_DIR}/.. +) + +cmake_path(NORMAL_PATH ROOT_COMPILER_DIR OUTPUT_VARIABLE ROOT_COMPILER_DIR) + +set(COMPILER_INCLUDE_DIR + ${ROOT_COMPILER_DIR}include +) + diff --git a/_cmake/target_options.cmake b/_cmake/target_options.cmake new file mode 100644 index 0000000..a6e7fbe --- /dev/null +++ b/_cmake/target_options.cmake @@ -0,0 +1,61 @@ + +# Файл для подключения в основной проект через include + +# Настройки компиляции для всего +target_compile_options(${PROJECT_NAME} PRIVATE + -Wall + -Wextra + -Wpedantic +) + + +if (DISABLE_HARD_WARNING_ERROR) + target_compile_options(${PROJECT_NAME} PRIVATE + -Wall + -Wextra + -Wpedantic + ) +else() + target_compile_options(${PROJECT_NAME} PRIVATE + -Wall # Все стандартные предупреждения + -Wextra # Дополнительные предупреждения + -Wpedantic # Соответствие стандарту C++ + -Werror # Превратить предупреждения в ошибки + -Wconversion # Предупреждения о неявных преобразованиях + -Wsign-conversion # Предупреждения о знаковых/беззнаковых преобразованиях + -Wshadow # Предупреждения о "тенях" переменных + -Wunused # Предупреждения о неиспользуемом коде + -Wold-style-cast # Запрет C-style кастов (только static_cast/dynamic_cast/...) + -Wnull-dereference # Предупреждения о возможных разыменованиях nullptr + -Wdouble-promotion # Предупреждения о неявном преобразовании float → double + -Wformat=2 # Строгая проверка printf/scanf + ) +endif() + +target_compile_definitions(${PROJECT_NAME} PRIVATE + QT_NO_FOREACH + QT_NO_URL_CAST_FROM_STRING + QT_NO_NARROWING_CONVERSIONS_IN_CONNECT + QT_STRICT_ITERATORS +) + +find_program(CLANG_TIDY_EXE NAMES "clang-tidy") + +if (CLANG_TIDY_EXE) + set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_EXE};-checks=*") +endif() + +if (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") + target_compile_options(${PROJECT_NAME} PRIVATE + -fsanitize=address # AddressSanitizer (поиск утечек, выходов за границы) + -fsanitize=undefined # UndefinedBehaviorSanitizer (UB-проверки) + -fsanitize=leak # LeakSanitizer (поиск утечек памяти) + -fno-omit-frame-pointer # Для лучшего стека вызовов в санитайзерах + ) + target_link_options(${PROJECT_NAME} PRIVATE + -fsanitize=address + -fsanitize=undefined + -fsanitize=leak + ) +endif() + diff --git a/_cmake/update_translations.cmake b/_cmake/update_translations.cmake new file mode 100644 index 0000000..f21186f --- /dev/null +++ b/_cmake/update_translations.cmake @@ -0,0 +1,70 @@ + +# Файл для подключения в основной проект через include + +# Обновление и генерация файлов переводов +# Языки переводов перечислить в переменной LNG + +if(IS_DEBUG) + message(STATUS "Project '${PROJECT_NAME}' [translations] DEBUG building: skip .qm generation") + return() +endif() + +# Если список языков не задан в основном CMakeLists.txt — применяем по умолчанию +if(NOT DEFINED LNG) + set(LNG en ru) + message(STATUS "Project '${PROJECT_NAME}' [translations] LNG not set, use default: ${LNG}") +else() + message(STATUS "Project '${PROJECT_NAME}' [translations] Use LNG: ${LNG}") +endif() + +# Подключить LinguistTools +find_package(Qt${QT_VERSION_MAJOR}LinguistTools REQUIRED) + +# Полные пути утилит +get_target_property(LUPDATE_EXECUTABLE Qt${QT_VERSION_MAJOR}::lupdate IMPORTED_LOCATION) +get_target_property(LRELEASE_EXECUTABLE Qt${QT_VERSION_MAJOR}::lrelease IMPORTED_LOCATION) + +# Каталог генерации файлов ts и qm файлов +set(TRANSLATIONS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/translations") +set(QM_OUTPUT_DIR "${DISTRIB_DIR}/translations") +file(MAKE_DIRECTORY "${TRANSLATIONS_DIR}") +file(MAKE_DIRECTORY "${QM_OUTPUT_DIR}") + +# Список TS файлов в зависимости от списка языков +set(TS_FILES "") + +# Обновление каждого файла с добавлением в список +foreach(LANG ${LNG}) + + set(TS_FILE "${TRANSLATIONS_DIR}/${PROJECT_NAME}_${LANG}.ts") + list(APPEND TS_FILES "${TS_FILE}") + message(STATUS "Project '${PROJECT_NAME}' Update translation file: ${TS_FILE}") + + execute_process(COMMAND ${LUPDATE_EXECUTABLE} + ${PROJECT_SOURCES} + -ts ${TS_FILE} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + ) + +endforeach() + +# Генерация файлов qm +set(QM_FILES "") + +foreach(TS ${TS_FILES}) + + get_filename_component(TS_NAME_WE ${TS} NAME_WE) + set(QM ${QM_OUTPUT_DIR}/${TS_NAME_WE}.qm) + list(APPEND QM_FILES ${QM}) + + add_custom_command( + OUTPUT ${QM} + COMMAND ${LRELEASE_EXECUTABLE} ${TS} -qm ${QM} + DEPENDS ${TS} + COMMENT "Generating ${QM}" + ) +endforeach() + +add_custom_target(translations_qm ALL DEPENDS ${QM_FILES}) + +add_dependencies(translations_qm ${PROJECT_NAME}) diff --git a/_cmake/version.cmake b/_cmake/version.cmake new file mode 100644 index 0000000..c320df2 --- /dev/null +++ b/_cmake/version.cmake @@ -0,0 +1,52 @@ + +# Variables for generating the version. +# Used in the application (config.h file and versioninfo.rc) +# + +# Получаем полный временной штамп в UTC (пример: "2025-04-16 12:33:58 UTC") +string(TIMESTAMP BUILD_DATE "%Y-%m-%d %H:%M:%S UTC" UTC) +string(TIMESTAMP VERSION_DOY "%j" UTC) # день в году (001..366) + +# Извлекаем компоненты даты и времени +string(SUBSTRING "${BUILD_DATE}" 0 4 YEAR_STR) +string(SUBSTRING "${BUILD_DATE}" 2 2 VERSION_YY) +string(SUBSTRING "${BUILD_DATE}" 5 2 VERSION_MM) +string(SUBSTRING "${BUILD_DATE}" 8 2 VERSION_DD) +string(SUBSTRING "${BUILD_DATE}" 11 2 VERSION_HH) +string(SUBSTRING "${BUILD_DATE}" 14 2 VERSION_MIN) +string(SUBSTRING "${BUILD_DATE}" 17 2 VERSION_SS) + +# Убираем ведущие нули путём преобразования в числа +math(EXPR VERSION_YY_NOZERO "${VERSION_YY}") +math(EXPR VERSION_MM_NOZERO "${VERSION_MM}") +math(EXPR VERSION_DD_NOZERO "${VERSION_DD}") +math(EXPR VERSION_HH_NOZERO "${VERSION_HH}") +math(EXPR VERSION_MIN_NOZERO "${VERSION_MIN}") +math(EXPR VERSION_SS_NOZERO "${VERSION_SS}") +math(EXPR VERSION_DOY_NOZERO "${VERSION_DOY}") + +if (VERSION_FULLDATE) + # Полная дата: YY.MM.DD.NNN + + # Считаем количество минут с начала суток + math(EXPR VERSION_NNN + "${VERSION_HH_NOZERO} * 60 + ${VERSION_MIN_NOZERO}" + ) + + set(PROJECT_VERSION_MAJOR ${VERSION_YY_NOZERO}) + set(PROJECT_VERSION_MINOR ${VERSION_MM_NOZERO}) + set(PROJECT_VERSION_PATCH ${VERSION_DD_NOZERO}) + set(BUILD_NUM ${VERSION_NNN}) + +else() + # Версия от MAJOR, MINOR + YY + день года + # MAJOR и MINOR должны быть заданы ранее через `project(... VERSION ...)` + + set(PROJECT_VERSION_PATCH ${VERSION_YY_NOZERO}) + set(BUILD_NUM ${VERSION_DOY_NOZERO}) +endif() + +set(ORIGINAL_FILE_NAME ${RUNTIME_OUTPUT_NAME}) + +message(STATUS "Project '${PROJECT_NAME}' version: ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}.${BUILD_NUM}") + diff --git a/_cmake/versioninfo.rc.in b/_cmake/versioninfo.rc.in new file mode 100644 index 0000000..14c4204 --- /dev/null +++ b/_cmake/versioninfo.rc.in @@ -0,0 +1,35 @@ +1 TYPELIB "versioninfo.rc" + +1 VERSIONINFO + FILEVERSION @PROJECT_VERSION_MAJOR@, @PROJECT_VERSION_MINOR@, @PROJECT_VERSION_PATCH@, @BUILD_NUM@ + PRODUCTVERSION @PROJECT_VERSION_MAJOR@, @PROJECT_VERSION_MINOR@, @PROJECT_VERSION_PATCH@, @BUILD_NUM@ + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904e4" + BEGIN + VALUE "CompanyName", "@SOFT_DEVELOPER@" + VALUE "FileDescription", "@PROJECT_DESCRIPTION@" + VALUE "FileVersion","@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@.@BUILD_NUM@" + VALUE "InternalName", "@PROJECT_NAME@" + VALUE "LegalCopyright", "Copyright (c) @YEAR_STR@ @SOFT_DEVELOPER@" + VALUE "OriginalFilename", "@ORIGINAL_FILE_NAME@" + VALUE "ProductName", "@PROJECT_NAME@" + VALUE "ProductVersion","@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@.@BUILD_NUM@" + VALUE "BuildDate", "@BUILD_DATE@" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1252 + END +END diff --git a/_include/application_config.cpp b/_include/application_config.cpp new file mode 100644 index 0000000..cbb0c97 --- /dev/null +++ b/_include/application_config.cpp @@ -0,0 +1,335 @@ +/**************************************************************************** +** Copyright (c) 2025 Evgeny Teterin (nayk) +** All right reserved. +** +** 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. +** +****************************************************************************/ +#include "application_config.h" +#include "config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) +# include +#endif + +//============================================================================== +bool systemUseDarkTheme() +{ + QApplication *application = qobject_cast( QApplication::instance() ); + if (!application) return false; + + QPalette appPalette = application->palette(); + bool darkTheme {false}; + + int n = -1; + +#if QT_VERSION > QT_VERSION_CHECK(6, 5, 0) + + if (application->styleHints()->colorScheme() == Qt::ColorScheme::Light) n = 1; + else if (application->styleHints()->colorScheme() == Qt::ColorScheme::Dark) n = 0; +#endif + +#ifdef Q_OS_WIN + if (n < 0) { + + QSettings registry(R"(HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize)", + QSettings::NativeFormat); + //n = registry.value("SystemUsesLightTheme",-1).toInt(); + n = registry.value("AppsUseLightTheme", -1).toInt(); + } +#endif + if (n < 0) { + + QRgb c1 = appPalette.color(QPalette::Window).rgb(); + QRgb c2 = appPalette.color(QPalette::WindowText).rgb(); + + darkTheme = ((qRed(c1) * 11 + qGreen(c1) * 16 + qBlue(c1) * 5) / 32) + < ((qRed(c2) * 11 + qGreen(c2) * 16 + qBlue(c2) * 5) / 32); + } + else { + + darkTheme = (n == 0); + } + + return darkTheme; +} + +//============================================================================== +void Application::initialize() +{ +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8")); +#endif + +#if defined (PROG_NAME) + QApplication::setApplicationName( QString(PROG_NAME) ); +#endif + +#if defined (SOFT_DEVELOPER) + QApplication::setOrganizationName( QString(SOFT_DEVELOPER) ); +#endif + +#if defined (DEVELOPER_DOMAIN) + QApplication::setOrganizationDomain( QString(DEVELOPER_DOMAIN) ); +#endif + +#if defined (PROG_VERSION) + QApplication::setApplicationVersion( QString(PROG_VERSION) ); +#endif + +#if defined (BUILD_DATE) + qApp->setProperty( "buildDate", QString(BUILD_DATE) ); +#endif +} +//============================================================================== +QString Application::applicationRootPath() +{ + QString path { QApplication::applicationDirPath() }; + + if ( path.right(1) != "/" ) { + + path += "/"; + } + + if (path.right(5) == "/bin/") { + + path.remove( path.length() - 4, 4 ); + } + + return path; +} +//============================================================================== +void Application::installTranslations(const QString &lng) +{ + const QString dirName { applicationRootPath() + "translations/" }; + QDir translationsDir { dirName }; + + QStringList filesList = translationsDir.entryList( + QStringList() << QString("*_%1.qm").arg(lng), + QDir::Files + ); + + for (const QString &fileName: std::as_const(filesList)) { + + QTranslator *translator = new QTranslator(QApplication::instance()); + + if (translator->load( dirName + fileName )) { + + QApplication::instance()->installTranslator( translator ); + } + else { + + delete translator; + } + } +} +//============================================================================== +bool Application::updateApplicationStyle(AppTheme appTheme) +{ + QApplication *application = qobject_cast( QApplication::instance() ); + if (!application) return false; + + application->setStyleSheet(""); + + if (QStyleFactory::keys().contains("Fusion")) { + + application->setStyle( QStyleFactory::create("Fusion") ); + } + + bool darkTheme = (appTheme == SystemTheme) ? systemUseDarkTheme() : appTheme == DarkTheme; + QPalette appPalette = application->palette(); + + appPalette.setColor( QPalette::Highlight, QColor(55, 174, 254)); + appPalette.setColor( QPalette::HighlightedText, QColor(245, 250, 255)); + appPalette.setColor( QPalette::Link, QColor(55, 174, 254)); + appPalette.setColor( QPalette::LinkVisited, QColor(52, 103, 146)); + appPalette.setColor( QPalette::Disabled, QPalette::Link, QColor(52, 103, 146)); + appPalette.setColor( QPalette::Disabled, QPalette::LinkVisited, QColor(40, 90, 130)); + + if (darkTheme) { + + appPalette.setColor( QPalette::Window, QColor(30, 35, 40)); + appPalette.setColor( QPalette::WindowText, QColor(245, 250, 255)); + appPalette.setColor( QPalette::Base, QColor(45, 50, 55)); + appPalette.setColor( QPalette::AlternateBase, QColor(48, 53, 58)); + appPalette.setColor( QPalette::ToolTipBase, QColor(60, 65, 70)); + appPalette.setColor( QPalette::ToolTipText, QColor(200, 205, 210)); + appPalette.setColor( QPalette::Text, QColor(245, 250, 255)); + appPalette.setColor( QPalette::Button, QColor(55, 60, 65)); + appPalette.setColor( QPalette::ButtonText, QColor(245, 250, 255)); + appPalette.setColor( QPalette::BrightText, QColor(194, 232, 255)); + appPalette.setColor( QPalette::PlaceholderText, QColor(200, 205, 210)); + appPalette.setColor( QPalette::Disabled, QPalette::WindowText, QColor(157, 157, 157)); + appPalette.setColor( QPalette::Disabled, QPalette::Base, QColor(30, 35, 40)); + appPalette.setColor( QPalette::Disabled, QPalette::AlternateBase, QColor(33, 38, 43)); + appPalette.setColor( QPalette::Disabled, QPalette::ToolTipBase, QColor(200, 205, 210)); + appPalette.setColor( QPalette::Disabled, QPalette::ToolTipText, QColor(5, 10, 15)); + appPalette.setColor( QPalette::Disabled, QPalette::Text, QColor(150, 155, 160)); + appPalette.setColor( QPalette::Disabled, QPalette::ButtonText, QColor(150, 155, 160)); + appPalette.setColor( QPalette::Disabled, QPalette::BrightText, QColor(150, 193, 218)); + + } + else { // light theme + + appPalette.setColor( QPalette::Window, QColor(230, 235, 240)); + appPalette.setColor( QPalette::WindowText, QColor(0, 3, 5)); + appPalette.setColor( QPalette::Base, QColor(245, 250, 255)); + appPalette.setColor( QPalette::AlternateBase, QColor(242, 247, 252)); + appPalette.setColor( QPalette::ToolTipBase, QColor(255, 255, 220)); + appPalette.setColor( QPalette::ToolTipText, QColor(0, 0, 0)); + appPalette.setColor( QPalette::Text, QColor(0, 3, 5)); + appPalette.setColor( QPalette::Button, QColor(225, 230, 235)); + appPalette.setColor( QPalette::ButtonText, QColor(0, 3, 5)); + appPalette.setColor( QPalette::BrightText, QColor(255, 255, 255)); + appPalette.setColor( QPalette::PlaceholderText, QColor(5, 10, 15)); + appPalette.setColor( QPalette::Disabled, QPalette::WindowText, QColor(120, 120, 120)); + appPalette.setColor( QPalette::Disabled, QPalette::Base, QColor(240, 240, 240)); + appPalette.setColor( QPalette::Disabled, QPalette::AlternateBase, QColor(247, 247, 247)); + appPalette.setColor( QPalette::Disabled, QPalette::ToolTipBase, QColor(255, 255, 220)); + appPalette.setColor( QPalette::Disabled, QPalette::ToolTipText, QColor(0, 0, 0)); + appPalette.setColor( QPalette::Disabled, QPalette::Text, QColor(120, 120, 120)); + appPalette.setColor( QPalette::Disabled, QPalette::ButtonText, QColor(120, 120, 120)); + appPalette.setColor( QPalette::Disabled, QPalette::BrightText, QColor(255, 255, 255)); + } + + application->setPalette(appPalette); + + QString qssFile {":/qss/style.qss"}; + QString qss; + + if (QFile::exists(qssFile)) { + + QFile file(qssFile); + + if (!file.open(QFile::ReadOnly)) return false; + + QByteArray buf; + + while (!file.atEnd()) { + + buf.append( file.read(1024) ); + } + + file.close(); + + qss = QString(buf); + + QRgb rgb = appPalette.color(QPalette::Highlight).rgb(); + QString clStr = QString("rgb(%1, %2, %3)").arg(qRed(rgb)).arg(qGreen(rgb)).arg(qBlue(rgb)); + + qss.replace("$MENU_ITEM_SELECT_COLOR", clStr); + + rgb = appPalette.color(QPalette::LinkVisited).rgb(); + clStr = QString("rgb(%1, %2, %3)").arg(qRed(rgb)).arg(qGreen(rgb)).arg(qBlue(rgb)); + + qss.replace("$MENU_ITEM_SELECT_BORDER", clStr); + + double checkBoxMetric = QApplication::primaryScreen()->logicalDotsPerInch() / 4.3; + double toggleMetric = checkBoxMetric * 1.2; + + clStr = QString("%1px").arg(qRound( checkBoxMetric )); + + qss.replace("$CHECKBOX_SIZE", clStr); + + clStr = QString("%1px").arg(qRound( toggleMetric )); + + qss.replace("$TOGGLE_HEIGHT", clStr); + + clStr = QString("%1px").arg(qRound( toggleMetric * 1.5 )); + + qss.replace("$TOGGLE_WIDTH", clStr); + + clStr = darkTheme ? "dark" : "light"; + + qss.replace("$THEME", clStr); + + if (toggleMetric > 32) { + + qss.replace("toggle_checked.png", "toggle_checked@2x.png"); + qss.replace("toggle_unchecked.png", "toggle_unchecked@2x.png"); + qss.replace("toggle_checked_disabled.png", "toggle_checked_disabled@2x.png"); + qss.replace("toggle_unchecked_disabled.png", "toggle_unchecked_disabled@2x.png"); + qss.replace("toggle_checked_focus.png", "toggle_checked_focus@2x.png"); + qss.replace("toggle_unchecked_focus.png", "toggle_unchecked_focus@2x.png"); + qss.replace("toggle_pressed.png", "toggle_pressed@2x.png"); + } + + if (checkBoxMetric > 32) { + + qss.replace("_checked.png", "_checked@2x.png"); + qss.replace("_unchecked.png", "_unchecked@2x.png"); + qss.replace("_indeterminate.png", "_indeterminate@2x.png"); + qss.replace("_disabled.png", "_disabled@2x.png"); + qss.replace("_focus.png", "_focus@2x.png"); + qss.replace("_pressed.png", "_pressed@2x.png"); + } + } + + qssFile = applicationRootPath() + "style.qss"; + + if (QFile::exists(qssFile)) { + + QFile file(qssFile); + + if (!file.open(QFile::ReadOnly)) return false; + + QByteArray buf; + + while (!file.atEnd()) { + + buf.append( file.read(1024) ); + } + + file.close(); + + qss += "\n" + QString(buf); + } + + application->setStyleSheet(qss); + application->setProperty("AppsUseDarkTheme", darkTheme); + return true; +} +//============================================================================== +bool Application::applicationUseDarkTheme() +{ + QApplication *application = qobject_cast( QApplication::instance() ); + if (!application) return false; + + if (!application->property("AppsUseDarkTheme").isNull()) { + + return application->property("AppsUseDarkTheme").toBool(); + } + + bool darkTheme = systemUseDarkTheme(); + application->setProperty("AppsUseDarkTheme", darkTheme); + return darkTheme; +} +//============================================================================== diff --git a/_include/application_config.h b/_include/application_config.h new file mode 100644 index 0000000..7356dd9 --- /dev/null +++ b/_include/application_config.h @@ -0,0 +1,54 @@ +/**************************************************************************** +** Copyright (c) 2025 Evgeny Teterin (nayk) +** All right reserved. +** +** 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. +** +****************************************************************************/ +#pragma once +#ifndef APP_CONFIG_H +#define APP_CONFIG_H + +#include + +//============================================================================== +class Application +{ + Q_DISABLE_COPY(Application) + +public: + enum AppTheme { + SystemTheme = 0, + LightTheme = 1, + DarkTheme = 2 + }; + + static void initialize(); + static QString applicationRootPath(); + static void installTranslations(const QString &lng = "ru"); + static bool updateApplicationStyle(AppTheme appTheme = AppTheme::SystemTheme); + static bool applicationUseDarkTheme(); + +private: + Application() = delete; +}; + +#endif // APP_CONFIG_H +//============================================================================== diff --git a/_resources/icons.qrc b/_resources/icons.qrc new file mode 100644 index 0000000..8bbd249 --- /dev/null +++ b/_resources/icons.qrc @@ -0,0 +1,7 @@ + + + icons/cancel-40.png + icons/ok-40.png + icons/shutdown-40.png + + diff --git a/_resources/icons/cancel-40.png b/_resources/icons/cancel-40.png new file mode 100644 index 0000000000000000000000000000000000000000..13885e5f81bc702118b4ea4bd2e957407e96d91d GIT binary patch literal 1039 zcmV+q1n~QbP)_U^^N?#w7{(?rEYZL0nQ zLKS;bQS{=$RsW6NO^;r*%)&*CQfSf^HSto5iMz0eu9@bG2r3G*{F3w~FCj4Oelqjs zz3+Q2*Z*qV?S2(e)yY_Q_ZOY9G$$k*Q4|}F&w6+FFZ>oEWCCkj0=3!M`H&OxNvHHM z=Jgt>u`%l?7!;ZLd0{RsiQMvX-tigV9ZgM%)aYmqYdK>FTvdY`U0odw2ixfCy3Z*M z>Vz1H;oMf}PwIl>it%{#iqeomyR5eTZ-~VI_7Y!&D=Tb`cBTy3LLktD32?`;b!4N zG$ZD$YBA~e+d8GminklrKkoCLwi?bVc)Y*g)CrlmH3=inNu`q2)pK8we7WTMlWqWtGYHZIB25clmViA9na26!Cjaw0SUO` zdI?BW9G$WKtGnlRze2r4Ns`%(%Vt-Abh5VSnkJ%Nuen9YixQx!22uEBV@l@5b}euP zhrr;f8Ylun7D1Ibxp9>M>^k7!V2LueUIdIXmWDiX0(cvUT_+qo6AFnKV?RnqOsNSC z=M>Po0kU2=xUsY(IHg7@K`V-#lei#GAnh9A;MwJ6l)k^s1>D z783TvPJjR1NPbNd@xDHjQ(96nw=_*DG}WyJJQyFhIb+{G`+WCYl?>wuw18-;TLpKF zwv$rC-XoWcVI093%Qj*bW63m1j6tBjb~!POBhc}qscz=Z>5OF~guHjvVi-r@xDWjP z#>S+koyQ!drsJKvZWu?Py!Wh literal 0 HcmV?d00001 diff --git a/_resources/icons/ok-40.png b/_resources/icons/ok-40.png new file mode 100644 index 0000000000000000000000000000000000000000..81a445c61a8871ab91ff52d2add4b00891783895 GIT binary patch literal 1100 zcmV-S1he~zP)WW&!4IIu6DLbM?X+A)T4tjO zVq7j>>T&>PgA^Cq%3`E2LQ=&QK5$!sAgvLz_~M^s@E_b8F+z_U$(3X7cwg8d8=R`{j1 z!Gv*nBKfoLWs2N?GfEzPo+OitPb|fMT<&1H$E&p6g8eVPo-Wk}c94U>{t1D3}-J%J1M@<+ld|0$liZe-q# zy8_c}G`%oRIx^Rcu)=>lFLoZT3yzZ6b0L{C?>tw3*9)dq=&f1hcSzz)e?NP+Cb(9a z3DPQGxHtdMQ!s6v;@x3YChQuCp%i}EwwR+spa?e_BEK|C-u?Kn<$Ylk#hi<8wxGf<4ZY4b9L`uV3FQ42kf~Q0 zLMy_z4RC1Y=&fi;je~nej1|LzGgk^0tle{9h^k$tUyL1J1q_Hx9F2dc;k2^$OeBjz ziD_R2j1DAnm`Zj7oTkqZute3a$E$#}!s`#-jO+?HO`jq6=SN6npzF)J`p21=;dTR@ zrq7T^pK~N6bH-YU5t-8D;`RxG^5En{`E}WfUpH{j$*)gHKw^Hm0z_GG^1*zaaJGO> zTwLk0r#2tX*WuQxE_RwE)gbd8!PzDWwl6F=wFLjurCCqmpuI0rB%%syWd=)3kBdTG z8D~bFF;}UVCXz);WG}3BlK%LKsLNKj9@0xVFtiOM%s?M=Y(qcB@{QHd&CBv-*LvaB zf0~-J85STIaj>_#ePP~;L2uyxjawL;HvwWu#8QnV#;cEME_L|rD4`T?**_TDw+XOp z#g16|+K!C;Q~ES%AHHI4m||>~CWZfqrMlUGH)rKiSmxfh47cp@RTCUXptCe{?HqcY zB_WwNDY^5Y&xznTBCPO*X2fIq?HHjIz8DnQ(>^zX;|Lr}V5x4TC;xs!L6<>w;7Ti+XZ3vC?UO Se9Kn=0000E|HP)YGHO-Y+n%Lt#@PM9m4p z!BF57LdF!vs)(iC2B-a_u&q#9l?fRQ>^XqLaroWLn4jkj!S5hPt}wRwt0)fojyW7_ zP|q150X98Jh^i3sg(o;<77`*%%o%+Egcgq+sVj{A?wQ@75@cAIcry9~2z?QY!HZc} z5(YH`=$w?$l*^$gqAwa^e;8H1WE-&u@SXc-QP``AE zbJOJJvuBPU*wB~5!zwCH7eJJ+w;mP3xP6CgZPok*1yl zu;eA_CmSGRt8T=s&&=3HH#S_28h&UdmEzl_lKrvg&pWPrH!;EUl>TWSF(E2?IH$$6 z8#kH;&84NjdC**1vP1FeRmU}zsVOcqR%rsviK2-{({bauIeX)K_xc8C+`n(Ho11f7 zQ=OjXG9iXPfOqfu0;u`aPyjuT_}Vr5hzo_j0h(cs*mshYN}g3f>!qDZGBe|vBn8I) zXs4O6F?XY?Y8#!M4GmDAowYx-TB=0q{w znk3(Ombx=%dX_q^S8@a?br@3x;hXkmfw8sq0L_90GVQ~Y>2y0dynFMeXR`n--R%}3 zr!cpA1vpxzR;d?@J2B}LOR1Fgto2weCV2YPyWJWZsvzXL0HR4mv*)2#kQf$If(` z>*vl{Rl&G($MRI|`gOi__N;F@dW*!M6yE#X6I}DC1>qnj{vd<97E&=N;kr(y^!rE< z!F2>cdd(?Xp9;@e_lk@qB4GsA5pX?*>fHucOe9R$4(z#3!F2>Cehk$(j=qmHndHl{ zSOp2;JLYk2p?-?VBgW2>kT|H>7xlc1Q(qL@)AoyUNKrWc(#6u;5Wp=H7vSrotiD4_le Z`2fLOTJ@8?y^;U`002ovPDHLkV1fkwZA<_F literal 0 HcmV?d00001 diff --git a/_resources/images/main_icon.png b/_resources/images/main_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5770cc449ea2d5591c392cde89172247a93e5fec GIT binary patch literal 410 zcmV;L0cHM)P)?Uw8Cgd+{x?0#IXXn-U<@K1d&mmD(Km5)V8X!BB@p6obc+N8T4-tTJrEkXiDQ-Oe#l29A7k~^ z!ayGA79Q<*)7ZfMng)dlok_$hWeu#Qu>k-80P!FA1D0C#{UmF7@c;k-07*qoM6N<$ Ef*7!@8UO$Q literal 0 HcmV?d00001 diff --git a/_resources/images/main_title.png b/_resources/images/main_title.png new file mode 100644 index 0000000000000000000000000000000000000000..b0edb75308c671027b78da604ad7c043b525ac80 GIT binary patch literal 5469 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 MYplc2I)CYZ006#56#xJL literal 0 HcmV?d00001 diff --git a/_resources/images/screenshot1.png b/_resources/images/screenshot1.png new file mode 100644 index 0000000000000000000000000000000000000000..16881eaf23c7081fc6ba745f0307642f0bdae941 GIT binary patch literal 17921 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 OKvLrJ5UA)!-~R^MI0gg& literal 0 HcmV?d00001 diff --git a/_resources/images/screenshot2.png b/_resources/images/screenshot2.png new file mode 100644 index 0000000000000000000000000000000000000000..5d4f67e6fb1b759260c319cfcb42b1d3addff6dc GIT binary patch literal 18295 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 P0!fQ2fXhD^eEGis0Mc>$ literal 0 HcmV?d00001 diff --git a/_resources/main.ico b/_resources/main.ico new file mode 100644 index 0000000000000000000000000000000000000000..e2713393f91790acfc88361df19b93e1866421d3 GIT binary patch literal 52014 zcmeI5O^g&p6vvyGz!C2p+=~fEPF@TP(Io=A#Do=Lmj#wAN`gQ%LIR2hg0ib7qKP41 z{5%|Hy?d+>&0Zh1DDfw#jzzktu<64I?2yh)#$I6?W zbD_o7A)5uPMU*+riJ2HH9kn&(*t!<+TIw9rYr}O4Lrx6l<@WFIt0HWn z{9!sAwv=2^zZqd)X zSZ1li`b%NRiNSP>em)ChR}R)+4qHktrt9(=vM!WAOozgd6NBl7WbD!kq7a%bSMltF_>;h#xAW;{xBU5TS_jb>tYhJE|fn^hr*B(gXxB3?9vM557XhW zrQ~9|E+!%CLixjVC=594s$N(hB7d z)8VkCq7a%bSMltF_>;h#xAW;{xBU5TS_jb>tYhJE|fn^hr*B( zgXxB3?9vM557XhWrQ~9|az5YhUkHEUUxYb8SwlE6Md)LZJ#g4ka*N#eB6y=P@#=wp#R zP#AJzTzy~r;u5v=vn{Ig&|tiEfBLFg`$8A`ywv|vuUc6CLCyW^pLknTI;_@g=t1K_ zd(Y5zb@j?+RjpQY*{=M3DfWPI;IO6SV!Hhso>g7LgKF_l?dA4H*xJuscaA}x?9G_N7+@SI3^_5F?$R%|Cb-+<0M|h}@0mltB)Hq-0M|h}-jof4 zy!XaWde31?$xZ8-a_9F$DE}_K9+^0^pL^k7lz;pATldAAyu7&^ed8y+r!eHir1ebM z#UJhmCeG|#{Na9J;?jH5|Gf8UU#84qOUX4l>3#R-ThRFr_vCc^qTwIW`49Kxbi66& z&E4o5Kj}S%AtxrSXUg#G)1~jV_PP(pa8HIh6KD4D?9+bk#(iS|_hhIuap}F>fARnS z2F`FDz*+_zCD9zB6fiqkOuol4v_hfi3GWE6gAH4Ir8o!#~^CyfyJOkJA2In|) zo02=wyWl3K-RkFo4TT{mW?gT`(N^b-^?#seLDPSKUXSr+OuyC75A<|2{oh~Mv~b~! zbv+%&Tb*^f|C;?VV8dBksJZJ`KQ&9n;NEixum>hoevOEOv4*v1pts|Q9*bM)`S8$} zb)VzDuXuV>sCnOrag#QLfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1i}(fMfAOwWKgF!%@ z*f)KmQXZ;S$`|wcUTCbXJ%E>bse$*reAmz&tk-{@+|&N6mC}WJ{o8H0epiKBm!&;B zNBr~t4N;qAmN66l!r#oH(DTRWHfk^a{a16NSl4PNG=Hj|E6(nRE6%R7bNs}U5q7TK zX4c~@?b$g=cm9%{o7JEbZAje#glO zJJcp``dw$2s2-^#IH{ZX8KA1Z2Zhl__`e4q(-h7{&v$xwzy7QOp z+y~wNs_ngc{_Kk95X>dhw-s;gQ1j1@$8!kgk~t6i(7Hg;0d8$6NOVNjMucd>Xqv}Ju z6#XLf-;7s1`$mpG=+?XW^r1Zpe;I$7|Jb!&>-@ub{nzRzcCH!ykK2U%3S~QUU~;V( z`38@lT2H9ge?9A7JcV1L|^V^`{0hqw=Y{NTg@Brn#dv@0K9@KE9 z>UV$qO8onzzyWd>A1KEjfCH4@8{DRDT)#&00KY*=)z|O!Moes@_xhdPsIUL4mUs4P i52H=c9_d@&<$eD4`IGvGi$MClg8tg(%w}$Bz5f9%%-|jX literal 0 HcmV?d00001 diff --git a/_resources/main.qrc b/_resources/main.qrc new file mode 100644 index 0000000..f13e3d1 --- /dev/null +++ b/_resources/main.qrc @@ -0,0 +1,6 @@ + + + images/main_icon.png + images/main_title.png + + diff --git a/_resources/main_icon.rc b/_resources/main_icon.rc new file mode 100644 index 0000000..59f679d --- /dev/null +++ b/_resources/main_icon.rc @@ -0,0 +1 @@ +IDI_ICON1 ICON "main.ico" diff --git a/_resources/qss/dark/checkbox_checked.png b/_resources/qss/dark/checkbox_checked.png new file mode 100644 index 0000000000000000000000000000000000000000..3687e56c00abd9949171f28c831d56737ae1f14f GIT binary patch literal 650 zcmV;50(Jd~P)_O~THx*qL>|XJ>cTM&I(>Gxt36-pkB6 z@UKhy1J1bz5%LCQ4dHe!Rg?>a6N6TK-#;D+P_vEKBJ2(W%Sn+a+d**e?Et`;a}N#j z9r&f_s|91Kp6C6{qiPt2x2~h8EXW>k)1Z&~ouKX-hjrJ`nsZO{C^}3v=bqJFL+h?_ zn8ZwHRapaAFs3>$fW<-~-dk4(0pbgnm+iw;EEa#n#qK1r8+jKwb8g)rp8z8C`F-F2 zIxas~0BdbYkpo}}AO^WR?in*~F^g2ys4-uX;*%;j02hWYQ6BdMg`K|wV682wvfCTg zqrme%&K+Qc^_QZ$DI!tY^Qo6G?N*Plek<^U`Xn!q>Ofq41z0i2fwi`jtj%Km!~lI- zQjyQ9YG$=QQTlg4*g@Iv3Ouo4_(DKtu|83%18qC?s3)lGtMa}#Gn@4j1Bgf@s++*& zn6%8+PYeJM1VLSd?U4z>RuE*fJ`(_d?|B~vjslq0`pf_$j$&%-GXp^TC@``CSioXr zV_NGIW&RzPJntJ&N==+l-7VP#v>V90Ht$!n*<6l`oeu&CCji$`RGt^WRjU>6EvHGW za|8yhM98`zdo|}|u~4Y~>EUKmv)Np}YPHIOyaOVGR+6=0gGq%P8m~O#lD@ literal 0 HcmV?d00001 diff --git a/_resources/qss/dark/checkbox_checked@2x.png b/_resources/qss/dark/checkbox_checked@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e7a6b1afebb28e00f68002787be4863dd9d1353e GIT binary patch literal 1238 zcmV;{1S$K8P)R`O*EU7s)>Bk<*Up;Ffv8fEnp;nifJ;j+ zAOWJS`VqKLkw_#V610>He1cYL1ga>PD!l}xmD+21L9kpl&f4A{!hs&E1luo%?g+2f zuD$X2Pn!Knd+^NI^ZME69gnRUV9Jy!#~I4fsKcza?7<}_{s_PVfYSh8FEp~r*$40x zz&0`6+cg>w7KyyHlTrn+Z2MgT{Q%%C2|<=gm%*QzhVkpm8YxK?%uId9StigHj^51! zz&wGrc5Qo!nG^r$L;-BqU1G-9#l%)7^iAJ!zDTT%D;(N>D^mQ7nN}3|4-La`h{%^3 zXHJ+|wQXAupk5&2bpR(v>cQ{DrNfv29cFFTaeqh1_5}PE_}*pHH1~=KUN)9x%_yq2 z!N5DA;%;AWo{bKSV=2(G2bVCK^Z$7N9(;OKZXN(k)7%Su?=paAq2l@By^Sy?!0=J` z|1r~QyWRdNh{djsMJ!G+NV{zJ*Jm4?FpW~AucSeuyhPKOT+!*FB< zRVFd9H==Fg1Q?m&)orw&gqYaJX0M6!fa8KzbpToDxo%qvu)^REhDG;P!n&^OJ9)2N zdk5^e?wlI%BL-gq@W$|W)n`2Jxo$h}^=mCahgqY5e*$nSruvi`@Rxb}sI>qs*S$_L zkFF3O=Ix`l0`wf`3^Ue>?x&UlbeJ`TaR71kF>c^7aT z=S`ong5ku3K)-kj*4xcyFU$EY*S*dqTVIgd0X^4k`;5l`u3|V>XYds@;72>IJC}NX zMb;PO7C;NIg5jN9QkFg^ut?+uglkAi1%TcL<7~?1O0m8`+Ebvd>wjcRg*3{s zzCh|@Fk>ntQl|928%ra~pw7Zmm` zkUbTuvA&?tm!Y&&sM7j^LIqeP@&biE24Q@W1;OzY`lKrB3krW7Za14fPf^YjXcNG5 z0M7}u=_$(jte?z^q?GjmbB)FT!24zNH7T|DDqJOT0_=wmm{~0;7U{&qz8`H9C&1J2 zfoG2(W839su|&RCH2NwT+`Bf>ZW%s>1$et(VJ_dU5#A zA8xt4pzk=#uf~Q60N~}8VcdwTNt_25&E^e&mx~Lk6d2&8SzW)G)FA7osqX>IOAW1f zGHseV%(l66c(Llbj@#x20G>>;ZEnhxDaV`t0Om6J(~hb@2><{907*qoM6N<$g3+H> A7XSbN literal 0 HcmV?d00001 diff --git a/_resources/qss/dark/checkbox_checked_disabled.png b/_resources/qss/dark/checkbox_checked_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..e3cb2f127c00859d32fefd9e9da0349efe2ab982 GIT binary patch literal 731 zcmV<10wn#3P)HuaD4eE+5*Tl` z63k?+T&XRG!PNvU5|S(@C>I&VxJf7n69WIVsg2c6-Pl4YXyHbfds_J3^c zZ}r}}=brC--?^7}FZ}P2;=t7#@oq%!0$o5;Ks>v^8mj4BHnZ#<2zg&3c6?Zn7eG7E z5D+;|t#(9iwsoA_+xYr%)g34}5Qz<56l2~4KT#dBLd?IN&HM<0{aP%3%H-)qWE?nw z>Lu5Sx`Gm8Mgc)}D3{Gl2SMz@`H<;|oe)u;IW4{pV0rSo0IU%6L6Uo+`F*$cc{k=2 z(Bx5jELfa-{@r;z?Z)a#fw3M4; zl^gVfWHM=~;VC}1Z(sseKYzOeT=vEk#{P#`forsYv_D-OtOv);FW60NA&dfx)zpcTfb z4Y~!oWsKUjTJOU5?|5-8^9Bf4Oso=K2X^7$02x&AV)XP6G&+wve-f|;VDj`HmjDUX zyR|>KvEMCFO(W8W$aus~i01d_J!iNhp{IYKQ9|{-qC5Z$s_B9#Z(_ub4~t5g01qlf zFeszB?9_cXaOh^V@#WJ>TgTZ&M4Et;1a~{y0p6jS$YnDx1FHFt;1{nC38>@aaNz&| N002ovPDHLkV1hVXQ0@Q# literal 0 HcmV?d00001 diff --git a/_resources/qss/dark/checkbox_checked_disabled@2x.png b/_resources/qss/dark/checkbox_checked_disabled@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0c8c28a245d8e611165f6719580fa9fd9e382d86 GIT binary patch literal 1334 zcmV-61y}RUF5^znNJ~dLdOBQfYc|n}{K)NN>GtT!BL? zk-$cc&@|bNy?U_+5?LTIruF2_=n@(wnr2%tgvJ13HZ6Lhk{Des#RFjv7;M9-S=gDM z2lmPA?Cj1g^JfRy&+X0pX5MeU`TpK}GkF6vXwcv!Lw159k))!u%7nXxowm75X1ri^k);4V{fTat@CAT&7n1Z5%96$(EzYKvszu4w?$AA$ z7y;o9fHSV<<_~8;7!J30?rp5E{Zc8Yq5$24i4ib9^(HqTA&Q3EJM$asYb&Ow%?=iA zzgTjR@r;Q_C5aw1V|O#1POBcIdt_p7mcG_1U1+cPykv&aPZ#(TPa01x1J~59ir>C+``wNr+ zHCTUj@9DYE-RLt=0@$^_1iEhLgQpz=vl8s-k9V+5>o3ft{&cI~KscZt))%nR{#sw)*a5wsp-Y7k1L(5$Ea__ z^Ffe_#(MhW9meDJw!Xlz0K~Xw5z@pGP3cP^2-X)k7C@ENTLAVf!b(aZ2-X)k7GOC& zl?7qkDo&I_P^>R-WenKgX}b-^V~emRmgrlSq-g}e`T|!3$YjO~#C#prrSLky7cF9Z zvA)2ySzvK?@((+uV1-}S7q~hN+AM`?_-1{9s{+(e3TF6feSzx>p`(_9-_{p+vJyN( zDfn)EfhPjgSPFHqzQD700lTG8FY60DeHpS*3U#x-z*7M-nel=o^LqfyHd$;+62D(B z>kB-89bQOJK2aE#8JGv~9Kdr1<`u?eyPwRw#FwwaKhC7K0KDx-U$qj5ufp}jOn|(; z5sSsD?I#X2Cb{R0F=hhf^o?CKpLa7UKQZP`z?Lz_On_B=L(}+*%X#^RrqWe?n^8U` zmkGdxyZSaUO+@<=t?sAiEz!P2D}hTEV#a3!Oav(Gw9Nrn|L*|dv>d|paS}mnmM+~f zPTAtKl~CJuc~DZ4c|OqF$;PE4GmlynRewYA2%p;34lb@NLt2o8|mHllc+}@c7 zQPjKCJck(=S(=%=RVkqA9KW%?wi15zjbB03g=6>M5M@cj(9%rmo2pTEZl(Wij)1P> suIs@4Hb=k~1CML@ZLUFs1}B?;0S^@mnVy2*k^lez07*qoM6N<$f|$p70{{R3 literal 0 HcmV?d00001 diff --git a/_resources/qss/dark/checkbox_checked_focus.png b/_resources/qss/dark/checkbox_checked_focus.png new file mode 100644 index 0000000000000000000000000000000000000000..58982ce87b318a62270413bdc4e395e373e261fd GIT binary patch literal 655 zcmV;A0&x9_P)Ff`2%9LyP}AKT|$Z^_y+=N zmC7V#2&q=EFknzYLDB@lErJVn0YS36mG}peIzhoAmB}27owux;+3Zesw9&76+;?a0 znRDOFya)d}>JF6O`(})n5oN)ZJc<|&G4%*l>a+UXQ$VTe$KWSv!g3X0vRSNJ z!f#`|3`_$=?JQ9Sh)$^GS-guHfJ7+-+5*CY%ggpOnlt*A497yO&?EQU6sw*Reg$Ck zpgE%tXXWQApt$V`{qz=M6d)0D^{i{6vnDgK;z-AS6N(Q?ZURczcm&+(j7eJiD*}q! zo=84mo$S=V@bb?KNVDD?xuAJg75BTm?;`BCs#C3xwAh%|-XQw>I*=3}2gYS@wd_vB z4PkvC+iNIBb?n!y_#Qy2^%n-SeqaHT)@*NdgzlEF^UyJ32az;~n$y|?E%lmLq{U`N>oW-eXnf@bU9Ctsm-U$iq_$!R z>$3}>)rv@(1NMRaNSZsZ^?}U44oKSp!y&Xbka^v_n_|_Mli|TB0hl^K zJi_Fk5&*4x+cZL;-GT^JjHi&-i&YD#b?o7WB6;#j;b%Y`p-PxbJD60+bEot>y$>dV pa5PJ{&STy4=j6bqk#;ou&o8D<>#ezM%N_s#002ovPDHLkV1foQFx>zE literal 0 HcmV?d00001 diff --git a/_resources/qss/dark/checkbox_checked_focus@2x.png b/_resources/qss/dark/checkbox_checked_focus@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..ba33ba4fbca7c1be6773c54b4a8f42b118baa911 GIT binary patch literal 1269 zcmVEgPeCgA1CnsEgJWEzr4N7kyJ^ z=FN2GF?W8{zEAQNbMATXo_pT++_^Kk7iiF+!A?e^ICamkX>A236x3OP6bbAXV0Y5N z)dPVi0z4u(XTZ4HQozmG9$63jUT6YJlY9%{HvnGM5@~wO1M*>|Uw+=o$p~yArE`LV z0H?A21`h!30H;egH~=#6j}A;g=OhM1_*pWsr3m?X=_h;~)a;v?s_dsd<`s$z!NjdY zYgoAcu2@)CD@)oV zPk>UHtxy~T@utH(zo#Hayc1(h39PN)1l%>hY*IehE`tYvO0O)zkaGZ59Om}w*j&^k zKtY{#UQ=ZFZomAaKg?vQ^vaS@hMhL=*Z`jd2&CvTn7E}qx|C4Om~va>b+1oN0toDP zULRV+g6_c5!YB3vULPL?xL0_2o9*kt8@u1?HFzPkLukr6fGBj8*`|~l0_D_(h2y3e zqjyir-*JCC_X;SD^RTjb8!J-7{>0!5;za^J(6vEcHp; zK60Ia$IG|`pyt-~9624gkKE1y#YuJuIFfWfxl};+44X{wI{?jF`3ZPEZeO`fK)Cb) z08eQcSK{`SyAp^jeUXt$pUlVYFINhPDt!p%_Pm6zbo8041Voj-vgBfv7oJhbO$pQ^ z{ohW@pSt?Zg#xmWzKs?Iym5oCSX4us3lrglVHl(LdgVcs?>}C~C6RQcZxdSqU1hde zIKlc)F#J zrxfxaeVf<`sPxG^DW8TqR!bo-(znqv2kduoS%DFl z;5y*feq4sgU~*BV0s$GQ^x=yjhp309z6Q{)HMHc3bZDyXV{_Fl=Lhn5Y!1L8!29(a fn`_XZ!OrGCw>RmF`CV2H00000NkvXXu0mjfWxP?5 literal 0 HcmV?d00001 diff --git a/_resources/qss/dark/checkbox_checked_pressed.png b/_resources/qss/dark/checkbox_checked_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..f104bb240315fcdd6104f7d5dfbab95df3538510 GIT binary patch literal 704 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 literal 0 HcmV?d00001 diff --git a/_resources/qss/dark/checkbox_indeterminate_disabled@2x.png b/_resources/qss/dark/checkbox_indeterminate_disabled@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0d32c78f36c2aaa5ae15b3f4fa8bdb3ee6278630 GIT binary patch literal 1003 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|WD1 zPZ!6KiaBp*+vfxYiX7Yjx#Go=8!IxEj;(Ai4aknY;~^kpvSgVm-?bYWn+uH-CtNuq zareqmMjunXW#9Ze_=08|gv722WuNgXA!Wr!`MevS`kXJ?$?->3-G98TsQ$L?`#Xor z_wOlx@4G`hKttp$&stSY0go5I);YCEq%+8{K49N)H8k~XFjD}7!ReOc-tm85=9E=r zZuMI&C15AZy|L{!!!B8Yn@$?;Z1LxORF+GnR!W6(@E&=j(8F-!?TT&JHb}P=$KJKw z|NL{Y{%h5%rV1tk-OYt}Wpi~~G;UnI8$9d$`Lj3dwsD8W{q_l+@UgjbeU_B%=Y>Bq zOG>u9X}VJ?-0NoR`s14<+kBN}*$O2y=1*?iaQAsYvV+2e3wy1(?0rF4%NsZ3(lwk?{9@I~1?@F1vh^l}+`G;p-a=(##w7oLjGw@#Rcn zuCDXv55dK=8}7}LnO#>`e7OCQdVA?sp4DY+-=d1&@T|D?Fn7z%eUdp_uD^+U%afr! zg>e(>2{%cF=!P8Z%o6pk7B;<>gY%*pUskFT8IBRw||(5W8F5 z(~zrVdgQ^|=#uw_6S;EjIk_Z1RA+uPb=W^g=(5e1?8w8v1dSA|Ek8|8h!I+;$aHYW zl({lLHG`ag2%qR#D%a2>%y2KUva?8o!YO< z8K3-T<&XtNaju&1Ke=h^>Ew%O^$FAHXoi~C;qbN?T6aWw{k zVjJUmyAr>zc_;MU@O#;^)w`FoELu=~DW+Yr!@qZV-Zk%x9mmc;f1bAMn|vkfqPU!0 z)y`9tnVW+jpKRydd@blyO>SSqy;Cb+^Oge{=Xv&IKD#x?X< z3nRE6+zr^^A}=r?rhO9?2PA9z%)+i9No+B8bih8V;?||kS3eZ@!e^I81NAenWw?!~ z3%-FbS+AWmx-ZQ-@;!apHCGAK)IV6+O_q+}7VRT)+PI zQZ`2exeF}H+6X5xACheEO9-o#Hg#HtaZtXI(^_H)|H^P1_zn;avqT*rdZ1UP`G|S| z5^)F&0m6eT>)0phYD;(daAgeOqf`M@03Qx8|58GH<{jjpz``rn9$@`Qn>r~xA0g%&dRKocsU>5i~(T!0NEUkSpmS~+BRtj3_qd>b&S6ucWa3S^q$mkZ&JSV zhVT)PMW_?zCN(Ac%FW)S6ZL2l3>DhUy7d`2YX_07*qo IM6N<$f;X7N)&Kwi literal 0 HcmV?d00001 diff --git a/_resources/qss/dark/checkbox_indeterminate_focus@2x.png b/_resources/qss/dark/checkbox_indeterminate_focus@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d6403ca424b193c5f80c7afefd7aa92202534086 GIT binary patch literal 930 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|Rr2 zr;B4q#hkaZ_xcA1O0>`4-WtK)J6A%*>huDYNoIL7GGXZuDvv`y4vB~=DFYJ&HH!nzHNNw zdB*m`8z)aZ8}e%2)oDeY#-duyO(mLd#BWU9vZE^ChvJ9Gi$6tHw$Ie@kC&f5|NpN$ z_Pi(jUwK~GePCh46tjNU3EfAV_WX%n8gf>B)uie*ix(K@?0>>&<&gd<*s3Y(ta$9@ zhC3?CN>#R!xxOx6-TrY-&$jI=IrjRS@xlU6*L4$~{XA&o-GA<6)fy*W$r%^EEazd5 zcs^xC9P_4wQkR5HWmfUL06Ofw>feU_x4GAQoDA6LAC?q8kKt!#?&3xK0e(LYb?@F> zq+(+j#@h&VKFjex*SDPd`F4_x15lyINr8Y*t=4<)Foj44EHrwdzxu?D*-bT_@oAex zey6yG9Q(7eAWtB%K_Rx$Vb=4FtFwishRtJDE;5N(eu|;>@4rt#w-s_{iwWMkeYjMq z%Aufr`_;7HRUFyW{T2FmcT-+ZwL@M|dtfc2jN;EHANMU5zAC=cQ`Ri^%!!6`ns?P-)CLRoD!teX zWT#(ho5(0>!S=>5^YDbd^V-^Oew@5uB4cU=cTKmaw{p#A6O*2ajNE@WtvbOv*~};4 z$swoxYi4apv|)M1Wz^@Pzu~}pRjo|3X$SA^Z0eb9CU)BHKy-ia^%UtHo)@+;+_qrO z;oi_|d;lv`K_=kGLw$aqj9ryQk5t##&XIPJpY-dEe*LKeg}ThMicY_acKEsQU-;>e zFgN()sVupbrhe?ozt*ktD^>V8O&ce>Fe$2|QUSJQFeY zf!~Olp;o(cxc&Cr59-rbpB}YBffOnhFono`cPE0bi5NLR5H)KX%Vj^n-8dgoj%F+Y zc2HdfUIG|ym5>Aowb~Uw;k_|}M#V;vaL3$P=fL^3?KkD;=cO|n#p8Z~d&)#$B5>~l z!P^RAnbI3YKLFu7uH6*m{jbgJ7q24E9Y~}LGm4f5fCGdTwG!#V%)kQUh^IhxYvn|c zEYKWa?WQ1Rb!+9stLWA<;PlY5kHh5eZox!gA~0S7p#k;f z0;y36bS^q68%4D{cJ(6?$)oxL6)T#t#0VOd?j3H}#24469e5GwAd+{ny@k%hB+uy1 zM&H9E&^vov-}^Bed;SfG2s{KH_(64g{vDBYebe0aW6ggjmjFYChd-R4{{R3007*qo IM6N<$f>ws&v;Y7A literal 0 HcmV?d00001 diff --git a/_resources/qss/dark/checkbox_indeterminate_pressed@2x.png b/_resources/qss/dark/checkbox_indeterminate_pressed@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..aa7493edc603095e2474b6c96e954c16f83b8907 GIT binary patch literal 995 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|WC^ zPZ!6KiaBp*+j>L?iX8v{{HZ7VMlCU=h>~^AqLY;FwuH%wn7_WSm`pZ)y) zegA)N_xDM6xHUw&Uh}9<3VHecwfksDdvai}sqtrxM?1n8rKFa{&fa-2$@zJdK^5Z@_wN(~Emm<pINR^MoI4e0Ia9IVL4C&J$)YmkN4zi@(Wu5qeg=yY4{t4*d08Hkip*ihcYm9?Gj>TE z$C*3(tnO{q4|4t?%F$EiW3ZTQK`4Vxls@B(M$@z_EN<3nF5Q-!_$=o3w?0piT;Uk7 zjp3#Sa|-u_ULyyr%mZp=Ie8`~KF9C+Ro~oru`cKAM#F}(Gi%S@N!Yk}l~G6Ux7=*M z9!8!x!|l9tvt_SMHB{1DeC|$~Lc-ZjLkH$%i|^Iu@(l+WCL+C9eY?#sFU zxx4>J#@)YAUzEV4Q1Jbehx`1yTX(!}n0hh2mgSw_{53rX&U{I#T=KVcPfH7*uVGK) zWMhl)b{Br%r3E>Ba&zA7+ShXY*@m+Y3Nw?7xmq7peHJ%gFSllj;cO0Iu4V9a^>bP0 Hl+XkKTa3d6 literal 0 HcmV?d00001 diff --git a/_resources/qss/dark/checkbox_unchecked.png b/_resources/qss/dark/checkbox_unchecked.png new file mode 100644 index 0000000000000000000000000000000000000000..e363ed6200510a57a017a3e012489733586ffa18 GIT binary patch literal 385 zcmV-{0e=38P)z(n4Gr>L_!$PQ1z zGZ+(}fEVa;1Eg#$)R98?99py~KZCY$@SgGZCg-$Wz7PI8Qa+f+@jc1|&;#6xJP9yG z7~Oi_+u49c91m4_1U8@%Dj${TMXx{tpe@4i#`B(!0_MwQpS`{cyzjQ@!1w)CCGs3& zOt;x`CJJ{5{lk}NeBIb<2yE(*1Ngqb+HKPTkfMZ#^G4xL4>YPnUW`D9GS_i{TiHLq z#GVA`oC^38Y=8~00XDz}*Z><~1BwAjHoewvbbWazM9gNh>t@TD01m?VTU%fe$1kcp0VzV150Jm7ft$a%b9ON~kgsMT+34IUKmQ?X fvej%{Ud=3@@DOG=Em^2!00000NkvXXu0mjfoS&pw literal 0 HcmV?d00001 diff --git a/_resources/qss/dark/checkbox_unchecked@2x.png b/_resources/qss/dark/checkbox_unchecked@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..520f5e2a2ddaa5dfe4841068101232f84890241b GIT binary patch literal 847 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|PUo zr;B4q#hkaZ{r!alMUI|d8{r(0l=wqAcy|GF>CvEltO+WDE413u1AO#A!Ue^=|fxx3f9>$>GVejH!- z+V;Tm#-%(R`2w1g*2L_*Qt#lBq#(;7$KWCDZG5*=ZbFUNR$-;`1N||1Q3~^WE;I(D z#g-Sm-1GJd*MuoCd9MXq^BGI7KYB2E%IiA5XYD*1AVUg-3E?T@_=nhnMFYz)!!KUDJ|Fm7A)M}`SLYUK`}pMG*N z&`)7FQTSNv@vdfX-V4`7V#+^oH~8o}TuW>?aU#<$Ec)-6`RyGOj=aiLF_SsNDe182 z{*R`+Zk^d;X}m1#O|KQ1&zSEC`@MQMPa1Dv{`!Z?1!p&~WpH0OCbdABVHc~-Q?T!ko%-kBWiQCLitU0*mZA-!ADGLI2H@?Z8v*lUBHH8UpA5?`be&Y6) z?V!ZTU1?lVf|Hb*HeU8fHJ%}SRbyvT%u?I?^K)8uq&@ig&w0k&$4aLU&f%WD)bY*c zqA7k$gL1E$%siVWd!o0LL+ENi?b%Cxk7b1BtY&55>?}>OIX^$E{joz3kmeHMZ~7dl zY%-Bmmfz=xyuduMlOey`%cIwJhqxrERIg6AlZ}Y;;JaHH_x%9NhxpzzIx=tGpPgrF zRQ&Klh}ryloeAa{`xmZcI{4F@-*;xn@n>p%zuzVwW?_#i%Hi9@8)Bxo>5gQ-{&i!s f^o%azf;j5O1!3RpF?~@myg;CY2_Iku0_hGv`=*jcS|)<^1mSd z!g@o1JI6zdDO&ZhIgcOw?KL<5TYG8u9OnPFn`$4#$Ia)w(@@ngInbX+NUP-d`Tl%% z#($xkm9@4X;OPjkGg>L$#~`k;u;gC+ym#dcQ>!+o_3Yv5i4>DsoLE1}^QYF;s@*-2 zJR&u&Suf`sykt%GVL0=10V19P;%c?@Pw@Q2~xJCH&)G{Ys^E@p-hgH+`pZ06p0z;O;)78&qol`;+0L9gsrT_o{ literal 0 HcmV?d00001 diff --git a/_resources/qss/dark/checkbox_unchecked_disabled@2x.png b/_resources/qss/dark/checkbox_unchecked_disabled@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9c80ad75a564587acf3f9c57d3ad56067ff535d1 GIT binary patch literal 868 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|T>| zr;B4q#hkaZ_xlG2iX7j6Uz}rt-zR0JcX|=x;l4g=N{d&pDtlgBveZTRg5W= z?^|?!ZuP_`4cz6-F8T}&CpNx*vFc}1$r<*$&3%GX_I_abwCCz1_J*lXukgw4(_m$3 z4tgPDc0E)gV9zU?O-FO@Pg;|9ua;?oE~~~?-UBCX`56QzmYV#Z`CmHd%)#UnF%QxY zEHGEt7|kErd*sB!F3b1n4llEEwyl1rBVid5^Sh2MMq>@*Ev79S*)q5<9Ftn0>mZ%o zu#F*?8iF5~SfFAU#Gl%$AR}Af@#$3I!$~`r9b#DiIz!N5rCCJBPV4W&y5%By z{Pr)!C*BNdIAK^2al7Ga$u5N>C6O!6XS$n-boMVY?PGSH_#vPyBq%g&Fhy|4Mx*S@UY%>e8MQb^7YNKQ|;g zO-T9hgnjnfwpk1Q-?!X<|FO?PuZ!hpm#qvi5nTL0G-_>T*9lI8;%CcN79H9c;lMTb z@X@N@igQ9@&6986F>BD}m@Z)vW955$&e5cuH~ui*FMhc7yz#P&z-+_d>FVdQ&MBb@ E03v&eMF0Q* literal 0 HcmV?d00001 diff --git a/_resources/qss/dark/checkbox_unchecked_focus.png b/_resources/qss/dark/checkbox_unchecked_focus.png new file mode 100644 index 0000000000000000000000000000000000000000..366b868dee695590176db0f87c1e0bd6511f86fd GIT binary patch literal 387 zcmV-}0et?6P)H2BfwfvlFRP$a zjFmC5HgPt<9%#T)lbLG)lOTeHnTdt}mhZp(d-DD--i7}zZ5NVT_f+#akN^iI`7D9d zxo*-kJ?#bP++`!A3&Xo$W_T;ZUC=bdf(G*F^(4Cb25>ZWKgW-V=g1nooN8W%d7tHOK}0+?ZvT>uAVz4=e_ z>O;160sM&qKmZ5;0U!VbfB+BxHUXA`X4QsTt@?{y0I4DFPTj7`e0_I}NWTF%*Nvc& z$&)G|IuAa~TcydBMgJ^^U4Z!dg7Cq4iG002ovPDHLkV1m0=pceoD literal 0 HcmV?d00001 diff --git a/_resources/qss/dark/checkbox_unchecked_focus@2x.png b/_resources/qss/dark/checkbox_unchecked_focus@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4ab217356ec7678b69022302d17ae5d1521590d4 GIT binary patch literal 850 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|PUQ zr;B4q#hkaZ_xg(jiX1&Za}8_GO6h%7(veb+k`zr%=er4QoSeZFbtry;=?spgvpf!^ z>#W?UpkksEa!p5Q%bleObCVx#vOdEjue7_|d{6w=?{}?FR;s^0n^UO&pui%}c#l`$ z^<9&ED|;HGlrCs4lyz8i>ej!hN}Y2WVmnSB_tbg!#jyUSv$(W^;pR3&r+mgOcc)yE zDpV-QS}i}{@ztJ1#k?=(U7zc6YCfw)oNVn@r_V=~^OLIQs2AS+k*s65@zs9zA4*eB zdi`>%viJC5uKTrq!UNAb?UTnDE=}b*F03g(A@11RmK(woBCkp;>~CBeFQmSmZ9~Du z!d2WVX<;9yT;XZh{WSH%&ua|!t*4dQ{?tBvX{}ZMFFo+hEx9L-S6#vz--&KjT_MZx z-OGFDW0m*q@jY=r4lc8C6R3FTS#vjIHhaTcM>&BS;fSn!y#$LGaYKeH0Sc$`coP8cmp?%w~|t-zYKScaSbkg6cFSACIJV|j#buIb}9a#n|4 zz7XZ8k$U|$xLnq$x})aXW1bzM7R+l{BOdc?5KHJaJ`mMldX6ER@ftM*h0`5Aerdn* zgRS*j0MGNqxkWDPgnsB=ofztT?p>n&oW5-*8Fx=@*gIjJNpQe)kCq$JeVuy?Jil~w zpKjFnn<1(kDj3dOb?pO73`=lTRgd!PC{xWt~$(69C}Gct!vK literal 0 HcmV?d00001 diff --git a/_resources/qss/dark/checkbox_unchecked_pressed.png b/_resources/qss/dark/checkbox_unchecked_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..d9a0bf71c7412b08d6c9b2baa40e5832794c3fdf GIT binary patch literal 403 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 WXZM{iMREE70000} literal 0 HcmV?d00001 diff --git a/_resources/qss/dark/radio_checked@2x.png b/_resources/qss/dark/radio_checked@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e190476212f1d5a496f444d581232f975e8d6189 GIT binary patch literal 2718 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 V>VUGh1^NI0002ovPDHLkV1jGCL5lzY literal 0 HcmV?d00001 diff --git a/_resources/qss/dark/radio_checked_focus.png b/_resources/qss/dark/radio_checked_focus.png new file mode 100644 index 0000000000000000000000000000000000000000..4bd472e160a5c7e26dbfee8ce8ee94e4af48665a GIT binary patch literal 1232 zcmV;>1TXuEP)c2>>p0}8zeon6f~NQ%JFR<{fUCDUx?JzdP~ zIOEQ)JJy}&X81q<=RN1VU;pPBxYVI)lBc)3CXu7j@*ImA%mhIIjv#uBb}2_X)2yHW zR|7NCPDOhyFl&gUT{&r0SChW_PX?xL_La$G+yHv45bDL=?hrmxj)TJ^y?-Z(j*OSM zL5g!h4Z!sU_6~xUWE%8))dps6^-VG7ZNP0nuTbmAv3#_1ma>CRsnsDhg-2z-2GmL% zj@F{ihtxe}1Jky+HW8cw#sOOysV6h@b#hSQ^YB22M;t#B*MpW|P6g}k-Obv6K?C(2 zzJfE}4b*|xWxB&NyrNi*coDYh+gXXd2I$FJseKQtw=^Z$Z_wZIT~M9P_RjD7i%)NN zO^9(R(tONBAYu-Ic4XnhG6BgMdu=N1TA`&$c@y>=Bv)L4)D}-uaF^kaTvn6zwdh3g zWvfH|6rRU^2^d*<#+;J$!k#AHDHW;P?BSOu-3{DI)PhX2I{My)((y|84S-<1+E09P z+*nx3%HsLyj5c03BOTXc7bkb1MQ4Rx%qx0r>ARwVsh{{7%>BUelR4fm<*lF0YS0sy zA;D-xeLGK=#`ZLk27UzYNTs>6pMhjxAt2-(2U>KtFFtLHYr(4vGaNdiU%zXsuPr`H zmc0!iI5zb&fa87npYVApPa+YY0)|x~T@YmSKapi+o)o?Sur#~B0aQ~M_)8g)wV-P8 zq6a@%`W(c;JSP(>7{~{MICqWmho$yn4cLWGasgvU6u8B8eFrgA7~ICQZFfWxH^Cr%f+kM@1wN(}f{00(X?qmVneNQm;WxpUju(-$im zu)|J(;5e_0MBzQ)Vrs$Jm<%75JBo7)YG3y=Ff7S-0HXy{-*@raWg2w=`R!`eEv@NX zq;ogQ7HAPbR7m$T@J)k`0$&5;hF#6lQnKu^@EoFwt?n9*2=tDx7K&~ioW>1<@zUkOpV}m489#%;WZPp;jz*xTDRH5t$dwP(5eBeAwa4v zw@K)6U~8sZ51n6*r?vU^1aSq{e8fb+hC{-i<`QAU-Uj_tz8F@0I&J_h2Xg*2B4%Co5ve^lMk6V4_A_E}b1H^Yh%YeTeb#G_0_MV?NV0}xq`DWp5z%9TLORblUVdGGm(iu}| zcD^Z{1oX&i*z>Tyt&~1!ft`}}m=TU2fF3D?dTehGiSSu2%fV!%_w+F0s2t;SaD51I zp7U*a-v{T*nAPI07X3Dm#*iv}s?9Tn*8=wpCEsGd(8^4czPwOwRe#N9q)Uv^_~14G00000Sb literal 0 HcmV?d00001 diff --git a/_resources/qss/dark/radio_checked_focus@2x.png b/_resources/qss/dark/radio_checked_focus@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..aed5e0c94d5361564b31f53d50cb7476957bc2e9 GIT binary patch literal 2656 zcmV-m3ZM0fP)N+^RdmaYLzaG70#E10BI zf-Jj>8y}_OBPu4w#3UwKrHe+5#t4>G2DO5vB9&xdcK|I>tHiYs*BX12};HXK;Tsa!OK%?}?$2 z){d0H@f42{a0q}w03rak?ftzc=ncTUjwqJ*PT@P1)>g3qj7#a8j}|%Q<+vkC4nShDj+A5XCU|}T%>q~fs!P_aHxc|(8Eml@+YbVqodz{A zV6Y5E2sjQ<1Ard_hzIywZY^i5n#R{k(O*&k8d4f-r9}X~o}+j>s3$4&xCNf-ZQ;j7 z`A#bCL~t5u&jL6lPaC^LUeeplzxGEzP(lF4cIZ4%4-u&Li=uRIwA$S9!eoBZU;l2@ zCRJ4v#ZLg;1mFmNxuDy6Up6=4X4+zX7axFjnZzi2E6D48C05Wwl)1U5m79w8TL8Yd zST$*jYbpI2z(7x-uqf{Eg0431D8^@T0ce*=jJERup5rUoY{=%7&Fn48Uq6xP&@dRK z`~$9tb*$!uo=MzRs4r7g!zbC9IXd5+5l`MYPQ=Z@S@%pJ{ndxGyr2eHI&fH0FH8*d*fSq zYS+cwRgBR3PMu(dW*R#R;xGWi05||Pk=i6{)+&b1qSpWt6Dd0v;KeTM9*Pa!ty~*a zH8cQ;PG>H_OI)VS(Fp5SG;wnw+G>-ks)=C+q$>d&Uq~Gh>kN4B@HFNvXrog|oim?Q z^~XE4jKnyXd2M_M6I~OT$yYBh0EteG2ejO+4dS?-R(2O6YHUhVX>}KfV+-Nuz)J#u z)!V{lg^&}AbtD|U3gEDPHiFl5xA5M4b@C5_5&`|eXPjS1=f^ytSR&=zM=4c8=KfgoeZp*HVaA zg>ego$o9l&{e8?54G81Lx8Z&g@3~Be4fqUKS=sCsPWpQs?vM3 zNWk~Qg!Ti|qG>%Eb|>@=%=G+Gg09UsH^}L%E~&2pIKyR1D{5{HlqYdu)ZPc6F_2dZ zh}Oht8+sQGPh%c{w_K*9HW>UM7dK}BB2k=&zOAZ#4KM3y;s-&ECKlm*f|rGfD;>P4 zexY)9W*-)`(IK?JQ_I+ka&dD8K+stpgXNN-2FEPX07!QPamoo9%?h3F8spQ3)|Yd#RRpvq-> zX-ym7^YixM?4%-A`gy42GK11JfrOiBDS7@lDSMwXD*y)gwx<$36QL|@jNudlhX;zO z3`Qmv>RUksOXJZl+7tbp>@h(01P{TQx3V~Hy6m(-nU#b=Yfy2-z^9!j_&M1DAiv?h zv_RmyA7Z6)dZyjT?D1(AM))~d0gy$FkML=r2JY9v&yQh2g$I9@rM9$Vk6EZ1)B{z6~?x~5|{0QX9;sx~S20G}fOz7--Z@@{xcm;jT@$9_btR0r9Q z0I=PC?Y|@3*t^aSoFP^ifxFKW9!52QsLQnH^)~Ktb8-xV@a(ACzEj*F{41oqk_ZgI z&Os z{kw?{<$c|BUCdpS9uAdTW=MQ6a7(^j2H<3GC3N{|SpnF4wzkq!kC^P|xe;^BEdaI# zDlRWJMjXrzBGiq-7

  • +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 literal 0 HcmV?d00001 diff --git a/_resources/qss/dark/radio_unchecked@2x.png b/_resources/qss/dark/radio_unchecked@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..2160a32ed532593c6ed5b88651e64a56f5a54704 GIT binary patch literal 2167 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 P00000NkvXXu0mjf>yPoi literal 0 HcmV?d00001 diff --git a/_resources/qss/dark/radio_unchecked_disabled@2x.png b/_resources/qss/dark/radio_unchecked_disabled@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4de5d0d2d8411305a232bf65c59408ce6d9b7e75 GIT binary patch literal 2277 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 By{P~I literal 0 HcmV?d00001 diff --git a/_resources/qss/dark/radio_unchecked_focus@2x.png b/_resources/qss/dark/radio_unchecked_focus@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..eaf7bc26b9e24e84a85420e7aafbb2d726c2cbc4 GIT binary patch literal 2127 zcmV-V2(b5wP)jyBY zS_2)`bSXTd%K(LX5Yr7&6(Lh-tV6Kd*`0__P+b>y$=}1FoyB}3=YIeu88Wq z(`A@RYcG?*1d106I0wK;0098U&iwWZ+6$OB5ybZP`Fy9;+Dc}?^tdibTe}G4d;pXB zl|*<4Mq8{kPj@t64@mi|(r*JK*2QtPg_Z)C?PqENuM1q2`X`?2yp2g8^ZJ8uOtWG1 zAcU!Y<;;P11uk!o;2A&eh@uS$Z`1`!+lL5#rx%(9ume<^tl4J*_`6a#Y%PwD0MaK7 zD$9UTG8iXdJfJ!N-vkiqCFgc)xujzO-zY|ZQ3lk-HO)$`0KS-|_&BJ|l-Xo~7up;6 zuYz(%6-ozi6=~-IoS)+y-6C&kkMIxu(GL`1z_gfd1oaew3a=xseaVMp_0G#bA6k0=RE^KS!i9&J~W8oy^cfhn3jiFI1T#ZM2=%`sd z7#a@%i3U6Z==aVTp~q`un%r02J`Eu3g8(jcgt~$OM%up1?!u*(2&6`jFiRxtbVSQV zJw9uzg1uGk)qrq|W&pg!5fa449rf%gMsF#wWe!g<$OZt19O22`M{s*@^>P~^5zsF@ z!F7p7?k+-SNs*}M2M|{}V}kCP^rFtnRVSwbb#crDFvAf_rmbl%US??#I)>kn*zX9P z`?-&BTP}W111$6t=P{+)IZ@9K{1jPAtZ!nP(0XT##@?Kbo7Dh8 z^IQST=Y3N*P%y@$nRBxJ4KfTk(_>C|#!_kg(Pw!j$L?3r0l<0JjyhO|DPCTN0Tus2 zEr4=I=+B)^-0$TLdaR(OIP0Sf?Ui0m zh5@9TWQl_2*aj2Y7U2|tlp|DL9hI|#&tiaQl7tq6;+?-#$ovZc$DPOCJ7Oqd*3+l} z;G7RQ{bmzSJ2_c8LAYjAZOZknJzvS#0Et49*Y%VQ09H&FfxHh5?}zb^&m%zfTUwbdmq^ zN{nV1fOB0jq0LLnFyPGE+Adc;Vy>4r*ikbHQ{Y}vJ{B5{Jzidp`2f1!q6p3RS6=C1 zU|pI8z0fwBsZ3rLlm)O3J)0WNRK`_TM0K9;DocfC8ITK{AzHIG8#Su|JL=gb;H6J0 z0~N`j^)81GTGU>S8vsmjgx(L0`LsPwp#mZxEt`=YXhIJ*qr16_l+!(|3*a`AJo43Q#vwq)8-EEJNAG%CQlL7j@{s}in8;gQ1;mS?b2vBG zW6z6%c8OJ`&D{jz?(^ZwU`iczt-7p`T*Y8|i_WhM>Q5Ps2i`aZUY~E{fqrb1ye_K1 zfuQ}BK<_P<1hggqvvOwxKP)tFKB$W-ln&yDgq8vLyr+0eD#aT*n|QR4oc-S_8`rIr z)&MB;6rG^-kV0lvAsZHZ!>p|eb|1zfQOn`puLJ-Pv}$b1EM4EkbfLM6>cwkfnrWyO z0AsQg9|5!pGMf;>ONE+I9aZ^AgPAgR9>974*@odskxSYme6m0K0Ux%@*R-n2SUn7& zp%+>b#5P%OrNLh%{7nXjD}p$YG)S8hsI=u6r8LHY7*E(bfLEjElbT$@J47x?MA%u3 ze&3$swQ*e|=>Y(x?hLym{%mX-PxR-O_rl+SOtZ|iNvJo}G66Nd<_6vdxGHoMPx`q> zv1B8;nhlz0j9ql*V~6qmO!GdV%~ob@$7^_{Ki>oNg#j7L*0idM7PF1)M3EB!j3Y5h z!btS2+#E&EXLAPt?IX=T5!({=*gIIZ;|^mO!}#CCe*qR9)Kii#ABX?|002ovPDHLk FV1k*V>5KpX literal 0 HcmV?d00001 diff --git a/_resources/qss/dark/radio_unchecked_pressed.png b/_resources/qss/dark/radio_unchecked_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..8aaa343e885eeb7ea901cb64386583472eb51b39 GIT binary patch literal 1027 zcmV+e1pNDnP)l+I#9YR>9Sb7uoQ#}nl>G-1;uSP z%X=O#l743GTAF&Z|K;;O=lp-q;XUU(2X1!BYLe@kyDP1m*)J-)5GoNWPz=f#B1wdE zj@sVA=+R#b3gB%D`%pT7r&c&?TvU(6qes7A6F_Za^bV2fkAN3*p%h5JDreMjNA+Km zD&AnMrtw&@+l*niTIvzD=BEF~aot0MC)+Nr8en^KceTmbK13e?QX&Lz-7@*fKq!=1 zwxnRtcqhtV067j?1^jMc-}z|k&npJ-9{HdOTQmr42EKAiczLj^_3vek7pXcBF5NUu z55ghfGQwjQK5iYlA;6A6cw;8bj{-G{ewgq~y+J5sS7SaWl{$a8U6FTzq^j#n#9mL$ z&oGOJxYI-gYJmQ=nFEN%qpckxoCGS2IG=+qD0%^a&)?-mIDqh{YUzQsna@F7o}6p} zMih2>{o!Yp1hAs-0jTObiJ1SdwVP)(d@7U{cq<3gF@F_i0csmN??QPRn7TSO6)lwc zjN;KiFE9c;=<|0ylm{S~y?~&6J$x#ZE;Im$qS^;wMW4$9K;%gPMZPV(c~;h#@3JVe zGampd0UVLv)(fD7%qW0DMIOLR(8#q^{?NkcQn52L_uVr;V%|CMzbW|kLI8m=fV4QC z_42&k8V`WN_{jhx0xm5rH$=TT4R~-Nlkv;1MVAu_y@IxMeTO|De zs`_kgW3;&N_9|9oAAqrLZyvxV}_q6=8 z8ta;dV970IZ&W&DJk-(VXLur z4`S+b-7vseah!wko|cKFJXZ8D@%bZI|R_&;OBq2anV5}XS(MwvX^(!X3UXD$^O$5vDkROl!kX3n3frPz5@EfRssy zmCs-#+1>N@M-cAE?q+XtH-GsCPhXksS?0TbVZArwgptdEzTU<4r zh+Y6tU{}m|VBjd2S2V2+yk^IU=yd|7%&)vUs)&~f_(c+#B;Y*|*Gnl51F=sXM5m_t9!VduqPGWoyq$q7%xA>#p`0rH$3Kj$>gRvDrZk*;e z0NaVMjTEtS|LVmjt;C+Xv|@1QSB^Ugmt}m(QTQTw0B7JprmJyeCFJ zOW@^(7DhBg?;ced(E0 zUEgjWfys+jd1Am;=x!eSGdqSB^@p1WfbiO~Du91) zpx1eeS54}!Z?_4M5%~gvuen4pnqy9yUB7Ye1?yJR1>!R-eb#G-X-56Vxfh6F_@czJL~Db%3GgjkodaNohKeXsK5LiB zbmNATIj=MD@i*55zUEU;>s|4*aT6e8(TAW}BoXj#L+z4Q+nuHfb#?d0h)}2H1oNZu zv~d$apqU2dPj;E>E3lMC&p(d$7?=`pamKt=%Sn#CZLhubqbc`vBLMBF9d^WX!fVu- z5|H6`eGh=^GDH7pTD#OFeR0g@eabkGfcUO~*kh})J_NJgJ2A!^HKqhG z^UbA0U)ZOT={<0rPah+2k16QqC)nIcm8xCUIN;50#;1J z=1Re|IU6$oX!ip;57w1;YBlCb5YX+YvgG0Ev6p^)?KnHkK(!e)=1CCrx%QfbdFH%Q zz=~sxp1@I~Ce9?thqRXje8*;AeFh1s^Uj3BMvXZEBy@+3%(_jHD+&yQccu@G8dCz= z71|3xd;UIY%KYH9w!2F=R8y0u~0=mxDXs?!wDs+!g*Wcl59^r-lMETs% zQ76MjUHmOE*1ts&@hn^2^#z2`d1hc|eR+A*B#YNK=Az92E*~{B?wmL`c$M8A(*{)) z4E#(>5qMKPY1{-{-1pz5p)wSw={UUK!q@6~5WqMMbs{t8)UJ5iguB87eo0TzqKS)E zU2luSG$P-xx|s1B9ZB>`yx|WdNkC&w;9UUP$fk`=r*mJNQaM3jtc7XQ?!mvYnJl zWLm;Ij*s@u_#B|wm*ZpN=z_-F;bSK6`p?1LF^isU0+YAc69AzK`i-2*a82O3M7^{~ zxkjityz{_l?+iDHZqv|Sr`uhaJLv~+w>0f)Pc@bu$oH$R>%V`XhPo!|OE*uzJDE8r z=N{d?JEfXIOI2cdr*ofT&=wuZxC7*B^cIJ1u@b8{n6RLFlsnt=7l0l!G<_85h&_<# zH$NUMKf`|io63<9EiZy-si7%Cgz64BR~}eX`i0fFsbK2Tioubu9E(9%4q$|?k+6eh z#)D03OU_z}+2cv9pd|Ddz|{bphNkl%epzu+g_VNEWSFL^j<%NUIUun@SFdy#6?vy} zo~*08-|}44t6AJvQd!6lZvpVcX+8~L8-Q(!3%jf)Bj2yO+`~PEq+ljX+zUdyWq1Uj z(r``L`X1N^U_-gQZ{h0eI2Nk}a9-hWsW<*@`yDSR3jGLzp9hfM$*`*~`PX?Tb834s ze*rT=$IfAPf$9JN002ovPDHLkV1gw%NH_oh literal 0 HcmV?d00001 diff --git a/_resources/qss/dark/toggle_checked.png b/_resources/qss/dark/toggle_checked.png new file mode 100644 index 0000000000000000000000000000000000000000..8c0d5938fe195283a58194f673c82110ca974469 GIT binary patch literal 3068 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 Tu%Bw8`P%jI^5c{)S-<%|Prq-J literal 0 HcmV?d00001 diff --git a/_resources/qss/dark/toggle_checked_disabled@2x.png b/_resources/qss/dark/toggle_checked_disabled@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e9513a41ef6d61040b8ba20d1ce4ef60d33b792e GIT binary patch literal 4443 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 UGv5@u^7n_WrGrJW+5V&d1KR3qsQ>@~ literal 0 HcmV?d00001 diff --git a/_resources/qss/dark/toggle_checked_focus.png b/_resources/qss/dark/toggle_checked_focus.png new file mode 100644 index 0000000000000000000000000000000000000000..5bedaf0e83f2c0b015b138cedbc2239f24e9af05 GIT binary patch literal 2821 zcmbVO2~-nz9v%q9f`fI%oIFqxT<2+71Ggn&xp_3+?Y z3YIGC(F1i6#S>X5;)MqSDnb!N1zU@9S+oj>+6mX%efD^p_a^h7neYF7-|v{;n{9zh z{p@Y0*#ZDy@4r|aOq?O&pnO0k{-w8HIT0rt&EijW0N`-Zd|2eTI!p%u>#Is>m_AGr zAV6@H8;s&I%+09M5NH7K@G@#(Bo@;sDg;B>5=f#EVG8BqBrUc) zX{i)RibeP+=;cZAFbW6)6{d$NMpc|zCol@ZAzlHoHs7X!lp%;dRtWl-1u0>YK#B<0 zVidj`or*vZox&wnEDnRm=P#fzAO@2LacB%Sl>rGLx`555jQl`CPK(L~!Qw?DV#JjY zROs~@0gaZBkl>cUbi=hVG&-Npr$G!FgFz(_R9&K44;!g!oy#bL7}FtIrADvB)f6)$ zEW_jVLXfaJ9D_F{_hg83Q< zn=a;PGy;(pgY~#pisNykl?oiSOkuFxxRkk}N;Qfn=;pn%0TaV|Ob8NHV^bj(mClvY znF5GK6wVbQ7SJ$Mf}=`#;=52T6=F&uzJN^^Fu1>g5

    $diYPlC?b&KS`|zLtW?1< z7)_&&0V!i?6o~LRTuTTO?wCU^BocwYTBnEA2<9&qf<(-2N+l}5cwC6ily2_kp#~8wR_ch-C62rw%ds^ht2iZPs3!z4V(xVzh?t9vq2S1E<$Ln+my}2L zCnzw2^bd+Ztggf5`UF^u`NR;p`_ty4{hoOpZ1`jAf31|mp5C?o-e&xNtdFDxQNZdL zjF_A>&>RfSJYt56Li^u(4Ly5j9F4+>8E0OOO;_S#Y(8UZf?7*V-+Q8U)&OAD<}db< zhHa_Ojoq3Z;#B!rZQ`8L;2SBc>$5h`wQIV5H)tSpivCV7BX(e3mN&y?!p3Wd8&kn~ z?INE^{x{MT5zVVyzbDbraW7Jd1sgY_@ZM$ z=f<7SE6(fh2;F%tk`!R+$=$UVuXAKiS3G{+Z<{=hM;`2(xkYm!efGdlfwnWZ^JjQ= z_uT3%w(v?3->Dw|JY-h()Kz5s^630_>ALS;UAl2cc=mG4CzsBgZ?`=+ z$vd~@%JdzZ{k#-)b3_t!_iM1IqVLYS2yOjAvOIq6p0Bxp`P*V&yh%Mr^9MeQp7C@d^m3!~vVi{W8y@7k`r!&zPr=RO=MGdw3cI~KD&vX| ze0#KcXF*ioWYZhVXTjyGC*Han9BuqAx#Yq}wri$B`}YL8M}|toTfPUr;T^bj@X0IG zWMyceHy(sm7ZTlj7>xR2?@~!g)&|44Xt2V@??iF8g7Ruq_U&8MALQ7 zb7^f@Prls(QdD}brPW1sXBvHTe1zk_@j&lVQ5C;?XKu=%9(ODGPk3$7MtNlt7yH2j znyQTNS=hh{zLDy<$*$NP-TiRWzMKk&^jn?xR=iI3CIKhhg~Dq+e^0meTGJNPIuIIh z>TTxynH#nCPbU=teTSyx6uvohdBKy2NWCtT+n7i0JgN6fcCUTw==-`n>P)54{)W}M zX%niC9!ZI10GVAsUln_8@c%HRv_fbwwmh0{{lfWE#bEf4d%ZuOm_NU=YVN9n?1YtG zp>sD+R?hHHljg|{{a;-yuZ2zo9b>l@QVN^$mM5PiKV)Qr&5xORnRONQZL>rV=god` u<@wbnX+XR4=?Q5jAF@M?(~IJ|x0aXw8MsM(T^MWrQ1$m+Dn7C>dgHHo%2t5@ literal 0 HcmV?d00001 diff --git a/_resources/qss/dark/toggle_checked_focus@2x.png b/_resources/qss/dark/toggle_checked_focus@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..25fb51afe9b14191bb1b98dc051d6223cc696191 GIT binary patch literal 4289 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 literal 0 HcmV?d00001 diff --git a/_resources/qss/dark/toggle_pressed.png b/_resources/qss/dark/toggle_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..0c47f241ebc32fab02c9a929a8e80200746aafd1 GIT binary patch literal 2918 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 literal 0 HcmV?d00001 diff --git a/_resources/qss/dark/toggle_pressed@2x.png b/_resources/qss/dark/toggle_pressed@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..ba04282317bdd2f0b6ccb2578ec5885a39bb546c GIT binary patch literal 4515 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 literal 0 HcmV?d00001 diff --git a/_resources/qss/dark/toggle_unchecked.png b/_resources/qss/dark/toggle_unchecked.png new file mode 100644 index 0000000000000000000000000000000000000000..ef7d0e78feed7c328aed10883e74fa660c276211 GIT binary patch literal 3073 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 Z6Db~bKUHkS+++Co_48RIEcafP@gI6Ia6|wA literal 0 HcmV?d00001 diff --git a/_resources/qss/dark/toggle_unchecked_disabled@2x.png b/_resources/qss/dark/toggle_unchecked_disabled@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..aa7f1b854d2126884d83336355bc27baca89dfa0 GIT binary patch literal 4491 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 UQ6&PkE&N?Vws*Cw+C)wI2Mx+p^#A|> literal 0 HcmV?d00001 diff --git a/_resources/qss/dark/toggle_unchecked_focus.png b/_resources/qss/dark/toggle_unchecked_focus.png new file mode 100644 index 0000000000000000000000000000000000000000..bd2166ef85c114de6fc6919587599ce1c5a82b8c GIT binary patch literal 2843 zcmbVO2UHVz9u6oda8g7U73Idjs+6=znPfC{6<8@kC?X=0$%I6bOh`gis&We6D&XSE zBBJM6PC$wv3o9bJ7RqBq0daLbEQk$U8zQc76WY1=-108(P3Au{-~ao*Uzy*VOh2F1 zvkVs)l1QXko*wT0#FA#pNLdaP5ENXFl551l-FV@ncAuSqHh(S&%f zfl*veMMSs|qsGgX1e!!z;S{e#&?rm;2(d`1f=_<_T>}}AiumMUwm02d>4r(99*HU} zAkjyFCPtw=5!uNRSP>5s1aeG+0P%8}LJi0B$z!}QvDV(Ek%2LYCW=pX(Fy_~-hO}^ zuEGEwl|e!2bOrzsD;5Xj@^}saNC%lTI)?_bDIguDGhj9wnD~(iIh9BZ`@6525F@Vm zWQj(jglV+6xHxJYlZvY%X$&5ZN27x@5TpGe}j7J@vj7k+mX z37gj1Xq2#<3PUuwN`T|C$x8W6S_VKC6#|w8OBEtKPHp?q2FxANV0h$I73X@uQy8LlFP33tpf7vA2mr$Vhk6e#BD&L9W7%myI{frLy7$P}Rz zgu@b1xGW(?VQ`ru4jU11P_cM&zdMe`Xe+DTKi=gc93?pZs|qpL2*_cA6jTI(6c)nb zQV=c^r9dE?MdvUPu~5jHWb;)?i5Cr#eaxzLB_bGwT#=9sVH^ruj4>%3h~NwGe*Eixt|Pu!M%A|HQB zd18N@1S3d)r}*RQYFw;|LsXbcB$2y6Y%bbwnO7sRzi<7|m2%wE$JRgDjQ@}IiL{^+ zL=lM*laof)21C=1nDL^}{Dg%VETkkYqXvs6k zwFz+P+~(DGvzWQA#;DYzr3|6D+L?q_>*l{XP}YN7Fv&RM^Y5fd}tG40z$8zZg6h7-xH3T%INkXmc+0dUMD(p=9p8`xOU^j+|TA^Xe|OIdba>XiZg+Zuh{` zd9QOalWz47+mF`Qor^lY!6)Hv;Hg*0yCLf7`2vnQsKPhk>W4kChe`P(=c8O9-D$OE z8E>Uj*ya-`)oK*J}fl6D2mcnKxzO4Q;lmH#P_E%g*>oG8zZGnEkF*e<0_>oN}n}n%)urNPita zN0Yu(G;PG~RUM`-OU@^Mz1MHWwD0?zYjhfTPjU}gC51f>c;#30`0f1jmTAm1{@!8Z z<=+I4?sWT*Ui+A(-E+Yq;S`OIr{ z+6}t~Uu&z-h#(yw(@T7#|7nz9c2&Q0BgJ1fw94%8K@+#MXM3&sWj5tr=NhxNj>Hb**Z7`j U$F1C6?dPlKN+0)=t`X_~0cssxh5!Hn literal 0 HcmV?d00001 diff --git a/_resources/qss/dark/toggle_unchecked_focus@2x.png b/_resources/qss/dark/toggle_unchecked_focus@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4c16a366801c14ad6bb55eda1e8ae98a00e5f2c5 GIT binary patch literal 4336 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 literal 0 HcmV?d00001 diff --git a/_resources/qss/light/checkbox_checked.png b/_resources/qss/light/checkbox_checked.png new file mode 100644 index 0000000000000000000000000000000000000000..fd1d4a4a783e005585121633eea2f96e7b97d66f GIT binary patch literal 719 zcmV;=0x$Mp0q6I;z*U(A>rYRcDSG7nj7Te70A-kII%_iF(^f?Xh zyfe>_X9ji__}@kK1%K$&ImvXFh|U7=*yK}U<`qFa`z5{hrX_$HirpsATr)76BpE!N zPp{r<0PqD*p9jg;0KS9xma-=k+3fpocDRm=oOGA_MI1~I0JsS9LVXfYgRv!FXq0{7 z*i}1Bn@J66*Ly;(20zSlekW`i=nrNa?@?7`rVyx`^Hi01ByOh6PQx z_O~9rB>(`(e@H&6KZ=UFi{3H-njJ+C(RTxYLMoX7(Kvuj0Gl8h?>2fvmOsb2bn*p& zfN5igs!pH;R34CaZCq0Qv;+{g{@5@ literal 0 HcmV?d00001 diff --git a/_resources/qss/light/checkbox_checked@2x.png b/_resources/qss/light/checkbox_checked@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..bbcc43507bf03b0f6ad33d0e17f398305d288529 GIT binary patch literal 1329 zcmV-11bOS7`Hn2dc1d%ZcvXv@0xHhS~Xxb`~ zXAX;a((%mLGwytb_>sJrd(X^0_vk(M!@3vf(4oUYhHP1-(^71G^9&K4W#9yW7Xdu$ zsb}r84Pb+SWoEuw8tA)@Or~b_l4Ss17)-sv0(}YK6*s)}ksK-f;XiBHA6prTE$S$i z9GwQ?3V?oBUGs;25KVRUMs~KUm7kj#H4Q*4IXVsI&%E)?Pv}%vZ)AI`T3Ir!H7l&k z{s&$0eFA1=iEflvhu48?vg^J&VnU1#uMUVcKFz=!fFs&kQus}?bT9@Wot9#M-&;Xr z&i^DUJXu-Gmfd#S3nGK5s3_1pfY&v}xzbC$$MplFpno~GzIg`P&J(H%=-htkJOEVI zvSnG}NdWgX#Uu5;HDCw;5uI&#W?U>6Rx0kh=`EGDY?;6pwPpIg0VV;c&+~i865Vj$ zJ%5lTVNq8!uD3A+0K1EvJ$47Y{fXXp2I6`fvjFH;cwrmu+ri+wVfAVjfCGgTv;%gC zCq|Moq#1zU*)8D(nJ`z$XA4fh9eM@ChsKU65N`rJ1>o@RkIqX>x8jMBq|@(*I{@jl zB$NCd12KIS12GxGCr+CPbpT?;>c=pdx}HGqI&CAg0f;6>Q^Y*$bvxk`Py` zVCN4{JA@_x?MeUlKiq0J903SG`YNvM1tQ5*LS)Q5S(woGB5HHRLN0IT{UD^T;#dLk z#7I(Nx&_dA?5)*#N`ZJYJ~VdB>iwXkui`iWGNhTNYju*pMLOMFWdTZG#f33I-J+Uu zB39h|s99x@(pT|*5M-K-CPq{G;-ICk;)VhiEDR0_;IA4|Aq3J_aU1|9X0rnpwo@S>>8p6U8M2WIfk|J*+udL$QxhS- z2f*x*#kvUj{h*|;;`w&CSjgoCqLW0l2;eb*$3(O!5S_I9mzkINaz0=qzfuJ7wjXV^ zOE~@&4iK{dY&Skmv^q~5atyw2>n+Rzu%Ug34zCWl>5`x5eJ7x(w=o`+1eUeWVvSF` z@0ve|HRUZ`kzq=sp^GbU5<-zYp)d_5jGS`>s1- zLW~YeFF)7QKSe|f0AAJBlEUX6{PwG1-O=>Q%>U=Y1OVdcQa<~+Syj_1ZmU{e>gtVb z19Zwe&pe00m@XBvmzo*0oa48um8I^U$S)uo$NsxFlp}>FOKaJ$TN$-|Z4SVA{nT~n nuFciw`P=PWo9ob_!@=f1FbeW=F3OqF00000NkvXXu0mjf&y#3l literal 0 HcmV?d00001 diff --git a/_resources/qss/light/checkbox_checked_disabled.png b/_resources/qss/light/checkbox_checked_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..34492ed4265464d29456c6781f5ef9673d0b4918 GIT binary patch literal 666 zcmV;L0%iS)P)O zXn255sl-4fDnJ4Wb?E~TiJ>BL6GHA&v~w$v7`mj&Jq)pf>n3rWxGeBZSI6hx^ZP$n z_Py}0Bk{o3lkbll$9V}9LGNW$<^t$gYio~J9)24spwa5Q5ZD_gEF-KaRj*upbwfa- z*;y9h1o(xrozK~NsZ{!zMb&n@eYe|l))4lAJJ#w-=)~MWiAWVxP_|dg#ltKLhXgNj z=r@h1=%=8?PXU}rUJ)Rlv-K>CN4d%qtgUVsiwNj%xU6g+#uL~55e)B#vAGesQ`2ag zbrF3JpeoNQW%u*A{7eP-zA32a5wHLd2zfAWjx+9I8dTNMoPG?8PfBJ2{Fd1QR<8v` zcmIk2-!}z>y;!*6m5T3fUBC$IFQq4&B4U%~CvL)|UG2Bb7IMS-9nUMCPVxeY4g|%Q zfF%(<@_kbn6raKRi3P-1(42lyRcBV~Lz2G(qPwUZL?RWx-Fc1`nZ^2$LB%N=IVLT&^%DyK@I3bvr8+V}bjS1DRMw{w0N^dVZ;7{}&s5f@ z7BHd}Q(K=}0Q6g-YBzv0;7rwSOly5e>fdptT>1hO5)&sR;(%O0{{WfQ;&G0RSqz5f zLj=$P==Pko+Y&I}C0JWb7#p;}T3d4*Sx4CSn?|nk)FWrOnK(9PalXr%ioWibvbFHp zu!~8J3=b+XMqf-q{#?z}C31S5k#i6;>}vL(-wEUJ_DxwZx&QzG07*qoM6N<$f+d|S Aj{pDw literal 0 HcmV?d00001 diff --git a/_resources/qss/light/checkbox_checked_disabled@2x.png b/_resources/qss/light/checkbox_checked_disabled@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e4b77e452bef278be5d37965d71add4ba5ae2d1f GIT binary patch literal 1270 zcmVR`OvAu2DTTiR1ReK;kP*o~YL$TthtxL+K zB^OWt(N_HkTtFleNr+Sm1^&^20#s|ijsbK%mDIB3vuf@B$3Z83m04V}E&!PKG(RP< z3B|^pM&t47=;){|Gs~n@DiyU{K6=Daagl+h0UYpzyx~_4T>@~R|zPkz7fyG|5IZ2`#a_00bp3y8!Zi&0X%gz zA6H6!Bi`690ou1Z_c5C^4C8P4X{O7tt~bDF(%t60Ho$ifq=AkA8+T+Umldp~%z2tl zd1HJ8V29jCjmG0usaa)+Pwt1kF@6r{nBf&|w2wn~?%lK3zF z!dsh7w{2!mzit?RCH?KfJD^&%jxk5M3&Iru`!_#VRZ{Qqdc8mC?-yDC&bdY^egJUL z=k!75D4!(lqtF7d(*BR&bL(>PcG5lyD*&%OI04X9+Wiz#0M5C_$o>{UX{$H_{g||` zLJAPU`T+1kb=b|MeHBiC7}lRUb4FiD+Fzjrh-!TR%hX)|QbwPJ5+JJe9VpkLyzq=d zVFZX{{qsYo|B%&hAq2?7`T{A>0>9L1FR7$XKuk;+ej?^fn}dUoqI|z?eTroL^OCGD zNbCS!ulK8@-UDzIVy;fO!W`vpwQ3y;{eDi?7bF&dkurgRxjL!%o^u}PvOKLXNInMq z_lWAp04weLFz93+qrR6c2EnPe%{$54`T`jO+zvUvhmrk_yA+CGeL-RY6bD}bco7oT zQ3^${z96vx?fE$SG(zYUuRSjtS^u%K#WrGBU9@Oq)&tr zltQM~7o;*1+(s#6Zhb*20>mtZT&yoh?O7m3Ddb{(L8=c!5lSI9>kCp9z%vaLd2N9IBB>|tqjLG^5xHq)hfnTn-WWdzEW3{!6&Iyu zl_8`#mpn~fx8yDX7@S+3$27fQS!Kz&rOtw7l|h{oG4HhjJ_0z+jad->bTu8&TA0~M zBDfYyyH|{_IL(b&Z)~jP@?bQ{TFP9Jm&=ppT-yBSx3^qg(B3Wbzt}JV0ORL|^c#LB z0_Oo|jng*(jHi}THV_fU&Kj?M9uyF5(-iO(+Iw(z5|K7dZDZRUP60Sv%x!a61Mo1; gwz(cXdhBlg1>-d8lv={q+W-In07*qoM6N<$g0l-p<^TWy literal 0 HcmV?d00001 diff --git a/_resources/qss/light/checkbox_checked_focus.png b/_resources/qss/light/checkbox_checked_focus.png new file mode 100644 index 0000000000000000000000000000000000000000..31e2111b965209d9b74773a11d10f2b3f4721287 GIT binary patch literal 696 zcmV;p0!RIcP)T(xflL*Ue(3=do<+TA3DIY1O< zvhm){APT#b9%OSUl^0ds+B2C4o&cC~meX@WrkD=0xEFJBnl9BEDaSnHJs!1J!sn;A zewI$dZmhjZZqp1VbE68@h^BH8aXw&W1li6WhS#oMKxONXMeI0>V(U$>+k$#; zbrtJpGx5H?`sy2UK$5@>=a8*vDi?7_TCv{6?@QRFYTmG*j{&S6ZGbjqeZvA&SrTEj ze2qRD=r2qm2rXFeQnv-!!|<9Q+uoQ6s{*gi#e7=dumBdtir8`BxJH(5>l+sUWG4Ie zO26xhs4|i0nJpvRVBcC9Yu0)f-#?>o z)8Y3(q;6t^cpW$bX8{@1%`Y;%a?o8mEnF6$vI9`Gq1aUku$>*TQmtJ#R&If5(}cB* z3M>z$@?uU-)1Eb4OAN0Zblc93m?|#;YuYs7j#b*2BnWb)be`%P6Bp0cYy{8hwM7c3 e>{i;E{pSy|r}PE;bP_lK0000ZR3vii#RuTh z(hG=!XsaILQf^$RNF?GU5){e>ZUtKci3rqEE>(I79IE!3UJw{H*oqX{QPz=K^@LI- z^EkLudH-eC-M=CJNjdD!ThE&>-`kzFXMh0%2JB|YOHir8>2|(znwZZp(-;Uj0567| zTfc08(I(p-s1oTm=}Z>aT<88-QO9CeO&IgYeNmW$m}^f`nrWGZm|A zlVB|Dz`+B+C>RUH?>ZA;cKk;>3Q(-+6U_8kIJrd!gFi1;*FSM;w^gQVdn_0O`4L!5 zk&w3^?9*284s8XUtS@eG>gZ$rFiUX~Bxf14-_TBY!>$}G0+cG8Zs*qjFxme1O~Tpb zvZe>0dGHKXbuG=91MphU>3Xi6Ic~l&T1udu@0>Ob{-NCB_jk(R0bseT>6?VJ1b)BNhRO`HbX5syoSf#)Ey@O5mAAgiY>wbBx_%&^W_O+TFe%thrleug(*pT|zqU1iVnFb%s-t zrx-=a5^RA z&j7ME%~_KCsoy>lEx>ACzYLp4mx6$|{q~Vq0SdLXW6U%ic0Y*}pj6?skoW<>3)=<~ ze(~E^A_Z`>{!^atmb~h>ufz%9)%paQZd}UN{q~nA0lZqDi5CyG4}29wpNSH{tM$Qr z!OIt(UPz1peOdov_OGD&O@sh(SYHvyyTI_bdI5wfH8COJ*DXP_&GAgb%k`^y{W3UO z>nnUapit`!6X6~K=kau|&cHb#`R0Q*fB8iJ&ukh~x zDZd2pWV;Y^DI~%A3f}@WE@kUPJmVIpN+BuMR|IkoIMmXv0({>kY>$xiqmVR*1Xy1Y zhyZtHXj2MYfJ-R=cm=?5mzYSbuL$fZ&>TPbrniw6YRGX;;_CV6ao4yg;=bw2<=_KYbnHKeMP7*LvE!Ir}Y(~ z3eYVD@h$+nMHVYe;=Q=6uL%8hxH+C_Fr`lbG!Nk4?jOxFrB8VM$}CJGSs&0SztjTo zW)yw(OCr7%juSfpHVj8MI2BDQAz;mY!yIB2fYI(fJo;Ea9Bfw6VUv5y9AjN5Nxay5 z%u<{TIIqZ%EKcEm zE&}aOGv;=Z2x_skX~lTGJ2oSIEthAAiXb_kfVmCcv6t>O(op0u}s(Ogp>|-QVbsf)ZzKl zoP6$;pQ?bWtJ#KO8yEuch1~3QjnnI79F|p`hC|5~k4kC+#yl2)hryT%tA9m6)zvJ` z57nE0tUt>b=2t{a*!7_gVc1hW=COcWvi{XfL5`x_K&S(L@ljw@4BJ&# zv-Vs+)?4DfhC{y`HkVZ&12hhjTOV0~3ag^5+hc)8w+?wB2IANvw}00HB`dLwhSAx%IIHbZJFm z>thRmRx73v>Iij|>7>?MV*ifk?#LG)8=4rApaZAS93azLyq$`x!vH8JodoOy_|xk^ zP{&_eaBZyB0)e8!B(PTYRK!qg&2W8EadlW7CKTQQMxYp|dx5_(DU#x#(nj}=H>_5K&k*?TX1NSh800000NkvXXu0mjf9-t+) literal 0 HcmV?d00001 diff --git a/_resources/qss/light/checkbox_checked_pressed@2x.png b/_resources/qss/light/checkbox_checked_pressed@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..38874b2b6a472c0e7113aaa333af945c27a16ec2 GIT binary patch literal 1254 zcmV`(2#URV%@Z| zscAK~gf_5uVC^GSHW-M#nByJyb(pSfoy_d=aIb&fLP$0)m~nYJeS)ZnTpUBD^em1te7nO)$C z3M*oBZ+(Zk@m|SSyQpdaa?5%_;VXgHLvb@Mgf)~8Z*S)gK05e+!m#?+{SGc zI91#@w!vn|e#M51@2{5IxCNl3!b{uJz7|}3uc%%<>wu#|CTR!!Ftw`frp+jD89?E_ zAxsQ($sa*~JM{|4E$JE4<{@w$I1U^a=vU>@)T*`z{ryx2AiJm;488+Sx(uH*Y;Fgg zBh>+DYvvYGxpX-Qyc=|m)COQ`S>FK0qMj#}0mv?D##E+(hJ6i{?}N^j%2lAPnOop3 z{Q@u4=5ElrQl|jF(pP2dW{<1|oi9}Z@GE_Rm5m*~2xHDvrGQ`QqYU`@;OU3dD4-VU z51fk&SLKmFKZRNy zxNh1!%q{7es@EqZeTTpSD7>Y)*6L#NZFW&TRhFdm9m049T=p7J=xS}^Bd_slwSIv} zr0)>c2T2I)HlSAfOmz>ED%%2Oc?(su|PfI>Y! zUd_%)g|tZDA(Usp`aj%7S*>E$Xu>z9FhdHY?+{7=#(O1i2?JC~1>jATjw&{>NZ%o} zRba4Ne#J*BR3k3wJA}Fn`b-5+;*`Ear~#-U72Jqb`VOHNLI+KSxTWt9NhMfoDkLF& zhe!fYV=5#feTT^21^lK$Qqp&b^kt}8DkLd=he!i3-Ya>_#p0{#3OsC?+#rLgpo63!n!b)*FZ*VbWzhc8Oxm4U%sa%pPH%i*v zD`_helS|qXzI)L!xuh-FrG;4ey@5*r)_0gw`2GK@IMHA-bC`nQY?dzBF)pmF?=V+x zThn%V46>%he44k*TPByV89(rLd56MjkwbrA0zj3Ko9E{UbWlA`uM(@Yv*2Waa~bc;zyEy!Ro1BrEd-S~UZ+NjifU^6BJS1%N*|I118t z0o;LjPJGl8+3d-U9j@KoeXdfg5CKyRfRmt)y`Kc6pc41XVfObblXjSzNsA59hcpa8=VmWZSJZAt+12o>|l5!os&a8HI^kDlUe5f**-vv%Rdv9VVrGeEEIlk!CMXw^qBZl4I?TJNOn{4bSXdDC*+u ztNZNz&zg6IJC|%?bFq4SIALFad~R4sE`!opJx$_tp>MOy|U!OU$kB znzG-~`n4{!t4{fj>D@e?4}omwm~T9IquR}1ZOfO(TvgpX(R}{$fL~|qb)sx$c&l!z zJH3uQ&0Qyl<%L>9b6e&W(U2gC&YB+SUwyT zyqDU)mSsAli%Gzxw4RjoEo$VeY&?rxpYonWiLMSXol_X|)gUOZNwd-(1n?=x@jr zVmN&*nu+I-w}AXl18Y;Q=rhy5GgRA7i<=y}K;7{wQ^;c809^;uTMXEl{Sgbd+>Fn( z|7di4>0X7j3ds-WZgQ0SZvU;ha$?6V&I;{kJIuY9&d<$FZtVZ1zt&KK`9WVMt`r*2SlG+ue z9UXbhH{Jr%PJjLU8Z+g%&~M?_{ud`OF?=jYQ!Bid4XhS01jr3lN&M;w&Xs1Zbzq+||a{lk0b2GUI{=4M;#>MsBisLwYfC9Ua zkWCNJ#+cg1+VbtE0IeInD{vSEmXM5Cs_O-H^Z}sN)~h0115a2gnJLrA=kt$AxOO_7 zId9;U5$eFKF?KDe#PlnPNENJLsT2$9JPG4K{z1;K+OAl!XMT&f0Gv>q0?166Mv~@X zJ!kN9+gz|00vKMnq{<$pQZD!4FBc;Ken%-l3h?Uy(_aN#w)Hl`0g(M>?mm|NVnLn8 z1;tjNsr3@V$q42ES%i91>!pzaenPPTC8h4M>;U}{a`&-RN=n_w1$}u3{2s>kaUA{a z7Nh_vzz+jR4~7rONtrcWcivxiBLL6<-oPnO3Sh>=&n<4S_xd9;#?%}~HWBJqZC9Q% zG(vBF$a(CnN!6eYzXl8SSUaw=S3*ttNW~p8PX0?PF TO?rDX00000NkvXXu0mjfyR_9@ literal 0 HcmV?d00001 diff --git a/_resources/qss/light/checkbox_indeterminate_disabled@2x.png b/_resources/qss/light/checkbox_indeterminate_disabled@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..8cd127c8470a2ee471b10a52fb9db796658108a4 GIT binary patch literal 949 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|Rrq zr;B4q#hkaZ?fq{%NF1AAEMqDgb#Tf;j%P+wlmZH;dME}pFdp$}SNg~suwATek)!zr$4aIP1_$0TmaM+|NUAxOsf25TEnD&3GtbQyUCelR z%RhGd1Rv>Sg&Ky#wdE~U#}pgV7bm{`ynoV^DDjRC)yp$o8LV?HDi~g{ZO&FvEM z+3mWC!q(rVj0>*oPJE`DAGCX>_*OkDE1+yLLs`y4W2WkrA{(ckm6JVx=8VYQkdxjv za^G2-YxgeWpUks`XTj}hM(@5@g-9-Vz3bGK+x9vAwTl)cnJvqVoL;)Ur6rN&D$_NF zBRUVAPyLtN;NKIvzTpwS&uzB?*>9y6Mpb`(xAmFbg5U{k9byVnnGG3?izZ@a2Ht(4vNgL$ z_@QhA`-;!|+4wjPlpp(GBXsG_{%A9v@4^$j(w}u~;7wpyD{ph^{>KR%w^x>=^=&uS zV=no-pxa@7g{uj7qur}tj^h6EF>D6)?+hEPZE6dOwy#;3X;mlm#His@qdtRP%%w{_ z;;Fp8hf^I)tSZhOcvkuAL1W`t_r=Z6fvWd2P5f{|D|rUP2i~QstFFfAHVcCU^3&J7 zVLtWR@cS$sCQHsP{2rOe7SeuW=~mJH}g|oBXPEBT>!|ypaD*9kT{QBLS_8fNn z-D!LLCFhOJ+kE8JVnd%QE}0d)?ZQ6W<);|fiuZ2vJ literal 0 HcmV?d00001 diff --git a/_resources/qss/light/checkbox_indeterminate_focus.png b/_resources/qss/light/checkbox_indeterminate_focus.png new file mode 100644 index 0000000000000000000000000000000000000000..25afd03ba1c96d3c5bb36378612d821e06ac806d GIT binary patch literal 501 zcmVcn``gW}Fb4}u%T7f?|41+wf@_y=Uo zX)!*65%ypdLE}YyhP;5Vpf9kf2p;s(kzH7FGGdp9%!I+jkxeElIKNXU+{iC3-Ed0{s1=HfyE>z%G$-U_p=2cyH}l8 z(PQABLOx^amEQ|vf8%hSKDZvLyG%}?1PmI(m*6JSL6X86APV`*CGRK><3Rq09A(Q^ zR5^4HQUJaIm}XX^=44F05~q1s=I*}Yd(AXsq5Y8%ZBKOeee{pN{L~KMO_Ts60B;VE zekoyM->wL300aMdc1>aZa>?6`N{YOJ@v`*c3BYRu+(M&)?3LNn&dspDthNHEoB-5aCf6$f z*WZ`(y-tHz^G9S-T6B)D0;O!(in+V5gnGEHG_`Xx?E3q1s%!zyq_i09wHr)|^zLmu rKbQmxjb<~1y4NmMMdh^JXqM;^h|`I{Dvh#K00000NkvXXu0mjfM#tj; literal 0 HcmV?d00001 diff --git a/_resources/qss/light/checkbox_indeterminate_focus@2x.png b/_resources/qss/light/checkbox_indeterminate_focus@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..fe368582466cd52e13e19786d845179277f5e2fa GIT binary patch literal 962 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|Rr3 zr;B4q#hkaZZGA)>MUMZ^x7-r6<52WuWfmb@rPdi9$?gjS95j|rXqiwUB%QQ8<{_)l z(TJac4`&JpNojD3%n>Uyo3MhlEtpv`=8#-xO$o=F%{!X!)Xga{-)*k&`E}Z}vv>ag zy?J+Li+O|7LW|QE3Y(%H$#`5(vFhB}J#&^L2eZZd&D)Z0GAjEXDfTfDjN|pKm0GfQ zv6^h=fvYWr>^|!m_dV-9w`n88p~done-H0(+R~(aM#OW?(E}dy4n1L9AlQ@gBsPuV z4D0_3th^n2%-LqVoN0gS6npc0ccIt*T)n%kCfB~1xP|Q#TST?jEX&OiOV>Zpdt0p= z*5SD>fs_tP%;y7wf9 zeVb5xB5CTrM>{teJzTW+nB3!SyixuY>Tk2-dHmk?UCw^kd_mGtQX#q_XA0vc))Q`6 znQ9M?DuuiCgemP|DUdz>C%&11=Yh7d-2XS1C%e1JH+~QnkUaTCAW_Ug_>aHb&igwY zTW+54Sms`0sL1@v&3x6&A8S{11SLK)FI_BsRVkZ8vLLVgyI2D^kXdB7d|}GDKkfl1 z8tkV|ozIw4y=1A#wqhwSw-XId?>$g6{Mx-nk;(9@{&zNW*J}cGtU-U;(Qa$EuR7J<{VlY*XLG=$3cdYjmtA|eaowiGP1h#gSNpKX_E@Bb zr%B>Vh2j;!xSO~7^UPl@3x&@d{A1^yS74~HM`{++i{B4b0t^mF*!!xiTNU#Qqc<-y+R7P333(IBV^Db zgEsb~_zb>4Q25h}s1$@taZU?oY$zQ`XEbQO<>heBH}_nIbKt)t-w( zI$fYHP)Nt+d7{8WQ%^;>94F=xrU?1;rd<6HxPR4MLwN!|fZU)@?Py!xy{LNkqU$TG zq<|u@Ca`DUM92;@l)NRB%fzMXMPVE3L#pMLibBO|@d1G0h)V(t`qaEE?nF#0x00~W zoB~mYtuGuVZry@hZ=h7y7{bjA z#R0+y#Zp~kGYc#NSAlF&+9)SLZ-(4Glw39`ZMUGQZ@}uIYai#~Z?_;22m}@_(1qau z=~uBzLn8nvopAzn0Bd^n1vRYPLc=~A{fGn#3j08@+)@#f+GvKGlS)G)YLHU6226p1 zqwW{hVp71rw=sD!u^FvqO2Rq4&V|xJXpCFU0zLs6L~;qVQ0X230000lP2H9n)^J`cMfLpU)>JjNbEjUp>E~uRr1{+z zk>ir-bV=JP@GLN|Wd5Y||JW4fcPS zJng};h)pcBUcca2^K<>ZJiY6uo-kHLr@k!j)7H3u&3fwMv!x|0$=*Bx{oby*9`U&o z^*3ttPP`Wuc}V%~d+u|*PCOcOKEGD^?BlAx-b$s&=hy8;b9j!m%w^*JckG_4o!gq# zSuGj%GCiEe3tqHszgzZut-zwaPrgNcliLtnz;;6{K{~x5mvLJmR;H($;fai}^V)aZ zEsv@F&o*#qELXbo#_Qynwu{mUf4C)1zA_D678uo0|4GE|@eZxa%8`51tY%DPoM~Pa zFy;6%B`wz}?m+g16dq;fJ)!3qe)}FXc;evbeDuu^-wP)iY9>uT(BH8o2(=I*z=%HTZllQ#jXG~Ms zC!UZwdi&iLMlE^9t;P`Y^1Y?5bK?0^_n3DD@vOWgKYz`t1st_^m+uJIO9*xi=HTZt zwb*)Ct$Uf4=4|Ve_t(6B8)5d{v-Ntk=Imk%8SB~h2f|r74}^5e19KpQr>mdKI;Vst E0Bkp?4*&oF literal 0 HcmV?d00001 diff --git a/_resources/qss/light/checkbox_unchecked.png b/_resources/qss/light/checkbox_unchecked.png new file mode 100644 index 0000000000000000000000000000000000000000..8e845d327529dde43f15c1c6f77586e10df05b10 GIT binary patch literal 385 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv(mfq~K3 z)5S3)qV?_djeds$M2>y@zf;8^Xu4U?G9BM7Ikil}73}kv(n}}E&TC3HP_uJ1FMN@d z&ctoul+@3xutZe+mPN(>k2?3?Z#!-I;lA=u$JKXVPDR-Q(QZK zaDGtV$iTe;hAi0D1Z0NY)37+Oi6bD%h50=H-Br76?MnigF6`hiNMkYKv0BOWFfOig z_trgqSC0Lz{AW@A^{LEPUC-P-56P%G$V*cGn}eIHof@=WzQ zF1B)N!}bN*-MmRF9Fi2&g0xZ|E`E{L4Zb{ z@s*Q{=H#Y-5uTTJsF*>R!H0o4HuT&3D~uwHZv>J*=ghd~-4~quJ;<6_BYs1==?8bV z9_fiUl{r30EjaqPHl3Fte&agU$&;JimTqH8SjYXV>SVaSwMqZmx0jbBtj_guTl!7% z!0Z!yxF5yeS&*z`k{9x<{t!>E$+_m2nhe?^vy8P&D-J}fylFWiJ3;@(W|n_qvwk`E zv_5M5ZTwPMv-ynSYgOTCjCVNIB)|Nsxc^fwT4wHvn`Lh6KfOO~eE#X>Uo&Iv?tI>* z@#~o6&i^+gWG=`yxG^*|Dy6>&{L&xTy>G?*4<$eN`)Azy9{q_S0I2l97exu-grKR* z7rjnm`w<@7@H+qZz9ZHJ^$Z2ghKz4{5B#*P|Ht%M>{9)+^-X_eYBFqgDV$_5uE=Qc zik*1Xc~WdYV7{$YrZ>`()THvH&*;{qVg4F?R9^4b$Bo%ZWq*5EUFl0_)yu`F5 zkP3ooCmX6h9JuqJ&9!KS`(sZ|G5zK_uiI9{U7Euzd-QQ(SrfZjRU2P5R}j}v%O4-| zN*vEHB;~ZVO^ci{<6YMlxdgE{;vAuU#v24UJXmXt&CAT_1@P{m>ypv`Q><_Lh+edk{3$Z4`gIiX|8Nt7V4BDvPQq7 zynDxyJy#i~UJ7$P#pBET{EuQVpC87G(I~v4X@6R>y-FxZ4{9kJ`yBd`oyszia;+nYmEl+6Wt3CJT9s9fLwaB)! r7X=UO=E*5&GqcK^9jqa;efIt%M<48Ro@S8>%qa|>u6{1-oD!M_|VWe_2eP--3JK7FYsNIzaxKwCyfX=Fno2F&a;r sPOP1Dbgpfm|B#s|VeCkMdo{Cs06nL1HX*jiRsaA107*qoM6N<$f;u6iZvX%Q literal 0 HcmV?d00001 diff --git a/_resources/qss/light/checkbox_unchecked_disabled@2x.png b/_resources/qss/light/checkbox_unchecked_disabled@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..84ac5e7046dab70017cf22125249d6a83c19f15a GIT binary patch literal 890 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|T>; zr;B4q#hkaZ_xg(jiX1(E^Mj&JSeC$>T!u`uj7>(<{xCOPba|^Xt6|zN@eE$Itd(k$ zI{qI}Q#+L&v5A*y>eg`Ai*zjxSGp z&soK{;OTx(U4Czo`Bm3<-QF`M~i(?q>#d$G=mi^gF!oRFrJ45WG+-AbZr}!v0M&o0qgFS}T^Y_xLV( z-&ysV`>&eC3)S6je7F6k9yqsguWkm%ft`0Pj{Y{^wSFJ>v*{8Oyv`nd{aE_`#`0(N zM?aZ{+vsl;nfZ!CLjL@gC&@eW8P2_L*%Y14JH6TdSj2~ezn1md{iv&8kq^K9i1EN@ zA@7!XKb+Q<`o7+KaE}l(S9olp&3mA2N`Vn+nZ|JWwM%R$Hx0WLS}w$tt+DglVIGT63+6Sf5s!H` zh$ZwIABbu&J;#vEc#Rr@!f6h9oxe&Hf=chfjNQ zv1C%xm&;5t`_}U4M(j8BNoMA5Wyqd;HISab2{Ir)I9-{ZHY2-BP^Irbui6 zMz5g5Mze?x-uihnSMFN;;pyo&u3gUi0?Mkle#~I5sC*=ty${G4NM6BDQ6*S3E;OvRTxA(tg zY`BoEU->pL;%;%qaSqQ^qnV9U&&qt8=}_X(I(@R}4#}2D{$4Li|MmdKI;Vst08h1)vH$=8 literal 0 HcmV?d00001 diff --git a/_resources/qss/light/checkbox_unchecked_focus.png b/_resources/qss/light/checkbox_unchecked_focus.png new file mode 100644 index 0000000000000000000000000000000000000000..257f6dd4f1a0b66bdd2e96916f3b8864720307b1 GIT binary patch literal 384 zcmV-`0e}99P)1R9J=Wm$6R5P!xv0b4g&dE|k@vLtmgzU?T6ptO+B|>L5Fe z7?^nmW8xF^1v)4@?Lr+Pf#X1HDijynIC%f@=H`4~?p@9g|2?vQa6XBy1a1Kza7yAN zK%g*uzj0rV3S3O$0q7mD0z%M_a`+eHJJgI3Z3jFOm@K-?E|YS-~jVpE8cFj3#iULj}_rw(O;aB8a%#zWzaoc_ER~r^0vYG%(67IpJylEoO^oDg93|nMn%&+ z|9)QD_ck`4hS>X^CAh^U_Rr=>&A{AC2=_o7?7RHtStNPF)&t$cmuN%8xeKbdD4R7tNsbuH(q zu0h!n=}$^E!An(E)PIaT->)=}ZTR;y==irj5sN?1>bI`AzJJ!+ zTOImej~1(MuT1v;lltJ7W4PhPbu&NoU*z7uWAAHT!9NdI?#tPBlzC0sZZnZM)?HQG z%J&@nu*Zt=xBFd3;ZLm_uS~B{I(Gj2#V6^le-iua*%*I6uPH59`EdWw$pV4=)3W+K z@+-Vr7^+tB%AYcH-EGp89k4@Eu3sp?T1xuu3Tys_rdMQt2QsY_@oOk$$ezRSn&FxS z<2A-Lg-mOhBObFvux~iVxq&aCS2#iTfRy?Hs|Hij6fR}{l?DA>K7KrGV;9snLbs9hOig_!SEl>;;m1oQ9f6@P8N)_WH-D|ThO#c}m*QJ|q zCgs^F{{DM1-^C6UzhY6j^=G}q+q?~{eD2TFHov>P;C1ZM=!q*GfC2YzzFtD*lHdIt z!j0?JiK)&%H??i{qvC+6CF@M?+*)S^r~9-Xy jt(&KuwUp^web!!F{QZ=Rb)R#Ad56K%)z4*}Q$iB}*!hzp literal 0 HcmV?d00001 diff --git a/_resources/qss/light/checkbox_unchecked_pressed.png b/_resources/qss/light/checkbox_unchecked_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..2d2a134e9fcf201e14e9249330bc11f4d017e3a6 GIT binary patch literal 385 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv(mfq~K3 z)5S3)qV?_d{a%LyM2>%azq7T(MDL@dQK`Tu7N_5QtxfwJ=UzSd?kzLNT9!{dNWR6X4%!$%sSMa%_U8K~i zZQ8SHwt>BRi{^&6i)0dvCiE6cFz>7}T>ETUnHs|-y;H9_T1u{$vJ_;#KRbJI3di&1 z4D~|X8yH}y!AfEApS@+$2VH+!uy!!o`&@aw%G&3O^T+bo-wdW_8tWzsmo`>ZUGG*> zXOellamBOh?vq;A+*_&@+&uy}h21)x{he`nq2bC+F|P~0=kveXe?5L_&F6?}9lmhm a+4%*c@oKYNV^e`)%HZkh=d#Wzp$PyKLYw>m literal 0 HcmV?d00001 diff --git a/_resources/qss/light/checkbox_unchecked_pressed@2x.png b/_resources/qss/light/checkbox_unchecked_pressed@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..46750f484ae65adbdf744c63cbb8d40b2bf8366f GIT binary patch literal 843 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|V1v zPZ!6KiaBp*+xrJ6inPx!?k-6PVLJ4VX=>x9liLM)RQ}9VnbpwufwP27SdmXxbt20T zF$)PzW)ZdYE)^>y5$}HHrTcd7J=(QpIq!SpyYq_kK2_J(-miXNz*k{2Z+Fj?;3+q+ zuS;qy6r9J@%v8%I%X{scKZl6urvnSMZp#*$EpL0Wrtf#w;#HGwC3{WTe&FzJq1!5c zEMm(huj%f%rnM^bKvvlMQmxYma-5%-_FpYd%rn#6zi86L+YzCvQ=i&?P?~b8^ONL{ zI4+I5n=brU(hy|Wt7XF|o35 zJ+?e0RPbL*&%oALX=Xv~RK}ULZ+BTdmwsxj|3O*JW}eR}PvzG8X0Ib_D;COV*l4tW z+UO_OD&OPy;~3C4bJ*u`t-qc7kzul@rDNsemS1{YJ*}@-@o4OSweG}Op3N6I8qX$F zwfH-%6PjSf!@xFIx-9DNnfUe&jYECHQXJPq-ZQ*d9W&h`cfz)157#*^u%ENu=)m7Y z*;~W!`W9Rl`1)0GLL(-4FY}b# z=jlpYPgf`(F>NlHmcC=|<5OWfmYr(ovzYC$)I6f)X@C5dw|!2pR)1si_S2B>zMgpC z%7i(bIu;Ax^-1gu2~)rI&?4rX)eDwGj2CJ}#Upy87Iwx=SmkAPntj!B*CGzaVarfT|9UC({-GjQ(CyTL~(EB5?Gu0G-k&7 zt6%seqGXr(7{IAwJGwa(bpf&t2_BjFVGL14aTyxpys`3=p@$uWwu z%0hLosOSek2)Jw+v$DJM+?jC$%&w^o*+x%-%mRKGl$)0u>=o(HY7yfbSch{fb z+&-gN@7WC+QPrm2M6P*Rb+iJJ4XQj3JO~(3E*araGMU_an}NFRv4+y>Xb5COz;V6@ zmI9i01xiEF#}GLM^xe`xO@HF_pT5^tX*l{WD(?f6^46=|5YhK~I%1#sO(Ky$AQNN6B*X&VcKw&cWMID|b#-$T)KDG}|6SJ8K2H0n{-;Uy>2HG+_WEm;H}7Qbi-$J$OI3 z41i*;0N94PSsHMdiH4Z0xoTP7c52tiSO!3lW&jmkmMxO{l8N<#A>&wkv!v4P8WB03 z1K>DLlSj9l`ufbV>urz65k4){T~&8pZ9D5fQG&8E4UlTg0l3oE(j#yjWLB_$c!OWe zofde9LbgKL-s9~};9U2Gc;;@9^@STXo7054y(Ao-nt5^h^sqZUuo`q1 zcixU9=uS5=Z>>Ks5{U#rA7Lu#lhO(LofvDqn`qq!aevnkXKL_s;5ne#?P%TV_ssdb&j{5|n`90B zf-(=~6F1SiY4obscm?cFjj|$AR$aSE;bVoKBFB0BN?S|M9Ra|*4~l&fr3BgxelWrpR>+N}Y|8iX&@pj8ti-0!Jmz+WSd|5d9I!l)1 z+@SJ=6%0pT?jN*bo_UvuEY4>RV>H;Rss+;rt<={DYev`*Z4#^_21z)#hF!-Am_brO z9IFyzmLaSHuYV}Vk|wpT?_#`nG>>t0_&MR)MaIy8@WgoXffhtJyX~=KV#rP00EdcF|dyF2~?UuDfh5dCBF00000NkvXXu0mjf DOd4B& literal 0 HcmV?d00001 diff --git a/_resources/qss/light/radio_checked@2x.png b/_resources/qss/light/radio_checked@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..dcb4e444df86630843b43f3266abc2a84a9c538b GIT binary patch literal 2792 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 Y05yfLl2Iy3aR2}S07*qoM6N<$f?b#~dH?_b literal 0 HcmV?d00001 diff --git a/_resources/qss/light/radio_checked_pressed@2x.png b/_resources/qss/light/radio_checked_pressed@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..cb24b03b34dc9cf277b027f360f5a9f24710c188 GIT binary patch literal 2580 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 literal 0 HcmV?d00001 diff --git a/_resources/qss/light/radio_unchecked_disabled@2x.png b/_resources/qss/light/radio_unchecked_disabled@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..93c55893947c1e8812e54f356e438040f5554112 GIT binary patch literal 2202 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 literal 0 HcmV?d00001 diff --git a/_resources/qss/light/radio_unchecked_pressed.png b/_resources/qss/light/radio_unchecked_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..e660846f592d554cb01f825520dc9159191823e6 GIT binary patch literal 978 zcmV;@11gRdF+sQ252^D0z6;_NEn<} zma)E0yHr(xXiVWO3>j=%X1_5L`+CFnT}1$gPJS_1#CGgM6S#+vVW6hmV%B*UQ3)^1_yvP z;AiL9KCsb#ST?|sb87RANkIefMNO7hU+J{Jml9rR2QO*$oqzHH&=1Uc@I+6CP2Cb; z^sLsTS8)ch0ptBEkMa6`Ggppy-Xz&bj6pNrF-Z7ExI1LYVjpi|qqNT<#0FrZ5^(@C zQ(p%|CWZw~8ONxk8wPy?z>!IXfNtRTl+j&@criqMJ$r$R7@LpAd3I3%-{aj}E8gA{ zvcD=7&)d#+OCjD2K8K2Dq44r)Tx&C82KeKSI@a!Nw^X$NAh#Zl#`y_&$T=R#M@3-< zvW{&5&{x$Khup6aj01Qc&*#hMe}VCI@cgFQ;sx{g767ri6abn5yeyYjO5ajU=U!+k z0Z>rr9LbWFRkEuMg}(30FT|34;Qz9>f&iEY$VC9u(zsHh^;d(wjoJJjQ#=E|0LZa! zr2uLiZ2%?``Lg*n0H=b=tt$oK99saKak3P^X9B>C=MKkJQ*CichR1dQbBvV$3_NPH zh?9bb8hEYR0MR(xf|#JbG9p zB^y4k^}b^gxCi+BdL2D`+wEF8;>RwicJ5yeA$9}To#Uy2jTT?%w`futozw%)V;p!8 zW5z_}@-?E%NlMqnctIWq5ceA-oYB=EvhQ!^zhqiIGNrpo^AX02fpY>eAvkU@oym~& z>u_Xgl+ofjwhFq)Wy1g`5Iuci`*ksm AU;qFB literal 0 HcmV?d00001 diff --git a/_resources/qss/light/radio_unchecked_pressed@2x.png b/_resources/qss/light/radio_unchecked_pressed@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c133f6b1270da70cea1a281051f6438c4853f8f2 GIT binary patch literal 2079 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 Dv33hl literal 0 HcmV?d00001 diff --git a/_resources/qss/light/toggle_checked@2x.png b/_resources/qss/light/toggle_checked@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..91ac73747282d0cdeca6c9d48bfb9ff26aa16323 GIT binary patch literal 3867 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 N4_9xObI#$({{d$SAJPB- literal 0 HcmV?d00001 diff --git a/_resources/qss/light/toggle_checked_disabled.png b/_resources/qss/light/toggle_checked_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..21b2248001fa7bcbb66bea39312050f35dfe1441 GIT binary patch literal 2734 zcmb_e3se(V8jf0N1VKxSxD{a>{j!Md*qspi)^EtP0rG)v|~!1uANfTB*1qT5&+berpIGEQHx$b9>Q$#PX=j>7UYR&b403$pfIUaD>;l|cs0w7&G!@7BwJ@~^G96H2`u3FF{(_7vmC16V2mIM80V#OSPd9p zOe5n^MuBS>QaQ%9+N1>wjnPeHwW;C&qg1BW$OvFwIYUTcIVV-ZYJwnOjfUi;YMj93 zIA(M6utBJmS~F-}>gf7d!*3WJ>9o+WCn$!sd0i!8ZB6DuJ|nlaPpHT5iaa_$C7uVQ zzta4XFlIqxNnuR<@;Fet-!vEUOXAH;@~=w=%U&+ScoJ4CaSWCzK+%*8fy0EFlcG3^ z5x5K+OMRmBVKbs6h2s=~j+yblkv>`$Hl8uW@nGjfB>zJ)zsr{+D*q#ypRcU{Uowbo zzZ`KG@^kYIKbx?(f<_MC0von%IR2^t7vnD*-T>-k0Z{Co7qLyylD zRCQdd`uy{-IO46LUeUwTWEa+wZJM2pxi;2p5@FLj#ZI10?cQ`W-sKPrqx9}fi z_562TyS;UdRoHo%^`+q4XQzn&3g0PmYsj!ZLu?Q`9Fcy}(OfqlP{kFUirDma;1TKf z`l570X6=I3rU36o?CP%Kv)44oE|!MAlILo##a-qczOm}*8Bqm4Z0)u>Gd;x-t_BpW54vZ&O*LSmus4~D2CG5cT>YY%zCZH?k-RlrAiFho4@Z*izd|z z^;CbxOZ%JcblU`XPHS>&ZR&h@CN60*cH-Lx#F`jdA6Ry#vFq>~&Z`wYN7YLWC%5mc zyzSt<%yE&VYcur6Puf&9b$PDc#cfc@rK8H)Ll+dzHJ;6@(;{`=i!;p|2X=33+HENe zAPgVS3FpcL4FVLEcNq(9aw2&0BY`BG#*~Pj{h8*qM{%B%KXX>=cs~B869cHnEc|P6kLRGoM2{La1tZGLPDvbJQLdw*K|fkUoodrJ4XyDV%Ayqs5jwwk^t>x>-S zGEmsk;}>gxPh8%6FcOP*c1)zxz3Cyt-P*TYtW!N}$da_V{W*C@ws>}*ejwVxYwrv$ z+jr~D59EUQ(Rq*0KjpQg!%jdHpWJ^6`mRm6uv)B@7h-UnlU_d!oA~ zoyz;mBIe3BbS%7>sfvH^4MkZ@L&xKaJ?3iH_0{&^xIagqe>r<+R6*Z2++~-|_Niel y=!1i&gBtSnwb56vm*1@s|KPEq{d&mbDb>3I%SsxzpSFEb2Kk5h{bfaL`o94aQ~;O& literal 0 HcmV?d00001 diff --git a/_resources/qss/light/toggle_checked_disabled@2x.png b/_resources/qss/light/toggle_checked_disabled@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..931ec3f171e9058e54c01aea19c9fb58197e6c76 GIT binary patch literal 3867 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 OUspk_kzG1f>>J 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 literal 0 HcmV?d00001 diff --git a/_resources/qss/light/toggle_pressed@2x.png b/_resources/qss/light/toggle_pressed@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9c25ecec13a3c6d5f6f5199c4f37bb99fdc09974 GIT binary patch literal 3838 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 literal 0 HcmV?d00001 diff --git a/_resources/qss/light/toggle_unchecked.png b/_resources/qss/light/toggle_unchecked.png new file mode 100644 index 0000000000000000000000000000000000000000..33c045a73ae9b2013c54ce45310e95b4d1bafbc9 GIT binary patch literal 2860 zcmb_e3se(V8V(`lVONfbQqdMds943xyb?$TqCA3v7K;$yTA9pDNHodBOn3xPUSbPM z?QR#;R*`zN@>o%evQ-q))fNk)#VRQ1Dcy<)YIU`?7PRaQuiCDCoSw}&leu%}yZ`_F z|Ns5>PJZlyxnsvn9>e4D#zsdevOm(axt{HreZzX)!wrl@5ckLPyUemN8cxJ}{l zoQid-rIw{JuM!k%5R){kX2hum6F~ELA+u9WB(;{Y2-QrY&ZrRGt*sXcb+kgXL>hy{ zm?9XhE-KB;#HTG#QE6)_IW3w!OBj+$00RcbLJCt2dLu`qDnx^J2{5)#!y@4z#IjZ) z3bQ*DE{%y5MzCf^C>Ns;g&?Rf2#h3wm`pC8DZ~&Ahmk-SlR_9mASfY~3Wt9p;Lc2I zh&bh(VQ1h;A<|kbCIW_2Qc}bzxR^C3!l+y>hY<|MFbE(Z&T6!fsgRNL8?m5dILfRu zS#+#XXtzkJ*(8fX1gH+hU@(oEHFCpw0vUr-NfV5U5qnI7K$;rGnUc)akH$nqm>JT-npG^TAE{LA2xTEA5eErhS)w!2YzjC1sRfLZv@i-0sG1Z) zBoG>;LU96-fWieJV1NukV^~_Ju|5qAf)HGVg6hf%T=p|4&Sm z3gHro43bHtK@g6UYKlfMwOWdetXHyBlD)F_^+PJBSqj+r$t$U5B(w~ZLsA(yGNED_}Hcf|$&8hMUP{%z`@?E|GKBZt&7427gY_EM5K2H|R2 zf?x=WV^VY^^rxv0iV=|$7)Id8h#3D2_2INoTGE)vfSnT-{rO=2m@bD{{!cK!?5zJ^ zFtB~U98wtkOYsf9dune5g&dp$8@7EodQ^ai(Zhx@f;^eQQF3A6F*wfzA<@b()zZ96 z+gE8{ik#4p$*q{`ANl_JvMWa>b}ZU>rufY{r=92LRg{-6z89u_!t2i$O{6aTO;zbX zhhI1`uVCLeSQOXN-X1>RP&t0%t&Zz)hO2uE%io(NSlDuT>)O^gb{xBX@>>7V^c8n} zipg^&r*;mMT#!F1>G4a>ZtR&MTRE=y&RIbTzs6y#Ejl5u zyYVaJNi4tk&Q;fpu^0J1yz|zo6Q*N3-Ex`W>e!adzdV}wQ3tp0y@M&ykD!jjv8(Gm zwa%@pblnaiOMY|>ann0%9Q&b;W4^25X~2q0=PQQdi_i-d-6Yx7O9K2zRG!1_OZ}vkc{S9WoR^y?d`eIS)&81 zj^>_ny;Saz^}c9|+zcGdOz z#wtN;8vtf>Re63QP8h$mVjy0)%{EW*&4ZOY3e%Tlntgj+4otYVik)`g!kVs+xvt30 ztdg3^*0*hO3U9Z`V=lX_^dOs$Z-iTwhXOW5q^(p7!ubCEg-(z_ZQb&m&s*e_P4Q_v zS%K>r??wJs6PueX1Qa`c)(m3-ImPMg6}j%)T{e~^ImXB5q#ixDWl{~}>rk4x{GF`c z=BBzEnxegXzV4n>Ln3v%(45XT>AxOB9P(+-I{hhAwRc0IFsif6+s9@3qq=&JMPgOK z^WnR$T{@kc7GeY}cHdf;cdn6l;=6zMdf0;9J#Sf)zNm=bcc~E+w~gPlaA0ju^O*h4gYcFQJuy}z_7}K@N*8bRhymGcRoqyOH={mA?#{T-V zG!|UDI<2pvbVE^N&&jg;zCFk8f0iRS5~g@NoVfvova?)s>*{iGUVHoUaMu4qkEF1$ zaNVvi-A-i9!0xsb=}3P2A=gKqWsb>?Qxr=|w%(2w-1P2@Q2F8cYo^bA@UTGoaPz|E zX1;3uMb`{--n)H?u@5s9_Z%zA>-YL>y3jU*Tj;KB*@LR;GbYKJyJ{DsUf)v*xu8*= z_bN_5oHV;)MQuP$W!G1edes4o<{h5NcLH4z{>>$|W6Ot@S@#cmHq5`7xX?X&z^|&W cqbJir*k$_1zP|c1_V3x~$OX!(@PwTI0x2&!#{d8T literal 0 HcmV?d00001 diff --git a/_resources/qss/light/toggle_unchecked@2x.png b/_resources/qss/light/toggle_unchecked@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..80df86f85c64ffd91bab3272f91ced9c57cc32ca GIT binary patch literal 4153 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 mY{2< zTCgfwt)6AEz83H-b=MTBim0u+f)#0HT~V=$7NJ!t(y}+a)^_dV^lZ+V%s+F#`~Tnn z|KGiL3Zf%l9zAO6D2YTeIy_7h1MVoeAU9X=AA9k!7r40_!j!4BS1?ef%7tqG@HU(AcjvA3~FiTk)u*b;MCGrWm;5g z4Ca%BuuK!bI5RSq%}ilcoOIqxP+$fH9HjCV8p=r38_ZOOS~}pD0=DxtB83JZmK3!# z$Qcld(?&zVqKSu8{us=nC zG(b*|G$W>2)KWloFo#s*h+Bhss7|0_NCs_0Fn`pU(*TfTM{ve8lYSsL$0EF*Pvs33 zGr(daSYwiC5zR^BPq-c#{y_jxTdj5^##6bZrjCR#TSC%78bbwnD%u=tGxA6bZx+)` zEFY2%XwGtGW2AyjJZ%w8v7)FS?o{+JWe6wz6_C%Xf`JpQ<~dJH;5D>`S4%lMKNR&)0}-nzOUc`GYFwL>Bn?Z&W#kk}8H|VVY$aScL+ML3ssC z(h8kYM>3p>Wrw{*nFO%VX#JC3ovb+Ek(4ny83DvArwJ04bEFbx2!eohIu%DUIDyM? z%&F!9fly(B8MMwev_2N|uMb&z0UFQ*MYB$=tEH^7$vh_=dM!Mq9=|H`(0pqW51jr? z^9Q4wMV-Y;oA{taP`h6g7xGi&&2;+DQwPglF2i^g%qVdTmMK8dlr(|E1jCUij$#BZ z!-i9TlKOxcQ5A*b6oC$l@wZSPDhr!L8xnc2b0X5;p3JY);IPw;@mF> z6^8s+d;?=o?5&`Y1Fyh_?KDS@3h*#;*zg8WClfeI4%>I%kw{#Qhiigj<8nW{tlhI@ z$%JR`Up-Rh@?7@phm8|*eUhQjw6_Q)lTa>9ChgvDEi9P2B$@Il`g2zHI<)kC#Jdnb zJ0I(qkgt^QL#s1{<*K*$`0VjsmHpBAj@s)-dRh_Req+n_w4Tp9jy`N&o-%fQaWS>? z!nc2Q|Hl47tL2=%d+vTsUQ1U`vm|4C-RoX;2mQ3g>3fwIPygYJ-Q-@AKyUc{k^20& z&E=;XO49Tl^W#f5w}to>>>lq}zebr?;(BOwJ~rb+=I@o&_o=TwX}nRfv=E+l%HI8X zSh~FSSg2!T`RT3Cj58ECd@7iU(;NI&7ff7M=CyTCf6ka2A+~9zg$?O}Z#q~w|4IwWfXXe-zMNaYV8nvvfuP~r$;^u^? z_|i$ukJqora`@yM$Jy@(Ug8AYP|&^G@j{Bxvz>9f+O|>;SbZHty)%h-5!=!oW#y+= z-t&qpZdDfLo+V}^_PPh|e(>N8*Yj=H{Iro{|5-3axo+#>nGq#Xd;6zq-^;rn+xOb4 zSy$^K^-00CQ#)tgJ!9`)7o-B5kz>1Nzjo{T^GoCYl#SdR1YU1dbUt?Y+;S(b!qY#sci)NM5}9-O#h#PrZ*Fq5WYt%-u4?*dQd4GS zOWk+sFaLJD_OgGnJZ4wno3mu)0hFL2FyxH;bWg)ORJ3ipb3tx<#3kJmc^pK)6P((>*SKQc> z@ewIua$#HBt={(j*{@WLbz5Z1k3RQV(`|Yt zg?KdH&Rg4fdm2!OV*Uwbbwt>V_;ZanzIt~IIX=)^(?0q#{_lO2tfqTK?xuM~o~(|_ zTl(V71*>zO>-ya#ozUH&N(|g_{CS7>1iT{Wo$mb+yH+kbI^W08?)KH90MR5j%v*p`!guebJt z^t_(j`~$%yX?IU$jj}C@r~8`P{ASV}lO9ym7mL*gy}q5-=2-jQ_nu$Ygf(Th-QVc^ OtPBr{)Er!puS$& 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 literal 0 HcmV?d00001 diff --git a/_resources/qss/light/toggle_unchecked_focus.png b/_resources/qss/light/toggle_unchecked_focus.png new file mode 100644 index 0000000000000000000000000000000000000000..c7fc8cc856d9477339549b8a06d93f9e98ef0e01 GIT binary patch literal 2750 zcmb_e3se(l77n01JOU!L2wED0(4tIclF4&Qcx)gNB~*C{qL#_b1R_Z$xp z_kQ=@@BjbVxhi$J@0`#%G#brUnw*$M-686tdwWv<8JEWwQ8yoLa*m!x^E>Cf-1aW> zTS%jMzNO5_He}0E5R6naQJj<$OtV@`p=q?3II|YT3JC*UPUI^!BF0y(9Sph>7ctgw zWspoOCJL0vn{-6_rqm2 zC}Jcy1Jbi)tLS1{#7Jxwzi_WJk4v#Gm3Zv<4hz)}f4`g!zHiSSdgv+H*{uop^ z9j-vq5+#$ts3#Glz+liKAZRj~m?oG>>heLBP$&c;HppfJ6avtfXbh+s(CEXbJR}l& zOsCWul%$64^oYtyqd~-=s7~ad)=s|H20evkO=GnMq=D2IkU!yi`t=V2P_>oGrei#ji&{M$LT^YarqY-!$P>}}j1nyY zrV)D5sKbb)Vv1(CGaD@;))AJ()9IA24Aj*IypfVCyDoSQT`2YlGuviF(jc_?XfKr;lQ3LvmU>rjf zq)v@e2`klTJ^^Yq`3(AW84)q5B6UP*zE}!60Gzb{r@i_uO zE|)6+AuLb`_-um9XY-wEb_oPYR_dwNl}xUWbfRd|QYq;!O&}=d)Vhd)Ih#!2jLBi; z6YBA+B2UgY6%drupK1O?bUmpsm{1*&kWba_7sUns6nQ;b{PWbgY(5|5%VB^G;~0SQ zI5;5S$O(WYfN>rd#d(-QF_rpE>Mk)tLWBz;Ea8+Ge+%`=vS0+X<|Y~_V0V&UcVzVGpK8u={?SZm@{diwzPJTnu{)9+Z}y zB0irp?6L4(v4bY5-(~@9#fN4u7=C2mQ@6g;+r0ID)cw%65U1THjVv&-|;;>DHt;x-4x=p7SrR8@HA^ZtAQ(w~>?Lu#vKk^^x>% zn%qa95iA;$fcH0gux_|tm+n=wJuS;@muzrqNSL)L-c1lyVRe*WewSen`^-N~wy!Xv zW{KB-irOxf`NV(@!?_W){gWV8F73dd-Vg2GvF=_F>YlVGE@?jk&)Uo?B^RA2j~>ZG z-BWWmcoH8NaPR&N*J>8G{6o>Yb6x!b=4CY9_pc$F3;+0vt>psmXq8O0L|oM~x4lUF zk*vj+mtwEJ&=sC~wr2U$Hv}!ZFnu{>1(Qxx3bs_JgF`!w_JTPb8?z%EXVSO(%-uOO z{OHgbRcJ%IS8Pgv>iwRjA0MuLHRY<&A+Qew7Gofjpk6=k=~B}Mr~a0#X-;Jm#zlgl{dy$3;T|$R}M)!M`8O@LkS9T z$_s7tuH9)V{&@TPW2v;VimbSSy)EaKtDHD_lmUKthszK8A5>-G&8 hjr(_d$ANa=fT88b58+?>JHIfcNvVk^ewX*ke*x9g0q+0+ literal 0 HcmV?d00001 diff --git a/_resources/qss/light/toggle_unchecked_focus@2x.png b/_resources/qss/light/toggle_unchecked_focus@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..687005b1ecb0d80e142fdf11f86271d48d3134c4 GIT binary patch literal 3892 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 literal 0 HcmV?d00001 diff --git a/_resources/qss/style.qss b/_resources/qss/style.qss new file mode 100644 index 0000000..7b1efc1 --- /dev/null +++ b/_resources/qss/style.qss @@ -0,0 +1,486 @@ + +QMenu { + margin: 0.1em; + icon-size: 1em; +} + +QMenuBar { + spacing: 0.2em; + padding: 0.1em; +} + +QMenu::item { + min-height: 1.2em; + padding: 0.05em 1em 0.05em 0.5em; + border: 0.05em solid transparent; +} + +QMenu::item:selected { + border-color: $MENU_ITEM_SELECT_BORDER; + background: $MENU_ITEM_SELECT_COLOR; +} + +QMenu::icon { + border: none; + margin-left: 0.5em; + width: 1em; + height: 1em; +} + +QMenu::indicator { + width: $CHECKBOX_SIZE; + height: $CHECKBOX_SIZE; + margin-left: 0.5em; +} + +/* non-exclusive indicator = check box style indicator (see QActionGroup::setExclusive) */ + +QMenu::indicator:non-exclusive:unchecked { + image: url(":/qss/$THEME/checkbox_unchecked.png"); +} + +QMenu::indicator:non-exclusive:unchecked:selected, QMenu::indicator:non-exclusive:unchecked:hover, QMenu::indicator:non-exclusive:unchecked:focus, QMenu::indicator:non-exclusive:unchecked:pressed { + image: url(":/qss/$THEME/checkbox_unchecked.png"); + border: none; +} + +QMenu::indicator:non-exclusive:unchecked:disabled { + image: url(":/qss/$THEME/checkbox_unchecked_disabled.png"); +} + +QMenu::indicator:non-exclusive:checked { + image: url(":/qss/$THEME/checkbox_checked.png"); +} + +QMenu::indicator:non-exclusive:checked:selected, QMenu::indicator:non-exclusive:checked:hover, QMenu::indicator:non-exclusive:checked:focus, QMenu::indicator:non-exclusive:checked:pressed { + image: url(":/qss/$THEME/checkbox_checked.png"); + border: none; +} + +QMenu::indicator:non-exclusive:checked:disabled { + image: url(":/qss/$THEME/checkbox_checked_disabled.png"); +} + +QMenu::indicator:non-exclusive:indeterminate { + image: url(":/qss/$THEME/checkbox_indeterminate.png"); +} + +QMenu::indicator:non-exclusive:indeterminate:disabled { + image: url(":/qss/$THEME/checkbox_indeterminate_disabled.png"); +} + +QMenu::indicator:non-exclusive:indeterminate:selected, QMenu::indicator:non-exclusive:indeterminate:focus, QMenu::indicator:non-exclusive:indeterminate:hover, QMenu::indicator:non-exclusive:indeterminate:pressed { + image: url(":/qss/$THEME/checkbox_indeterminate.png"); +} + +/* exclusive indicator = radio button style indicator (see QActionGroup::setExclusive) */ + +QMenu::indicator:exclusive:unchecked { + image: url(":/qss/$THEME/radio_unchecked.png"); +} + +QMenu::indicator:exclusive:unchecked:selected, QMenu::indicator:exclusive:unchecked:hover, QMenu::indicator:exclusive:unchecked:focus, QMenu::indicator:exclusive:unchecked:pressed { + image: url(":/qss/$THEME/radio_unchecked.png"); + border: none; + outline: none; +} + +QMenu::indicator:exclusive:unchecked:disabled { + image: url(":/qss/$THEME/radio_unchecked_disabled.png"); +} + +QMenu::indicator:exclusive:checked { + image: url(":/qss/$THEME/radio_checked.png"); + border: none; + outline: none; +} + +QMenu::indicator:exclusive:checked:selected, QMenu::indicator:exclusive:checked:hover, QMenu::indicator:exclusive:checked:focus, QMenu::indicator:exclusive:checked:pressed { + image: url(":/qss/$THEME/radio_checked.png"); + border: none; + outline: none; +} + +QMenu::indicator:exclusive:checked:disabled { + image: url(":/qss/$THEME/radio_checked_disabled.png"); + outline: none; +} + +/* CheckBox ***********************************************************/ + +QCheckBox { + spacing: 4px; + outline: none; + padding-top: 0; + min-height: $CHECKBOX_SIZE; +} + +QCheckBox:focus { + border: none; +} + +QCheckBox::indicator { + margin-left: 2px; + margin-top: 2px; + height: $CHECKBOX_SIZE; + width: $CHECKBOX_SIZE; +} + +QCheckBox::indicator:unchecked { + image: url(":/qss/$THEME/checkbox_unchecked.png"); +} + +QCheckBox::indicator:unchecked:hover, QCheckBox::indicator:unchecked:focus { + image: url(":/qss/$THEME/checkbox_unchecked_focus.png"); + border: none; +} + +QCheckBox::indicator:unchecked:pressed { + image: url(":/qss/$THEME/checkbox_unchecked_pressed.png"); + border: none; +} + +QCheckBox::indicator:unchecked:disabled { + image: url(":/qss/$THEME/checkbox_unchecked_disabled.png"); +} + +QCheckBox::indicator:checked { + image: url(":/qss/$THEME/checkbox_checked.png"); +} + +QCheckBox::indicator:checked:hover, QCheckBox::indicator:checked:focus { + image: url(":/qss/$THEME/checkbox_checked_focus.png"); + border: none; +} + +QCheckBox::indicator:checked:pressed { + image: url(":/qss/$THEME/checkbox_checked_pressed.png"); + border: none; +} + +QCheckBox::indicator:checked:disabled { + image: url(":/qss/$THEME/checkbox_checked_disabled.png"); +} + +QCheckBox::indicator:indeterminate { + image: url(":/qss/$THEME/checkbox_indeterminate.png"); +} + +QCheckBox::indicator:indeterminate:disabled { + image: url(":/qss/$THEME/checkbox_indeterminate_disabled.png"); +} + +QCheckBox::indicator:indeterminate:focus, QCheckBox::indicator:indeterminate:hover { + image: url(":/qss/$THEME/checkbox_indeterminate_focus.png"); +} + +QCheckBox::indicator:indeterminate:pressed { + image: url(":/qss/$THEME/checkbox_indeterminate_pressed.png"); + border: none; +} + +/* CheckBox on Frame *****************************************************/ + +QFrame > QCheckBox { + spacing: 4px; + outline: none; + padding-top: 0; + min-height: $TOGGLE_HEIGHT; +} + +QFrame > QCheckBox:focus { + border: none; +} + +QFrame > QCheckBox::indicator { + margin-left: 2px; + margin-top: 2px; + height: $TOGGLE_HEIGHT; + width: $TOGGLE_WIDTH; +} + +QFrame > QCheckBox::indicator:unchecked, +QFrame > QCheckBox::indicator:unchecked:focus { + image: url(":/qss/$THEME/toggle_unchecked.png"); +} + +QFrame > QCheckBox::indicator:unchecked:hover { + image: url(":/qss/$THEME/toggle_unchecked_focus.png"); + border: none; +} + +QFrame > QCheckBox::indicator:unchecked:pressed, +QFrame > QCheckBox::indicator:checked:pressed, +QFrame > QCheckBox::indicator:indeterminate:pressed { + image: url(":/qss/$THEME/toggle_pressed.png"); + border: none; +} + +QFrame > QCheckBox::indicator:unchecked:disabled { + image: url(":/qss/$THEME/toggle_unchecked_disabled.png"); +} + +QFrame > QCheckBox::indicator:checked, +QFrame > QCheckBox::indicator:checked:focus { + image: url(":/qss/$THEME/toggle_checked.png"); +} + +QFrame > QCheckBox::indicator:checked:hover { + image: url(":/qss/$THEME/toggle_checked_focus.png"); + border: none; +} + +QFrame > QCheckBox::indicator:checked:disabled { + image: url(":/qss/$THEME/toggle_checked_disabled.png"); +} + +QFrame > QCheckBox::indicator:indeterminate, +QFrame > QCheckBox::indicator:indeterminate:focus { + image: url(":/qss/$THEME/toggle_pressed.png"); +} + +QFrame > QCheckBox::indicator:indeterminate:disabled { + image: url(":/qss/$THEME/checkbox_unchecked_disabled.png"); +} + +QFrame > QCheckBox::indicator:indeterminate:hover { + image: url(":/qss/$THEME/checkbox_unchecked_disabled.png"); +} + +/* GroupBox ********************************************************************* */ + +QGroupBox { + padding: 2px; + padding-top: 20px; + margin-top: 4px; + margin-bottom: 2px; +} + +QGroupBox::title { + subcontrol-origin: margin; + subcontrol-position: top left; + left: 2px; + padding-left: 4px; + padding-right: 4px; + padding-top: 1px; +} + +QGroupBox[checkable="false"]::title { + padding-top: 4px; +} + +QGroupBox::indicator { + margin-left: 2px; + margin-top: 3px; + padding: 0; + height: $CHECKBOX_SIZE; + width: $CHECKBOX_SIZE; +} + +QGroupBox::indicator:unchecked { + image: url(":/qss/$THEME/checkbox_unchecked.png"); + border: none; +} + +QGroupBox::indicator:unchecked:hover, QGroupBox::indicator:unchecked:focus, QGroupBox::indicator:unchecked:pressed { + image: url(":/qss/$THEME/checkbox_unchecked_focus.png"); + border: none; +} + +QGroupBox::indicator:unchecked:disabled { + image: url(":/qss/$THEME/checkbox_unchecked_disabled.png"); +} + +QGroupBox::indicator:checked { + image: url(":/qss/$THEME/checkbox_checked.png"); + border: none; +} + +QGroupBox::indicator:checked:hover, QGroupBox::indicator:checked:focus, QGroupBox::indicator:checked:pressed { + image: url(":/qss/$THEME/checkbox_checked_focus.png"); + border: none; +} + +QGroupBox::indicator:checked:disabled { + image: url(":/qss/$THEME/checkbox_checked_disabled.png"); +} + +/* Customize radio buttons. *******************************************/ + +QRadioButton { + spacing: 4px; + outline: none; + border: none; + padding-top: 0; + min-height: $CHECKBOX_SIZE; +} + +QRadioButton:focus { + border: none; +} + +QRadioButton::indicator { + border: none; + outline: none; + margin-left: 2px; + margin-top: 2px; + height: $CHECKBOX_SIZE; + width: $CHECKBOX_SIZE; +} + +QRadioButton::indicator:unchecked { + image: url(":/qss/$THEME/radio_unchecked.png"); +} + +QRadioButton::indicator:unchecked:hover, QRadioButton::indicator:unchecked:focus { + border: none; + outline: none; + image: url(":/qss/$THEME/radio_unchecked_focus.png"); +} + +QRadioButton::indicator:unchecked:pressed { + border: none; + outline: none; + image: url(":/qss/$THEME/radio_unchecked_pressed.png"); +} + +QRadioButton::indicator:unchecked:disabled { + image: url(":/qss/$THEME/radio_unchecked_disabled.png"); +} + +QRadioButton::indicator:checked { + border: none; + outline: none; + image: url(":/qss/$THEME/radio_checked.png"); +} + +QRadioButton::indicator:checked:hover, QRadioButton::indicator:checked:focus { + border: none; + outline: none; + image: url(":/qss/$THEME/radio_checked_focus.png"); +} + +QRadioButton::indicator:checked:pressed { + border: none; + outline: none; + image: url(":/qss/$THEME/radio_checked_pressed.png"); +} + +QRadioButton::indicator:checked:disabled { + outline: none; + image: url(":/qss/$THEME/radio_checked_disabled.png"); +} + +/* **************************************************************************** */ + +QListWidget::indicator:checked, +QTreeWidget::indicator:checked, +QTableWidget::indicator:checked, +QTreeView::indicator:checked, +QListView::indicator:checked, +QTableView::indicator:checked, +QColumnView::indicator:checked { + image: url(":/qss/$THEME/checkbox_checked.png"); +} + +QListWidget::indicator:checked:hover, +QTreeWidget::indicator:checked:hover, +QTableWidget::indicator:checked:hover, +QListWidget::indicator:checked:focus, +QTreeWidget::indicator:checked:focus, +QTableWidget::indicator:checked:focus, +QTreeView::indicator:checked:hover, +QTreeView::indicator:checked:focus, +QListView::indicator:checked:hover, +QListView::indicator:checked:focus, +QTableView::indicator:checked:hover, +QTableView::indicator:checked:focus, +QColumnView::indicator:checked:hover, +QColumnView::indicator:checked:focus { + image: url(":/qss/$THEME/checkbox_checked_focus.png"); +} + +QListWidget::indicator:checked:pressed, +QTreeWidget::indicator:checked:pressed, +QTableWidget::indicator:checked:pressed, +QTreeView::indicator:checked:pressed, +QListView::indicator:checked:pressed, +QTableView::indicator:checked:pressed, +QColumnView::indicator:checked:pressed { + image: url(":/qss/$THEME/checkbox_checked_pressed.png"); +} + +QListWidget::indicator:unchecked, +QTreeWidget::indicator:unchecked, +QTableWidget::indicator:unchecked, +QTreeView::indicator:unchecked, +QListView::indicator:unchecked, +QTableView::indicator:unchecked, +QColumnView::indicator:unchecked { + image: url(":/qss/$THEME/checkbox_unchecked.png"); +} + +QListWidget::indicator:unchecked:hover, +QTreeWidget::indicator:unchecked:hover, +QTableWidget::indicator:unchecked:hover, +QListWidget::indicator:unchecked:focus, +QTreeWidget::indicator:unchecked:focus, +QTableWidget::indicator:unchecked:focus, +QTreeView::indicator:unchecked:hover, +QTreeView::indicator:unchecked:focus +QListView::indicator:unchecked:hover, +QListView::indicator:unchecked:focus, +QTableView::indicator:unchecked:hover, +QTableView::indicator:unchecked:focus, +QColumnView::indicator:unchecked:hover, +QColumnView::indicator:unchecked:focus { + image: url(":/qss/$THEME/checkbox_unchecked_focus.png"); +} + +QListWidget::indicator:unchecked:pressed, +QTreeWidget::indicator:unchecked:pressed, +QTableWidget::indicator:unchecked:pressed, +QTreeView::indicator:unchecked:pressed, +QListView::indicator:unchecked:pressed, +QTableView::indicator:unchecked:pressed, +QColumnView::indicator:unchecked:pressed { + image: url(":/qss/$THEME/checkbox_unchecked_pressed.png"); +} + + +QListWidget::indicator:indeterminate, +QTreeWidget::indicator:indeterminate, +QTableWidget::indicator:indeterminate, +QTreeView::indicator:indeterminate, +QListView::indicator:indeterminate, +QTableView::indicator:indeterminate, +QColumnView::indicator:indeterminate { + image: url(":/qss/$THEME/checkbox_indeterminate.png"); +} + +QListWidget::indicator:indeterminate:hover, +QTreeWidget::indicator:indeterminate:hover, +QTableWidget::indicator:indeterminate:hover, +QListWidget::indicator:indeterminate:focus, +QTreeWidget::indicator:indeterminate:focus, +QTableWidget::indicator:indeterminate:focus, +QTreeView::indicator:indeterminate:hover, +QTreeView::indicator:indeterminate:focus, +QListView::indicator:indeterminate:hover, +QListView::indicator:indeterminate:focus, +QTableView::indicator:indeterminate:hover, +QTableView::indicator:indeterminate:focus, +QColumnView::indicator:indeterminate:hover, +QColumnView::indicator:indeterminate:focus { + image: url(":/qss/$THEME/checkbox_indeterminate_focus.png"); +} + +QListWidget::indicator:indeterminate:pressed, +QTreeWidget::indicator:indeterminate:pressed, +QTableWidget::indicator:indeterminate:pressed, +QTreeView::indicator:indeterminate:pressed, +QListView::indicator:indeterminate:pressed, +QTableView::indicator:indeterminate:pressed, +QColumnView::indicator:indeterminate:pressed { + image: url(":/qss/$THEME/checkbox_indeterminate_pressed.png"); +} diff --git a/_resources/style.qrc b/_resources/style.qrc new file mode 100644 index 0000000..e1b0ee4 --- /dev/null +++ b/_resources/style.qrc @@ -0,0 +1,113 @@ + + + qss/style.qss + qss/dark/checkbox_checked.png + qss/dark/checkbox_checked@2x.png + qss/dark/checkbox_checked_disabled.png + qss/dark/checkbox_checked_disabled@2x.png + qss/dark/checkbox_checked_focus.png + qss/dark/checkbox_checked_focus@2x.png + qss/dark/checkbox_checked_pressed.png + qss/dark/checkbox_checked_pressed@2x.png + qss/dark/checkbox_indeterminate.png + qss/dark/checkbox_indeterminate@2x.png + qss/dark/checkbox_indeterminate_disabled.png + qss/dark/checkbox_indeterminate_disabled@2x.png + qss/dark/checkbox_indeterminate_focus.png + qss/dark/checkbox_indeterminate_focus@2x.png + qss/dark/checkbox_indeterminate_pressed.png + qss/dark/checkbox_indeterminate_pressed@2x.png + qss/dark/checkbox_unchecked.png + qss/dark/checkbox_unchecked@2x.png + qss/dark/checkbox_unchecked_disabled.png + qss/dark/checkbox_unchecked_disabled@2x.png + qss/dark/checkbox_unchecked_focus.png + qss/dark/checkbox_unchecked_focus@2x.png + qss/dark/checkbox_unchecked_pressed.png + qss/dark/checkbox_unchecked_pressed@2x.png + qss/dark/radio_checked.png + qss/dark/radio_checked@2x.png + qss/dark/radio_checked_disabled.png + qss/dark/radio_checked_disabled@2x.png + qss/dark/radio_checked_focus.png + qss/dark/radio_checked_focus@2x.png + qss/dark/radio_checked_pressed.png + qss/dark/radio_checked_pressed@2x.png + qss/dark/radio_unchecked.png + qss/dark/radio_unchecked@2x.png + qss/dark/radio_unchecked_disabled.png + qss/dark/radio_unchecked_disabled@2x.png + qss/dark/radio_unchecked_focus.png + qss/dark/radio_unchecked_focus@2x.png + qss/dark/radio_unchecked_pressed.png + qss/dark/radio_unchecked_pressed@2x.png + qss/dark/toggle_checked.png + qss/dark/toggle_checked@2x.png + qss/dark/toggle_checked_disabled.png + qss/dark/toggle_checked_disabled@2x.png + qss/dark/toggle_checked_focus.png + qss/dark/toggle_checked_focus@2x.png + qss/dark/toggle_pressed.png + qss/dark/toggle_pressed@2x.png + qss/dark/toggle_unchecked.png + qss/dark/toggle_unchecked@2x.png + qss/dark/toggle_unchecked_disabled.png + qss/dark/toggle_unchecked_disabled@2x.png + qss/dark/toggle_unchecked_focus.png + qss/dark/toggle_unchecked_focus@2x.png + qss/light/checkbox_checked.png + qss/light/checkbox_checked@2x.png + qss/light/checkbox_checked_disabled.png + qss/light/checkbox_checked_disabled@2x.png + qss/light/checkbox_checked_focus.png + qss/light/checkbox_checked_focus@2x.png + qss/light/checkbox_checked_pressed.png + qss/light/checkbox_checked_pressed@2x.png + qss/light/checkbox_indeterminate.png + qss/light/checkbox_indeterminate@2x.png + qss/light/checkbox_indeterminate_disabled.png + qss/light/checkbox_indeterminate_disabled@2x.png + qss/light/checkbox_indeterminate_focus.png + qss/light/checkbox_indeterminate_focus@2x.png + qss/light/checkbox_indeterminate_pressed.png + qss/light/checkbox_indeterminate_pressed@2x.png + qss/light/checkbox_unchecked.png + qss/light/checkbox_unchecked@2x.png + qss/light/checkbox_unchecked_disabled.png + qss/light/checkbox_unchecked_disabled@2x.png + qss/light/checkbox_unchecked_focus.png + qss/light/checkbox_unchecked_focus@2x.png + qss/light/checkbox_unchecked_pressed.png + qss/light/checkbox_unchecked_pressed@2x.png + qss/light/radio_checked.png + qss/light/radio_checked@2x.png + qss/light/radio_checked_disabled.png + qss/light/radio_checked_disabled@2x.png + qss/light/radio_checked_focus.png + qss/light/radio_checked_focus@2x.png + qss/light/radio_checked_pressed.png + qss/light/radio_checked_pressed@2x.png + qss/light/radio_unchecked.png + qss/light/radio_unchecked@2x.png + qss/light/radio_unchecked_disabled.png + qss/light/radio_unchecked_disabled@2x.png + qss/light/radio_unchecked_focus.png + qss/light/radio_unchecked_focus@2x.png + qss/light/radio_unchecked_pressed.png + qss/light/radio_unchecked_pressed@2x.png + qss/light/toggle_checked.png + qss/light/toggle_checked@2x.png + qss/light/toggle_checked_disabled.png + qss/light/toggle_checked_disabled@2x.png + qss/light/toggle_checked_focus.png + qss/light/toggle_checked_focus@2x.png + qss/light/toggle_pressed.png + qss/light/toggle_pressed@2x.png + qss/light/toggle_unchecked.png + qss/light/toggle_unchecked@2x.png + qss/light/toggle_unchecked_disabled.png + qss/light/toggle_unchecked_disabled@2x.png + qss/light/toggle_unchecked_focus.png + qss/light/toggle_unchecked_focus@2x.png + + diff --git a/sources/CMakeLists.txt b/sources/CMakeLists.txt new file mode 100644 index 0000000..bfbbda6 --- /dev/null +++ b/sources/CMakeLists.txt @@ -0,0 +1,78 @@ + +cmake_minimum_required(VERSION 4.0) + +project(custom_example + VERSION 1.0 + DESCRIPTION "Example Custom style application" + LANGUAGES CXX +) + +include(${CMAKE_CURRENT_SOURCE_DIR}/../_cmake/app_settings.cmake) + +find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS + Core Widgets +) + +set(PROJECT_SOURCES + main.cpp + main_window.cpp + main_window.h + main_window.ui + ${COMMON_SOURCES_DIR}/application_config.h + ${COMMON_SOURCES_DIR}/application_config.cpp +) + +set(PROJECT_RESOURCES + ${RESOURCES_DIR}/main.qrc + ${RESOURCES_DIR}/icons.qrc + ${RESOURCES_DIR}/style.qrc +) + +if(CMAKE_SYSTEM_NAME STREQUAL "Windows") + set(PROJECT_RC_FILES + ${RESOURCES_DIR}/main_icon.rc + ${CMAKE_CURRENT_BINARY_DIR}/versioninfo.rc + ) +endif() + +if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) + qt_add_executable(${PROJECT_NAME} + MANUAL_FINALIZATION + ${PROJECT_SOURCES} + ${PROJECT_RESOURCES} + ${PROJECT_RC_FILES} + ) +else() + add_executable(${PROJECT_NAME} + ${PROJECT_SOURCES} + ${PROJECT_RESOURCES} + ${PROJECT_RC_FILES} + ) +endif() + +include(${CMAKE_INC_DIR}/target_options.cmake) + +target_link_libraries(${PROJECT_NAME} PRIVATE + Qt${QT_VERSION_MAJOR}::Core + Qt${QT_VERSION_MAJOR}::Widgets +) + +target_include_directories(${PROJECT_NAME} PRIVATE + ${SYSTEM_INCLUDE_DIR} + ${CMAKE_CURRENT_BINARY_DIR} + ${COMMON_SOURCES_DIR} +) + +if(CMAKE_SYSTEM_NAME STREQUAL "Windows") + set_target_properties(${PROJECT_NAME} PROPERTIES + WIN32_EXECUTABLE TRUE + ) +endif() + +if(QT_VERSION_MAJOR EQUAL 6) + qt_finalize_executable(${PROJECT_NAME}) +endif() + +include(${CMAKE_INC_DIR}/post_build.cmake) + + diff --git a/sources/main.cpp b/sources/main.cpp new file mode 100644 index 0000000..b6dd8c6 --- /dev/null +++ b/sources/main.cpp @@ -0,0 +1,22 @@ +#include "main_window.h" +#include +#include "application_config.h" + +//============================================================================== +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + + Application::initialize(); + Application::installTranslations(); + Application::updateApplicationStyle(); + + MainWindow w; + + w.show(); + a.setQuitOnLastWindowClosed(true); + + return a.exec(); +} +//============================================================================== + diff --git a/sources/main_window.cpp b/sources/main_window.cpp new file mode 100644 index 0000000..e611537 --- /dev/null +++ b/sources/main_window.cpp @@ -0,0 +1,70 @@ +/**************************************************************************** +** Copyright (c) 2025 Evgeny Teterin (nayk) +** All right reserved. +** +** 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. +** +****************************************************************************/ +#include "main_window.h" +#include "./ui_main_window.h" +#include + +#include "application_config.h" + +//============================================================================== +MainWindow::MainWindow(QWidget *parent) + : QMainWindow(parent) + , ui(new Ui::MainWindow) +{ + ui->setupUi(this); + this->setWindowTitle( qApp->applicationName() ); + connect(ui->radioButtonSystem, &QRadioButton::toggled, + this, &MainWindow::radioButtonToggled); + connect(ui->radioButtonLight, &QRadioButton::toggled, + this, &MainWindow::radioButtonToggled); + connect(ui->radioButtonDark, &QRadioButton::toggled, + this, &MainWindow::radioButtonToggled); + connect(ui->actionExit, &QAction::triggered, + this, &QMainWindow::close); +} +//============================================================================== +MainWindow::~MainWindow() +{ + delete ui; +} +//============================================================================== +void MainWindow::radioButtonToggled(bool checked) +{ + Q_UNUSED(checked) + + Application::AppTheme theme {Application::SystemTheme}; + + if (ui->radioButtonLight->isChecked()) + theme = Application::LightTheme; + else if (ui->radioButtonDark->isChecked()) + theme = Application::DarkTheme; + + Application::updateApplicationStyle(theme); + QApplication::processEvents(QEventLoop::ExcludeUserInputEvents); +} +//============================================================================== + +//============================================================================== + diff --git a/sources/main_window.h b/sources/main_window.h new file mode 100644 index 0000000..920f0f0 --- /dev/null +++ b/sources/main_window.h @@ -0,0 +1,55 @@ +/**************************************************************************** +** Copyright (c) 2025 Evgeny Teterin (nayk) +** All right reserved. +** +** 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. +** +****************************************************************************/ +#pragma once +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include + +//============================================================================== +QT_BEGIN_NAMESPACE +namespace Ui { +class MainWindow; +} +QT_END_NAMESPACE + +//============================================================================== +class MainWindow : public QMainWindow +{ + Q_OBJECT + +public: + MainWindow(QWidget *parent = nullptr); + ~MainWindow(); + +private: + Ui::MainWindow *ui; + +private slots: + void radioButtonToggled(bool checked); +}; + +#endif // MAINWINDOW_H +//============================================================================== diff --git a/sources/main_window.ui b/sources/main_window.ui new file mode 100644 index 0000000..806ae86 --- /dev/null +++ b/sources/main_window.ui @@ -0,0 +1,298 @@ + + + MainWindow + + + + 0 + 0 + 579 + 443 + + + + MainWindow + + + + :/images/main_icon.png:/images/main_icon.png + + + + + + + + 0 + 0 + + + + Текущий стиль оформления + + + + + + + 110 + 0 + + + + Системный + + + true + + + buttonGroup + + + + + + + + 110 + 0 + + + + Светлый + + + buttonGroup + + + + + + + + 110 + 0 + + + + Тёмный + + + buttonGroup + + + + + + + Qt::Orientation::Horizontal + + + + 186 + 20 + + + + + + + + + + + + 0 + 0 + + + + Пример отображения контролов + + + + + + + + + + CheckBox 1 + + + true + + + + + + + CheckBox 2 + + + + + + + 99999 + + + 12345 + + + + + + + + Item 1 + + + + + Item 2 + + + + + Item 3 + + + + + + + + + + + + + + TextLabel + + + + + + + Text string + + + + + + + ... + + + + + + + + + + + PushButton 1 + + + + + + + PushButton 2 + + + + + + + PushButton 3 + + + + + + + PushButton 4 + + + + + + + PushButton 5 + + + + + + + PushButton 6 + + + + + + + + + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css"> +p, li { white-space: pre-wrap; } +hr { height: 1px; border-width: 0; } +li.unchecked::marker { content: "\2610"; } +li.checked::marker { content: "\2612"; } +</style></head><body style=" font-family:'Segoe UI'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Text example</p></body></html> + + + + + + + + + + + + + 0 + 0 + 579 + 21 + + + + + Файл + + + + + + + + + + :/icons/shutdown-40.png:/icons/shutdown-40.png + + + Выход + + + + + + + + + + + +