From 5fa13d5b79b674f5c1065153fc83c9e8ac268b37 Mon Sep 17 00:00:00 2001 From: SiboVG Date: Sun, 24 Sep 2023 22:46:48 +0200 Subject: [PATCH 01/16] Add JVM parameters to fix 3D issue on Windows --- install4j/23.09/openrocket-23.09.install4j | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install4j/23.09/openrocket-23.09.install4j b/install4j/23.09/openrocket-23.09.install4j index e609e716c..fd9c9dcc8 100644 --- a/install4j/23.09/openrocket-23.09.install4j +++ b/install4j/23.09/openrocket-23.09.install4j @@ -29,7 +29,7 @@ - + From 74d3eecee602726a5100f206cc869659ec130dd0 Mon Sep 17 00:00:00 2001 From: SiboVG Date: Mon, 25 Sep 2023 23:43:33 +0200 Subject: [PATCH 02/16] Fix CG z position in top view --- swing/src/net/sf/openrocket/gui/scalefigure/RocketPanel.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/swing/src/net/sf/openrocket/gui/scalefigure/RocketPanel.java b/swing/src/net/sf/openrocket/gui/scalefigure/RocketPanel.java index 7cf764261..72e2fff73 100644 --- a/swing/src/net/sf/openrocket/gui/scalefigure/RocketPanel.java +++ b/swing/src/net/sf/openrocket/gui/scalefigure/RocketPanel.java @@ -790,6 +790,11 @@ public class RocketPanel extends JPanel implements TreeSelectionListener, Change cgy = cg.y * Math.cos(rotation) + cg.z*Math.sin(rotation); } + // We need to flip the y coordinate if we are in top view + if (figure.getCurrentViewType() == RocketPanel.VIEW_TYPE.TopView) { + cgy = -cgy; + } + double length = curConfig.getLength(); double diameter = Double.NaN; From b46269a82d4ded6262bd87f7351311f54f4a9da0 Mon Sep 17 00:00:00 2001 From: Neil Weinstock Date: Tue, 26 Sep 2023 10:33:37 -0400 Subject: [PATCH 03/16] Cleaned-up tubefin icons Fixed some defects and also made them suitable for dark mode as well as light --- .../pix/componenticons/tubefin-large.png | Bin 1781 -> 1722 bytes .../pix/componenticons/tubefin-small.png | Bin 692 -> 1722 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/core/resources/pix/componenticons/tubefin-large.png b/core/resources/pix/componenticons/tubefin-large.png index 76120e2581c54b82c92fa1105435a30d83f56fe2..2210d64a54e79dc234bbae92f43ff65a7a267559 100644 GIT binary patch literal 1722 zcmeAS@N?(olHy`uVBq!ia0vp^azM<@!3HEVv~9b96k~CayA#8@b22Z1oMWjGo@u_m z3|c@o2Ll_U5Cbzv2@oH=Hw=pzU{o0_9jHuz<}F0kStOU_{uzfC+A%+yZ7e zn;WQ(!N|bK*vi1t%E(l~(A3Jv(#qJJAuRiE5>Se>z$3Dlfq_2}gc(=ZFVAFPVBVA& z5>XQ2>tmIipR1RclAn~SSCLx)GKs;a!V1XDO)W`OsL0L9E4HezRRXK90GK4GQ<#=IWDQi$wiq3C7Jno3LtY6lk!VT zY?YKi7Qq3;oh6xR2%GYXq22;|P#+|tZ>VRWk4+oUvvBvJ=&DF8z^N&&IbiD|zp?R4lc1BR^ z(1g)-`4?rT0^TjvNABWGBH3l1w}2AIiLu%0{bAs zB{MfQuNV|v#z3pFN?_F(iO^_hh^!Gw0;WmtZ+7-AuKbnb|n=eNL{;^dM`~4>xCizjtQO+?lb9>V+=8*ju+h zKKsh`52sU%c%PdmttzpQnb+atzNPmoZ?CIuaAas_W&dBxby^d*Z1DKDJ}o}~eocms zi}h~nH;+rI?@S5ZoKxQoQt|Hg!IUextlMwoZJ)gOs$(~I_m(YtQoI7|e+Hla+P$}# zF z7qoKHMXjlOpB0^6>2OGrrOL5?iEWY5;kfA7#jEd3-Pdz8X_s02k=dW(Y~+@&JExah zmS@(#*t>x7T;;K;`ll}BKafoET@kVR@4kOES=z1#Cn`*vf9UGfS?0fgv(>Ox*f)wF zD4(+Pk)}l6117%@23n11higdsxlA*H+JI(~v!3`@@eM?;M05JaIj6 zRa*S;6<2Q+A-yfW|4;lgdYobu86?u0ekAmMGkc!t_J?dA4q86gCf6ujpi@}1q5gvI u-!Sbw|F>q!({9KYzBQ=aW_dtV+>W98-95L4maWpD;@8vF&t;ucLK6VbfHP?T literal 1781 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D28u~UK~!i%?N?b( zTUQVsZ`futHv480$SwuapsLQ+D2m!B{D4HF%1a|9&C*{`Da~W0zEw&U@|ZL)JTy>J zC3y%uv`zXFH49rGLNQn9FnGEB=J=kgdkqL|Dn(WONn@Wm_ujc@&dhvsF6EFz z4mtdPp(u(Ok_WLvEb6oYm^Z0IZLFVTKo@pYbyF}H$OMOchbDtFK`JjV$D31gN>ULc zg%p#?Y=ZHWdFX~QBVEU{lvI*Qi^XDQy{)aS`r5T?S+8$HB;tv@_V)IL^Pitrrl+Ts zsi`S!-qtWZHLZ>WupNpb?W?cd5E*;?{Ez3#$jAuUY&NQ?t)X4Jc2R64MsAN=y(4oh zEG+N_QHi@mogup4b6?nRZEfAu8bug0!O+kU?cTkccJACs!^6W=SXe01<6Y#PdPn9c zDk`E_JVw!_s5(QM{mmj{M@Ie{q3Y^ts;sP}*RNlTIgiIfp>Rm-YPR57o1L4bWFjea zz5UG~V@Jlv#>rLU5@|3oF`>>9)zs8bU^1X;*`cuzo9Xs9LdK4OSp?%GlS#6e zjSTDcdTDHIOx3bOeOcH{bt8adh**7krJh)rOc%Q zoMNESl+#(zFi(NFXmN3oPM$nTX*4Xyn`Sf(ddj_f_pUNDIHU~p4=Cr(ozrOY-=<+i zMEtKo!<Dqla|-_;GSN zoisBuL;22pGMh8z5rKk&0-BnhqQZhgQD0VzRoL(A>-!d$4U1PHB4U{A>FLQ|US8gB zGMQTE=jZno7Z>kE>g<7Dqu!DNo_g@}1G@434YA;h7cWvrM~8Zm1aoofZ3TK8Z2#7+ zTa_5bb;3=Hg~vvWkB>XCqaV%9&0WF&4K$?QnP6}dxvNNtEJTz@B%)lna6v)yQWA-T za_NgpqA>OF`~B)DJFso6N3)OR)kCTv9!L?y3DHi-tKyH{H!*cutya-(mykv)D=UId zSIhMz(0qvMz5EU%WIxCjoL2k}oqbMw7A|%!30Wrss~o{%WAKHmjjJ}~ zcDv_L6EooSS!~oC3u@-?rluwW<XuUNj$3uFQlrniUNVHb$gwCc7h$yJE1vZ zsF8tzfjmUP3um??q_vo;gH!zP0he3scDorhV}>KF(lSZXgDgKiFu>EO&Muvd%}2^e)dx*TtW1Rh(LPez?<& zAupU|V@HrSCa{AQ>12KT_N@&?pNECovHK3xLmr&6&Cbr+;HcGA?6P|sypJ4qhvV{< z%i>6p?XF9pvr|Q7g{q}+{p;&=_{ia}PMtc{2~|2Gonppf-RKCwIt%9@3m29wGG+*^ z*lDhZm>j0M@Ollp@Hh_>j_j#E|&`rC=?EbaXCAbl$20B5hqZ*Is^8D z{a`TY!%#+o*CKm}nvbg;kr(ui@PoVqayK|9qy91f3qJAkM-?1-fjKHGE2GG}h~bEl zDJm)|1UW26MaBsGXpYY@)JKAy;I*Z`!hp3R!jMkLh_FaUL{y$Vdlts=B5$ChZ9Kd|f$yRf0!=P=%b={#t<2#)iLyzqf3iR$F^<|X7DLw|qIPd#j3@g4FF;*#D0hNf@i$hzq6?&gMQ;TNJI zDrksFm=*TW3x XyBS;JSU}da00000NkvXXu0mjf8Ea(w diff --git a/core/resources/pix/componenticons/tubefin-small.png b/core/resources/pix/componenticons/tubefin-small.png index 334bad2332fb6a1e8d7cd63382c815cf14d00beb..addf83b3f71cd9b3e193745d0059434f335b37e1 100644 GIT binary patch literal 1722 zcmeAS@N?(olHy`uVBq!ia0vp^azM<@!3HEVv~9b96k~CayA#8@b22Z1oMWjGo@u_m z3|c@o2Ll_U5Cbzv2@oH=Hw=pzU{o0_9jHuz<}F0kStOU_{uzfC+A%+yZ7e zn;WQ(!N|bK*vi1t%E(l~(A3Jv(#qJJAuRiE5>Se>z$3Dlfq_2}gc(=ZFVAFPVBVA& z5>XQ2>tmIipR1RclAn~SSCLx)GKs;a!V1XDO)W`OsL0L9E4HezRRXK90GK4GQ<#=IWDQi$wiq3C7Jno3LtY6lk!VT zY?YKi7Qq3;oh6xR2%GYXq22;|P#+|tZ>VRWk4+oUvvBvJ=&DF8z^N&&IbiD|zp?R4lc1BR^ z(1g)-`4?rT0^TjvNABWGBrmw1w}2AIiLu%0{bAs zB{MfQuNV|v#z3pFN?_F(iO^_hh^!Gw0;WmtZ+FDJOBc0^4S6wJ7Bl+RlvvFdfy7k!b5?f;nm z_x{puIic`UAoI%7_zPaHUN`l*y02_|pOb4dJ;>Vh!_ArB@15B*cV_IOdZCLi_SWr> z&%Sc~!|4-HOY+b1u+>e$WQy=BXu6tBSgpTVcUcJFOw z3>V(Z$DJs<^`^@Or8Uk@0qt$UAN!7oIlj<7slT8{yXtDpN}W5LmHJYhK@YbTMAYc! z1+AQPQETenXGN!1IvkQ@sdDUJVq0W%I4(MN@#;HM_w^i2+GQ4hWcH^x8@c7{>cr z<(c&__AX#NS9xrz{;3Q34pI#noFyNNWn;Zw)H9SsoA-w_~V&ch9Y%Wveu(`1N%4b6Mw<&;$Tj>N6<- delta 655 zcmV;A0&xAh4YUQ2F@FSSK}|sb0I`n?{9y$E000SaNLh0L01m?d01m?e$8V@)0006> zNklREUpcxD&k?EDOE z-rl4(olc{6yUl)?Vo`2ZzY0rNLS9}fl~BE2XPIB?b{uEv>Q}9sYrbn@!!QtGr_-Uy zMx#M3K|Y^H<$rP+<#IXX3;5`izk^IXpWA!BN9zlP0*y1747I6L3WdXAN)Ar+#C6?d zx7&RYi^X1fp0@#vKn{ULrzfZMBZBSR_Clfg++q2U+ItV~BT*1guh&DGrWriXe+Hhz zrrwhqyBxq~yOMkHFuJgIt+ZwIM*c)KaGa^?b zhOX;t&~wZo&V~|)O#B!GuEWiez>VQ>cqb8jaReRjo>r^nnQ9g*wf)Z6d6JVA!&(OYkz!^*mYc_3uJ-Nd}D)eg+if^ pFs%s_UItMU{BJ;AlB7>R0jgz8+^6lFGXMYp00>D%PDHLkV1oD6G1LG6 From 2e80a27408fc11b3f9cdcb36b10c966233bfbce9 Mon Sep 17 00:00:00 2001 From: Neil Weinstock Date: Tue, 26 Sep 2023 10:34:13 -0400 Subject: [PATCH 04/16] dark mode icons for parachute --- .../pix/componenticons/parachute-large_dark.png | Bin 0 -> 3150 bytes .../pix/componenticons/parachute-small_dark.png | Bin 0 -> 653 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 core/resources/pix/componenticons/parachute-large_dark.png create mode 100644 core/resources/pix/componenticons/parachute-small_dark.png diff --git a/core/resources/pix/componenticons/parachute-large_dark.png b/core/resources/pix/componenticons/parachute-large_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..bcdc3b9d4ee8f2eb4c1cb619e273f5317c134fa8 GIT binary patch literal 3150 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 literal 0 HcmV?d00001 diff --git a/core/resources/pix/componenticons/parachute-small_dark.png b/core/resources/pix/componenticons/parachute-small_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..a8f264eb6813e3e5ca05b9c6bf1294d5891c6911 GIT binary patch literal 653 zcmV;80&@L{P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0wPI7K~y+TrINvG z6G0Tl-|i-xY)wsD5(q(09*hJ*f?zH}E}{p$wW6S)7ZC&zw1R&^sp7E|FG3M26cp*P z7>n^5^_E~DZ4zRLt+l(`-3`gk_)Q#9u}!P};K!RcJM+FbJ41U_sZ&^PU zzr+~(%sFQm*Sp>Bt4^nL3u}(#aydnA*}qWyI!x*?dt;gwuU4zP-EQ+@vB(>Z2Cvm> z+;JR^b?aaejhvQSchtb{^7*`u6FkEy53Q`OWZf;7Hok3;u7@Zb4$<0|HHyV!d0w>eu5baTC1=Zl0i&=H79VMI z)1+whAaShicpcI-jf^3Kg2AAhJ(XP+5e-~a6s7m0;xBD$48s5nuHv`doqs-`<~}1I zMni@{wq^B=7-uvb879lNNLAE+p#zZ!xt>RwqL8AgUnj;VKI*!@tg7l1%)Nebscnrb zmCBT9n)hY8Z-qjkC+T$hhD>)>tJMmCaWDt!;F_GjBJ+gE#p9CmVelT@k@+R?3A~Ww zh?xIf1MgS}n@%7+1|wh+oCPPrnP#)u&15nP*32Lm%{&6rKxi_NNEGDwFYRjlQz(8O zK@?pDqKUUKzL!iUFJt@=d;mwm0~jtK4wNe6u0pXzgyTRIJq&IFp{D@PoR+|`y_o*D n#GQec;*Jqt1Mvs`K}6pHBv>R>am?FI00000NkvXXu0mjf8si;l literal 0 HcmV?d00001 From a84b764cf290f3f9e543f60b514efc8e3b80f505 Mon Sep 17 00:00:00 2001 From: Neil Weinstock Date: Tue, 26 Sep 2023 10:34:41 -0400 Subject: [PATCH 05/16] dark mode icons for pods --- .../pix/componenticons/pods-large_dark.png | Bin 0 -> 1752 bytes .../pix/componenticons/pods-small_dark.png | Bin 0 -> 244 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 core/resources/pix/componenticons/pods-large_dark.png create mode 100644 core/resources/pix/componenticons/pods-small_dark.png diff --git a/core/resources/pix/componenticons/pods-large_dark.png b/core/resources/pix/componenticons/pods-large_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..a88920e9ac46a744138a37045f9e2a7759611182 GIT binary patch literal 1752 zcmV;}1}FK6P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D25m`1K~!i%)tFCg z6;%|*Z~I#Md`P7ga8VIzkU*d@mD1pf#?UTI3u$A+hJ`Ck7c5Lyf*TTvE229iD-+ld z3Gzv|Ha;5T_6e$^uM?1Pp;)Q|}jH zWhBI6MDPd2bg9Z?2ntcLiExJrChEEm^k#=BHzK*2YwxGzqL ze~N6gzeLL!koOjgGz$XbAy1+*5iu)8#H0Y8hsiimh9B4Sp2BqE@o zJc(m#;h32uaS4hUejrYW1P*~+Q%}3Cge82zi4LL)G3Nxr)?j8$3<3WlvI2mTd+JRD z{UdEDLtHBY2!`#!4D+5KSl%Q472%$G+UZCC$Ra@09Pz_!SU$kk{ zCfDEJ|M}UoXFE=uI6=O|lI&51*mzc<VB`_1t1aO(E$+iu^!eQw*fZLX}W z%+1cux}l*VcmDi&S5s5twrtrlec{4|*N+@I@`J`AhSdSFZn-c(1Vlu#qoZT}$jHd_ z(W6J_dwYAmRag$R(@!h*@X(<{FET!D$86?}f(8jTj*@SsxgDlv|&wig%2ERSZvE zov?5AAQ6m(rHMqMesFNm?cBMOw$PwI<4Q_O7-*mKK`WAd{{+GaF(Ved|DFUz2&H@U z$R0f5VEv1Wi`h~Lv4jUf{+7klgxFyECGEk6e73tEp0a&({R@=>0LvI91u# zFu-n*zno&Sm1T=yNtZjHTBCwJ%ogATaeZA~UG1q;r#=`M7+4`e-tkXuZLO=UtaK9- z6HfJxM~)KmK-ebMtHZ=5h+u>Fak<@0cP9(THk)tmIW{7jE-$YJAm?f4N;~WLC z4OWZTU{#qQ9MX^e{Ex6*ITB*h@J&DZKcB0c36Nmzi371^NlF`A zf_{98*yjjs^fSNtoQExaXqpHU6u2Vd)6S;|4x`Ktc9;+ZKx~>2+Hnlo7OW!etRy}Q zJ`clz0i*s|Lvh&iDP|X=_FvAujb{t71u6ag>1Sj7{loYpKH?-^@2O=%yc>ZAW(wmb z1_NQwr1QIaVdUOy8SOs1ALH}! zXSM(~mJ;0$f8HRJr->yZrOg~AMlt9aOM~kmyV=O@SBSqQza&}^{0{s6p{J&a4Pe9q`C<_q@nm{9e;)l(&Ntzrwq+O4rugKTyd{H;DGxpu3^DSzwda-vJ8 lJiW-C^!{YQhkMKwjQPR^LVr#84*?y;;OXk;vd$@?2>?74S0?}f literal 0 HcmV?d00001 From e668c7b1830d680541905662877133a09d977ba5 Mon Sep 17 00:00:00 2001 From: Neil Weinstock Date: Tue, 26 Sep 2023 10:35:19 -0400 Subject: [PATCH 06/16] dark mode icons for shock cord --- .../pix/componenticons/shockcord-large_dark.png | Bin 0 -> 2344 bytes .../pix/componenticons/shockcord-small_dark.png | Bin 0 -> 759 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 core/resources/pix/componenticons/shockcord-large_dark.png create mode 100644 core/resources/pix/componenticons/shockcord-small_dark.png diff --git a/core/resources/pix/componenticons/shockcord-large_dark.png b/core/resources/pix/componenticons/shockcord-large_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..437f56a490bd0b69eca498cae8cb871d7f4fe9f8 GIT binary patch literal 2344 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 literal 0 HcmV?d00001 From fb3641e94f855a23a9abcacc3642aa49b6f6ecf0 Mon Sep 17 00:00:00 2001 From: Neil Weinstock Date: Tue, 26 Sep 2023 11:08:07 -0400 Subject: [PATCH 07/16] Dark mode icons for mass --- .../pix/componenticons/mass-large_dark.png | Bin 0 -> 1714 bytes .../pix/componenticons/mass-small_dark.png | Bin 0 -> 446 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 core/resources/pix/componenticons/mass-large_dark.png create mode 100644 core/resources/pix/componenticons/mass-small_dark.png diff --git a/core/resources/pix/componenticons/mass-large_dark.png b/core/resources/pix/componenticons/mass-large_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..e8f45cf49d502630bc24b8fcadd39fb3d91fa76c GIT binary patch literal 1714 zcmV;j22J^iP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D21iLmK~z{r#aByA zR96`O@0~j!gTU|z&oX5|9`OOOrm2CZz6y4siEc>4$^|YO?ZU=IS6#Vv>8f^RV&c+` zg|@6r7ofP%Xg~*33KS8PVT5@wkK6w{_x^CfVVnVp-{i}=bMCq4{NMTi^Ph7x+I?gi z!?epCW4DE%f9Du@b{dc8k0NF_g(wkMuU>6Gdi3Zo9*-xqyuAE#Z*T7#t``ALAv+S} zvdfPJ@ql7qU*GqaFJB%oO|wbY^}`1b9{h3d-o1D3-@hM1W3<_#{3KX2oT=M%wYIhv z-MDe%*@FiU{^kFL9UUD9hK7cs0|NuU;y<&1na4Dkm{9o^l>V{?KH3S=iU8eiwA;66~2h}%BrwHM$1B2{gmNP4umCP!eHDFIq&u@W1Ao=+5 zC%bH%F5oQr6ohtG~)G;1ry8^B@+osIO_3?PF*gS zwz#+$c=+()s2XXb@fkgm>ta{l0IRF3J72zhsqx^-8z84yf+$Y4WTwn@Lt!{Go=8$W z9^XJ-{EGN~W@d&s+kMIXW1Tp&nT)$7aup)byk76&>FMb_!!VSw5?WkG&z?S2!-{}) z##I?lQ;+XMp%Af`Te%x#HWA_!u%(#o3Ncv7fpB<*y+EeSIy^En{U42uk1NlJIFz7< zAJ@Z+DjZWh0V>pz$}6GJ5;Zk7)$%9EhT;wJNJeZ&2s+KLsi~<8ha(&wtD4L#1R<1R zDC?t0BtpC)QaBu@WIRca9zCML!9f}s8KH@Z2?{O-S&a29!YmexQ)6Qzyn)aX5h5g` zm|TUZ4zFLo-oP_zz+lW|BEB9bYL!i84`Ku>Sp6F#|W!9oq-mru~1nTbI zy-N-L25M_-Qy~|a2++QL`>3L#LY3Z9FD2L;Xe*PDpPx^>X;N)%?QtGPgk&Wq7a;NPJYKjUA3r!f3QX;TUuxNRmaQ2DDqU5XpoDF4TlL(s_Au%Z7Og^rtcUDTavKd10 z)$A+s`FtHb&Snv51qgB#qB`Ug>=z3Q3ouTDH`cRIN{OkjuU8@T=U;zNFu2Hjv`Hl; zB{a?AvB-nLAkELsEANRnASN1(P$U{AUVoqQI3h%t5xEKhv^s`b2hpgtx!GLhSw-Eu z&^u~q@RPr>k?!5QM{}=VBOGbr%^SLP>lTd+k5I9RXE`W`y@2993FcT5zvXV{T$v1iU2acbO7!2;^N|CV`F1ONT0h6 zKFeXj|HN11JN!4oTxH^pA{VZV$NCR~-Ts~ZxU1lCzO^3_VqT_)i7W8t^`eliM?NKR zkB2AV5qQHonQrn(E}^Bui;38E(s}t2;5ir9JKKwq2p>tkAjF_f!fHeR&cQQ5+QDED z#&5naWZPFZ*ephvRs@jC;9@K&#!CrE`7t2I3Z0$+q_jcwKQO4b^|?7Z_5c6?07*qo IM6N<$f))}loB#j- literal 0 HcmV?d00001 diff --git a/core/resources/pix/componenticons/mass-small_dark.png b/core/resources/pix/componenticons/mass-small_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..192e767eabb554b3cd02d3cc89c0a2e716daca0a GIT binary patch literal 446 zcmV;v0YUzWP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0aHmtK~y+Tm6N@0 zgD?=s4?+??LWL5kdn$Ed=+@48fGX;Mgc!SY$WW;-ft0Ze?|>Nl0xT>%086E^@BkSq z*(RwP+qhF>13&5bpE-Po&o+!@zu(^#MR7{g^s_9>pE!>1MQ9Yd(80K_``R>39fsj; zUDsdBC0MxhCnve|5mBuS29*h>%uZdFy^Vkl)IRLVPLwOT#cwhfv-0o$=)Y8aqT zbg)bdOw)w1BGXIb_krc3EvG5z~rrkbw7v2FRgODq;wfHC4eE#8}V@E&7? z0b#lQ6&;GQFxy|IENPcqWr!Ptu6V&61}J;c(zdPsdhjh<1b^!skU%^uiql z%EFH0JTYZ$CI~^>o}`9poOOladEO&;6ete?J6QCp($x~s*q8iqnb~YglXda+`lk1Q o^%fTHXm-1umFIcaf`0&<0g<@Fbah*U-~a#s07*qoM6N<$f@_PxDF6Tf literal 0 HcmV?d00001 From 2af7214eccf82efb70381959545e79be99973786 Mon Sep 17 00:00:00 2001 From: Neil Weinstock Date: Tue, 26 Sep 2023 20:39:37 -0400 Subject: [PATCH 08/16] Updated large tubefin icon again --- .../pix/componenticons/tubefin-large.png | Bin 1722 -> 2855 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/core/resources/pix/componenticons/tubefin-large.png b/core/resources/pix/componenticons/tubefin-large.png index 2210d64a54e79dc234bbae92f43ff65a7a267559..5de7272a5d2c576e4c4b953654f6dc38561e7818 100644 GIT binary patch delta 1763 zcmV<91|0di4W||%iBL{Q4GJ0x0000DNk~Le0000o0000e2nGNE0K9UkOpzhBDKek~ z00aO40096104M+e001&DGBY|bIXW^mATc&NGdDUhHvn8h`5&?Y!U6_1Ix{yqF_Xvx zJqk8dGB7$bH###klMe(r0X36J1ULdTFq4A>On>g8t-b&N20TebK~z`??O01s97hoD z*=3jK@-#1t@DL`JEMXra<&uLh&LKjwA`B9dK#FgibIK(b{s))%5XsnrNIoKg4>?7- zM8O6l@rn&b;0H^1?C$Kgzpt2{%+Ag(V+rCMwoq+%SASjI)!kLqgHmNG??8D6$~#cr zfq(z`4pd@&KRT>YUKVo>&UI-te)sNOO@8p;fzIV}`t94ddU<(SA08g+ViXo<#$)xr zg2yk-3Qj-+$TY^#$;pXcT3XWk`};-|SQ^}$H*W&_jga~sV=l#(YG^$=K0emunwlCZ z&E)BHT23aFN*PgL83srFoD0l3LsKLq@_#CD+tt<8irm%JrCz>#=?;y>VydyRQN4Tj z&XomK!r-VMMCDyUI*Q4{8basG7$p@I6$-m+no>45H>>yW-z)e;p4{IEiL)^-?jKvK z9oCRiI;4-gU0Yil>QsoM(HBW!4M}0rn3?$5vu7{j@xl$`Ztw2ys%$oEpn)ZEuYX^^ zE`_VW!2BZ*)bw#eUaOy|n2rcPko++u!GrLJ z9~h00$gu3S+_gntr}+0JA#YHe*z_4W0sARi)z6b1)_74p>y;2q#& zu(@(Hf}t@lJkqIz9zJ{+zj^a!Wm8jAb!}r~Z6=i(0FPvC`x}!Vw*KBy_rJgIF5Kjk zfq?g(5=bz57Fu73qGuA=yh zD9f@G^9GrxQd#-0|NRH~Jnm5 zo(5mT+4lReS`RfH*+()2l+yXJRu7T zfeW2aTtgNY7xj+4!~3V1iGOl9y&V2D{%qS;89O6}?Ck6)IwE;{dt2UJvMSFHoK(?A zR##UA=jqC;mcmg#i0>`FyUr!o*`Gdrn(OWD%^h|g>dJIP;#)S0K#|j85H-<1Zr{GG z9zT98itpUH<2t^7rk0i##p|=RwWV5HTNQ$c_*+<d~V|*_D-*2m*vcq%$fCN*YezLT-^$JU{v;CR z0X}&T@X4FRsgVzy(yaq`09+EdBygs`XgM@A^c_~ga2tx;69JmL?r>b|Yz~};9g=(G zo?dBb|1}br#jK7ejAAtM6Y~-Mgnx;y6wZtr8yi#jg#LD8 zV`I+9N|gl}a(;fkC7DbzT6~VlZ{P&J#xvzBl=AEz85#MVPZg5qiNX!A!aO}Vt_V(a zpj%2tEpEu^>FJjoa~}B(F>RJ)UOiKnva_@E7wi(mN(~MUs=2v2-QVA@V64dSok5&x zYipA>FHsJALDQ^_4pa0GxA<7N@O>jl5O)aGsaN1X(nQc z-E}8sC&I3^zP>IY*TIP)I9=Bez_b^~Hdr9|fqQAzSwbw&5mpRSRzQA32oR-CDVk6> zi{SOya3+wvz`AL3FhVK+%c9`Way87?BCn<)$Sg0ep?{%)T^2B!cn7O77w0vnVTQ9b z>vCm5h6DlKfyg5pOmrmvCxy;y+9JdxyjGi=o8m*}^qf8^Ad`&&P8%FLC^M%kb>=LP zxfQGzB~e(kH@M>q^F6|UBCsBm==hyN?(Xgm?1ySuY!RHr&uZ!i{Smy3d}*;0$wzrw zIDy^S*<@Lf3=a<%Tcn%@7s3xQMxTI?EQT=h1>racPuqEOc~)>iRZPs3nZP%DVtRTy z0spA;Fxv%;B$(LS+bfX!u^wC<=BUFPjb)k2JMbxY-~-%2D4u>+8rJ{-002ovPDHLk FV1i$PJUajY delta 621 zcmV-z0+Riw7P<`~iBL{Q4GJ0x0000DNk~Le0000U0000B2nGNE0B9>cijg6^{bI5K!U6_0Ix;yrGn2>z zJqk5cGBP?aH99mflMe(r0W*_H1ULdQF_VJ?On=z0lQIAR0nbT9K~y*q#gorV0#Ojh z=cx#F>5xTbh+2^m5op-O4oehadh1&BFBFl7{sRAv`YVLUAn6ck)TLk0N<~W9FA9s) zw(o3hJeN{CHSpP)_ukCBota&te-hE?y?(!6Yt+~9%VaVQ=Qm=ibT}NIh)hScjr9$U zMSne0SyhR7kNr8WDv`9XNcOL0UvJ-hXe>lKyF2XTbbH*CRkLh=i+PXzIquuRWYld1 zx7cpClcUu^iwldiw7g_WQGfYU%k_)Bg8^3)y$%au9ktm+&?2luLQsc>Q}K?(7D4DM z$uFRcD|*#jsVv+Hc`q7?QsK66SbQyRQh%wE(JGa_=5ouaK*AXWdO?q*J#sR`URzzG ztK5~ojKyNQHebY>@?Jb1r>@Q}ZFX)pkE2U)0nT~Gl`qQBZ{QhZO{iF_{l5NuYAZ#- zksy|z!qwH9H~aerd Date: Tue, 26 Sep 2023 20:41:22 -0400 Subject: [PATCH 09/16] dark mode icons for mass object --- .../pix/componenticons/mass-large_dark.png | Bin 0 -> 1311 bytes .../pix/componenticons/mass-small_dark.png | Bin 0 -> 446 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 core/resources/pix/componenticons/mass-large_dark.png create mode 100644 core/resources/pix/componenticons/mass-small_dark.png diff --git a/core/resources/pix/componenticons/mass-large_dark.png b/core/resources/pix/componenticons/mass-large_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..e41e1f590b272ed6cfda159266350ffd65bbd72e GIT binary patch literal 1311 zcmV+)1>pLLP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1hh#+K~z{r)mY0; zBS#dy?QVk*W5ZyC6cG~`fj}tH5G5-lmPpxTm(Ap{%O~Uy@(K9>q!48@*^mW_XR=EM zDMlhJGEs&BX^>46zp!N+{AhP~?zvqB9t4TIjZt#Y)$OXT$31l))yAN~|p7$^}%;wP3@(n0h#%e#Xh6H$6l zfG1wD;U7Zy`8U;f>lieVJHuUs)~_t^1n@q~JM5jJ-|Puj3&gePi%2Gu`K(r}eXW{( zBNmH&l1wJQRn0&MO@vR|avaCr+1Vl2bw&C?tJR|Q^>s2$GsYgPtL~oBPmU}#8VxF! z%VI>k-R?ouI3ABVTAD1t+1VKsDqCRmLu931uj2$SJmPsC8HPcTNQ6AsBleg`r_&L! zI}X{l{hDZ!m|v+#RYo2KMn6Oza(<9ySz@dXt!y?+zdwI2L8}Q|iY?l{rXTaM-tqDA zSF+IcxG@z%6Dbx;U({-KIKk7Wj>bv$Px|A<3-OF52Msas$NlgkwBzytI4(KtDR`w= zEE4C3%n6FnL}IafR4Nq>+in~BWI+g(5{5EALJsZj?$Y`BIXSjNdwYA7N~I{BPSerR z5mm|+CgaaVn3YPUen%I1=^;tih&NT6?PYl~**W@%|@ zNkZ=M=#b{;=V@|sQuO%!aq6%)FjgPJ=;)~A3FGdF;N*B?4~Dox0(pX@!h8LK=lZh_ghaQF(_0KuDqwp;#ysu>O0pO8|r-!Z-StNK7`)fHy9ykSk>P zc9sx&`r{KWsbwO^qp`6u%4RZ>4aqAo)NeJl}vc3Jy{#=j(GGw!!ItiF5vnAX9$J`@pzRpY#IK|+k^dKT#_$q>u5 zXnJ~@wMmPMi?q7BDy6o2OotO637^mBuuq^o2}9%|h+G(<%C29vblZQ1mvmW1 zC^<7ji9~`g$useoKi3zRrNQ@4HhY470#&ZSL~^;@=O6-DQH!EhR7z{0FgnyuN&Jx!{uOD6v(a zf9YIVzgHr991MoQcuhc)=yk1LaFvXfYe@h>HrK{NwDDR4THgk=v0A!40cfp2^fxn1 Vbbkij4Eq28002ovPDHLkV1gTJY9jyu literal 0 HcmV?d00001 diff --git a/core/resources/pix/componenticons/mass-small_dark.png b/core/resources/pix/componenticons/mass-small_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..192e767eabb554b3cd02d3cc89c0a2e716daca0a GIT binary patch literal 446 zcmV;v0YUzWP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0aHmtK~y+Tm6N@0 zgD?=s4?+??LWL5kdn$Ed=+@48fGX;Mgc!SY$WW;-ft0Ze?|>Nl0xT>%086E^@BkSq z*(RwP+qhF>13&5bpE-Po&o+!@zu(^#MR7{g^s_9>pE!>1MQ9Yd(80K_``R>39fsj; zUDsdBC0MxhCnve|5mBuS29*h>%uZdFy^Vkl)IRLVPLwOT#cwhfv-0o$=)Y8aqT zbg)bdOw)w1BGXIb_krc3EvG5z~rrkbw7v2FRgODq;wfHC4eE#8}V@E&7? z0b#lQ6&;GQFxy|IENPcqWr!Ptu6V&61}J;c(zdPsdhjh<1b^!skU%^uiql z%EFH0JTYZ$CI~^>o}`9poOOladEO&;6ete?J6QCp($x~s*q8iqnb~YglXda+`lk1Q o^%fTHXm-1umFIcaf`0&<0g<@Fbah*U-~a#s07*qoM6N<$f@_PxDF6Tf literal 0 HcmV?d00001 From 1c14aec04059355639644b96d1b266bb62db0a33 Mon Sep 17 00:00:00 2001 From: Neil Weinstock Date: Tue, 26 Sep 2023 20:44:51 -0400 Subject: [PATCH 10/16] dark mode small parachute icon tweak --- .../componenticons/parachute-small_dark.png | Bin 653 -> 1780 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/core/resources/pix/componenticons/parachute-small_dark.png b/core/resources/pix/componenticons/parachute-small_dark.png index a8f264eb6813e3e5ca05b9c6bf1294d5891c6911..b837e4eced1b9687d59d5e341f5c95255378115d 100644 GIT binary patch literal 1780 zcmeAS@N?(olHy`uVBq!ia0vp^azM<@!3HEVv~9b96k~CayA#8@b22Z1oMovIo@u_m z3|c@o2Ll_U5Cbzv2@oH=Hw=pzU{o0_B(&Fe2<+zyvo#ZUHl#%?(t?uzcyn zLLkLi;1OBOz`%C|gc+x5^GO5E$jJ=?Nk^)#sNw%$0gl~X?bAC~(f|;Iyo`I4bmx6+VO;Jjk zRgjAtR6CGotCUevQedU8UtV6WS8lAAUzDzIXlZGwZ(yWvWTXpJp<7&;SCUwvn^&w1 zF$89gOKNd)QD#9&W`3Rm$lS!F{L&IzB_)tWZ~$>KW)` z(+2b`++0kTFU2_%g`Z&^7PrGk=ANPd2f9k$eDqmQl%%>Z9ubf+YiB)TM)q}mx7 z7#ZstSn3*?g%}xFnV47^80s1TNuXmu#-ON0G6xhORuMs|#rZj{eh5fgOk}232pP4@!?n z=@XLp!J@#_Z^s1;7FbTQ16*5VMmc;_wy#b&GVhDwq!wO zo+ZauCB^n{4;HdtY*zB^nBaUc?u?_rpJ2x-p*>Ty;#dUx!&aznQIczo*fQ_Zg_zq8 zw^edIaxa%newXK2c09kE+wr>EqXUntH|Ib5n|5!H>Z^hjBgyc+aryg~GPF%Y8n7i-gcWc(JZJp5f+936JYC|t`5X+lxo$EJ#{j$1!^Je1BoM}_NRKqkx zW-QX+X}@uJmcPY`rDc)+ws-H`nIq7D{63@1of~%~g8D;l+22rie4!NhX3<^w-A~?s zpS);AiiB0=?>%Rpe-GThzyAEol4aATPk-;GG_mcjq95zyY5Ad{Uv+BZclFJlP_%?0 zVS+}dOV7oJ3w`AL^$k<(uJxUKSTNy=?!?nigWB8M#2LdA%`N+~|M6{SWq#pu^B6;= z!SA|nOqY2tF}|9nvg&%4xU!jpX*(A->A&#|4jn4h_*(=QyNv z{&R3c_S%Bz0=xP1C#C)je0}KuN7uj_V+)Il-KOmKtv3D%&@kD#b*rfR<1-G5OFtG^ zoXO44@1Oa(XlKp2Ig2l!yb`0QF4}!m^vL_aQPU61vw6e3PgQH`saoyrOShSCYg(qK zqZ8xuGXB8ZX1@dL7L*9Czg}HgTDoTlYwvcqt)E9u+>+i z8*CVNh^LmbHy=!Hc->(4^=FN~yPMm;7YWus>>Jmz{MdgtV}|6OhrNxBjV8P7t*or7 d5{_D5oPV^$nd_#nNHeHl_jL7hS?83{1OTx)X9H7#@f!7(U?6Q0Vu-D^yW8Cj$tGR$oR(X6)WGiY`Mi!3Ji{put*owO-7S|kzHN}MhbSBl z(b|_aip68(IDalN=F{lNC?AWBQ9Kr34+H`W<#PFUDwXQWa(`%`F-|$>d0w>eu5baT zC1=Zl0i&=H79VMI)1+whAaShicpcI-jf^3Kg2AAhJ(XP+5e-~a6s7m0;xBD$48s5n zuHv`doqs-`<~}1IMni@{wq^B=7-uvb879lNNLAE+p??FB2)Uj|nxc@Rsb43?CqC-B zzO1V16wJMTaj9*ME0xNWX`1(Cx^IO-p(p8d`i4w*R;$$tfN?Mf>foB3zasO5$i?H5 z^I`BF+>!Yu@Cm$- Date: Wed, 27 Sep 2023 08:46:43 -0400 Subject: [PATCH 11/16] More small dark-mode icons --- .../componenticons/ellipticalfin-small_dark.png | Bin 0 -> 419 bytes .../pix/componenticons/freeformfin-small_dark.png | Bin 0 -> 464 bytes .../pix/componenticons/launchlug-small_dark.png | Bin 0 -> 284 bytes .../pix/componenticons/streamer-small_dark.png | Bin 0 -> 628 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 core/resources/pix/componenticons/ellipticalfin-small_dark.png create mode 100644 core/resources/pix/componenticons/freeformfin-small_dark.png create mode 100644 core/resources/pix/componenticons/launchlug-small_dark.png create mode 100644 core/resources/pix/componenticons/streamer-small_dark.png diff --git a/core/resources/pix/componenticons/ellipticalfin-small_dark.png b/core/resources/pix/componenticons/ellipticalfin-small_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..ea25386e455fa16a45ec7a8fd6f087ebebf24fbe GIT binary patch literal 419 zcmV;U0bKrxP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0XRuSK~y+Tt(389 zgg_96M@emUf?$etrnm>lr4TzUf~DXa1g;b8E`*T0h?Ru2>0{?J*b5PD#IzFg4>!dH z&eO#EV3^(6e`a=-U4{OE<2VM~9qbZT!rrqitKetzr^aY_0rv>IcU^a77zR~UMR}f6 z*L5$5KVbtsYtIHZg}udbJhW{)9Kv&s^SW&Ae4yYiilU+KdujI@j`KR}BxN}$cIEs2 zP}jAzIS#Kw+pu0zM^VL3vGqKUbX}L}ad`j`fl{%H)Yr zWDVDvrnwJHAi7raMw#=e*S2k6%Xk)|KiPQl9%JXbFbtok{_i18(@>hG54h8Ow~wME zNn+yH++e(+Z{?QMVWVjpS(ZioKrDeDm!c^6aUs0WbcEP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0cA-;l9* zj*gBJ#>U1BAS@vv0Te<7xDpl!;LKYR5x16!7B33vfJt`t*qbX!d8I**Af9?Pp?QS_uGM&T(Jj%+nbF0000QCeyX8xK>xx2^Y88dySKPD zyxhP4f78d~-{nspQYc>Fwzz@uv*9&`4`06>edSej;Mv;Q8*d%V$j^VjXvK;bYAPxz znp!%`^fYx9PaQvge8IYP=M)qb8AILVDn349J$!byxujj~uOlCxUyn~XQ(OJ%@9*!2 fvM~6v*IhXFb^9Km;~6|%{an^LB{Ts5L6CNC literal 0 HcmV?d00001 diff --git a/core/resources/pix/componenticons/streamer-small_dark.png b/core/resources/pix/componenticons/streamer-small_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..a0ac436d29a19ae287f717c3f4bc3814195cce50 GIT binary patch literal 628 zcmV-)0*n2LP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0trb(K~y+TjZ-~~ zT0s=O&qUud5O>8Tg&VO-DT2XHM2j?GAwkjyYy*b;jFhpo3aNvnN|i!I2yUaGL<>z3 zf<%a9gUkE=$eD58%h!9m9vJV;nS1X!Sc-G{`Va+H5woUax7p-HOU^G#ZWnbRtjO?RLFlu?R64q6tc{C?i7HGAsx)aST%@ zLo-P;G}2X#N5^qUQEpLEQE2sf6)GGP@oIP?a-R};5(vMQw{O9yKY^^@IUzVec;C@u zT|CwaGZsB>zm#0A%FP5h*W)i?_V@ZjP@<27L`HG>{Y;YhDe=pbxEZ!146qe1jX>m{ zf5)!tMt(s4$9Ds5R9z=s#~o`rIj+O+S4k#mwF-9Unfu9!_q(R()+0*Q4V7T3GAO4&W#uy(kUZUt5 Date: Wed, 27 Sep 2023 09:05:22 -0400 Subject: [PATCH 12/16] Tweaks and cleanup --- .../pix/componenticons/shockcord-small_dark.png | Bin 759 -> 768 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/core/resources/pix/componenticons/shockcord-small_dark.png b/core/resources/pix/componenticons/shockcord-small_dark.png index 4f6a3b376a2f5471616a3e80468664b01290b35a..c673df524cd0ab776821961ee60068e77a110402 100644 GIT binary patch delta 694 zcmV;n0!jV%1%L*SR)3XAL_t(IPpy>CYZE~f$9I!7-PB6b{HV4>w8R)`k|AK{zpr@P-N+F0n^dcfC3ccv1hk`kzJs47`#^x8%<`64*3hA$`g#5DE^*fnK z<2HB@`hmxr+4pw7GjHB5*QO+v#$k71&tacoawrtCvhaz+Gk@PAm&;vOahz8x2se11 zzg#R9eh5FHgFm_uloD@U#HXQQTj?Z;c)l`shIdnd=GofDml)=Efm7o z*&f^u*`Xv$MSm=wHknKXx7!^G27`5y1Mwxe&1SPXOyjYbbkX`v7v85ybJUdV~};7e0eQ-3bpa~|{WETzpSl;6k33M>}O z#jUNaj7Fom2J6L%jSw**q^B8_<9FOH_r6-A7Hu}$WG0h&NFyDp)#@5tyV(@<_4T0- zb!Yv4|E-~+p)+`7K${U^dnfxu=ypFgx;vJ2>bi11%!xw&L87(?{c6E6a%ZJ(^g;^N{Rl>Hm|mSN;CNdAU@ ceajs82bQH2@K)H3iU0rr07*qoM6N<$f{rLn+5i9m delta 685 zcmV;e0#f~e2KNP!R)361L_t(IPpy<+Xi`xe$M4l;*SYY|W`%8(7zz%8AR=h%!BT4U zRxf*9Pd)85gh3GlgGTrkjiO$xz4V~aUJ5pAXlOD`nv=Cn!H4`aum4cz^!B~?9w&Fw zQ~SW-ch33!?)jeI@0@$6F4NP~+|v6G-0I2-x4XN`u_cysxqn=v#C`10#0n%537d?f zt}7Vk7EROEY&P4<=ks?bCnx7sD%AuD3ztfzcN&f6EgAn4j^i%CRIyfGoaq4_3Hc6M zv)N4VH}~sStM#MRBFe+x|-uF z$yb!P``O&wJb#C*?ykj<-&tOV}!x?5-_NEvi(kIN98@p{b>W!)G?d_t&;rK*chYSr3 Date: Wed, 27 Sep 2023 09:39:09 -0400 Subject: [PATCH 13/16] dark mode icon for streamer (large) --- .../pix/componenticons/streamer-large_dark.png | Bin 0 -> 1573 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 core/resources/pix/componenticons/streamer-large_dark.png diff --git a/core/resources/pix/componenticons/streamer-large_dark.png b/core/resources/pix/componenticons/streamer-large_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..734c726bc3773667ed98356775679a18ebb5cd6d GIT binary patch literal 1573 zcmV+=2HN?FP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1-eN@K~!i%?N>`k zBv%xz^8aZyI2s$HMxy8-M#T`L3<me_mv5UhpcmLr`qGB4ihm1I zKqljrED?!XCz3!l)=!AEa{$Yi>IoPe9ApA_!OEzu249J?Tq~b}8&R%;3*hhIZ*6UD zv#>9NxP`D|1WDJzW`T9!J76<-H!CYEB`+_}AW>FKPEIz`)6(8$lvH`3D5EF^CN?0yZFWhnuXNJOl4d3nitQ|h<3w+)J0 zTU(Q@wF#bH6^#JMmCviKtu=$epqi|Uiwk3HZ0u-iYO1okyL%h$;dq364f8r2JuE3H zVQ@7jDJjV&SAmv^>w@?!A{>I0WqVYZ8qcvYowH4RIeqH&jyC2Ww-A0d zZMZn|1^2ucyu`){4!j}6%UdS6%1>yl8H^>4ZGH*6`S$Y**n>ofYXp3;c-TDx)k!Wd zx*ot8$S1HZD3&NE^mtyd_ZXl=A^8UIGjIrxb0AOc(CO)^ad^lt-E~M1p)_M_3LgFj%JMd$$ z6xV<**wyv*^~XGcz2G*x1nYQ+NxNGgFX&0@!t}C$UgcX%dk)?Jw;N0kt_aQ5)z#`N z#M6}r78B!2ZES3)I~2Dd&jXSIcn>QsE;g#Fs;unnY?B`iUNQK-$swqhMK~!ZyjUqS z_Q=SHfk}Q9c^!i%6d>D*0 zQ(O{x5j1jgau|fOXOg9*rAv6cUk)@hG+4Nbn7mMm5U~`ZC+-x&*tnM&Gcz+LgcQOj z_q#1b>;>owh}puur=X>!#n{~3wC3jKOuYP|#l^*61_lPkW@l%2(M{b%L0NmVtgI{m zf#)?fHFw(E+drtNsQ3_mmI8smTTM+(Tpe}o5$Zz3as|k(tu1R}V#35V=GoHH(obDo zT|XcOFPNtkpwsgY6NE6iCkWOE0naBVCm;3n^h}|S9|V$PN%pgafSe$1Ti#+*!L-iK z&iCr;>p#Nn`L+H1{U9%++=ASyB7pA!w;{JJCQg-c^IgD%4dVj)B~~K{U%Wo?|IQf$ z5hBFvpBRNafU_^g$H%|v?d|;oRqV^eMTD$|(}!$Z3L$wDRBUZ+t!!>?eiwfU?qMsw z0TJnlaR{4=OJe}<+s@wJ-U9wQJfEJPemXon%;SKGGuL&HtHJmBg$N;7);|X_lVoZ~ zM@O)~zn`BiJ`<9(tOU#YY6$38_hqk4)QZ65qN1XVy1KdoymvO%> zJIur>hL&Xgr7pw?wvm#6Py~}AMxKQ_M2J`sT2_%q!9}MG9 XUmOj}MwCkF00000NkvXXu0mjfcpl{k literal 0 HcmV?d00001 From edbb826bbbdc6aca9cb6b425c3f275ad83e2f020 Mon Sep 17 00:00:00 2001 From: JoePfeiffer Date: Wed, 27 Sep 2023 08:20:47 -0600 Subject: [PATCH 14/16] update 3D printable rocket example --- .../examples/A 3D printable model rocket.ork | Bin 4292 -> 4356 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/swing/resources/datafiles/examples/A 3D printable model rocket.ork b/swing/resources/datafiles/examples/A 3D printable model rocket.ork index 4b3a2bbea7b847f49f1c3bf8989732d72abcbd31..7c1ff65d85a34171dd3802c22804675f8320b759 100644 GIT binary patch delta 4329 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 Date: Thu, 28 Sep 2023 15:41:19 +0200 Subject: [PATCH 15/16] Remove dark icons --- .../pix/componenticons/mass-large_dark.png | Bin 1714 -> 0 bytes .../pix/componenticons/mass-small_dark.png | Bin 446 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 core/resources/pix/componenticons/mass-large_dark.png delete mode 100644 core/resources/pix/componenticons/mass-small_dark.png diff --git a/core/resources/pix/componenticons/mass-large_dark.png b/core/resources/pix/componenticons/mass-large_dark.png deleted file mode 100644 index e8f45cf49d502630bc24b8fcadd39fb3d91fa76c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1714 zcmV;j22J^iP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D21iLmK~z{r#aByA zR96`O@0~j!gTU|z&oX5|9`OOOrm2CZz6y4siEc>4$^|YO?ZU=IS6#Vv>8f^RV&c+` zg|@6r7ofP%Xg~*33KS8PVT5@wkK6w{_x^CfVVnVp-{i}=bMCq4{NMTi^Ph7x+I?gi z!?epCW4DE%f9Du@b{dc8k0NF_g(wkMuU>6Gdi3Zo9*-xqyuAE#Z*T7#t``ALAv+S} zvdfPJ@ql7qU*GqaFJB%oO|wbY^}`1b9{h3d-o1D3-@hM1W3<_#{3KX2oT=M%wYIhv z-MDe%*@FiU{^kFL9UUD9hK7cs0|NuU;y<&1na4Dkm{9o^l>V{?KH3S=iU8eiwA;66~2h}%BrwHM$1B2{gmNP4umCP!eHDFIq&u@W1Ao=+5 zC%bH%F5oQr6ohtG~)G;1ry8^B@+osIO_3?PF*gS zwz#+$c=+()s2XXb@fkgm>ta{l0IRF3J72zhsqx^-8z84yf+$Y4WTwn@Lt!{Go=8$W z9^XJ-{EGN~W@d&s+kMIXW1Tp&nT)$7aup)byk76&>FMb_!!VSw5?WkG&z?S2!-{}) z##I?lQ;+XMp%Af`Te%x#HWA_!u%(#o3Ncv7fpB<*y+EeSIy^En{U42uk1NlJIFz7< zAJ@Z+DjZWh0V>pz$}6GJ5;Zk7)$%9EhT;wJNJeZ&2s+KLsi~<8ha(&wtD4L#1R<1R zDC?t0BtpC)QaBu@WIRca9zCML!9f}s8KH@Z2?{O-S&a29!YmexQ)6Qzyn)aX5h5g` zm|TUZ4zFLo-oP_zz+lW|BEB9bYL!i84`Ku>Sp6F#|W!9oq-mru~1nTbI zy-N-L25M_-Qy~|a2++QL`>3L#LY3Z9FD2L;Xe*PDpPx^>X;N)%?QtGPgk&Wq7a;NPJYKjUA3r!f3QX;TUuxNRmaQ2DDqU5XpoDF4TlL(s_Au%Z7Og^rtcUDTavKd10 z)$A+s`FtHb&Snv51qgB#qB`Ug>=z3Q3ouTDH`cRIN{OkjuU8@T=U;zNFu2Hjv`Hl; zB{a?AvB-nLAkELsEANRnASN1(P$U{AUVoqQI3h%t5xEKhv^s`b2hpgtx!GLhSw-Eu z&^u~q@RPr>k?!5QM{}=VBOGbr%^SLP>lTd+k5I9RXE`W`y@2993FcT5zvXV{T$v1iU2acbO7!2;^N|CV`F1ONT0h6 zKFeXj|HN11JN!4oTxH^pA{VZV$NCR~-Ts~ZxU1lCzO^3_VqT_)i7W8t^`eliM?NKR zkB2AV5qQHonQrn(E}^Bui;38E(s}t2;5ir9JKKwq2p>tkAjF_f!fHeR&cQQ5+QDED z#&5naWZPFZ*ephvRs@jC;9@K&#!CrE`7t2I3Z0$+q_jcwKQO4b^|?7Z_5c6?07*qo IM6N<$f))}loB#j- diff --git a/core/resources/pix/componenticons/mass-small_dark.png b/core/resources/pix/componenticons/mass-small_dark.png deleted file mode 100644 index 192e767eabb554b3cd02d3cc89c0a2e716daca0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 446 zcmV;v0YUzWP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0aHmtK~y+Tm6N@0 zgD?=s4?+??LWL5kdn$Ed=+@48fGX;Mgc!SY$WW;-ft0Ze?|>Nl0xT>%086E^@BkSq z*(RwP+qhF>13&5bpE-Po&o+!@zu(^#MR7{g^s_9>pE!>1MQ9Yd(80K_``R>39fsj; zUDsdBC0MxhCnve|5mBuS29*h>%uZdFy^Vkl)IRLVPLwOT#cwhfv-0o$=)Y8aqT zbg)bdOw)w1BGXIb_krc3EvG5z~rrkbw7v2FRgODq;wfHC4eE#8}V@E&7? z0b#lQ6&;GQFxy|IENPcqWr!Ptu6V&61}J;c(zdPsdhjh<1b^!skU%^uiql z%EFH0JTYZ$CI~^>o}`9poOOladEO&;6ete?J6QCp($x~s*q8iqnb~YglXda+`lk1Q o^%fTHXm-1umFIcaf`0&<0g<@Fbah*U-~a#s07*qoM6N<$f@_PxDF6Tf From 382600f8661808f1bf4ce85c2a3bffa531497e23 Mon Sep 17 00:00:00 2001 From: SiboVG Date: Thu, 28 Sep 2023 18:50:35 +0200 Subject: [PATCH 16/16] Implement dark component icons --- .../componenticons/altimeter_dark-small.png | Bin 0 -> 1732 bytes .../pix/componenticons/battery_dark-small.png | Bin 0 -> 1530 bytes .../deployment-charge_dark-small.png | Bin 0 -> 2015 bytes .../ellipticalfin_dark-large.png | Bin 0 -> 1594 bytes ..._dark.png => ellipticalfin_dark-small.png} | Bin .../componenticons/flight-comp_dark-small.png | Bin 0 -> 1574 bytes .../componenticons/freeformfin_dark-large.png | Bin 0 -> 1598 bytes ...ll_dark.png => freeformfin_dark-small.png} | Bin .../componenticons/launchlug_dark-large.png | Bin 0 -> 1779 bytes ...mall_dark.png => launchlug_dark-small.png} | Bin ...ass-large_dark.png => mass_dark-large.png} | Bin ...ass-small_dark.png => mass_dark-small.png} | Bin ...arge_dark.png => parachute_dark-large.png} | Bin ...mall_dark.png => parachute_dark-small.png} | Bin ...ods-large_dark.png => pods_dark-large.png} | Bin ...ods-small_dark.png => pods_dark-small.png} | Bin .../recovery-hardware_dark-small.png | Bin 0 -> 1805 bytes ...arge_dark.png => shockcord_dark-large.png} | Bin ...mall_dark.png => shockcord_dark-small.png} | Bin ...large_dark.png => streamer_dark-large.png} | Bin ...small_dark.png => streamer_dark-small.png} | Bin .../pix/componenticons/tracker_dark-small.png | Bin 0 -> 1579 bytes .../openrocket/gui/main/ComponentIcons.java | 141 +++++-- .../net/sf/openrocket/gui/util/UITheme.java | 372 +++++++++++++++++- 24 files changed, 471 insertions(+), 42 deletions(-) create mode 100644 core/resources/pix/componenticons/altimeter_dark-small.png create mode 100644 core/resources/pix/componenticons/battery_dark-small.png create mode 100644 core/resources/pix/componenticons/deployment-charge_dark-small.png create mode 100644 core/resources/pix/componenticons/ellipticalfin_dark-large.png rename core/resources/pix/componenticons/{ellipticalfin-small_dark.png => ellipticalfin_dark-small.png} (100%) create mode 100644 core/resources/pix/componenticons/flight-comp_dark-small.png create mode 100644 core/resources/pix/componenticons/freeformfin_dark-large.png rename core/resources/pix/componenticons/{freeformfin-small_dark.png => freeformfin_dark-small.png} (100%) create mode 100644 core/resources/pix/componenticons/launchlug_dark-large.png rename core/resources/pix/componenticons/{launchlug-small_dark.png => launchlug_dark-small.png} (100%) rename core/resources/pix/componenticons/{mass-large_dark.png => mass_dark-large.png} (100%) rename core/resources/pix/componenticons/{mass-small_dark.png => mass_dark-small.png} (100%) rename core/resources/pix/componenticons/{parachute-large_dark.png => parachute_dark-large.png} (100%) rename core/resources/pix/componenticons/{parachute-small_dark.png => parachute_dark-small.png} (100%) rename core/resources/pix/componenticons/{pods-large_dark.png => pods_dark-large.png} (100%) rename core/resources/pix/componenticons/{pods-small_dark.png => pods_dark-small.png} (100%) create mode 100644 core/resources/pix/componenticons/recovery-hardware_dark-small.png rename core/resources/pix/componenticons/{shockcord-large_dark.png => shockcord_dark-large.png} (100%) rename core/resources/pix/componenticons/{shockcord-small_dark.png => shockcord_dark-small.png} (100%) rename core/resources/pix/componenticons/{streamer-large_dark.png => streamer_dark-large.png} (100%) rename core/resources/pix/componenticons/{streamer-small_dark.png => streamer_dark-small.png} (100%) create mode 100644 core/resources/pix/componenticons/tracker_dark-small.png diff --git a/core/resources/pix/componenticons/altimeter_dark-small.png b/core/resources/pix/componenticons/altimeter_dark-small.png new file mode 100644 index 0000000000000000000000000000000000000000..3506a26e5c0d37131e02b0ae32f53609270c281a GIT binary patch literal 1732 zcmb_dPl()97@sP%+qFeR5G~pbDTunw-^on!9?h=n%<2v_>$082)r0sZ?`0+yW+u^*EtX;+$;*4c_x<_( zzW3$bt<6_XFP>SfR4S)i8_jKapN0F8h2!w-ExT9Xbu!s_J%hQ&#eJ;u!G}*)D#uTR z?cIFWyNG=rsf6+lQ%6w(=t||n>L?-p9?PW;>xQu_|NhlCvJ_HRey!%|UeaK_aN{s# zmku}E{^6dFsJyx&T^M075V4#{qo^Nec;w0xyBNk|T9c&-B;Rx8HQ`X&^|qu2Pnm>N zL-BRpkZc%Pb<;t}w(awhshd?zuWM#aF{`*{W5beWmkb_L8sP2b%QJuQ<;uN0Pq3y9 zheLH(Re9Rg41|!To0@4VfKak=oRg6fXXgqFO_up-nB*akC1H_t_#k&>h<2Jrl$2)U zY(^E3rj1CV8LBSQngFR^;*vqypE#$!#`-K`ah?IzD6vV8=RE82dzdbl=NtgNo>%%f zGL|SRU1a(C0i-b_PuraL zL06xrv2?)FOt5LGHPsXbXDHSrIdf&9s-h#su-m4It2VBg%eskmeG2tB4TJGK)O6a0 zgDnSF>vK>jD@tK0!Hi9D)u+IKM=|n`zh?Vkb`JI4aG!+ zDOO#tDo#)}lq%FaLR6>Bv5Wn$rXid@(tmI}LMccsN>Y{yL0q{eihfc@cq7a}w(;y3 zU1IyQQ9qO>rGtqtj)W^`wu(a|nKf0Hp7V$w#^M+~Uqt8kNZe)6s5Du7;B@X!<9nwwSEc`FI-2NCQ=znf zYdBf^M<;{qCsWWK#jxzn@KJVm76Vf$^zP2xtEZsv`>p0$+j;M|t80swUtC!K;?C0k z8y63+Jn?niJ9Sh3|o{acGGX!ye~m#;0YezbJ=kmEs>uvkZ)s-K`f2Os*+5GIK Hx8D8>p(r3p literal 0 HcmV?d00001 diff --git a/core/resources/pix/componenticons/battery_dark-small.png b/core/resources/pix/componenticons/battery_dark-small.png new file mode 100644 index 0000000000000000000000000000000000000000..72b498ebde75df5cabf56e2bee852d0fac3cb9ba GIT binary patch literal 1530 zcmbVM&u`pB6kgPVAP_D{2sl)uX_10b|F+}x5Vs2Jl&lnoC|%SbE==s%wUxEU*iLqn zBDE@qs6}ufhf0VG0*OOaZk!N;167Lz9QYr4D3=N@9FQn)cGsqhiV(GA&v@pW?|tvR zdGGT2+N-lOFU&L=joJ2!w*liZc%OXyG5ALF?iCoG$X4DcVC@<4KGOK;YKPYW`1@rakeTr4XXjUeT=i(3hX{g@pXiZ|8 z#B`>haIHdG(*FdD43HL2vYZt{nu{%r!hm#no=|W-PH2xQS=z&>4k+OJJO?!(*%(Rl zebP>glBNM`doBj=5|=a%&o5O*oGEX=RF?mh#Xhv z!~c2ywLFHBr2U8H5rrx)2U&>=NZa0|jLx#RC$oNxM)!fxK$L`w3%bid|9CNeX#dCO z2N46x>IOU@tz%fhyXAo9Y^evas@lbRRS8J9WEIW%G>B7C8!uJrf{3O)28~L=3b><) zavpo8{L|^t-hHKC!J(gsY2D1=r*4NV1?n7{UFXs#J!q6s+gs{1-~aJ&Y35t>)X~Gm z&kp{)*JejfwXWRx{=K;qAO0+#yfydqQD%Iq;A^w5U;kk>`1+kUSG^Z6-~8_Sm&UsX zH*o&Db#eRZ!Hw1jCyqV)`OW#CE=1i0=^}ag?(J*m&tGtUId|{ZBl~~Qt7m>Yd|q_t N_VSwd#Vc=J`U|k+;*^A6JjuQp~`mTLv3?`5aiTnx}(11}yObjLp5=~qP7({%%-JQ&!5@M6KukU@{ z_s8e+ecyIBH`N!7eRM2_VMPt0U>Ln8qkG)wk?5Hy5A>kd7&ElMMsvmPU4U)wn}}f} zN2!q(r$w40%7*3viV=mLv}PhShE-OjO(3^I2am$Ist1T)4jd$KRS6LDIf<6cT9{Bn zofe$i*%XmGTV+8Zs-DIx(;_mUK?mSzEvegLIzVLXifHUkQv{xYIIRJq#&w9dNX>Yy zVL@E*Fr-Y=4DLrGUj@qxg5U3d5@%`FOVJe+%aN>C4S;>rZMW$d9YEXAI%xSr795wbAox^s! zEBUxgvDSjXF|3GTB$2MNVd;1~v}~76pNI3XuE8t{27v`V;#exEFWQb(Z`F7e;5>%l>!{_pI}86V}_*xM2M<^IHXKHPT+Z(#abh2 zSjaJo&YOuslEenxc7QI!hG2j|DR@*>5g`Dyz{4o%V>pKNaWO9`a4bVIGAr|buPm_8 zm)jpSX0Hct6GzLiqK%Rzt%wHko{Xb)===6c)z1wk> zLaAw{1#MT50KvIMpQ$4;q}oWfj_fg-3zud`NfpnOjtFG;NCXHQv_pl+PO5hxs;C*))ug4ssQNdXJi#1VnHcF~+WG&sw7XuM1UvZ}ksXhtqNIRW%I zM2(6fsC!Q5?lk_FbZ)QG|1%xR?M_2NQGeGkvvyl2L)mAhP`xAJ%0GZbv^68{q@krV_gTY-B=Q8?7mgamrW&J z-0*x&P$C|BtLcZsgO#h+9=@{d$I|Zj{qwMI3KNAP_Gn4L`hoYazPEJOyz`f?c6ROD zxp4pPuGJt3**AYOjO&kGY}^)h7GL|UZE^pSJ=5MeIrX*1tHs?bi#HxSUGPNxJD+cV zyNn8-n7zKZ5R>P09qiH0pX?i4j_uf|RV_VbOq5#(j&2KI+P%oLXWznIW9FAVyjA^r z)kXe%&GaqhUz&Vh`AmLN%c#LRy+EY_~3=;??v*dTW7K6UGq|_CX9OJP<7*s871o;=|6Yn*=BWl z@6GDq3MQ7`vcozxg_HVMP8k33b9?{z^m@5-;6l;K4?6n>AK1S6=a0^o+n4(T)S3}% Q-CuA+T~l!P%okSt38wh0KL7v# literal 0 HcmV?d00001 diff --git a/core/resources/pix/componenticons/ellipticalfin_dark-large.png b/core/resources/pix/componenticons/ellipticalfin_dark-large.png new file mode 100644 index 0000000000000000000000000000000000000000..cb186f3ebc68bb58223366d564c6748515c34d79 GIT binary patch literal 1594 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 OdAT%WUpR8&oxcI4vjC<5 literal 0 HcmV?d00001 diff --git a/core/resources/pix/componenticons/freeformfin_dark-large.png b/core/resources/pix/componenticons/freeformfin_dark-large.png new file mode 100644 index 0000000000000000000000000000000000000000..a1f1e694d1a67868ad4cda167fe9dfbb07338d20 GIT binary patch literal 1598 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 V-3t4UEzJM`002ovPDHLkV1gIMH=O_g literal 0 HcmV?d00001 diff --git a/core/resources/pix/componenticons/launchlug-small_dark.png b/core/resources/pix/componenticons/launchlug_dark-small.png similarity index 100% rename from core/resources/pix/componenticons/launchlug-small_dark.png rename to core/resources/pix/componenticons/launchlug_dark-small.png diff --git a/core/resources/pix/componenticons/mass-large_dark.png b/core/resources/pix/componenticons/mass_dark-large.png similarity index 100% rename from core/resources/pix/componenticons/mass-large_dark.png rename to core/resources/pix/componenticons/mass_dark-large.png diff --git a/core/resources/pix/componenticons/mass-small_dark.png b/core/resources/pix/componenticons/mass_dark-small.png similarity index 100% rename from core/resources/pix/componenticons/mass-small_dark.png rename to core/resources/pix/componenticons/mass_dark-small.png diff --git a/core/resources/pix/componenticons/parachute-large_dark.png b/core/resources/pix/componenticons/parachute_dark-large.png similarity index 100% rename from core/resources/pix/componenticons/parachute-large_dark.png rename to core/resources/pix/componenticons/parachute_dark-large.png diff --git a/core/resources/pix/componenticons/parachute-small_dark.png b/core/resources/pix/componenticons/parachute_dark-small.png similarity index 100% rename from core/resources/pix/componenticons/parachute-small_dark.png rename to core/resources/pix/componenticons/parachute_dark-small.png diff --git a/core/resources/pix/componenticons/pods-large_dark.png b/core/resources/pix/componenticons/pods_dark-large.png similarity index 100% rename from core/resources/pix/componenticons/pods-large_dark.png rename to core/resources/pix/componenticons/pods_dark-large.png diff --git a/core/resources/pix/componenticons/pods-small_dark.png b/core/resources/pix/componenticons/pods_dark-small.png similarity index 100% rename from core/resources/pix/componenticons/pods-small_dark.png rename to core/resources/pix/componenticons/pods_dark-small.png diff --git a/core/resources/pix/componenticons/recovery-hardware_dark-small.png b/core/resources/pix/componenticons/recovery-hardware_dark-small.png new file mode 100644 index 0000000000000000000000000000000000000000..b3eb482b9f3d2196e6799dd14ee451853ac98ef0 GIT binary patch literal 1805 zcmbVNe^3-v9A6ngz+t43)SP0rH78W=c5m;;-tBNP2ZzGMAp-}V73s43?r!65cimm? z4iYQSOhwF5gc_q9$4Fc#(ro;Z;!i68k;6}W_RDd z_j#Z1=llJ>?{{}rl&{UqSeAhxNM>n?vl6~@;JqL%6+Zo|?YrPBT`Jk2z_~@*Jr8;L z&{70RvGQ(@>T#9PtQgcYoLC3+k)Q<82$EkAkr=ifsAwJV@q!(jKJ`9^@|+!8Z*~zb zsR;P_k|r5cHI=*Brh3-KVFiz%`4Jit1cAz+kzhbj=!hMQ^3rguP2(6Eg{bv*%%K@X zJ+2D0NR$C;(;IXwK^Ra9j!YKPYO_%km4}i9X~YQ&PMUS3kv3Db!Gy*x3|f>qFJ0+e z6SD`u?3iCwB^t-W;jlhz)QhqYH`r`8oFH+M)Io$!X%ti@q7#(maRw()SechpUKCJ` zk*O0KR67RM&bkql610L63l$6+9$_ThpeHo9qCl1R{w-h*Qd^k=<=6zJ)F20I|`QAOD;iUF8cR+I%a1Y|{vrb%zsleeLOlTm>k)3T}~Y&rww zCP~^z(PnZrLDB><3w4Pc?`@n5C9Q6Ql{T4Z12qQp8Nml&qrx#9x`S)wJnI?$Pp6}6x0QYz z4*Q8VOf)n2k!XiNfYh?q>?Z$s4MFBTUFvkWt$R)%a6Fpi$UZl5Es*)ti+QbeEkdXM ztDDKSEvFA&SaN;x!NIN_+tKsgN&6~?+M81g3bP6yXkDD0{d_If|M{1m&=2mZws(t1 zXDrh*-mPNJ-W}e7`?lO$nD$=P$;-{j&whff8+-c(_$AUln77$_e|PRKdCEEx%1Z7U z*!bJ;PrljXId~%(L5KU-rWwk{1}m%I8Mx9sw0=}L+4nlXaHkWiI_ADu*EfD>W8UJ! z6VnS89y^}VTXXfNz-5bR*`6gIj@Pd0_+k+~Jb%rRPkH*4iw(6C9{2ZRb#Ki?*;xLF zcR(rV{B=+lG{1Ft+MH(b183q*ZBCp60Z7*7uFn^y!B^!ZdX=aSbco- z{L)n-XK(OQ!}>0VrkXirNnB@FFpm%Nhh72%mT0gfs|dy=hQn2?e%l zC`8u{V2M%gkXf*8%d#E=rfz06{g7tn6*G(S7BX_6_dsDW@oQ+teX?gy%pBO@JVu(< zYPHl>R%Jy8wHcbS#e~qwB_VTEIv%59LNRAa zg|Vi{D`80lmS~d7Xy(+sYTkgNF6PvMGOLPiD~44uO_a4z-aM$ANY}eikNH7uc^GOI zDn7rM2$k$w#=%cQyVKe%OZ+hFnlr1;k=*Ek}R$E&%2B) z${hF4`~UO&;Uo|xiJP~~BMVht4pa(Kk+$Vt86BYuy-_m&o%?_=ktN~46faR9_7;O% z_Pt2%hZ!z74gZ9LjnM;bV)Q_-k2 zs0nv8S8#o8o%uzE7$TTzv4vx$R5w3Ge*59j8}E;T!Az zNapCVmv{WCZ(QG)yA0;We%v~>b@vzVUD`Tu{nRgOvzM=4iQN4s&us2}w)oC(_Q*#g z&wsu6+C${%&tKgePcQsYTzL5R&)2rgtM8uOxAokMWP9#g=gh?X;q}`3r>kIm=jQt# U@8#d$Cfj*=a>_mX#PJvY0?Tp%EdT%j literal 0 HcmV?d00001 diff --git a/swing/src/net/sf/openrocket/gui/main/ComponentIcons.java b/swing/src/net/sf/openrocket/gui/main/ComponentIcons.java index d5e9b3a28..39dd7ec91 100644 --- a/swing/src/net/sf/openrocket/gui/main/ComponentIcons.java +++ b/swing/src/net/sf/openrocket/gui/main/ComponentIcons.java @@ -9,6 +9,8 @@ import javax.imageio.ImageIO; import javax.swing.Icon; import javax.swing.ImageIcon; +import net.sf.openrocket.gui.util.GUIUtil; +import net.sf.openrocket.gui.util.UITheme; import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.rocketcomponent.AxialStage; import net.sf.openrocket.rocketcomponent.BodyTube; @@ -41,77 +43,138 @@ public class ComponentIcons { private static final String SMALL_SUFFIX = "-small.png"; private static final String LARGE_SUFFIX = "-large.png"; + // Component image file keys + private static String noseCone; + private static String bodyTube; + private static String transition; + private static String trapezoidFinSet; + private static String ellipticalFinSet; + private static String freeformFinSet; + private static String tubeFinSet; + private static String launchLug; + private static String railButton; + private static String innerTube; + private static String tubeCoupler; + private static String centeringRing; + private static String bulkhead; + private static String engineBlock; + private static String parachute; + private static String streamer; + private static String shockCord; + private static String mass; + private static String stage; + private static String boosters; + private static String pods; + + private static String mass_altimeter; + private static String mass_battery; + private static String mass_deployment_charge; + private static String mass_payload; + private static String mass_flight_comp; + private static String mass_recovery_hardware; + private static String mass_tracker; + private static final HashMap, ImageIcon> SMALL_ICONS = new HashMap, ImageIcon>(); private static final HashMap, ImageIcon> LARGE_ICONS = new HashMap, ImageIcon>(); private static final HashMap, ImageIcon> DISABLED_ICONS = new HashMap, ImageIcon>(); private static final HashMap MASS_COMPONENT_SMALL_ICONS = new HashMap(); static { + initColors(); + // // Nose cone - load("nosecone", trans.get("ComponentIcons.Nosecone"), NoseCone.class); + load(noseCone, trans.get("ComponentIcons.Nosecone"), NoseCone.class); // // Body tube - load("bodytube", trans.get("ComponentIcons.Bodytube"), BodyTube.class); + load(bodyTube, trans.get("ComponentIcons.Bodytube"), BodyTube.class); //// Transition - load("transition", trans.get("ComponentIcons.Transition"), Transition.class); + load(transition, trans.get("ComponentIcons.Transition"), Transition.class); //// Trapezoidal fin set - load("trapezoidfin", trans.get("ComponentIcons.Trapezoidalfinset"), TrapezoidFinSet.class); + load(trapezoidFinSet, trans.get("ComponentIcons.Trapezoidalfinset"), TrapezoidFinSet.class); //// Elliptical fin set - load("ellipticalfin", trans.get("ComponentIcons.Ellipticalfinset"), EllipticalFinSet.class); + load(ellipticalFinSet, trans.get("ComponentIcons.Ellipticalfinset"), EllipticalFinSet.class); //// Freeform fin set - load("freeformfin", trans.get("ComponentIcons.Freeformfinset"), FreeformFinSet.class); + load(freeformFinSet, trans.get("ComponentIcons.Freeformfinset"), FreeformFinSet.class); //// Tube fin set - load("tubefin", trans.get("ComponentIcons.Tubefinset"), TubeFinSet.class); + load(tubeFinSet, trans.get("ComponentIcons.Tubefinset"), TubeFinSet.class); //// Launch lug - load("launchlug", trans.get("ComponentIcons.Launchlug"), LaunchLug.class); + load(launchLug, trans.get("ComponentIcons.Launchlug"), LaunchLug.class); //// Rail Button - load("railbutton", trans.get("ComponentIcons.RailButton"), RailButton.class); + load(railButton, trans.get("ComponentIcons.RailButton"), RailButton.class); //// Inner tube - load("innertube", trans.get("ComponentIcons.Innertube"), InnerTube.class); + load(innerTube, trans.get("ComponentIcons.Innertube"), InnerTube.class); //// Tube coupler - load("tubecoupler", trans.get("ComponentIcons.Tubecoupler"), TubeCoupler.class); + load(tubeCoupler, trans.get("ComponentIcons.Tubecoupler"), TubeCoupler.class); //// Centering ring - load("centeringring", trans.get("ComponentIcons.Centeringring"), CenteringRing.class); + load(centeringRing, trans.get("ComponentIcons.Centeringring"), CenteringRing.class); //// Bulkhead - load("bulkhead", trans.get("ComponentIcons.Bulkhead"), Bulkhead.class); + load(bulkhead, trans.get("ComponentIcons.Bulkhead"), Bulkhead.class); // // Engine block - load("engineblock", trans.get("ComponentIcons.Engineblock"), + load(engineBlock, trans.get("ComponentIcons.Engineblock"), EngineBlock.class); // // Parachute - load("parachute", trans.get("ComponentIcons.Parachute"), + load(parachute, trans.get("ComponentIcons.Parachute"), Parachute.class); // // Streamer - load("streamer", trans.get("ComponentIcons.Streamer"), Streamer.class); + load(streamer, trans.get("ComponentIcons.Streamer"), Streamer.class); // // Shock cord - load("shockcord", trans.get("ComponentIcons.Shockcord"), + load(shockCord, trans.get("ComponentIcons.Shockcord"), ShockCord.class); - load("mass", trans.get("ComponentIcons.Masscomponent"), + load(mass, trans.get("ComponentIcons.Masscomponent"), MassComponent.class); // // Component Assemblies - load("stage", trans.get("ComponentIcons.Stage"), + load(stage, trans.get("ComponentIcons.Stage"), AxialStage.class); - load("boosters", trans.get("ComponentIcons.Boosters"), + load(boosters, trans.get("ComponentIcons.Boosters"), ParallelStage.class); - load("pods", trans.get("ComponentIcons.Pods"), + load(pods, trans.get("ComponentIcons.Pods"), PodSet.class); // // Mass components - loadMassTypeIcon("mass", trans.get("ComponentIcons.Masscomponent"), - MassComponentType.MASSCOMPONENT); - loadMassTypeIcon("altimeter", trans.get("ComponentIcons.Altimeter"), - MassComponentType.ALTIMETER); - loadMassTypeIcon("battery", trans.get("ComponentIcons.Battery"), - MassComponentType.BATTERY); - loadMassTypeIcon("deployment-charge", - trans.get("ComponentIcons.Deploymentcharge"), + loadMassTypeIcon(mass, trans.get("ComponentIcons.Masscomponent"), MassComponentType.MASSCOMPONENT); + loadMassTypeIcon(mass_altimeter, trans.get("ComponentIcons.Altimeter"), MassComponentType.ALTIMETER); + loadMassTypeIcon(mass_battery, trans.get("ComponentIcons.Battery"), MassComponentType.BATTERY); + loadMassTypeIcon(mass_deployment_charge, trans.get("ComponentIcons.Deploymentcharge"), MassComponentType.DEPLOYMENTCHARGE); - loadMassTypeIcon("payload", trans.get("ComponentIcons.Payload"), - MassComponentType.PAYLOAD); - loadMassTypeIcon("flight-comp", - trans.get("ComponentIcons.Flightcomputer"), - MassComponentType.FLIGHTCOMPUTER); - loadMassTypeIcon("recovery-hardware", - trans.get("ComponentIcons.Recoveryhardware"), - MassComponentType.RECOVERYHARDWARE); - loadMassTypeIcon("tracker", trans.get("ComponentIcons.Tracker"), - MassComponentType.TRACKER); + loadMassTypeIcon(mass_payload, trans.get("ComponentIcons.Payload"), MassComponentType.PAYLOAD); + loadMassTypeIcon(mass_flight_comp, + trans.get("ComponentIcons.Flightcomputer"), MassComponentType.FLIGHTCOMPUTER); + loadMassTypeIcon(mass_recovery_hardware, + trans.get("ComponentIcons.Recoveryhardware"), MassComponentType.RECOVERYHARDWARE); + loadMassTypeIcon(mass_tracker, trans.get("ComponentIcons.Tracker"), MassComponentType.TRACKER); + } + + private static void initColors() { + updateColors(); + UITheme.Theme.addUIThemeChangeListener(ComponentIcons::updateColors); + } + + private static void updateColors() { + noseCone = GUIUtil.getUITheme().getComponentIconNoseCone(); + bodyTube = GUIUtil.getUITheme().getComponentIconBodyTube(); + transition = GUIUtil.getUITheme().getComponentIconTransition(); + trapezoidFinSet = GUIUtil.getUITheme().getComponentIconTrapezoidFinSet(); + ellipticalFinSet = GUIUtil.getUITheme().getComponentIconEllipticalFinSet(); + freeformFinSet = GUIUtil.getUITheme().getComponentIconFreeformFinSet(); + tubeFinSet = GUIUtil.getUITheme().getComponentIconTubeFinSet(); + launchLug = GUIUtil.getUITheme().getComponentIconLaunchLug(); + railButton = GUIUtil.getUITheme().getComponentIconRailButton(); + innerTube = GUIUtil.getUITheme().getComponentIconInnerTube(); + tubeCoupler = GUIUtil.getUITheme().getComponentIconTubeCoupler(); + centeringRing = GUIUtil.getUITheme().getComponentIconCenteringRing(); + bulkhead = GUIUtil.getUITheme().getComponentIconBulkhead(); + engineBlock = GUIUtil.getUITheme().getComponentIconEngineBlock(); + parachute = GUIUtil.getUITheme().getComponentIconParachute(); + streamer = GUIUtil.getUITheme().getComponentIconStreamer(); + shockCord = GUIUtil.getUITheme().getComponentIconShockCord(); + mass = GUIUtil.getUITheme().getComponentIconMass(); + stage = GUIUtil.getUITheme().getComponentIconStage(); + boosters = GUIUtil.getUITheme().getComponentIconBoosters(); + pods = GUIUtil.getUITheme().getComponentIconPods(); + mass_altimeter = GUIUtil.getUITheme().getComponentIconMassAltimeter(); + mass_battery = GUIUtil.getUITheme().getComponentIconMassBattery(); + mass_deployment_charge = GUIUtil.getUITheme().getComponentIconMassDeploymentCharge(); + mass_payload = GUIUtil.getUITheme().getComponentIconMassPayload(); + mass_flight_comp = GUIUtil.getUITheme().getComponentIconMassFlightComp(); + mass_recovery_hardware = GUIUtil.getUITheme().getComponentIconMassRecoveryHardware(); + mass_tracker = GUIUtil.getUITheme().getComponentIconMassTracker(); } private static void load(String filename, String name, diff --git a/swing/src/net/sf/openrocket/gui/util/UITheme.java b/swing/src/net/sf/openrocket/gui/util/UITheme.java index 59dcae0c4..96cb57ac1 100644 --- a/swing/src/net/sf/openrocket/gui/util/UITheme.java +++ b/swing/src/net/sf/openrocket/gui/util/UITheme.java @@ -11,19 +11,16 @@ import org.slf4j.LoggerFactory; import javax.swing.BorderFactory; import javax.swing.Icon; -import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.border.Border; import java.awt.Color; import java.awt.Font; import java.io.IOException; -import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.Enumeration; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.concurrent.atomic.AtomicReference; public class UITheme { private static final Translator trans = Application.getTranslator(); @@ -87,6 +84,36 @@ public class UITheme { void formatScriptTextArea(RSyntaxTextArea textArea); + // Rocket component icons + String getComponentIconNoseCone(); + String getComponentIconBodyTube(); + String getComponentIconTransition(); + String getComponentIconTrapezoidFinSet(); + String getComponentIconEllipticalFinSet(); + String getComponentIconFreeformFinSet(); + String getComponentIconTubeFinSet(); + String getComponentIconLaunchLug(); + String getComponentIconRailButton(); + String getComponentIconInnerTube(); + String getComponentIconTubeCoupler(); + String getComponentIconCenteringRing(); + String getComponentIconBulkhead(); + String getComponentIconEngineBlock(); + String getComponentIconParachute(); + String getComponentIconStreamer(); + String getComponentIconShockCord(); + String getComponentIconMass(); + String getComponentIconStage(); + String getComponentIconBoosters(); + String getComponentIconPods(); + String getComponentIconMassAltimeter(); + String getComponentIconMassBattery(); + String getComponentIconMassDeploymentCharge(); + String getComponentIconMassPayload(); + String getComponentIconMassFlightComp(); + String getComponentIconMassRecoveryHardware(); + String getComponentIconMassTracker(); + // Static list of listeners static List themeChangeListeners = new ArrayList<>(); @@ -361,6 +388,119 @@ public class UITheme { log.warn("Unable to load RSyntaxTextArea theme", ioe); } } + + @Override + public String getComponentIconNoseCone() { + return "nosecone"; + } + @Override + public String getComponentIconBodyTube() { + return "bodytube"; + } + @Override + public String getComponentIconTransition() { + return "transition"; + } + @Override + public String getComponentIconTrapezoidFinSet() { + return "trapezoidfin"; + } + @Override + public String getComponentIconEllipticalFinSet() { + return "ellipticalfin"; + } + @Override + public String getComponentIconFreeformFinSet() { + return "freeformfin"; + } + @Override + public String getComponentIconTubeFinSet() { + return "tubefin"; + } + @Override + public String getComponentIconLaunchLug() { + return "launchlug"; + } + @Override + public String getComponentIconRailButton() { + return "railbutton"; + } + @Override + public String getComponentIconInnerTube() { + return "innertube"; + } + @Override + public String getComponentIconTubeCoupler() { + return "tubecoupler"; + } + @Override + public String getComponentIconCenteringRing() { + return "centeringring"; + } + @Override + public String getComponentIconBulkhead() { + return "bulkhead"; + } + @Override + public String getComponentIconEngineBlock() { + return "engineblock"; + } + @Override + public String getComponentIconParachute() { + return "parachute"; + } + @Override + public String getComponentIconStreamer() { + return "streamer"; + } + @Override + public String getComponentIconShockCord() { + return "shockcord"; + } + @Override + public String getComponentIconMass() { + return "mass"; + } + @Override + public String getComponentIconStage() { + return "stage"; + } + @Override + public String getComponentIconBoosters() { + return "boosters"; + } + @Override + public String getComponentIconPods() { + return "pods"; + } + @Override + public String getComponentIconMassAltimeter() { + return "altimeter"; + } + @Override + public String getComponentIconMassBattery() { + return "battery"; + } + @Override + public String getComponentIconMassDeploymentCharge() { + return "deployment-charge"; + } + @Override + public String getComponentIconMassPayload() { + return "payload"; + } + @Override + public String getComponentIconMassFlightComp() { + return "flight-comp"; + } + @Override + public String getComponentIconMassRecoveryHardware() { + return "recovery-hardware"; + } + @Override + public String getComponentIconMassTracker() { + return "tracker"; + } }, DARK { private final String displayName = trans.get("UITheme.Dark"); @@ -591,6 +731,119 @@ public class UITheme { log.warn("Unable to load RSyntaxTextArea theme", ioe); } } + + @Override + public String getComponentIconNoseCone() { + return "nosecone"; + } + @Override + public String getComponentIconBodyTube() { + return "bodytube"; + } + @Override + public String getComponentIconTransition() { + return "transition"; + } + @Override + public String getComponentIconTrapezoidFinSet() { + return "trapezoidfin"; + } + @Override + public String getComponentIconEllipticalFinSet() { + return "ellipticalfin_dark"; + } + @Override + public String getComponentIconFreeformFinSet() { + return "freeformfin_dark"; + } + @Override + public String getComponentIconTubeFinSet() { + return "tubefin"; + } + @Override + public String getComponentIconLaunchLug() { + return "launchlug_dark"; + } + @Override + public String getComponentIconRailButton() { + return "railbutton"; + } + @Override + public String getComponentIconInnerTube() { + return "innertube"; + } + @Override + public String getComponentIconTubeCoupler() { + return "tubecoupler"; + } + @Override + public String getComponentIconCenteringRing() { + return "centeringring"; + } + @Override + public String getComponentIconBulkhead() { + return "bulkhead"; + } + @Override + public String getComponentIconEngineBlock() { + return "engineblock"; + } + @Override + public String getComponentIconParachute() { + return "parachute_dark"; + } + @Override + public String getComponentIconStreamer() { + return "streamer_dark"; + } + @Override + public String getComponentIconShockCord() { + return "shockcord_dark"; + } + @Override + public String getComponentIconMass() { + return "mass_dark"; + } + @Override + public String getComponentIconStage() { + return "stage"; + } + @Override + public String getComponentIconBoosters() { + return "boosters"; + } + @Override + public String getComponentIconPods() { + return "pods_dark"; + } + @Override + public String getComponentIconMassAltimeter() { + return "altimeter_dark"; + } + @Override + public String getComponentIconMassBattery() { + return "battery_dark"; + } + @Override + public String getComponentIconMassDeploymentCharge() { + return "deployment-charge_dark"; + } + @Override + public String getComponentIconMassPayload() { + return "payload"; + } + @Override + public String getComponentIconMassFlightComp() { + return "flight-comp_dark"; + } + @Override + public String getComponentIconMassRecoveryHardware() { + return "recovery-hardware_dark"; + } + @Override + public String getComponentIconMassTracker() { + return "tracker_dark"; + } }, AUTO { private final String displayName = trans.get("UITheme.Auto"); @@ -833,6 +1086,119 @@ public class UITheme { public void formatScriptTextArea(RSyntaxTextArea textArea) { getCurrentTheme().formatScriptTextArea(textArea); } + + @Override + public String getComponentIconNoseCone() { + return getCurrentTheme().getComponentIconNoseCone(); + } + @Override + public String getComponentIconBodyTube() { + return getCurrentTheme().getComponentIconBodyTube(); + } + @Override + public String getComponentIconTransition() { + return getCurrentTheme().getComponentIconTransition(); + } + @Override + public String getComponentIconTrapezoidFinSet() { + return getCurrentTheme().getComponentIconTrapezoidFinSet(); + } + @Override + public String getComponentIconEllipticalFinSet() { + return getCurrentTheme().getComponentIconEllipticalFinSet(); + } + @Override + public String getComponentIconFreeformFinSet() { + return getCurrentTheme().getComponentIconFreeformFinSet(); + } + @Override + public String getComponentIconTubeFinSet() { + return getCurrentTheme().getComponentIconTubeFinSet(); + } + @Override + public String getComponentIconLaunchLug() { + return getCurrentTheme().getComponentIconLaunchLug(); + } + @Override + public String getComponentIconRailButton() { + return getCurrentTheme().getComponentIconRailButton(); + } + @Override + public String getComponentIconInnerTube() { + return getCurrentTheme().getComponentIconInnerTube(); + } + @Override + public String getComponentIconTubeCoupler() { + return getCurrentTheme().getComponentIconTubeCoupler(); + } + @Override + public String getComponentIconCenteringRing() { + return getCurrentTheme().getComponentIconCenteringRing(); + } + @Override + public String getComponentIconBulkhead() { + return getCurrentTheme().getComponentIconBulkhead(); + } + @Override + public String getComponentIconEngineBlock() { + return getCurrentTheme().getComponentIconEngineBlock(); + } + @Override + public String getComponentIconParachute() { + return getCurrentTheme().getComponentIconParachute(); + } + @Override + public String getComponentIconStreamer() { + return getCurrentTheme().getComponentIconStreamer(); + } + @Override + public String getComponentIconShockCord() { + return getCurrentTheme().getComponentIconShockCord(); + } + @Override + public String getComponentIconMass() { + return getCurrentTheme().getComponentIconMass(); + } + @Override + public String getComponentIconStage() { + return getCurrentTheme().getComponentIconStage(); + } + @Override + public String getComponentIconBoosters() { + return getCurrentTheme().getComponentIconBoosters(); + } + @Override + public String getComponentIconPods() { + return getCurrentTheme().getComponentIconPods(); + } + @Override + public String getComponentIconMassAltimeter() { + return getCurrentTheme().getComponentIconMassAltimeter(); + } + @Override + public String getComponentIconMassBattery() { + return getCurrentTheme().getComponentIconMassBattery(); + } + @Override + public String getComponentIconMassDeploymentCharge() { + return getCurrentTheme().getComponentIconMassDeploymentCharge(); + } + @Override + public String getComponentIconMassPayload() { + return getCurrentTheme().getComponentIconMassPayload(); + } + @Override + public String getComponentIconMassFlightComp() { + return getCurrentTheme().getComponentIconMassFlightComp(); + } + @Override + public String getComponentIconMassRecoveryHardware() { + return getCurrentTheme().getComponentIconMassRecoveryHardware(); + } + @Override + public String getComponentIconMassTracker() { + return getCurrentTheme().getComponentIconMassTracker(); + } } }