From 3fdca238b7e4cf205b047ef11e48c73eb41d8a3b Mon Sep 17 00:00:00 2001 From: ffiirree Date: Thu, 13 Apr 2023 18:08:51 +0800 Subject: [PATCH] #40. editing menu --- languages/capturer_en_US.ts | 94 +++++++++++++-------------- languages/capturer_zh_CN.ts | 94 +++++++++++++-------------- src/capturer-dark.qss | 16 ++++- src/capturer-light.qss | 14 +++- src/capturer.qrc | 30 ++++++++- src/capturer.qss | 46 ++++++++----- src/menu/menu-dark.qss | 40 ++++++++++-- src/menu/menu-light.qss | 40 ++++++++++-- src/menu/menu.qss | 70 ++++++++++---------- src/menu/stylemenu.cpp | 2 +- src/res/checkbox-checked.png | Bin 0 -> 2596 bytes src/res/checkbox-unchecked-dark.png | Bin 0 -> 2336 bytes src/res/checkbox-unchecked-hover.png | Bin 0 -> 2319 bytes src/res/checkbox-unchecked-light.png | Bin 0 -> 2285 bytes src/res/dot-1-dark.png | Bin 0 -> 1952 bytes src/res/dot-1-light.png | Bin 0 -> 1965 bytes src/res/dot-1.png | Bin 0 -> 1892 bytes src/res/dot-2-dark.png | Bin 0 -> 2630 bytes src/res/dot-2-light.png | Bin 0 -> 2696 bytes src/res/dot-2.png | Bin 0 -> 2460 bytes src/res/dot-3-dark.png | Bin 0 -> 3127 bytes src/res/dot-3-light.png | Bin 0 -> 3182 bytes src/res/dot-3.png | Bin 0 -> 2826 bytes src/res/dot-4-dark.png | Bin 0 -> 2566 bytes src/res/dot-4-light.png | Bin 0 -> 2495 bytes src/res/dot-4.png | Bin 0 -> 2442 bytes src/res/dot-5-dark.png | Bin 0 -> 3781 bytes src/res/dot-5-light.png | Bin 0 -> 3915 bytes src/res/dot-5.png | Bin 0 -> 3396 bytes src/res/dot-6-dark.png | Bin 0 -> 4057 bytes src/res/dot-6-light.png | Bin 0 -> 4179 bytes src/res/dot-6.png | Bin 0 -> 3652 bytes src/res/dot-7-dark.png | Bin 0 -> 4687 bytes src/res/dot-7-light.png | Bin 0 -> 4783 bytes src/res/dot-7.png | Bin 0 -> 4175 bytes src/res/dot-8-dark.png | Bin 0 -> 5127 bytes src/res/dot-8-light.png | Bin 0 -> 5158 bytes src/res/dot-8.png | Bin 0 -> 4375 bytes src/res/spin_down.png | Bin 205 -> 0 bytes src/res/spin_up.png | Bin 213 -> 0 bytes src/setting/settingdialog.cpp | 49 ++++++++------ src/setting/settingdialog.h | 14 ++-- src/setting/settingswindow.qss | 17 ++--- src/widgets/colorpanel.cpp | 2 +- src/widgets/widthbutton.cpp | 19 +++--- src/widgets/widthbutton.h | 19 ++++-- 46 files changed, 348 insertions(+), 218 deletions(-) create mode 100644 src/res/checkbox-checked.png create mode 100644 src/res/checkbox-unchecked-dark.png create mode 100644 src/res/checkbox-unchecked-hover.png create mode 100644 src/res/checkbox-unchecked-light.png create mode 100644 src/res/dot-1-dark.png create mode 100644 src/res/dot-1-light.png create mode 100644 src/res/dot-1.png create mode 100644 src/res/dot-2-dark.png create mode 100644 src/res/dot-2-light.png create mode 100644 src/res/dot-2.png create mode 100644 src/res/dot-3-dark.png create mode 100644 src/res/dot-3-light.png create mode 100644 src/res/dot-3.png create mode 100644 src/res/dot-4-dark.png create mode 100644 src/res/dot-4-light.png create mode 100644 src/res/dot-4.png create mode 100644 src/res/dot-5-dark.png create mode 100644 src/res/dot-5-light.png create mode 100644 src/res/dot-5.png create mode 100644 src/res/dot-6-dark.png create mode 100644 src/res/dot-6-light.png create mode 100644 src/res/dot-6.png create mode 100644 src/res/dot-7-dark.png create mode 100644 src/res/dot-7-light.png create mode 100644 src/res/dot-7.png create mode 100644 src/res/dot-8-dark.png create mode 100644 src/res/dot-8-light.png create mode 100644 src/res/dot-8.png delete mode 100644 src/res/spin_down.png delete mode 100644 src/res/spin_up.png diff --git a/languages/capturer_en_US.ts b/languages/capturer_en_US.ts index 9dc1e14..d67c34e 100644 --- a/languages/capturer_en_US.ts +++ b/languages/capturer_en_US.ts @@ -234,61 +234,61 @@ - + Language - + Auto - + Dark - + Light - + Theme - + Screenshot - - - + + + Border Width - - - + + + Border Color - - - + + + Line Type - - - + + + Mask Color @@ -298,56 +298,56 @@ - - - + + + Appearance: - - + + Show Region - - + + Params: - - + + Framerate - + Encoder - - + + High - - + + Medium - - + + Low - - + + Quality @@ -362,17 +362,17 @@ - + Microphones - + Speakers - + Cameras @@ -382,22 +382,22 @@ - + Paste - + Hide/Show All Images - + Video Recording - + Gif Recording @@ -407,22 +407,22 @@ - + Version - + Copyright © 2018 - 2023 ffiirree. All rights reserved - + Run on Startup - + Settings File diff --git a/languages/capturer_zh_CN.ts b/languages/capturer_zh_CN.ts index 840a5c2..ec07721 100644 --- a/languages/capturer_zh_CN.ts +++ b/languages/capturer_zh_CN.ts @@ -234,60 +234,60 @@ 通用 - + Language 语言 - + Dark 暗色 - + Light 亮色 - + Theme 主题 - + Screenshot 截图 - - + + Params: 参数: - - + + Framerate 帧率 - + Microphones 麦克风 - + Speakers 扬声器 - + Cameras 摄像头 - + Encoder 编码器 @@ -297,82 +297,82 @@ 录屏 - + Run on Startup 开机启动 - + Settings File 设置文件 - + Auto 跟随系统 - - - + + + Border Width 边框宽度 - - - + + + Border Color 边框颜色 - - - + + + Line Type 线条类型 - - - + + + Mask Color 遮罩颜色 - - - + + + Appearance: 界面: - - + + Show Region 显示区域 - - + + High - - + + Medium - - + + Low - - + + Quality 质量 @@ -392,22 +392,22 @@ 快捷键 - + Paste 粘贴 - + Hide/Show All Images 隐藏/显示全部贴图 - + Video Recording 录制视频 - + Gif Recording 录制GIF @@ -417,12 +417,12 @@ 关于 - + Version 版本 - + Copyright © 2018 - 2023 ffiirree. All rights reserved diff --git a/src/capturer-dark.qss b/src/capturer-dark.qss index e73fdbb..c7b5f68 100644 --- a/src/capturer-dark.qss +++ b/src/capturer-dark.qss @@ -1,3 +1,8 @@ +/*///////////////////////////////////////////////////////////////*/ +QCheckBox::indicator { + image: url(:/icon/res/checkbox-unchecked-light); +} + /*///////////////////////////////////////////////////////////////*/ QComboBox { border: 1px solid #323232; @@ -23,7 +28,6 @@ QComboBox:on { } QComboBox QAbstractItemView { - outline: 0px; border: 1px solid #e4e7ed; } @@ -77,7 +81,7 @@ QSpinBox:focus { QSpinBox::down-button, QSpinBox::up-button { - background-color: #292929; + background-color: #2b2b2b; } QSpinBox::up-button:hover, @@ -87,6 +91,14 @@ QSpinBox::down-button:pressed { background-color: #262626; } +QSpinBox::up-arrow { + image: url(:/icon/res/arrow_up-light); +} + +QSpinBox::down-arrow { + image: url(:/icon/res/arrow_down-light); +} + /*///////////////////////////////////////////////////////////////*/ QMenu { background-color: #232323; diff --git a/src/capturer-light.qss b/src/capturer-light.qss index dde3e85..1aa2efe 100644 --- a/src/capturer-light.qss +++ b/src/capturer-light.qss @@ -1,3 +1,8 @@ +/*///////////////////////////////////////////////////////////////*/ +QCheckBox::indicator { + image: url(:/icon/res/checkbox-unchecked-dark); +} + /*///////////////////////////////////////////////////////////////*/ QComboBox { border: 1px solid #e9e8e7; @@ -24,7 +29,6 @@ QComboBox:on { } QComboBox QAbstractItemView { - outline: 0px; border: 1px solid #e4e7ed; } @@ -96,6 +100,14 @@ QSpinBox::down-button:pressed { background-color: #e0e0e0; } +QSpinBox::up-arrow { + image: url(:/icon/res/arrow_up); +} + +QSpinBox::down-arrow { + image: url(:/icon/res/arrow_down); +} + /*///////////////////////////////////////////////////////////////*/ QMenu { background-color: #f9f9f9; diff --git a/src/capturer.qrc b/src/capturer.qrc index 1bb4e1d..7b9274b 100644 --- a/src/capturer.qrc +++ b/src/capturer.qrc @@ -51,8 +51,6 @@ res/arrow_up.png res/arrow_down-light.png res/arrow_up-light.png - res/spin_down.png - res/spin_up.png res/pause-dark.png res/play-dark.png res/microphone-dark.png @@ -79,6 +77,34 @@ res/camera-fill-dark.png res/camera-light.png res/camera-fill-light.png + res/dot-1-light.png + res/dot-2-light.png + res/dot-3-light.png + res/dot-4-light.png + res/dot-5-light.png + res/dot-6-light.png + res/dot-7-light.png + res/dot-8-light.png + res/dot-1-dark.png + res/dot-2-dark.png + res/dot-3-dark.png + res/dot-4-dark.png + res/dot-5-dark.png + res/dot-6-dark.png + res/dot-7-dark.png + res/dot-8-dark.png + res/dot-1.png + res/dot-2.png + res/dot-3.png + res/dot-4.png + res/dot-5.png + res/dot-6.png + res/dot-7.png + res/dot-8.png + res/checkbox-checked.png + res/checkbox-unchecked-dark.png + res/checkbox-unchecked-hover.png + res/checkbox-unchecked-light.png menu/menu.qss diff --git a/src/capturer.qss b/src/capturer.qss index f2f397a..c8577ea 100644 --- a/src/capturer.qss +++ b/src/capturer.qss @@ -3,6 +3,23 @@ QWidget { font-family: "Microsoft YaHei"; } +QCheckBox { + spacing: 0px; +} + +QCheckBox::indicator { + height: 1.5em; + width: 1.5em; +} + +QCheckBox::indicator:checked { + image: url(:/icon/res/checkbox-checked); +} + +QCheckBox::indicator:unchecked:hover { + image: url(:/icon/res/checkbox-unchecked-hover); +} + /*///////////////////////////////////////////////////////////////*/ QComboBox { border-radius: 5px; @@ -14,7 +31,7 @@ QComboBox { QComboBox::drop-down { subcontrol-origin: padding; subcontrol-position: center right; - width: 24px; + width: 2em; padding: 4px 0; border-top-right-radius: 3px; @@ -22,7 +39,8 @@ QComboBox::drop-down { } QComboBox::down-arrow { - width: 24px; + width: 1.25em; + height: 1.25em; } QComboBox QAbstractItemView { @@ -59,39 +77,31 @@ QSpinBox { } QSpinBox::up-button { - subcontrol-origin: border; + subcontrol-origin: padding; subcontrol-position: top right; border: none; - border-radius: 5px; + border-top-right-radius: 5px; - width: 20px; - margin-right: 2px; - margin-top: 2px; - margin-bottom: 1px; + width: 2em; } QSpinBox::up-arrow { - image: url(:/icon/res/spin_up.png); - width: 20px; + width: 2em; } QSpinBox::down-button { - subcontrol-origin: border; + subcontrol-origin: padding; subcontrol-position: bottom right; border: none; - border-radius: 5px; + border-bottom-right-radius: 5px; - width: 20px; - margin-right: 2px; - margin-bottom: 2px; - margin-top: 1px; + width: 2em; } QSpinBox::down-arrow { - image: url(:/icon/res/spin_down.png); - width: 20px; + width: 2em; } /*///////////////////////////////////////////////////////////////*/ diff --git a/src/menu/menu-dark.qss b/src/menu/menu-dark.qss index 397c440..ed57cbd 100644 --- a/src/menu/menu-dark.qss +++ b/src/menu/menu-dark.qss @@ -127,14 +127,42 @@ ImageEditMenu QCheckBox#save-btn::indicator { /*///////////////////////////////// Style Menu //////////////////////////////*/ -StyleMenu QCheckBox#fill-btn::indicator { - image: url(:/icon/res/fill-light) -} - StyleMenu QCheckBox#width-btn:unchecked:hover { background-color: #323232; } -StyleMenu QCheckBox#width-btn::indicator:unchecked { - background-color: #e6e6e6; +StyleMenu QCheckBox#width-btn[width="1"]::indicator { + image: url(:/icon/res/dot-1-light); +} + +StyleMenu QCheckBox#width-btn[width="2"]::indicator { + image: url(:/icon/res/dot-2-light); +} + +StyleMenu QCheckBox#width-btn[width="3"]::indicator { + image: url(:/icon/res/dot-3-light); +} + +StyleMenu QCheckBox#width-btn[width="4"]::indicator { + image: url(:/icon/res/dot-4-light); +} + +StyleMenu QCheckBox#width-btn[width="5"]::indicator { + image: url(:/icon/res/dot-5-light); +} + +StyleMenu QCheckBox#width-btn[width="6"]::indicator { + image: url(:/icon/res/dot-6-light); +} + +StyleMenu QCheckBox#width-btn[width="7"]::indicator { + image: url(:/icon/res/dot-7-light); +} + +StyleMenu QCheckBox#width-btn[width="8"]::indicator { + image: url(:/icon/res/dot-8-light); +} + +StyleMenu QCheckBox#fill-btn::indicator { + image: url(:/icon/res/fill-light) } \ No newline at end of file diff --git a/src/menu/menu-light.qss b/src/menu/menu-light.qss index 1f9f307..6ee0a65 100644 --- a/src/menu/menu-light.qss +++ b/src/menu/menu-light.qss @@ -127,10 +127,6 @@ ImageEditMenu QCheckBox#save-btn::indicator { /*///////////////////////////////// Style Menu //////////////////////////////*/ -StyleMenu QCheckBox#fill-btn::indicator { - image: url(:/icon/res/fill-dark) -} - StyleMenu QCheckBox#width-btn { background-color: #f9f9f9; } @@ -139,6 +135,38 @@ StyleMenu QCheckBox#width-btn:unchecked:hover { background-color: #e6e6e6; } -StyleMenu QCheckBox#width-btn::indicator:unchecked { - background-color: #2c2c2c; +StyleMenu QCheckBox#width-btn[width="1"]::indicator { + image: url(:/icon/res/dot-1-dark); +} + +StyleMenu QCheckBox#width-btn[width="2"]::indicator { + image: url(:/icon/res/dot-2-dark); +} + +StyleMenu QCheckBox#width-btn[width="3"]::indicator { + image: url(:/icon/res/dot-3-dark); +} + +StyleMenu QCheckBox#width-btn[width="4"]::indicator { + image: url(:/icon/res/dot-4-dark); +} + +StyleMenu QCheckBox#width-btn[width="5"]::indicator { + image: url(:/icon/res/dot-5-dark); +} + +StyleMenu QCheckBox#width-btn[width="6"]::indicator { + image: url(:/icon/res/dot-6-dark); +} + +StyleMenu QCheckBox#width-btn[width="7"]::indicator { + image: url(:/icon/res/dot-7-dark); +} + +StyleMenu QCheckBox#width-btn[width="8"]::indicator { + image: url(:/icon/res/dot-8-dark); +} + +StyleMenu QCheckBox#fill-btn::indicator { + image: url(:/icon/res/fill-dark) } \ No newline at end of file diff --git a/src/menu/menu.qss b/src/menu/menu.qss index 155a28e..6c467ec 100644 --- a/src/menu/menu.qss +++ b/src/menu/menu.qss @@ -4,10 +4,6 @@ RecordMenu QWidget#menu { border-radius: 5px; } -RecordMenu QCheckBox { - spacing: 0px; -} - RecordMenu QCheckBox::indicator { font-size: 9pt; @@ -31,10 +27,6 @@ RecordMenu QCheckBox#stop-btn::indicator { /*///////////////////////////////// Edit Menu //////////////////////////////*/ -ImageEditMenu QCheckBox { - spacing: 0px; -} - ImageEditMenu QCheckBox::indicator { font-size: 9pt; @@ -88,52 +80,64 @@ ImageEditMenu QCheckBox#ok-btn::indicator { } /*///////////////////////////////// Style Menu //////////////////////////////*/ -StyleMenu { - font-size: 9pt; - max-height: 2.5em; -} - StyleMenu QComboBox { font-size: 9pt; max-width: 10em; min-width: 4em; } -StyleMenu QCheckBox { +StyleMenu QCheckBox::indicator { font-size: 9pt; - spacing: 0px; - - max-width: 2.5em; - max-height: 2.5em; } -StyleMenu QCheckBox::indicator { - font-size: 9pt; +StyleMenu QCheckBox#width-btn:checked { + background-color: #409eff; +} +StyleMenu QCheckBox#width-btn::indicator { height: 1.5em; width: 1.5em; padding: 0.5em; + + image: url(:/icon/res/dot-2); } -StyleMenu QCheckBox#width-btn:checked { - background-color: #409eff; +StyleMenu QCheckBox#width-btn[width="1"]::indicator:checked { + image: url(:/icon/res/dot-1); } -StyleMenu QCheckBox#width-btn::indicator { - padding: 0px; - margin: 0px; +StyleMenu QCheckBox#width-btn[width="2"]::indicator:checked { + image: url(:/icon/res/dot-2); +} + +StyleMenu QCheckBox#width-btn[width="3"]::indicator:checked { + image: url(:/icon/res/dot-3); +} + +StyleMenu QCheckBox#width-btn[width="4"]::indicator:checked { + image: url(:/icon/res/dot-4); +} - subcontrol-position: center center; - background-color: white; +StyleMenu QCheckBox#width-btn[width="5"]::indicator:checked { + image: url(:/icon/res/dot-5); +} + +StyleMenu QCheckBox#width-btn[width="6"]::indicator:checked { + image: url(:/icon/res/dot-6); +} + +StyleMenu QCheckBox#width-btn[width="7"]::indicator:checked { + image: url(:/icon/res/dot-7); +} - height: 0.5em; - width: 0.5em; - margin: 1em; - border-radius: 0.25em; +StyleMenu QCheckBox#width-btn[width="8"]::indicator:checked { + image: url(:/icon/res/dot-8); } -StyleMenu QCheckBox#width-btn::indicator:checked { - background-color: white; +StyleMenu QCheckBox#fill-btn::indicator { + height: 1.5em; + width: 1.5em; + padding: 0.5em; } StyleMenu QCheckBox#fill-btn::indicator:checked { diff --git a/src/menu/stylemenu.cpp b/src/menu/stylemenu.cpp index b865fe8..89f3af9 100644 --- a/src/menu/stylemenu.cpp +++ b/src/menu/stylemenu.cpp @@ -11,7 +11,7 @@ StyleMenu::StyleMenu(int buttons, QWidget* parent) auto group = new ButtonGroup(this); if (buttons & WIDTH_BTN) { - width_btn_ = new WidthButton(3, true, this); + width_btn_ = new WidthButton(true, this); width_btn_->setObjectName("width-btn"); width_btn_->setCheckable(true); width_btn_->setChecked(true); diff --git a/src/res/checkbox-checked.png b/src/res/checkbox-checked.png new file mode 100644 index 0000000000000000000000000000000000000000..bfe149e3525a5490d019fc087be23dd50e999f98 GIT binary patch literal 2596 zcmbuB`9IX#AIE2=kK2bXKE_@XpV1_;G*LH1d?w2vBU`d%S130wg@iuHlzotEzr~ki zEq9Q$tV1G8wo6K=`5JsxWbc0NKk)tK{&3EFIgi(QpT~Ke$NPEioo5&c3hWoa;c$Y+ zbbU+Aa{d|MPuN_3u_6yM_}?szXt;_#5*LT#e`lVO9RqFY+2UCE!#qQ zxdxU-dbEkCe|Sd;rJ}tNQOMQxOpWW9anJWs%V;1=jMZ)lQB+dTzTblfb12joKM^1e zGaT|+2y8@f$Q5A_26b?FY5WaH`jnw2ITB_Fm}RLEK)H{d3P%8_-T0xgl_3uCn3S4} z#-SRDC%k(=m>GYdAP3Tej>O2DN#lVOfA=&|0ytCnrcm)vB&_BaA3(z)IbvBSJON0* zGr@v^Nm6O4Me#V4Q+K?F9}oCjUKvai(ffZz|4>0xBf>#)82J5iek=8LM8x``LoXgX z0!u=7KI(pI5gy8?`gJ*q&NCfaV2k@()lO1HUm@CdTk$nQHFfCvfxe~hu9GqbPt;07 z`9h$N^(FzzCQ*7~o@I7vn*j22LZ`1vr*cnH|Fn-ouoLRIt1UeAzlLAvWnJ+vu&sVQ z=~O&?h?C*$+(z}+@*IhK%dmdyXBi7OWG|DWU-_7Jw(|JTwFLGB)2X4#iQY40yov?GWiA@@{*MFfa&8y<208M#~Bmo#ZQ!6|EE8 zdL6?@G(|L;o;`k?q}l7YF#)!6)01l0y#dYH={tL4e?hN*?|Bv!*6SH~5QWc7lyoVZ zRh%sYJ}52f)La?QsVB}Ze^}A>Oi{aK4xCdRF24aSxvUOn1D=s>7SyOwh8?U|ZFtoRpHb>bnZH{~96j+ELEPv1*kKqGH!X^HWXde&>678`VYE zc>`{C#T*gIYdcIkKyl>gt~?{%U7~%BKMS0xG>`KrBgd|CZGafqV4`ERP%9uO)|=T7 zySNv*8q$zm?x{J3OtMR_wU)oS1J~@#_|(YE>OrOn6w-{z$2f0hJV#w|S3_3rM@ z{LIwANYX;YO{8B)FR}I>nKO~7MQZuUv77~WZFM+XefnO|6xt4xYW>ERyzEcG+|NVB z7m8a)40Y1yK16{`tmetZ6Oi|J!+E*uK=^E(7{yr080^7bt z+sa;Y(VqvqJ-X@IvY{YzoAkQ_ah9$mf>KsW|M8A4wY&sby;Th3 z?}ImA-Qzrr+(>{xRz@Z5+r~j=zwCplL8W(Mu-LvkaL1d@ip95{(RTepD}{=H;6LHn-6VJa3M{Vs47 z*!Z&GD^;{G*$qvL-$?{MaAhjAMk(X2^#UJn^y*~179!?c0+XP&vV(hGVGHh)WOOi(nv90Uz-C%*OV?OB48Y}*&7g+lEWW6)7j zzxrdNg(3d(iMov@g3s_-83uPwbTDC+Tpg6tw}{VB6C^dX1d)2^VlDxA3N(t zJ(2z)VEd?BSO0b>&%18l!zpRP=!{C zbp!wvwq&tVy{HA_k)e4onyRu&I%D~mh||6SqTJ&WoN Vd}F<9GT65dXKcXGub{c0e*<=HnO*<@ literal 0 HcmV?d00001 diff --git a/src/res/checkbox-unchecked-dark.png b/src/res/checkbox-unchecked-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..b565b9402bab8950e22aa7e34ec062874e51636d GIT binary patch literal 2336 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 abP3LhaZ#tdS{0(&aDewVUr!7{@tZucp#-3 zr?ehKX!*)8LJtex5mTIoED>HgcK%@!8iZyzE&F-};lIk)GU0OhKo)bVBXOi#EtxKf z844W?%x26)%&0rqs)@?{$%!7fxl&AH0kiqZNPsDqui~1#;6<&<`%x(V_{mKnD~J2w z&ujC-+)ji~Lw8 z)E8Tp>B6w%zS1a?iS9=)8^4Gv31eTS+7z$f6W((sXHSSc+G4mX4Rk%y-lNHJa2JcT z2)P>(E5->-&kQRHo1>;jaStq3_xR*qpAst$KbzgvD-j4zYUf1uTF*^k$UDVEjzXL|Nl0GqeB_vdn<8z zA3D!xZ!Cgb8=C{lKppPQ#X~%OfYP-uigD4S|m1I_t~QUzMPG8naxq6Dz@r*lkuF~2A=%o=*6A%9#)a2bb_r?({~ze;UUl0 z152)$f`RJ zO2o0AElq6un?L1$#g<+u+_|(+A|kxfXurulGPqUu7x?sqq zyw58JTSIK`WR9>TzGjf#hx9CVw`Zo>yi}Y?R@BCN&kXmsWaVd+RX1Zuq1h2-C+7I{ z@yfk_2CkG=v?-&XcAT?LRHQ{fN24!2JRJm=CZE^Is+T?YNDHTIr0ojOOB@os9>oib z7Yo3C15}&?-mm{<^|d`pBR|P;&T8f3*GmOPy$x7kSTTMEJhozpZQz1U>DfJ`G0O>+prD(XMY3MV+G_?opViKxR;7{_Laj`25`) zg0;4ZPjBuG{U#$#ZBP^)3cGgScCD%5^jLwGU+!SV%`xmblLd`;o*z4A%3asYtGT3n zh52DQ?O9lWeRqbH=kR6!^vtPCJ=~jDov#^U$GNtHJSrtMAhYDutXD( zPP4w{{{g@+#PjVl@PH=F?kYoO?=U<01`P{Ho$g0^kkK2tnz~(x2Kov!@h}1CR$V48 z??i#K;TPGFc#yQ$Rd2omz>W{;t8KBMp*T-FIUG=k{ld%F(BMEfQN8REA^mR^QWq1HQ(mNB{r; literal 0 HcmV?d00001 diff --git a/src/res/dot-1-dark.png b/src/res/dot-1-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..f9722e426ca9bbfdd883bf43c485150e6fe162b3 GIT binary patch literal 1952 zcmeAS@N?(olHy`uVBq!ia0vp^CqS5k4M?tyST_$yF%}28J29*~C-ahlfj!F8#WAEJ z?(N;cJYjZ`)`uH8erMdDU{I~0of*lQs(NAS6x#>l94$mbD2e zoS3la=o&!KYo6GeqX<2)nfT+3jQ(wKUVyCSYx-}UWTte&T!kGHJfx!fBN|B z*)!R|Z34I7OEkSX{%Q8?y!8_A|G&=K_*Eoty_US+^2@u|8uwMpFgDrr-Cy=H+OqC; z$%nS)u)w^$ytv)7avHv#aOU{r(eS-@z5dE+sXxE&do1_syGo_T##EMQ{R8HLgX)J*PuIUb`{Vp3{*80aKj*)G{d)eSe#1(0N2j;% zYws6c&%AeU$NrBuJ(qbjrR>o2FZ}xB_{w^lxqj=N1KrlEdaU^O_+tg%+I`t?v%@F; z?G#R_Uv_$R`1-midmf%O|E`^yUu(C?zOd=d`4Z24#b0|be>Kv+pz6pJp#R}hR;~Hz z=zWcPoI(v%oQ~HdmS6UqZ~dL~#W{!huioCZ_PgEt>s+l+O8SE7B2QjlUw{Ai-!-+| zswei@h&R3A`EuwrhmghrTMvd;tzkkc4F81kKmVG$#$n>=O#&(hzE;@mi=FoL`GHr~ z;c|TK=JV}pe|?zJZwV|ogfe~#eOJu8!0fuKDP_UB==q;gr%eyvDHrSLlr#U6)+6Ra z0iEjCs&*_H+A3_(;?nvWP z@@RYAy#3$T`|@j=>r($7{E@`W(z$T!4ra!tl8nGM3C5-)7ozSoGB{do(Qxiza7@b3 zedo}iAR9GB5m-POZV@Y2aG1cSdrCmrVS+?dx3z$RN4r>R2e6dmS$kBLLtu$>x6u&} z0hP9EkN8+PE-iGGOk&{>a?UPfXJUDIVG)lZ)2MaBGB6LwYihnb*=N)y1gvryJYD@< J);T3K0RUUJEIj}K literal 0 HcmV?d00001 diff --git a/src/res/dot-1-light.png b/src/res/dot-1-light.png new file mode 100644 index 0000000000000000000000000000000000000000..0a59b6676d35b99138ca366d53170761b20b5a27 GIT binary patch literal 1965 zcmeAS@N?(olHy`uVBq!ia0vp^CqS5k4M?tyST_$yF%}28J29*~C-ahlfj!;R#WAEJ z?(N;cyxVC4u8BswC;XZ8MkUg7(o~a3&r4IUSg(v%d3#8UV?)EmTVj@vPRN}}U%=1$ zPxAbn)y!R!*7P*Xvj|j7JkY_*#IeVxK|xNIV~-P%lH(9KlFZO3!5BV4!aUTMLtu&L zg=;;63LZVPSE;dZTvEx%KE@%Sa?CeWn29A*Xp3nw3y09-Wve(Dn@l)w%`#+S=`0Ms z+QQ&CizWB01Y^^Y9V@ed=K3~mOY329Ou7?ds^~C5%`w{8twF&sZ`CXT1&_%K)=DZn zj9NDY1M`G6=dTj0+Bxn&cieva?*7S$x5pJuNZYcgDay&q@9%s3qf(;n<^KQwYFT-5w2$c=D-Q2o8tk*^&%WKefA8FKVCQQNfhSgV-K)|q|HYM5++6r_<#qA! z$*CLGS-MWhexbW!?);#?TOYi*rK}R^ty3^hfiWZ7tMB+@mE)%VtK)u`^8fz(@A9n5 zIkD~y3a=~HTGd*})b&38ksEsP)Zx#zC%;ck?bBCrn9#c5nw;C)i@nQTcA1E<4#kh!A7ud+1-*_tG>Yr89${!^Eh+Cs{ z;+VtovgMaw-u^Ss-Rb-D=y~U#%ioi~DQE7uE!|3Gf6>=VN9Luerg%=ac{Ld;0#(hutxbLP2%izXiU_b2{#7dg3s5*S$}f)0T%< zTJCC6*|_&<=n?4_Peq_i<6NuzkK&H(byN00njc8$f8&Boj4 zZ|tvG?+->9iCRtz*!79WaUIK!B{l!Vj=o%a-}j&0UEiNVuWrv#JYgoIUsm}kbn*2) z_K&(B>rJ}%jlpr-)5?v}AtLpL6@s~^7@L+P?7dU+&+Pll>Z<+wK0UqKyk2VW8KciE zjz%xnz4-fNzP&_EN-gV-CyRj=uc^&tVp%zN{>#an0xFUlzHQ|cSW;HE%wNr6Ldt<# z*MZcnpEK=dGB{3R%#NSU;F$G1{Z|UpsK(L2!I^SC@c&Hub@Jo(BaOiNm%-E3&t;uc GLK6URCtqj) literal 0 HcmV?d00001 diff --git a/src/res/dot-1.png b/src/res/dot-1.png new file mode 100644 index 0000000000000000000000000000000000000000..ff4e9fe896df55df85675c53bad5ec90c9aeacfb GIT binary patch literal 1892 zcmeAS@N?(olHy`uVBq!ia0vp^CqS5k4M?tyST_$yF%}28J29*~C-ahlfnCni#WAEJ z?(N;gyxVC4u7O4BC;etk-4f|Jd8$dQ=cdVN>N<7~Y)uMgD-7q$oRMK>{MBsyX!m(> zA=R08&Fwi9KIk;cO0x)5%wur;Q>O5NiLvR&SBD0LI(C5-f**K-9;an-FgEdMMxBvj zY`U^zrj%2If^(PHX14|f)4XME0tzQ4EIPVIP{E^j_DV$-4x=R*hS@9}quNGBkbIgg zQY&+O_wAK?Zh!xKJHIIEv468d{uk{6;Ya6lZ~xoz_xDeqefhVy{rkH+_xASM``7D# zR~j%j*+~2-l=1GU- ze*ars+PL#KhrkoNxTTBpi~fX5{rh@B=xKBMWbRJ8&0PwK$F@%oiD%|_p2Tovez=ed z&rgd!)#KT5VS7v3?tibXm+v#EvUP0wDt~?wzKv@K^t13#Zldqj%rC`ib+;(F>eK zh8MQJv*;_myK$Yp+|SP^pDSN~tajq7&vb>8w^rodC*Bgz z2@F@vg;H*RkDV|6o%6*}2l*f0-mO1(r}fv-TA?RN3-WbNRNp_pYg<55%<1CT1?$&u zjQ@G`NcFi13g0hS73w(pIqdo_a9!cM(C^xQb&mzJ&8uc#FW&^Q#G-Hi_T1kh5q~e8 z`dYh2pTF+RH-7gC4oCA#WFP%fzM$&J6mb0%`~EYZK51Q1c63UR|Ecqc`A|UT?QMc8 z$IEQHZ5~A(+3LQ*xryarT#5SR>E|wpi!}dTdzFQgd7tN|eRr$R*KRmBN7V9MK-E)2 zmP*wF#*fWCubp1I`k&oh*PoIf#ATc(a4XD<{CIe+Tm0vr9n#0=Hr75gWZ5b3Y-Z?s zfur#}^B8MB0{IdzZkCz{Ui-UgUS7iA&o3^YU3E9>i_Vn;g)E#7YuEgFSYN;4--nZP z?`R7!8v}*5ZsKQb`tmYp5(8rs%Yvwz?F^2;N;Ewi7=RvH`^LFJp?2346<|@txFYPE zqQeBcST7+3hY1WJ+P?)9Jm%}EasnxaRa0v@1eW+upTxo;pu%wVlpPDlrRCn9Oe`Ei t4Oyx3Oe`-iFI8b=8ntd%2IhhPeAkwpTQ2?PL(#E>3gKEJq+*F$ZY)h}X%GoYVoPrNU)+1nJm);`=a=Vm-sk9D=#Y={auMQlPoz*|qJd=SO!3*sKsbOjJAP^;pn+y0uLIA&XIv0Ocqj#Kg zyKn}s=+dd~$mhean22FI1IRDWhcFdtmqE7*%98pImnxD^Egi7Pm!ErH3!`=SUMLK2 z<#(#X&gi96UCr&azSD<8lUQq8Yrf2Y_NiO7ZDW%C!KfAYTymQ58+q7|SVYG`8F)az zW*bDbk{pz~o(dsFt2q8E8&Zq7IrS>m2?CZt2h5lN0`r}9WeLm?W&jf2os|c?=s9N$ zps;SYA?^BX2&pipykAic8gtm9*XU&GU)29anXahreC){zw2@f~kw~P>3LMOJZd(=K z{j;e_6rGYHl}uCPrGKEFFK+=OH}=fvg!79Rb?*rtG8Ev6I2W3qdFKK6w!6#fe2Mf| z0?oYCLlA$CvWx@jxMDR`RhmulfJqi(L&j(tHd)-Wg>S!@70lY8P@+NDoue;|1Jfu(It+Lc`V$^bVXWkgczBAv~!i^SlDE7{@*o|D}g|e73cYTM? z&3s(LCyfx$J?-Bgh_&Op9NejinY=}BtjUa54e1d0?U1JG1JnDk$ZGjm&iFz}V2Qha z`_vYp!OnqXgwPCbwURQzId5_V@pcs<`(1&hCtdP-NbkyQH``e3p$PGAp%-$HKVs)f zorZ_}iI9d0ySw5FhGzL7mWSL4o_GoYpY;bzUQeOPC+r$Dysg6l*wQp` zn~ucf=$pAp%HM3EGsz0AJ=gLG+4=ZOL_cZc%dgLht`Fi@da%Sx8jCJ72b? z90D~D_7^2sK^udau#j}e2VLApu+Ai8;jj4qf~l)nP!RXYQcB^dT?oPJ3?~{_d|7&k zj%(8fl|GWcmJw&G+TGdzSb!H086c~nrUZPWD;=mi*qZpq zJT;lXs=cINAR3poqgZH|uB0GPF0icqRl^&9E&PjZQSpmHKYQIel~l6GG4I>3T-WmW zSXNX+^UXe-;P=9Y+uuLogs6}jw3&Tv_^3>VvT>Au(=@-ba^{)G%d#=!IYF_yW8T7R z+_l8msy(FM`Up0?%9Q5o^B&DMBp>oW?tfQ-G-`hBPS0LJX8q(!T?T4)Y#ck-PVsfI z=ZSWkRMpfR0`E9J^gNx4I39r5s4Y^}^;6O%qFqcf81*W&CH_A%i28b>SXK(4JH=go zN>x??TY}r(u=jjB&}j4`nM@ws+TFjskaeqm@@P_0lA1^)5^OvQZIRQ>FiC0AlJz?J zfgqH>Jn)=Zwn|q-WUQqg^DKgpKCi!|#>fLfCPx=#8pWE8mu literal 0 HcmV?d00001 diff --git a/src/res/dot-2-light.png b/src/res/dot-2-light.png new file mode 100644 index 0000000000000000000000000000000000000000..ba23657bb244345d401bdb3e925766157982c385 GIT binary patch literal 2696 zcmeHJ`8V5%77q=+wu+tdn%JsLbkRPwy=qbvrM8BqgwohX5lcu)gN%xfJiM7oTD82I z;#D4sT7q!2Mby?-D?^ali;CE{XeKk~{rLWYIcI*j_jAv^=iVRg=iYnn1CMK06y=V| zfj}TdXD53vF|vObKw7M;Zd4bGK_cGk3KCR3sJjRP$swKX5!VR;D@8*&x}Vf3t5uC( zAEV&LZxc`h@HUscEVUY#CsOd;3s|ShltkWTDmcsdl9udrEdg|=*APySGS+)rqV9yy zM-zj5@j6|!`hwcIB^~@MB4;?Y(p_X#agY+giyvb0YT6gqT-{I#!XH53Zk4PT>0(g5 z1gSm>xWdw4{>LF=TLNGM0$KeT$9z>uVA?P|$HX8FW*&XrN-qs|jXeLzToU*z_~&WD zTLh1lyyGV$BQw!?3%CAj?QOr;vB6Y|+weGda*|(SjbGxuHE4;>g?&dAZLe@`Ov>ur zhJ}{hgcBKp>%bJ(+p$>{xocXsNd%@&D;>9OChc!7ev|7-oRCA%bW=NcBL1y2mYPU{ zUWQ;;s^I{hA&8)ba9Sq#9Qm=IqZ}cZ@{BMV7h)z;%7+)*jv)y|XS19}*4X(0N^){? zs$U$G&NX0@Z+GCAN0e-e2Dv6>nwo7}Z&re-CFk8X2KjuxCgW@CA`5~|m-R*A&vx&2 zOEwh}8Co-4wnMxEW*+%pUzo_azfJK5IE8j$+=)u(Tj;aFOv%}Jp zyNQvR{mNMB8+eS!Iz!N@V5C8B4^ZoBDG3VkSAJ%+G?g3Y?ZWXpb%6!%CeWY~P1yiq zELM&cu)69)8hRf$Tich}VcfeRl-c0VJUx!M`D}c7YtqexH5$A)26r}L`O@Ybiz2iI z%2>HiQ!EskrWo^gUUTXXou3tUqTO=T5#|2d;%Z5Z_B9;p#L*aB|AugZvDB1v4}wL0 zpBs%9En7=-6X(k#isyXx)?Pxeukx>Rw(`}5|G2`9B%+tAH5_VBC4u4Dox9NR|F+E( zoKM-Lr!{e~E}-SN_}EDiFTJYAN+g!kcDSBVkf%2@DNOEqPvXutQvf4Jkj z?hc;tB__tg{p2G#grod=jfT6e+Gh()T*b*BS05F71X+TKlKTQQlR}~FsMUGIFdG{1 zKZQw%VibV&Hz8=$r=4J`$fM(?y0nwYy$*O^s_9D$t_q?!tDLuLcTP*eV*eW>*4JPs zmx6!PKDz;y0Q4z(IBC%MkEhCWtJMHQ$QNqxg;YAlP+ZN28ni zyr-c@-WUTSXHh0d1zG)GTa9Q+6)2au@Ph13RBO-QN#7z3LzTf+H zcwkjSpRc$P)gCTPa>HMsN`r4jlaUDV|5 za{3fu`2n{}%Pyi|zGz}%;%?x@NGR=g%l9x}Z+7vJ`C86lVD((u2HEYm3c^u)RB@%3X=*flJ=^%GKscWvl z)N_rRyRHAbxD~^D@zgczn#cf5I8bLjVql|KB9(%}y<17JHuiS$d+neEy=dEC_jPi6 zJF&#KbWu73)*@VtE(DRal(NFX5|5 zW>KQ2Vr}g;H1mRKTFc9KBX}F;Z4T@Hfv}?m2OL;N_(K3Im-DT|(&}YErX2|KLr9fQS_Hx-k`@4cl^OS1tdKfQ zt}Ph->o(sNEg%BH0S!@>h}<_j>ht1@%~ohMVYrA$9TM6#%MeL64({2u;m@|-U;UX| zc?{%4tQ3kl>+LqKTlN1?(-UK8f4Z-xdP?^zSCh-^d0|YyVqS#=YF*>&e?*`L9I0rf zJ&*+EfmJy4a*YJKfH(FI<2};PQD_P6aS4`?2kuJNC-@5Hul45a?{f5pq3PIZ_sR{9R)t;i!?Hk`vReOaU6-JTd zZ)V0+9;=0P7R)LgRo7Ie2dYAZxn2>iWMMLGuIrJ3o*rs{hlk+lwT&lDHNo6iRbtlm zY4tZL!E^AVj-fPhWnqw@_$bG8UZ}ZXeA`us^BxJKO^Jr1{B13kOe?^nx_@jxr*o@z ze(bjelI#R?O5YMtbDaRAqTAl{g;E;#8{We(c2S#9v-1umoL#T%r3#$;IHoiqX)5zl z4vX>~6R+2eIhXQ5vP5sd@8_l!`a6BAJLH+AL!W(qcm>3}dG~#OPzQWGygII+X;#q$xbku7#L@n{H_fu9;~JpBdM9T|EFm6Ax+ycVJjt_I`=0es z;I+8L?WS3Hvj3v^dDQ*!&3*!Q)r5h8nIreY(m_&NB9o$d2RhFZ;GzokLJkcR=;nLF z_2Q$XWX~`q9$G0N)!q6!CgF?T(?82H64Pn{4>uU^K=SdaDA}vfU+`Z~?(qg1T$(0b zbv5{-^+$~J2T2zgbX#bTZR!GI^u^G#7>!)DiJ9RRh0;iM4MW3e}xVQS3Xr1BGa9zW>C@CK#s@SG(R_0=a zm(15VTPym(6701R&#V1(qQBeOKk#5x?{85Gy=i8{@w?m5$C|(>3?o`>KNI1ky(~Jk z^mgz8v>8r-J~fHwx*znxJIol*E3Z0YThE6cc7`Ht-`1_=_*CsIa46))GwByzO1^Xi z-rn0;Y5F5}1k*C!={RC*UOE~i=(V<#OFDmO^jD=ZXH7Tm)H!W}aF}Ck`Qui`=_Vyo zDxbq)QKw=AjF4B{hfNrTp5C56Uxwg;@O2dW3`d}-D+?pBUl0c17Mcb!)90?E%yjQ5 zFnQ zu$Ogd$wJxZ!mGthd{2w*xUOKG9;jLcG(6qirEX=9j3w&ZF(Ax@ykq8+u7*uYBnq2} zOy?xW`A+RE{%@ZPTn}z>oi^v+5Q1>gn0n!wWQI_Q>l5;sv&vn&tNtYNN+e3cP$2K} zum=i@-TKM2lT89sjy}exsu!vx@((JlAh)KJujVBo6K_9JQ!3JHTVA#&FjH7wsk%wP zp=eZ1sZ39zAHSQ-{BFf~vxWygFqefoOaRYIK_pv#nRmA*)Oj?R96_QMLD}01vO<`^1$(ER#WOJ+rB~9d(Hhl zuQ8(nW4S2j_CjRFnzdAciywJ$M2#5@^&x0~vcVJY$x;Syb>{~v^oylC8gf=3QC?%( z+u7~L?`f3t>HAeP1l+sXWyg|-7?!qc_mm}m5px1a-8Voa?!a4`GfD41xE{tgMuRuw z$^zte0F-JucyAvPwGD@UJ?TId#4LX09*%&{tqRC$MWH{tNa^Q0QU%YDf5wrJsNW~) q@189m!Axr7#Sp~5qaQ0xi?$K_B8Qk;PKcM^Ed=d9;Q>;=c-}wO9Y<6E literal 0 HcmV?d00001 diff --git a/src/res/dot-3-dark.png b/src/res/dot-3-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..7a06eaae6106e4a4b27d0e8579d0e18409c8e273 GIT binary patch literal 3127 zcmeHK_fyl^9{mOgB}fs&(xq$^P+5sWkOdMVHLOBJr72|z2nrGb=?P#E5$Q#6K~O0{ zM7p5|vakw53?;$>28dE(q&EZ7Uf#T!_sjbS-Vgi3J)fC-&)m<_={ z001C?u{O8o*Pee5QDHt-I#m_&3nO4@zQ04-F_$tO6eI?v&vEWj&%2kE#1D{_$ zeGt|g_4PC>I-P$!io=@7OzAYU$Qq%EYgsCqzqsvRJ}4@Nf9$iMbU5+d`O@1115j|h zW=RTm$5cotO>`W-f&C81N(bH+mBjMpJYukG{9RV>}hc;O+F|%NmWs z-o>I|rUFVbx?W}iuo^fB(peuTgitp{hexIZ;LnDp0%ru;NIgxpHew)15zIGL`)5rChb)la8T-FDQT@8q@Di9OIKRpBs{s0dPhj?y(G?gc(r2Y#IAc+y6b} zL+W2|)GHV$reK!$azTW{v{0ZC7#*2lTm>8ff+)KVK1a1Jt7io?GS&SZH#4Cn{i}^G zmHi61?_SQKafqb>`1n|9X{i)sWNk%96q^pQ%iwakyEcKMv^d!YouO|Ra=bOi z7r$?7SQv-m1fV6PdR%1Wk5=a#6G@LS@Zu}qKoIRLquKG5FS%I+tep|9+#MzuJ|w?R zk-7cD`9}_Xt{jG8YzAjsTDpi9;xg!T)(H1*Dk$6ui(HYx(Yc$Oo5e{31|~DBYtp)4q)g3(tZ!&&h=jufSy3Gw-I-V^BSR!I z+AAO+KtdFhkuZ!<}yNB*2&AB0}Xg ztL<*1?wK)~r*4T9xuutvm#d^$7E7=l7B#y<)(w}kdr;F}beC@K#>qW<#t#lff;yF4=fkl)_#)fFz%ev9rP0&Z0Oep@?l zAAd7%PUuYm(QktZDM~u1vxDt71b$^RIoK z!ExTeo4t$XkJU!T-37L^`#0=`3PTts4zJ8o9#O^@A<~8{vO-CyKtV-T>ERl^*SGY(oD5UQc({^t#*znRClW0#Z9ElGTotKQ)hYa zS$JKprbqI2XeKP?mnrRC$y-9TBXg>Zbt&$ywjCSJVb#xmx<7@^QbUQ{(c87YRojJQ zG(Q{mEIVdUj!B;a&e>cg*Y|+}9YWvS3qC;@=58cqqJFY8I@szZc7EpKvCM0pqA?uryFf-BMq=Ot7 z@9;X+8(Z+2(l$XQXz;2=@{pUjJ$GGM%Cnmk7K?Kvd!hFtg4%i zk7I>R`@Shu&OJu0)1gbF-Lx#+mvGNE@CK#o;q(>>ZaM4sR_M=FS$_dv$}gXPGmc8L z`!t2DI#xV)veDpImDdzJXe)BL>{0vA+ls!#KMwGoez*6}Jn7J~teO2fxf3;{N5u6B zT5SNsj_Jlshl-HisE!!(bseLTBu2AUFQPn{8i^*8$)S3RDTvr>^U7YT-}jd-i{bhx z)Iqdr!m-PK@&{g6(snby@@akdRzM*U1C#Q1B-1$_ryX({s-4f(Aj608#V^w#ebGAJ;ouE z7w@-F{Zx`5dlBCq$|=fybN-h;HWFQbx3Co4^qTMe|{QOdiU(CgqC%@ zCT(M5qwrLpBq+S5v%$ip;C8JUEU;M|NZz4b{!akFSlF6Zo%bO9 E3$1~P>;M1& literal 0 HcmV?d00001 diff --git a/src/res/dot-3-light.png b/src/res/dot-3-light.png new file mode 100644 index 0000000000000000000000000000000000000000..7fd4a79457eeaeb8eeec0065417a9c4cb321733a GIT binary patch literal 3182 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 Xhqk$WLoGDH00F?7TBFNM{&?^o>oUBK literal 0 HcmV?d00001 diff --git a/src/res/dot-3.png b/src/res/dot-3.png new file mode 100644 index 0000000000000000000000000000000000000000..ead5719a8aac559b9fd02462a33d19d96d2145c8 GIT binary patch literal 2826 zcmeHJ`#;l-7atZQJ#DUGGP9xNejAay?L(HND9I(ZdXQWm*WA{HQriq^xvY97C68+s zO;qMm4K+%(TtcL$kq49evwr{n0pA~%3m)b=I&nxkrv}${?%n-l8E!cI)kcv;WHqR90zc9@=ZD=EIm}E8LpO{5lyNE?XbFy z!^O9EI>^>~`y+09OKEstS9i@)2(VDs4#}>n+mBSZ;kZrR!phAlhF85TeI@o^smO{5%W3jC-b=UzN+aB!pQWpec~)VZmJln0Y=nnXJzgXlc@wa zB*8IQQ4;cUF%v{GkwJLtJXdCR-qC+-G&sv&@fqCVB#w-1z5ewe1sN$KQS7!HUR2Km8ifGSOy*E zfI)doWYOK{e^VKCvS2}@D}yvOkkHx4Zp80|)Vo_uAPG52$rUosg|ziort;=`Lml{UY=U zZjgWj520RjBe(F423@w%LJ!^nPD3dPM2a*qG>fA!Q@sd1Ua%MjP*cixr5+hGYmP1X zWaFn$jR@G9_rEZe6#2LPU@Ya)&x8N8HOFqV$-)v?Y+tO3gME;v6zj~lVNo1C=S*Vr zN0fGVsCw8`HfqDmhh6@6OJhKrsv9S@7rH6fPlBsXrUTYyd&sblS}=C-3+2g=@NTZI zyW%AwCTkcrACZU<`BAxcSl%02ZvsPJZ)xigz_^+-SkjEZ5!R6BXWMGjBYtyGf(=qE zf5JN(RZ!-FiP{Xhi?@MYmjQD8s`BoP^6UiF$r@T~3lDrh;|CFW&kz&RJS0b>2Nf;K zycu9yZ}jB+Ok1vB@xyHYXCQP>*-8Z_T?UH`t)wVZ_|M7_x$m(_c(!1GKht#L+9QN; zg?!Yor$6cho;W83n-|WM^omNZmLhW9hBxc%lLlw?wGsnLdJj{zJXSmSUcv-R43&37Ku4rg9eM?A|mOB27Hz?S9Rgrqec zuzpYwwp5x^jBqGgJbgdeSTYgI>3QaU>u_B$LYVcSuTP(`r|jFP&iM8tc6Fw`ue_+N z+rdj;EKmPnOx(ii+_O(RTQ>x$PZAF0syrl*PEMaZB{Plc_Cs&PtT&&Ixm4rEVZd$w zP++EEqP2KKtBOrF$k|y3?jrWQ!eoU|Q>~v8rb2A8My8wPnhTR@c+z^M;o4}v>K83& zlO8gC4Ac%#M{%oUmj{Bk6VW>3Y{B`GLamno^`bCftWYtCqL_q1@*}DT(_N^Il%xV_ zSeR0k0o=lTMKuDmxt?nYe{=SF0sR6_%Si43b7xnqx=y(6ljQ7NlAxu%uA~!3A4<zrFs04%8MozC_c~ark-u2Dk9S?WIQ5*OEYo3=_d=XvFZYqeK*aRG z%<^UKuVUM!j%=vm<1TS0^8}mkeso7=TdBYdCd)*d6(k5&;Eqi@ldImEmX|)TYhPsKhB+8k{NCo7X!Vgfu#Di zAa-J#EjrTN@HMvreZ2Kp6;!Pz*ub&)4_V{+?@EmKiCTKJy5vcbZ@;!VqhPTdf21Rt zcuGoGv?8NPB&4cw8G&m-^>e>g7QGzE9mSg0IgT$VsihOQ~9N%x7Qk>WZ{5r-dIJuF6(BqQ0c0oKCK&0cziReHDSYNSd zDw6jcV=@C^g4su3I0j)byzBRx-~+XN|ho;@-}^7rOP20+K; zcrn+)rp^J09;@fOct__pSPd$KQCC<*X!g@LQ=@Tq2+$m40Xck4A;!kUPcla!_` z!&oqdF|jH1Z9_hF$+1*pJ0zLcorN`{P9|rn>lw&>ttgq)?TaLnW>(Szmr$D_j5>Ae-RTz_(TA3oRV@`TtX6KX*n?zWq3M3-n$r OZb5(>-nH5}nDj3aAnc0( literal 0 HcmV?d00001 diff --git a/src/res/dot-4-dark.png b/src/res/dot-4-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..322c6631f2faed2a489cfe8ef656334341bec621 GIT binary patch literal 2566 zcmeHJ`#;l*8y_t;x8_)}n2x~FRDU20oonO9x#P|Edb9ud<*Ymtz&+~d-&-H?okZch2PRC^s zxJTU;c1Rwa40DBDl?TJf)*u;enMjznef)NVO8`pN$Nn@JhIyPHjDi53g{~7m+A?5T zoY8TZEJO|dJkkFU2z81(s7VHqz)&QwSk?9assA0*-r9xHDtms*^S>hE-X-zS%L-;k zFd!7>b<=6DtgXex#oHpuar3CDHGT|dQ?33?<AgYOg}BN>?hCQ0%Rfh96o@l)O=^_ z^X2-H&NqL-!{7GwU96n9>GHPg>4U1CvaIJpOP|gOI}WGEwII7v{Z>a8Z-=&v$^$Tv z%qTaQLH}HQ#j1w>IYb@VXTwyte#DdlsB5cuw-j*fUa9B#W0?WJC55Ckep96PVR4dH0srg_AyRu87TCYPe*Nlb+1-ECAgXZM zZ0$yW?4-bNYHbaN!`UZ!9bCer65f29as4EWU+jNrpO=5tJg z!olJGp@*uXO@j>n^{9U4J3?NCXj-m76qO7h-Zw0aL>4ULdLoJtc#LMGsS}|^0U$VR ztHb!cI`?2j)}kN#+R=D&P_l?*MSPJ2&#?WJ&&L_v*Bp@WhxQgo7H9g{h8MO^KR!Ub z#`gV~rWI!n>3XtgeXs?@?#l5-l{=f{i|~|?+UPXRMoZ14;US~_5L$AT?e zZk#T)msWVGD`pr!2$Tk-^NjDUa=NzgN5YEIyL@2r;HP}CxiOKG4Gb24EV9dUeU)_K zaY+^Rvu%CA$>YXjXS>sdb9aAXsFKwYC7pFal&T_xJ?XQnb;@FEBO0bTqHe*sckg{p zifnr&);YsvU{r|&*k*s5z0KoZxu;5YDjdqX7bu6rO@%;M_NKq+E{v0S!CLoWfs0=8=cezc!n@1ygUle^qy^w+<~v^`2ANqfoyciZNSsGBO!OLJVm8% zCe2~~Cu(BkWo{!IOt5m=d1ZTesf7Z{i-y3f;Cyn!5ClkprXs64K%+e^O16zw!(X!f zb9fj7)4tov5M#oR^%g1cxA_;v3gGj0A=zJ;f#N}-i<|t0L)jI1*{!xfTnf-~Zr{6z zn1})F%XI7` z_=VBhrGs{UiQQOSO+-b~E|l}W_TXnfl8kbm%#{S8Qp^6Zr2OjDC31*di znkTley6+Z{53G=8=s#!k3iOD;B=Rm+pme%*VuINZ05 zb#eUe2)z1yOo|D&>6=4tA+gXJ{O(*#w^8rz>tzJC@wCIRzM)?&Z5Cnohz)#j9*XEp z)&H*R*ZW(~0S~!VfM}-t^kyNwkw}Gmyh_?J{&3b>-)2zJFFzSKBh-E4otp~;MK`^H z4>HN4VwDEiDfwy?{l_`;-aH}LHLO#5bS>l+Zx5PC?N)}+RkgG2Mb|C2_PcF5K}m;y zFL7Z?zVO+|hHBhk@?os%$p|Fulwk+5s=B5oL`QutygQJGAyS;I?^v36zzp0KJy^SW z3RzCWR{w-CEHWCo;;Y=NxF2 z`mBDhFgbIj#9(e@vOwa(d$zOaw2k+j7|HkLH!tu8X)u_)jCs}LaPdf3>} z3|UA$yIMzC%H`;X^(`Ax{;zYe)iJyTTqU{tuRwtumxQxODUT^_&ujW5{U0*sUqt7C zNV^oYd|sMf0yaik#$YmFYYjwYD-MMETH)VdAPb2wBOs5}f&SNlFK@}X)$Ca{W>%L= PA3G4%-4}DqEsXRJH>+be literal 0 HcmV?d00001 diff --git a/src/res/dot-4-light.png b/src/res/dot-4-light.png new file mode 100644 index 0000000000000000000000000000000000000000..3de01af3e25fef9916532016bf621ce3a15e7051 GIT binary patch literal 2495 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 Q1HKf5H#9dW!8%3!7sPGVT>t<8 literal 0 HcmV?d00001 diff --git a/src/res/dot-5-light.png b/src/res/dot-5-light.png new file mode 100644 index 0000000000000000000000000000000000000000..324287a3489f0fc556b9ea0ea933a6b33c3024f6 GIT binary patch literal 3915 zcmdT{`8(8I{~y!H*vH<@$jsQXBt`Zz7@4UMWoR-6O}5*<@0qeDYr@#7$r^)drWi|Q zr$J~ULP)r!i7ES?@AQ1H>-is^AI^DSpZ7WEbIx_H_jxU8mu#$r1!M&P0Dv$Cjk4#) zzCR6onA=mG>dUx+C&b>$98f<5T>$_@c`+!nE0Hd1rFdT`ORAUsR}9_m+k79qM`vN; zPNHS`Ym4pd0YULa3$Sty>><{K{_aOkD&KjDqqvHx>bL~jj|6d9XRimBG*WYN!SJ)n zF4ZWwsH9pSI!Au^?n0w<<%|1+--l`{HGR-Q9$&xL#hL!zGukRKT#EQkc-|7iZdUri z!vk^32atrp39mOmFbGow(j>$K28|v1^T7kjR!mS$h3Y$9H3tBnmcK(^&IEuEy~5ah zNCHw*O?Na;5kTq-x_w`nJN<${hVCL52@C$@dV`+_+?8vtXl)3D{I4(fu5E5^ZpTse zP^jDHsTvCgE>@^EW@~aPL!y`Y2}a>CTR$5NIhv=QAV*a?YuRpXZ4F`@7}vlftmGDibun{488Yt_5WtQk5N4fohWs{oN$4xaLY*;b%RC-4 zYHscGDyYyrGGW~$AhtW8en%LdeV4bSsA%JS#i*7?{3Y}E zvePTgA)uDDWh4(gci~@^+-eBQfW(Wq=>$TDD^{)|0keIkx z)0*r1mOZ|0$Xl=pE0nDaKTDFp+|Oh04HxEST|D|hpd3dP!8ZlY@p{at92%0ALl}+t z>M6*{$`-v)UP|ZC>|tgQUscLUc$b5oG#;_^oZ0$z>)!?O7r0_4)od7eQ#^-7kRy6( z>aaO+2M_DoGQ+X_O5j@-DB87N^BQp-9fi%fn_24Xp++Japbn;uq-BEuJU1z6n`Y~} z-z`IEePv(Mwbo)kb$cC1E-Y+vUz?;iNQ`8?*Gh63ImwB+aN)w%-OS8*s^ga(%4r`Cl(#OK6s=dV!tNa=*Qx&oP(a}+Sp{#kns4_K|zKNh=4s8ONuX=3( zbn8_xC-2q7QRn<2LY2QW2D^X;R1X zIp~^v;;tGkH#3y~c2RD;fza?T&`J>`ZaETEH{f^ODB`v5Ro-um@0%h`E_MZzf=YKN z#94#Qkh*1Bf4B}JdLRr>l}YwFo=sGRiN)noosZCEL4`Zfr4cIsXk|wmSHGADn;gIru>SQ#{UD8HZ5zR0RzxBvOul5X9gLKix#$WCJ`2(DvSJNvK9t7h<7~W6T<8Ni|RUQys z3&M6jR#q*F4RemNl(`4WEg2q}o|az*N(X7#J{m`r zJbf2YrpHe+>N#k()|Wp$ZU*a3Memh*%Tpyj#08D~&e?rpwvv#8*`Wuq)#-wyolz)qmhkd1YC(qEr;AbBo_8yLu3>{f+lIoK`u<_1^_;^k+cwAMDeWJ-|vq=hZWj5fNLWhYuf?zQb`UQN6*-tr99`{Kvd~ zlBxs05`G&$9!Kcj&XYnPN$%fdnmz#wpOmusj2Y(S`n?~B>6D4*K3R%#lwPVg zustt8^!Kl4@9%I3QUxj|H8!q;MWK|~#pNo4fnzZSdKVX|3NJo=Rjy=5`ZnLMmM_vnBgfu@ ztmTvhQeK#fzx#RGZ0bQP-D07swd<#RR!@*P-D1^_->azT;je1qT!%J_=-|MkXNvlTswJI1mFx9gKB1P|om+?v- z?nTM~?CfL=4l@!un8U+cC$zM%f`Pm;cf^)gR<6#DkLy=CInDB0^;ZfP0MjYUr#)tB zPNBQ!V7I{(F}GW}rUxW*Ns-aga_CGYfYJ&joqIed zDk_>{bZPV)jM{J&)4Ns9F+RI1ZZID;^O%v?a3A@OX;$D(k1hEX{qJN>PR?*>KT3n7 zbm{T2=rppzdtUANeFYvw^vAI2lu&m{DRQXPIKsNk#k4|#*tIK6`Y$kbSs0UO@#!WS ziIL{2?@}F(wbjKn?|P|ak5$<=XcW99e1?Yk5gn;4AIE@68m8rO8(k88>NuDGtWha6 zGD4bffEg1zYg(rW^y3{B?>9z;7H59;OCytKf5jby<2fum>{{Bg1b%J`qOU{XQY;1^ z!otC*Refg>(YSG7Ayi+-baC&uj?q$e8xqGpm#M?iD;0FZeM5zIgiWt8mTn{>E32wf zpuHFz2wxFnCX{yI3+>ex5f-*yEz1%EddIOQZBV_TCsO&>YiDYdM6X{5aZloc7~M4v zD4VY_$R}^@wBNkcJwbFobsly+2a2FfpVD?6JIdp6_S@d?vdz}&8-687@m9AZDpMi% z{21GHP!gB9?ykzYmLm&4@^}7NEB||YU{ExM-Nj^QWMoX+)m(8OJI3X@a82gKUsWmevLAT}&5On7zo5 z(^sFKdQ$o=L%Pq>Hg|kIthUs9+o?ikORW!Lh|p*MS&u>J{~&PEpf+_4pdC-PW-AY8$gBJ+GBcWO=^OCO*6m#P~Q;u_;>4O+SEG9zwi|YHe`w;MeOankIQ8 zb#!3!as>b8Jx!gEixb0e#XISKbu#ExjqyLq$anT%4uc0u z6;lsMM_i~m#fituX%eX+WkHd*oXu-l_Fk`&;$D{3vV8bLeFyJ(b}Y#Yk~A$eS3Xa0 zMI3qNtFAZSIX0mm*CA+u=KlWv;}!NRL5Erf6yTI4{5Y#JhxSb=pjQOg zk3M1ep!|yZn$H=#&@(GO>QV0RSAU(v4=wdMm1PRwMk>8i@l+8XImCc!7C{U9nGMT< zDi2YHMm|6ijihf#iFR{?e{62Lo%&tcJd{3Hj~-Lec?C~2_%JnPT)%7g)>6fVb^=@u zqcELCI)B(87!Kf|bjW=2EoaX#&Qr+zA&>Z3PV39m>U-~8)$q65?^xzx-h*3;j z#Y!X~>$FUBZMlxAT&yFkmTM2N1q%IDVhPAm@En81bx^f$v%ZXR9h7%s;It3dIk6V4 zHoUoDuWR1qf12y4{@GC6(dFuWS-A7dA^^xeY$qpHmIthq0ja-c%{6F@ee~H304Vny ic$}&N_}|!mTlDwoK;B0aBl28#48U00pz6(CZ~Y(94-UNm literal 0 HcmV?d00001 diff --git a/src/res/dot-5.png b/src/res/dot-5.png new file mode 100644 index 0000000000000000000000000000000000000000..7eee736540c233df5515f680d5f7813a42f2baba GIT binary patch literal 3396 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 B^RoZ| literal 0 HcmV?d00001 diff --git a/src/res/dot-6-dark.png b/src/res/dot-6-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..1f63f2523a56c1a9c009474758fcf643bbb1d444 GIT binary patch literal 4057 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 KCqC4t#rzK~gf5N% literal 0 HcmV?d00001 diff --git a/src/res/dot-6-light.png b/src/res/dot-6-light.png new file mode 100644 index 0000000000000000000000000000000000000000..d9706b0c604dc49f20efedf28eabe4961dee1cca GIT binary patch literal 4179 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 W&%w_RxS>FY2r$B%;>s_$-1!d*C$A|0 literal 0 HcmV?d00001 diff --git a/src/res/dot-7-light.png b/src/res/dot-7-light.png new file mode 100644 index 0000000000000000000000000000000000000000..589fc5c8f640a2c1421557094feeb93492f6225c GIT binary patch literal 4783 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 f{r^uO?r~q2^g}Kbb8ap literal 0 HcmV?d00001 diff --git a/src/res/dot-7.png b/src/res/dot-7.png new file mode 100644 index 0000000000000000000000000000000000000000..44219f0780240a075d28477a4fd4301c2c383698 GIT binary patch literal 4175 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 literal 0 HcmV?d00001 diff --git a/src/res/dot-8-dark.png b/src/res/dot-8-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..0e3f8d265a7857a1db99583a55befc334238a5fb GIT binary patch literal 5127 zcmZu#c{o&U*gwX+W2VrIQL<$kq9L*`$uf*>Y#E8HlRZlr%2EnVbZG2D_9T;~Y?UJ0 zq@kopmaH#PlqKY~WU23X-|PGS`p$Koh_AYe>R;QKH zzQ8II0}a&E_F8?oQoGpIm|-i2Qq2g|r+Hu>4~%G(!5TO7?^ z*?ITN@5iV{7$T-B6Kz`3`{X7%oGr{%i zjsm4qiA7VJhId*#JJQa-PL}v%dhb--O;7<5y%)1=fY0FpLNGNAsmAf85QSd}Kx#8cXCLjv%Z zKYYuR?JEK=qPtfHaFaSfkX_>k8Qq*61Mu~eq4_nA96_=$kdLC;KEp+&X@^lC)?#|B zfeB2-WhW8V0`FwR-?F4_Jm5Sw`-S#sM*`bpUpsJh*eq=1AZLB&5D=aMUhpm9C+8d> zJ(cV*B%ze8%t$U{^X~`$ZE9cW*+ z-xw5zBGYoXC@QH)sIDs)GCSMWJk@xB=GB3!h z@0#4UL4rbnX3_vA+?B98G@$l}*eS1JDxI!%8+?ZCS)~E3N*p?XS@j9$ShYN+NeUHdqMgJTOX=5T2Ro^ z`!l2w0lHw+)F2A@eg>RY$C}_|ZaNGlv?W<;n9{xswoRKlr#(9{;e79uL(hC_aT$Wp zr8O^;z3tFHd&%5;iyNqZlpT`xK$z29q1-;`vK4Mn@a_x4ysv8S;Y{x*L*wd_g^+Qj z(FLq)6fUYuT$7FlkMj^eFrEDph{eotM0EGlu;(=|q_Kk!mNwPmq@y8dqdeJFwm#WZqVEPXwyBN9yg7E$$DUqfsPMG&mq=&Dq0>{lNP; z=yU77uuGQ)dv9%M|2*{~POdDSU6rUbb}kTx$$|bZ)PB)vRRszfG16$wobH+9I+wnE=(sXmK7!k(Q+4Wo6&%2XI}$6w;6=Q0?RBSK(I9 zD#+o(v*!Pb)+=XW6guJV1`}$mKDAm7C7l?q_IYt&4U_%Z(W?z{`JVpK$1q6le zPo!a_Q&eFxOo{{ykli1CmL6X49D!*`SM3)&jxEguFk=sD6|$$ip#LA;3z$C)WOORU zzy$_Nm@g`)F~$E8{-03TUmbV|i=+)YsMKu;NbAn}+Sj3Ot|8YLdNu8aWNwdHW!5K;`!S$m(9kLHpp+cF9|K`+@ z`L0JLW)`B6d?NZJ6oK&bW~qhg(ZqMs=lI)aejdwwshx5QfS zVO7=Q&a!(~IOpfdMToRTZC2Xgd3dS@zQ^%T;Ug#$Q3>FWpakCAUa&Q`6{m!bb8s8L zQQn>dOqG&2R8Y(7M185%~3L#oxLjVuu3dc{Wow2&-$r(L#3Rb6%Z`WKj#Aj6hjN%Y+%0J zB3+W7I`{7|dx#{`J0wAu*{d;gK@NIYAlidmR_}p0``EMNY1sHRjc(s80IO*^F&fgn z@D0)vhaxzRPknn>u?C;fug<|NCRAfi%hrAkaI%0yd-|m=e(6&=Y_;v2JH2!i6Q{VDb0_NP7r}EdTWnUhxuvFBmOct5 zX>K_`Ud(KS2Hiwi;Mor&w2oxy3&T7hl1|pknmm0DHifj`TI*I9`<*xB3+FBQ}>m=_GvFjvac%@Mevs_{UqUx-oLEZA&>#u?jY9n4~+URis zPh5C7oB6wNy}Wib28H-+blXY>aa*s6zNd)^i<65Xk?p;H?i!0tM;M zuG?Q5jHo3PzkbgS9|o>1;>{KOW~Ni5Lq#W)<}Mtvp#1GFm@3heU??pNr`+n4AI$GE5}d#NVPS=%i2+UO4cW(0hll|iKz*Ajtn?Ow#=S8!uN4(?3%0Y z-KY_Ht49MyFmZA5nf3Mc7TaEAYw}rz2MOsp=DMzDMUI%Dw@m&OpJ92N_M&{8KI!g& zW7Koz;A2D$B8_s0Cpsjrunq4b8Dv0MJ>2lN$(24hX4Q-WM4csHU&+T+8xd-2@;;I! zk)F!gZS7gQGC?(_B}nAqD-fZ+jN_%`Jz9iETc0pWZhNL3<3cV=&~l-{2_l>`o|dgb zSYIL7LndW^$P1`*SpF0NA{$-4Rr8mi#7>dzGCJ)&;}_PL zRnA8dGn#iL+Dj!Mcsk+I0-B}F*|GyMzlZo*~uU?+81Tb#AHwvfo zDmro7b1!=9GfkJla3eHatqNJziOWn`+)BpuG{qOU5gUxD^Nq=lv7Z7{E}hUZM=q-X zS@!<-oeNN^sqCIe-Kg*P3~yNt^m>mW2ub)TGm_KX`K-lru=luVaP9`KRNF*U8EHM3 z+tW5`+ytM^&q}^nb#7N5?wpg&_y~NksX{j=qe%Kx%?xq`H#c{v$f@=IYGObqeHH&$@ zt{7ts>81OQbEiU%U!pt26wK_PF;#)2W8#cIbOqb`Tf9it_c;Zup_tk<+9aT zr@v_R3(^H8o`)Wu{8>$)UHbt!xkJbKk`>h6s;*qAD0Po{Hg3Y1CTWo@Qh%R zp#hmp`y@0xtB&u_UHXH#^vnjIv>SXx?&dTf?6)E|FA4if9aZTn&}N}qCYQ^sjR8?=WMA+0~_ zF$VX7Jf4^&+04qTfPA?0j=YPEn(@>n&RB$m1#03lP*Q2+r`CYJp~^ye<}dsf`GRam*Q(pg1!T2w{zwmPD`_2CRtw^>W?BfPLZ5uiY7| zsozBdR=hg+^$GRmjqfVn@4`WiIA4QjeFL27d-v|~@Jr}MmOmSrv^%j3`N-L5&*J%2 z^RO1>El~nY+`}Pn3>XVo%>{a-*oYO($QyEw!`Nv-Xqvp8z=jg$np#pzoW1ZLX4`NV zZi?aV#uIf2qc?!WH9tQI$s`nTvZyv`=c35!KVBmuo`S~G>1P8OLvY}3DGz$wHjRD# zFlWkaqoyiVH{dFrk$eA`Oc5VY{TM@yJU&n2$lEN$ifS}>K|zT;k^kd>!S;S&6ama| zDh%C4x>3NOHzPv&PUnyoQvOGbQzY4*aL3lDS2B%bDAG#7R3a79t5O_TrnYMAI4whFW8Y9 zY*sIDd9_e+>`EF4v9K#C(vFZ3=%r}pm&^B2|6)Wz7z^#Lgt>gU$eQHJ+vRmK4$J{z zBr(-?u|CI^o@k4bi(d4bqdVrA$Ff7WHuig?ZyStcg8qN2yi1Gidg2fq(M&0;W`}JR~5%4Cm7NhT0mmTqWW_qY*3*^kimjl%RKcU;F+^$yL~2 z*0Jhjf>=qWJKnt77ef_#p*s{e-u$;t{;mm|albvSey2-;(P7hFN?Db)$v94I2l@ zfbsQDi6$e_LuaXF_YXgoETod5E-R8>xejwe1T|s-N6G6KiU1c3|C3TYg(f_D&aVV{ zI+&1j`ph^=y zy4VJ_S|I0U{dqhw?7T8iB?CC4$SV8tjT6cb0a21b0V-aOYA~RBw)JZg`ZH8A9{SL= z)Tx3oF%Cc288Iqcmcgl47t|E(z>V6@Lw9?m(#G6HfXgwx+h6!a zxyU5#_tE2M(Ml~|5KAMST{SVx=b4$Avrmalj#Nh@AaZwFP3ZwOlQj5aBXQ27qgS|P zF;38XVi#de3gFMltvJ=jvN=W@c+UzZIeq+IrIV1JiAfVbB<~2yyL4Cc2bA@z*w&D| zR9dN=+#R!!LkrF1*kP|}Qs*2$)^>F2_J>o+oINbaJlL3UcJNE1&Gvwfx!-{@Ns*$Wq9$w=@lvb}209M%j8G#p1}Nzx zw{gVcT8x2b_@ce3@!srIz?=vUjH4F`v4p_C+o>+>=ibCf6I~-VAO=?%R zm_f6RJPIZUIX=%MG&45*B_8YDTXr}d;1#NDz45+R9>qK>jdhX8j2^r4AjbxIkE=vM zB!Dj@F&GC_(d^~+RNG&h3Q4S`N9&RBQf2;>P^o@D6xLbAl8hK&vL*&5L<9XF~ zDxXWmI;k>gunu9gh*7=1!2QBW&3*?UwCM1FWpW^BsM`VURVom>)k}djlBA`D!5j|AD zhrSy)ZI3s{uD7pdFv7lE@>mc1UDC+^g3s*+}-;Z(a6V@k*`Lh#8@wxR#(lnRW>8 zHY>&d^^7Ez(~wBkgxJyC$>{WYI`dXjweaVWCkZ*Pn2UNfUlh~tMwS$)L1%>kk1c3`LkHTXh$-I2s@zSkz74f zLhxQ}oFVN)CZzW-NA_>wnyV{9G1L(PVI}%*pfwIz>qUN3QO|Rw$CxQ8)*Xq3Tp>co z`!hYQT|tcyKR>r%GBA)^paw3V0+z;{w`Dd_@CuM8zNo{knybueXS6uKp$#eFf@LRH z5Hut(15er_r1Cfs-Vs_!;$4@Z$-UO#ctf4l{Z-Upa+-z%dE>2&x3V|Pj``D& z5~nO%d{Z^DhcA#Xp#xNlG`IJEIDj7yjW*}f``_ImEPJ3!QptwbJ=h)N%#^t#1QP2g zs(ZHKWUHsb8yFx2Inm1V)rV8Sqs(r%^&J2|u$%o$8=~8cRMBVR;P#&Zg^qYG{e-Vf z((wM9V~l$kzg(Ue)ye4jaY=-Nj8Wc>HCnc23Kw|ywB@@YmZ7HO%5sFv;ZtBkaoe%-{fCH~J ztFzj>vS66&>W^@Z;cG#z(Vz9*2FWfJ@Aql#({1t+&aQuW7*M+#MjEv$ zmA8qo;;6`CPgXsyO-)(Sgn$tRf}UVL*1yk;PoF-8$+j(fu@s?1UI=(pX6*@&$J>7Fp9Y)xJLOLe z@AEtcVPLm5rY2^wWY7t;`}0;Rgcv_}{48oj`|?qEmg2n$!BAz+N}KKtmvCDt-WsfG%gbY+t~KITD997`Dfly{uN#Bi@!|XHrM)RUXONmm zz#KW_^()B6+x`!3Be?Y4UBr4H448`z_J|Z;d9)XX|I!k8e3Sykke%hYYFt?(iavAM zK9MU*;pu^CV|mA|GVHM5&h7mFhkVs$tG0z^i7wz=1E5ebz~rdThHviZZsp)|G_}YA z-K|Pg!5p5^Rv#wkWMDvj4EvAbp20X8+S@)rvm%ARC>JG*9lSU0 zOtC=QD-(S?=AHpnZfIeYLU0~0$71{a-t`uKq=>8n9#TQaa^SDI31doxMBWeRmaMGm zY_*boBF_n&mp9e8=wcUuW|bo2o?3l7Y@+_TcR%NScGG#X_M1#KEV9A&&E&RUt&6`W zF^(19*_i4Aam>fgouRBs z1*>9T_vQ^e*$=4Xb!Q0@g&Ni-oTr94eBUoT02TnmIvZqGGZA1IV^85Rz(PfW;Hm%4 zeOt|wl9D=K`{=FiOj4{k;&8*Q+>=NmExo)CmcFvk05YocvLBpMWocj^W_uLso$rPi z6$yrY6g#9kHVTG={FO5HgS_+rMa8vED8SX6dXRCh0sGkrSW5k;@kpt#)p1#Ke)_*u zCk^7RYAN&hA52~!Ia{=$qhtfyTlg?WxQ)Q{{b{8KDo|%bYX@92`b# zQz7@hL(8#40n2_nGX~V|NdVIQXuH_DG@dp=??dN)+PgITF4jj7*z9(ZCR>+AmPtCf zapT5YsXrSK4>QSr7$Bz=@_r8pvt4L%{wE+^PTcTtGW?zG>(TBy9z58lX>s!_nl8~! zqyBny=t0ZjyJ%8cSX{O1FLTq|$0cEGM(;`>(`-<~f3!>s64&GoU4+9c*Zq_*0`^aU zP*Ht>y>wzTia9hDJv6{E39`a(A&kDBd!kY>fY9Lmv-x6Y=h0MJ>H#OX;^h?&S!@jqmid+wGK$K0bYp3&z zt4?65nP`Duq#anAN@zrl+$#Ywjfp(bKN6VBsP|=wZr-dDCVTwu=>&|;b`rnjNcN=ZK)LsP$X51YA-Au(lR)4u6=u{cEM{pUwGcKi&3DLJ(^0C~BJ9JwL zei~Bwy6V^Sru~lw)FA0)JHN~=(CNDfOB<)=ThkvF`tW0>TA-CQe8T?Z?>>H$I_()^ zK29efUz1L=OnX}g5hNCZPFLT@ULkiUFMnPbkhXc~Uf@;k>~(A+z{$EK4+CHSU*j#8ZAaPN3Q!Tod*VvLWUF*S^`;h5 zN$sPnoOyUOF9!<-;vS^KjMV1$LiFqR_g;jr)=!s7ZUM_NOS;%r`7k-eM#aeMKZbw{ z&L%mC>mabczb&@b;TWA7(oxK5xwdA_X--G$Ap)Qlfg ze704V>UhXq$1VN88>7o8Eq5DDLsJgUbI2(uE?s>`(#?Krf<$CvII(<@|Ep-Wp)Vq= zGo(ntRLUk$N%vHJUAv~YW4jLsKS{zEd`jFgG=kJ1DNwg$W%slz3%n~)$=13%bP zVIe&lvAY`N7(`zk{~od!Lzy`?AyzOMe)?fdV}*(*{`nI`yODs+j<$W|agiHKKy{M>e1b3NBL4{|o@VV~$vmh%c+jxjFDvbUe(^@aQ2*uDq&XaoOIAr$F#>ol z0B`5bt2rj%#L{aW?AwXYoZdXkQfWBk+bg5t*wbrF-O~vvX%Yj*>e6IAwo3F7DdHQ;^1ZEoR!D!9T3N>8|(i!yK8W9>-!XGUJK=96_E>^ zJ`}I57|7BK7ye?^vbuUmX3TT3nXDr0Yb%q)NEyfTHPn(Jev?Z)BKL8m+R9PHZ0 zN*NQxokIb?QpZR}M8S0alYz)udFI3`BuIRUH9HlAtx-9wnqg~t`O&=B@!Z4L6WYtB zzxB!vj*~iXQEvWCB7~l_Tve=p1#+g$|2W^hLO@~8_|K{i*^qQC_ z3O4?$NiMpA&?6I?Oivbk#G@}xqww|BqKgODuSl}^Z*C(gPr`+7NuC(i0NQ`pqMcA9 zjsVekDdNY<=L{u%Dc1cr#ugS9lgIV8hHV~_s_lCo=B75(QHB7@2>4RweE0Qcaq&l8 zcE`H9>k#KZ)aB;I=WhXd7um}uR1+iAqFx$)^dvtZH|7_JT|_)*(6fDaFJB@vzMf@9 z#0{_C7$XUQk)2do^s`_9D+NftQeK=hc)>q|t#08DgybD%%5VJN)2f4ybMk4(X;m?- zhA?%yobke%y-HY2ty}(OxCX`JN84}noru)q@IU$2uFM7)u11&@p1W;*%Wd$>`UcY> Wy}_dQ^eW`w53sd#pjIH}^Zx+n5;)HQ literal 0 HcmV?d00001 diff --git a/src/res/dot-8.png b/src/res/dot-8.png new file mode 100644 index 0000000000000000000000000000000000000000..27e6eb2c6432e72b28cdb9af412487684923c246 GIT binary patch literal 4375 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 diff --git a/src/res/spin_up.png b/src/res/spin_up.png deleted file mode 100644 index 3bc2ff50094faf1f744dc863e8256ba89024b91f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 213 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}c0*}aI1_r*vAk26?e?oTCN44$rjF6*2UngC5J BI5hwO diff --git a/src/setting/settingdialog.cpp b/src/setting/settingdialog.cpp index b45b25d..0b4d2ba 100644 --- a/src/setting/settingdialog.cpp +++ b/src/setting/settingdialog.cpp @@ -77,13 +77,13 @@ SettingWindow::SettingWindow(QWidget * parent) pages_ = new QStackedWidget(); layout->addWidget(pages_); - setupGeneralWidget(); - setupHotkeyWidget(); - setupSnipWidget(); - setupRecordWidget(); - setupGIFWidget(); - setupDevicesWidget(); - setupAboutWidget(); + pages_->addWidget(setupGeneralWidget()); + pages_->addWidget(setupHotkeyWidget()); + pages_->addWidget(setupSnipWidget()); + pages_->addWidget(setupRecordWidget()); + pages_->addWidget(setupGIFWidget()); + pages_->addWidget(setupDevicesWidget()); + pages_->addWidget(setupAboutWidget()); connect(menu, &QListWidget::currentItemChanged, [=](auto current, auto){ pages_->setCurrentIndex(menu->row(current)); @@ -91,7 +91,7 @@ SettingWindow::SettingWindow(QWidget * parent) menu->setCurrentRow(0); } -void SettingWindow::setupGeneralWidget() +QWidget* SettingWindow::setupGeneralWidget() { auto general_widget = new QWidget(pages_); @@ -99,6 +99,7 @@ void SettingWindow::setupGeneralWidget() layout->setContentsMargins(35, 10, 35, 15); auto _01 = new QCheckBox(); + _01->setObjectName("autorun"); _01->setChecked(config["autorun"].get()); setAutoRun(_01->checkState()); connect(_01, &QCheckBox::stateChanged, this, &SettingWindow::setAutoRun); @@ -141,10 +142,11 @@ void SettingWindow::setupGeneralWidget() layout->setRowStretch(4, 1); general_widget->setLayout(layout); - pages_->addWidget(general_widget); + + return general_widget; } -void SettingWindow::setupSnipWidget() +QWidget* SettingWindow::setupSnipWidget() { auto snip_widget = new QWidget(pages_); @@ -189,10 +191,11 @@ void SettingWindow::setupSnipWidget() layout->setRowStretch(5, 1); snip_widget->setLayout(layout); - pages_->addWidget(snip_widget); + + return snip_widget; } -void SettingWindow::setupRecordWidget() +QWidget* SettingWindow::setupRecordWidget() { auto record_widget = new QWidget(pages_); @@ -292,10 +295,11 @@ void SettingWindow::setupRecordWidget() layout->setRowStretch(11, 1); record_widget->setLayout(layout); - pages_->addWidget(record_widget); + + return record_widget; } -void SettingWindow::setupGIFWidget() +QWidget* SettingWindow::setupGIFWidget() { auto gif_widget = new QWidget(); @@ -375,10 +379,11 @@ void SettingWindow::setupGIFWidget() layout->setRowStretch(10, 1); gif_widget->setLayout(layout); - pages_->addWidget(gif_widget); + + return gif_widget; } -void SettingWindow::setupDevicesWidget() +QWidget* SettingWindow::setupDevicesWidget() { auto devices_widget = new QWidget(pages_); @@ -412,10 +417,11 @@ void SettingWindow::setupDevicesWidget() layout->setRowStretch(5, 1); devices_widget->setLayout(layout); - pages_->addWidget(devices_widget); + + return devices_widget; } -void SettingWindow::setupHotkeyWidget() +QWidget* SettingWindow::setupHotkeyWidget() { auto hotkey_widget = new QWidget(pages_); auto idx_row = 1; @@ -461,10 +467,11 @@ void SettingWindow::setupHotkeyWidget() layout->setRowStretch(idx_row, 1); hotkey_widget->setLayout(layout); - pages_->addWidget(hotkey_widget); + + return hotkey_widget; } -void SettingWindow::setupAboutWidget() +QWidget* SettingWindow::setupAboutWidget() { auto about_widget = new QWidget(pages_); pages_->addWidget(about_widget); @@ -490,6 +497,8 @@ void SettingWindow::setupAboutWidget() copyright_->setObjectName("copyright-label"); copyright_->setAlignment(Qt::AlignCenter); parent_layout->addWidget(copyright_); + + return about_widget; } void SettingWindow::setAutoRun(int statue) diff --git a/src/setting/settingdialog.h b/src/setting/settingdialog.h index c0093a1..e85bb9f 100644 --- a/src/setting/settingdialog.h +++ b/src/setting/settingdialog.h @@ -16,13 +16,13 @@ private slots: void setAutoRun(int); private: - void setupGeneralWidget(); - void setupSnipWidget(); - void setupRecordWidget(); - void setupGIFWidget(); - void setupDevicesWidget(); - void setupHotkeyWidget(); - void setupAboutWidget(); + QWidget* setupGeneralWidget(); + QWidget* setupSnipWidget(); + QWidget* setupRecordWidget(); + QWidget* setupGIFWidget(); + QWidget* setupDevicesWidget(); + QWidget* setupHotkeyWidget(); + QWidget* setupAboutWidget(); Config& config = Config::instance(); diff --git a/src/setting/settingswindow.qss b/src/setting/settingswindow.qss index d5ee262..6f54193 100644 --- a/src/setting/settingswindow.qss +++ b/src/setting/settingswindow.qss @@ -1,13 +1,8 @@ /*///////////////////////////////////////////////////////////////*/ -TitleBar QCheckBox { - spacing: 0px; - margin: 0px; -} - TitleBar QCheckBox#logo { font-size: 11pt; - min-width: 9em; - max-width: 9em; + min-width: 10em; + max-width: 10em; padding-top: 0.15em; } @@ -35,17 +30,17 @@ TitleBar QCheckBox#close-btn::indicator:hover { SettingWindow QListWidget { font-size: 11pt; - min-width: 9em; - max-width: 9em; + min-width: 10em; + max-width: 10em; border: none; } SettingWindow QListWidget::item { - height: 2em; + height: 2.25em; border: none; border-radius: 5px; padding: 0.25em 0em 0.25em 1.5em; - margin: 0.15em 0.35em; + margin: 0.15em 0.5em; } /*///////////////////////////////////////////////////////////////*/ diff --git a/src/widgets/colorpanel.cpp b/src/widgets/colorpanel.cpp index f276355..a721878 100644 --- a/src/widgets/colorpanel.cpp +++ b/src/widgets/colorpanel.cpp @@ -84,7 +84,7 @@ ColorPanel::ColorPanel(QWidget * parent) : QWidget(parent) { auto layout = new QGridLayout(); - layout->setContentsMargins(5, 5, 5, 5); + layout->setContentsMargins(5, 3, 5, 3); layout->setVerticalSpacing(1); layout->setHorizontalSpacing(2); diff --git a/src/widgets/widthbutton.cpp b/src/widgets/widthbutton.cpp index 18a1732..8b26510 100644 --- a/src/widgets/widthbutton.cpp +++ b/src/widgets/widthbutton.cpp @@ -1,20 +1,19 @@ #include "widthbutton.h" #include -#include "fmt/format.h" +#include +#include void WidthButton::setValue(int width) { width_ = std::clamp(width, min_, max_); - const double max_em = 2.5; - double width_em = ((double)width_ / max_) * 1.75; + auto __width = std::lround((width_ / static_cast(max_)) * 8); + if (__attr_width != __width && __width >= 1) { + setProperty("width", QVariant::fromValue(__width)); + style()->polish(this); - std::string style = fmt::format("WidthButton::indicator{{ height: {:2.1f}em; width: {:2.1f}em; margin: {:4.3f}em; border-radius: {:4.3f}em; }}", - width_em, width_em, (static_cast((max_em - width_em) * 49.9)) / 100.0, width_em * 0.485); - - setStyleSheet(QString::fromStdString(style)); - - update(); + emit changed(__width * 2 - 1); + } } void WidthButton::wheelEvent(QWheelEvent* event) @@ -24,6 +23,4 @@ void WidthButton::wheelEvent(QWheelEvent* event) width_ += event->angleDelta().y() / 120; setValue(width_); - - emit changed(width_); } diff --git a/src/widgets/widthbutton.h b/src/widgets/widthbutton.h index 249829c..119924e 100644 --- a/src/widgets/widthbutton.h +++ b/src/widgets/widthbutton.h @@ -6,10 +6,13 @@ class WidthButton : public QCheckBox { Q_OBJECT + + Q_PROPERTY(int width READ __r_attr_width WRITE __w_attr_width) + public: - explicit WidthButton(int width = 1, bool checkable = false, QWidget* parent = nullptr) - : QCheckBox(parent) { - setValue(width); + explicit WidthButton(bool checkable = false, QWidget* parent = nullptr) + : QCheckBox(parent) + { setCheckable(checkable); } @@ -28,10 +31,16 @@ public slots: protected: void wheelEvent(QWheelEvent*) override; + int __r_attr_width() const { return __attr_width; }; + void __w_attr_width(int w) { __attr_width = w; } + private: - int width_{ 2 }; - int max_{ 24 }; + int width_{ 3 }; + + int max_{ 16 }; int min_{ 1 }; + + int __attr_width{ 2 }; }; #endif // !WIDTH_BUTTON_H \ No newline at end of file