From 57655e3a3a0dbb229ae7e60f8c0b13d07682b389 Mon Sep 17 00:00:00 2001 From: Cyberarm Date: Mon, 8 Nov 2021 18:38:28 -0600 Subject: [PATCH] Added icons --- lib/games/expansive_civilian_warfare.rb | 6 ++-- lib/games/interim_apex.rb | 6 ++-- lib/games/ra_a_path_beyond.rb | 6 ++-- lib/games/renegade.rb | 2 +- lib/games/ts_reborn.rb | 6 ++-- lib/states/boot.rb | 2 +- lib/states/interface.rb | 37 +++++++++++++++--------- media/ui_icons/gear.png | Bin 0 -> 16228 bytes media/ui_icons/license.txt | 14 +++++++++ media/ui_icons/massiveMultiplayer.png | Bin 0 -> 16113 bytes media/ui_icons/multiplayer.png | Bin 0 -> 15819 bytes media/ui_icons/question.png | Bin 0 -> 15636 bytes media/ui_icons/save.png | Bin 0 -> 15155 bytes media/ui_icons/share1.png | Bin 0 -> 15440 bytes media/ui_icons/siganl1.png | Bin 0 -> 15150 bytes media/ui_icons/signal2.png | Bin 0 -> 15191 bytes media/ui_icons/signal3.png | Bin 0 -> 15211 bytes media/ui_icons/singleplayer.png | Bin 0 -> 15663 bytes media/ui_icons/trashcan.png | Bin 0 -> 15231 bytes media/ui_icons/warning.png | Bin 0 -> 15751 bytes media/ui_icons/wrench.png | Bin 0 -> 15771 bytes 21 files changed, 52 insertions(+), 27 deletions(-) create mode 100644 media/ui_icons/gear.png create mode 100644 media/ui_icons/license.txt create mode 100644 media/ui_icons/massiveMultiplayer.png create mode 100644 media/ui_icons/multiplayer.png create mode 100644 media/ui_icons/question.png create mode 100644 media/ui_icons/save.png create mode 100644 media/ui_icons/share1.png create mode 100644 media/ui_icons/siganl1.png create mode 100644 media/ui_icons/signal2.png create mode 100644 media/ui_icons/signal3.png create mode 100644 media/ui_icons/singleplayer.png create mode 100644 media/ui_icons/trashcan.png create mode 100644 media/ui_icons/warning.png create mode 100644 media/ui_icons/wrench.png diff --git a/lib/games/expansive_civilian_warfare.rb b/lib/games/expansive_civilian_warfare.rb index 0116ed8..a79d716 100644 --- a/lib/games/expansive_civilian_warfare.rb +++ b/lib/games/expansive_civilian_warfare.rb @@ -7,9 +7,9 @@ class W3DHub set_news_feed "https://w3dhub.com/forum/forum/208-expansive-civilian-warfare.xml" set_background_color 0xff_3e5c87 - menu_item(nil, "Game Settings") - menu_item(nil, "Repair Installation") - menu_item(nil, "Uninstall") + menu_item("#{GAME_ROOT_PATH}/media/ui_icons/gear.png", "Game Settings") + menu_item("#{GAME_ROOT_PATH}/media/ui_icons/wrench.png", "Repair Installation") + menu_item("#{GAME_ROOT_PATH}/media/ui_icons/trashCan.png", "Uninstall") menu_item(nil, "Install Folder") menu_item(nil, "User Data Folder") diff --git a/lib/games/interim_apex.rb b/lib/games/interim_apex.rb index 8118e59..b213781 100644 --- a/lib/games/interim_apex.rb +++ b/lib/games/interim_apex.rb @@ -7,9 +7,9 @@ class W3DHub set_news_feed "https://w3dhub.com/forum/forum/209-interim-apex.xml" set_background_color 0xff_034866 - menu_item(nil, "Game Settings") - menu_item(nil, "Repair Installation") - menu_item(nil, "Uninstall") + menu_item("#{GAME_ROOT_PATH}/media/ui_icons/gear.png", "Game Settings") + menu_item("#{GAME_ROOT_PATH}/media/ui_icons/wrench.png", "Repair Installation") + menu_item("#{GAME_ROOT_PATH}/media/ui_icons/trashCan.png", "Uninstall") menu_item(nil, "Install Folder") menu_item(nil, "User Data Folder") diff --git a/lib/games/ra_a_path_beyond.rb b/lib/games/ra_a_path_beyond.rb index 66fea9b..03dd3b0 100644 --- a/lib/games/ra_a_path_beyond.rb +++ b/lib/games/ra_a_path_beyond.rb @@ -7,9 +7,9 @@ class W3DHub set_news_feed "https://w3dhub.com/forum/forum/201-red-alert-a-path-beyond.xml" set_background_color 0xff_353535 - menu_item(nil, "Game Settings") - menu_item(nil, "Repair Installation") - menu_item(nil, "Uninstall") + menu_item("#{GAME_ROOT_PATH}/media/ui_icons/gear.png", "Game Settings") + menu_item("#{GAME_ROOT_PATH}/media/ui_icons/wrench.png", "Repair Installation") + menu_item("#{GAME_ROOT_PATH}/media/ui_icons/trashCan.png", "Uninstall") menu_item(nil, "Install Folder") menu_item(nil, "User Data Folder") diff --git a/lib/games/renegade.rb b/lib/games/renegade.rb index 730b517..5c7f2c9 100644 --- a/lib/games/renegade.rb +++ b/lib/games/renegade.rb @@ -7,7 +7,7 @@ class W3DHub set_news_feed "https://w3dhub.com/forum/forum/231-command-and-conquer-renegade.xml" set_background_color 0xff_b03f25 - menu_item(nil, "Game Settings") + menu_item("#{GAME_ROOT_PATH}/media/ui_icons/gear.png", "Game Settings") menu_item(nil, "Install Folder") menu_item(nil, "View Screenshots") diff --git a/lib/games/ts_reborn.rb b/lib/games/ts_reborn.rb index 273914c..4f7cd3f 100644 --- a/lib/games/ts_reborn.rb +++ b/lib/games/ts_reborn.rb @@ -7,9 +7,9 @@ class W3DHub set_news_feed "https://w3dhub.com/forum/forum/97-tiberian-sun-reborn.xml" set_background_color 0xff_497331 - menu_item(nil, "Game Settings") - menu_item(nil, "Repair Installation") - menu_item(nil, "Uninstall") + menu_item("#{GAME_ROOT_PATH}/media/ui_icons/gear.png", "Game Settings") + menu_item("#{GAME_ROOT_PATH}/media/ui_icons/wrench.png", "Repair Installation") + menu_item("#{GAME_ROOT_PATH}/media/ui_icons/trashCan.png", "Uninstall") menu_item(nil, "Install Folder") menu_item(nil, "User Data Folder") diff --git a/lib/states/boot.rb b/lib/states/boot.rb index 7ef6c7a..c386590 100644 --- a/lib/states/boot.rb +++ b/lib/states/boot.rb @@ -11,7 +11,7 @@ class W3DHub stack(width: 1.0, height: 0.925) do end - @progressbar = progress height: 0.025, width: 1.0 + @progressbar = progress height: 0.025, width: 1.0, fraction_background: 0xff_00acff, border_thickness: 0 flow(width: 1.0, height: 0.05, padding_left: 16, padding_right: 16, padding_bottom: 8, padding_top: 8) do caption "Checking for updates...", width: 0.5 diff --git a/lib/states/interface.rb b/lib/states/interface.rb index b584eee..bb9e092 100644 --- a/lib/states/interface.rb +++ b/lib/states/interface.rb @@ -4,6 +4,8 @@ class W3DHub def setup window.show_cursor = true + @focused_game = W3DHub::Game.games.first + @main_thread_queue = [] theme({ @@ -97,19 +99,7 @@ class W3DHub # background 0xff_44aa00 # Games List - stack(width: 0.15, height: 1.0) do - background 0xff_121920 - - W3DHub::Game.games.each do |game| - stack(width: 1.0, border_thickness_left: 4, border_color_left: 0xff_000000) do - background game.background_color - - image game.icon, height: 48 - inscription game.name - end.subscribe(:clicked_left_mouse_button) do |e| - populate_game_page(game) - end - end + @games_list_container = stack(width: 0.15, height: 1.0) do end # Game Menu @@ -119,6 +109,7 @@ class W3DHub end populate_game_page(W3DHub::Game.games.first) + populate_games_list end def update @@ -129,6 +120,26 @@ class W3DHub end end + def populate_games_list + @games_list_container.clear do + background 0xff_121920 + + W3DHub::Game.games.each do |game| + selected = game == @focused_game + + stack(width: 1.0, border_thickness_left: 4, border_color_left: selected ? 0xff_00acff : 0x00_000000) do + background game.background_color if selected + + image game.icon, height: 48 + inscription game.name + end.subscribe(:clicked_left_mouse_button) do |e| + populate_game_page(game) + populate_games_list + end + end + end + end + def populate_game_page(game) @focused_game = game diff --git a/media/ui_icons/gear.png b/media/ui_icons/gear.png new file mode 100644 index 0000000000000000000000000000000000000000..bc1957314cb4b2a0d0cd0bdc93d2081e29b740d4 GIT binary patch literal 16228 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 Vee;{aljy?`ij9s_*F~*<_ID}pLj3>$ literal 0 HcmV?d00001 diff --git a/media/ui_icons/multiplayer.png b/media/ui_icons/multiplayer.png new file mode 100644 index 0000000000000000000000000000000000000000..6d960008c8ad96543238aff61322b4716ac60419 GIT binary patch literal 15819 zcmeI3ZB!Fi8plUKMSO#5ZB@iE=&o9m$t#c{L`Z@{*8mF<pb*HI=Op{I&Sp37tbY6OwZby)~q8EHq0$P$A&h11=1nu8kj zDV#+THD7H}lBI@>3M-jck)_d9lp#}@}N-HdTi zkHlV;}q=(!N9y<*=u4IP^gNmv3Gsi+>=q&BqQ<#9V|06Y%(0h$OZ8 z`DrH8pqVy%E*Y5Fpaa@8ZVQR!k~Yd=)sa9RKiDPM?CIrTN2-b| zi^FR4fY$3U(ny*>iVaW@3_2G}DP^Z@rBn!j{_c<%?S|qIEa;w)X{5^#B8~3xrg>`0 zyVNpJ$hgu<5_Za}p(vx=Tdp~MSC1-{=*&e1vz~I=X34N%b)aSfMx=_clX6hgVo=Ro zzEC3+;36T;7rn+8;Cw!0;#CHDs42an*ge1l7$o811lR*o277=#s3+{i3%S7B{yu6o zo@ut(3A2vORLQ~Ic?N?X*Ac=baZ;j)E0&0oxKdIq<`PmN!4(k+LPA6&>V<+L&m{Y& z53p8IItN`tK5IR&7N?6vi7KTkL8zQ35TuKf6iK2qr9>=JC=&!yNkX43lseFsv>M7u z{X8pW@@#JlVYQL;u1VqaZ5#i2;Hv@8zQYXzr|P?&w9wZxAT@A3z+C3-)`y&_g2@?5 z4LJKT1g08P(g1z7)c{U(!U(aVSMdMAJctE!5x@-$lVPxdt>cEqr{_(dt9j(I{;ho- zM#Bp(jDLB+X@(Oz`oxyo2(Y*^%yYu^wFNH9n?Voc6%4YbFIK(-(nF8oEG5nTwtLW4 z^;&sUp-pU5vE4~n$+Qx%BNz@LuVMd;(9XJ2!dyb?5My7>92aCdNOAakMFV3!MhqXjiX zS@a*27e*eqDI?_x5{XD6!-AWGGja?r(x_D#z*%aecL;m%;I811PfSPFb&3-#l?sS7O=Qr8jLZEixCklU~$1T7-JR}BO+M9 z;(}=~#w;#IM6iIx1=C=RSzL^WU;&E@rokAqxEK+^0u~ocgE4+CuBgDnmZTXxVd(^q zQVy%)H-X16QC&u^8bK;%AV}p31nGSSzQ02d2OmN16e0*-iy*I18<(D&halmHGgWCC zSI6DD?qwaR(dTxj^z!f;yi$YieY+;gGW?5|Yc-Y0{Dw2H4?X{~wh`Hn{QBcA<)v|d zXt}lW(bEh!HBS^5Z+7%FbzZ$U#W{ns=jP{QlNz~_6CG9`xf1;Je!`9Z zF1qpQqUBM>xkGZ0+OU>Ma%{+PQ)`UPS=k(6 z{*mo#TK=@=F4t&o6;+tFMWZjpxVJv)sBSs5qH|gG7|WrOA6g4KzMXyMvzT2APM*|k z8mZ8R?fDU%)3HC|zG=;hACJb5s{LZuhb!Oz9trQ-zD+)zgK zk1j!66W>|=&zV~nYAZ4iL@Jxcq*YBHGh27{a^CQFXHN{P$=oB{m(oz}MAP>Ot9P}p zY8cmbbpQU!_Nq@0y_Ne)cj|#uGT+mWjj70QuxBsnezmpvNGwuw#Sz~daWv<_#^FeE z_2crc0&cf<)QFa>2E~_KznRnO6yxoe9Pz6%PM-O1F9u?GvcHMakw)P4T@R%^qD?E6l6+@iR4z4Yq_r8l>t(ECxMy%~=|8&`H+;xBBg7|Uu-%M-BtxzO8A3bUQ)th6>kMU-0Ejt$- zv(r5Jqdz|=JdwBLjo0$!3G43nG;X?*H$O6Jx>Ket|9n=>2m997td7V<3)GVfs+O;f zA6iw{bK~m7Cwr>&8^SMyAr~T>pZ4CV53e7ej)q6%&M)}nZ`lcw%FP?XXN9kIlNsp2 z7NV|e%P->YHY&p0RgV|k*-QMZ>(=iZhNEL|AL-PT<(#f=&3jXfean-%&i{7bOR;sA zqJJ~>$>q6DV~_mWrdaE-kY5Oau@dLrmo4KFy<0NVS zmHm6VWbCs8cSmPWDA~QXZTXI`?z@KluKN-`ap#G;zqbw-UUYxlF{*t_Zve z*iSYuF4moxf4!+K@%rfTMLo&q-k4C86QMxIS4BsrqY;W2-zU`Q?`o-eScW{v&pw{9 TV|)SqxOHZFma0)v`1bz*jUKw{ literal 0 HcmV?d00001 diff --git a/media/ui_icons/question.png b/media/ui_icons/question.png new file mode 100644 index 0000000000000000000000000000000000000000..a1b75ad5601a54a60d28edc25f6f00ca6f10190d GIT binary patch literal 15636 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 IdDY|p13*D+6aWAK literal 0 HcmV?d00001 diff --git a/media/ui_icons/save.png b/media/ui_icons/save.png new file mode 100644 index 0000000000000000000000000000000000000000..a40de9fc3ee7d12d73b9bd48eb1db3bfd4827b9b GIT binary patch literal 15155 zcmeI3UuYaf9LFd9XOmipwa_B9uGdyt+PmGof5|O-*Ccm|7u!oidZh`X?Phl_xAty# z-QDY5B52SeR(&W+L$w8KeGvo;)dx|eP|-&b#0Rxc6_HAzR75Ei>+J3QncKVTMCjuj zB=^hA_xGKd&-`YxFMD!w;>q=WkMscm){m!CQ|Mc9e%7u*zm03Bv*@eWNY7XRtb5q` z=>hMa+YCT#NzG2%)0zE(tQP~4qR+xWrDz~E0OHesS5ys7l;- zIFjKqMiS=L^nwWwE=*+Qg=2C|@$F6Yi4_4E6rn9Km104&gi733^%YR;G_yXYDzT5n zeZ$Ux%yedwN$MtKB7uls=7Kyk5DV~;aE#~oFhPzFu{_5HV}70&!UF;yWojQ^q7Ox) zspN#I)L3me^jF-Mw{1gU*>brYD2D>NImhy`Sd8U@Y%u6Y3coe4*;2)?S=(Hbx=#vP zvZ)%js%wnnE6wU9JMQy212sOibrp@qK$=x!hbXcY$zb^a$974|WbU0-EOyMa>?zn> zS;qmb?7RWlDQM{>Q-(;strD-OB4-05-b2Vzkv<7Zy%W*ECpByQDciZd$db+^rT-Aqzq z%XP9odnTD=b{sMAoZr)=bj~rX(9CP)&zXHT$_>HpmO1pumN9bG*QDn2D?O zcw}@%&CR!YAcH|69K$^@rPl+UK}E8qWx3$mR-a5p7}qRY(quTEN}#m|R8N-*Y+LVl3rrD%9|Hdb9^YkHe?N|#Gc4b`j_WE~!jgu}xlW6@x8 zjORzggCm2X;bbHn8c9a^SR`7v#ZudCp{X8+%9yDatH;}rOba@vChn^ro5p=mtAXmd z6V&#l*5;G!KA*PK=6sO3=yoezSDGR@W2sH&28QNRJtd9MA23yPqe}&hm9vBY2XhAt zY!b)~4U<+abadvi@tt)$_v%6Td~0jHqo6KxV;b9oZZkoWof|u0NoaFLwtBV_Z(H%s;cU4V(B@%ESYe44xI?XCFB~mW^{L!^O80P zl>}RdR&Vg8h^(_~1+{h4+}75;tk+-r-iwMXusv zRJ_}p+RQwpsdge*8_m;qhV_qH4f%|4w_54&&IeN9R#OAj43W6 zB3wXm;WUUb#YIGf3n(s}1~I0%h=_0j#f8%##uOJ35iX#(a2mvz;vyo#1r!%fgBVj> zL`1lN;=*YVV~UH22p3RXI1OSar$LM0Jwb@eP0Kl!~yX8Q2>N90Bq9VI`Z`x06m+= zQ^VQHPdBdqy#5N;KRV1l_1>pzP6u|Z+PHGy)|Qh;wr=$=?bu)Xdvao6A4m-?u3g*T z)8k`?R$;L{dMa`I7j5Ly!uIo^H`%k{)fL+xT%F$BcZ%D{NIReY?tzPYFTZ&6{G0qY z-=EkM-8FP&a`D9bg-y?X_T?LFssGpAFTCE{d)ASnp69MT`qc*q!gsd(aeeECTmNR# z(?g5-AFT8{Xxt0%ul|=lpB<^s;@ihR`RMJ7htBpNnOWh?Y1M0s;GurT8~-_W`JZQ& z?mYHHz5l|Gzn!{tuJ)(99Ji~d_r_`f?%rJqw$D#k$$eLI&TFmXqZ6r*M~=SyAAI~} A)&Kwi literal 0 HcmV?d00001 diff --git a/media/ui_icons/share1.png b/media/ui_icons/share1.png new file mode 100644 index 0000000000000000000000000000000000000000..3db9e9915862d0a3a8ae6366bc525bb87f0d4243 GIT binary patch literal 15440 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 literal 0 HcmV?d00001 diff --git a/media/ui_icons/signal3.png b/media/ui_icons/signal3.png new file mode 100644 index 0000000000000000000000000000000000000000..b0763e7d8da1681202a49b315a08ef8bd53ac512 GIT binary patch literal 15211 zcmeI3Z)_7~9LI045SW>nF({E3k1`X?Z0}G1tUbGqt=-&+Wy>fqNW@+5o^==6yK;A< z-B4LXBO0BAL`35|qbMjSzA}o87?H#TBm`mvXF>=OLIMdvgAnI)z5aRHwLCN7<#S2b z-=63D`#$%4p5OEI-rO7gtDkLbc&veD7tsK6d2HfRn;pA#f4@Nagb2dHplgEk2+{Y zZgZ^nM%idO3`UfmaUHA~UmcUiH%kH8(H?3DW(8=F0;Wi3Q%ThjvTcr>uK;7KnQ_oL ziMhGW(P0fp4@Udxu%-jr>+(7!mgnf!fQ$2b0vz`=&9j`F;aG+bI5|%6vpD z1B`;YJS+@Ey7R-q|JocQrkNHPCX>myGH#cqCm1de2rw+q@VpZ$oW_`Hidm;>EVoSx zJ`rF@x{@{(O{FbgF|Li8Z4QSuQ1QyoE0rz|q#Aj4kRp>6(+uZgnHova=)KcYsj8WV zIRHvCt2&?&8%qOb02tb+E&(WCUhNhPvui7yQXbJ9jJmc0)vRhIOGTgbsGiJ$mL&!x zK?O^l{8T!V$xQ!@=@l^SVQkDZpQDSN4du#knY4n$Ma zW15x>+2z__xO+MrrdO<2R9VXyPX(Dub*W}bMj#@ZAOvgL1FPA|@-dzh+`PbgT3AkC zS;WLvR(M1;Ss5Oi|AmBbqd7)llAAhSr|0PTt4z zojyL?&2e2Gf2ZHw5%zlAonapr@cIh2Na}1`petK}+^uV=-1bh3x&f?R)8;5_o8ozp zuYugY6O`Fg&EJo|_WjICE!__^58B;w&6x&p&PZy>xrm`O)ryja==*d9p6Fr{VP&o0 z|G`|v0=Wt328ZcU47hd1knyc~Tj%N;u%*1U(2-Q;xG=@#fv1@uO4f-TGDNtzK_+*? z71~NSWoK9e*@7x-I=Awjm0o*{%m`4+wtK}^wXJfh+9rlJY-U6qbR^)8z#KxhVR=Sv zXK6%K6F?3z1!#qa%9J2uty)qkUo^Y5d@T$0H+$`avLp;^dP+1yN=i%sCaordOsTOn zX0Z4RAcVD~ro+Pwgxo=-Gkj%I3<9ekBW%gAoOu zrG~Xb;MDR-l|5B6H`L5Tdh(feF(406xmvMX;o}*6GGvO6hUH~c+?e+{C{5`;8>4n) z5R?WsCb+POPyxY((!j<97ZwpJAh=K(*qGqLB0>cO7fJ&g6I@tCsDR)?X<%c53yTO9 z5L_q?Y)o)r5upNt3#EaL2`(%mR6uZ{G_Wzjg++u42riTcHYT{Rh)@B+h0?&r1Q!+& zDj>K}8rYcN!XiQi1Q$vJ8xveuM5ut^LTO-Qf(wfX6%bq~4QxzsVG*GMf(xaAjR`I+ zB2++dp){~D!G%SH3J5Ng1~w+Ru!v9r!G+Sm#sn7@5h@_KP#V~n;KCw81q2sL0~_BH zS3~J#OQ6CxEHm&`O6l#`1bhvXmU;%F6gB=NMNRCWsM|B}`wB&kvJ`c7h@ynO6!oaK z`-LC7DXOloH_{Qy{&wxc>F5valGjczePr3vsReIMtzbL5hw6PpuTK6lIkjNtqL(){ z9ddql=J=J{&F#XQdc5oKfd|(v{$k%V?@&7@sE3;9dGjJGCl;dd31Qo+!*?DZm9Oo7 zvH2TqZ2pcX0(Woiy2MJ;iQPXn|FN#;{3q|$!9CrKTN=FMi~rSJqoL3!Ccd z9Q4X_=g*#M*>iB;@6#WjYPt5;zh5htzvCKDwS2zo=Of3~p<}`L^x_WR_Dx@z&dj!L z?T3E7pkDVF(|adRwv2CFcI4=>li~XMQbx7->Y__u-ncM*X#193f4eV#KRtD;@4)_z zlke^SXaAY=>(Ab7e17K78;QH2tM*jwd$i*d=kC-|)XdC$YRT)LcK0={x(=6t>g`$` JIoLV$%73$SmwEsI literal 0 HcmV?d00001 diff --git a/media/ui_icons/singleplayer.png b/media/ui_icons/singleplayer.png new file mode 100644 index 0000000000000000000000000000000000000000..a8e657166be961cfb9c55a7b74c3a33b13cb57d6 GIT binary patch literal 15663 zcmeI3dsGuw9>>Rnt$@cB7F(aRA?iwzFqu4nOp_o=RMg^Y?nE^(VOqvW5sB3+o zsFkiFKB~2?7FPS>bhmPPtm|&K^|7mUebiO^&}xgjZnv7su`BG+N?oSTuTGt@GhTtP^(G#P|ir6GuPi9${&aYBwOG%|u9RaqpF zDG6RueLRS?Zn}~zG35t`1K)JgYMytII9^*@n^CLG;M`R>q0wk?xdK-xWI!SF)H!*| zD|33r2TXc>OpM3oW?ekXIVFNGRl(KpI;m6`D0Btq<#2@ta(aU707cwOxo{#wjz>wd zSRS6{a15B~;Y*nC%my6LW36*BcnRa-YTPyk$j1+K3m!giDVS0a(IXh;EoGeifL63E z%}wi=;^g4Q&!R^_RbStg?}h&)xcAzPViRI8K*VhYD7r`^wZreIMFFP#7bDf{|EB`7SK%qH!zHu^?_tpr-Z;~97|#6ypUeak4cF@NSDJf)x67`77!foULP5f>5>ED&+QG?1}~3yBC8 zh`3-H$XLXML<9>&Trdq}EaE~Uf(0TjmmxL_K{Sj2@y1Per5Fb!lZ z;zA;V1tKn(1~L|LArZj>5f@AY8H>1(h+u(;3#NgLMO;Wkut3BG(?G@|E+isYAmV~) zAY&015)mvAaltf@v4{(a2o{LAU>e9+#Dzoz3q)Kn4P^XKT=C(TEg2_x!?G5NG?q_C;Pvp#ahd)E4w~s)()9ylOKA) z*R^|e(`)6mHUGHvpgnW@$;V8?v+l*EHWbIMNr>N*U`QEZNNq4gd?}7S`^kHM)=t9Q z*elE0XPo@!;H&nxTw{&9#@)hNunp@^Ctp9f&9LpeJX5Rkb)V_8>G3_wezM-*w|Hma zu<~~fj`{q`{-;N_463`h`S81S<63Vo+&TY>B_+wb^Q?FJo=vJtYnQ#B^>=UKzZcH) zO|vz$Z2m2yFf7Y&Jdt|#$&{YLbFB%J4F_hG`CcE@bh<6($2Erbq%`H&*<}reRGK^` z^vAz)oSn$JTmQECzuLKXhL-$s{~LDq<_`|Pdh>p9%MZHN4;nvd8ou-5`4_1#u75?S zSNO&?J~w`9&glcHK5Y8t%VnV)rlQl zFn#dXm%T~m{6Y6eq_lQF*+rXh6%2$C1Y0=?d`Oy4PEQ#DJPoey_~T9o#lJ> zUvqVwZQC^1Is4uL(}pdJPcmCO^8S!LdDpa*vLgn?ONLP?CmOz-&!@lmaFK$Iu zPitWwe`ENXTi1GC{^rc_#HY^qIxnS-S=18ibxr*|?(M3?Esw8TTevr+J1(v1_}&-S z?f8tUJ(w8Rv2pVG`8wydTX*dfQg_cdJnKzg?y4^jeIvWS;Aq;_JJ0s5&*IonvHs=T bd&$^w{L<|i-9w%gUTH4KD>Ahk%2)jl-F$XT literal 0 HcmV?d00001 diff --git a/media/ui_icons/trashcan.png b/media/ui_icons/trashcan.png new file mode 100644 index 0000000000000000000000000000000000000000..cbd352d04a95716da0d875d27a47d1e2b27dfb04 GIT binary patch literal 15231 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 As{jB1 literal 0 HcmV?d00001 diff --git a/media/ui_icons/wrench.png b/media/ui_icons/wrench.png new file mode 100644 index 0000000000000000000000000000000000000000..5f7464176dfddeb467d90cdfe2ee09ce138c8b6d GIT binary patch literal 15771 zcmeI3dsGuw9>)jp0a000*j6gtB%%fsCQmS9h(H1hYA}VU;Il(Az${57CKD3yu|c%e z)gsbLsjbK3sV=&8)vDXmtp#1HJxbMD*LAIn&(*cMtk_y#wO#j4638VG$33TiPR>d4 z%e~*<_s;#?-@TcCX0^WH*TZ=6JOn|8<>zS&!MBNdM-Bp?wrd*<;48|OSK>gBAtRZ0 z7_#xb7ZF6+L>h|eV%>DiNLf;G6IDv2x-B-KMiA8$w+%N|5;VV*C?~BM!ma}cg?!SK zA)KwyiFGy&Q9J=o(3SB9{HrfnFCx?HYQmn@aCm!lG;Qi+PCs8pH)6e*5sD~-ET ztd220lWrd^;V{}s8%1NE+hgo>vuqhq1r~Eg@l80+KmK|kLm9c9CS_m3CRzcB}qk;+nu%|mDMw%=O!Gh@tnMSzD5NS-0FU?z1 zzNJ=yLdG<90;egvfuhW6U%BeLub!{b@I|vptBGm{<&%_>@5&I?6B_Pcahb9-MJbkp4_uy>Ql>N!rG$b|;J9y+z0>(v*svbVZs}lPi(r$R}k_l4WTWa#^+}O`=q!dD#J5D7CLGVJE8y zQ?8w|c(=C=w>t=C*JKF0w@uG^;I9GizQf4AQ}thuH1zfKNex^NFjx7yO(AD0V{?X5 z1I|4d0#gktX~1ZPodhR3ZiZMfEBOCl?#BYU2;c^W$s-+L>r_MIGxKK7)goe1@7C@P zGx?kg)3ZF_G{bNsb7HFOJAQ+X5Hm%U}lb3Hn*n=PTbn>7mDPRS?!*+dXKj z`mDUF&?XM5jCSF6BC8zi2$n<0XV^OFrlHJ~9UNwaTBbt#YlgCzv!5w# zKneHOgG7b)X$#gDGaKLR^y<^4V(w3(35V$T&yL*S?XYR2$-5bDY&QK%#x6qP>(;;R}9b% zl($xVt>E?y+!>-hw}!pTsApsT%t2sEKeI7x#|;A0V2wFktcYL%hYO~`8gsZ<5y1iu z7fgdS=5Vnhf(0Bdm;u z%;9211PeG^Fb&q2!^MgS7I3&=8muvgixm+p;Bdh-SYr+sDxL6Uv0uC2UgEi)Gu_A&694?p!Yy3=HyuibjgcUqt=>m^Z z{`ZUaDc~_ozA>**hafd$5yVr6AdjDd?^_7s6eGy(R}lnjMvxb%#)U_75hUWb`PwXl z`$FfYi*H=Wj9t0z{ZIdC*i$gDfoB^mh&wbZ28&EEP4@i9W7zZih?eDh5}J9(>UPHs zS^1}LJHEYypIX0j!|8VEy+wDvbgK$Z-IR$Y|8PjakNI6@VV&$^otLmGOD&EZ`#Egt? z)^zOGV>43q3lhKoN)VygP&+;D%aW*XA`o%GcXuYsMa*yLp}}|Irz`y=bkV zGV03EE9)R{-Zx6&Tz!AC!SF#g4|1I`JV@uJ0xj*LDuW1TpjKesY-$@GJ0 z#xJ&hRE50U^|fH&;l`wvN62?mMGyY4Q|F0mi4wJWMu*d@qeSW_4Kee-yQ5zcuFM-X zP1H5-!AFYqZHYr-Pkb}>!>%1~j=cSkZE>4QBO>*?Yv%~&y}=_+thC?DoUr?q&;H)L zuXXTQ*N|!0(LoL4mfYCc)`^fKeo7B>B);`<@R?|Q^Nk@*E2PT`yUrM(G*pDZ~2|UuQfJnX3bq!pD}gyor`t6%L}hvdN7Z!Ju`kr%&}E^>9(hM;q3OL z`AfB%?}v@`p!6|kOGjb#wvXGgP7b)g@8SIDq+1Qvi8c`4oi4t#-+DYj=x^{Q?8)?!ebJKOlQ}WUYQcHb1tO`RV%{kiFyIT}a3FyX{Z5FLpAIPv_?pXm@45y8M6e5TA(v literal 0 HcmV?d00001