From eb41051bc5487e30f1bcd492474e45131a5b9147 Mon Sep 17 00:00:00 2001 From: Fawn Date: Thu, 20 Nov 2025 23:26:00 -0700 Subject: [PATCH] Make arrow "stepper" buttons themeable and use SVG assets (#8123) * SVG-ify arrow buttons These buttons are used in the instrument window, Vestige, and VST effects. Separate versions of the arrow icons are used for the classic theme. * Fix some unrelated SVG formatting and metadata * Revert accidental change to classic border radius * Add some XML stuff back to appease Github LMMS renders these SVGs just fine, but apparently the removal of the XML declaration completely breaks Github's ability to render the image, so I am adding these back for the sake of those who want to actually look at the diff on the website lmao * Attempt to fix Github SVG previews again (`xmlns`) * Fix crossover eq band mute button icon size You may ask, "what does this have to do with the arrow buttons?" and you would be right to assume this is unrelated. However, I'm already touching the relevant lines of the stylesheet so I may as well sneak it in there. * Add missing metadata to fader_knob.svg And fix mixed indentation in headphones.svg * Add missing `xmlns` to fader_knob.svg GRADIENTS!!!!!!!!!!!! * Fix classic theme arrow buttons The originals were right angle chevrons * Remove unused getters --- data/themes/classic/arrow-down.svg | 17 ++++++ data/themes/classic/arrow-left.svg | 17 ++++++ data/themes/classic/arrow-right.svg | 17 ++++++ data/themes/classic/arrow-up.svg | 17 ++++++ data/themes/classic/stepper-down-press.png | Bin 398 -> 0 bytes data/themes/classic/stepper-down.png | Bin 434 -> 0 bytes data/themes/classic/stepper-left-press.png | Bin 345 -> 0 bytes data/themes/classic/stepper-left.png | Bin 391 -> 0 bytes data/themes/classic/stepper-right-press.png | Bin 338 -> 0 bytes data/themes/classic/stepper-right.png | Bin 407 -> 0 bytes data/themes/classic/stepper-up-press.png | Bin 368 -> 0 bytes data/themes/classic/stepper-up.png | Bin 405 -> 0 bytes data/themes/classic/style.css | 52 ++++++++++++++--- data/themes/default/arrow-down.svg | 17 ++++++ data/themes/default/arrow-left.svg | 17 ++++++ data/themes/default/arrow-right.svg | 17 ++++++ data/themes/default/arrow-up.svg | 17 ++++++ data/themes/default/fader_knob.svg | 42 ++++++++------ data/themes/default/gear.svg | 39 +++++-------- data/themes/default/headphones.svg | 58 +++++-------------- data/themes/default/speaker.svg | 56 +++++------------- data/themes/default/speaker_slash.svg | 58 +++++-------------- data/themes/default/stepper-down-press.png | Bin 230 -> 0 bytes data/themes/default/stepper-down.png | Bin 237 -> 0 bytes data/themes/default/stepper-left-press.png | Bin 246 -> 0 bytes data/themes/default/stepper-left.png | Bin 253 -> 0 bytes data/themes/default/stepper-right-press.png | Bin 247 -> 0 bytes data/themes/default/stepper-right.png | Bin 253 -> 0 bytes data/themes/default/stepper-up-press.png | Bin 230 -> 0 bytes data/themes/default/stepper-up.png | Bin 236 -> 0 bytes data/themes/default/style.css | 53 ++++++++++++++--- include/LeftRightNav.h | 8 +-- plugins/Vestige/Vestige.cpp | 29 ++++------ plugins/Vestige/Vestige.h | 4 +- plugins/VstEffect/VstEffectControlDialog.cpp | 38 ++++-------- plugins/VstEffect/VstEffectControlDialog.h | 4 +- src/gui/widgets/LeftRightNav.cpp | 35 +++-------- 37 files changed, 350 insertions(+), 262 deletions(-) create mode 100644 data/themes/classic/arrow-down.svg create mode 100644 data/themes/classic/arrow-left.svg create mode 100644 data/themes/classic/arrow-right.svg create mode 100644 data/themes/classic/arrow-up.svg delete mode 100644 data/themes/classic/stepper-down-press.png delete mode 100644 data/themes/classic/stepper-down.png delete mode 100644 data/themes/classic/stepper-left-press.png delete mode 100644 data/themes/classic/stepper-left.png delete mode 100644 data/themes/classic/stepper-right-press.png delete mode 100644 data/themes/classic/stepper-right.png delete mode 100644 data/themes/classic/stepper-up-press.png delete mode 100644 data/themes/classic/stepper-up.png create mode 100644 data/themes/default/arrow-down.svg create mode 100644 data/themes/default/arrow-left.svg create mode 100644 data/themes/default/arrow-right.svg create mode 100644 data/themes/default/arrow-up.svg delete mode 100644 data/themes/default/stepper-down-press.png delete mode 100644 data/themes/default/stepper-down.png delete mode 100644 data/themes/default/stepper-left-press.png delete mode 100644 data/themes/default/stepper-left.png delete mode 100644 data/themes/default/stepper-right-press.png delete mode 100644 data/themes/default/stepper-right.png delete mode 100644 data/themes/default/stepper-up-press.png delete mode 100644 data/themes/default/stepper-up.png diff --git a/data/themes/classic/arrow-down.svg b/data/themes/classic/arrow-down.svg new file mode 100644 index 000000000..f875cbc22 --- /dev/null +++ b/data/themes/classic/arrow-down.svg @@ -0,0 +1,17 @@ + + + + + + Downward-facing arrow + Fawn Sannar + + + + + + + + + + diff --git a/data/themes/classic/arrow-left.svg b/data/themes/classic/arrow-left.svg new file mode 100644 index 000000000..16c1db009 --- /dev/null +++ b/data/themes/classic/arrow-left.svg @@ -0,0 +1,17 @@ + + + + + + Left-facing arrow + Fawn Sannar + + + + + + + + + + diff --git a/data/themes/classic/arrow-right.svg b/data/themes/classic/arrow-right.svg new file mode 100644 index 000000000..973cac9a4 --- /dev/null +++ b/data/themes/classic/arrow-right.svg @@ -0,0 +1,17 @@ + + + + + + Right-facing arrow + Fawn Sannar + + + + + + + + + + diff --git a/data/themes/classic/arrow-up.svg b/data/themes/classic/arrow-up.svg new file mode 100644 index 000000000..444d5e322 --- /dev/null +++ b/data/themes/classic/arrow-up.svg @@ -0,0 +1,17 @@ + + + + + + Upward-facing arrow + Fawn Sannar + + + + + + + + + + diff --git a/data/themes/classic/stepper-down-press.png b/data/themes/classic/stepper-down-press.png deleted file mode 100644 index d0affa54c5744461e4859341d9f5bc7d24961a1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 398 zcmV;90df9`P)G^2cXCgAPWO)c~SB( zGze%s9;>RVtDRY!rqN_F;T_1r2-fmEzqpDb@NAK!KU~LZuSC2Lr3{=;(mdhogKK016 z!cZIG&q1!r)oI->3LVunhR~+FqFKa2Gu4!rQ_!;C~rFd<=+xVNrw&|AgvE s2N}Q!#Nj}E86rs-L)8ZV|Nox>04Fe6eZ_6?6aWAK07*qoM6N<$f|C`kng9R* diff --git a/data/themes/classic/stepper-down.png b/data/themes/classic/stepper-down.png deleted file mode 100644 index 4f0ec4ebded16a5abe370a36cbfe3eda28b00bc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 434 zcmV;j0ZsmiP)|&IEm-;5g7?V23=+T&Wy1w z{eLN?q|_#LT`QSs%qEkmrgg2Lpt^kPe~n_!rYz$Jh%|1LtmxgHQ8oq?w@4IniIVbg0FdUhKs*uT1(2J>(ZR;VhXZcsN0jnYuMg>DU6V_~dCK%qC{lX!4ANfIJOmSqq{fubl; zO6g>>Vqs0PhGYs#X(#w1emKm;am?@(EOF#QKnRv?Lg|GB3&41Rm+&Mk*~xZco>=wZqGf3Nc|X?IqD04T5Z00000NkvXXu0mjfa^9Fx diff --git a/data/themes/classic/stepper-left.png b/data/themes/classic/stepper-left.png deleted file mode 100644 index c4f2820b827678bd7cf1e908facafb6912d3f379..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 391 zcmV;20eJq2P)b<842D0O1lX96C<_Z}572`!bSQ9vjvczUw*gj04#8Bx&dNrHC{xl{^?Oo?+Di17 zEX&XS|MwExGM!EZcmdvlJ5?o3Q#zf5Zm)-mAgY+DxQ`}CE$|Gy0*@lnO_BtVTA)Lc zCWv?;MwX@^-vXb&gNUTH5zGW)?6-&51hLo!Dj+5SFH-Xs;HO@Ldj*LC1Y$#IJRY-H zEI1qv>~=d;?Nt>Zfq(|0eS1JvRg6X>jGX5=`~BX}%i4&rAhOD`G@(ddE|(NV!Fs(W z%QAj~h8xWS=JPp|$%O58%jI(63XNKYzab*Oy`ZhS*=#tSPRwRA27`g+T%;|i5D^Q{ z=QFF-ihjS3{m9{P7`tr@}&R(002ovPDHLkV1kT*ukio? diff --git a/data/themes/classic/stepper-right-press.png b/data/themes/classic/stepper-right-press.png deleted file mode 100644 index 003825136e2fe9c8443cf7bf192b0901679f8c2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 338 zcmV-Y0j>UtP)TuC6h`SLp1&X}5ZH&Vpo40RPTQfY>;~Q*x`%f1m21S%#P&6DaH5Hv@5;TvtaC8d zK^qID4O*qqvy*;Cw$kWqb~bv%fm+!Ih)@ k<+)$IOfOfi^PA`C8}d+Ded37gU;qFB07*qoM6N<$f=B(B(f|Me diff --git a/data/themes/classic/stepper-right.png b/data/themes/classic/stepper-right.png deleted file mode 100644 index f7f98d1725d772a95d1168228035482150bbcfa5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 407 zcmV;I0cie-P) z#dX9$5Ctcf1u-)(W#AxuRwQOlL=iXv=inTC`kpUo-ZR6Y7FE?P5ZnC$-FA=03j+V6jhD9D3N735=wE3D2@??5&R&4 zZ96awQ(|DXS~2hb)8!O_W&=HBFi$IpP%FI?hZ}UP-f)o0A&^6y8O)d{eF*O7;trUr2>5aJ;3*W z1<0GgkEfs_KL+Z$etQw$iv0ggV0uty%=v!ncwK&eK3KD(qa!E=aL0l^Fx5fQ0yrH& z6A#2tErhFJ24EOMNmBj=O3IXGrf^EKa|RGI0swxfl^61LUT6RS002ovPDHLkV1kHA BtV;j@ diff --git a/data/themes/classic/stepper-up-press.png b/data/themes/classic/stepper-up-press.png deleted file mode 100644 index 9f72354d8923f7993f8893a1cc638742ae146262..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368 zcmV-$0gwKPP)#Q%xGP_^NJPRSsrLLdgiZD9>;2&~mJ5Dvgy^om@-upk@*mTZxLIDabx znD|Iu<#U?Oe5FI4gCV~=J{@2G30anbb8Y^0KG2|td_8m(L7wNA8XUOfi%$Son3+U` zurk|v7iUL;AV7%_BJ2-DQAAZ$0pz|85OCm%2>w~eJs^~2Nokq_&Eq&ezug?TVHjcz z-#JMV6_#b8x~>6o)UfBLfTJ!vrepM?C}^H%YMO?|aRkUw(>)7w;0iGwc8HdTVW6(- zXqqPfp^&$2OMTy)Eas^D^7^)YuPd#N&HW)qY}=;%4ct2j3;}v~JhmKP+42iE5dm{h z(@j$!%HRlf_6Bwzu{-JJ{f~&%fh(5m6X3vY13&HYVloNqL*Hb77VZy!xR3U%wM9<= O0000#Q%xGP_^NJy2u_kfgpy$Z#}!=3P6iMTnRy+l-z@J&>?y*kQ=}aNJT|~ zv?(3+Z5(epooc;atM7a5b~{9lM=eeO18e4nVfwmS zt@L<2wBPS_y$ws5o z>7?83CgS;g#=n3^O=4GPUV|KryRqvl+(S`Ik;7yb@q_6GYYA5xvb^SuvpLE;fd){W zBx-U0a)5kyy#ZBt-dhgv=kSkW4OFy?4+i!RLvN|V4(5Kx00000NkvXXu0mjfqF=Kk diff --git a/data/themes/classic/style.css b/data/themes/classic/style.css index d5ebfc8d2..ea19f5ccb 100644 --- a/data/themes/classic/style.css +++ b/data/themes/classic/style.css @@ -373,27 +373,47 @@ lmms--gui--TrackContentWidget { qproperty-embossOffset: 0; } - -/* gear button in tracks */ - - /* 20px = 1px border + 2px padding + 14px icon + 2px padding + 1px border */ QPushButton#btn-mute, +QPushButton#btn-mute-inv, QPushButton#btn-mute-inv:checked, QPushButton#btn-solo, lmms--gui--TrackOperationsWidget QPushButton { + padding: 2; min-height: 14; max-height: 14; min-width: 14; max-width: 14; +} + +/* 16px = 1px border + 2px padding + 10px icon + 2px padding + 1px border */ +QPushButton#btn-stepper-down, +QPushButton#btn-stepper-left, +QPushButton#btn-stepper-right { padding: 2; - border: 1 solid #0f1621; - border-top: 1 solid #18202b; - border-bottom: 1 solid #02060f; + min-height: 10; + max-height: 10; + min-width: 10; + max-width: 10; +} + +QPushButton#btn-stepper-down, +QPushButton#btn-stepper-left, +QPushButton#btn-stepper-right, +QPushButton#btn-mute, +QPushButton#btn-mute-inv:checked, +QPushButton#btn-solo, +lmms--gui--TrackOperationsWidget QPushButton { + border: 1 solid #12161d; + border-top: 1 solid #191d24; + border-bottom: 1 solid #0c1016; border-radius: 4; background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgba(255, 255, 255, 20%), stop:0.1 rgba(255, 255, 255, 2%), stop:0.9 rgba(0, 0, 0, 2%), stop:1 rgba(0, 0, 0, 40%)); } +QPushButton#btn-stepper-down::menu-indicator, +QPushButton#btn-stepper-left::menu-indicator, +QPushButton#btn-stepper-right::menu-indicator, lmms--gui--TrackOperationsWidget QPushButton::menu-indicator { image: none; } @@ -411,12 +431,30 @@ QPushButton#btn-solo { image: url("resources:headphones.svg"); } +QPushButton#btn-stepper-left { + image: url("resources:arrow-left.svg"); +} + +QPushButton#btn-stepper-right { + image: url("resources:arrow-right.svg"); +} + +QPushButton#btn-stepper-down { + image: url("resources:arrow-down.svg"); +} + +QPushButton#btn-stepper-down:hover, +QPushButton#btn-stepper-left:hover, +QPushButton#btn-stepper-right:hover, QPushButton#btn-mute:hover, QPushButton#btn-solo:hover, lmms--gui--TrackOperationsWidget QPushButton:hover { background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgba(255, 255, 255, 25%), stop:0.1 rgba(255, 255, 255, 7%), stop:0.9 transparent, stop:1 rgba(0, 0, 0, 35%)); } +QPushButton#btn-stepper-down:pressed, +QPushButton#btn-stepper-left:pressed, +QPushButton#btn-stepper-right:pressed, lmms--gui--TrackOperationsWidget QPushButton:pressed { background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgba(0, 0, 0, 25%), stop:0.1 transparent, stop:0.8 rgba(0, 0, 0, 15%), stop:1 rgba(0, 0, 0, 35%)); } diff --git a/data/themes/default/arrow-down.svg b/data/themes/default/arrow-down.svg new file mode 100644 index 000000000..5c72014d7 --- /dev/null +++ b/data/themes/default/arrow-down.svg @@ -0,0 +1,17 @@ + + + + + + Downward-facing arrow + Fawn Sannar + + + + + + + + + + diff --git a/data/themes/default/arrow-left.svg b/data/themes/default/arrow-left.svg new file mode 100644 index 000000000..7de43b16e --- /dev/null +++ b/data/themes/default/arrow-left.svg @@ -0,0 +1,17 @@ + + + + + + Left-facing arrow + Fawn Sannar + + + + + + + + + + diff --git a/data/themes/default/arrow-right.svg b/data/themes/default/arrow-right.svg new file mode 100644 index 000000000..dd307b6cf --- /dev/null +++ b/data/themes/default/arrow-right.svg @@ -0,0 +1,17 @@ + + + + + + Right-facing arrow + Fawn Sannar + + + + + + + + + + diff --git a/data/themes/default/arrow-up.svg b/data/themes/default/arrow-up.svg new file mode 100644 index 000000000..1ba46c355 --- /dev/null +++ b/data/themes/default/arrow-up.svg @@ -0,0 +1,17 @@ + + + + + + Upward-facing arrow + Fawn Sannar + + + + + + + + + + diff --git a/data/themes/default/fader_knob.svg b/data/themes/default/fader_knob.svg index 8a5d9e908..26ab58ca7 100644 --- a/data/themes/default/fader_knob.svg +++ b/data/themes/default/fader_knob.svg @@ -1,18 +1,26 @@ - - - - - - - - - - - - - - - - - + + + + + + Headphones icon + Rebecca Noel Ati + + + + + + + + + + + + + + + + + + diff --git a/data/themes/default/gear.svg b/data/themes/default/gear.svg index dfcd7d4d9..97c80ec46 100644 --- a/data/themes/default/gear.svg +++ b/data/themes/default/gear.svg @@ -1,26 +1,17 @@ - - - - - - - - Fawn Sannar - - - - - - - - - - - + + + + + Gear icon + Fawn Sannar + + + + + + + + + diff --git a/data/themes/default/headphones.svg b/data/themes/default/headphones.svg index ecdc5a18e..b4f699461 100644 --- a/data/themes/default/headphones.svg +++ b/data/themes/default/headphones.svg @@ -1,44 +1,18 @@ - - LMMS solo button (inactive) - - - - - LMMS solo button (inactive) - - - Rebecca Noel Ati, Stakeout Punch - - - - - - - - - - + + + + + Headphones icon + Rebecca Noel Ati + Stakeout Punch + + + + + + + + + diff --git a/data/themes/default/speaker.svg b/data/themes/default/speaker.svg index 1f43f5517..73db489a7 100644 --- a/data/themes/default/speaker.svg +++ b/data/themes/default/speaker.svg @@ -1,42 +1,18 @@ - - LMMS mute button (inactive) - - - - - LMMS mute button (inactive) - - - Rebecca Noel Ati, Stakeout Punch - - - - - - - - - - + + + + + Speaker icon + Rebecca Noel Ati + Stakeout Punch + + + + + + + + + diff --git a/data/themes/default/speaker_slash.svg b/data/themes/default/speaker_slash.svg index 9b42db7ac..b933de209 100644 --- a/data/themes/default/speaker_slash.svg +++ b/data/themes/default/speaker_slash.svg @@ -1,44 +1,18 @@ - - LMMS mute button (active) - - - - - LMMS mute button (active) - - - Rebecca Noel Ati, Stakeout Punch - - - - - - - - - - + + + + + Muted speaker icon + Rebecca Noel Ati + Stakeout Punch + + + + + + + + + diff --git a/data/themes/default/stepper-down-press.png b/data/themes/default/stepper-down-press.png deleted file mode 100644 index 91c1d638b019024801bbe647534637a395f46f0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 230 zcmVgAu+6ZesweJGM0D{e4{K7i;xBGt)s5M#-EZcb*`|qCrL!eS? zyf7^rWB>l$KM0ho^>_TC@8fp_N|mYz0>x5A1c7|9B!WOTSKwT}sKehNpi=1!r!!eC g{^mN6UW&6b0MpF diff --git a/data/themes/default/stepper-down.png b/data/themes/default/stepper-down.png deleted file mode 100644 index 89a77bdc4ebd31b57ff0a42cb5f7bff6f50942a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`TRdGHLn;{OoN1lNx1idQ}0v^w_bU0KtrQVP|_vKy2`@H?G3iI^t-F)ZYAN}^`<#G;};GgQV z{|Y9*{dLux!)4OW>1MkZKYLrva_A!uH`Bt1S*(o?Dkqy7^hK2GE%cmkD=7TS^(*?_ k6r{)elJVtI3u|Tu-_WKvC6f}8fbM7TboFyt=akR{0A2uJUH||9 diff --git a/data/themes/default/stepper-left-press.png b/data/themes/default/stepper-left-press.png deleted file mode 100644 index 502f9021ab540830126aa139c77807e33362eacd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`dp%toLn;`TPIeVKY{0{C`plU- z$vaXfyT9_aO|DeR zIbJsRK!S-cE8DNbo*KInC*C)_Alt)qkw^H=!ZL{$U)oe=FVdQ&MBb@0G#1v1^@s6 diff --git a/data/themes/default/stepper-left.png b/data/themes/default/stepper-left.png deleted file mode 100644 index b52e1b311704a9e234b888d91633287c0da10f6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`M?75|Ln;`TPG;V8BtU?nxGn#7 zeXjIU+vqdWdxOumZJt%J%4*j2Sf2Fr2ik5rc+GfUwC2)_LpggrTOa=rwpeE1h^;~27~cD_w>qFD>rEFQqxb9&HYj_q^q@j9-(m**fds+-R2r1xD>*yL)z4*}Q$iB}yb)(6 diff --git a/data/themes/default/stepper-right.png b/data/themes/default/stepper-right.png deleted file mode 100644 index fd9030669ad55d8047cf14cd82f2d257b4d7db23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`M?75|Ln;{O^t4`VF_3V1`FMJ9 zdHME@t9h^YWpK6I{xlLQd!~5vjqsry=Q{%Ph0X7By(`%D>3qMs_(ip;9RD&lez#t% z3S{3p*7Pl59ydqSUrk42*=Ikk1x$7&JBeJ~5GmWR;GU%5rWLzfckys!tz~>@+m&YY z-XS3K8^`;Jrp=Y?O+|~n4@8)HOlNdlc}>k_qR8B|cm3=e2uhXO z4W?!DeRP6D3jhEB diff --git a/data/themes/default/stepper-up.png b/data/themes/default/stepper-up.png deleted file mode 100644 index 778ee4a64c7c6020042ca8a261dcd0d1daad943c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 236 zcmV<#sTYkv&R!j m|1T*cPZ9>{0qLbUI|Be^z|KN|@}blK0000 QLabel { diff --git a/include/LeftRightNav.h b/include/LeftRightNav.h index 49ad25ecf..fdc141159 100644 --- a/include/LeftRightNav.h +++ b/include/LeftRightNav.h @@ -25,7 +25,7 @@ #ifndef LMMS_GUI_LEFT_RIGHT_NAV_H #define LMMS_GUI_LEFT_RIGHT_NAV_H -#include "PixmapButton.h" +#include namespace lmms::gui @@ -36,16 +36,14 @@ class LeftRightNav : public QWidget Q_OBJECT public: LeftRightNav(QWidget *parent=nullptr); - PixmapButton* getLeftBtn(); - PixmapButton* getRightBtn(); void setShortcuts(const QKeySequence &leftShortcut=Qt::Key_Minus, const QKeySequence &rightShortcut=Qt::Key_Plus); signals: void onNavLeft(); void onNavRight(); private: QHBoxLayout m_layout; - PixmapButton m_leftBtn; - PixmapButton m_rightBtn; + QPushButton m_leftBtn; + QPushButton m_rightBtn; }; diff --git a/plugins/Vestige/Vestige.cpp b/plugins/Vestige/Vestige.cpp index 343db4ceb..a71f5efd8 100644 --- a/plugins/Vestige/Vestige.cpp +++ b/plugins/Vestige/Vestige.cpp @@ -532,14 +532,10 @@ VestigeInstrumentView::VestigeInstrumentView( Instrument * _instrument, m_openPresetButton->setToolTip(tr("Open VST plugin preset")); - m_rolLPresetButton = new PixmapButton( this, "" ); - m_rolLPresetButton->setCheckable( false ); - m_rolLPresetButton->setCursor( Qt::PointingHandCursor ); + m_rolLPresetButton = new QPushButton(this); + m_rolLPresetButton->setObjectName("btn-stepper-left"); + m_rolLPresetButton->setCursor(Qt::PointingHandCursor); m_rolLPresetButton->move( 190, 201 ); - m_rolLPresetButton->setActiveGraphic( embed::getIconPixmap( - "stepper-left-press" ) ); - m_rolLPresetButton->setInactiveGraphic( embed::getIconPixmap( - "stepper-left" ) ); connect( m_rolLPresetButton, SIGNAL( clicked() ), this, SLOT( previousProgram() ) ); m_rolLPresetButton->setToolTip(tr("Previous (-)")); @@ -560,14 +556,10 @@ VestigeInstrumentView::VestigeInstrumentView( Instrument * _instrument, m_savePresetButton->setToolTip(tr("Save preset")); - m_rolRPresetButton = new PixmapButton( this, "" ); - m_rolRPresetButton->setCheckable( false ); - m_rolRPresetButton->setCursor( Qt::PointingHandCursor ); + m_rolRPresetButton = new QPushButton(this); + m_rolRPresetButton->setObjectName("btn-stepper-right"); + m_rolRPresetButton->setCursor(Qt::PointingHandCursor); m_rolRPresetButton->move( 209, 201 ); - m_rolRPresetButton->setActiveGraphic( embed::getIconPixmap( - "stepper-right-press" ) ); - m_rolRPresetButton->setInactiveGraphic( embed::getIconPixmap( - "stepper-right" ) ); connect( m_rolRPresetButton, SIGNAL( clicked() ), this, SLOT( nextProgram() ) ); m_rolRPresetButton->setToolTip(tr("Next (+)")); @@ -575,16 +567,15 @@ VestigeInstrumentView::VestigeInstrumentView( Instrument * _instrument, m_rolRPresetButton->setShortcut( Qt::Key_Plus ); - m_selPresetButton = new QPushButton( tr( "" ), this ); - m_selPresetButton->setGeometry( 228, 201, 16, 16 ); + m_selPresetButton = new QPushButton(this); + m_selPresetButton->setObjectName("btn-stepper-down"); + m_selPresetButton->setCursor(Qt::PointingHandCursor); + m_selPresetButton->move(228, 201); auto menu = new QMenu; connect( menu, SIGNAL( aboutToShow() ), this, SLOT( updateMenu() ) ); - - m_selPresetButton->setIcon( embed::getIconPixmap( "stepper-down" ) ); - m_selPresetButton->setMenu(menu); m_toggleGUIButton = new QPushButton( tr( "Show/hide GUI" ), this ); diff --git a/plugins/Vestige/Vestige.h b/plugins/Vestige/Vestige.h index 95d942755..69833065e 100644 --- a/plugins/Vestige/Vestige.h +++ b/plugins/Vestige/Vestige.h @@ -174,8 +174,8 @@ private: PixmapButton * m_openPluginButton; PixmapButton * m_openPresetButton; - PixmapButton * m_rolLPresetButton; - PixmapButton * m_rolRPresetButton; + QPushButton* m_rolLPresetButton; + QPushButton* m_rolRPresetButton; QPushButton * m_selPresetButton; QPushButton * m_toggleGUIButton; PixmapButton * m_managePluginButton; diff --git a/plugins/VstEffect/VstEffectControlDialog.cpp b/plugins/VstEffect/VstEffectControlDialog.cpp index be8abb711..957adfaad 100644 --- a/plugins/VstEffect/VstEffectControlDialog.cpp +++ b/plugins/VstEffect/VstEffectControlDialog.cpp @@ -123,13 +123,9 @@ VstEffectControlDialog::VstEffectControlDialog( VstEffectControls * _ctl ) : m_openPresetButton->setMinimumHeight( 16 ); m_openPresetButton->setMaximumHeight( 16 ); - m_rolLPresetButton = new PixmapButton( this, "" ); - m_rolLPresetButton->setCheckable( false ); - m_rolLPresetButton->setCursor( Qt::PointingHandCursor ); - m_rolLPresetButton->setActiveGraphic( embed::getIconPixmap( - "stepper-left-press" ) ); - m_rolLPresetButton->setInactiveGraphic( embed::getIconPixmap( - "stepper-left" ) ); + m_rolLPresetButton = new QPushButton(this); + m_rolLPresetButton->setObjectName("btn-stepper-left"); + m_rolLPresetButton->setCursor(Qt::PointingHandCursor); connect( m_rolLPresetButton, SIGNAL( clicked() ), _ctl, SLOT( rolrPreset() ) ); @@ -140,18 +136,10 @@ VstEffectControlDialog::VstEffectControlDialog( VstEffectControls * _ctl ) : m_rolLPresetButton->setShortcut( Qt::Key_Minus ); - m_rolLPresetButton->setMinimumWidth( 16 ); - m_rolLPresetButton->setMaximumWidth( 16 ); - m_rolLPresetButton->setMinimumHeight( 16 ); - m_rolLPresetButton->setMaximumHeight( 16 ); - m_rolRPresetButton = new PixmapButton( this, "" ); - m_rolRPresetButton->setCheckable( false ); - m_rolRPresetButton->setCursor( Qt::PointingHandCursor ); - m_rolRPresetButton->setActiveGraphic( embed::getIconPixmap( - "stepper-right-press" ) ); - m_rolRPresetButton->setInactiveGraphic( embed::getIconPixmap( - "stepper-right" ) ); + m_rolRPresetButton = new QPushButton(this); + m_rolRPresetButton->setObjectName("btn-stepper-right"); + m_rolRPresetButton->setCursor(Qt::PointingHandCursor); connect( m_rolRPresetButton, SIGNAL( clicked() ), _ctl, SLOT( rollPreset() ) ); @@ -162,16 +150,10 @@ VstEffectControlDialog::VstEffectControlDialog( VstEffectControls * _ctl ) : m_rolRPresetButton->setShortcut( Qt::Key_Plus ); - m_rolRPresetButton->setMinimumWidth( 16 ); - m_rolRPresetButton->setMaximumWidth( 16 ); - m_rolRPresetButton->setMinimumHeight( 16 ); - m_rolRPresetButton->setMaximumHeight( 16 ); - _ctl->m_selPresetButton = new QPushButton( tr( "" ), this ); - - _ctl->m_selPresetButton->setCheckable( false ); - _ctl->m_selPresetButton->setCursor( Qt::PointingHandCursor ); - _ctl->m_selPresetButton->setIcon( embed::getIconPixmap( "stepper-down" ) ); + _ctl->m_selPresetButton = new QPushButton(this); + _ctl->m_selPresetButton->setObjectName("btn-stepper-down"); + _ctl->m_selPresetButton->setCursor(Qt::PointingHandCursor); auto menu = new QMenu; connect( menu, SIGNAL( aboutToShow() ), _ctl, SLOT( updateMenu() ) ); @@ -299,4 +281,4 @@ void VstEffectControlDialog::togglePluginUI( bool checked ) } -} // namespace lmms::gui \ No newline at end of file +} // namespace lmms::gui diff --git a/plugins/VstEffect/VstEffectControlDialog.h b/plugins/VstEffect/VstEffectControlDialog.h index 9d19dad1b..73ceacf42 100644 --- a/plugins/VstEffect/VstEffectControlDialog.h +++ b/plugins/VstEffect/VstEffectControlDialog.h @@ -60,8 +60,8 @@ private: QPushButton * m_togglePluginButton; PixmapButton * m_openPresetButton; - PixmapButton * m_rolLPresetButton; - PixmapButton * m_rolRPresetButton; + QPushButton* m_rolLPresetButton; + QPushButton* m_rolRPresetButton; PixmapButton * m_managePluginButton; PixmapButton * m_savePresetButton; diff --git a/src/gui/widgets/LeftRightNav.cpp b/src/gui/widgets/LeftRightNav.cpp index 30f7106d3..289b199ab 100644 --- a/src/gui/widgets/LeftRightNav.cpp +++ b/src/gui/widgets/LeftRightNav.cpp @@ -33,30 +33,23 @@ namespace lmms::gui LeftRightNav::LeftRightNav(QWidget *parent) - : QWidget(parent), - m_layout(this), - m_leftBtn(this, tr("Previous")), - m_rightBtn(this, tr("Next")) + : QWidget(parent) + , m_layout(this) + , m_leftBtn(this) + , m_rightBtn(this) { m_layout.setContentsMargins(0, 0, 0, 0); m_layout.setSpacing(2); + m_leftBtn.setObjectName("btn-stepper-left"); + m_rightBtn.setObjectName("btn-stepper-right"); + m_leftBtn.setCheckable(false); m_rightBtn.setCheckable(false); m_leftBtn.setCursor(Qt::PointingHandCursor); m_rightBtn.setCursor(Qt::PointingHandCursor); - m_leftBtn.setActiveGraphic(embed::getIconPixmap( - "stepper-left-press")); - m_rightBtn.setActiveGraphic(embed::getIconPixmap( - "stepper-right-press" )); - - m_leftBtn.setInactiveGraphic(embed::getIconPixmap( - "stepper-left" )); - m_rightBtn.setInactiveGraphic(embed::getIconPixmap( - "stepper-right")); - connect(&m_leftBtn, SIGNAL(clicked()), this, SIGNAL(onNavLeft())); connect(&m_rightBtn, SIGNAL(clicked()), this, @@ -65,10 +58,8 @@ LeftRightNav::LeftRightNav(QWidget *parent) m_leftBtn.setToolTip(tr("Previous")); m_rightBtn.setToolTip(tr("Next")); - m_leftBtn.setWindowTitle(tr("Previous")); - m_rightBtn.setWindowTitle(tr("Next")); - - // AutomatableButton's right click menu (contains irrelevant options like copying and pasting values) + // The context menu contains irrelevant options for these buttons, + // such as copying and pasting values m_leftBtn.setContextMenuPolicy(Qt::NoContextMenu); m_rightBtn.setContextMenuPolicy(Qt::NoContextMenu); @@ -76,14 +67,6 @@ LeftRightNav::LeftRightNav(QWidget *parent) m_layout.addWidget(&m_rightBtn); } -PixmapButton* LeftRightNav::getLeftBtn() -{ - return &m_leftBtn; -} -PixmapButton* LeftRightNav::getRightBtn() -{ - return &m_rightBtn; -} void LeftRightNav::setShortcuts(const QKeySequence &leftShortcut, const QKeySequence &rightShortcut) {