From 55549c7ba5c792419139263853bf7379c8df3c2b Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Fri, 27 Dec 2019 03:05:17 +0200 Subject: [PATCH] - cleaned the Preferences classes and added the signals and signal slots in those classes, removing them from the main app class - each FlatCAM object found in Preferences has it's own set of controls for changing the colors - added a set of gray icons to be used when the theme is complete dark (for now it is useful only for MacOS with dark theme because at the moment the app is not styled to dark UI except the plot area) --- FlatCAMApp.py | 493 +++------- FlatCAMObj.py | 23 +- README.md | 3 + camlib.py | 9 +- flatcamGUI/FlatCAMGUI.py | 2 +- flatcamGUI/PreferencesUI.py | 908 +++++++++++++++--- share/dark_resources/about32.png | Bin 0 -> 1996 bytes share/dark_resources/active.gif | Bin 0 -> 30244 bytes share/dark_resources/active_2.gif | Bin 0 -> 30091 bytes share/dark_resources/active_2_static.png | Bin 0 -> 420 bytes share/dark_resources/active_3.gif | Bin 0 -> 31096 bytes share/dark_resources/active_3_static.png | Bin 0 -> 509 bytes share/dark_resources/active_4.gif | Bin 0 -> 29314 bytes share/dark_resources/active_4_static.png | Bin 0 -> 406 bytes share/dark_resources/active_static.png | Bin 0 -> 234 bytes share/dark_resources/addarray16.png | Bin 0 -> 157 bytes share/dark_resources/addarray20.png | Bin 0 -> 176 bytes share/dark_resources/addarray32.png | Bin 0 -> 251 bytes share/dark_resources/aero.png | Bin 0 -> 468 bytes share/dark_resources/aero_arc.png | Bin 0 -> 479 bytes share/dark_resources/aero_array.png | Bin 0 -> 482 bytes share/dark_resources/aero_buffer.png | Bin 0 -> 512 bytes share/dark_resources/aero_circle.png | Bin 0 -> 505 bytes share/dark_resources/aero_circle_geo.png | Bin 0 -> 505 bytes share/dark_resources/aero_disc.png | Bin 0 -> 481 bytes share/dark_resources/aero_drill.png | Bin 0 -> 461 bytes share/dark_resources/aero_drill_array.png | Bin 0 -> 492 bytes share/dark_resources/aero_path1.png | Bin 0 -> 516 bytes share/dark_resources/aero_path2.png | Bin 0 -> 500 bytes share/dark_resources/aero_path3.png | Bin 0 -> 482 bytes share/dark_resources/aero_path4.png | Bin 0 -> 481 bytes share/dark_resources/aero_path5.png | Bin 0 -> 553 bytes share/dark_resources/aero_semidisc.png | Bin 0 -> 469 bytes share/dark_resources/aero_slot.png | Bin 0 -> 460 bytes share/dark_resources/aero_text.png | Bin 0 -> 508 bytes share/dark_resources/align_center32.png | Bin 0 -> 168 bytes share/dark_resources/align_justify32.png | Bin 0 -> 123 bytes share/dark_resources/align_left32.png | Bin 0 -> 165 bytes share/dark_resources/align_right32.png | Bin 0 -> 168 bytes share/dark_resources/aperture16.png | Bin 0 -> 150 bytes share/dark_resources/aperture32.png | Bin 0 -> 296 bytes share/dark_resources/arc16.png | Bin 0 -> 326 bytes share/dark_resources/arc24.png | Bin 0 -> 445 bytes share/dark_resources/arc32.png | Bin 0 -> 625 bytes share/dark_resources/axis32.png | Bin 0 -> 297 bytes share/dark_resources/backup24.png | Bin 0 -> 199 bytes share/dark_resources/backup_export24.png | Bin 0 -> 177 bytes share/dark_resources/backup_import24.png | Bin 0 -> 186 bytes share/dark_resources/blocked16.png | Bin 0 -> 2188 bytes share/dark_resources/blue32.png | Bin 0 -> 459 bytes share/dark_resources/bluelight12.png | Bin 0 -> 491 bytes share/dark_resources/bold32.png | Bin 0 -> 589 bytes share/dark_resources/bookmarks16.png | Bin 0 -> 136 bytes share/dark_resources/bookmarks32.png | Bin 0 -> 226 bytes share/dark_resources/brown32.png | Bin 0 -> 470 bytes share/dark_resources/buffer16-2.png | Bin 0 -> 148 bytes share/dark_resources/buffer16.png | Bin 0 -> 466 bytes share/dark_resources/buffer20.png | Bin 0 -> 170 bytes share/dark_resources/buffer24.png | Bin 0 -> 191 bytes share/dark_resources/bug16.png | Bin 0 -> 189 bytes share/dark_resources/bug32.png | Bin 0 -> 341 bytes share/dark_resources/calculator16.png | Bin 0 -> 340 bytes share/dark_resources/calculator24.png | Bin 0 -> 499 bytes share/dark_resources/calibrate_16.png | Bin 0 -> 242 bytes share/dark_resources/calibrate_32.png | Bin 0 -> 366 bytes share/dark_resources/cancel_edit16.png | Bin 0 -> 453 bytes share/dark_resources/cancel_edit32.png | Bin 0 -> 696 bytes share/dark_resources/circle32.png | Bin 0 -> 271 bytes share/dark_resources/clear_plot16.png | Bin 0 -> 640 bytes share/dark_resources/clear_plot32.png | Bin 0 -> 1439 bytes share/dark_resources/close_edit_file16.png | Bin 0 -> 289 bytes share/dark_resources/close_edit_file32.png | Bin 0 -> 252 bytes share/dark_resources/cnc16.png | Bin 0 -> 431 bytes share/dark_resources/cnc32.png | Bin 0 -> 967 bytes share/dark_resources/code.png | Bin 0 -> 237 bytes share/dark_resources/code_editor32.png | Bin 0 -> 214 bytes share/dark_resources/convert24.png | Bin 0 -> 194 bytes share/dark_resources/copperfill16.png | Bin 0 -> 187 bytes share/dark_resources/copperfill32.png | Bin 0 -> 344 bytes share/dark_resources/copy.png | Bin 0 -> 170 bytes share/dark_resources/copy16.png | Bin 0 -> 288 bytes share/dark_resources/copy32.png | Bin 0 -> 832 bytes share/dark_resources/copy_16.png | Bin 0 -> 288 bytes share/dark_resources/copy_file16.png | Bin 0 -> 156 bytes share/dark_resources/copy_file32.png | Bin 0 -> 227 bytes share/dark_resources/copy_geo.png | Bin 0 -> 582 bytes share/dark_resources/corner32.png | Bin 0 -> 913 bytes share/dark_resources/cut16.png | Bin 0 -> 166 bytes share/dark_resources/cut16_bis.png | Bin 0 -> 175 bytes share/dark_resources/cut32.png | Bin 0 -> 268 bytes share/dark_resources/cut32_bis.png | Bin 0 -> 335 bytes share/dark_resources/cutpath16.png | Bin 0 -> 465 bytes share/dark_resources/cutpath24.png | Bin 0 -> 691 bytes share/dark_resources/cutpath32.png | Bin 0 -> 853 bytes share/dark_resources/database32.png | Bin 0 -> 296 bytes share/dark_resources/defaults.png | Bin 0 -> 211 bytes share/dark_resources/delete32.png | Bin 0 -> 943 bytes share/dark_resources/delete_file16.png | Bin 0 -> 171 bytes share/dark_resources/delete_file32.png | Bin 0 -> 281 bytes share/dark_resources/deleteshape16.png | Bin 0 -> 386 bytes share/dark_resources/deleteshape24.png | Bin 0 -> 493 bytes share/dark_resources/deleteshape32.png | Bin 0 -> 600 bytes share/dark_resources/deselect_all32.png | Bin 0 -> 267 bytes share/dark_resources/disable16.png | Bin 0 -> 180 bytes share/dark_resources/disable32.png | Bin 0 -> 320 bytes share/dark_resources/disc32.png | Bin 0 -> 234 bytes share/dark_resources/distance16.png | Bin 0 -> 169 bytes share/dark_resources/distance32.png | Bin 0 -> 242 bytes share/dark_resources/distance_min16.png | Bin 0 -> 133 bytes share/dark_resources/distance_min32.png | Bin 0 -> 200 bytes share/dark_resources/doubleside16.png | Bin 0 -> 350 bytes share/dark_resources/doubleside32.png | Bin 0 -> 614 bytes share/dark_resources/draw32.png | Bin 0 -> 279 bytes share/dark_resources/drill16.png | Bin 0 -> 175 bytes share/dark_resources/drill32.png | Bin 0 -> 251 bytes share/dark_resources/dxf16.png | Bin 0 -> 344 bytes share/dark_resources/edit16.png | Bin 0 -> 482 bytes share/dark_resources/edit32.png | Bin 0 -> 912 bytes share/dark_resources/edit_file16.png | Bin 0 -> 307 bytes share/dark_resources/edit_file32.png | Bin 0 -> 277 bytes share/dark_resources/edit_ok16.png | Bin 0 -> 486 bytes share/dark_resources/edit_ok32.png | Bin 0 -> 843 bytes share/dark_resources/edit_ok32_bis.png | Bin 0 -> 1581 bytes share/dark_resources/eraser26.png | Bin 0 -> 928 bytes share/dark_resources/explode32.png | Bin 0 -> 338 bytes share/dark_resources/export.png | Bin 0 -> 203 bytes share/dark_resources/export_png32.png | Bin 0 -> 275 bytes share/dark_resources/fiducials_32.png | Bin 0 -> 191 bytes share/dark_resources/file16.png | Bin 0 -> 479 bytes share/dark_resources/file32.png | Bin 0 -> 200 bytes share/dark_resources/film16.png | Bin 0 -> 258 bytes share/dark_resources/film32.png | Bin 0 -> 179 bytes share/dark_resources/flatcam_icon128.png | Bin 0 -> 1735 bytes share/dark_resources/flatcam_icon16.ico | Bin 0 -> 1150 bytes share/dark_resources/flatcam_icon16.png | Bin 0 -> 219 bytes share/dark_resources/flatcam_icon24.png | Bin 0 -> 314 bytes share/dark_resources/flatcam_icon256.ico | Bin 0 -> 4295 bytes share/dark_resources/flatcam_icon256.png | Bin 0 -> 4401 bytes share/dark_resources/flatcam_icon32.ico | Bin 0 -> 4286 bytes share/dark_resources/flatcam_icon32.png | Bin 0 -> 359 bytes share/dark_resources/flatcam_icon32_green.png | Bin 0 -> 994 bytes share/dark_resources/flatcam_icon48.ico | Bin 0 -> 9662 bytes share/dark_resources/flatcam_icon48.png | Bin 0 -> 614 bytes share/dark_resources/flipx.png | Bin 0 -> 514 bytes share/dark_resources/flipy.png | Bin 0 -> 522 bytes share/dark_resources/floppy16.png | Bin 0 -> 458 bytes share/dark_resources/floppy32.png | Bin 0 -> 373 bytes share/dark_resources/folder16.png | Bin 0 -> 367 bytes share/dark_resources/folder32.png | Bin 0 -> 391 bytes share/dark_resources/folder32_Excellon.png | Bin 0 -> 453 bytes share/dark_resources/folder32_bis.png | Bin 0 -> 208 bytes share/dark_resources/folder32_gerber.png | Bin 0 -> 456 bytes share/dark_resources/fscreen32.png | Bin 0 -> 10536 bytes share/dark_resources/gear32.png | Bin 0 -> 452 bytes share/dark_resources/gear48.png | Bin 0 -> 727 bytes share/dark_resources/geometry16.png | Bin 0 -> 693 bytes share/dark_resources/globe16.png | Bin 0 -> 884 bytes share/dark_resources/goemetry32.png | Bin 0 -> 1015 bytes share/dark_resources/graylight12.png | Bin 0 -> 501 bytes share/dark_resources/green32.png | Bin 0 -> 459 bytes share/dark_resources/greenlight12.png | Bin 0 -> 569 bytes share/dark_resources/grid16.png | Bin 0 -> 499 bytes share/dark_resources/grid32.png | Bin 0 -> 850 bytes share/dark_resources/grid32_menu.png | Bin 0 -> 175 bytes share/dark_resources/help.png | Bin 0 -> 422 bytes share/dark_resources/home16.png | Bin 0 -> 396 bytes share/dark_resources/image16.png | Bin 0 -> 170 bytes share/dark_resources/image32.png | Bin 0 -> 305 bytes share/dark_resources/import.png | Bin 0 -> 213 bytes share/dark_resources/info16.png | Bin 0 -> 603 bytes share/dark_resources/intersection16.png | Bin 0 -> 476 bytes share/dark_resources/intersection24.png | Bin 0 -> 639 bytes share/dark_resources/intersection32.png | Bin 0 -> 829 bytes share/dark_resources/italic32.png | Bin 0 -> 203 bytes share/dark_resources/join16.png | Bin 0 -> 541 bytes share/dark_resources/join32.png | Bin 0 -> 1275 bytes share/dark_resources/jump_to16.png | Bin 0 -> 159 bytes share/dark_resources/jump_to32.png | Bin 0 -> 296 bytes share/dark_resources/language32.png | Bin 0 -> 262 bytes share/dark_resources/letter_t_32.png | Bin 0 -> 135 bytes share/dark_resources/link16.png | Bin 0 -> 168 bytes share/dark_resources/machine16.png | Bin 0 -> 669 bytes share/dark_resources/makearea32.png | Bin 0 -> 221 bytes share/dark_resources/move16.png | Bin 0 -> 151 bytes share/dark_resources/move32.png | Bin 0 -> 906 bytes share/dark_resources/move32_bis.png | Bin 0 -> 253 bytes share/dark_resources/ncc16.png | Bin 0 -> 161 bytes share/dark_resources/new_exc32.png | Bin 0 -> 1235 bytes share/dark_resources/new_file16.png | Bin 0 -> 132 bytes share/dark_resources/new_file32.png | Bin 0 -> 183 bytes share/dark_resources/new_file_exc16.png | Bin 0 -> 642 bytes share/dark_resources/new_file_exc32.png | Bin 0 -> 842 bytes share/dark_resources/new_file_geo16.png | Bin 0 -> 605 bytes share/dark_resources/new_file_geo32.png | Bin 0 -> 640 bytes share/dark_resources/new_file_grb16.png | Bin 0 -> 679 bytes share/dark_resources/new_file_grb32.png | Bin 0 -> 777 bytes share/dark_resources/new_geo16.png | Bin 0 -> 255 bytes share/dark_resources/new_geo32.png | Bin 0 -> 352 bytes share/dark_resources/new_geo32_bis.png | Bin 0 -> 1504 bytes share/dark_resources/notebook16.png | Bin 0 -> 122 bytes share/dark_resources/notebook32.png | Bin 0 -> 160 bytes share/dark_resources/notes16.png | Bin 0 -> 148 bytes share/dark_resources/notes16_1.png | Bin 0 -> 148 bytes share/dark_resources/offset32.png | Bin 0 -> 195 bytes share/dark_resources/offsetx32.png | Bin 0 -> 195 bytes share/dark_resources/offsety32.png | Bin 0 -> 229 bytes share/dark_resources/open_excellon32.png | Bin 0 -> 167 bytes share/dark_resources/open_script32.png | Bin 0 -> 560 bytes share/dark_resources/origin.png | Bin 0 -> 511 bytes share/dark_resources/origin16.png | Bin 0 -> 182 bytes share/dark_resources/origin32.png | Bin 0 -> 260 bytes share/dark_resources/padarray32.png | Bin 0 -> 193 bytes share/dark_resources/paint16.png | Bin 0 -> 168 bytes share/dark_resources/paint20.png | Bin 0 -> 203 bytes share/dark_resources/paint20_1.png | Bin 0 -> 167 bytes share/dark_resources/panel16.png | Bin 0 -> 124 bytes share/dark_resources/panel32.png | Bin 0 -> 279 bytes share/dark_resources/panelize16.png | Bin 0 -> 137 bytes share/dark_resources/panelize32.png | Bin 0 -> 210 bytes share/dark_resources/path32.png | Bin 0 -> 282 bytes share/dark_resources/pdf32.png | Bin 0 -> 1539 bytes share/dark_resources/pdf_link16.png | Bin 0 -> 171 bytes share/dark_resources/plot32.png | Bin 0 -> 226 bytes share/dark_resources/plus16.png | Bin 0 -> 116 bytes share/dark_resources/plus32.png | Bin 0 -> 152 bytes share/dark_resources/pointer.png | Bin 0 -> 25986 bytes share/dark_resources/pointer32.png | Bin 0 -> 250 bytes share/dark_resources/poligonize32.png | Bin 0 -> 218 bytes share/dark_resources/polygon32.png | Bin 0 -> 282 bytes share/dark_resources/power16.png | Bin 0 -> 669 bytes share/dark_resources/pref.png | Bin 0 -> 237 bytes share/dark_resources/printer16.png | Bin 0 -> 559 bytes share/dark_resources/printer32.png | Bin 0 -> 325 bytes share/dark_resources/project16.png | Bin 0 -> 204 bytes share/dark_resources/project_save16.png | Bin 0 -> 496 bytes share/dark_resources/project_save32.png | Bin 0 -> 217 bytes share/dark_resources/properties32.png | Bin 0 -> 206 bytes share/dark_resources/qrcode32.png | Bin 0 -> 765 bytes share/dark_resources/recent_files.png | Bin 0 -> 265 bytes share/dark_resources/rectangle32.png | Bin 0 -> 147 bytes share/dark_resources/recycle16.png | Bin 0 -> 621 bytes share/dark_resources/red32.png | Bin 0 -> 459 bytes share/dark_resources/redlight12.png | Bin 0 -> 569 bytes share/dark_resources/replot16.png | Bin 0 -> 547 bytes share/dark_resources/replot32.png | Bin 0 -> 1102 bytes share/dark_resources/resize16.png | Bin 0 -> 161 bytes share/dark_resources/rotate.png | Bin 0 -> 426 bytes share/dark_resources/rules32.png | Bin 0 -> 170 bytes share/dark_resources/save_as.png | Bin 0 -> 246 bytes share/dark_resources/scale32.png | Bin 0 -> 232 bytes share/dark_resources/script14.png | Bin 0 -> 141 bytes share/dark_resources/script16.png | Bin 0 -> 164 bytes share/dark_resources/script_new16.png | Bin 0 -> 175 bytes share/dark_resources/script_new24.png | Bin 0 -> 223 bytes share/dark_resources/script_open16.png | Bin 0 -> 160 bytes share/dark_resources/script_open18.png | Bin 0 -> 170 bytes share/dark_resources/script_open24.png | Bin 0 -> 195 bytes share/dark_resources/select_all.png | Bin 0 -> 650 bytes share/dark_resources/semidisc32.png | Bin 0 -> 253 bytes share/dark_resources/set_color16.png | Bin 0 -> 703 bytes share/dark_resources/set_color32.png | Bin 0 -> 848 bytes share/dark_resources/shell16.png | Bin 0 -> 150 bytes share/dark_resources/shell32.png | Bin 0 -> 233 bytes share/dark_resources/shortcuts24.png | Bin 0 -> 177 bytes share/dark_resources/skewX.png | Bin 0 -> 296 bytes share/dark_resources/skewY.png | Bin 0 -> 286 bytes share/dark_resources/slot26.png | Bin 0 -> 131 bytes share/dark_resources/slot_array26.png | Bin 0 -> 143 bytes share/dark_resources/snap_16.png | Bin 0 -> 426 bytes share/dark_resources/snap_filled_16.png | Bin 0 -> 176 bytes share/dark_resources/solderpaste32.png | Bin 0 -> 315 bytes share/dark_resources/solderpastebis32.png | Bin 0 -> 303 bytes share/dark_resources/source32.png | Bin 0 -> 12171 bytes share/dark_resources/splash.png | Bin 0 -> 43861 bytes share/dark_resources/sub32.png | Bin 0 -> 243 bytes share/dark_resources/subtract16.png | Bin 0 -> 461 bytes share/dark_resources/subtract24.png | Bin 0 -> 766 bytes share/dark_resources/subtract32.png | Bin 0 -> 954 bytes share/dark_resources/svg16.png | Bin 0 -> 13012 bytes share/dark_resources/svg32.png | Bin 0 -> 296 bytes share/dark_resources/text32.png | Bin 0 -> 167 bytes share/dark_resources/toggle_units16.png | Bin 0 -> 191 bytes share/dark_resources/toggle_units32.png | Bin 0 -> 349 bytes share/dark_resources/track32.png | Bin 0 -> 246 bytes share/dark_resources/transform.png | Bin 0 -> 202 bytes share/dark_resources/trash16.png | Bin 0 -> 512 bytes share/dark_resources/trash32.png | Bin 0 -> 297 bytes share/dark_resources/tv16.png | Bin 0 -> 480 bytes share/dark_resources/underline32.png | Bin 0 -> 204 bytes share/dark_resources/union16.png | Bin 0 -> 466 bytes share/dark_resources/union32.png | Bin 0 -> 849 bytes share/dark_resources/videohelp24.png | Bin 0 -> 222 bytes share/dark_resources/view64.png | Bin 0 -> 693 bytes share/dark_resources/violet32.png | Bin 0 -> 459 bytes share/dark_resources/warning.png | Bin 0 -> 3025 bytes share/dark_resources/workspace24.png | Bin 0 -> 146 bytes share/dark_resources/yellow32.png | Bin 0 -> 459 bytes share/dark_resources/yellowlight12.png | Bin 0 -> 578 bytes share/dark_resources/youtube32.png | Bin 0 -> 858 bytes share/dark_resources/zoom_fit32.png | Bin 0 -> 441 bytes share/dark_resources/zoom_in32.png | Bin 0 -> 422 bytes share/dark_resources/zoom_out32.png | Bin 0 -> 316 bytes 302 files changed, 933 insertions(+), 505 deletions(-) create mode 100644 share/dark_resources/about32.png create mode 100644 share/dark_resources/active.gif create mode 100644 share/dark_resources/active_2.gif create mode 100644 share/dark_resources/active_2_static.png create mode 100644 share/dark_resources/active_3.gif create mode 100644 share/dark_resources/active_3_static.png create mode 100644 share/dark_resources/active_4.gif create mode 100644 share/dark_resources/active_4_static.png create mode 100644 share/dark_resources/active_static.png create mode 100644 share/dark_resources/addarray16.png create mode 100644 share/dark_resources/addarray20.png create mode 100644 share/dark_resources/addarray32.png create mode 100644 share/dark_resources/aero.png create mode 100644 share/dark_resources/aero_arc.png create mode 100644 share/dark_resources/aero_array.png create mode 100644 share/dark_resources/aero_buffer.png create mode 100644 share/dark_resources/aero_circle.png create mode 100644 share/dark_resources/aero_circle_geo.png create mode 100644 share/dark_resources/aero_disc.png create mode 100644 share/dark_resources/aero_drill.png create mode 100644 share/dark_resources/aero_drill_array.png create mode 100644 share/dark_resources/aero_path1.png create mode 100644 share/dark_resources/aero_path2.png create mode 100644 share/dark_resources/aero_path3.png create mode 100644 share/dark_resources/aero_path4.png create mode 100644 share/dark_resources/aero_path5.png create mode 100644 share/dark_resources/aero_semidisc.png create mode 100644 share/dark_resources/aero_slot.png create mode 100644 share/dark_resources/aero_text.png create mode 100644 share/dark_resources/align_center32.png create mode 100644 share/dark_resources/align_justify32.png create mode 100644 share/dark_resources/align_left32.png create mode 100644 share/dark_resources/align_right32.png create mode 100644 share/dark_resources/aperture16.png create mode 100644 share/dark_resources/aperture32.png create mode 100644 share/dark_resources/arc16.png create mode 100644 share/dark_resources/arc24.png create mode 100644 share/dark_resources/arc32.png create mode 100644 share/dark_resources/axis32.png create mode 100644 share/dark_resources/backup24.png create mode 100644 share/dark_resources/backup_export24.png create mode 100644 share/dark_resources/backup_import24.png create mode 100644 share/dark_resources/blocked16.png create mode 100644 share/dark_resources/blue32.png create mode 100644 share/dark_resources/bluelight12.png create mode 100644 share/dark_resources/bold32.png create mode 100644 share/dark_resources/bookmarks16.png create mode 100644 share/dark_resources/bookmarks32.png create mode 100644 share/dark_resources/brown32.png create mode 100644 share/dark_resources/buffer16-2.png create mode 100644 share/dark_resources/buffer16.png create mode 100644 share/dark_resources/buffer20.png create mode 100644 share/dark_resources/buffer24.png create mode 100644 share/dark_resources/bug16.png create mode 100644 share/dark_resources/bug32.png create mode 100644 share/dark_resources/calculator16.png create mode 100644 share/dark_resources/calculator24.png create mode 100644 share/dark_resources/calibrate_16.png create mode 100644 share/dark_resources/calibrate_32.png create mode 100644 share/dark_resources/cancel_edit16.png create mode 100644 share/dark_resources/cancel_edit32.png create mode 100644 share/dark_resources/circle32.png create mode 100644 share/dark_resources/clear_plot16.png create mode 100644 share/dark_resources/clear_plot32.png create mode 100644 share/dark_resources/close_edit_file16.png create mode 100644 share/dark_resources/close_edit_file32.png create mode 100644 share/dark_resources/cnc16.png create mode 100644 share/dark_resources/cnc32.png create mode 100644 share/dark_resources/code.png create mode 100644 share/dark_resources/code_editor32.png create mode 100644 share/dark_resources/convert24.png create mode 100644 share/dark_resources/copperfill16.png create mode 100644 share/dark_resources/copperfill32.png create mode 100644 share/dark_resources/copy.png create mode 100644 share/dark_resources/copy16.png create mode 100644 share/dark_resources/copy32.png create mode 100644 share/dark_resources/copy_16.png create mode 100644 share/dark_resources/copy_file16.png create mode 100644 share/dark_resources/copy_file32.png create mode 100644 share/dark_resources/copy_geo.png create mode 100644 share/dark_resources/corner32.png create mode 100644 share/dark_resources/cut16.png create mode 100644 share/dark_resources/cut16_bis.png create mode 100644 share/dark_resources/cut32.png create mode 100644 share/dark_resources/cut32_bis.png create mode 100644 share/dark_resources/cutpath16.png create mode 100644 share/dark_resources/cutpath24.png create mode 100644 share/dark_resources/cutpath32.png create mode 100644 share/dark_resources/database32.png create mode 100644 share/dark_resources/defaults.png create mode 100644 share/dark_resources/delete32.png create mode 100644 share/dark_resources/delete_file16.png create mode 100644 share/dark_resources/delete_file32.png create mode 100644 share/dark_resources/deleteshape16.png create mode 100644 share/dark_resources/deleteshape24.png create mode 100644 share/dark_resources/deleteshape32.png create mode 100644 share/dark_resources/deselect_all32.png create mode 100644 share/dark_resources/disable16.png create mode 100644 share/dark_resources/disable32.png create mode 100644 share/dark_resources/disc32.png create mode 100644 share/dark_resources/distance16.png create mode 100644 share/dark_resources/distance32.png create mode 100644 share/dark_resources/distance_min16.png create mode 100644 share/dark_resources/distance_min32.png create mode 100644 share/dark_resources/doubleside16.png create mode 100644 share/dark_resources/doubleside32.png create mode 100644 share/dark_resources/draw32.png create mode 100644 share/dark_resources/drill16.png create mode 100644 share/dark_resources/drill32.png create mode 100644 share/dark_resources/dxf16.png create mode 100644 share/dark_resources/edit16.png create mode 100644 share/dark_resources/edit32.png create mode 100644 share/dark_resources/edit_file16.png create mode 100644 share/dark_resources/edit_file32.png create mode 100644 share/dark_resources/edit_ok16.png create mode 100644 share/dark_resources/edit_ok32.png create mode 100644 share/dark_resources/edit_ok32_bis.png create mode 100644 share/dark_resources/eraser26.png create mode 100644 share/dark_resources/explode32.png create mode 100644 share/dark_resources/export.png create mode 100644 share/dark_resources/export_png32.png create mode 100644 share/dark_resources/fiducials_32.png create mode 100644 share/dark_resources/file16.png create mode 100644 share/dark_resources/file32.png create mode 100644 share/dark_resources/film16.png create mode 100644 share/dark_resources/film32.png create mode 100644 share/dark_resources/flatcam_icon128.png create mode 100644 share/dark_resources/flatcam_icon16.ico create mode 100644 share/dark_resources/flatcam_icon16.png create mode 100644 share/dark_resources/flatcam_icon24.png create mode 100644 share/dark_resources/flatcam_icon256.ico create mode 100644 share/dark_resources/flatcam_icon256.png create mode 100644 share/dark_resources/flatcam_icon32.ico create mode 100644 share/dark_resources/flatcam_icon32.png create mode 100644 share/dark_resources/flatcam_icon32_green.png create mode 100644 share/dark_resources/flatcam_icon48.ico create mode 100644 share/dark_resources/flatcam_icon48.png create mode 100644 share/dark_resources/flipx.png create mode 100644 share/dark_resources/flipy.png create mode 100644 share/dark_resources/floppy16.png create mode 100644 share/dark_resources/floppy32.png create mode 100644 share/dark_resources/folder16.png create mode 100644 share/dark_resources/folder32.png create mode 100644 share/dark_resources/folder32_Excellon.png create mode 100644 share/dark_resources/folder32_bis.png create mode 100644 share/dark_resources/folder32_gerber.png create mode 100644 share/dark_resources/fscreen32.png create mode 100644 share/dark_resources/gear32.png create mode 100644 share/dark_resources/gear48.png create mode 100644 share/dark_resources/geometry16.png create mode 100644 share/dark_resources/globe16.png create mode 100644 share/dark_resources/goemetry32.png create mode 100644 share/dark_resources/graylight12.png create mode 100644 share/dark_resources/green32.png create mode 100644 share/dark_resources/greenlight12.png create mode 100644 share/dark_resources/grid16.png create mode 100644 share/dark_resources/grid32.png create mode 100644 share/dark_resources/grid32_menu.png create mode 100644 share/dark_resources/help.png create mode 100644 share/dark_resources/home16.png create mode 100644 share/dark_resources/image16.png create mode 100644 share/dark_resources/image32.png create mode 100644 share/dark_resources/import.png create mode 100644 share/dark_resources/info16.png create mode 100644 share/dark_resources/intersection16.png create mode 100644 share/dark_resources/intersection24.png create mode 100644 share/dark_resources/intersection32.png create mode 100644 share/dark_resources/italic32.png create mode 100644 share/dark_resources/join16.png create mode 100644 share/dark_resources/join32.png create mode 100644 share/dark_resources/jump_to16.png create mode 100644 share/dark_resources/jump_to32.png create mode 100644 share/dark_resources/language32.png create mode 100644 share/dark_resources/letter_t_32.png create mode 100644 share/dark_resources/link16.png create mode 100644 share/dark_resources/machine16.png create mode 100644 share/dark_resources/makearea32.png create mode 100644 share/dark_resources/move16.png create mode 100644 share/dark_resources/move32.png create mode 100644 share/dark_resources/move32_bis.png create mode 100644 share/dark_resources/ncc16.png create mode 100644 share/dark_resources/new_exc32.png create mode 100644 share/dark_resources/new_file16.png create mode 100644 share/dark_resources/new_file32.png create mode 100644 share/dark_resources/new_file_exc16.png create mode 100644 share/dark_resources/new_file_exc32.png create mode 100644 share/dark_resources/new_file_geo16.png create mode 100644 share/dark_resources/new_file_geo32.png create mode 100644 share/dark_resources/new_file_grb16.png create mode 100644 share/dark_resources/new_file_grb32.png create mode 100644 share/dark_resources/new_geo16.png create mode 100644 share/dark_resources/new_geo32.png create mode 100644 share/dark_resources/new_geo32_bis.png create mode 100644 share/dark_resources/notebook16.png create mode 100644 share/dark_resources/notebook32.png create mode 100644 share/dark_resources/notes16.png create mode 100644 share/dark_resources/notes16_1.png create mode 100644 share/dark_resources/offset32.png create mode 100644 share/dark_resources/offsetx32.png create mode 100644 share/dark_resources/offsety32.png create mode 100644 share/dark_resources/open_excellon32.png create mode 100644 share/dark_resources/open_script32.png create mode 100644 share/dark_resources/origin.png create mode 100644 share/dark_resources/origin16.png create mode 100644 share/dark_resources/origin32.png create mode 100644 share/dark_resources/padarray32.png create mode 100644 share/dark_resources/paint16.png create mode 100644 share/dark_resources/paint20.png create mode 100644 share/dark_resources/paint20_1.png create mode 100644 share/dark_resources/panel16.png create mode 100644 share/dark_resources/panel32.png create mode 100644 share/dark_resources/panelize16.png create mode 100644 share/dark_resources/panelize32.png create mode 100644 share/dark_resources/path32.png create mode 100644 share/dark_resources/pdf32.png create mode 100644 share/dark_resources/pdf_link16.png create mode 100644 share/dark_resources/plot32.png create mode 100644 share/dark_resources/plus16.png create mode 100644 share/dark_resources/plus32.png create mode 100644 share/dark_resources/pointer.png create mode 100644 share/dark_resources/pointer32.png create mode 100644 share/dark_resources/poligonize32.png create mode 100644 share/dark_resources/polygon32.png create mode 100644 share/dark_resources/power16.png create mode 100644 share/dark_resources/pref.png create mode 100644 share/dark_resources/printer16.png create mode 100644 share/dark_resources/printer32.png create mode 100644 share/dark_resources/project16.png create mode 100644 share/dark_resources/project_save16.png create mode 100644 share/dark_resources/project_save32.png create mode 100644 share/dark_resources/properties32.png create mode 100644 share/dark_resources/qrcode32.png create mode 100644 share/dark_resources/recent_files.png create mode 100644 share/dark_resources/rectangle32.png create mode 100644 share/dark_resources/recycle16.png create mode 100644 share/dark_resources/red32.png create mode 100644 share/dark_resources/redlight12.png create mode 100644 share/dark_resources/replot16.png create mode 100644 share/dark_resources/replot32.png create mode 100644 share/dark_resources/resize16.png create mode 100644 share/dark_resources/rotate.png create mode 100644 share/dark_resources/rules32.png create mode 100644 share/dark_resources/save_as.png create mode 100644 share/dark_resources/scale32.png create mode 100644 share/dark_resources/script14.png create mode 100644 share/dark_resources/script16.png create mode 100644 share/dark_resources/script_new16.png create mode 100644 share/dark_resources/script_new24.png create mode 100644 share/dark_resources/script_open16.png create mode 100644 share/dark_resources/script_open18.png create mode 100644 share/dark_resources/script_open24.png create mode 100644 share/dark_resources/select_all.png create mode 100644 share/dark_resources/semidisc32.png create mode 100644 share/dark_resources/set_color16.png create mode 100644 share/dark_resources/set_color32.png create mode 100644 share/dark_resources/shell16.png create mode 100644 share/dark_resources/shell32.png create mode 100644 share/dark_resources/shortcuts24.png create mode 100644 share/dark_resources/skewX.png create mode 100644 share/dark_resources/skewY.png create mode 100644 share/dark_resources/slot26.png create mode 100644 share/dark_resources/slot_array26.png create mode 100644 share/dark_resources/snap_16.png create mode 100644 share/dark_resources/snap_filled_16.png create mode 100644 share/dark_resources/solderpaste32.png create mode 100644 share/dark_resources/solderpastebis32.png create mode 100644 share/dark_resources/source32.png create mode 100644 share/dark_resources/splash.png create mode 100644 share/dark_resources/sub32.png create mode 100644 share/dark_resources/subtract16.png create mode 100644 share/dark_resources/subtract24.png create mode 100644 share/dark_resources/subtract32.png create mode 100644 share/dark_resources/svg16.png create mode 100644 share/dark_resources/svg32.png create mode 100644 share/dark_resources/text32.png create mode 100644 share/dark_resources/toggle_units16.png create mode 100644 share/dark_resources/toggle_units32.png create mode 100644 share/dark_resources/track32.png create mode 100644 share/dark_resources/transform.png create mode 100644 share/dark_resources/trash16.png create mode 100644 share/dark_resources/trash32.png create mode 100644 share/dark_resources/tv16.png create mode 100644 share/dark_resources/underline32.png create mode 100644 share/dark_resources/union16.png create mode 100644 share/dark_resources/union32.png create mode 100644 share/dark_resources/videohelp24.png create mode 100644 share/dark_resources/view64.png create mode 100644 share/dark_resources/violet32.png create mode 100644 share/dark_resources/warning.png create mode 100644 share/dark_resources/workspace24.png create mode 100644 share/dark_resources/yellow32.png create mode 100644 share/dark_resources/yellowlight12.png create mode 100644 share/dark_resources/youtube32.png create mode 100644 share/dark_resources/zoom_fit32.png create mode 100644 share/dark_resources/zoom_in32.png create mode 100644 share/dark_resources/zoom_out32.png diff --git a/FlatCAMApp.py b/FlatCAMApp.py index c7584f8f..3d585833 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -612,6 +612,8 @@ class App(QtCore.QObject): "excellon_save_filters": "Excellon File (*.txt);;Excellon File (*.drd);;Excellon File (*.drl);;" "Excellon File (*.exc);;Excellon File (*.ncd);;Excellon File (*.tap);;" "Excellon File (*.xln);;All Files (*.*)", + "excellon_plot_fill": '#C40000BF', + "excellon_plot_line": '#750000BF', # Excellon Options "excellon_drillz": -1.7, @@ -672,6 +674,7 @@ class App(QtCore.QObject): "geometry_plot": True, "geometry_circle_steps": 64, "geometry_cnctooldia": "2.4", + "geometry_plot_line": "#FF0000", # Geometry Options "geometry_cutz": -2.4, @@ -728,6 +731,10 @@ class App(QtCore.QObject): "G-Code Files (*.ngc);;G-Code Files (*.out);;G-Code Files (*.ply);;" "G-Code Files (*.sbp);;G-Code Files (*.tap);;G-Code Files (*.xpi);;" "All Files (*.*)", + "cncjob_plot_line": '#4650BDFF', + "cncjob_plot_fill": '#5E6CFFFF', + "cncjob_travel_line": '#B5AB3A4C', + "cncjob_travel_fill": '#F0E24D4C', # CNC Job Options "cncjob_prepend": "", @@ -983,10 +990,10 @@ class App(QtCore.QObject): else: self.decimals = int(self.defaults['decimals_inch']) - if self.defaults["global_theme"] == 'white': + if self.defaults["global_gray_icons"] is False: self.resource_location = 'share' else: - self.resource_location = 'share' + self.resource_location = 'share/dark_resources' self.current_units = self.defaults['units'] @@ -1093,20 +1100,18 @@ class App(QtCore.QObject): "global_portable": self.ui.general_defaults_form.general_app_group.portability_cb, "global_language": self.ui.general_defaults_form.general_app_group.language_cb, + "global_systray_icon": self.ui.general_defaults_form.general_app_group.systray_cb, + "global_shell_at_startup": self.ui.general_defaults_form.general_app_group.shell_startup_cb, + "global_project_at_startup": self.ui.general_defaults_form.general_app_group.project_startup_cb, "global_version_check": self.ui.general_defaults_form.general_app_group.version_check_cb, "global_send_stats": self.ui.general_defaults_form.general_app_group.send_stats_cb, "global_worker_number": self.ui.general_defaults_form.general_app_group.worker_number_sb, "global_tolerance": self.ui.general_defaults_form.general_app_group.tol_entry, - "global_open_style": self.ui.general_defaults_form.general_app_group.open_style_cb, - "global_compression_level": self.ui.general_defaults_form.general_app_group.compress_spinner, "global_save_compressed": self.ui.general_defaults_form.general_app_group.save_type_cb, - "global_bookmarks_limit": self.ui.general_defaults_form.general_app_group.bm_limit_spinner, - "global_machinist_setting": self.ui.general_defaults_form.general_app_group.machinist_cb, - "global_tpdf_tmargin": self.ui.general_defaults_form.general_app_group.tmargin_entry, "global_tpdf_bmargin": self.ui.general_defaults_form.general_app_group.bmargin_entry, "global_tpdf_lmargin": self.ui.general_defaults_form.general_app_group.lmargin_entry, @@ -1131,27 +1136,27 @@ class App(QtCore.QObject): "global_project_autohide": self.ui.general_defaults_form.general_gui_group.project_autohide_cb, # General GUI Settings - "global_gridx": self.ui.general_defaults_form.general_gui_set_group.gridx_entry, - "global_gridy": self.ui.general_defaults_form.general_gui_set_group.gridy_entry, - "global_snap_max": self.ui.general_defaults_form.general_gui_set_group.snap_max_dist_entry, - "global_workspace": self.ui.general_defaults_form.general_gui_set_group.workspace_cb, - "global_workspaceT": self.ui.general_defaults_form.general_gui_set_group.wk_cb, - "global_workspace_orientation": self.ui.general_defaults_form.general_gui_set_group.wk_orientation_radio, + "global_gridx": self.ui.general_defaults_form.general_app_set_group.gridx_entry, + "global_gridy": self.ui.general_defaults_form.general_app_set_group.gridy_entry, + "global_snap_max": self.ui.general_defaults_form.general_app_set_group.snap_max_dist_entry, + "global_workspace": self.ui.general_defaults_form.general_app_set_group.workspace_cb, + "global_workspaceT": self.ui.general_defaults_form.general_app_set_group.wk_cb, + "global_workspace_orientation": self.ui.general_defaults_form.general_app_set_group.wk_orientation_radio, - "global_systray_icon": self.ui.general_defaults_form.general_gui_set_group.systray_cb, - "global_shell_at_startup": self.ui.general_defaults_form.general_gui_set_group.shell_startup_cb, - "global_project_at_startup": self.ui.general_defaults_form.general_gui_set_group.project_startup_cb, - "global_cursor_type": self.ui.general_defaults_form.general_gui_set_group.cursor_radio, - "global_cursor_size": self.ui.general_defaults_form.general_gui_set_group.cursor_size_entry, - "global_cursor_width": self.ui.general_defaults_form.general_gui_set_group.cursor_width_entry, - "global_cursor_color_enabled": self.ui.general_defaults_form.general_gui_set_group.mouse_cursor_color_cb, - "global_cursor_color": self.ui.general_defaults_form.general_gui_set_group.mouse_cursor_entry, - "global_pan_button": self.ui.general_defaults_form.general_gui_set_group.pan_button_radio, - "global_mselect_key": self.ui.general_defaults_form.general_gui_set_group.mselect_radio, - "global_delete_confirmation": self.ui.general_defaults_form.general_gui_set_group.delete_conf_cb, + "global_cursor_type": self.ui.general_defaults_form.general_app_set_group.cursor_radio, + "global_cursor_size": self.ui.general_defaults_form.general_app_set_group.cursor_size_entry, + "global_cursor_width": self.ui.general_defaults_form.general_app_set_group.cursor_width_entry, + "global_cursor_color_enabled": self.ui.general_defaults_form.general_app_set_group.mouse_cursor_color_cb, + "global_cursor_color": self.ui.general_defaults_form.general_app_set_group.mouse_cursor_entry, + "global_pan_button": self.ui.general_defaults_form.general_app_set_group.pan_button_radio, + "global_mselect_key": self.ui.general_defaults_form.general_app_set_group.mselect_radio, + "global_delete_confirmation": self.ui.general_defaults_form.general_app_set_group.delete_conf_cb, + "global_open_style": self.ui.general_defaults_form.general_app_set_group.open_style_cb, + "global_toggle_tooltips": self.ui.general_defaults_form.general_app_set_group.toggle_tooltips_cb, + "global_machinist_setting": self.ui.general_defaults_form.general_app_set_group.machinist_cb, - "global_toggle_tooltips": self.ui.general_defaults_form.general_gui_set_group.toggle_tooltips_cb, - "global_activity_icon": self.ui.general_defaults_form.general_gui_set_group.activity_combo, + "global_bookmarks_limit": self.ui.general_defaults_form.general_app_set_group.bm_limit_spinner, + "global_activity_icon": self.ui.general_defaults_form.general_app_set_group.activity_combo, # Gerber General "gerber_plot": self.ui.gerber_defaults_form.gerber_gen_group.plot_cb, @@ -1232,6 +1237,8 @@ class App(QtCore.QObject): "excellon_update": self.ui.excellon_defaults_form.excellon_gen_group.update_excellon_cb, "excellon_optimization_type": self.ui.excellon_defaults_form.excellon_gen_group.excellon_optimization_radio, "excellon_search_time": self.ui.excellon_defaults_form.excellon_gen_group.optimization_time_entry, + "excellon_plot_fill": self.ui.excellon_defaults_form.excellon_gen_group.fill_color_entry, + "excellon_plot_line": self.ui.excellon_defaults_form.excellon_gen_group.line_color_entry, # Excellon Options "excellon_drillz": self.ui.excellon_defaults_form.excellon_opt_group.cutz_entry, @@ -1301,6 +1308,7 @@ class App(QtCore.QObject): "geometry_plot": self.ui.geometry_defaults_form.geometry_gen_group.plot_cb, "geometry_circle_steps": self.ui.geometry_defaults_form.geometry_gen_group.circle_steps_entry, "geometry_cnctooldia": self.ui.geometry_defaults_form.geometry_gen_group.cnctooldia_entry, + "geometry_plot_line": self.ui.geometry_defaults_form.geometry_gen_group.line_color_entry, # Geometry Options "geometry_cutz": self.ui.geometry_defaults_form.geometry_opt_group.cutz_entry, @@ -1345,6 +1353,10 @@ class App(QtCore.QObject): "cncjob_fr_decimals": self.ui.cncjob_defaults_form.cncjob_gen_group.fr_dec_entry, "cncjob_steps_per_circle": self.ui.cncjob_defaults_form.cncjob_gen_group.steps_per_circle_entry, "cncjob_line_ending": self.ui.cncjob_defaults_form.cncjob_gen_group.line_ending_cb, + "cncjob_plot_line": self.ui.cncjob_defaults_form.cncjob_gen_group.line_color_entry, + "cncjob_plot_fill": self.ui.cncjob_defaults_form.cncjob_gen_group.fill_color_entry, + "cncjob_travel_line": self.ui.cncjob_defaults_form.cncjob_gen_group.tline_color_entry, + "cncjob_travel_fill": self.ui.cncjob_defaults_form.cncjob_gen_group.tfill_color_entry, # CNC Job Options "cncjob_prepend": self.ui.cncjob_defaults_form.cncjob_opt_group.prepend_text, @@ -1583,8 +1595,8 @@ class App(QtCore.QObject): self.on_layout(lay=initial_lay) # Set the combobox in Preferences to the current layout - idx = self.ui.general_defaults_form.general_gui_set_group.layout_combo.findText(initial_lay) - self.ui.general_defaults_form.general_gui_set_group.layout_combo.setCurrentIndex(idx) + idx = self.ui.general_defaults_form.general_gui_group.layout_combo.findText(initial_lay) + self.ui.general_defaults_form.general_gui_group.layout_combo.setCurrentIndex(idx) # after the first run, this object should be False self.defaults["first_run"] = False @@ -2003,90 +2015,25 @@ class App(QtCore.QObject): # ######################### GUI PREFERENCES SIGNALS ########################### # ############################################################################# - self.ui.general_defaults_form.general_app_group.ge_radio.activated_custom.connect(self.on_app_restart) - self.ui.general_defaults_form.general_app_group.language_apply_btn.clicked.connect( - lambda: fcTranslate.on_language_apply_click(self, restart=True) - ) self.ui.general_defaults_form.general_app_group.units_radio.activated_custom.connect( lambda: self.on_toggle_units(no_pref=False)) - # ############################################################################# - # ############################# GUI COLORS SIGNALS ############################ - # ############################################################################# - - # Setting selection (left - right) colors signals - self.ui.general_defaults_form.general_gui_group.sf_color_entry.editingFinished.connect( - self.on_sf_color_entry) - self.ui.general_defaults_form.general_gui_group.sf_color_button.clicked.connect( - self.on_sf_color_button) - self.ui.general_defaults_form.general_gui_group.sf_color_alpha_spinner.valueChanged.connect( - self.on_sf_color_spinner) - self.ui.general_defaults_form.general_gui_group.sf_color_alpha_slider.valueChanged.connect( - self.on_sf_color_slider) - self.ui.general_defaults_form.general_gui_group.sl_color_entry.editingFinished.connect( - self.on_sl_color_entry) - self.ui.general_defaults_form.general_gui_group.sl_color_button.clicked.connect( - self.on_sl_color_button) - - # Setting selection (right - left) colors signals - self.ui.general_defaults_form.general_gui_group.alt_sf_color_entry.editingFinished.connect( - self.on_alt_sf_color_entry) - self.ui.general_defaults_form.general_gui_group.alt_sf_color_button.clicked.connect( - self.on_alt_sf_color_button) - self.ui.general_defaults_form.general_gui_group.alt_sf_color_alpha_spinner.valueChanged.connect( - self.on_alt_sf_color_spinner) - self.ui.general_defaults_form.general_gui_group.alt_sf_color_alpha_slider.valueChanged.connect( - self.on_alt_sf_color_slider) - self.ui.general_defaults_form.general_gui_group.alt_sl_color_entry.editingFinished.connect( - self.on_alt_sl_color_entry) - self.ui.general_defaults_form.general_gui_group.alt_sl_color_button.clicked.connect( - self.on_alt_sl_color_button) - - # Setting Editor Draw colors signals - self.ui.general_defaults_form.general_gui_group.draw_color_entry.editingFinished.connect( - self.on_draw_color_entry) - self.ui.general_defaults_form.general_gui_group.draw_color_button.clicked.connect( - self.on_draw_color_button) - - self.ui.general_defaults_form.general_gui_group.sel_draw_color_entry.editingFinished.connect( - self.on_sel_draw_color_entry) - self.ui.general_defaults_form.general_gui_group.sel_draw_color_button.clicked.connect( - self.on_sel_draw_color_button) - - self.ui.general_defaults_form.general_gui_group.proj_color_entry.editingFinished.connect( - self.on_proj_color_entry) - self.ui.general_defaults_form.general_gui_group.proj_color_button.clicked.connect( - self.on_proj_color_button) - - self.ui.general_defaults_form.general_gui_group.proj_color_dis_entry.editingFinished.connect( - self.on_proj_color_dis_entry) - self.ui.general_defaults_form.general_gui_group.proj_color_dis_button.clicked.connect( - self.on_proj_color_dis_button) - # ############################# Workspace Setting Signals ##################### - self.ui.general_defaults_form.general_gui_set_group.wk_cb.currentIndexChanged.connect( + self.ui.general_defaults_form.general_app_set_group.wk_cb.currentIndexChanged.connect( self.on_workspace_modified) - self.ui.general_defaults_form.general_gui_set_group.wk_orientation_radio.activated_custom.connect( + self.ui.general_defaults_form.general_app_set_group.wk_orientation_radio.activated_custom.connect( self.on_workspace_modified ) - self.ui.general_defaults_form.general_gui_set_group.workspace_cb.stateChanged.connect(self.on_workspace) + self.ui.general_defaults_form.general_app_set_group.workspace_cb.stateChanged.connect(self.on_workspace) self.ui.general_defaults_form.general_gui_group.layout_combo.activated.connect(self.on_layout) # ############################################################################# # ############################# GUI SETTINGS SIGNALS ########################## # ############################################################################# - - self.ui.general_defaults_form.general_gui_set_group.cursor_radio.activated_custom.connect(self.on_cursor_type) - - # ########## CNC Job related signals ############# - self.ui.cncjob_defaults_form.cncjob_adv_opt_group.tc_variable_combo.currentIndexChanged[str].connect( - self.on_cnc_custom_parameters) - self.ui.cncjob_defaults_form.cncjob_adv_opt_group.annotation_fontcolor_entry.editingFinished.connect( - self.on_annotation_fontcolor_entry) - self.ui.cncjob_defaults_form.cncjob_adv_opt_group.annotation_fontcolor_button.clicked.connect( - self.on_annotation_fontcolor_button) + self.ui.general_defaults_form.general_app_group.ge_radio.activated_custom.connect(self.on_app_restart) + self.ui.general_defaults_form.general_app_set_group.cursor_radio.activated_custom.connect(self.on_cursor_type) # ########## Tools related signals ############# # Film Tool @@ -2114,14 +2061,12 @@ class App(QtCore.QObject): self.object_status_changed.connect(self.on_collection_updated) - # Monitor the checkbox from the Application Defaults Tab and show the TCL shell or not depending on it's value - self.ui.general_defaults_form.general_gui_set_group.shell_startup_cb.clicked.connect(self.on_toggle_shell) - # Make sure that when the Excellon loading parameters are changed, the change is reflected in the # Export Excellon parameters. self.ui.excellon_defaults_form.excellon_gen_group.update_excellon_cb.stateChanged.connect( self.on_update_exc_export ) + # call it once to make sure it is updated at startup self.on_update_exc_export(state=self.defaults["excellon_update"]) @@ -2184,9 +2129,6 @@ class App(QtCore.QObject): self.ui.util_defaults_form.kw_group.del_btn.clicked.connect( lambda: self.del_extension(ext_type='keyword')) - # splash screen button signal - self.ui.general_defaults_form.general_gui_set_group.splash_cb.stateChanged.connect(self.on_splash_changed) - # connect the abort_all_tasks related slots to the related signals self.proc_container.idle_flag.connect(self.app_is_idle) @@ -5175,20 +5117,20 @@ class App(QtCore.QObject): ) stgs.setValue( 'notebook_font_size', - self.ui.general_defaults_form.general_gui_set_group.notebook_font_size_spinner.get_value() + self.ui.general_defaults_form.general_app_set_group.notebook_font_size_spinner.get_value() ) stgs.setValue( 'axis_font_size', - self.ui.general_defaults_form.general_gui_set_group.axis_font_size_spinner.get_value() + self.ui.general_defaults_form.general_app_set_group.axis_font_size_spinner.get_value() ) stgs.setValue( 'textbox_font_size', - self.ui.general_defaults_form.general_gui_set_group.textbox_font_size_spinner.get_value() + self.ui.general_defaults_form.general_app_set_group.textbox_font_size_spinner.get_value() ) stgs.setValue('toolbar_lock', self.ui.lock_action.isChecked()) stgs.setValue( 'machinist', - 1 if self.ui.general_defaults_form.general_app_group.machinist_cb.get_value() else 0 + 1 if self.ui.general_defaults_form.general_app_set_group.machinist_cb.get_value() else 0 ) # This will write the setting to the platform specific storage. @@ -6283,7 +6225,7 @@ class App(QtCore.QObject): # self.options2form() def init_color_pickers_in_preferences_gui(self): - # Init Plot Colors + # Init Gerber Plot Colors self.ui.gerber_defaults_form.gerber_gen_group.pf_color_entry.set_value(self.defaults['gerber_plot_fill']) self.ui.gerber_defaults_form.gerber_gen_group.pf_color_button.setStyleSheet( "background-color:%s;" @@ -6298,6 +6240,60 @@ class App(QtCore.QObject): "background-color:%s;" "border-color: dimgray" % str(self.defaults['gerber_plot_line'])[:7]) + # Init Excellon Plot Colors + self.ui.excellon_defaults_form.excellon_gen_group.fill_color_entry.set_value( + self.defaults['excellon_plot_fill']) + self.ui.excellon_defaults_form.excellon_gen_group.fill_color_button.setStyleSheet( + "background-color:%s;" + "border-color: dimgray" % str(self.defaults['excellon_plot_fill'])[:7]) + self.ui.excellon_defaults_form.excellon_gen_group.color_alpha_spinner.set_value( + int(self.defaults['excellon_plot_fill'][7:9], 16)) + self.ui.excellon_defaults_form.excellon_gen_group.color_alpha_slider.setValue( + int(self.defaults['excellon_plot_fill'][7:9], 16)) + + self.ui.excellon_defaults_form.excellon_gen_group.line_color_entry.set_value( + self.defaults['excellon_plot_line']) + self.ui.excellon_defaults_form.excellon_gen_group.line_color_button.setStyleSheet( + "background-color:%s;" + "border-color: dimgray" % str(self.defaults['excellon_plot_line'])[:7]) + + # Init Geometry Plot Colors + self.ui.geometry_defaults_form.geometry_gen_group.line_color_entry.set_value( + self.defaults['geometry_plot_line']) + self.ui.geometry_defaults_form.geometry_gen_group.line_color_button.setStyleSheet( + "background-color:%s;" + "border-color: dimgray" % str(self.defaults['geometry_plot_line'])[:7]) + + # Init CNCJob Travel Line Colors + self.ui.cncjob_defaults_form.cncjob_gen_group.tfill_color_entry.set_value( + self.defaults['cncjob_travel_fill']) + self.ui.cncjob_defaults_form.cncjob_gen_group.tfill_color_button.setStyleSheet( + "background-color:%s;" + "border-color: dimgray" % str(self.defaults['cncjob_travel_fill'])[:7]) + self.ui.cncjob_defaults_form.cncjob_gen_group.tcolor_alpha_spinner.set_value( + int(self.defaults['cncjob_travel_fill'][7:9], 16)) + self.ui.cncjob_defaults_form.cncjob_gen_group.tcolor_alpha_slider.setValue( + int(self.defaults['cncjob_travel_fill'][7:9], 16)) + + self.ui.cncjob_defaults_form.cncjob_gen_group.tline_color_entry.set_value( + self.defaults['cncjob_travel_line']) + self.ui.cncjob_defaults_form.cncjob_gen_group.tline_color_button.setStyleSheet( + "background-color:%s;" + "border-color: dimgray" % str(self.defaults['cncjob_travel_line'])[:7]) + + # Init CNCJob Plot Colors + self.ui.cncjob_defaults_form.cncjob_gen_group.fill_color_entry.set_value( + self.defaults['cncjob_plot_fill']) + self.ui.cncjob_defaults_form.cncjob_gen_group.fill_color_button.setStyleSheet( + "background-color:%s;" + "border-color: dimgray" % str(self.defaults['cncjob_plot_fill'])[:7]) + + self.ui.cncjob_defaults_form.cncjob_gen_group.line_color_entry.set_value( + self.defaults['cncjob_plot_line']) + self.ui.cncjob_defaults_form.cncjob_gen_group.line_color_button.setStyleSheet( + "background-color:%s;" + "border-color: dimgray" % str(self.defaults['cncjob_plot_line'])[:7]) + # Init Left-Right Selection colors self.ui.general_defaults_form.general_gui_group.sf_color_entry.set_value(self.defaults['global_sel_fill']) self.ui.general_defaults_form.general_gui_group.sf_color_button.setStyleSheet( @@ -6358,9 +6354,9 @@ class App(QtCore.QObject): "border-color: dimgray" % str(self.defaults['global_proj_item_dis_color'])[:7]) # Init Project Disabled Items color - self.ui.general_defaults_form.general_gui_set_group.mouse_cursor_entry.set_value( + self.ui.general_defaults_form.general_app_set_group.mouse_cursor_entry.set_value( self.defaults['global_cursor_color']) - self.ui.general_defaults_form.general_gui_set_group.mouse_cursor_button.setStyleSheet( + self.ui.general_defaults_form.general_app_set_group.mouse_cursor_button.setStyleSheet( "background-color:%s;" "border-color: dimgray" % str(self.defaults['global_cursor_color'])[:7]) @@ -6529,238 +6525,6 @@ class App(QtCore.QObject): ) self.on_excellon_format_changed() - # Setting selection colors (left - right) handlers - def on_sf_color_entry(self): - self.defaults['global_sel_fill'] = \ - self.ui.general_defaults_form.general_gui_group.sf_color_entry.get_value()[:7] + \ - self.defaults['global_sel_fill'][7:9] - self.ui.general_defaults_form.general_gui_group.sf_color_button.setStyleSheet( - "background-color:%s" % str(self.defaults['global_sel_fill'])[:7]) - - def on_sf_color_button(self): - current_color = QtGui.QColor(self.defaults['global_sel_fill'][:7]) - - c_dialog = QtWidgets.QColorDialog() - plot_fill_color = c_dialog.getColor(initial=current_color) - - if plot_fill_color.isValid() is False: - return - - self.ui.general_defaults_form.general_gui_group.sf_color_button.setStyleSheet( - "background-color:%s" % str(plot_fill_color.name())) - - new_val = str(plot_fill_color.name()) + str(self.defaults['global_sel_fill'][7:9]) - self.ui.general_defaults_form.general_gui_group.sf_color_entry.set_value(new_val) - self.defaults['global_sel_fill'] = new_val - - def on_sf_color_spinner(self): - spinner_value = self.ui.general_defaults_form.general_gui_group.sf_color_alpha_spinner.value() - self.ui.general_defaults_form.general_gui_group.sf_color_alpha_slider.setValue(spinner_value) - self.defaults['global_sel_fill'] = \ - self.defaults['global_sel_fill'][:7] + \ - (hex(spinner_value)[2:] if int(hex(spinner_value)[2:], 16) > 0 else '00') - self.defaults['global_sel_line'] = \ - self.defaults['global_sel_line'][:7] + \ - (hex(spinner_value)[2:] if int(hex(spinner_value)[2:], 16) > 0 else '00') - - def on_sf_color_slider(self): - slider_value = self.ui.general_defaults_form.general_gui_group.sf_color_alpha_slider.value() - self.ui.general_defaults_form.general_gui_group.sf_color_alpha_spinner.setValue(slider_value) - - def on_sl_color_entry(self): - self.defaults['global_sel_line'] = \ - self.ui.general_defaults_form.general_gui_group.sl_color_entry.get_value()[:7] + \ - self.defaults['global_sel_line'][7:9] - self.ui.general_defaults_form.general_gui_group.sl_color_button.setStyleSheet( - "background-color:%s" % str(self.defaults['global_sel_line'])[:7]) - - def on_sl_color_button(self): - current_color = QtGui.QColor(self.defaults['global_sel_line'][:7]) - - c_dialog = QtWidgets.QColorDialog() - plot_line_color = c_dialog.getColor(initial=current_color) - - if plot_line_color.isValid() is False: - return - - self.ui.general_defaults_form.general_gui_group.sl_color_button.setStyleSheet( - "background-color:%s" % str(plot_line_color.name())) - - new_val_line = str(plot_line_color.name()) + str(self.defaults['global_sel_line'][7:9]) - self.ui.general_defaults_form.general_gui_group.sl_color_entry.set_value(new_val_line) - self.defaults['global_sel_line'] = new_val_line - - # Setting selection colors (right - left) handlers - def on_alt_sf_color_entry(self): - self.defaults['global_alt_sel_fill'] = self.ui.general_defaults_form.general_gui_group \ - .alt_sf_color_entry.get_value()[:7] + self.defaults['global_alt_sel_fill'][7:9] - self.ui.general_defaults_form.general_gui_group.alt_sf_color_button.setStyleSheet( - "background-color:%s" % str(self.defaults['global_alt_sel_fill'])[:7]) - - def on_alt_sf_color_button(self): - current_color = QtGui.QColor(self.defaults['global_alt_sel_fill'][:7]) - - c_dialog = QtWidgets.QColorDialog() - plot_fill_color = c_dialog.getColor(initial=current_color) - - if plot_fill_color.isValid() is False: - return - - self.ui.general_defaults_form.general_gui_group.alt_sf_color_button.setStyleSheet( - "background-color:%s" % str(plot_fill_color.name())) - - new_val = str(plot_fill_color.name()) + str(self.defaults['global_alt_sel_fill'][7:9]) - self.ui.general_defaults_form.general_gui_group.alt_sf_color_entry.set_value(new_val) - self.defaults['global_alt_sel_fill'] = new_val - - def on_alt_sf_color_spinner(self): - spinner_value = self.ui.general_defaults_form.general_gui_group.alt_sf_color_alpha_spinner.value() - self.ui.general_defaults_form.general_gui_group.alt_sf_color_alpha_slider.setValue(spinner_value) - self.defaults['global_alt_sel_fill'] = \ - self.defaults['global_alt_sel_fill'][:7] + \ - (hex(spinner_value)[2:] if int(hex(spinner_value)[2:], 16) > 0 else '00') - self.defaults['global_alt_sel_line'] = \ - self.defaults['global_alt_sel_line'][:7] + \ - (hex(spinner_value)[2:] if int(hex(spinner_value)[2:], 16) > 0 else '00') - - def on_alt_sf_color_slider(self): - slider_value = self.ui.general_defaults_form.general_gui_group.alt_sf_color_alpha_slider.value() - self.ui.general_defaults_form.general_gui_group.alt_sf_color_alpha_spinner.setValue(slider_value) - - def on_alt_sl_color_entry(self): - self.defaults['global_alt_sel_line'] = \ - self.ui.general_defaults_form.general_gui_group.alt_sl_color_entry.get_value()[:7] + \ - self.defaults['global_alt_sel_line'][7:9] - self.ui.general_defaults_form.general_gui_group.alt_sl_color_button.setStyleSheet( - "background-color:%s" % str(self.defaults['global_alt_sel_line'])[:7]) - - def on_alt_sl_color_button(self): - current_color = QtGui.QColor(self.defaults['global_alt_sel_line'][:7]) - - c_dialog = QtWidgets.QColorDialog() - plot_line_color = c_dialog.getColor(initial=current_color) - - if plot_line_color.isValid() is False: - return - - self.ui.general_defaults_form.general_gui_group.alt_sl_color_button.setStyleSheet( - "background-color:%s" % str(plot_line_color.name())) - - new_val_line = str(plot_line_color.name()) + str(self.defaults['global_alt_sel_line'][7:9]) - self.ui.general_defaults_form.general_gui_group.alt_sl_color_entry.set_value(new_val_line) - self.defaults['global_alt_sel_line'] = new_val_line - - # Setting Editor colors - def on_draw_color_entry(self): - self.defaults['global_draw_color'] = self.ui.general_defaults_form.general_gui_group \ - .draw_color_entry.get_value() - self.ui.general_defaults_form.general_gui_group.draw_color_button.setStyleSheet( - "background-color:%s" % str(self.defaults['global_draw_color'])) - - def on_draw_color_button(self): - current_color = QtGui.QColor(self.defaults['global_draw_color']) - - c_dialog = QtWidgets.QColorDialog() - draw_color = c_dialog.getColor(initial=current_color) - - if draw_color.isValid() is False: - return - - self.ui.general_defaults_form.general_gui_group.draw_color_button.setStyleSheet( - "background-color:%s" % str(draw_color.name())) - - new_val = str(draw_color.name()) - self.ui.general_defaults_form.general_gui_group.draw_color_entry.set_value(new_val) - self.defaults['global_draw_color'] = new_val - - def on_sel_draw_color_entry(self): - self.defaults['global_sel_draw_color'] = self.ui.general_defaults_form.general_gui_group \ - .sel_draw_color_entry.get_value() - self.ui.general_defaults_form.general_gui_group.sel_draw_color_button.setStyleSheet( - "background-color:%s" % str(self.defaults['global_sel_draw_color'])) - - def on_sel_draw_color_button(self): - current_color = QtGui.QColor(self.defaults['global_sel_draw_color']) - - c_dialog = QtWidgets.QColorDialog() - sel_draw_color = c_dialog.getColor(initial=current_color) - - if sel_draw_color.isValid() is False: - return - - self.ui.general_defaults_form.general_gui_group.sel_draw_color_button.setStyleSheet( - "background-color:%s" % str(sel_draw_color.name())) - - new_val_sel = str(sel_draw_color.name()) - self.ui.general_defaults_form.general_gui_group.sel_draw_color_entry.set_value(new_val_sel) - self.defaults['global_sel_draw_color'] = new_val_sel - - def on_proj_color_entry(self): - self.defaults['global_proj_item_color'] = self.ui.general_defaults_form.general_gui_group \ - .proj_color_entry.get_value() - self.ui.general_defaults_form.general_gui_group.proj_color_button.setStyleSheet( - "background-color:%s" % str(self.defaults['global_proj_item_color'])) - - def on_proj_color_button(self): - current_color = QtGui.QColor(self.defaults['global_proj_item_color']) - - c_dialog = QtWidgets.QColorDialog() - proj_color = c_dialog.getColor(initial=current_color) - - if proj_color.isValid() is False: - return - - self.ui.general_defaults_form.general_gui_group.proj_color_button.setStyleSheet( - "background-color:%s" % str(proj_color.name())) - - new_val_sel = str(proj_color.name()) - self.ui.general_defaults_form.general_gui_group.proj_color_entry.set_value(new_val_sel) - self.defaults['global_proj_item_color'] = new_val_sel - - def on_proj_color_dis_entry(self): - self.defaults['global_proj_item_dis_color'] = self.ui.general_defaults_form.general_gui_group \ - .proj_color_dis_entry.get_value() - self.ui.general_defaults_form.general_gui_group.proj_color_dis_button.setStyleSheet( - "background-color:%s" % str(self.defaults['global_proj_item_dis_color'])) - - def on_proj_color_dis_button(self): - current_color = QtGui.QColor(self.defaults['global_proj_item_dis_color']) - - c_dialog = QtWidgets.QColorDialog() - proj_color = c_dialog.getColor(initial=current_color) - - if proj_color.isValid() is False: - return - - self.ui.general_defaults_form.general_gui_group.proj_color_dis_button.setStyleSheet( - "background-color:%s" % str(proj_color.name())) - - new_val_sel = str(proj_color.name()) - self.ui.general_defaults_form.general_gui_set_group.proj_color_dis_entry.set_value(new_val_sel) - self.defaults['global_proj_item_dis_color'] = new_val_sel - - def on_annotation_fontcolor_entry(self): - self.defaults['cncjob_annotation_fontcolor'] = \ - self.ui.cncjob_defaults_form.cncjob_adv_opt_group.annotation_fontcolor_entry.get_value() - self.ui.cncjob_defaults_form.cncjob_adv_opt_group.annotation_fontcolor_button.setStyleSheet( - "background-color:%s" % str(self.defaults['cncjob_annotation_fontcolor'])) - - def on_annotation_fontcolor_button(self): - current_color = QtGui.QColor(self.defaults['cncjob_annotation_fontcolor']) - - c_dialog = QtWidgets.QColorDialog() - annotation_color = c_dialog.getColor(initial=current_color) - - if annotation_color.isValid() is False: - return - - self.ui.cncjob_defaults_form.cncjob_adv_opt_group.annotation_fontcolor_button.setStyleSheet( - "background-color:%s" % str(annotation_color.name())) - - new_val_sel = str(annotation_color.name()) - self.ui.cncjob_defaults_form.cncjob_adv_opt_group.annotation_fontcolor_entry.set_value(new_val_sel) - self.defaults['cncjob_annotation_fontcolor'] = new_val_sel - def on_film_color_entry(self): self.defaults['tools_film_color'] = \ self.ui.tools_defaults_form.tools_film_group.film_color_entry.get_value() @@ -6850,13 +6614,6 @@ class App(QtCore.QObject): self.ui.tools2_defaults_form.tools2_qrcode_group.back_color_entry.set_value(new_val_sel) self.defaults['tools_qrcode_back_color'] = new_val_sel - def on_splash_changed(self, state): - settings = QSettings("Open Source", "FlatCAM") - settings.setValue('splash_screen', 1) if state else settings.setValue('splash_screen', 0) - - # This will write the setting to the platform specific storage. - del settings - def on_tab_rmb_click(self, checked): self.ui.notebook.set_detachable(val=checked) self.defaults["global_tabs_detachable"] = checked @@ -7060,12 +6817,12 @@ class App(QtCore.QObject): self.app_cursor.enabled = False if val == 'small': - self.ui.general_defaults_form.general_gui_set_group.cursor_size_entry.setDisabled(False) - self.ui.general_defaults_form.general_gui_set_group.cursor_size_lbl.setDisabled(False) + self.ui.general_defaults_form.general_app_set_group.cursor_size_entry.setDisabled(False) + self.ui.general_defaults_form.general_app_set_group.cursor_size_lbl.setDisabled(False) self.app_cursor = self.plotcanvas.new_cursor() else: - self.ui.general_defaults_form.general_gui_set_group.cursor_size_entry.setDisabled(True) - self.ui.general_defaults_form.general_gui_set_group.cursor_size_lbl.setDisabled(True) + self.ui.general_defaults_form.general_app_set_group.cursor_size_entry.setDisabled(True) + self.ui.general_defaults_form.general_app_set_group.cursor_size_lbl.setDisabled(True) self.app_cursor = self.plotcanvas.new_cursor(big=True) if self.ui.grid_snap_btn.isChecked(): @@ -7073,12 +6830,6 @@ class App(QtCore.QObject): else: self.app_cursor.enabled = False - def on_cnc_custom_parameters(self, signal_text): - if signal_text == 'Parameters': - return - else: - self.ui.cncjob_defaults_form.cncjob_adv_opt_group.toolchange_text.insertPlainText('%%%s%%' % signal_text) - def on_save_button(self, save_to_file=True): log.debug("App.on_save_button() --> Applying preferences to file.") @@ -7106,20 +6857,20 @@ class App(QtCore.QObject): settgs = QSettings("Open Source", "FlatCAM") # save the notebook font size - fsize = self.ui.general_defaults_form.general_gui_set_group.notebook_font_size_spinner.get_value() + fsize = self.ui.general_defaults_form.general_app_set_group.notebook_font_size_spinner.get_value() settgs.setValue('notebook_font_size', fsize) # save the axis font size - g_fsize = self.ui.general_defaults_form.general_gui_set_group.axis_font_size_spinner.get_value() + g_fsize = self.ui.general_defaults_form.general_app_set_group.axis_font_size_spinner.get_value() settgs.setValue('axis_font_size', g_fsize) # save the textbox font size - tb_fsize = self.ui.general_defaults_form.general_gui_set_group.textbox_font_size_spinner.get_value() + tb_fsize = self.ui.general_defaults_form.general_app_set_group.textbox_font_size_spinner.get_value() settgs.setValue('textbox_font_size', tb_fsize) settgs.setValue( 'machinist', - 1 if self.ui.general_defaults_form.general_app_group.machinist_cb.get_value() else 0 + 1 if self.ui.general_defaults_form.general_app_set_group.machinist_cb.get_value() else 0 ) # This will write the setting to the platform specific storage. @@ -12411,22 +12162,22 @@ class App(QtCore.QObject): if act_name == 'red': new_color = '#FF0000' + \ - str(hex(self.ui.general_defaults_form.general_gui_group.pf_color_alpha_slider.value())[2:]) + str(hex(self.ui.gerber_defaults_form.gerber_gen_group.pf_color_alpha_slider.value())[2:]) if act_name == 'blue': new_color = '#0000FF' + \ - str(hex(self.ui.general_defaults_form.general_gui_group.pf_color_alpha_slider.value())[2:]) + str(hex(self.ui.gerber_defaults_form.gerber_gen_group.pf_color_alpha_slider.value())[2:]) if act_name == 'yellow': new_color = '#FFDF00' + \ - str(hex(self.ui.general_defaults_form.general_gui_group.pf_color_alpha_slider.value())[2:]) + str(hex(self.ui.gerber_defaults_form.gerber_gen_group.pf_color_alpha_slider.value())[2:]) if act_name == 'green': new_color = '#00FF00' + \ - str(hex(self.ui.general_defaults_form.general_gui_group.pf_color_alpha_slider.value())[2:]) + str(hex(self.ui.gerber_defaults_form.gerber_gen_group.pf_color_alpha_slider.value())[2:]) if act_name == 'purple': new_color = '#FF00FF' + \ - str(hex(self.ui.general_defaults_form.general_gui_group.pf_color_alpha_slider.value())[2:]) + str(hex(self.ui.gerber_defaults_form.gerber_gen_group.pf_color_alpha_slider.value())[2:]) if act_name == 'brown': new_color = '#A52A2A' + \ - str(hex(self.ui.general_defaults_form.general_gui_group.pf_color_alpha_slider.value())[2:]) + str(hex(self.ui.gerber_defaults_form.gerber_gen_group.pf_color_alpha_slider.value())[2:]) if act_name == 'custom': new_color = QtGui.QColor(self.defaults['gerber_plot_fill'][:7]) @@ -12437,7 +12188,7 @@ class App(QtCore.QObject): return new_color = str(plot_fill_color.name()) + \ - str(hex(self.ui.general_defaults_form.general_gui_group.pf_color_alpha_slider.value())[2:]) + str(hex(self.ui.gerber_defaults_form.gerber_gen_group.pf_color_alpha_slider.value())[2:]) new_line_color = color_variant(new_color[:7], 0.7) diff --git a/FlatCAMObj.py b/FlatCAMObj.py index 9021140c..70f6c20f 100644 --- a/FlatCAMObj.py +++ b/FlatCAMObj.py @@ -3536,7 +3536,9 @@ class FlatCAMExcellon(FlatCAMObj, Excellon): # Plot Excellon (All polygons?) if self.options["solid"]: for geo in self.solid_geometry: - self.add_shape(shape=geo, color='#750000BF', face_color='#C40000BF', + self.add_shape(shape=geo, + color=self.app.defaults["excellon_plot_line"], + face_color=self.app.defaults["excellon_plot_fill"], visible=visible, layer=2) else: @@ -4074,7 +4076,6 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): # I use lambda's because the connected functions have parameters that could be used in certain scenarios self.ui.addtool_btn.clicked.connect(lambda: self.on_tool_add()) - self.ui.addtool_entry.returnPressed.connect(self.on_tool_add) self.ui.copytool_btn.clicked.connect(lambda: self.on_tool_copy()) self.ui.deltool_btn.clicked.connect(lambda: self.on_tool_delete()) @@ -4127,11 +4128,6 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): except (TypeError, AttributeError): pass - try: - self.ui.addtool_entry.returnPressed.disconnect() - except (TypeError, AttributeError): - pass - try: self.ui.copytool_btn.clicked.disconnect() except (TypeError, AttributeError): @@ -5793,12 +5789,15 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): return factor - def plot_element(self, element, color='#FF0000FF', visible=None): + def plot_element(self, element, color=None, visible=None): + + if color is None: + color = '#FF0000FF' visible = visible if visible else self.options['plot'] try: for sub_el in element: - self.plot_element(sub_el) + self.plot_element(sub_el, color=color) except TypeError: # Element is not iterable... # if self.app.is_legacy is False: @@ -5825,12 +5824,14 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): if self.multigeo is True: # geo multi tool usage for tooluid_key in self.tools: solid_geometry = self.tools[tooluid_key]['solid_geometry'] - self.plot_element(solid_geometry, visible=visible) + self.plot_element(solid_geometry, visible=visible, + color=self.app.defaults["geometry_plot_line"]) else: # plot solid geometry that may be an direct attribute of the geometry object # for SingleGeo if self.solid_geometry: - self.plot_element(self.solid_geometry, visible=visible) + self.plot_element(self.solid_geometry, visible=visible, + color=self.app.defaults["geometry_plot_line"]) # self.plot_element(self.solid_geometry, visible=self.options['plot']) diff --git a/README.md b/README.md index db9f9c71..63059c61 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,9 @@ CAD program, and create G-Code for Isolation routing. - further modifications in Preferences -> General GUI - extended the changes - in Legacy(2D) graphic engine made to work the mouse color change - theme changing is no longer auto-reboot upon change; it require now to press a button +- cleaned the Preferences classes and added the signals and signal slots in those classes, removing them from the main app class +- each FlatCAM object found in Preferences has it's own set of controls for changing the colors +- added a set of gray icons to be used when the theme is complete dark (for now it is useful only for MacOS with dark theme because at the moment the app is not styled to dark UI except the plot area) 25.12.2019 diff --git a/camlib.py b/camlib.py index c234d1a8..99b7f0d7 100644 --- a/camlib.py +++ b/camlib.py @@ -4252,8 +4252,7 @@ class CNCjob(Geometry): # return fig def plot2(self, tooldia=None, dpi=75, margin=0.1, gcode_parsed=None, - color={"T": ["#F0E24D4C", "#B5AB3A4C"], "C": ["#5E6CFFFF", "#4650BDFF"]}, - alpha={"T": 0.3, "C": 1.0}, tool_tolerance=0.0005, obj=None, visible=False, kind='all'): + color=None, alpha={"T": 0.3, "C": 1.0}, tool_tolerance=0.0005, obj=None, visible=False, kind='all'): """ Plots the G-code job onto the given axes. @@ -4270,6 +4269,12 @@ class CNCjob(Geometry): """ # units = self.app.ui.general_defaults_form.general_app_group.units_radio.get_value().upper() + if color is None: + color = { + "T": [self.app.defaults["cncjob_travel_fill"], self.app.defaults["cncjob_travel_line"]], + "C": [self.app.defaults["cncjob_plot_fill"], self.app.defaults["cncjob_plot_line"]] + } + gcode_parsed = gcode_parsed if gcode_parsed else self.gcode_parsed path_num = 0 diff --git a/flatcamGUI/FlatCAMGUI.py b/flatcamGUI/FlatCAMGUI.py index 9940486b..b5dfc724 100644 --- a/flatcamGUI/FlatCAMGUI.py +++ b/flatcamGUI/FlatCAMGUI.py @@ -2333,7 +2333,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): :param event: QT event to filter :return: """ - if self.general_defaults_form.general_gui_set_group.toggle_tooltips_cb.get_value() is False: + if self.general_defaults_form.general_app_set_group.toggle_tooltips_cb.get_value() is False: if event.type() == QtCore.QEvent.ToolTip: return True else: diff --git a/flatcamGUI/PreferencesUI.py b/flatcamGUI/PreferencesUI.py index de7e3e0b..b72f3d73 100644 --- a/flatcamGUI/PreferencesUI.py +++ b/flatcamGUI/PreferencesUI.py @@ -56,12 +56,12 @@ class GeneralPreferencesUI(QtWidgets.QWidget): self.general_gui_group = GeneralGUIPrefGroupUI(decimals=self.decimals) self.general_gui_group.setMinimumWidth(250) - self.general_gui_set_group = GeneralGUISetGroupUI(decimals=self.decimals) - self.general_gui_set_group.setMinimumWidth(250) + self.general_app_set_group = GeneralAPPSetGroupUI(decimals=self.decimals) + self.general_app_set_group.setMinimumWidth(250) self.layout.addWidget(self.general_app_group) self.layout.addWidget(self.general_gui_group) - self.layout.addWidget(self.general_gui_set_group) + self.layout.addWidget(self.general_app_set_group) self.layout.addStretch() @@ -678,6 +678,39 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI): self.theme_button.clicked.connect(self.on_theme_change) + # ############################################################################# + # ############################# GUI COLORS SIGNALS ############################ + # ############################################################################# + + # Setting selection (left - right) colors signals + self.sf_color_entry.editingFinished.connect(self.on_sf_color_entry) + self.sf_color_button.clicked.connect(self.on_sf_color_button) + self.sf_color_alpha_spinner.valueChanged.connect(self.on_sf_color_spinner) + self.sf_color_alpha_slider.valueChanged.connect(self.on_sf_color_slider) + self.sl_color_entry.editingFinished.connect(self.on_sl_color_entry) + self.sl_color_button.clicked.connect(self.on_sl_color_button) + + # Setting selection (right - left) colors signals + self.alt_sf_color_entry.editingFinished.connect(self.on_alt_sf_color_entry) + self.alt_sf_color_button.clicked.connect(self.on_alt_sf_color_button) + self.alt_sf_color_alpha_spinner.valueChanged.connect(self.on_alt_sf_color_spinner) + self.alt_sf_color_alpha_slider.valueChanged.connect(self.on_alt_sf_color_slider) + self.alt_sl_color_entry.editingFinished.connect(self.on_alt_sl_color_entry) + self.alt_sl_color_button.clicked.connect(self.on_alt_sl_color_button) + + # Setting Editor Draw colors signals + self.draw_color_entry.editingFinished.connect(self.on_draw_color_entry) + self.draw_color_button.clicked.connect( self.on_draw_color_button) + + self.sel_draw_color_entry.editingFinished.connect(self.on_sel_draw_color_entry) + self.sel_draw_color_button.clicked.connect(self.on_sel_draw_color_button) + + self.proj_color_entry.editingFinished.connect(self.on_proj_color_entry) + self.proj_color_button.clicked.connect(self.on_proj_color_button) + + self.proj_color_dis_entry.editingFinished.connect(self.on_proj_color_dis_entry) + self.proj_color_dis_button.clicked.connect(self.on_proj_color_dis_button) + def on_theme_change(self): val = self.theme_radio.get_value() t_settings = QSettings("Open Source", "FlatCAM") @@ -704,12 +737,201 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI): # This will write the setting to the platform specific storage. del settings + # Setting selection colors (left - right) handlers + def on_sf_color_entry(self): + self.app.defaults['global_sel_fill'] = self.app.defaults['global_sel_fill'][7:9] + self.sf_color_button.setStyleSheet("background-color:%s" % str(self.app.defaults['global_sel_fill'])[:7]) -class GeneralGUISetGroupUI(OptionsGroupUI): + def on_sf_color_button(self): + current_color = QtGui.QColor(self.app.defaults['global_sel_fill'][:7]) + + c_dialog = QtWidgets.QColorDialog() + plot_fill_color = c_dialog.getColor(initial=current_color) + + if plot_fill_color.isValid() is False: + return + + self.sf_color_button.setStyleSheet("background-color:%s" % str(plot_fill_color.name())) + + new_val = str(plot_fill_color.name()) + str(self.app.defaults['global_sel_fill'][7:9]) + self.sf_color_entry.set_value(new_val) + self.app.defaults['global_sel_fill'] = new_val + + def on_sf_color_spinner(self): + spinner_value = self.sf_color_alpha_spinner.value() + self.sf_color_alpha_slider.setValue(spinner_value) + self.app.defaults['global_sel_fill'] = self.app.defaults['global_sel_fill'][:7] + \ + (hex(spinner_value)[2:] if int(hex(spinner_value)[2:], 16) > 0 else '00') + self.app.defaults['global_sel_line'] = self.app.defaults['global_sel_line'][:7] + \ + (hex(spinner_value)[2:] if int(hex(spinner_value)[2:], 16) > 0 else '00') + + def on_sf_color_slider(self): + slider_value = self.sf_color_alpha_slider.value() + self.sf_color_alpha_spinner.setValue(slider_value) + + def on_sl_color_entry(self): + self.app.defaults['global_sel_line'] = self.sl_color_entry.get_value()[:7] + \ + self.app.defaults['global_sel_line'][7:9] + self.sl_color_button.setStyleSheet("background-color:%s" % str(self.app.defaults['global_sel_line'])[:7]) + + def on_sl_color_button(self): + current_color = QtGui.QColor(self.app.defaults['global_sel_line'][:7]) + + c_dialog = QtWidgets.QColorDialog() + plot_line_color = c_dialog.getColor(initial=current_color) + + if plot_line_color.isValid() is False: + return + + self.sl_color_button.setStyleSheet("background-color:%s" % str(plot_line_color.name())) + + new_val_line = str(plot_line_color.name()) + str(self.app.defaults['global_sel_line'][7:9]) + self.sl_color_entry.set_value(new_val_line) + self.app.defaults['global_sel_line'] = new_val_line + + # Setting selection colors (right - left) handlers + def on_alt_sf_color_entry(self): + self.app.defaults['global_alt_sel_fill'] = self.alt_sf_color_entry.get_value()[:7] + \ + self.app.defaults['global_alt_sel_fill'][7:9] + self.alt_sf_color_button.setStyleSheet( + "background-color:%s" % str(self.app.defaults['global_alt_sel_fill'])[:7] + ) + + def on_alt_sf_color_button(self): + current_color = QtGui.QColor(self.app.defaults['global_alt_sel_fill'][:7]) + + c_dialog = QtWidgets.QColorDialog() + plot_fill_color = c_dialog.getColor(initial=current_color) + + if plot_fill_color.isValid() is False: + return + + self.alt_sf_color_button.setStyleSheet("background-color:%s" % str(plot_fill_color.name())) + + new_val = str(plot_fill_color.name()) + str(self.app.defaults['global_alt_sel_fill'][7:9]) + self.alt_sf_color_entry.set_value(new_val) + self.app.defaults['global_alt_sel_fill'] = new_val + + def on_alt_sf_color_spinner(self): + spinner_value = self.alt_sf_color_alpha_spinner.value() + self.alt_sf_color_alpha_slider.setValue(spinner_value) + self.app.defaults['global_alt_sel_fill'] = self.app.defaults['global_alt_sel_fill'][:7] + \ + (hex(spinner_value)[2:] if int(hex(spinner_value)[2:], 16) > 0 else '00') + self.app.defaults['global_alt_sel_line'] = self.app.defaults['global_alt_sel_line'][:7] + \ + (hex(spinner_value)[2:] if int(hex(spinner_value)[2:], 16) > 0 else '00') + + def on_alt_sf_color_slider(self): + slider_value = self.alt_sf_color_alpha_slider.value() + self.alt_sf_color_alpha_spinner.setValue(slider_value) + + def on_alt_sl_color_entry(self): + self.app.defaults['global_alt_sel_line'] = self.alt_sl_color_entry.get_value()[:7] + \ + self.app.defaults['global_alt_sel_line'][7:9] + self.alt_sl_color_button.setStyleSheet( + "background-color:%s" % str(self.app.defaults['global_alt_sel_line'])[:7] + ) + + def on_alt_sl_color_button(self): + current_color = QtGui.QColor(self.app.defaults['global_alt_sel_line'][:7]) + + c_dialog = QtWidgets.QColorDialog() + plot_line_color = c_dialog.getColor(initial=current_color) + + if plot_line_color.isValid() is False: + return + + self.alt_sl_color_button.setStyleSheet("background-color:%s" % str(plot_line_color.name())) + + new_val_line = str(plot_line_color.name()) + str(self.app.defaults['global_alt_sel_line'][7:9]) + self.alt_sl_color_entry.set_value(new_val_line) + self.app.defaults['global_alt_sel_line'] = new_val_line + + # Setting Editor colors + def on_draw_color_entry(self): + self.app.defaults['global_draw_color'] = self.draw_color_entry.get_value() + self.draw_color_button.setStyleSheet("background-color:%s" % str(self.app.defaults['global_draw_color'])) + + def on_draw_color_button(self): + current_color = QtGui.QColor(self.app.defaults['global_draw_color']) + + c_dialog = QtWidgets.QColorDialog() + draw_color = c_dialog.getColor(initial=current_color) + + if draw_color.isValid() is False: + return + + self.draw_color_button.setStyleSheet("background-color:%s" % str(draw_color.name())) + + new_val = str(draw_color.name()) + self.draw_color_entry.set_value(new_val) + self.app.defaults['global_draw_color'] = new_val + + def on_sel_draw_color_entry(self): + self.app.defaults['global_sel_draw_color'] = self.sel_draw_color_entry.get_value() + self.sel_draw_color_button.setStyleSheet( + "background-color:%s" % str(self.app.defaults['global_sel_draw_color'])) + + def on_sel_draw_color_button(self): + current_color = QtGui.QColor(self.app.defaults['global_sel_draw_color']) + + c_dialog = QtWidgets.QColorDialog() + sel_draw_color = c_dialog.getColor(initial=current_color) + + if sel_draw_color.isValid() is False: + return + + self.sel_draw_color_button.setStyleSheet("background-color:%s" % str(sel_draw_color.name())) + + new_val_sel = str(sel_draw_color.name()) + self.sel_draw_color_entry.set_value(new_val_sel) + self.app.defaults['global_sel_draw_color'] = new_val_sel + + def on_proj_color_entry(self): + self.app.defaults['global_proj_item_color'] = self.proj_color_entry.get_value() + self.proj_color_button.setStyleSheet( + "background-color:%s" % str(self.app.defaults['global_proj_item_color'])) + + def on_proj_color_button(self): + current_color = QtGui.QColor(self.app.defaults['global_proj_item_color']) + + c_dialog = QtWidgets.QColorDialog() + proj_color = c_dialog.getColor(initial=current_color) + + if proj_color.isValid() is False: + return + + self.proj_color_button.setStyleSheet("background-color:%s" % str(proj_color.name())) + + new_val_sel = str(proj_color.name()) + self.proj_color_entry.set_value(new_val_sel) + self.app.defaults['global_proj_item_color'] = new_val_sel + + def on_proj_color_dis_entry(self): + self.app.defaults['global_proj_item_dis_color'] = self.proj_color_dis_entry.get_value() + self.proj_color_dis_button.setStyleSheet( + "background-color:%s" % str(self.app.defaults['global_proj_item_dis_color'])) + + def on_proj_color_dis_button(self): + current_color = QtGui.QColor(self.app.defaults['global_proj_item_dis_color']) + + c_dialog = QtWidgets.QColorDialog() + proj_color = c_dialog.getColor(initial=current_color) + + if proj_color.isValid() is False: + return + + self.proj_color_dis_button.setStyleSheet("background-color:%s" % str(proj_color.name())) + + new_val_sel = str(proj_color.name()) + self.proj_color_dis_entry.set_value(new_val_sel) + self.app.defaults['global_proj_item_dis_color'] = new_val_sel + + +class GeneralAPPSetGroupUI(OptionsGroupUI): def __init__(self, decimals=4, parent=None): - super(GeneralGUISetGroupUI, self).__init__(self) + super(GeneralAPPSetGroupUI, self).__init__(self) - self.setTitle(str(_("GUI Settings"))) + self.setTitle(str(_("App Settings"))) self.decimals = decimals theme_settings = QtCore.QSettings("Open Source", "FlatCAM") @@ -941,65 +1163,15 @@ class GeneralGUISetGroupUI(OptionsGroupUI): grid0.addWidget(self.textbox_font_size_label, 13, 0) grid0.addWidget(self.textbox_font_size_spinner, 13, 1) - # ----------------------------------------------------------- - # ----------- APPLICATION STARTUP SETTINGS ------------------ - # ----------------------------------------------------------- - separator_line = QtWidgets.QFrame() separator_line.setFrameShape(QtWidgets.QFrame.HLine) separator_line.setFrameShadow(QtWidgets.QFrame.Sunken) grid0.addWidget(separator_line, 14, 0, 1, 2) - self.startup_label = QtWidgets.QLabel('%s' % _('Startup Settings')) - grid0.addWidget(self.startup_label, 15, 0, 1, 2) - - # Splash Screen - self.splash_cb = FCCheckBox('%s' % _('Splash Screen')) - self.splash_cb.setToolTip( - _("Enable display of the splash screen at application startup.") - ) - - settings = QSettings("Open Source", "FlatCAM") - if settings.value("splash_screen"): - self.splash_cb.set_value(True) - else: - self.splash_cb.set_value(False) - - grid0.addWidget(self.splash_cb, 16, 0, 1, 2) - - # Sys Tray Icon - self.systray_cb = FCCheckBox('%s' % _('Sys Tray Icon')) - self.systray_cb.setToolTip( - _("Enable display of FlatCAM icon in Sys Tray.") - ) - grid0.addWidget(self.systray_cb, 17, 0, 1, 2) - - # Shell StartUp CB - self.shell_startup_cb = FCCheckBox(label='%s' % _('Show Shell')) - self.shell_startup_cb.setToolTip( - _("Check this box if you want the shell to\n" - "start automatically at startup.") - ) - - grid0.addWidget(self.shell_startup_cb, 18, 0, 1, 2) - - # Project at StartUp CB - self.project_startup_cb = FCCheckBox(label='%s' % _('Show Project')) - self.project_startup_cb.setToolTip( - _("Check this box if you want the project/selected/tool tab area to\n" - "to be shown automatically at startup.") - ) - grid0.addWidget(self.project_startup_cb, 19, 0, 1, 2) - # ----------------------------------------------------------- # -------------- MOUSE SETTINGS ----------------------------- # ----------------------------------------------------------- - separator_line = QtWidgets.QFrame() - separator_line.setFrameShape(QtWidgets.QFrame.HLine) - separator_line.setFrameShadow(QtWidgets.QFrame.Sunken) - grid0.addWidget(separator_line, 20, 0, 1, 2) - self.mouse_lbl = QtWidgets.QLabel('%s' % _('Mouse Settings')) grid0.addWidget(self.mouse_lbl, 21, 0, 1, 2) @@ -1115,6 +1287,17 @@ class GeneralGUISetGroupUI(OptionsGroupUI): ) grid0.addWidget(self.delete_conf_cb, 30, 0, 1, 2) + # Open behavior + self.open_style_cb = FCCheckBox('%s' % _('"Open" behavior')) + self.open_style_cb.setToolTip( + _("When checked the path for the last saved file is used when saving files,\n" + "and the path for the last opened file is used when opening files.\n\n" + "When unchecked the path for opening files is the one used last: either the\n" + "path for saving files or the path for opening files.") + ) + + grid0.addWidget(self.open_style_cb, 31, 0, 1, 2) + # Enable/Disable ToolTips globally self.toggle_tooltips_cb = FCCheckBox(label='Enable ToolTips') self.toggle_tooltips_cb.setToolTip( @@ -1122,7 +1305,31 @@ class GeneralGUISetGroupUI(OptionsGroupUI): "when hovering with mouse over items throughout the App.") ) - grid0.addWidget(self.toggle_tooltips_cb, 31, 0, 1, 2) + grid0.addWidget(self.toggle_tooltips_cb, 32, 0, 1, 2) + + # Machinist settings that allow unsafe settings + self.machinist_cb = FCCheckBox(_("Allow Machinist Unsafe Settings")) + self.machinist_cb.setToolTip( + _("If checked, some of the application settings will be allowed\n" + "to have values that are usually unsafe to use.\n" + "Like Z travel negative values or Z Cut positive values.\n" + "It will applied at the next application start.\n" + "<>: Don't change this unless you know what you are doing !!!") + ) + + grid0.addWidget(self.machinist_cb, 33, 0, 1, 2) + + # Bookmarks Limit in the Help Menu + self.bm_limit_spinner = FCSpinner() + self.bm_limit_label = QtWidgets.QLabel('%s:' % _('Bookmarks limit')) + self.bm_limit_label.setToolTip( + _("The maximum number of bookmarks that may be installed in the menu.\n" + "The number of bookmarks in the bookmark manager may be greater\n" + "but the menu will hold only so much.") + ) + + grid0.addWidget(self.bm_limit_label, 34, 0) + grid0.addWidget(self.bm_limit_spinner, 34, 1) # Activity monitor icon self.activity_label = QtWidgets.QLabel('%s:' % _("Activity Icon")) @@ -1132,8 +1339,8 @@ class GeneralGUISetGroupUI(OptionsGroupUI): self.activity_combo = FCComboBox() self.activity_combo.addItems(['Ball black', 'Ball green', 'Arrow green', 'Eclipse green']) - grid0.addWidget(self.activity_label, 32, 0) - grid0.addWidget(self.activity_combo, 32, 1) + grid0.addWidget(self.activity_label, 35, 0) + grid0.addWidget(self.activity_combo, 35, 1) self.layout.addStretch() @@ -1301,38 +1508,76 @@ class GeneralAppPrefGroupUI(OptionsGroupUI): separator_line.setFrameShadow(QtWidgets.QFrame.Sunken) grid0.addWidget(separator_line, 16, 0, 1, 2) - # Version Check CB - self.version_check_label = QtWidgets.QLabel('%s:' % _('Version Check')) - self.version_check_label.setToolTip( - _("Check this box if you want to check\n" - "for a new version automatically at startup.") + # ----------------------------------------------------------- + # ----------- APPLICATION STARTUP SETTINGS ------------------ + # ----------------------------------------------------------- + + self.startup_label = QtWidgets.QLabel('%s' % _('Startup Settings')) + grid0.addWidget(self.startup_label, 17, 0, 1, 2) + + # Splash Screen + self.splash_cb = FCCheckBox('%s' % _('Splash Screen')) + self.splash_cb.setToolTip( + _("Enable display of the splash screen at application startup.") ) - self.version_check_cb = FCCheckBox(label='') + + settings = QSettings("Open Source", "FlatCAM") + if settings.value("splash_screen"): + self.splash_cb.set_value(True) + else: + self.splash_cb.set_value(False) + + grid0.addWidget(self.splash_cb, 18, 0, 1, 2) + + # Sys Tray Icon + self.systray_cb = FCCheckBox('%s' % _('Sys Tray Icon')) + self.systray_cb.setToolTip( + _("Enable display of FlatCAM icon in Sys Tray.") + ) + grid0.addWidget(self.systray_cb, 19, 0, 1, 2) + + # Shell StartUp CB + self.shell_startup_cb = FCCheckBox(label='%s' % _('Show Shell')) + self.shell_startup_cb.setToolTip( + _("Check this box if you want the shell to\n" + "start automatically at startup.") + ) + + grid0.addWidget(self.shell_startup_cb, 20, 0, 1, 2) + + # Project at StartUp CB + self.project_startup_cb = FCCheckBox(label='%s' % _('Show Project')) + self.project_startup_cb.setToolTip( + _("Check this box if you want the project/selected/tool tab area to\n" + "to be shown automatically at startup.") + ) + grid0.addWidget(self.project_startup_cb, 21, 0, 1, 2) + + # Version Check CB + self.version_check_cb = FCCheckBox(label='%s' % _('Version Check')) self.version_check_cb.setToolTip( _("Check this box if you want to check\n" "for a new version automatically at startup.") ) - grid0.addWidget(self.version_check_label, 17, 0) - grid0.addWidget(self.version_check_cb, 17, 1) + grid0.addWidget(self.version_check_cb, 22, 0, 1, 2) # Send Stats CB - self.send_stats_label = QtWidgets.QLabel('%s:' % _('Send Stats')) - self.send_stats_label.setToolTip( - _("Check this box if you agree to send anonymous\n" - "stats automatically at startup, to help improve FlatCAM.") - ) - self.send_stats_cb = FCCheckBox(label='') + self.send_stats_cb = FCCheckBox(label='%s' % _('Send Statistics')) self.send_stats_cb.setToolTip( _("Check this box if you agree to send anonymous\n" "stats automatically at startup, to help improve FlatCAM.") ) - grid0.addWidget(self.send_stats_label, 18, 0) - grid0.addWidget(self.send_stats_cb, 18, 1) + grid0.addWidget(self.send_stats_cb, 23, 0, 1, 2) self.ois_version_check = OptionalInputSection(self.version_check_cb, [self.send_stats_cb]) + separator_line = QtWidgets.QFrame() + separator_line.setFrameShape(QtWidgets.QFrame.HLine) + separator_line.setFrameShadow(QtWidgets.QFrame.Sunken) + grid0.addWidget(separator_line, 24, 0, 1, 2) + # Worker Numbers self.worker_number_label = QtWidgets.QLabel('%s:' % _('Workers number')) self.worker_number_label.setToolTip( @@ -1354,8 +1599,8 @@ class GeneralAppPrefGroupUI(OptionsGroupUI): ) self.worker_number_sb.set_range(2, 16) - grid0.addWidget(self.worker_number_label, 19, 0) - grid0.addWidget(self.worker_number_sb, 19, 1) + grid0.addWidget(self.worker_number_label, 25, 0) + grid0.addWidget(self.worker_number_sb, 25, 1) # Geometric tolerance tol_label = QtWidgets.QLabel('%s:' % _("Geo Tolerance")) @@ -1379,24 +1624,17 @@ class GeneralAppPrefGroupUI(OptionsGroupUI): self.tol_entry.setSingleStep(0.001) self.tol_entry.set_precision(6) - grid0.addWidget(tol_label, 20, 0) - grid0.addWidget(self.tol_entry, 20, 1) + grid0.addWidget(tol_label, 26, 0) + grid0.addWidget(self.tol_entry, 26, 1) separator_line = QtWidgets.QFrame() separator_line.setFrameShape(QtWidgets.QFrame.HLine) separator_line.setFrameShadow(QtWidgets.QFrame.Sunken) - grid0.addWidget(separator_line, 21, 0, 1, 2) + grid0.addWidget(separator_line, 27, 0, 1, 2) - # Open behavior - self.open_style_cb = FCCheckBox('%s' % _('"Open" behavior')) - self.open_style_cb.setToolTip( - _("When checked the path for the last saved file is used when saving files,\n" - "and the path for the last opened file is used when opening files.\n\n" - "When unchecked the path for opening files is the one used last: either the\n" - "path for saving files or the path for opening files.") - ) - - grid0.addWidget(self.open_style_cb, 22, 0, 1, 2) + # Save Settings + self.save_label = QtWidgets.QLabel('%s' % _("Save Settings")) + grid0.addWidget(self.save_label, 28, 0, 1, 2) # Save compressed project CB self.save_type_cb = FCCheckBox(_('Save Compressed Project')) @@ -1405,7 +1643,7 @@ class GeneralAppPrefGroupUI(OptionsGroupUI): "When checked it will save a compressed FlatCAM project.") ) - grid0.addWidget(self.save_type_cb, 23, 0, 1, 2) + grid0.addWidget(self.save_type_cb, 29, 0, 1, 2) # Project LZMA Comppression Level self.compress_spinner = FCSpinner() @@ -1417,42 +1655,16 @@ class GeneralAppPrefGroupUI(OptionsGroupUI): "but require more RAM usage and more processing time.") ) - grid0.addWidget(self.compress_label, 24, 0) - grid0.addWidget(self.compress_spinner, 24, 1) + grid0.addWidget(self.compress_label, 30, 0) + grid0.addWidget(self.compress_spinner, 30, 1) self.proj_ois = OptionalInputSection(self.save_type_cb, [self.compress_label, self.compress_spinner], True) - # Bookmarks Limit in the Help Menu - self.bm_limit_spinner = FCSpinner() - self.bm_limit_label = QtWidgets.QLabel('%s:' % _('Bookmarks limit')) - self.bm_limit_label.setToolTip( - _("The maximum number of bookmarks that may be installed in the menu.\n" - "The number of bookmarks in the bookmark manager may be greater\n" - "but the menu will hold only so much.") - ) - - grid0.addWidget(self.bm_limit_label, 25, 0) - grid0.addWidget(self.bm_limit_spinner, 25, 1) - - # Machinist settings that allow unsafe settings - self.machinist_cb = FCCheckBox(_("Allow Machinist Unsafe Settings")) - self.machinist_cb.setToolTip( - _("If checked, some of the application settings will be allowed\n" - "to have values that are usually unsafe to use.\n" - "Like Z travel negative values or Z Cut positive values.\n" - "It will applied at the next application start.\n" - "<>: Don't change this unless you know what you are doing !!!") - ) - - grid0.addWidget(self.machinist_cb, 26, 0, 1, 2) - separator_line = QtWidgets.QFrame() separator_line.setFrameShape(QtWidgets.QFrame.HLine) separator_line.setFrameShadow(QtWidgets.QFrame.Sunken) self.layout.addWidget(separator_line) - self.layout.addWidget(QtWidgets.QLabel('')) - grid1 = QtWidgets.QGridLayout() self.layout.addLayout(grid1) grid1.setColumnStretch(0, 0) @@ -1522,6 +1734,21 @@ class GeneralAppPrefGroupUI(OptionsGroupUI): self.portability_label.hide() self.portability_cb.hide() + # splash screen button signal + self.splash_cb.stateChanged.connect(self.on_splash_changed) + + # Monitor the checkbox from the Application Defaults Tab and show the TCL shell or not depending on it's value + self.shell_startup_cb.clicked.connect(self.app.on_toggle_shell) + + self.language_apply_btn.clicked.connect(lambda: fcTranslate.on_language_apply_click(app=self.app, restart=True)) + + def on_splash_changed(self, state): + settings = QSettings("Open Source", "FlatCAM") + settings.setValue('splash_screen', 1) if state else settings.setValue('splash_screen', 0) + + # This will write the setting to the platform specific storage. + del settings + class GerberGenPrefGroupUI(OptionsGroupUI): def __init__(self, decimals=4, parent=None): @@ -2654,8 +2881,77 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI): self.optimization_time_entry = FCSpinner() self.optimization_time_entry.set_range(0, 999) + grid2.addWidget(self.optimization_time_entry, 6, 1) + separator_line = QtWidgets.QFrame() + separator_line.setFrameShape(QtWidgets.QFrame.HLine) + separator_line.setFrameShadow(QtWidgets.QFrame.Sunken) + grid2.addWidget(separator_line, 9, 0, 1, 2) + + # Excellon Object Color + self.gerber_color_label = QtWidgets.QLabel('%s' % _('Excellon Object Color')) + grid2.addWidget(self.gerber_color_label, 10, 0, 1, 2) + + # Plot Line Color + self.line_color_label = QtWidgets.QLabel('%s:' % _('Outline')) + self.line_color_label.setToolTip( + _("Set the line color for plotted objects.") + ) + self.line_color_entry = FCEntry() + self.line_color_button = QtWidgets.QPushButton() + self.line_color_button.setFixedSize(15, 15) + + self.form_box_child_2 = QtWidgets.QHBoxLayout() + self.form_box_child_2.addWidget(self.line_color_entry) + self.form_box_child_2.addWidget(self.line_color_button) + self.form_box_child_2.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) + + grid2.addWidget(self.line_color_label, 11, 0) + grid2.addLayout(self.form_box_child_2, 11, 1) + + # Plot Fill Color + self.fill_color_label = QtWidgets.QLabel('%s:' % _('Fill')) + self.fill_color_label.setToolTip( + _("Set the fill color for plotted objects.\n" + "First 6 digits are the color and the last 2\n" + "digits are for alpha (transparency) level.") + ) + self.fill_color_entry = FCEntry() + self.fill_color_button = QtWidgets.QPushButton() + self.fill_color_button.setFixedSize(15, 15) + + self.form_box_child_1 = QtWidgets.QHBoxLayout() + self.form_box_child_1.addWidget(self.fill_color_entry) + self.form_box_child_1.addWidget(self.fill_color_button) + self.form_box_child_1.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) + + grid2.addWidget(self.fill_color_label, 12, 0) + grid2.addLayout(self.form_box_child_1, 12, 1) + + # Plot Fill Transparency Level + self.alpha_label = QtWidgets.QLabel('%s:' % _('Alpha')) + self.alpha_label.setToolTip( + _("Set the fill transparency for plotted objects.") + ) + self.color_alpha_slider = QtWidgets.QSlider(QtCore.Qt.Horizontal) + self.color_alpha_slider.setMinimum(0) + self.color_alpha_slider.setMaximum(255) + self.color_alpha_slider.setSingleStep(1) + + self.color_alpha_spinner = FCSpinner() + self.color_alpha_spinner.setMinimumWidth(70) + self.color_alpha_spinner.set_range(0, 255) + + self.form_box_child_3 = QtWidgets.QHBoxLayout() + self.form_box_child_3.addWidget(self.color_alpha_slider) + self.form_box_child_3.addWidget(self.color_alpha_spinner) + + grid2.addWidget(self.alpha_label, 13, 0) + grid2.addLayout(self.form_box_child_3, 13, 1) + + self.layout.addStretch() + current_platform = platform.architecture()[0] if current_platform == '64bit': self.excellon_optimization_label.setDisabled(False) @@ -2670,7 +2966,13 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI): self.optimization_time_label.setDisabled(True) self.optimization_time_entry.setDisabled(True) - self.layout.addStretch() + # Setting plot colors signals + self.line_color_entry.editingFinished.connect(self.on_line_color_entry) + self.line_color_button.clicked.connect(self.on_line_color_button) + self.fill_color_entry.editingFinished.connect(self.on_fill_color_entry) + self.fill_color_button.clicked.connect(self.on_fill_color_button) + self.color_alpha_spinner.valueChanged.connect(self.on_color_spinner) + self.color_alpha_slider.valueChanged.connect(self.on_color_slider) def optimization_selection(self): if self.excellon_optimization_radio.get_value() == 'M': @@ -2680,6 +2982,62 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI): self.optimization_time_label.setDisabled(True) self.optimization_time_entry.setDisabled(True) + # Setting plot colors handlers + def on_fill_color_entry(self): + self.app.defaults['excellon_plot_fill'] = self.fill_color_entry.get_value()[:7] + \ + self.app.defaults['excellon_plot_fill'][7:9] + self.fill_color_button.setStyleSheet("background-color:%s" % str(self.app.defaults['excellon_plot_fill'])[:7]) + + def on_fill_color_button(self): + current_color = QtGui.QColor(self.app.defaults['excellon_plot_fill'][:7]) + + c_dialog = QtWidgets.QColorDialog() + plot_fill_color = c_dialog.getColor(initial=current_color) + + if plot_fill_color.isValid() is False: + return + + self.fill_color_button.setStyleSheet("background-color:%s" % str(plot_fill_color.name())) + + new_val = str(plot_fill_color.name()) + str(self.app.defaults['excellon_plot_fill'][7:9]) + self.fill_color_entry.set_value(new_val) + self.app.defaults['excellon_plot_fill'] = new_val + + def on_color_spinner(self): + spinner_value = self.color_alpha_spinner.value() + self.color_alpha_slider.setValue(spinner_value) + self.app.defaults['excellon_plot_fill'] = \ + self.app.defaults['excellon_plot_fill'][:7] + \ + (hex(spinner_value)[2:] if int(hex(spinner_value)[2:], 16) > 0 else '00') + self.app.defaults['excellon_plot_line'] = \ + self.app.defaults['excellon_plot_line'][:7] + \ + (hex(spinner_value)[2:] if int(hex(spinner_value)[2:], 16) > 0 else '00') + + def on_color_slider(self): + slider_value = self.color_alpha_slider.value() + self.color_alpha_spinner.setValue(slider_value) + + def on_line_color_entry(self): + self.app.defaults['excellon_plot_line'] = self.line_color_entry.get_value()[:7] + \ + self.app.defaults['excellon_plot_line'][7:9] + self.line_color_button.setStyleSheet("background-color:%s" % str(self.app.defaults['excellon_plot_line'])[:7]) + + def on_line_color_button(self): + current_color = QtGui.QColor(self.app.defaults['excellon_plot_line'][:7]) + # print(current_color) + + c_dialog = QtWidgets.QColorDialog() + plot_line_color = c_dialog.getColor(initial=current_color) + + if plot_line_color.isValid() is False: + return + + self.line_color_button.setStyleSheet("background-color:%s" % str(plot_line_color.name())) + + new_val_line = str(plot_line_color.name()) + str(self.app.defaults['excellon_plot_line'][7:9]) + self.line_color_entry.set_value(new_val_line) + self.app.defaults['excellon_plot_line'] = new_val_line + class ExcellonOptPrefGroupUI(OptionsGroupUI): @@ -3521,8 +3879,57 @@ class GeometryGenPrefGroupUI(OptionsGroupUI): grid0.addWidget(tdlabel, 3, 0) grid0.addWidget(self.cnctooldia_entry, 3, 1) + separator_line = QtWidgets.QFrame() + separator_line.setFrameShape(QtWidgets.QFrame.HLine) + separator_line.setFrameShadow(QtWidgets.QFrame.Sunken) + grid0.addWidget(separator_line, 9, 0, 1, 2) + + # Geometry Object Color + self.gerber_color_label = QtWidgets.QLabel('%s' % _('Geometry Object Color')) + grid0.addWidget(self.gerber_color_label, 10, 0, 1, 2) + + # Plot Line Color + self.line_color_label = QtWidgets.QLabel('%s:' % _('Outline')) + self.line_color_label.setToolTip( + _("Set the line color for plotted objects.") + ) + self.line_color_entry = FCEntry() + self.line_color_button = QtWidgets.QPushButton() + self.line_color_button.setFixedSize(15, 15) + + self.form_box_child_2 = QtWidgets.QHBoxLayout() + self.form_box_child_2.addWidget(self.line_color_entry) + self.form_box_child_2.addWidget(self.line_color_button) + self.form_box_child_2.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) + + grid0.addWidget(self.line_color_label, 11, 0) + grid0.addLayout(self.form_box_child_2, 11, 1) + self.layout.addStretch() + # Setting plot colors signals + self.line_color_entry.editingFinished.connect(self.on_line_color_entry) + self.line_color_button.clicked.connect(self.on_line_color_button) + + def on_line_color_entry(self): + self.app.defaults['geometry_plot_line'] = self.line_color_entry.get_value()[:7] + 'FF' + self.line_color_button.setStyleSheet("background-color:%s" % str(self.app.defaults['geometry_plot_line'])[:7]) + + def on_line_color_button(self): + current_color = QtGui.QColor(self.app.defaults['geometry_plot_line'][:7]) + # print(current_color) + + c_dialog = QtWidgets.QColorDialog() + plot_line_color = c_dialog.getColor(initial=current_color) + + if plot_line_color.isValid() is False: + return + + self.line_color_button.setStyleSheet("background-color:%s" % str(plot_line_color.name())) + + new_val_line = str(plot_line_color.name()) + str(self.app.defaults['geometry_plot_line'][7:9]) + self.line_color_entry.set_value(new_val_line) + class GeometryOptPrefGroupUI(OptionsGroupUI): def __init__(self, decimals=4, parent=None): @@ -4114,8 +4521,238 @@ class CNCJobGenPrefGroupUI(OptionsGroupUI): grid0.addWidget(self.line_ending_cb, 9, 0, 1, 3) + separator_line = QtWidgets.QFrame() + separator_line.setFrameShape(QtWidgets.QFrame.HLine) + separator_line.setFrameShadow(QtWidgets.QFrame.Sunken) + grid0.addWidget(separator_line, 12, 0, 1, 2) + + # Travel Line Color + self.travel_color_label = QtWidgets.QLabel('%s' % _('Travel Line Color')) + grid0.addWidget(self.travel_color_label, 13, 0, 1, 2) + + # Plot Line Color + self.tline_color_label = QtWidgets.QLabel('%s:' % _('Outline')) + self.tline_color_label.setToolTip( + _("Set the travel line color for plotted objects.") + ) + self.tline_color_entry = FCEntry() + self.tline_color_button = QtWidgets.QPushButton() + self.tline_color_button.setFixedSize(15, 15) + + self.form_box_child_2 = QtWidgets.QHBoxLayout() + self.form_box_child_2.addWidget(self.tline_color_entry) + self.form_box_child_2.addWidget(self.tline_color_button) + self.form_box_child_2.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) + + grid0.addWidget(self.tline_color_label, 14, 0) + grid0.addLayout(self.form_box_child_2, 14, 1) + + # Plot Fill Color + self.tfill_color_label = QtWidgets.QLabel('%s:' % _('Fill')) + self.tfill_color_label.setToolTip( + _("Set the fill color for plotted objects.\n" + "First 6 digits are the color and the last 2\n" + "digits are for alpha (transparency) level.") + ) + self.tfill_color_entry = FCEntry() + self.tfill_color_button = QtWidgets.QPushButton() + self.tfill_color_button.setFixedSize(15, 15) + + self.form_box_child_1 = QtWidgets.QHBoxLayout() + self.form_box_child_1.addWidget(self.tfill_color_entry) + self.form_box_child_1.addWidget(self.tfill_color_button) + self.form_box_child_1.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) + + grid0.addWidget(self.tfill_color_label, 15, 0) + grid0.addLayout(self.form_box_child_1, 15, 1) + + # Plot Fill Transparency Level + self.alpha_label = QtWidgets.QLabel('%s:' % _('Alpha')) + self.alpha_label.setToolTip( + _("Set the fill transparency for plotted objects.") + ) + self.tcolor_alpha_slider = QtWidgets.QSlider(QtCore.Qt.Horizontal) + self.tcolor_alpha_slider.setMinimum(0) + self.tcolor_alpha_slider.setMaximum(255) + self.tcolor_alpha_slider.setSingleStep(1) + + self.tcolor_alpha_spinner = FCSpinner() + self.tcolor_alpha_spinner.setMinimumWidth(70) + self.tcolor_alpha_spinner.set_range(0, 255) + + self.form_box_child_3 = QtWidgets.QHBoxLayout() + self.form_box_child_3.addWidget(self.tcolor_alpha_slider) + self.form_box_child_3.addWidget(self.tcolor_alpha_spinner) + + grid0.addWidget(self.alpha_label, 16, 0) + grid0.addLayout(self.form_box_child_3, 16, 1) + + separator_line = QtWidgets.QFrame() + separator_line.setFrameShape(QtWidgets.QFrame.HLine) + separator_line.setFrameShadow(QtWidgets.QFrame.Sunken) + grid0.addWidget(separator_line, 17, 0, 1, 2) + + # CNCJob Object Color + self.cnc_color_label = QtWidgets.QLabel('%s' % _('CNCJob Object Color')) + grid0.addWidget(self.cnc_color_label, 18, 0, 1, 2) + + # Plot Line Color + self.line_color_label = QtWidgets.QLabel('%s:' % _('Outline')) + self.line_color_label.setToolTip( + _("Set the travel line color for plotted objects.") + ) + self.line_color_entry = FCEntry() + self.line_color_button = QtWidgets.QPushButton() + self.line_color_button.setFixedSize(15, 15) + + self.form_box_child_2 = QtWidgets.QHBoxLayout() + self.form_box_child_2.addWidget(self.line_color_entry) + self.form_box_child_2.addWidget(self.line_color_button) + self.form_box_child_2.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) + + grid0.addWidget(self.line_color_label, 19, 0) + grid0.addLayout(self.form_box_child_2, 19, 1) + + # Plot Fill Color + self.fill_color_label = QtWidgets.QLabel('%s:' % _('Fill')) + self.fill_color_label.setToolTip( + _("Set the fill color for plotted objects.\n" + "First 6 digits are the color and the last 2\n" + "digits are for alpha (transparency) level.") + ) + self.fill_color_entry = FCEntry() + self.fill_color_button = QtWidgets.QPushButton() + self.fill_color_button.setFixedSize(15, 15) + + self.form_box_child_1 = QtWidgets.QHBoxLayout() + self.form_box_child_1.addWidget(self.fill_color_entry) + self.form_box_child_1.addWidget(self.fill_color_button) + self.form_box_child_1.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) + + grid0.addWidget(self.fill_color_label, 20, 0) + grid0.addLayout(self.form_box_child_1, 20, 1) + self.layout.addStretch() + # Setting plot colors signals + self.tline_color_entry.editingFinished.connect(self.on_tline_color_entry) + self.tline_color_button.clicked.connect(self.on_tline_color_button) + self.tfill_color_entry.editingFinished.connect(self.on_tfill_color_entry) + self.tfill_color_button.clicked.connect(self.on_tfill_color_button) + self.tcolor_alpha_spinner.valueChanged.connect(self.on_tcolor_spinner) + self.tcolor_alpha_slider.valueChanged.connect(self.on_tcolor_slider) + + self.line_color_entry.editingFinished.connect(self.on_line_color_entry) + self.line_color_button.clicked.connect(self.on_line_color_button) + self.fill_color_entry.editingFinished.connect(self.on_fill_color_entry) + self.fill_color_button.clicked.connect(self.on_fill_color_button) + + # ------------------------------------------------------ + # Setting travel colors handlers + # ------------------------------------------------------ + def on_tfill_color_entry(self): + self.app.defaults['cncjob_travel_fill'] = self.tfill_color_entry.get_value()[:7] + \ + self.app.defaults['cncjob_travel_fill'][7:9] + self.tfill_color_button.setStyleSheet( + "background-color:%s" % str(self.app.defaults['cncjob_travel_fill'])[:7]) + + def on_tfill_color_button(self): + current_color = QtGui.QColor(self.app.defaults['cncjob_travel_fill'][:7]) + + c_dialog = QtWidgets.QColorDialog() + plot_fill_color = c_dialog.getColor(initial=current_color) + + if plot_fill_color.isValid() is False: + return + + self.tfill_color_button.setStyleSheet("background-color:%s" % str(plot_fill_color.name())) + + new_val = str(plot_fill_color.name()) + str(self.app.defaults['cncjob_travel_fill'][7:9]) + self.tfill_color_entry.set_value(new_val) + self.app.defaults['cncjob_travel_fill'] = new_val + + def on_tcolor_spinner(self): + spinner_value = self.tcolor_alpha_spinner.value() + self.tcolor_alpha_slider.setValue(spinner_value) + self.app.defaults['cncjob_travel_fill'] = \ + self.app.defaults['cncjob_travel_fill'][:7] + \ + (hex(spinner_value)[2:] if int(hex(spinner_value)[2:], 16) > 0 else '00') + self.app.defaults['cncjob_travel_line'] = \ + self.app.defaults['cncjob_travel_line'][:7] + \ + (hex(spinner_value)[2:] if int(hex(spinner_value)[2:], 16) > 0 else '00') + + def on_tcolor_slider(self): + slider_value = self.tcolor_alpha_slider.value() + self.tcolor_alpha_spinner.setValue(slider_value) + + def on_tline_color_entry(self): + self.app.defaults['cncjob_travel_line'] = self.tline_color_entry.get_value()[:7] + \ + self.app.defaults['cncjob_travel_line'][7:9] + self.tline_color_button.setStyleSheet( + "background-color:%s" % str(self.app.defaults['cncjob_travel_line'])[:7]) + + def on_tline_color_button(self): + current_color = QtGui.QColor(self.app.defaults['cncjob_travel_line'][:7]) + # print(current_color) + + c_dialog = QtWidgets.QColorDialog() + plot_line_color = c_dialog.getColor(initial=current_color) + + if plot_line_color.isValid() is False: + return + + self.tline_color_button.setStyleSheet("background-color:%s" % str(plot_line_color.name())) + + new_val_line = str(plot_line_color.name()) + str(self.app.defaults['cncjob_travel_line'][7:9]) + self.tline_color_entry.set_value(new_val_line) + self.app.defaults['cncjob_travel_line'] = new_val_line + + # ------------------------------------------------------ + # Setting plot colors handlers + # ------------------------------------------------------ + def on_fill_color_entry(self): + self.app.defaults['cncjob_plot_fill'] = self.fill_color_entry.get_value()[:7] + \ + self.app.defaults['cncjob_plot_fill'][7:9] + self.fill_color_button.setStyleSheet( + "background-color:%s" % str(self.app.defaults['cncjob_plot_fill'])[:7]) + + def on_fill_color_button(self): + current_color = QtGui.QColor(self.app.defaults['cncjob_plot_fill'][:7]) + + c_dialog = QtWidgets.QColorDialog() + plot_fill_color = c_dialog.getColor(initial=current_color) + + if plot_fill_color.isValid() is False: + return + + self.fill_color_button.setStyleSheet("background-color:%s" % str(plot_fill_color.name())) + + new_val = str(plot_fill_color.name()) + str(self.app.defaults['cncjob_plot_fill'][7:9]) + self.fill_color_entry.set_value(new_val) + self.app.defaults['cncjob_plot_fill'] = new_val + + def on_line_color_entry(self): + self.app.defaults['cncjob_plot_line'] = self.line_color_entry.get_value()[:7] + \ + self.app.defaults['cncjob_plot_line'][7:9] + self.line_color_button.setStyleSheet( + "background-color:%s" % str(self.app.defaults['cncjob_plot_line'])[:7]) + + def on_line_color_button(self): + current_color = QtGui.QColor(self.app.defaults['cncjob_plot_line'][:7]) + # print(current_color) + + c_dialog = QtWidgets.QColorDialog() + plot_line_color = c_dialog.getColor(initial=current_color) + + if plot_line_color.isValid() is False: + return + + self.line_color_button.setStyleSheet("background-color:%s" % str(plot_line_color.name())) + + new_val_line = str(plot_line_color.name()) + str(self.app.defaults['cncjob_plot_line'][7:9]) + self.line_color_entry.set_value(new_val_line) + self.app.defaults['cncjob_plot_line'] = new_val_line + class CNCJobOptPrefGroupUI(OptionsGroupUI): def __init__(self, decimals=4, parent=None): @@ -4330,6 +4967,37 @@ class CNCJobAdvOptPrefGroupUI(OptionsGroupUI): self.layout.addStretch() + self.tc_variable_combo.currentIndexChanged[str].connect(self.on_cnc_custom_parameters) + + self.annotation_fontcolor_entry.editingFinished.connect(self.on_annotation_fontcolor_entry) + self.annotation_fontcolor_button.clicked.connect(self.on_annotation_fontcolor_button) + + def on_cnc_custom_parameters(self, signal_text): + if signal_text == 'Parameters': + return + else: + self.toolchange_text.insertPlainText('%%%s%%' % signal_text) + + def on_annotation_fontcolor_entry(self): + self.app.defaults['cncjob_annotation_fontcolor'] = self.annotation_fontcolor_entry.get_value() + self.annotation_fontcolor_button.setStyleSheet( + "background-color:%s" % str(self.app.defaults['cncjob_annotation_fontcolor'])) + + def on_annotation_fontcolor_button(self): + current_color = QtGui.QColor(self.app.defaults['cncjob_annotation_fontcolor']) + + c_dialog = QtWidgets.QColorDialog() + annotation_color = c_dialog.getColor(initial=current_color) + + if annotation_color.isValid() is False: + return + + self.annotation_fontcolor_button.setStyleSheet("background-color:%s" % str(annotation_color.name())) + + new_val_sel = str(annotation_color.name()) + self.annotation_fontcolor_entry.set_value(new_val_sel) + self.app.defaults['cncjob_annotation_fontcolor'] = new_val_sel + class ToolsNCCPrefGroupUI(OptionsGroupUI): def __init__(self, decimals=4, parent=None): diff --git a/share/dark_resources/about32.png b/share/dark_resources/about32.png new file mode 100644 index 0000000000000000000000000000000000000000..91c2caf1c3c32a52dc722f3900addb264a9c7260 GIT binary patch literal 1996 zcmV;-2Q&DIP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv0RI600RN!9r;`8x2IEOYK~z}7otIl|9aj~GzqR+woSTnN9GW<`vY#wIL%p9L%2tCr4XRJN@|JT3%wf5e^ZT`j|KD-yq11Q-k z=&iY2W(x>~Vr9k{Gh=Yid9B(zQ*S(d1ZV-??W`;R19TnmooqJs-01Kfx#3L%WHTvh zO(<1eT-QS@FkXw5VwL=@5=+a4LZe=KxqSWffw@z^Tm;-tL}2{OzulY7rVsACXDl~5 zvVqwfb>^3wEZ%B$%rn8?zLb!*A!);{l_CpE`9iHY_w3ZMXC{HhT8c<-@ZTNUv2Ezd z`*&^UU-J#7=IS(CrW;tKa{&PnpGZP^EZtnDSeSqH%Io`{0?NJAkY3=s?;C$|WOx&2 zu9R3QyOv4uN+%Kl!_@Jz9OQcw21$%we47`je7aR zKb-{XfUy9w+0=8JM>cTcpDSIF6M_dyh)}9|ym4wJl-mD)oMbq?!$5YrkL1AE~5?;iwe7VyCE-~coEW@kNjMD8y*u{p_S#xtucmvYTRl%N6=O88AQr|B8Q zfRZGM+~{s#5-2JZI|tVFg&ocS60hq(_FBW^hlgj`_u^C+0c|NPOQGAt)>yXxY}p#i z)@Vy1mLlaOu+r&v*vMG3_8UpsYf%GNZ+8 zX-B_YXi{yMFbXA|k*$>i6{w@M|4qCr`sy2u2bq+iRxK^IzqJfzM#OAE;Kt1c^`?nB znIg=o3ObuoYZGWIAxfcCOo2dt;~5eO7t^XQ;BQKvWsH07=1Tcnuj2d9fnFAwOBGE`WO z#e0~MgDfL6U$c)3=u(4UI(CJ}=u`ZW}2n=`J06+~|bN^Ba? z6o*72k7!V!4o+oPQR+4e31$GO1vuwzvP^iAyj{UJNOWv?q)T9yRH($QvPM<&yu z*>se1TVXjC**?w0kmlNSiIc}qpE&pH2loT>z#LE_IHt!Br3Pr_FCTep{rE$7Y1{cU zl7My#)={40tyw9BXcZdKvJ`_kVWi*V?E5!4{qETl=YR9ieqaH(9tU4dpiQEgzx3Lh znZbKLPGtH&k7!4x9B`nRowjz5L!UuCf&hy;v#blKy93Tq}Y~AzYM-uBscU!4}aqXlxCDZ+bq7=1idC|D_ zg=RHBRa?4xHr8ZT0=F0Wf3Ide)JOm+{4;$zcz0qcbOVq&QIn|#@1N{)x`rYaU05UK!IV~_bEipAz zF*rIiH99pkD=;)VFfe?iwD|x403~!qSaf7zbY(hiZ)9m^c>ppnF*z+TIV~|YR53U@ eGc`IjG%GMPIxsK|`3yw>0000$92^`S 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 D-U2Fw literal 0 HcmV?d00001 diff --git a/share/dark_resources/active_2.gif b/share/dark_resources/active_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..b9b7f7ba7b5b8f8d86f18dad6d5bc9a303b4d3e7 GIT binary patch literal 30091 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 literal 0 HcmV?d00001 diff --git a/share/dark_resources/active_2_static.png b/share/dark_resources/active_2_static.png new file mode 100644 index 0000000000000000000000000000000000000000..86783b03825473ec24054c3e6c274cd1260a6581 GIT binary patch literal 420 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh-3?!F4n4AKnSkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP{JUl@}>1Em8uJiftO2@(X5guvgfh z@czJuIlp)uVmw_OLpZJ{CmdjG zSzxmH`72Gfgs>ZPcB=;;bej43-M%?&LMih(MP|QbNGUuw=V$%1Gn@|7p7;pN=s5I< zWwTmCX@djfi79>x$!s@Xa44)6O^SYc<|SLeY}P_cUWVp8H5Hv;{~Vw_swJ)wB`Jv| zsaDBFsX&Us$iUE2*T7QO$SB0n!phXp%D`OPz{JYHz-wYA$l(YLx%nxXX_dG&Sf9CA Q0@T3Z>FVdQ&MBb@02|DNRR910 literal 0 HcmV?d00001 diff --git a/share/dark_resources/active_3.gif b/share/dark_resources/active_3.gif new file mode 100644 index 0000000000000000000000000000000000000000..e8e440a96497159d9a302816335e8707e4ed0a4c GIT binary patch literal 31096 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 literal 0 HcmV?d00001 diff --git a/share/dark_resources/active_3_static.png b/share/dark_resources/active_3_static.png new file mode 100644 index 0000000000000000000000000000000000000000..dfa05202f8c4ccff0b82510da0bd3dfbf2ea7cae GIT binary patch literal 509 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+3?vf;>QaFeOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>;$W2!1wiuu|Nmc3gf#2g*rW5977~7m-astJEXwTdU4y#S?6M2fBWYz#kKRQ2OC7#SE^>Ka(;8X1KcT3DGHS{ayY8<oXTifEpM)UHx3vIVCg!0MlrvS^xk5 literal 0 HcmV?d00001 diff --git a/share/dark_resources/active_4.gif b/share/dark_resources/active_4.gif new file mode 100644 index 0000000000000000000000000000000000000000..98a32918b14c661515f3e9edb6af58274ad02b00 GIT binary patch literal 29314 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 E2dY1S=Kufz literal 0 HcmV?d00001 diff --git a/share/dark_resources/active_4_static.png b/share/dark_resources/active_4_static.png new file mode 100644 index 0000000000000000000000000000000000000000..364901ca7b46127ad70f899ee3441ab7484db785 GIT binary patch literal 406 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+3?vf;>QaFeOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>lFzk+__kAhD}K&~HJ9 zfk7gdp)$9lg^v!0px6qrFtZ&T+CKKy?CKYI-2C{;c7*oC{P}a|&YwRqC#HS=@af~n zPYyR2G(s80UE8vYfd;CUxJHzuB$lLFB^RXvDF!10LrYx)OI;(Q5JL+qQ$s5Qb8Q0? lD+2?siJ2!*H00)|WTsW()?j_+VhKd?h@9y8jXBY7BQQjdE2+uvZz?EUU~j^rNRTtEX)cMIGv6J={p~J8EI507VhB1 z>7}W#bkC9C3+yY}ITQ~>-DWsvdBU>3<*tM6lCX@mj+$4yl6wT4c5K}eZpM06q_=i< z)2qbywZVx!l{N+|GqxO+?G`T6yv0^koo9TQw`_Cxf&b0>Hk$i=FLKqWULz{WT_1HT hbn?nSpQIl;#as3V3*VA>z7Obl22WQ%mvv4FO#mRTSknLi literal 0 HcmV?d00001 diff --git a/share/dark_resources/addarray16.png b/share/dark_resources/addarray16.png new file mode 100644 index 0000000000000000000000000000000000000000..8b26c31000ad4532ff22878775c7bd74d9e4be07 GIT binary patch literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`DV{ElAr}70IT;y0&Nr}0Nl8gu zJnB%BlO^fcbVBOF&l7Bk!QEFGa<&~lazS@-AGZbi@yY#z{+f81@`q$v&Y+<`~dE22WQ%mvv4F FO#l`DH|qcZ literal 0 HcmV?d00001 diff --git a/share/dark_resources/addarray20.png b/share/dark_resources/addarray20.png new file mode 100644 index 0000000000000000000000000000000000000000..f5892d5c084e5cba2cc427eb3105c46165133107 GIT binary patch literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;Axu=U`h=u>z5J$cP3LMh*@6T^f z;cU|=x!7=daa+)>E`}ZJA20~K@4V_ExghoMtcYWAzR5dSKX^NzG7$LB5Ikk3)WcrO z&)3{$X}+3MSG>kWBSA#|d`~??_?NTSH@wkb&OY1ny7_0NW#!e=owro<{%&4b%58Rf a3j1F9!|aM{rt1Nnz~JfX=d#Wzp$Py`ghL7d literal 0 HcmV?d00001 diff --git a/share/dark_resources/addarray32.png b/share/dark_resources/addarray32.png new file mode 100644 index 0000000000000000000000000000000000000000..7e855a71b13cc200253a229314874f50dba1290f GIT binary patch literal 251 zcmV~%^+Uc(Dm%UyJAOqW?z<&bJ=}FeR z#?wP+2Urf8_hm*gse1@p6d?Cg+La!{%%TziP4z6I4BFX(1nfTz$xbQ0+abL-NaTJZMXSrqLg05&AVDFdK!QU^fJA}d28jm22@)0J8=J5fBKn+r7eax$puB4sklYL$`ZT_Csube}_+3 z4+?<*)9Eu@UH4&hd&AbjgF#pTOxkWmC`+hnFbKqCa$g#-O9dg)bO?h%kHtn1h;v(U zYh$z7!g{^(dZ4Whafts8P6#m`-$9aGl5IqT;5;xzg*fwiEl+{2!#-n;gK+H=)w8=o zxN3L3uFgLrYQi;DpX=0wPihi#T4SP4IF0NRbpV3yVts#Doq0c$8tggl^6MY~0000< KMNUMnLSTZ;roue{ literal 0 HcmV?d00001 diff --git a/share/dark_resources/aero_arc.png b/share/dark_resources/aero_arc.png new file mode 100644 index 0000000000000000000000000000000000000000..729f65236bd161914d3c7564f6a01d0e7d26f267 GIT binary patch literal 479 zcmV<50U-W~P)Y5QZn6kRKwc6)V%kO0*97Apy(VD@26|sU(f0mHeTQHrNEKfB_Xjnc&EB__4W} z*})0k!(^2*6Rh|IJDUl?Fj=L{L`Zzjxew=@YFMhp5fUN3KGoi( zR+uayL{St_mL&qIyicX5Kgkmyf)FFO5I3Yy8KY&hWpKT)1F z8Uyj)?MU?oB|8%|YyGu{s@lpH!n^YM{*7dyYAQ-I3ijV{hSOpug6<zKt=WVTm?JNQC%(6}y*M zV`~W^vMhr<&k;!Eej-iXF|!c(o)kz_2q}>05E39sAh#{M1Sc zfi^aq4;YPJNFd1}5M;f6hw=C|800J<5M;G_gXwe<1QH!$yZwZE{o=45;^KFFg{od`D;+%Wm?p7g+MywJh+^q$5E${{Q Y0|S2dwr}@>rT_o{07*qoM6N<$g3H6vaR2}S literal 0 HcmV?d00001 diff --git a/share/dark_resources/aero_buffer.png b/share/dark_resources/aero_buffer.png new file mode 100644 index 0000000000000000000000000000000000000000..41f26dd74baed6b0bf1ac630e71c7553cc6add28 GIT binary patch literal 512 zcmeAS@N?(olHy`uVBq!ia0vp^wm|I0!3HGj+vmJyU|>A%>Eakt5%+ecy*IO?z)|(N z6Zn-@ifUgz;-z@-8jpSntNc*LLs6y6+{G*TlIX1)DN+%NXZ$v}HmG&m$U^m~q zE%74kqb5;@Ko_p=r&wjgn#OZVSzJsm~zuCl@ z-wMZwY|$?$ykK|0)v3Ow?&96Iy_-YCInQS0o8_C#w6S0m=RW)3^;d1*<^8?Q-ECY^g)$a{W^I{I%`p?DntjS$M_q_T#`SXBc+9ik!4bFTY2o zb?;{ujn|j2-rAk9Y@N_9oihx&stZ=#bHDgM(RKgIkXzopr07+u;e*gdg literal 0 HcmV?d00001 diff --git a/share/dark_resources/aero_circle.png b/share/dark_resources/aero_circle.png new file mode 100644 index 0000000000000000000000000000000000000000..63e0c9bad96fd838c6c0c99d920876626d80a20a GIT binary patch literal 505 zcmeAS@N?(olHy`uVBq!ia0vp^hCpn=!3HElCJS6)U|>Ap>EalY;rw=ntv9oyK%4s9 z3GzZg+F{E&r)J3hQDi)QTid0TW2K6(hxSkBgJw5aRy#0ta-3ojpLX`?zO--6$?Gh4 z+@5>;d2M=m*?Lyq9Z|dq42>N}T??J&B!oCz>J0P=(kN_Fkxx!9Y$BSysHetjW&F}9 z!5inWxqGzy*l+!N+U5hdR9ieIv0O57RZzcQEOf=kn78qKOk+iB0qY~#L#!SG9C;HG z1m-9>Dt^0f|KZOUkGQQ(P79=8e`P!NI9$l1fP*D+?Y;z~%GJC=tSn7B)8`w^_RVgr zXupwHej#tZ>?=hv``@dAukLkHIFRv$>A84#L3#Dru!DOYGZ;dm@?AAFQ>^`r3ST{FVV2=}xA68` znVpGz_vXAx$VLksMhLZ&a&vt{k~PXZ)(oZesXK0 z#$1hG)hTv#1;PfqLC)srz*x$cYB2)lk({nZuA67aOPM0oe92c@^&9R4tx|KadB T>>D)&7^MuJu6{1-oD!MAp>EalY;rw>SelKQ6fn(}( zC$LYv;-z)@h}RZAJC6gOzHtRAI%# zK&?0O>=)j(yLr`Fr|w(m@>T4u4hSZ2@67wz-hn=Q%`isrJt{T`^;6{A%wwB@!6XW+818F?HoGxy7e-rn))pv~^= zotEY U&7M}40Hc(_)78&qol`;+0F+zY5dZ)H literal 0 HcmV?d00001 diff --git a/share/dark_resources/aero_disc.png b/share/dark_resources/aero_disc.png new file mode 100644 index 0000000000000000000000000000000000000000..59f32773d8d94a015844404db7ff4de385441f62 GIT binary patch literal 481 zcmV<70UrK|P)As=6vv-i!4FcLTb$}*r($REg9sgS8A>f!a1xi|TKq!dDqWi@9-+J zs(Xb%fZ^~NuC8z3zH`gAf_sCo0GPDhicp4-YtRcszyFXJutNnQ+U+}NwVEt8yg;OF z#jTC`d;zoBTk3?i+xUYGf(rpY;L=29b4OIxC1YOL+jC z16Lv;s0oGGpWoF)p0729?y1C_aNk;4DY$#A(oO8jK)Bzm^6YX;Y2wt$q!6bjCUyTW XwTaj{hv8B?00000NkvXXu0mjfs)5%O literal 0 HcmV?d00001 diff --git a/share/dark_resources/aero_drill.png b/share/dark_resources/aero_drill.png new file mode 100644 index 0000000000000000000000000000000000000000..0f166d956dc026524716103097370385a257021e GIT binary patch literal 461 zcmeAS@N?(olHy`uVBq!ia0vp^hCpn=!3HElCJS6)U|^i$>EalY;rw=nVfG;hk>l~( zn&g*QY%jTV)bHrIOZ-YDXHqqC4>nES(UJX;+cW&7(p(l+-PUR9wgMN0KL2~K$E)wH zaA)s_-~Z!^cB+IlDz9WQfJZ^c)hyqww{Di%J~^8IUt`lM_SS@kxc4*l^rTB}?`vE8;GlvHgZf*0 zR~6kY*#;ag+pG7RK8S8rj9M$5Wwu_ytjR&KxL3qpXIjr|KVypOgDv=U;Fg(|HoB+UibZ`Hr)9C nw>aag{$9>zi?575mjBpG70y_)Y+kzo7)=bGu6{1-oD!M<*+Im{ literal 0 HcmV?d00001 diff --git a/share/dark_resources/aero_drill_array.png b/share/dark_resources/aero_drill_array.png new file mode 100644 index 0000000000000000000000000000000000000000..0cd39bc340d8744ed2bab075b833f7d4eb763adc GIT binary patch literal 492 zcmVT_2|+PgsmuwAe9pOF=bWlos>u-&A^zWL zbEzfvE+Irw6i}8W0;$ZWl61SwJOqBz0!a#?1(F;>10)NCG)OiGNsz1%U*A9QaDT_% zwX#B>8>`g^j7Co^kn9i$vRuByc>Ej ih1Uye%&u`&yVD<2#|%g}y<83e0000A$>Eakt5%+e+MlWVZfj0HI z6WAwS>6)6Eq#DI8uaZz%-MT_Raq1GzOjUi6oMzt*ToM6-Q#kcpEYIF8w6-??9xu#s z@@?(szt-D#>t;Q;nx$aOxJ&a|qSP|paE6a&I^Wr)d=77U$fa|Q>%?XqoPIi8s{g$< zdpPge2i-@7eV0%6I(XG#{q^-%^4{lO)87;Evo>^RRxsn)1BV~#%F4)H{&~~$gJ@Jq z2LBngzn4s0mTaFaELvr-WW--cQ+eckzO4i=EPQb@#sg`DbF<=5{aX8QW!f zf307v+4kt`O~6hw;W+?_Ih!FeM$pgY~sn^|I0sQT>7$Za#-<&-3^wx%NBf= z)1KXYZnL2w^IY|7S>Y+ERyBeN!o^naZNfI5)=D;cZSSgk{a%UWgDB_etbKfMpC{j3 w@x0PD_3rI6+N(VtGQ=*4D*czM>|4)RvgnSx!_+7Hfw9Zr>FVdQ&MBb@0B%0;+yDRo literal 0 HcmV?d00001 diff --git a/share/dark_resources/aero_path2.png b/share/dark_resources/aero_path2.png new file mode 100644 index 0000000000000000000000000000000000000000..80a83881f9310c289f5742813e481637426e3ea4 GIT binary patch literal 500 zcmV=bpDK8Vn9XAe<Z^JWydK(TGt2gS6dK;br)Z1{lSiPgw+d22`oQpDkltH;`jQ)KO zeht9~l$(puS(Z_r=R5&HuOsMS#nnX6{8?zY3Up|=8gxjwDs(8gI&=uQO7zF)7v108 zdRx_1qB-r=>WzlOM=x--XofGBuQVDx)ecvUX82<9LX*k3R=67Udi_q#=Fw*V!kd-y ztIl1U3N(WUg9kb}J)^73bMHH}=x70RlCm}RQR!lHqN4l#n@z$}T}F4i7u4yry`~)% zz3s21q&=I>X*zwbbpeyKqoH>lO);>ORHA(!Py+3HhP8Y@lGc)h z@9R*Pv>Xi|3g2gst`2=DR(|S|L+=YWm2~kzLRI2s(N&L(Orrm*xmk1-+%$R@JPCC9 q{x*-^mUa^8GCUb{5uOxUHZMQiP~1nqXZbS#0000Eakt5%+fHMlWVZfj0HI z6WAwS>6)6Eq#DI8uaZz%-MT_Raq1GzOjUi6oMzt*ToM6-Q#kcp0y!S0eLsJv{;cDP zx9`mF&ri(1JV7e1SIUTc;p?Qi%Q9~jvP$G1FREW~(Ztt!9mC_d5qi>+kIz;>*}Khg zu*{KF!}qu3w9_y)jNNe(B9S(Qo5RHh=oPs^~f!vExAN=*JaD8Wxr2cDGPhCKTdb?+m~Mg)h4%lNk?p%%lm8p zV$IffW%^65-ZI~~_VHoIXnBJJPSJ7!Lbo>U@<_gHGKu%})(cxwOD7&%mZ>5=Eqh_+ z=~qgmdKI;Vst0PY^*4FCWD literal 0 HcmV?d00001 diff --git a/share/dark_resources/aero_path4.png b/share/dark_resources/aero_path4.png new file mode 100644 index 0000000000000000000000000000000000000000..5cca6e2efc28e8255674b754604f08c31e3d3db7 GIT binary patch literal 481 zcmV<70UrK|P)78+toV z0D3zv7t%Oz&cPhY&tO2t}S>tE!^9t~mhJ_fUP<<}``W{GB$q321F_Gtipgrl7UJ%|UB`n}mLSd#9_*i)>Tf zBs90ZTt3ribdv?#EHr~J7Ed%D-zEn)4b9;5`6EpxcS*s`K(AIW)Nb#r_b zwV8ls;NkF^_Vy3y^yDb}4y`zJ1m-5=)-;FGo8}aS9t_Uc4M%kuy4O3VZucN-+eM*& z`)e87p3NR;I=xRiz+&6Qp#M6WV(5PVj5?j&Y;Bu^);M4=37z|Z641F5PIdoyz9zlj zRyO_LlT<)UbEakt5%+ecq4!}2k>l~^ z3*}v`wEfCfPJR*dM}hTt3|rtrC-s*~u}kAu>=2v&C}hI|C5`nJ1#RAwy(jOUUas%G z(6{>M-uwUK-d*BzsVGrOVQcI=x@(5m(ybAd13wZAX@1@7^Bt%3V`5<&Q#h(lvo!@2~zgt&k7!*K6^c#B#~xC{x8=zV*#B z@47fYuHJXh)8RLpI`doMIU-y13yLn-9q@Fjud6+L_pNVo>|7O-TXE~}CmK~|u*}gh zX<8qaZ!p*H8lRt()WPYe!)KhGm&K~iy!U2}!}jV8vHKq+sa9XvnWfCwd*Ja$TN&B; zhn^mde5}3Y!38M^-&adBg(sR#78a>8*>z9q+C|qF2Or4%`a9Wc+v&XUW~bZRrrr9M z^pWZF&*GPC&o+hfvd#UT!KGhkv8O5S{e_d;w#6JXvwWe&FX40Hn$vE(1!tPX8Yi2) zWy)n1$?#^4&aIk$F?K%ZmeVm@wRso!TrFq3J!|jQWs95jn9rOmiF{%6;o8yLtQJuj z(iWPRU9DBaPe1#gmL{&w8oTA@4fb1ij!kMlw>en!#<%K}g`0~FrCu!Bv3ng?=|hj% o=el=k=Y0DU=J1|-=HGw%pFASMW}JM~1WW=9p00i_>zopr0AvgSEC2ui literal 0 HcmV?d00001 diff --git a/share/dark_resources/aero_semidisc.png b/share/dark_resources/aero_semidisc.png new file mode 100644 index 0000000000000000000000000000000000000000..498d6feef32b15c2a1d74fd781f505be1f24c22c GIT binary patch literal 469 zcmV;`0V@89P)Lnof)L&A6?8gn5gSn;emjbj zjrn{5v)N0nA2iuehxqH_gb=;nEwoyvY#YfSBri-!AwsUVA!7_8B&Dij=uRFok5;?v zOc+FnzF1>IZ1`ua?Apm+djAV8dkFtOtB_M}mL{sUtwB^xOl$l%%qheEYac!i4gyHv3H3T zww4egNfJoY6oEwECsH)qW)=dUNr8BUkOJ`zApsHuf*T|l1Sd#Ph~NDIK6>xuuU1e9 zw6WcO!*KXX0tpU*AnWx8#^X_LkSHJ!WVu|ybUMie;vHhQ`+;)#;j|v&;&*=KS=GHl zAi!YIho|Q%w3-dJ72F$y1;C{3R)o?*S%Y36I-TyxfNd3osMlYiR(oNw;RWK-R@~ZH zEWThqpIx2Mb}N5tJ1-7#?cjueuHAlvO6BpUji@194@}WRxE^ma2ds;o6Re$F0J65C zoD&LhmVmaCYfDgmr(Y*ZdYoemVZtSl=qL8wKpX)snbA#>EalY;rw>SMlWVZfj0HI z6WAwS>6)6Eq#DI8uaZz%-MT_Raq1GzOjUi6oMzt*ToM6-Q!Hg7rg?9=bLL%(!F3s# z-NoPk{(tlK&6WoY>#i{xG&sKL?ta!{skowH>Es17)&x9b@wPj7@>vVfY?q#zb35ao z#{_Mh#OChN@?*bxb@-+OPlTLATp3d%l>#PxSLJ-QT+;Eu<`9KQ#h}KNb`QoyOp3gV z*c3Szaee&ymzn>2`J4UIv{-g+jH*45@#P3pV7tSFr=MhxJ$`;np_;K#q5G(`&+^G` z3O5z6z4p)8-oNUvfcgFpS({d;w>mUD{2=J(cmCn8S57(X=h++?R+vmxnj`W__6(Du z#GNp{fK>`E>&rRszMI)09jWljtFS29uD=1L}i2u4_6Yud=&Mda8=H3r}e&d|yojv!%%H9O+c(x|+_Vv)l8&m$@zUI1P#otAr Z`0w8RW0~v9!wig722WQ%mvv4FO#sYE<~slY literal 0 HcmV?d00001 diff --git a/share/dark_resources/align_center32.png b/share/dark_resources/align_center32.png new file mode 100644 index 0000000000000000000000000000000000000000..3abaae9c1b834a61dd5499794bcdef8d78fa38ce GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJd`}n0kO=p;Qw{lm5=Wjq|6bg? z*vepT>Vc^)3j%r>=Qn)rpI~xQX%|Bs`-z|L?|kLhv35d<$zOpNOa)B)*FMlKP(I)B zE&hP;iL@tupT+LT?ppg|{{lP4@7L~szrOi_HRJZONasJnJ;Emhc0S(0%Dqj%Qe5Qb RbZ4N|44$rjF6*2Ung9^F8ti9?4f)=6E~JU8+BiSP4o-aX!;(J-HJ^Z)yI{~Ju0Ba*U!VOQgmB@1|57$;S6 zR{UqW&+syM)3NzXpLRW2qQK00fp@~3JJ%NQ+>!J9_LJe{KP6^Xg;|qKt2p9IbaeSU T;}jZ!Rx^0I`njxgN@xNAO#4D; literal 0 HcmV?d00001 diff --git a/share/dark_resources/aperture16.png b/share/dark_resources/aperture16.png new file mode 100644 index 0000000000000000000000000000000000000000..f836c9b03a64054c4e27031bed8c729ebd2690d0 GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`v7RoDAr}70DGLM)f>z9DJlxRM z*7pAgPi{tr!^P%9ic2KZ3^pkiFi$XT77;MwN#h7(?%)*vCBd+nb#{425#v!d0pYpL w8Ul{zR7Jj52n$V8`RO@x220Djwnuk37~KEa2r9n$2(pjC)78&qol`;+0A=_uF8}}l literal 0 HcmV?d00001 diff --git a/share/dark_resources/aperture32.png b/share/dark_resources/aperture32.png new file mode 100644 index 0000000000000000000000000000000000000000..c155cf1a9d491681a424bf08d429fcf950c9349a GIT binary patch literal 296 zcmV+@0oVSCP)u)lEnSB&kGm~?ceDq^gIKrtQ zDZr?3F9-z4#937%aX$bkNflh{y zF6NAGod8Ppy+5Ji0t8S3v!TQaiA6{NK1exgtyV68<-j`~C`XRX05<_IdqX_Zk^@yx zo#(1JD&#q%_)FKcPg%+Sx{PK)^o(-45BR>Zt9i;of?V*nw%VZF6X|sfwi;;-Xa5B| uzRz9DM;&1m%PnBm&U#NM2J(;TMonY7>)EP8RqR=z}(F0AyLVL&S%&EH~}rIjIH_ znfVd`K8fhrs6J?~pT-1^0boHycVoltC+d&^kfy1tlv)$fx$W$35WMyAG2p&wnoSsn?{OR-2_bF) z;MH~AweS01X0kn?>(OzXN6+(wQfd`N(T8m&R-h<~i#*StrdHhw{4CP^Ri3IeyM_Nk Y-$rM05%JHl-v9sr07*qoM6N<$f?;ltUH||9 literal 0 HcmV?d00001 diff --git a/share/dark_resources/arc24.png b/share/dark_resources/arc24.png new file mode 100644 index 0000000000000000000000000000000000000000..a6e15d91e4cd42f57886fdadd49150fda87ee63e GIT binary patch literal 445 zcmV;u0Yd(XP)~a?V$Z0`dXS0>Uty>-YN~<#KtxUax;m0!i&MUL+~yn^J1S^SoCZ zU^L886h#NwIv2n#09=UeIKksUq&Z~$m4r8=JH4Qv(~0j*YRtyC&q#&Nuq z_?fZe1rhg&=-uV;jeu;n<2Zhb^s@U=^1cQ n;shx2{^y}n|5)Qx{C~hVw;QGz;&JN(00000NkvXXu0mjfj`hOK literal 0 HcmV?d00001 diff --git a/share/dark_resources/arc32.png b/share/dark_resources/arc32.png new file mode 100644 index 0000000000000000000000000000000000000000..391325ed3e9d3eaaa29ac6dfb803c3a8c9e2a038 GIT binary patch literal 625 zcmV-%0*?KOP)y$|1cc|%z6hZfu)dw|#kJkR6F ztMNSVpCx4lh?|q$Ld^}BM$HS_HNY5@7Ge#UE<8Oa^CmJA&}y}gxvu*q48t3>TJ4!> zU&MiI(ny?ct@T#`8&b-Kn-0({@UHyVvDDWy)P z0mP*-D+Lqa8Z$o~32CH?;omGtH0t9 zQQQDliRcc19uchyAvR6m=-dd&ftk-LrQS^!U0+{6?>J5r_i+G^a=F}^>$*Q} znp**OhAAp|Q%bopE?lqI^N!;@AfhDzZ;5C{2=U3b@%Vej1fu=kZnwYpdcDu3Qt2Fk z1NnUZ7Bfe2|A;1C2=Ov)<5Ymj;@xidTcJ=mOhk`|!=YC$m;3WJx4MGq7p~LkY!!>e zt5V93SsKrsK-@mh0y;mbJ17H=jR6k-0UJcN_-J;@V4ZIcrR)m=dbW!OH zIScwob*c-Z0GWKl0T4%axeE~Dc4GczCbS~yj^&7%(7GW_0JJ#2ExT>^%czp?%pNxd v8Dp8XZUi#MDr+wQ6$7X}>ZpVg@a%j6_1Xk5+`xK800000NkvXXu0mjfvneMcQ;>oZz>ij`+eDrI`lw{+6$z4I0UUB=+)>gTe~DWM4fO#D!Y literal 0 HcmV?d00001 diff --git a/share/dark_resources/backup_export24.png b/share/dark_resources/backup_export24.png new file mode 100644 index 0000000000000000000000000000000000000000..5e12a21ce4699092d785d479eba06ee2d9057dd0 GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gj6`n4RAs*guryk@xpupk$_5APW zdNLknyobAvamSh3-CA^|sN(A3@6#C>7Pu~8uq(gE{AFszs*s;snpjpW{qFS5Y3n!R zlv|d@Dc@uxo)m~@Dt_^v_cclKK$MHNhrvZZk!&KsMX literal 0 HcmV?d00001 diff --git a/share/dark_resources/backup_import24.png b/share/dark_resources/backup_import24.png new file mode 100644 index 0000000000000000000000000000000000000000..9c510a76b198a66a8824156f1f7906359e8402e2 GIT binary patch literal 186 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gjjh-%!As*gurv~yJP~dR>`fTq{ zv1v0crt<}K{=N_|JTKR=h|A7$M_m;ogN$+jL;tMT3~#+nLS1)89%K{ozTUc~_0+ra z6IXWrKig=YVm2fA)|c#8ng>3IcKpv{4P)RApPRzH;GXPd(FpP2@DrbI1vLD)?Q}-0 k^vnOPhYvH97v5T?J}0(UT-t514$v_Sp00i_>zopr0M9^4m;e9( literal 0 HcmV?d00001 diff --git a/share/dark_resources/blocked16.png b/share/dark_resources/blocked16.png new file mode 100644 index 0000000000000000000000000000000000000000..79e31c3faafd1742b7b27e9945e3c39fbe7fca0a GIT binary patch literal 2188 zcmV;72y^#|P)C zB8AG2b+HiYC{o7Mx+60PNGm^N+0p=7RxGl+gp#oE2F4_k_pi^(y$tcV}m(zd#^}qzYnbCoBR`$-eBC?5{Dg zF^ya<_ZtL3LHjgnM~H1oSgijN~LNA0K9ma;w^P06M*30 zVArs)u%9dmLlESMUazkK0IXQqD3!`u*)3T>$_FW%VLBQb8UlNJd%FzJOaKA`0z^?! zQB^R*j*gCosHmvp85tQru2kkx6fO4h@~ZFd?iPA_dZxqT)YsR4ESJl(7XT11Ze3m7 zwfOk>1ehU%!ARuscy+0%sk3wd$Qpvd7mA{n_6k>&ig=_ELy?Z$%BxElv zUUzr*hTFGqkC*_&$H#B<_4WNb%s?)emk0!cYyiM>ssJ=HU(Dz8|6~wP_y+*6#>dAq zTwPs1fyL|T>DeQb$z&z~adB~x0)gObn1M>A`e5zawN(HBoC*L9@pEM}F)`6^?mIU( z_cuD7t_>EitE=nyojZ5t;O0x{z<~oIFE20X3p_hJ`&M3F-u;yjZ=88!{}(P?Sg+A& zp21?ax3?Dr1qBfmfy@IOJb3U3pU*Fa8EB`qKKXyle@q5IBl8Q&#@u&KPL8vkot?@; zM=aj4W5+RK*Zv2v|Dc$^k^d>oU}k29UszaZwSCeMKUX%EGH-~Vot?eL!NFk)rl+&B zvm`JuFw+D;BoZC=^z^(8Gf*m(ex;?Q{g!rMxy2K4tN}cH_^>D-AmF$Oz~SE=PJGq< zRVhs5qeqXzuV2632zy3DJZae&`%g+r^4PFp!(6L0|Mm6tedOoo2TTCYoH_G0i^Xb& z89aFKAgi&l@uK-N8saIHjj{ij-7)XJ@#{DK0@E`(I(pd6&8^JjCC<;!=WDgvA(%mJ zZEbyGVq%=}D7%v42@S!)!Fgd}VZVpz!EyYZ^XJdcC42rQ1^_rUG&J0diHQk?88tOE zxwW;mDTrq@#M3GpLtJZ9L0MVZ51E;n?;56pd4S^LV!QTl+w;7AypO{Gq*CeWCr_Rf z&=7C&BSqGZw{G3KD>gQE?n`U_Yi(_<4-XGdIeq#xYO({wc{MjTHwweBuPg;9DJk(5 zi^V^X2`~(1WUUhBXUmo?wnCxM;z4P0VltEK%>B%8gf$tbi;9ZYOQq7Q(b3V+G9nXB zJSRqC^Vx=qoneimqoX)0D+~HPs=89uFUgYZKX&ZccZT&Q0001c6h+h5tXWe?C#Yeq zA@i`=hKfJ3@*El(`qbCg_d`SZn3Rwqz@E`Bj(L!~iPU8x$7 zWJ%Id6uoae_$@dS0|3}Kjwdk~j1sBDxk&(eFdD z{FRD|BMAu!esm$0vYrs1oRVD4lq8)M_=K#bSl@%lkuH?zjAE-@biIdN&B+Z~pepzU}_o zTUabs8=K93oRpMAshiQ-0b>xNLtz-UiN#`V9~l|hCjVaUGcYjV{=Vpa=zXSnCMzo| zhkRc5QTPe`1~+Zm^fwzDo1PahUJOVi5|pfD%ze??0b^rgdabCaaM0;=ZZ#oopg71S2#I2{Zp^k59@TgCu+6& zAE!>8nxQM)pk>hj#xOT-++aR?_RQYV(a}+>)pD6k<}WY|V>6jd7J?uMj^jE6LDV>o zqk6r5lEdMkt5>gnPFy2WsdH;QYFCv literal 0 HcmV?d00001 diff --git a/share/dark_resources/blue32.png b/share/dark_resources/blue32.png new file mode 100644 index 0000000000000000000000000000000000000000..ec85382b849d530b895e1463e47aa7021a549d56 GIT binary patch literal 459 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fgp&Q^6;tHhMMgOyk|7Q{X z4`Kk37znY8Km{ROAPH2t;`-E?K#I2{$S;^dHLYAF`&X7)YQ@h?;fU~MKncbqZ+91l z4pvzYAcwQSBeIx*f$spbo6(| zpPf5W4*Zfh{5N&$t2w*m7XsBVCV9KNNR_5PF#>Wp3p^r=fs_>pGk!>!!E$_LJbBy%u^>gacMem{r|7A%(u-pvvvYc!$;4K zPGf2C;%Ufudmeb+_K`HOV^WdLnbEpd$~Nl7e8wMs5Z1yT$~28Ncp29~;prXhwFR>r1Q prY713CRPRpHA}YqMA49&pOTqYiCY8jPabf{d%F6$taD0e0s#0Vh0y>2 literal 0 HcmV?d00001 diff --git a/share/dark_resources/bold32.png b/share/dark_resources/bold32.png new file mode 100644 index 0000000000000000000000000000000000000000..46a46d9a0ec5573d70b858b1ec75a7e4f5707465 GIT binary patch literal 589 zcmV-T0b}{)w?$ zP!NPpg9}&I@L+^S>&3)*;$|LXlhmv4m#^wo2!jhRc42)W0Sbk}I{R&K94~*ABp)DiA0L+cKgFGjs(c%axwt8?sK=>{Tdn|o6X7s07SHUz21We zf^;C0$;bro`u%=16hJzi76EwN*1cpZ0Pst=5YZeA2EVBQ(t%_$DFSE>hr{drM5$Ej z77>4n2zVJrqY+sK62LGFA;5S%J^UBmg3|rqk&GfTn3zi1^AFBZrrwC^wGdJO=IoRaHd*&y2CV&xy9%ZJys_ zjENf2QxrvYU6&k4WDg_~32Da=0Pbe9+4oS#FdmOf0pKTNKA(RJJqaz#`e%SN=53!YbP4>Xn%^^NP52++6bD51^IT`|0YCAx0vr?e{TiNP^Qn6- b{&)Nb^v?AmPy<#N00000NkvXXu0mjfu&e&8 literal 0 HcmV?d00001 diff --git a/share/dark_resources/bookmarks16.png b/share/dark_resources/bookmarks16.png new file mode 100644 index 0000000000000000000000000000000000000000..63304362d976cadedfce2e9f31743ee3e1021f1c GIT binary patch literal 136 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`{+=$5Ar}70DGLM)f>z9DJlfFK z*7pC1#ElCV7_PfZGf&8MC=)!>$`Wgk#lXz0!*hYT_l1MX6furtOjmgvzH^;PXwp-# imK7+nGOO$=R%X!U4iTKN^MpLmXa-MLKbLh*2~7a!#3)e! literal 0 HcmV?d00001 diff --git a/share/dark_resources/bookmarks32.png b/share/dark_resources/bookmarks32.png new file mode 100644 index 0000000000000000000000000000000000000000..5bf9f69830a0feee9e702759ff220556d9d392ea GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJm7Xq+ArbCxr=R6wP~>QNeYW;< ztd)e~KOT)M2lu8~)@58iSNL=G^w0fbAIun)erZ*;bewUDWjfFCLF)rYA!8{mN8QHZ7|W&Uv`IEXZn=RQ=ALFopJJF%{ZC5=<=-VQ8O9Ne%8I? z@kWx_bfJyOEG`qdc}#W!dnZibd}y4=l<~>=P2GiQ{ffVW{LB?+X$XJ+*6+E@sN{Vq all|P16N<9@>NkLnX7F_Nb6Mw<&;$TQV^wYd literal 0 HcmV?d00001 diff --git a/share/dark_resources/brown32.png b/share/dark_resources/brown32.png new file mode 100644 index 0000000000000000000000000000000000000000..3e2c624588019b487e1e9be17058fe78118f7fe6 GIT binary patch literal 470 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fgVG!UG;tHgj%^4a@85+$P z8jKhkO+aiAGGl0jFo05EM!hLeEyG?dQzan9TN30K%%GZ9u9E#LOD(nHXQpsO_%fgb zW0JSK3quF1tOt<8S>O>_%)r2R1cVuhc^_ zZV=?{*?Hp6?E^b>oW)Ks9@FIxN{O~gP-9~_Vwh^&@%+_1pxLS=t`Q|Ei6yC4$wjF^ ziowXh&{EgXNY}_H#K6GH(8$WfSR2SNFnHF|*M_1YH$NpatrE9}={L=+fEpx0HU#IV qm6RtIr81P4m+NKbWfvzW7NqLs7p2dBXCnnv#Ng@b=d#Wzp$Py%bAfLF literal 0 HcmV?d00001 diff --git a/share/dark_resources/buffer16-2.png b/share/dark_resources/buffer16-2.png new file mode 100644 index 0000000000000000000000000000000000000000..7ac3b940ead5d3522b26ed5dcbca0a485a00bd7d GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`(Vi}jAr}5yCpvO5C~&a6eg6CN zq7DJiFz&rADu-X02nsUP?wiPT;me&YqXyf01ycs;%W7BtUuO|ZxbDMziE{?;tOmv{ wo$A~o2l{@neDG;8tz)*CYU-|YeT6Qs#NQY}g&Vxjfz~j1y85}Sb4q9e0HUWbwg3PC literal 0 HcmV?d00001 diff --git a/share/dark_resources/buffer16.png b/share/dark_resources/buffer16.png new file mode 100644 index 0000000000000000000000000000000000000000..1e215e8513f90044e29e91bc17ca0780d31a9a17 GIT binary patch literal 466 zcmV;@0WJQCP)(7#PXDWu};lj9f7wB@<;rCZ-+{ zH{?wW2rcbjryr;O`a5Uuwf5S3?E!zEahQjtn28^Fj{6wH&o*VCmp=!aF#}KW3IPnz zTs*=k-gJ2_Kp3~;7H;Bm4}3D#VF}LQN!~kvFz?3&-1~>D_G%SYV+8L5kZ&&@<4Q$N zz!Z$f*97*oZ^Jj7OY(f|#BqEofMqyTWd`UvE;nV&D$t3PcocHl(-wwK0>J%BAZiQ zn#V}U$WD|ej^HSsRZP5*yQ=}n2=~-j-d4b3>?>)R$Q`7@xH2bB-4%k)2Px+Z&NmDb zF<6buC_4*>eRtV=v;&xigVnUS@P8-Co3IEcL)u!oE9(KS;bo6CyRZ>MI9>AoSh-`2 z-`68O_)tp|*6EmpyJf1#{eAk|*xgUX!kR!Dmow0Cr?pFU~>!u>b%707*qo IM6N<$g4eaq^8f$< literal 0 HcmV?d00001 diff --git a/share/dark_resources/buffer20.png b/share/dark_resources/buffer20.png new file mode 100644 index 0000000000000000000000000000000000000000..27208f5ce8aa97cdfc91d3b034b058808fcb4600 GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;Ap{I*uh=qT0N<&jyTibsFGs6;R zXJ%!y(gMdIUKYu=vjJT^N76L>m^a?+J1hR;m4}hQE2SwL{{1p@oSG`)qvoN2r-42HVOC#oiKl?39zL#<1m6iRclg S3C2Ln89ZJ6T-G@yGywoozc z`y5_T!J2y>$h}&s@MS^e)}pPf58ge$E9nZ+~#ojLH<> qY4v07q^*o!f91KXTy7pz@-B2*@H@7gu1CT(5HD*x>ukBgF+T%W_9bmjwz>1*EwF-$w-70r5_ zVg2dDZ`U99NaNDjXf$!Yk?o5|O}`dxW3lM0_~|k8vW&Xap2~)JbLJ!S7zJjg>CD}z p+}fquHFf^y^Lin#Z>{~!{B!BNj#l{-PC)lCc)I$ztaD0e0s!E^OLPDL literal 0 HcmV?d00001 diff --git a/share/dark_resources/bug32.png b/share/dark_resources/bug32.png new file mode 100644 index 0000000000000000000000000000000000000000..166aeca0fed89fd53bc555b54de82b54170590ae GIT binary patch literal 341 zcmV-b0jmCqP)8L~{vQEkr&_X10ya--#q9-TIA6YhW>0BvO>J$!KP?SQIiSC1s(+U{NLmi&BVE2BFM0tV})@2F2hjt3d|z z)cr=@lT+l>sna=k|L3}|>pBIWR|lH$_T^pHV;L@SkUkc^OibV!O*w!oG-5srkbrYJ zfJwan8{iRjISTG#^^L3*R>H`8q`{Veod>u!46MgR79j0*igv7GAOPvKVeF$d6l9wC zikC=Y0aF2(#TZfo6>*mUMzM$nJmDEN0Z86dq8c|C&q^T;_x?peDpK;`5M5YDcPQ9J z6;AMD4~i)~;PzVzeb~wa6njvPWlV>H84N~CbDOw^5$vEX07vM-5{7=N@-{kghGX;x mU^8H;SbJf1NsPbxoj(8u;ZG3;Cz>+=0000HL1yc4G(b~lMt)OP;PGlh@S*tO&uB)4zAR7v&LgqR<%)2BDdU& zd3c7-B!`0-*c80Rqxz0NCGHkCk!IxlPXL+90KCE-gy6I-aTD)HBGaoiSdnW8URAQZ zUjR$7dn5ou?fNp-|7Fm6|2ntmbX6FgNAt(9uz+%jBz{r`H>2hxgSVqarg<`NRgb&) pU4WXN%xN|DqxR@`se0JGzX691gBd%rvmpQg002ovPDHLkV1hp(!ZXp^6Aoa*X*dEN!k#KMjT0x1abjjS*KF_y zja6zKbnatue07{K)f}ZhU~+TCisyOWmt|=rGwf_wV5pHKqa+4bRdsHf=7e=RuK~QaV)f z&vxKcw7C(2RwcF8XpN0A*S_x$*b^42alBSjI~)a5BS$XP>w;nMELd`RC>;)hm#C$t zI|-JmrNDm=yi~1IZLQsPU3Y_gp^85NhIYF6>BC)*(=;9Hy1vAAcP~uqAIS{W(*OVf M07*qoM6N<$f(bX9_y7O^ literal 0 HcmV?d00001 diff --git a/share/dark_resources/cancel_edit16.png b/share/dark_resources/cancel_edit16.png new file mode 100644 index 0000000000000000000000000000000000000000..6e20773ff6eb7dab382f90425b95a74f23d2697a GIT binary patch literal 453 zcmV;$0XqJPP)g(DJ)yti7dOehpObGzLxs@1B|Znr;XvzhQyuq~k9??X`(91e%iN~I!c zn)YOc*a8NF0ZOG3ve_&oNzzqS%@9JA6T}vv>pJT7It;_WbUKAB%dd;Y;{GbY@AsSM zfk43A2_e{Sx8@QA;bk(JJX{5cq6kgX%-FqNFH)%#mdhn-wHngtv^`+I-y@Mofa5p> zgF*CqJv5t5_yRaG$_j}eVVohh)kvbF1MbHMYw%yHbU v+wDFNlNGSr?U?m?{kB@I9)InFzfATw+12L}w&It_00000NkvXXu0mjf{*}Gm39L7H-O`0a;wQsOU8q#Ml)TX0$5tGR*wOOzraYgT7z|f>a6Jn^uWJ5cU7z~w& z#MZ=ultGx@WDs00|C^BK29Lg@y@^Q9z0UVLU%v0$Lxyj@WZ$fhjQ~8)&m)n@yId}p z?*Mru2!f2`xL-Wa@3p9{03_UOHlbFlw=y&u4b*Bidgga16#B6b#6JNn77MPgueSm` zJUk#0iQx3~bUGXk-#Lym?h3&K;PLSh;cyt0N`+u&!C+ASr2tP)Pw@Nw7>!2AWHRV< zI-+B{KrnG2kx0Pf@nAe2i^6WV8|UZeJ3%l3NTpKf_xrfNzZXR(lL^db^Q>O4Qz(CK zbAk!L^Yb%$y&k&VE~vHiAvdzwtPltUjt&k`EEW-sMlqYsAPB2z+*0uu)| zbu^t$i>@5pfiDAid3mAD2Di7jYc)SUK9I}h;PraN`%E1u6bi80?NBHbAP^}8iJQ%4 z+}+(_KA)5AYyoKEi;D|!W$}1?1>$dUx}VSIQLR>~1?)0F33oUgxV*evfzWET%at$0 z%jGi8&d%66K$A-$VzC&MN+nz_mk32GUx+i$z#?^0h{d>6{9phyal75d)zuYzKHstp zMxzlnn{A~XOk1#+SsJ*-xHOmtaX>0gou^P542HGsVCulSs!`xnD%IL{&_2Nwz-qNF zk7m-qNrRb8CdHgE-3JDP0d8(?aB_08QZ;EiUSD5PDwSX|nbn?Jl z)oMYn*Ry{YYUNXV+DQ56LwKhBaW$qxd_E;~zJGtw2OPX4e)GmQVRG1@56# z5Cm`oyC72l3f{6*&yB7w1<0I|w62{DK!FF+e-vwGKLqHraDz7(#m{~K3bix7$={a( zWZ(q9&XT{q0alA|))BqWsRHEyuRFwX4Uf}w9_(EMB?>65qqZWo;N@q(N$AY+Uy85U z%CF%Y*wPMRy@r_z*|zhSg+zs*f}~+44;jkR-374*vdjpCGVcA#3Xs&R|8IbD1)gp6 Vs3D2ZAYlLi002ovPDHLkV1h+ubD{tM literal 0 HcmV?d00001 diff --git a/share/dark_resources/clear_plot16.png b/share/dark_resources/clear_plot16.png new file mode 100644 index 0000000000000000000000000000000000000000..9c5332e82c20f13e43176609160c6260e93b9a97 GIT binary patch literal 640 zcmV-`0)PF9P)f>{bTprN6Gv9q(Yn3a|FUQtoe`i_o{T|a*Oa0Myk;NaL@QBmR6-QDf* z@83U{^78T;n9IQiOqej?L1Sa%eGw56aRvs4?`O}RWjKEPxW1g6+`reaU;krcV`Fr8 zcRwyFD$2>k#3cCq`Sa(Ejg2xzMMcUeE?BZ;NyfKt-=0jEFk$MEBS+)}1qB)I-Mh!& z>FLSvOiWA;QBhGHC@yGkZ(rNq-rguGDjK|e`Eof|SJ#Mwf&$Kq7cVjd z1Ozbj_4P4yc6PoD3k$1|l$6wc`t<3->gwv|s;VkKm=`WIH8mX&5)#r{y?V7wQc{v8 zKR-WXTwEN(qD6}s?CtFtf`fy+3B_N=kIWF6ij!STS+p#2RjH z?g%C(rYDSyj0fMpe?Nc9lqqLfSXl0sm6ZiCGc%|D{rlIDiHXVL{rmT`3kwT7tE#Gk zP!iI?g9jHgFfiP=x3{m`w{PEVCnqOWP&$CI_w3nIz|PL@XlrZhkCBkbP0o~OCUR|t a=>q`#@(&dMR+gRs0000c|0 literal 0 HcmV?d00001 diff --git a/share/dark_resources/clear_plot32.png b/share/dark_resources/clear_plot32.png new file mode 100644 index 0000000000000000000000000000000000000000..10274a2f0599c4426ccd5b970218b800181f57a9 GIT binary patch literal 1439 zcmV;Q1z`G#P)gS~?b)#7U{e%8!O_NllZ2 z@Q@e-ge}q*D%k|0Gm^O2uqlB6M%*;()_^r56s0xHKwt6Q9t+&HdOD&OT5>gedW zs8A?AtFN!m)M~XZ9%mS4UMv>>PSbQ6k2#%Am&fDDtg5P7Qs5;OARr%o^ypEKKp+@k z7)HTkTCG+)J3CvKo}Mn!Xf$)r#QG?Ty4cXrP|9N!6&03XFsM6w_G}c7J*)Oh2{;^% zTNvZ(G)-&y1a`Y!5eNj@^?H4Q!C?52$E8x~I6~-qnx;)WX0zF}2q6ni)2}a!fYa&h zS11&&q@<((nSe1q1^^y}&?PeV`Fx_*)>d^vLBZQ(Tvu1eRa8_^PEHO*7;gdq764{E9*?lL zwlo4!8A^Z8$$a4=E`r3$+Xc z0x&f-1-o|bg8cmaFo8#p9=$1-%O7WEWg9{zaqF6d8@i4Mw98`Fy?uSy@@m z{QP`yxm?iG(~}Sz8#~2ky?5_kXGceeoaC}tEIScG)hx?O$aBBnPgyLM%(AkwaH}qR zBT}hUDSP(p`KYa}ZD&qS&YeSt4#DW?C^#IB!lRng?Fg z1>_m&f1OST6B85A*x2}qP$;}cj0gae03g19|GrNqlRd4htQ5Rb8@9EzeN|jsd|fJ) z1|#+S31i$(QPj5@ji&YF$&-5r1_t2r<;$B9LJu*SlGH7paC!GRYwrp8sK7R006LxlX))y8QUQ0|&3~!|ZfuIFre2e3_Fk^D{ z_4O4G4GpR9-o5KTapFY0*=!DqM4~@)b93Ly%gejSaol%&EJ8>Q0EaQgpAc+xbTqE3 zt81T9sr-6HCVc*D2mtLY%ZkRw$7lIOcDsEH0RG$8@Ocwzwc5XgLScVRO%2Vzm0qtu zHa9oN?B2b5(RrY}ynHe$D(VNT)mp~KR#sM;S(dG27-sqBfoF@yFibEmF3zh~tED`C z{`~n%DwQg)wzl@uvSQk+IAP5d_!rz~^FPCUE8hSB002ovPDHLkV1lF$tm6Ox literal 0 HcmV?d00001 diff --git a/share/dark_resources/close_edit_file16.png b/share/dark_resources/close_edit_file16.png new file mode 100644 index 0000000000000000000000000000000000000000..9ace701433d09fecd4a9b87fc5fd529ab9840fac GIT binary patch literal 289 zcmV++0p9+JP)uIo29QH+aQ%3z7k+*k}N*aE-0f$xE&o z1Tcm<%;FAb!vbpkdRhDfhP=di>=a)n$|XKv7jIpWS{|I>qS*Of00(%&Y8P;cMSP@p z4(K6{ij5<a{ njTi{9hZTIKpBQ7^V<{-#FUvI%S&E5r00000NkvXXu0mjfncR1| literal 0 HcmV?d00001 diff --git a/share/dark_resources/close_edit_file32.png b/share/dark_resources/close_edit_file32.png new file mode 100644 index 0000000000000000000000000000000000000000..1b3f477798e672cf87db71044ebffa01d79411da GIT binary patch literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJ!=5gVArbCxr@!WFP~dR;e75p) zRCHd?0lNcw(O=d-ds=a%Wm`vkN7zr^O7%r;TPElF&0WOs`+y*aFoUcQ)8fCoI$tux z314RTHnmuKMQ0{M6oZmLW`pz2sv%#+kdZTEzjkdV-J^uWa%jUWSN z&z{Y2b)F>@2Jq>KY`}gmkEMB~r>(r@Jg0;1^3)I!s z6F+?TuGT{FG`;Gtq|Mw6P5ozb;<=xE4$oQ8wnTeDf Z3IKmhtPvh<>Fxjk002ovPDHLkV1jp**Vh05 literal 0 HcmV?d00001 diff --git a/share/dark_resources/cnc32.png b/share/dark_resources/cnc32.png new file mode 100644 index 0000000000000000000000000000000000000000..c80287274fdaec201ec949f3288c19c44cb8655d GIT binary patch literal 967 zcmV;&133JNP)^D8|6h z(9pvGUI*|B$#07(uK(14-|xRrQBmOq&_(k7dum{Ic6L3HNSrG#FVB!XOY--7Vjvt2 zqo=0_gM))oU0tmb4UilyMqFX;`V|<4alNan>#>1>0k~W)Se7N4ro92+Lz373wE+=n z0`LOKSM$k4q2%t3I2=jCFjO)>95nHl1VrRnCBCq*P}bVos;#W7WL+-T zn+^CWNP@Piv08~u%qjmF&EoLOIA zzoqN?izL6;GqG<#M9y25H5ZS^%i7x7v_K$$y1F`ac6KfphVfjE@BsjC0eB}A3SIVk zy){);RmfyAh(@C~dwYB9_r!DfOYwNTV}5>KQz^w_F{`<`+0->C9%cn3|eGC=}XV#r!JHWHR4GB9TW@ zsnjlCBoe{m;v#BlYHX4!sl;vqB614A+ooxD=(>J-ZEbC5dV1POCX<+$m{5?%Nq&{X zUIXw%EEe1L`Fs`K-QD}I^q>I|p=DXO`uh6HR##V*LEG(iE4_@SX&(Uall(1z26O<= z1Mrxp>Ctul{v5lPX9>bia* z*AsvIZ3YVLdI^AL)dc{eByWg_2f$?jFO!TG+Uo=Bdd9Zxt0g5Rst?{HxmsgDDXHxe71XM z8$Zva3DcZrs67skk&j*eH|?l$qB5&YUso(A>U|_Jz!h7pxbw z6^EqnVtvQ3yXnV$fnD1V$SN2e*v3%n_*Aoiy@N-lyg_u$!ery1*N5f{axZu%&1ArO zG4rCvH>pcoYgi1m;}TRFJ|*!l?9gZ2BCzU*5yNE3E$(@YT4(I`GfKtmQG8wbNe$>w N22WQ%mvv4FO#mPPQ9J+u literal 0 HcmV?d00001 diff --git a/share/dark_resources/convert24.png b/share/dark_resources/convert24.png new file mode 100644 index 0000000000000000000000000000000000000000..ccfb3255d2d9a924fe0faaa278c02167f582403d GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gjot`d^As*gurv~yJP~dQW`s_{( zw~B-i=P9@UUvB@xBrw77?RX0an$O%;Y>@O|az;pZT!E17R*z@+jTK@3-%Nc1# t(^TqDI&wZZF19G)b<{_v)0qDK literal 0 HcmV?d00001 diff --git a/share/dark_resources/copperfill16.png b/share/dark_resources/copperfill16.png new file mode 100644 index 0000000000000000000000000000000000000000..15fec13ea31042dd22dc04156a7d7b4fe6e821db GIT binary patch literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`O`a}}Ar}5igB|$}C~(ZSfBrmr z#^D4_pT+JPOIdTSKg^EY+i_=x@Wh7sOlvw!Ke#k2Xn#xS-}pnUah2huNe+`azJ%4h z3q7zT(Pp-*g2pzXH>)nCHu+y{;b$?E*bhHT3EorZ@2m!8Mw=iD6sSOO4{hfP34N_UnHU%|Yfo{B68 z1YiS3r9>bh02|l_sFuYA=mys+*gGO6eg@$6iw7|Qu-V@M$~|NuN&wf(8W1(uC`tAX z4WNU46M_QBI(=0I2oMFR^h#z_9{}v=R2&f*R0?1_-PV2ucqsb@=tyd(0*$8Eye@!u zaV90JL^Q&^Rx*&D^;W%`rimkP@R2bSZI$ZuT*SiSvfQm1gJ$fWQ`fSD z+&tUX$bW!)*QMx&$bk2otT#o;Y5h=d_&P6Yh1-v6hSO_~nMVXPyenU4wvW~3^`VNE Uqer&f0b0)B>FVdQ&MBb@05tAGlK=n! literal 0 HcmV?d00001 diff --git a/share/dark_resources/copy16.png b/share/dark_resources/copy16.png new file mode 100644 index 0000000000000000000000000000000000000000..fec837b78d52569f14be4970bbf12be95a13e61a GIT binary patch literal 288 zcmV+*0pI?KP)i2wV*F#YKt6sfjtB z_kQ=k_c(->AGWNA0zgC^B1)T}1;DoLo)BV}B*|Dxc_AXM!iWfUKnMVLWPh0N`d>)}btF!CF8q=DS>%C>xJ1 m!FTg?*#CgKsAd0Kzs4sj`FauVJgEKv0000mkdr4hja-YGPH=m2mVz#jnH02%>!0Q>@wDMN71Uu3h{x26Ipiedrq2*4hxPFYic z%FO9Eslqw;tEw6@8^FdGD^}BzOG`^nRaH$?1yD_^Q3(`9X<&>UUIt(&@LpBb5z_$x z9071q%^73gD`5;nS^?bUoPSkSwX}U<7gUoyeZ)|}4&b-pdUAdPfCm8F#=AQJQUD%v z&Og-*(B9q-pU?ME*Y#I6o2^OL^~luJRGZuFE(5dxcmja3Bm@35%vdSJHvrE#=Wl8T z=;`S}Utizxq!dCljE#+HPNx$qD=V0pnYpa|$NQ;N3U)gQRznFY0fZ1v0EZJ36MN0g z%~c0J>yK4?fB<@Xdr4llxw&~1jYdJw$Vkb|b+4)cTrL+D78bCxvxEKpefa(UQqY5g z0|bM?Q2-wR+%l%%uq?~(1_lPsl=&jse@?^7F6i#=#{B$zHknMePESvlz7YzAu)4Ym zuh;7Z@R>12CZlQBBFpj@Qvr+;*c=YW(fIgy2_O=QV0U-74M2`DrW?VVXcow_oHiAp ztE&s)aCkc&kGFX|o@^$QY3=On#QOTWh2}kVg)xZk0Vv9{{KHg$wY4>DY-}JFiwzGB z4o3U?`?aB=AxutAJ~U1{sy{){dEk>}Ic_Qd$(zsTK?8}FuItb=4U$y4bDUapb8{FS zC2yYY^}0-0cb{Daz@V@D)?0=?>-KwILN#4VucFEgz>NauDexC{j)5=^*ftpe0000< KMNUMnLSTXfYi=h1 literal 0 HcmV?d00001 diff --git a/share/dark_resources/copy_16.png b/share/dark_resources/copy_16.png new file mode 100644 index 0000000000000000000000000000000000000000..fec837b78d52569f14be4970bbf12be95a13e61a GIT binary patch literal 288 zcmV+*0pI?KP)i2wV*F#YKt6sfjtB z_kQ=k_c(->AGWNA0zgC^B1)T}1;DoLo)BV}B*|Dxc_AXM!iWfUKnMVLWPh0N`d>)}btF!CF8q=DS>%C>xJ1 m!FTg?*#CgKsAd0Kzs4sj`FauVJgEKv0000{%pAc zq zC|xN_Ju9xSjPq~FR9aZIZjx;7D9gTQ?e5Z=JfHt<`e_D_r2K2?GU_Q(AJXnJ-(>lq zcP=bS;332Iw2F1R7^7yMC|(fh{P8fugwBNwQZ5z;R_?nev{UvW!;8Lz4grSBgFeg# zV*Bn*Dq!ZEz;?+&%7ZyGp_18D;SKkericA*DVhztlIpI02xMDh6wmr&k*vwi4UseX a3K&Z2T?~?oOpgFv&EVlDyqr z82-2SpV<%OaTa()76WMyFm^kcZ3kqqmw5WRvOnhJ7g9D$Kc?c#z`*F>>EaloaX$9q zLGO@4k)t2azu%iaiRTKKdy~e zS`wStV!obk%ii^8!;77>bel50^~{Xzs#e}*KG=6fSHH&7gKX9Ad_MU5Mu)o5MsGc7(ddh5{>!_x<)XXKy_qQa?Tqa1b-P#k zuUXr;LL;;1*{-jvqXl*+cuiBdt}Ym*sr`)i;q0bnw?q5hFIslH==zjco1kx+R^?~! zGB~5K^qDZ6d@XE`}HcNnm{EWf4%cSV-wDO~oom zOibRrNt0Q)(ZLVIMQe);g093CH-d;CXhKG8iCv^jC%${+h7>|RX69uA-Q>V91NYqj z`Q3BRId=$m*ys+&#}2@@Wk4w<8(pVTs%nfKfQB+KK0f|nDwR4SB1cC?M!I@>di=H5 zu&q~MjJelZ`;6y#%RvFO1Gp(7-zcT_hhccY0SpfhV`yk-nWZ6sLZOgeSXk%~kt0NO zR74(iqC|AXT6@{^yh|-DE#GCc*~;o7EEbD57Z(?=ba!_jN(?YFGt*Y7RC)op6CMU| zH-NtYTmo>Jh`tVj;99i-rnNo~;BjVtxYnRsR|8t>aR37=C;c#v%cEyf1v;zdx7D{a$VFI)HpWzpGp>zwCM5>mu?1fTD<;3&ZfMdLfK4yG7(WfH#@> z{X_t_ot08vCX;zVM2-{DV*q|6qIc%!=L<@y|7yW#t-l1Yo0*^962R(BQ4~E1z=1pq z;12-rH8(d;_4W0YHxoC;ydokW5K&tY1UEMGOEd?JF^>RvLqvLs=u8jC_x(&Rm;1X~1|}yb4_a%l646sZ5EM7^-3q`d5n*QD zTdNb?y4Lzn0G~4RtJ?ygwf+piUCit{qNc43woYbtGi9A6&VbhXR}m?MVR)iubO2El zbrR7<01q+qPiyxi0+^nj-m|o{=5#uJjfl<$LGX4%08tcm5Ye~R z+5<`62V=}9*4n*c7pTDPEF1!B=`-tcz0KMsSI@90Z z|Ig}uiLO9vZ2%k;k>@14Zu6(;^{IJtOI{^O!8kT1;ih6K500000NkvXXu0mjf{g0ZU literal 0 HcmV?d00001 diff --git a/share/dark_resources/cut16.png b/share/dark_resources/cut16.png new file mode 100644 index 0000000000000000000000000000000000000000..a33fe87f15613a09f2c2d34cf274d1b2ee949108 GIT binary patch literal 166 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`xt=bLAr}63CkJvdC~~-LpMCx; zxANh+TbdU1|C*@dUgOK@@b4DWgcSY2VzXPuYge<@RH_{)&sG=Psix3-M{v*2#djD^ zCp#(Bn=WK14oEz=Uq>KNUSiFP_4B@*=v+9lY;BE>!sAly?CW#i=j;@f4=wFdJ>JR> Pw3xxu)z4*}Q$iB}XHPtm literal 0 HcmV?d00001 diff --git a/share/dark_resources/cut16_bis.png b/share/dark_resources/cut16_bis.png new file mode 100644 index 0000000000000000000000000000000000000000..28066699d64e6643c912c12ec9cf42ffe460262a GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Wu7jMAr}5?gD-M5IB;CHzdv8x zt?A^uSr;##eE4k6tF$zRzKZuZjKkvAKj8Fy!0@A^L3A>wgoQ|O)2pLgGc2bk?p8@l z`7-Z6|8dbpT>GM4h~88A{^vi3$j=;qJAcK!6TT%Z&D+ws*!9)oRp-i;R<_;^?em*1 aIQPP{Fy4QKMn`}yVDNPHb6Mw<&;$VNXGkdk literal 0 HcmV?d00001 diff --git a/share/dark_resources/cut32.png b/share/dark_resources/cut32.png new file mode 100644 index 0000000000000000000000000000000000000000..fa1ce92a992e2a3fa9ac0c9bbd288327c8e34fdf GIT binary patch literal 268 zcmV+n0rUQeP)CLI^4N;{dPohOy^0xzPwg{{9 S+A2l>0000sE03U#YujU`60BZPpwBa#47NHHj4>Be9UZEli z!fsAbpL&+u@Ao4ZrE`%H(fi)n6dEoA!WwO-aH?1a^5m&kAPT@{MW$J!N=N_i0ocX27&@a$4vcBxj$?HSOfY|y%Q3G2?5k#Bq`OP=QLzjvMLjzzG#^R88MYj z!>0qO3;?}KX3BB^B(2Dp;gt+6%*Z9v*ew-sY7YPK%r)%*tT!ZpC*@Z(EQzQy{05*B hSFfYfusYE1_W@HQ11j55n#~ literal 0 HcmV?d00001 diff --git a/share/dark_resources/cutpath16.png b/share/dark_resources/cutpath16.png new file mode 100644 index 0000000000000000000000000000000000000000..9c92c0a2927e8a45c408c4428f6b5d13e61d9228 GIT binary patch literal 465 zcmV;?0WSWDP)x&H%1s@8&+whp0HQvI{WAPq|#K zDf2Jy;6Rb$#Rtfk1#k2+2Ip*WDOn%up2dZCRFt5V|A+L{WrDBx1JPZ6y>66?vXd z&9`7#)-6IPMg%02$wE9HKdV-&m}ObuIF1E?F94tc;Ka7=B0{J^1W1x}C5ocfXf#@# zPG{fe^MT_y&}=q;!r}0UVHkQcnbgzi^zqUe$g*4%1R;en-Wm>v+a8Z+uh;86l*?r> z4C5k`$=rLr-uG-a`$+Vnzms5EcmxEkw`!^8Z7|8%XB(@ zqiH(U@At1OmCAYm(=??-LkHy)hjh$le+(Heas&iBbc%>jYzdTlo848e z$z|vg&5)rEnk$7uT{4*18XB(GCij##oDxOD83?pDK0NpRJkR(2zAwWyf9#s|@$Ud~ zx!jCl7`HClm@#I_vfR4Z<7k6SCi9SpssP*$EKRJgu5R@D90AtX*OvekzF?I}~0boW|)kL@3%_oz|m9c65lsQO2jB*P4uB&?QGPfE6pO|FupW;Gp->3f zY<9p>BH|ly&>aBXi2$>+vj_%*hXA$@4i1*;^*SU;;)2``%eIDZa0GzYe@z7N`FtDE zX!Hpe(seymE|*`}fGNhjR%^jD z%~y_6kHoSc}cR7!KZ-TYj5!qy~7(nsEdi!t^2 ze2-$W*ax0*01HEw99OH=FPf&^?$y)j^vFv)P`n5T1Om@QQG9KuAOrmbBW;P?AKi=ybY1w6Jm2b=*ot<`Gzt*x!Zl>zhf^H^M5JS3vWE|-gEy>BZK zJ#RD`%X@o!{o=$H?eF))GWG%WdV32369XJP%L6Tr0Q`^39=vhTapLFC`J|Ih+W-Fp Z{sKpOKPXo8zXt#S002ovPDHLkV1mH}MY#X~ literal 0 HcmV?d00001 diff --git a/share/dark_resources/cutpath32.png b/share/dark_resources/cutpath32.png new file mode 100644 index 0000000000000000000000000000000000000000..e0d7a6fb12fde855089f87df3a3aecdd5a165978 GIT binary patch literal 853 zcmV-b1FHOqP)zK!&Lf8V2>*VIK z1c{RA%h;)if{NH7x5d;o%k+syzsahVo0~}B3mLqkI+0esiNWc8xL27n(0YBW>?5Q#*7*#;tl-EN1|>69&K z*0*3)UwI7?ZRRI1^9cZTN~zTYD`2r$(B0j=2a(I=5R1j2o3IPOIuX4s<`>z2Q9~)U zbzp#|rY5-E?u!6ENs)9qeLoNg+|dC#0f-M&f%{JbZ~zGFTe4ma0F$hQh_+Ly)RjOW z@KOip0Pr4wctK1jry?!J)bBTB&hqjySE@h*5oJYzWHQ+k3z0rULD-N^2lX##Sv&fZZjE+lRn%E*N!yJ$P(u_Hsei0bU#T5n;CH(`;BBvx1}i zIlfu!a30Vg*@{H^fi6I$tp0}tbim&Q)p8pxUEUFE4W%!OyzNrGl!nK0bcsZl3M*94 u&T!~t!8`APZVpJGC&I5hPG`En!+HQ)QSc$&AdF=I0000I%g1v;Ey)@S24eFcc^qt4>OnfoAu7jWYzS76@aw327N$TkOr1u zlnv2f2V{k-|DSz2(!Hds5=qJ3BHg%XgQkO|j?xDfm96R>O5OiKlJ-dA+|p@MA=?G) zQ3T@ZXbVW2jmX&rONaRIRpSDMQWv>1xCVA?*XzMD$O}yYq2{AI!wtH!pq6p7jz$0g N002ovPDHLkV1mnzT6O>c literal 0 HcmV?d00001 diff --git a/share/dark_resources/delete32.png b/share/dark_resources/delete32.png new file mode 100644 index 0000000000000000000000000000000000000000..76ab5ce9fb6cbd36624ee8980df470ed2f321971 GIT binary patch literal 943 zcmV;g15o^lP)&N1LW55s@9 zk7oc)3Ro-_wWFhB$7nPf?{k@|sz$%x?~x?wmBnJwbS|BxX(Iv9=97~XL`6jfWLRHc z$Ii}jof-B4%f2 z(cj+>m&?U$Yf(WrfcExwOiWDR`1lxBs}+8~UlW9G0AzG%Xb5L#XHZoY6%`f!<>loo zNs^);QbIR?&dyGFJRbD*^}%2;u-VwyNNTu!K40#A@t_;P=H@2W*4CKxqyT-FmX;_U zK6^Z#m;W3fkb&mrW^&8!?d@&KGeA%Z+-1PKpPf!83JMC?%*)GrG|&8%3&^-E%O6Bh zd_6cg=oJKkyScf+*47r9nwr>q@9F75baeE+AVCA%-P~rgc_$|)IlA%BV|;v^LBz(! zGNAkFLr?(UZ@!h7n3(2vyScEiFmN1)kdP3@KyRJrdF<`&AtxsXRaI3O85s$vLeKzo zT6uXnQd3h=Sy_p=xH#BsHYkdMva&K16%|pQ$MEnl&d<*&>mf5U^ACui0ql1BSGU_8 zdU|?_{QP{FOeP#19pUis5XHsCSXo)Y>gp;}B{DJ+-QC?Vo6Y(F@I1d;TU(n%RgK2} z{yvNPy1F{HCgTo=0}&AsY@M5%i;Rp6rpE6hC*?HI3*C;6|L1}3z zTayZ7V`D#Jf)q+lPR8iys6GG`gbs(p>vTFfGEP1x+3D8w^y=&DS!YBsK{=mZKv!26 z8X6k(1CV9ezrDR35)%`H!oot(mjI~Lk~>K9#l=O;&CTK9;DA92f}ktFZc0kZi;ay9 z?(*^y;o;#wd`>QikB_I;3+d_U$jZt>TU%SeXE-o00K47(^kQ_Eh-PMHd{a|X#_a6u zUkofPETE>Q23J>CkR<8BluX^U*XvDtaxM6tkUoi`m^M8<{Z$ZzP(@Kxm&@fdnM|D3 zYJK0@+WPjB>Ar}67CkJvJFyL^0ezy2C zuX}6AqktRN);s0?GFi!J(SM97Vbz(K1y*0U|1_+U=F~aZn<9MT?T_wNu4+HS6!>*J zZm}dcw$0wI{a-jFv3QcZ_!XX_9mgC`Ey`u$6McVQbwy5(Vq2|E$jq;Pa*vW@l{ZZ3 UF}t688E89$r>mdKI;Vst0F*01OaK4? literal 0 HcmV?d00001 diff --git a/share/dark_resources/delete_file32.png b/share/dark_resources/delete_file32.png new file mode 100644 index 0000000000000000000000000000000000000000..9eeaa32de640bbfffdbcaae241be518b88ab4685 GIT binary patch literal 281 zcmV+!0p|XRP)O?yJ`3<6qEQJq&;aYlD-b(CXO3eWhkRjjzX9I|afTTbN)$KQ0 zhXSyAuNJKJTPe^1txHJOi?#kY0B?$VZVD=m$SX4bH<(_8atdxahS@PZY(y2y5ql4v f5D_#JL#OBqlzwI`+wk_400000NkvXXu0mjfF|BG9 literal 0 HcmV?d00001 diff --git a/share/dark_resources/deleteshape16.png b/share/dark_resources/deleteshape16.png new file mode 100644 index 0000000000000000000000000000000000000000..03f99dd910bc0eef7c4f1c0c6c660951196e4b88 GIT binary patch literal 386 zcmV-|0e$|7P)S&mB|iXkvXuwWzB5`6mbT0o3X&<#h|L(qbQ2M_kS zxw&1&mKc^TTjmxV92|)(hwf{Pa7K4gOG^twY-}upnwlDl9Y>EIWiT-@K@r0iq*x;o zWXba7%kM`NgIB?)Vhlhv9MG$}S;>Dh!p`mdwxqbWgoj-KwkP$Xt;!G*6t*tB9 zty>r7>+6d*tDHG=hQZp}dSzv0WdunUw70jf`2YWZczu2S((3B!Xl$B0Iy$QA>+9PX z7#PU2fPsM_{MD;h!u6PQZV5K^Bo%hV6xW0tg|o0D#&D#116)a=yB@?R jsn)_7d&K!o)(ozh0T%m_IabXJyT#mqId0SiCx2mctE__i(Fm*dQIc>7Dv-3sv zQfq7Lg|M)&I2|3G&mi&Dt5>W0`T6ZYR@2?x%@7(II&Z;(1eU%pSy>YX1_tUm zfPsPG;Lo2w?THBnc6RoI3=9k)wbXS$Wo4xUt~`!hV70fm9~hnv7|ijv&;YAi6pR8MJ@@{xCN; zx7+xFbk3YPUh(nqtz=in_zD`jG)PEk&EN|OvYTYkrq{qVO3@uaY_Q`B4OmE!)gmIM m(4kZf!3GJX77)@u>Hq-Nc@;2P(evv70000yoB*_qg1MqQ#?;uuz zbthnv(E0&c)SLkhf-2hzY1je}3GalYDUeP8$uFnFQtg!j9`F;edkE2}rT0K9fM!K# z3Q)~5>94X%DWb@w#8klBWD#)LqVUgX=#A)?3Pj~b-#`9VTTVK(xo7=z0vk1oSCt+6 REUY#)D1TJ)T8y&1~TGOL71d&?7^ zoOFHORqI4uRyF%H>y*nssC{t!x^-RWD$D;J9&_8Z(;v<+%8K1)G23_cmc8dEm^Ikn d7dr5|m~qamSpIhlXMkM8;OXk;vd$@?2>^+jMK1sV literal 0 HcmV?d00001 diff --git a/share/dark_resources/disable32.png b/share/dark_resources/disable32.png new file mode 100644 index 0000000000000000000000000000000000000000..762a9270cf19e677495dc1c86a1e2e1d45a755a6 GIT binary patch literal 320 zcmV-G0l)rVQZU;aIP{s^I1+Q&90NDO!yCH&z?s{AIU{e5BR6xN( z4Mg*evO`YjtB2YQw_!E=NMs(~i`ln?9>Z!yv$pL$WY~yiO$a5>V#OKssbzG2Y3VbGxQ-@ S@P=F1_p69K88nCceynJPaTYt5OdIqVJ=kgZ3z6x za=A%?F|D&$K;uBpN3kR92~#atA95#reP<{h$M;A2K-TxKhEJ3&7>+l-<+Hh)$r`w? z@43>auM&}89Ow4^VV(47o!jE=Wqk{Z7TyoAI^DT2BJP&%-X#_fLuSkRbO@fQGr4Rg izuoUCLwLxi|7@yH3KXr+zd8$aJcFmJpUXO@geCx%6}35*xtEUTQ(a8u^;76!ev z*&5pglHY~ZGH#l2be#gf!|^v4SOr#x*gjVgSukrm=ewJG?7nVl6?6DGacUYvlAMR2 U-{0v0K)V?{UHx3vIVCg!09P165dZ)H literal 0 HcmV?d00001 diff --git a/share/dark_resources/distance32.png b/share/dark_resources/distance32.png new file mode 100644 index 0000000000000000000000000000000000000000..f61d090077a5f7200a2178b2a6c4c7513baf31f7 GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJot`d^ArbCxr`_gjP~dTXdj9+K zS+*Gh<<8-qZ1PiYY~HpYRkCL4!C$BMGjwG1T6nn}f3T9zr{P-NS-}Vv(*{v?nFFtx zL>z?D5B{>_aS(o<@ql5Ph0Fordf5f%ZdgkO`#I^x`_GxboWZ4Ki|KvlilpsNoTfA9 z-mX3+)^%W(-lnVXN*+FGU~3TC|AvW^LGvBcf}_3+n&*2iZG9hVt?=h=$=ewjip~rj qC(92AFkI>dDhb=t@VWR5U(W954T?8~9V39AVDNPHb6Mw<&;$S_u3!TI literal 0 HcmV?d00001 diff --git a/share/dark_resources/distance_min16.png b/share/dark_resources/distance_min16.png new file mode 100644 index 0000000000000000000000000000000000000000..8e1c852050c8a1b7128cf487d7d08fd8795c08d9 GIT binary patch literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`KAtX)Ar}70IT;y0?q9fY;DiGk z!^>0|QwBk{1sfPzl@~I&hOzUzJmFBd#xO&!KxcwrbAj#^^9CLL29t@h9aDbDFPXl^ grXlC0fdK=<%Vhty>?h$ffaWrIy85}Sb4q9e0DD8BP6ZiCZc&wks zEug7)G4HAgqtOxD4(WzCm&k5UbB(I!0_*OyM7^HRpz40X#k)OV*SQ9XeQkTIt*w`= zZ+^k`u~bfOamBXHE8b80#~FQrp@F%8flo&4?17%wx9fO-PGj(N^>bP0l+XkK^gT_@ literal 0 HcmV?d00001 diff --git a/share/dark_resources/doubleside16.png b/share/dark_resources/doubleside16.png new file mode 100644 index 0000000000000000000000000000000000000000..92e873fcb9ec3e7df8bb230f487b2bef15a4cf35 GIT binary patch literal 350 zcmV-k0iphhP)RfK7=5RfLU;CjIIJSub|XC7y<|(K8WZvC^2gQgw|R* zNYnHT0N6P#s->Z<)7kfv$wi*$YgMnR1xP9P znE8^K51n%_{{o11dxwkSmWYOc_!hMO{n-|EuePx1neUM3IYE4?lUlS|H^pf5UXrMk w>Un@G4{($l^BB`iNurc;mjMQ2Yu94{UuMya5hL1Dga7~l07*qoM6N<$f{P`Rg#Z8m literal 0 HcmV?d00001 diff --git a/share/dark_resources/doubleside32.png b/share/dark_resources/doubleside32.png new file mode 100644 index 0000000000000000000000000000000000000000..a159a4c5377d3b155ad3188d73366434330f2e9e GIT binary patch literal 614 zcmV-s0-61ZP)`h4^>? zfK{c`_el`@0{{TP7#|-1u(?ji`BaE)4dE(~^5SCTgKQG*V5eB0))^h#@Hvj zQqK81#@J<7aXUw2fH{n}*9o~W?Cpif0RUbt8YLtgfz;~>5khv=mzsKAHvWkaZ++450oGvVJg_>sJ)Jj;luXhD1;z~;~#`pvwWcao#o?AZ2Si33RbCWGlN{6r9 zbYtU%mhzVGs>kDNT}Jj;=0Wf@1Yk!i^`K3FKbZ3$Fu;enxBvhE07*qoM6N<$g2tg7 AA^-pY literal 0 HcmV?d00001 diff --git a/share/dark_resources/draw32.png b/share/dark_resources/draw32.png new file mode 100644 index 0000000000000000000000000000000000000000..58f7edb210ec6f750e1c52355b0031823a09f4fe GIT binary patch literal 279 zcmV+y0qFjTP)>r%s=x@RB+>*hI3|%I zFvDBuv3pJE5#Wrejf$-)HO?&2zYP`8Oo9}^W+h2gD#WXe_=v|m?KYR&>lFOa$fzrg1a@B%d*w7V_W$S$)$Gg#!i dDSt*9!4nnRBruEFjt>9;002ovPDHLkV1jmUYIFbq literal 0 HcmV?d00001 diff --git a/share/dark_resources/drill16.png b/share/dark_resources/drill16.png new file mode 100644 index 0000000000000000000000000000000000000000..496fa44e04cac5f6f5afc0cce29685be5f9a7f5a GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Wu7jMAr}5~gB|$}C~!#Izdyfy zMo+7w>w(FEQ42(No?$Ft7WiGZ>wnX67Va0uZ?!&pwls=MDqo2B{e5dfr;UYo(4_@F zAEwRoQ_65SGFv#s>dhYq*EM}5M_C0$*G#sUseR)bla_Aa{qi$Y_0H{RI@h)>Y;OXk;vd$@?2>?#RLjV8( literal 0 HcmV?d00001 diff --git a/share/dark_resources/drill32.png b/share/dark_resources/drill32.png new file mode 100644 index 0000000000000000000000000000000000000000..6b0696b35569de6a4a99cb6ded16b1d45526b115 GIT binary patch literal 251 zcmV7{Q0l)YpwfrrhOBd%&fE)(ti7bYg| z6u4-Rkszhe_u&8tup1z1HH!efos6=S;xB*^Gnop2nhe3IO2Ca`C_s;q{2RdI-T-|7 zEg0+dZ7qO^tD8yzPVVq2Kt{3wkU}VK?g4ZFieHyKuptkR>IeV;002ovPDHLkV1m)> BVq^dS literal 0 HcmV?d00001 diff --git a/share/dark_resources/dxf16.png b/share/dark_resources/dxf16.png new file mode 100644 index 0000000000000000000000000000000000000000..97f3c3f22f9206b16ee5025137dbf945eb417d69 GIT binary patch literal 344 zcmV-e0jK_nP)**NGK}!31n;wlSzL?`1jQcI?!23en)FbyF)+ra}~rOM=OAs z$wvutj<~2{KqR-IDS`hD_*Vtd>vd*;u>;LXj~PXq*%o4`#VZVA7Dp*@5hI8eX6gY} zv5W__r6uaaStEcrw3(J>1(6u<{(?hv)vMqMS6IMB>OEfJ4e?WrV-9=OJ(x~wdiuvE q7V;2!aZ&|@zmADIfJf{UXTAY0895Pv0|40o0000F^y zf{KcYaJ2ye0Sy2D|9^e-=+TI`Z{O~NNx;1@Z{EDa{r&ysK|w)mhYuhA*Vfj?v})BV z23}rXuv&kAe}?7Dmor#eT0Ra63X+9+2ks}3SLV%|x2LtW)g~q;hU4tnvkbMhwG2y_ zE@coD6l6$GPiJ`f@+HI9uU{E1Uc7ke_3PLAAcIi?1!~Ba^73-etgI~N=H_OG)vH%C z9654?fsc<5?j1EXwez=c-!{T902U+j=g)uUf`30U%YX zs;ZkzO-+5@y?e(XDJjXIrKQDCQc^;i0f!D9^8NYqC&Qyhk3a@8NJvPKZUC|-56Wk_PVXok4DbWc|VJa=u>cNW&{sn?(Ur8fYU}LW!3T25^YDB>e1C6=3Z8hWo>(7Z z0IXK)^}xVD5CFU^%YL+4t!ah4b$LWQK+|*%&-2%kBzZZ=FdB`aU@*ut4D&u!adbXufQY!iq@?84#>NJjmzRh2_V@Rpwzf7TisBE3 zVcw#5#l^*7Fc=hhW@ct!c6JuJy1MY0`yj9b5r8wTR{PTBa*+iE1+u`=(Gi09B?!V# zmSx{qEEcG&tW*RT8XAJ}@o^|GFaPayIwh86a}q(^4S}H1XkMcb6crW8A}1#&C>-H~ zg9Bo2ZVp;oTNMFDMn+(Gco=w|htks0kl*k3F$|+uf`~~%j^n=P=jUtOZa1mbYGol& z6v1RNfglLra=Cz}>9`PMV`I?Y-w%O60CsnGp`xN9+}qnrBn1!+2gh+filW{jCv-ZU zEQBttudj!_y**f6T}7A2Kuk?dL0?}VTwGk>z4`fh@cDd-`4G3pQBH6i=gG>-(xIFv zD=U+Q(8Z07jj+AF4GxC`s;jGSK}=6i!|CZM79|J*NRouDtu1J2X^9J=*kmFQU)5^$ z2dC3XR#jEWLYJ49(A?Y%Znqokb~~8OW_fRAWd$ZDCm|dT%TFj2g1Wl8)BtW&hdU!9 z8b_eI^LPVz=90 zG&D3|9h7Y6=jXB}f~%>iQDk^9K-3AF&Gtp5QkfSP7C@3DI6OSWiKf@>W!NyaYV@Z700002?H@u;w{;*uqnR=iHrQfhp@IFbpZ1i zh@Sf}9QJhpX>_e{%YY@E;k6)68yJ`i#$P0mM78x4y(C0Bu}IQoR;5`nnR=k7&&s&{2zc<9qA!}0-%~wUlBtdm>1X2BOx?WZ>kfE4e~ bnhszGv=gK-h)?eC00000NkvXXu0mjffwXHU literal 0 HcmV?d00001 diff --git a/share/dark_resources/edit_ok16.png b/share/dark_resources/edit_ok16.png new file mode 100644 index 0000000000000000000000000000000000000000..5af14cf242029eb000493cdc333e7ced8c7e1796 GIT binary patch literal 486 zcmV@P)Atb5XGNDFoK8<0m-D`(9I7a*hxA_hz2*i2%Yo`h~OsH3LP9O4jsBy+*HIt1rc!& z9RyKO5{ybk3jv9gzhFsAYoNXHxchPM?wtYu41>0xW!VRYVQwgjQqOrsQ7BoK-=op! zRU(o2Qcr5WB;0QIOQllbolfT`x7lo>P$;OiTJ3cuDACO9=_|a&DTrLN{-;eQljMZvIMu*4aK|CJ6EP*(Y zTwt+S!0Yv5I2@i9PI4q7k%&G(Yh|tLbkE4LY|-IxT+=lD`Ak~Ce!r)d%jL5qN%0?j c@R!g20NLd25fP)mWB>pF07*qoM6N<$g6%%rApigX literal 0 HcmV?d00001 diff --git a/share/dark_resources/edit_ok32.png b/share/dark_resources/edit_ok32.png new file mode 100644 index 0000000000000000000000000000000000000000..710ccd5fc0b205e6463dd8653fdb205f215f6a80 GIT binary patch literal 843 zcmV-R1GM~!P)3cGe#dWKmiKwW>u}kWvyZqD5d36fFuOC}>eT zcSZ=7RErWUqUbkB;KQOtrT0B%z`H0i?VW1z4#+*=xig>hJ#%K}X5pJh);Igdn*c7C z>yO**4k;80MH-OVk|bq09FCtZmn)-9r34_y;cytm#l#ZfOX&(GuH;sWRA=b&3lKT>05Wknhq8p{530I%1J@$qpa z5(!9>BtIjO2)equQpSQ11>U-&3kwUZ%BL&vB>;zqhge-*jM$#PLvR)+TWcJTmXV`HeTt!2ZTo0~A1 zOgvYqRGfU00Qvd(I6FJz|9X3SxjqPq0jt%D*49=wtX8XWe}B*OtE(&MbUGPee}5k} zH8orpZf|d~wzeh)prxe+ot>TRly(`5#dv;nbOeLJAOp{U0LjD8%ge*Sz`*ANghC-yR#v_O&}y|@4}>XTu~=ZU*+Y#YEUG_`d<-@i^#gKQjD&KT1nW|E(eUh~t;ZT}3TOo81!7+(u_|MGEBpJ0gH#hO-ao`frb8qhdo&R~x zA0GJl;Q6@x;0NH>0EPq<3Wb^Btq$F$P$*ogrHmf#F5xLsu7uzb01$+$Ag}`9>C>kW z6%_^H;o-pN^DQcFHq*0`pr9bYxkpDwaCmqKVzJor45d=}yId~+%~cRs0Wdf?2zTz> zfm^q3L0DLr<>k-M&%bN$JRT2%gM$I*Zf|eH%a<=*6r zlarHBTU!fxd3g{S8Oa#H>({SgU|;~=y?aMA2{q%(moJ9q=4OF4NjA-a6%Ba){5jme ze;PoH3PbQBgB7ylHC z#Xqp=4>$z?O#lI`udhQ=QWBJvm67OjdU^^7d3=1_tX8WLf{mRy;}bXsptrXdK79B< zd_Z}5Io!Q_m*f|lo0~8_Jq=S+Q>Y<2nN0R08~%V(0MG|e0OI50p|rFV?%lfw(b3Ux za&iKztE(_FG6D+=3nraTr;|#hKRFA5Qvlw)c>{fYeenMMdx(vVg@S?tl3T>Z#SuAm zIvvc<&%?~j49OL=TJ4rhCQES!0;d4r3L}8GZ{Ly-n3a`9d;kK#Xn?)|!{Vz~uK**@ z#>U29O-)U~UIn1LyBk9u$pkS1pfik#iGjetKyqQt@bTkEKy#_6sJJlaaKtHcN&`@> zF$$owd;It@baZr(+9D(*1h8hHARHeb!`H80p|P>iy8!I&?h-GLDvnj*+1VMnuu!5Z zO9X-D5D*YRs>jctKSM)91LIVgQyTE?+c((T+aq?4tBe()$z&oI1pq&9+_*siV1_t5 zI}4SSmEHjWSK44O5P_*xr#?||>Ozyizhgvr_UsvCXJ>l{07t7R+&fUIR3uU`O^^R) z0`A=Jd-CLoqcYpfM_+*eGBY#%0DMvdmX?;Ft*y;m=jYp~ z;brRG+S+QF=d1}_3jp)K@yJ>b3IJwsxw*MSK(7E`ol;VQQ_FV|0BaTSNdR7_0Zzpz z8aH#^2hfngsVRN{P9{Pwj{;YDb0$k~?Ks(Zw%Y(;{I`z+J`X^z*F$x6HKe7b5f*D} zYcM=K3^#Ayyp)aCXaFTV9*80Y94P$I(9o3-JQjfclH$${ZdrA9c0yueBKbE3rKP0> zGBPqQ)B=wOK=}d`1h=Aavoa?q=Td>~DR>nCjN!PCkGnF|_#O<82XK|=zsM}SN&~1; z7{ej1{NmywpuJNAkFF#V3F#E^N*`bi096^op0&e6C=VY#B*)m4WArKwuoeaZJbLuV zCJ&gHn7C4Syx*&R0G-UxBLUD6jOiSIHRuV|Ak)>Qa~~%)fX<6wv@6U;pCFy@ww~jX za+uCb_yJsSE`S<(NqA^<$Qch|t|6LSmu)Z6U<#>U2=s;Y`KH3@}6i~MwdFW@LJY>vQz z8h|Y|*h^?V+zz0>zaMVjzD?R&txdpH0I-c72R2J#B&eyWxn2P6?d>L!NW>Egg=b8D zG2*BOP`@zI>-7Ozt=24&NEkO!v(h7^QmOU?0zm+u&o|%(vZDeqnQu0mc}Am=Z!j3n zWina9wV8lYsr*GQm;b>;2)6D~DwV&=_(kq)rEwILTL3uvQe2(S$Omv$ f7$)!K^8o$^jOcTHr4(B^00000NkvXXu0mjfc{swK literal 0 HcmV?d00001 diff --git a/share/dark_resources/eraser26.png b/share/dark_resources/eraser26.png new file mode 100644 index 0000000000000000000000000000000000000000..561a36051aa8ef855d16bc84e9c4a4bde8aeca35 GIT binary patch literal 928 zcmV;R17G}!P)rU%15CmX&^Sn7n6-1|sQrOv>cgE!(l4Gyu!*-GapC2239mnx?H|^s%K3B)FynwC% zULm|1e-(~A2nulp>V}a9iDH~MohY&(Ss2|Yk|5a_ohWi3RTy0;QXthB9Vjv&T^Q9U z5+L0el_>Net1zlis6kd^RG`p;Ou@)Tp#+(Rk%>YFG8H2Wg$iUkMg|HE2n)soCGs+o z0)z=8x=O}_Fk(bj$!HK(3`r1XjL5b%a)l^hcvs0d5ETpw5G4$H5H$>H5Je1H5LFCH z5M>NH5OoYHkR32+Kz6~P0NDv+JP3;M_)G!4rt41|tmAk-7ioEQf(Cm|1ij80R9Cx^ zAZV!1lR&TS3fel(I1n_@>jcp2twD9Q8wG-fc~?BzM_16+amIk4LB1*+?Z+BaSGy4) zXo$ZRjrP?Qv~`^2AZUPp6^!<04XUf%U-P@GBki^q4bM_6+GkhL)^RLzy!Mp>f(B=4uc>ec?x=-6f%|q zhU*Nmh7`qM-?F^(hgL`@1~Z5k170B(kVr8%dobOh9-V*s3W*lPeuhNnp9&H!hJA%( z%>NCNbbFS8k$#3`6~*=(k~#193JI=|OpNg>WcsadHUB67}=|btmpa-c&>Bf)%sX|$SAp??)vI;{ABnxFFh8#!~ zWi^H*h!O(AJTsNULAu9WCx5Akcw5Z3kD2=ytvDHKeQ7@DM-dj*$tx{B!aRdh6@DQ zw$3{ybo<&B!wpi2vNJ{qqylAkj4((h${XW*gHL&?_JnyJ_>pUor+k*SDIlJe5(x;s zNr;TqeQg>@7m6}Q+LrbFQ{>%(EI*0r7$qQ8D`f|aGLUSPT`)>PGEjDcIJfN7L;da? z@SZ6N^pa)y6ceu0000UtP)1w`Z%DWQmT`IZ5q$qVS; z08rqnj0Q~u7zLe8Ud|0mP?Bl#mE>0b8l%K@0rbHuNNc)T*_9f&0C^?+9b?G4^zIshhn7Jyad27qcDm3`E3c03yZYp^T;Tdr;l z?YJS*8P8{9`vNQ}Fl#*C$l0c(PKbJ72LO#5v+|oiGxv&`4gz2g>HtPg=uLz7^Frll zzhjn^jVFT`0nmj6`L(XuZVA{r1{KKgeb$6Xxwa43&Bu1_j1#gtdv~WcqDXR2ZdZY5 klC1N?r8FxMi}M0}0V>p7Fi)gc=l}o!07*qoM6N<$f(s>$DF6Tf literal 0 HcmV?d00001 diff --git a/share/dark_resources/export.png b/share/dark_resources/export.png new file mode 100644 index 0000000000000000000000000000000000000000..c1034ac75af57fe54d59e2e691eecd47cbd1fe50 GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%lRRAta^_Cm^sm-p zMT^Vpa*d2BM{*Y=%?)|RwD53Tg8;|f584U>C%9J@1P4mJ$X)fCpFh&vc*d+>vurL~ z@oVVZs};;-whr2#bJz06r?s;?H%{6nAGf_syNcn`w~dlziR^cPu4C|Y^>bP0l+XkK D{FPDs literal 0 HcmV?d00001 diff --git a/share/dark_resources/export_png32.png b/share/dark_resources/export_png32.png new file mode 100644 index 0000000000000000000000000000000000000000..9bff090f458802783d0d48fce6bfc4c0ac938d7d GIT binary patch literal 275 zcmV+u0qp*XP)Obd87-x>wv71<1}(2onG`Qclak zk?*GhAWBRJ@E~pgTI>-iPe*F#4Xr=%F literal 0 HcmV?d00001 diff --git a/share/dark_resources/fiducials_32.png b/share/dark_resources/fiducials_32.png new file mode 100644 index 0000000000000000000000000000000000000000..8df8779ca6453e8201b7c8e6a0fa6005b5da6f9b GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJHcuDFkO=p;(*pSpC~!D`eYW?f z*yNo%&ZL?+K3rUvT)DF0icn2f!M{oT3FVdQ&MBb@0GKI7xc~qF literal 0 HcmV?d00001 diff --git a/share/dark_resources/file16.png b/share/dark_resources/file16.png new file mode 100644 index 0000000000000000000000000000000000000000..4f219db2151d67d0a8266436d946112799f70c4b GIT binary patch literal 479 zcmV<50U-W~P)Hu2^4Be|lh0VEwaa&)%ae zVq;?yUAkoH;rxPprG|zE6bs-SGc&Up^78W8t5>i7i*A6Yr>E%e-@lvQym=!Y5D*ZE zYzR>XgocK4Ub=W`nVh`b&J)K^#1xklTf+ z5M@9}NJ!iJ_wNmm4dCJ9JH2uJ`g)=aurRa8efQy=2C@PC{QOr=pFTaEC<8h>JI#Lm z`Xz#F03##gtD2gcGdK+}H8q{7prDY2EhQow1Tx_Br_a;Qo;!;gjgeuImFqXHXRN5G zXvLR7J32b*0s;cQuUN672PGXeG&FEAFfe%i`1*qnp8*`)93L1M7`8PuH2eUm0|5W+ V^%3qs459!4002ovPDHLkV1g0++=l=F literal 0 HcmV?d00001 diff --git a/share/dark_resources/file32.png b/share/dark_resources/file32.png new file mode 100644 index 0000000000000000000000000000000000000000..2ea2f86bd5341c3c66719aab316695736e3c2772 GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJeoq(2kO=p;(;spjP~d2JefIrX zb1B|$i-Sz8CBB(oS^wE+RqGzDopqiKOPLt-vbz~pT;XNTcp$|g+MssPM_1EK#vv$4 z+ChKImopx{$qbvr{%|Lhq{bJ^1uBRfFq(2}<#x>p41MMgXY%F=r*XgFTEhN9cLDPS yTL;z+V*iirR8!G6bIn%|0XR#Z{XJClq3X&n<-ch7SV2#?jqG-2})ZO2#QWkZN5R^;#-vEAa@X~ z<$uAoGhPlK+;e^>!Kp1O!2)@-(7{KFw}&dOF$};GBkbb<(-a_s3EpuSfG>o{C!9wD z4=9G-0Q{hd3XUUzS9DQd19vFkC=wXp85aTg#16)&MFRK8VZI*X3$kcqmNLX$T;UBT z0r3kO=p;(+_eTP~dUCZhwA$ z{+k6Jno3^2{2w*8*-ehRDEG;LL4Wc>J_d&0Qzb+*ipRp57=3?3a*5Dosv#6bBkLYXhD9_oB1X9lWf;`XgDxK8S8Fh>ma3PmaI z<~2v3^Z89Io8y&L4=a`NdN`uO<_vX(FX!KVc4>-9_|wQ_QEjoqq|LGU0N6cg9Y1U;`tZg7XMh7r7J|{CBn?Y0TNz*%G|CT8i=}}F1YpxRQb2g2VQ)Bv==<;anv;o*ME+B-Wvh(v|pQ>R)!N#^Em zq@}0RA|mt~_glpAMS>TSJI?-MwOV0jLRhKB_U(PuUxY%ID~a@3S~F#|v!kQy?OXMU z@$pck(Ccz_wei%i1y5#UyuvN5~a#@*NL}v+y zi^+P3X3k}oPDk3i-YMS4^;VEOc9(&#(g01PO|AI=cLr362rx?x7o=fJdzQC6IJq#Y zb^|Yz+u{y{pgpP92sqa0WMM$nBk+?P7~b4lwGmj^@+V1v3L=0}aQGht-9&O2U)21H*R)}AAkG=r}oPf8mV170_ z+ReeiK{PoK=8>F~l$3p5G2TxuP654T;x)NTJT-Ntr?a}Ix_U*4ES}%1um8Haxw-CJ zj5^u6f9$}(6Z}@OSR5T6@0yd7W8_&n{1v-#qhxM7PypQ-r*r4ty_DtU<*_{tj~^H3 z<*DPnkYQiUBR;vb>}pQ0t3T7fzP{en*mz9r$-@FYsX~>*;S@DAG(1{rYHCW}7nz-# zD-CVP4b-I~bJw%JMtMsmkA1Pfy6MhXJY@Vf*r&4`T-IKtl7!qQqsI~}4v=vce!jkL zG}^~H*@FiU^2HKvU7dL46B*NjVU-DYmX>ok*OtS>!j^HhgPfYWI`%dkj$cysDFVcgcucwsukdtyVDay{k)X2ereyl7LAD~>O9`BaiS-)5i+EHU34{|nUi}R~Z7#}` zf-cp-nYCbuGvKHJD@!)Y=0Be3*aTfIg&I+7|3yEkHp|z$%1w%XlK!?5;OyXPUv5Xa F{14J$3XT8( literal 0 HcmV?d00001 diff --git a/share/dark_resources/flatcam_icon16.ico b/share/dark_resources/flatcam_icon16.ico new file mode 100644 index 0000000000000000000000000000000000000000..3c109e37c0f49df0036ab79a82fcfadd0886bbb3 GIT binary patch literal 1150 zcmZQzU<5(|0R|wcz>vYhz#zuJz@P!dKp~(AL>x%b5^w_z{}04T8A4S4h+kQho}EOM!R_5LW>)sbB|CLopCn0&yy-nt|$(^(RrF-xa9$ED%cq zv7CT_K%SG6({>;m6i4^~$o>+jf?y!M4v1H|xw*Y)ZEXd`tvyr@7lo`JS&bBsw&Zi7Dehnv7bP^7>I*_7!(G`*jGYA;{S{pGyY3S zNrA!xl)caa$lUKh43fvd!NI|Q|NsC0FCroWB+XLx3kqvyDd_JVhI8XW=9}_dE{IdmX)-u?W6mbWm#3l>-X#T zz1I?W^CGX%XN+-KhcUM5J`E7!ZQDZEb&ws!1FwaqG)xY0CeKAU7ZtgW}atWRTT-t@LDF$Spk^%O-O05EWYfGfIZ?^ zZ@w2Ga^K_9Iif{8%d%4($8?*wE;1{?G_t<$Ls1k!DODbo6TsHMvMkTTFdWk~Jzz1R z??4yBOL}1Xy!MQyT=S3v7s%%TwoeXgq|MRl;14jx^g|K3%(hGI1uIXW8RI_^o&W#< M07*qoM6N<$f-265`~Uy| literal 0 HcmV?d00001 diff --git a/share/dark_resources/flatcam_icon256.ico b/share/dark_resources/flatcam_icon256.ico new file mode 100644 index 0000000000000000000000000000000000000000..b9a6b7bfeaa3d1a681fd41359dad6fa141ccf24c GIT binary patch literal 4295 zcmcIoXH?V6690!lf;7Q`fHVa`dI?2}1XKv2gLEOlMS2J6C5b3rOB89+QBe^@KuG8% zf&xlWdWT5W&>|2Z1jEaHpWny(ww#@_GdpK?&YbzpE&za-{htN`#DNdI0Km_r?^{_Q zxH*J4m?SsS_?pc>+ka|WWo4)e|R>uYFoz__?jM(Ve{v&C*tU4XvznvdnIJZ3= z(SI47CW-tXBiFWc;B;zkuMgIVC_@Z%KS9|@Jt1VTgUq=ITEGlp<1xpLwWAc4lqmvL z>;lJcopOmr%9sNctPGBE;($n#8MPn2qt%2#0~Hr?w2b|299WJxgQ$9kSAt>gw&cpU8fTAOKlb{u}F z{LU`Jn1yuh`I(pt@7PRLXxf60y3?gCc^uplBV*?8OSdD$5>FXz&p%X3nF?-F$WPe% z;?xI0K^nJa%xvhtAiLH+P?suqgP7e3pC{zSrEsl`o+XdAvw_>oeI66lUQTz3BU&Nv z_+qc7k}V+o=?OU7z8}{~$B`C)UPld?YleNhyr&#Ce+{_8o?%iPeV>;Fcx`h(yrFl< z65f~TfI_0t=v-OWG`;;}UvP+FRtw37+_iY3g%Fz9ts0JuB!x`k{XD4TkzxyKfOXF4 zwMl}U%dG)JYV8kA>yAI?J3>x8jYHI^x&2yO<6>TzqEbSo-XSjc<#qJtz*bAAw%>Y~ z5X~js&Jt?s!kqBF)-wf3l6!M#^kiHncJFs1CWUq~*L?-Qc%!kgvAw@Q=ZR25O>NBY zc|4WQTF-KN1NFH1*keYJ%V@b%`i+%J`G~!Z8EXFdLk-bvrQz^2?vSpK?eGb&XLrF+ zo<)tV<2<+N8%;_Ew`}yz)B2H z8)zFu>7cJ2(CJz+6!#aaYwPRg^uZaY(c)YI7E+$D*5oE0ekCz6vD~e#H8nERN0ah~%DgWngd0W@wg+Y1!WXi+iG9 z6OytyFj(@w&@8gH>+1ZaHg@mIJ;uEMT>>MQN8a=SheoN*{>C7B*dwydh zc=Y{^u6(Ts|3;|00yF-5yt3q-+F{>x)1y>EKt98+IqWm$1;yUFGww z(AGeCr}l@OeR=m^@CbLo;+hV!5+kXmFy-XYl{v+8}+$j;LxL>cU zLVvW&?^dFF69Wi2A<797%XYKie)%^}Ldjvoh+!Hd>ej7050zRk1(74WFZoo-E(1Zl3#{J*(yukV9K0v$NH(m2R9xpODip%Y$@!vwb$F*MUpU49PDo zLe7*t4&FYC%%pLZ{a*I4F6lKx6LA`+!4$XQ?jLn{GL6UEL9zp0Jjr@h)C`L#XU>s;5wpfAvP3@$T6Kz$W6g=7#* zYz`E*@<40E?L!kY@dn-%2kepfAH5ONtv?w##8+2tq(1egC!|rI4(e~2zuQB$!Ws6R zJq`invlr*YE~XnRN*8kWie8lFI&1~+vt9xM*=9ktfF&5N*f_r)EJ!n>!`*I53~MwR zSIGS=-~D7i5(vY{+Ziz)s+4B-ci}4ZXD5FjPqt-E)9IR|z2?Km1I@EPO^o}>3&6l+ zTcVBYnz+p;EA$nG*qhk*BzEH>nS zEq3YsIJvH+3Ht81@d4>sJ3qWF7J0vIQPIt=epfa7{#W8cv(Zmw%C?)ag>)H6m;3DtDbTm!gT=6gPL)WqZNK)a zd}CA71m5pto<`6-fVP$HOZftlxb@WC@ z3isJ|t9v{m98chknEJ&uQ~%3~p}dxS9N^~zNhvp*aFew7xVV(a!|;ZL;cvWG#@o>7 z7|KUzKw?|%scHKk2+Ye!macRc)p&JE?BfLfV0wrGqVn{)T2oP=U7c%FY#kWWIH|3>6|6wo{}X z=|5f{wooN=w|Q-Uch`L)8VpCOZq+qA)p(Ck516VD20 z($Z3_$333q&t~!&=dlWP|ub}Dcbsamuh60>c zHb<$!zP-8Y5oA^IKll2IGqEsipP<5~<7oP{R1?aLZS?zikNX~Y1%!56zi;|XacKY{ zCPLNnAVnNCMy@(G$ArE2;d?C6kX&_sL>7keBOaypbszQRle0VT506)9MJ(T0DMITp zYlW5U;-f5u8|@EH%XO+QI9mIfvRwijd$Le;L(hGAoacSk9u=(<>JVku^T~^eVc%=- zpOjWbGZNzB;<8~rJg%;;fm5|O>grgHM+am!cBR01j3yMyXGJ{^BGh>ofif_-Va+WE z(Yds+nQGgHbH3JHLW)dC^pENj24;voH(~2-njLXVuLnn)dqfP?jr%Hdz@%WNgFaR^ zX?18X{d!0&86I2qpPJW7dnbM2c`VpHPJ}8j9qSx~*E#-kX*{U3M3|*elGcddIm%TB zP~xso0p0aBo#Mt*K`az*@)4&&=2(kiIQ*Jlwl^0hXBhplU(CzuiIGm;Vt)&@7bD7M zaj|jUU!+d}IK#Wr4NucSDq;>Wu~i0_JFMKr7F{3(5Q}`A z^E#UnpXZx~e@m`GdLv=Rin!ThfzaBt1OxJE(oD**t(_n+@y$@toT!;QLT#pejqEwJ-p!fm3T~MREOs$L>sYx^aR@>lO^X>HcX71V{rlRa3AUb za8U18Um9p!*_S59;sA{^wP_x zFwAvKq35Aqs=0DziaZ+H6})LiYUUbsus(*1K*U-&q^zdf1ax`=xctnUFGf}?|5oz^ zjAj4+e}mz_=Vx_Q-~no{o-b+c?;tCGqV{VKBl0Q3eNl?%^S0+y5nxwrVeg15P~k04 p>Me#QhfC4_eANH5S$g_Vtf2JSqI+y?3iB%hKpI+HtGMER`#*qw21)<` literal 0 HcmV?d00001 diff --git a/share/dark_resources/flatcam_icon256.png b/share/dark_resources/flatcam_icon256.png new file mode 100644 index 0000000000000000000000000000000000000000..77d3840f8bf7f733996e7a674e8f1d7d30140af4 GIT binary patch literal 4401 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 PKt2Nm3&w-!XO>yHQ={lDDRq#{0DDL*(-g7?f zr#ZF%cmF-M-`d9B>wnGX{>Q0*$9jJ!ZiP$m1HQmv@LMM_kUjVoqOcx5z*ATae(N*_ z;{OiBpF67h2+tr0erw|2zyEUm1AaH3`n~<%K<+)vKmryi5{Wn@4#64NyXeDzJL&b8 zDhELJ) zgZ!oDPT22aAIE3Y>9i@8N+uSIiT@E8N6YyysT&9cR*}2{kKxpk0i!2I@*lnY&>0i| zh5h}BPHh_6t>p*Ey&-0iV=p?&Alb+A3~=AegaKpLlD`d~Eq96QV3=gy1CTWcvIg1X zqv{b8Ofs1?sZ^?4>$%4wYZ!N3=3AZ+Z-IQDVaT|LV2Z_}ZnauQs8lM_PpNkvyhzsI z?n8Gio?LdJA((NtZ~9}&-3M*si- literal 0 HcmV?d00001 diff --git a/share/dark_resources/flatcam_icon32.png b/share/dark_resources/flatcam_icon32.png new file mode 100644 index 0000000000000000000000000000000000000000..13e403350d9ea699f0379ac0f9f4a90484e7b1b8 GIT binary patch literal 359 zcmV-t0hs=YP)9~T09=Ix%yyGz5&UhtTbdPHEDZ0P zH*ZQn@Z$^pSRa%D5JKo#bA*tMrgDI;>!@j(;5ZJ``Uv2v3(>JH%R-ByV2_t&3G+N3 zATAw{70>gW4#R*j#tdK_N3d-hvMk%Ua0(zRzB*(W22InHY1DO1r)lClAQ~Rt7}obR zO#=ua2!eo>a5Jz6*cb4G*ZZQ497b>#z^mKMDxNi?6hOo+4Iu4+Y-Tpn2XhUa-;S=Rjkypyr-dq|Q5!Z3s=itYv2+qd6kA=Cic0qub7N_|tW?B7rn<_TTw!y%W4;}ZY?002ovPDHLk FV1jTolpp{A literal 0 HcmV?d00001 diff --git a/share/dark_resources/flatcam_icon32_green.png b/share/dark_resources/flatcam_icon32_green.png new file mode 100644 index 0000000000000000000000000000000000000000..e100c6aaade366de8a7c8624e045bbcd5bd9f8fd GIT binary patch literal 994 zcmeAS@N?(olHy`uVBq!ia0vp^Qa~)j!3-ol&c;6kQY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fI?cr zXF0(dcbn%Pv*;U%hPO}LOx30ssrDOB)VOu#tlY&5rJ1I(!9WWclf2zsO77>b$OUpZ z3p^r=85nGV3BtC8@#>oOB|t&;5>H=O_Q#xJLdNWYr}d11Lccs+978nDCnp?W>G4^) z@{A784Tfwj>1r+Zma`|1o^57WX|t!M=Fdu|1j&OTA_`Nc&6_t-lV_5kr?04}a66-6 zXUNGlI{!j6+1N4{$Vo<~?0yood2{g7MxNFXImwW8k8W)(Elp-gt(B{?GWJF{^$Jpq2P;o}k z!j(2F6CLiiC40Ftv?@1RbVUVSbV!^KYd9llW8p{6PS1}gH6@G~UhMI>kTgpKm@ODo zOI#yLQW8s2t&)pUffR$0fuW_Yfu*jIQHY_1m8qeXfw{JUiIstY*Tl>dC>nC}Q!>*k Vaci(Xa}gBu44$rjF6*2UngG!IRtf+B literal 0 HcmV?d00001 diff --git a/share/dark_resources/flatcam_icon48.ico b/share/dark_resources/flatcam_icon48.ico new file mode 100644 index 0000000000000000000000000000000000000000..84c1c5e3d7f869c296cecab6f86d01dae75e789d GIT binary patch literal 9662 zcmeHNOK1~87~YW7sv$-Yq*yd9H5kE2qo7o*!GfZA5HEt@p_+pa^e9ph8Y1FJuthxO zQU&p-h_71@Qo&0P9)gEzJXm5yV`_ZY9lvk0qtm62n9a6Z-LHK8Xa9M9^Y3(KcBrQL z@YCL|;dhI6E2?QLHBF0waB1Bj{T{ps%wYt!qObelZH3p7UIg9*?0-vfNJ4ZP)-oQvY|P4=Dlo(spp&RpKQ$}^S4_io@Q*b$HHlOzrN`rO zc_!yKo|E_+{j=#vq5$Ll7A$~Vznn%r^-Ha*k!X|;4qGSmJ1lup^Pc`m;h6J>e=Yt; z<~)M-I^^EUeMYX=50PGKugO_!uSbbv;5m?Y!aQfyidCp+y({NF>lAo?;vLfj$hgtI z2d{uWuofIgC7#XH_rNjK`#qdD`w)J=UxY#-5eNj>r{ra%YX!$3+fnCIu+|1G^)|}( zBaw)n&1S{W(2y7y7!a{ojQzW}J}x>tJ7v3hJL1i{>RgiT*2C(pt*wS$ zRX@+#IIqg~b9Kd_2l$QWcC3Lwe$&e_(B1&of(s4)g(moa)mvGx zFzF2Zu@lRC;lUxQPFCN}4zNhtw!IgOc6LO3hD~awO`BF!@{{68CEx5fS*4Ab<-$S? r_97mQut`|7nx-AZOo_neP0RlZ;WKx3TEHj=Yt)C$i;ACmn6KJjN_%Acs_W#sJ! zZ+FeznO!TH*U6h%=XcMUJJ%BU@;~zB`XQ76x~@}Q*SWNDEegUVCfezH++ach;3nRL za)JmQz;d~SVzCJ8^&0Z|{F5nm5NH6NYKcUy+wEH0N23uOk4NjXFo2)pr_(9yb~}hh zqd*7&N-10}7s%yuP%fA65JCWcif7^$iv_G!D~QMA7QpFrf>Nmjg+f6Lz;E$PU9Z=p z+wGQQG8ro}`~4oW*(_}~oA;=Da=>eQ<2?tD&!0>tRMRw)PN(5;I6%MOr@I;Us= zzr{ba$frACFc`q~dWCko?RtROKOMV}lX%`6lGgzzh}Zq-dmw0lzl{I8jo%dv<-og# zVXH1vTS!lSZQftyb%E4qy*uBog`QbUGUEfQE^YCkI{u-bDcm96A7u zAne*e9KedgtXBX|KejPd6j`erP!5RX2m4mS?DyDvKv1LWcH1+69TPqoBL(pAVha7L zUPiQ(1Ihux9H|JY2&o7OR^ZdyKXUoVg#LPfUkDawKq4xJlmGw#07*qoM6N<$f|2SN A2LJ#7 literal 0 HcmV?d00001 diff --git a/share/dark_resources/flipx.png b/share/dark_resources/flipx.png new file mode 100644 index 0000000000000000000000000000000000000000..b86b99c2c3c2eec3ed81d7f0e5ce63b583179770 GIT binary patch literal 514 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YDR+ueoXe|!I#{XiaP zfk$L914Ee%2s17}Q~@%cy~NYkmHja%zmT$7`Y{!t$qW}fT^vI+&gWiO>+h5(!v3Ir zy7UE?3k{nc3wKMa+;A{A7n)taZl>frHWRa^9w))s0j(dB9QM}SxqQy@{Lj|lq8R;m zA0L{^w=OPCdT?rM;}VG_i?-?qMzJ)l^ASni_0xvEv~#Dz4DT!Y2Pb#R-k4co!)|K6 zY=5jl>FP4BsYKdz^NlIc#s#S7PDv)9@GBC8%HL%n*Gz~GdurfBaGBwdQFtIW)s9Cb*CyIvL z{FKbJO57TFfAY8jHAsSN2+mI{DNig)WhgH%*UQYyE>2D?NY%?PN}v7CMhd8i!PC{x JWt~$(696T0vaA3A literal 0 HcmV?d00001 diff --git a/share/dark_resources/flipy.png b/share/dark_resources/flipy.png new file mode 100644 index 0000000000000000000000000000000000000000..a4a0392bf211bc89789c138c8e5d6606794691c0 GIT binary patch literal 522 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YDR+ueoXe|!I#{XiaP zfk$L914Ee%2s17}Q~@%cy~NYkmHja%zmT$7`Y{!t$qY9bM)i+ zw{e<_GCCY?xwIE_v~_4iJF!fhcW9~li`c3LxkZK@3p90BsK!VsdE`#$Q25WQRe6PWSj%mmQX5#JgUfnV$H_By7!- z1GA!+v%S<133;ozK^`gYP2MWX_vR~Yr8_FwvZ!c%o#rdhRnNOL6 zOY51h8JbPkckH+b^rLEtYeY#(Vo9o1a#1RfVlXl=wA3}Q)HO5>F|@EUHnlP}(Kax# zGBBuFvgId=hTQy=%(P0}8hC&5xB@juf@}!RPb(=;EJ|f4FE7{2%*!rLPAo{(%P&fw T{mw=TsEEPS)z4*}Q$iB}(OJEt literal 0 HcmV?d00001 diff --git a/share/dark_resources/floppy16.png b/share/dark_resources/floppy16.png new file mode 100644 index 0000000000000000000000000000000000000000..c3beb9c7566b4985209cd1e2e17837abc5db1bef GIT binary patch literal 458 zcmV;*0X6=KP)$!U@EycHaNvNXgM-6!m>ftQBTO?$ zaN3kBWl|MiLSd=RoYq6DFT}`{AuQqo=1QyScgf z4^j=7GI`1!M<+)O6ayyoO?aTJs%&uf?Aebn7X$3U@RyqP=cu;$pCByV>MvjoOw5_ZLK$b|Nfm5n`66R8!@fak zz@bBjYVO{?8 zFDo_!K79D_*VfiHA0#(_{``xHiHSzwOp~6TUbKGQ`kbunEJb26=ggTi?}dbfbWEN+ zc{VIJGI4QnDYCGza1mp`&!0a(|NQy$J}5T=0Qwr@rygTQ`v3p{07*qoM6N<$f^M|S A&Hw-a literal 0 HcmV?d00001 diff --git a/share/dark_resources/floppy32.png b/share/dark_resources/floppy32.png new file mode 100644 index 0000000000000000000000000000000000000000..0c1e48527f3499a08d4b804366c48df960f30911 GIT binary patch literal 373 zcmV-*0gC>KP)%_lHDl&0WmNcOeTX!Pd!(+ z(>=N8T%DxzY^U$@ectE$`Tls$sVI0=3g#(+zpi*v(m@>K6UU$v4fT-fr0amDO`ky zdcd1RBtgo&5mt{n!}Om9uA@CAhb!1bYqakn6i&!tt_augma#wPF_agWkyUqlrX2oX z;3uA&2(PVX7&IhlX#V9UfPHw1{tW@Qah;rn4Zc7ai{p673cSTpgOJ*70T_mQ2^6lU z>hKOZEG12=r?P0il_|Vv2CyITC%DH(j>dn)BF>}l6~ZN6etG8*^9Ps0e`dY_hn9CC T5osu{00000NkvXXu0mjfBv_uR literal 0 HcmV?d00001 diff --git a/share/dark_resources/folder16.png b/share/dark_resources/folder16.png new file mode 100644 index 0000000000000000000000000000000000000000..3da9da26e4bcc553a515408d69394c8a621b6aa3 GIT binary patch literal 367 zcmV-#0g(QQP)XlQ8o52B||ojO5SSlH;v<0q;h zJ|7?7CmwE|<#+GjHA6AvAH(-r z|FE;Oo7~gWvkabKLPJB@I5;?1@fpC$$q6&y@8rpoe}eN1F;2#(1^`1?mq`*Mn?L{n N002ovPDHLkV1fs>s*3;s literal 0 HcmV?d00001 diff --git a/share/dark_resources/folder32.png b/share/dark_resources/folder32.png new file mode 100644 index 0000000000000000000000000000000000000000..10eb3f360b117a5d4c917140a05678d603f39f52 GIT binary patch literal 391 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=hEVF#37AIEF;HC#Ogx9I!a>&A7*k zL77EFL_}xCj2VX{BqU~VxSTJxwA^`*nVs*?LKUe%83lE9^%+y9eCdl|7T1jmDSUr# zuV2#DNl8iP4yi~>NfoFC zq^71Wzj5QnUW2XOV!B!?*BJi;!Pz56w)}c`clUaSst40dOicc?OB&Vxt6AI5FCTY2 zeZ{0nmp<*-v4bN?*DY*&#mA%x%nmPkb~AtYDVH{3&6+hKMMa;2i)0usF>hwh<`8(y zutM>_xK4zE#~NiJA)$MV-3?v&6s{$yct5=8GgUyM^gsqjPaBN5pu^%}Iz#4bMYeMh zkBaO0MXudu_ji|{=U?i&1PG3uI5Feb|Nr%2K|IQ#Z-Gv&H#9UnyQ}*9J6RF-30VSL huk@FlWwT*n_^W(badq{icwhiCc)I$ztaD0e0su18pZx#; literal 0 HcmV?d00001 diff --git a/share/dark_resources/folder32_Excellon.png b/share/dark_resources/folder32_Excellon.png new file mode 100644 index 0000000000000000000000000000000000000000..3467b86df1de1a3b14b24edabcd89510791ead03 GIT binary patch literal 453 zcmV;$0XqJPP)p69)b3Sx{e2qBlE^-Xm(09945UDrM9BN)fAl4aR*pFP#u62LHw1Iw}=`65DS zV?cFXKeBE6f!AV;&qV0Q9QMYYMOTIIF2c5T&;_u zhyk#iH3PKWJr`0GW!LxpmmvUb5BF&7fC#`^goa_b5`}PG_v817w*n9~u9%i%9@GKT zG)sXt^CU?c16<8nZvatq4%P(mZvc~bV3R>tCPwSP>;PSNI{65?0NDBx!lo{b7Q!Ki z5I?#HAH}mDM2uV%Vv?soB>7!6!Wrli8e_fnWi*CCn+C@Co)B_e`y$dbZBLfvQ%dR1 vlmL{{PXNG8p66K&U`o?A?d8{O_7402T;BsQs=YGj00000NkvXXu0mjf9~Qy1 literal 0 HcmV?d00001 diff --git a/share/dark_resources/folder32_bis.png b/share/dark_resources/folder32_bis.png new file mode 100644 index 0000000000000000000000000000000000000000..ce7b57206a616ff97945ddcf36139ad4c979e058 GIT binary patch literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^l0YoN!3HEN%BSrGQqw(M978<3w@wY@JD|Yf{QT_B zpJJ0{8iaY~UdaD&QR|eMb=w!~F zjV6cGI+`}{@7uIpbkbYfMJdvY_Aze~yLFYbK!Y{#n=;?8<`P{6-awHBta?*R9RBnf zDTs1xs^$!2II$|olbt26hQsA$^P)}NyiUvVB)|F?M++h(Pgg&e IbxsLQ01Ws{fdBvi literal 0 HcmV?d00001 diff --git a/share/dark_resources/folder32_gerber.png b/share/dark_resources/folder32_gerber.png new file mode 100644 index 0000000000000000000000000000000000000000..a3a0763b3b33158df542ca7c190ed093324be2e2 GIT binary patch literal 456 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 MF6W&E+kJlhFTUg|p#T5? literal 0 HcmV?d00001 diff --git a/share/dark_resources/gear32.png b/share/dark_resources/gear32.png new file mode 100644 index 0000000000000000000000000000000000000000..0977265ba4c3b0c6573989be7a862df12d81a4b0 GIT binary patch literal 452 zcmV;#0XzPQP)YE9LK-evP1_9oy1TOVqc;@L_uvcNlMK-q>z#|L&p$`*gi+GRr(;Y;8qZfTZYPs zm6%-aE=fa|WW2lF_jBLx@BTvL`6h$~!RhXtp?Wcic zMnD6YOeXl)Zkc)C_IkK#x2pm0eIM_e4HMwrFmR!&)c}xL9|i+7o6Ss!OHG5W>(v3g z1pywXQ>wshK1Yz@P*x!p+J;|Y2xmNoEX#i&PqP^Y!yzoo`Uh8P8~$D}saubNkl_xIj~8^VD9h6bD;k%8Mz zFiIdwK(GVR2njY&xIB;qG)?Qek!hMHbx)~_Sm!@a=DDEuH)I_A`*$jKWM`+@OondPiJR6johk%uZ;#i?C<0L z$cQVXUajKC#f9thKn-{u;!>%E?}hYHo+b2Cai5Dv?B)lo; zbUJu6F#%OoNj;T_Gy`u`70G0h1hNFrS64ALJx%IEF>rWrfN!l931b($+up{Xn;Wtw z6a$}6PEbEPBVp`<%FYgcUtg0op%^eJ3Y(jV$KxcBC3v~EhR5UMq&_qQ%S%hh%*~NN zmf%S`jchhc>O(W|>G&9pS`D#SjD&ix>-c$jN$PqpPS1;m=@zo@MfMM1OK#Fx`k literal 0 HcmV?d00001 diff --git a/share/dark_resources/geometry16.png b/share/dark_resources/geometry16.png new file mode 100644 index 0000000000000000000000000000000000000000..5c275bfb50309af0f78922c563f72a54e86a7384 GIT binary patch literal 693 zcmV;m0!safP)DFma33cE7m8h8mRMdHTMO|NnOm-#LeH%Ak|@B}rnM z&g=C$hK7bBk|dRVrGq9IA0K~FSy^c~4lEQ3mfG4{YkPaUf#-P&g+e@la`HnimrDtP@SKSD?RGnxot^dQbhA+-~z6DeqTHuZ(CekY?_&w+27jQ zy6f?H-u{_|QU&>Z{=3iTyG%r%7-JOxxasNX?B3pgwu{Ua!B$7;`xs4lb2SH5>tG7qi*?etCKMiXaFt z0X)=tZn0QCtEw73EY9U}+lr#}{RQB8{+b{N&p3`N5)q2UqCS(!_!UKw|F_;r4%zn z-7I4X8Ft1thFut|?PjggSWBZu>r+Gq$9eW{oO9wVldQ|$yZ^)c|GoeB;dx-_KM(x3 zpCAZsaBxu4+1a@=JUo1fWm$1YM+Y%5Fi_Oh)kP5mvB9%J@aDe0K3{EZ?O0=D;{-WH zI$4%2!kRHW5{Wd|)zv-XAN&)t4iJe%T8G0CiAJK=qA#NjHoNU8Ns`WNHd~D2xXI;m zxvQ(If9Q0&b3HvhDvF}!c~~Bx)oMkRm6gX41gVfprJkjwr6z$u0E@-qd5+^Y(KKBF zb1;y~rBBjSx+zVkV`{b9%O}YLs;a8aw6?bPJ4c-_6y=IBgTc_p*C!uNj)E+ZS*=zh zuV-dv+UDlwu5@>I?{c|ZEr~?pK^{=Py*yy+uo?V5|J@A8&_<*26kqo|_KbiWkl{Gq z%xkaLdn1?2X)p|H8W|aJCzDAlY&M&P(P%Wvv0R~Qk7^>7O6~ss?YlOgY)4f903iRG z{Mx{4Wu2w8eKoDdWhGAr7 zWo0J>L0oZhag5`*97Rzz1qB6^&*$sSCkQfTE}qMbWnVbPFF+_1 zx)6`YjqUC2x^Ot$69@#(=K&6fdJH-;N8N4QNp}6624(IH>)_2xg|Js}I zkq3Qb|9AoT|3!c?_9cKc0ABz&1h7v;e|xL7phbW&mSnTp^b(0AojbEytq!SF8p5BQ zPUkOzAhZyX<$VyJ0BW_GJw+vVcXvA)jV8@xGEsMTH*IciqM@MyQ&UsO%gcjStF?!P zg;_*VEFdDIyUlYxDVbUNJJ+@PkW2J!LnezO%97l*2< zs^3FHLsNnRu(q~__4RcmB_*MvqQWo0<>e(tM@Q{~AbdhZHohRB6dWBLVRm*FGMNl2 zmC7%`{{B7;1_Ph>IT5`J7+`L04u^+_$jQk;ety1R0GrJQwOVbFNF)&-l!AkU0}Krf zVPj(hN~IF*?d|_LYi(`C$jAup@9+Hr6c!db($mvdMN$0jNdV#D;rhP5zUt=YW-Ki& zAv-%8XJ=<9D=R}~Wu?o8)9FN4R~NFfvQS)H>=okr`WnN-!@RG2OGLl<1z?PQb$WWb z9TgSzSxZX`qNAf-`JSJjcge20x*Dmesp#qH!PeH6>w8^Y9WpaBA3@yS-lDg+mrL+R zB6{Pu5i!PIIUJ6k&1SPyp->3?j~|9ss|9Z?<>lq*@9ziC>-hM%>s?V%5mr`Ku)V#F zi;D{+Cnuwzpumxsm?#jD7Qhb=)$cU|jIlfbD|)@2H8wVqd%oStc}NEb2QfA_28-q2 z7H>A2p-?E0k&ywpT#l=&s~fpo{wsi=h-lMOejdq?F_r~jlZUsowA5!|ac4U_J2*c- ze>87kU;rH*9lYv&O5GEHV7J@<(r7dhf*^PWn3z)hnJ!5P>HZ~UZ_4OVZxa5wHk8yHx;xkRp1^CqI zbXt^3rO4&={+OJcboB$3O0_DJ$#~HQHwE09&1PHO-QE30r_=G8fcwSe*3{Hw4G9T} zAfj8JA@K9jYlSk#6pXQ1BJx;?4u|8dD2lHGan9HJln7%?3V;`)2!NmO-0y!9(UXpB lz955kD1B}uUI1Pq@DC-;g)luSL!STu002ovPDHLkV1ft-(9Qq= literal 0 HcmV?d00001 diff --git a/share/dark_resources/graylight12.png b/share/dark_resources/graylight12.png new file mode 100644 index 0000000000000000000000000000000000000000..0e7251dbf968fcee098f12ba7a0db3bce83230f2 GIT binary patch literal 501 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$0wn*`OvwRKEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE?e4H=O_Q#z3LduFyL>G1eg${eVIEF}EE}gJ3iz!fq_4&QM z{~Wv8U-D+YS+um(HA`{-gJqwZFLhsa(&9eqB;d%TnY#aglXmvmcbmmtT}V`<;yxP!WTttDnm{r-UW|i6XML literal 0 HcmV?d00001 diff --git a/share/dark_resources/green32.png b/share/dark_resources/green32.png new file mode 100644 index 0000000000000000000000000000000000000000..d9b31db31bf3e08cbf102ba46afa89474af02e6c GIT binary patch literal 459 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fgp&Q^6;tHgF)&zU65AfdL z@3+yL2Muilv*DEB!Mb9961bu6mLn8UoeAeTDeO0uPn9Hil3Rn z5#h^#5{yaS?k)@+tg;?J4rhT!WHAE+-w_aIoT|+y4HRTA@$_|Nf6ODsz-}xfeo-DM z(yEr+qAXP8FD1G)j8!4b722WQ%mvv4FO#qN(f8YQB literal 0 HcmV?d00001 diff --git a/share/dark_resources/greenlight12.png b/share/dark_resources/greenlight12.png new file mode 100644 index 0000000000000000000000000000000000000000..a90860e516ef8baced4a9af09bd9cf58030e95bb GIT binary patch literal 569 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$3?vg*uel1OSkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP$DP5C&cyt|NlTH2(U1M z5QxFR0I~thkN~rQB0%KK2@-b$xrc!XtR5;0)&-PeWn}Q;Vki+{SSHSJPKIHHI71;n zLlHm2QZa^HexOALH`6nLdZkK&{DK)6({_E3KK_^K=k6 z)5S4_Nb;~@a;yI4YrZpI*8jZMa`RwTWo*#xhdU1( z%bd5|@Qb-{0oU^j&BptHwyKu6MwFx^mZVxG7o`Fz1|tJQOI-s?T|?6lLklZoQ!8U* zZ37c41B3dU<_{5WIkPPr0e>b)&0ki-(ux7K_yk!{1>wdp~-vw}Nl}e>KMNz)Twfag3;Y%bEJC#ah ziVjnyb}nt5Y3}$Kz+g zVDLXPZxGQ(B6==_ctk`$rIhQ;{KK~GlXAJdKXnH)kI?CK8mg)u5z$jAWdpziBDy1` zJOr==;J~u1+lFB*4F-dIS1xffnUvG%^!t21|CX73nx<_R3WaTt$MZFnN_G5x|MAoj pZgSRFUgC8jF2Hq#m+NN!##6!@;SuocG)Mpd002ovPDHLkV1i5Y-&p_v literal 0 HcmV?d00001 diff --git a/share/dark_resources/grid32.png b/share/dark_resources/grid32.png new file mode 100644 index 0000000000000000000000000000000000000000..d7ac5083d31af8a61534d0e28d823fde0cf4c378 GIT binary patch literal 850 zcmV-Y1FigtP)S?v2H!1CHc5~+!H#~7OjFs37JdYpl`Q7jDd%ow~a}n}9 zFwgIYZ2?=)0aaCLGjpM;>Q7Do;=u0&3=R%H?da$@$psD!3@ms&p8aOQKA*3*ySw{p zUteFev$IoP+f2>^%ny3K-qPvm>4oz0@}5vAbek7#Y;1hIyu4gBGBR?Av#zeL+GH|0 zUshJu77m94oZId8PacnF?_UWR8XDSdwOW@D@tn)$ddQ0ggTX-nIOcY{PjD6rg&d5r zG-K>kOH0cW&TDFF-s`%)GnGn}nq66U31((yF1cK;SE49VHk&P!Bx#(8dH`UG7eK@w zBB}y_i>9In5b*&KT?T+>29L#J6`H2?3W6Z!EWnuPa5%tXv1~Y#KA#U{S%zRR_%UYz z$z<|OQ&Uq~k|bh`6(QoBAP858Xo4$ZjHyI)L=?sICRfTBV{yjV1yK~|3_dzKYS%O^ zgou`$1(?HFf7bwvn4j0?HvHPbzOhN?Y3I2J^-lIb=}EXK|w(U z5xrPhS&Uq#*_+MH&Ce|s3lY&S00<)DEdZG1-4am; z030^9qlp$Y?{Z7k1^k<*PR8jaS;vOGUNK7PmPbawIC z;cz&W$z<%Ut*u3zX_|JrzP^4U7K^D34GrqrPif8($+Q{{`C) c{A&lk0pPbNKbEmU@Bjb+07*qoM6N<$g5bS(asU7T literal 0 HcmV?d00001 diff --git a/share/dark_resources/grid32_menu.png b/share/dark_resources/grid32_menu.png new file mode 100644 index 0000000000000000000000000000000000000000..ae0952f5120ea624c5086f7dc978a194c1eff2b8 GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJGEW!BkO=p;)1$c#DDbd+eO6uU zdLgNnm1~#N_4^Hy$6XecKY4oc=Urw7g*gq3AFRI2WzbDE3g+oe3fr?STk6N8156P| zcWVnY@Vu$xKBKpQc?DaF1KW#S5B31w6AX79=H1`*|Io&TQ|`5yG~De>|9$_n`Jc6o Z9JWgw43@8SW(2x`!PC{xWt~$(69A11L!STu literal 0 HcmV?d00001 diff --git a/share/dark_resources/help.png b/share/dark_resources/help.png new file mode 100644 index 0000000000000000000000000000000000000000..0bf6b9be5aff85c55a13a29675e3c075a6323ba2 GIT binary patch literal 422 zcmV;X0a^ZuP)*|PcmWC_r^I(hN0t=!xvU&D!cXl};!?LCWvmg-h)h1TH z!(I0S+7qbwZh&YvdW4@^;1Y^-#3Gym;B~|!oC<)}cEmbY2}KC%jk!F)7t(1AKZ+}x(@?Cj^>y?ghA$aKZY&CP9i`}XZK@Gx+2aA0w8aQF=~VCBk{Cw+W;W-&7} zGi=(pDJ3jC%n~N|?AbH6S+iz=)#5Z@^XARd&z?P-1yW>XZZ*-((+wPrAV8D>n>KBl zcJAD{Y>)42TSU3}pareZW$~fSIZQ0000(^b literal 0 HcmV?d00001 diff --git a/share/dark_resources/image32.png b/share/dark_resources/image32.png new file mode 100644 index 0000000000000000000000000000000000000000..3503791afdcfcf8947c90c9eaeb23afe5bc4aa4c GIT binary patch literal 305 zcmV-10nYx3P)mfL?LULF-w#{sI^&er~JTVHsj5z+OatFe~Vt02th94z$|%5dcgt z6JTu|&Oo%)h5}fVveyZ>1KOkxiK<&i&*Ui-b8EqCA#*Q**F9;2Be00000NkvXXu0mjf D`j>yr literal 0 HcmV?d00001 diff --git a/share/dark_resources/import.png b/share/dark_resources/import.png new file mode 100644 index 0000000000000000000000000000000000000000..f42002d7c4b24faecaddf3c6a7cf584ee70ed06e GIT binary patch literal 213 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%b39!fLp;3SP7CB~P~dSsezv@r zmyJg+s`Dl@DK1m5pv+w|%2f{VTDOgG;z)egGId1k{FY1PV<4xl?3 NJYD@<);T3K0RT9HQZWDk literal 0 HcmV?d00001 diff --git a/share/dark_resources/info16.png b/share/dark_resources/info16.png new file mode 100644 index 0000000000000000000000000000000000000000..11847e5bbef1cfdb9b8b5469580fa91de2e8c88e GIT binary patch literal 603 zcmV-h0;K(kP)hY z@BO`x$cA7VASgU7D<^B=-@kvqPMSDrClfQ%-}3Tu^A8_B7|xtI)AG}&PqjD=5EmCW zH#RnoH8V5IW?*1oUAkoH5k6kNx4!~)#hnFTd9HIG3Gyu7^Hxw*MtuU@^n55#Y3YSNxKabnrqw{PPy4B+GAiw+J97Ms6t zem_hyGc(hciHYgm)TvXi!o)&DL)-W6-MjDIyLY=mVqh1Dh=}ltii$1|4-b!MXlVEX z4SCk9SFdhkU|@LvQmBE&iD28ZGtI` zii#54yL<0x4o;5mib{%x2M!$g1CvWnPfuR4Vg=jBj~}NqIy*ZH-?(vOFE20eoQQ~s z$uLDzrcB8+GBPq`U|{%p`t<2*`T6)K2#>F?@3)4AhOMowt;)ZD z|JJ~3z~sr3U*zQE$Y*3^{P_R>Kf|n9v%p@QIB{ZoX=!QDuV25^2^x@_n=6r?p8oak z-@jbZ(b2qOVq(8GZQ8V~v$NB_s;a7&k&!X<|NsBhSi=D70;#I1s?GD}&GX{m-~fl= z*RNmyGchqeEh#CP%D}+z=i9e$(;6BYzF`C+)Bptr28N#?$@lNy^ZokuOK#=Lm4_Za zeCXNN*LMOvR#2i5WI$qKqCO7~&r6uX|NsB9En2kb`OB9toy*F~E)X){5(5K+A`=tS ze`JL}e*9ql_wS!pX=&+wyaqHhG_djW^K+pqVq;_blbxOY1zWzMU1lOSmjVEJJ<1X4 Snx!rP0000!Yc zNlwoBA!F>x&-=ELD3{Ak0N?`vd|Cs!2mpjJ=GX`D9T6W;N*}EPsH%EqJRW~$jGf&H zpePD&G#XP))1HOH;oHjqMN#G|D2igT+wI>r0yyVbC=~8-&d-a3>2&%&rS#l7{RL!e zK%r2$W*EjxyWKuTM4n70CBNT~vMlS8BpCu^7zQ?*P041n&AB@Pvf1o)M10N|L(X}O z5c1UL^Fbz)k-c8;5$D|8>-A!}T<)>OV))HIQkoa z1476|08**cl|Ufys?+J59t;MgR4Tm}fLg6~CmM~u=A3^unN06Ce)5t;5+UT+?RJC5 z(rBW&N`~9e@s?~KC{;gFkUO*|eBI2<)ENVko zb}fW@0P%R-X|-B405|{u;U0aFsMTso<#KtnFF;1bLx;mLHJi=z zTQA3KHp6bWDnb4IIZMv~5qI6CR`{uphy!X8~L-3au`OEQf z2Jr7?K$4^mm&Z<=cHGnM3uef>#1_o{f0)h3##l`E2qHHWIEFcsLAr_0Z6G9FcV-5gpYHEt; zx?bauwgN<>QJ)|PpI28`+jF_xHx3YqL@+u!$^-WTSSN%q#u$mmLU#G7$H&K+?Ev9$SnztiJ4;JTjs}2pgpjYM7}Du<+sewyf$adi z1RjrPXKihbm?an-9E8*9e8(6o5JK(&xKyjvP%4$`LY<$VuMQ6nR}SGQfb%U6B2$Eo z0I5_8Jv}`?b)#Vzs8lKl27}0CGW#PVBf4os2+?b`+T+Q|$+wnAu?Y|gg*-l=kJs4I z+uK_m8XB@R3d}Y<$@tjI$OH(7!`FO1Ux~Nd*4EaOVzHQ`lz!^#>)Yc31VFexHa9ol z6bgk~nx;LSo11%fQs5uiInK}oh(sa*uh+{54S1^^vFG2s3)%qesjB*3QIso(*X|2D z0lb1B=)BiW2(#}22mo9F%BrdwilT56e(&1~@JJAZ*M}$N0r&vo%ghFUA9Sj!`tgqd z`2BuR$~&p~+TPxVuGfWcPX-c+M9ATAJa4FbQwl;z8Nls{iHW*qtgNO_vgzsRi^MT#m$Y28MpZ`u4at&dXU!;Sw9)b-}37vo6v!~47(Yx z+7_5JxY}Pm@SoA<)p{*Q3x>zcR=W=WQBPsKd%Y}2(bjM6ZJ_HIJYD@<);T3K0RT1U BO_2Zq literal 0 HcmV?d00001 diff --git a/share/dark_resources/join16.png b/share/dark_resources/join16.png new file mode 100644 index 0000000000000000000000000000000000000000..720e86e4b66447ff02c5981851c2d0ad09384746 GIT binary patch literal 541 zcmV+&0^ix^-7Y64lZkgY9Nw{Q`>}Ix4`7U4Gz?=al}fDx2y2@5 ztl#f9>h-#aL?Xuk^Z+D@=sD;7UZ>N!z8~NQAZeQR;Sb;h055=VL}VQXIHGA<$F}XK zvMh^aGAR`bg^f@sv`s{_Wq`*?Es;okY_(dK1A)LvUDt0mo6TOM(MS=|tHS`hMAS1) zb1fE&1@rm*&SJ56Q>)cB=JPq00e%4A0r&tc0Gx|PqqoN6@e9*5&kqKJr2un2%rwm} zLWp;aG4E_PEBbuC3+;CMED=>X=kTR;v%w z>2w6Zd#5xa+UA_U{0C4J<%~1R!C-Lmdz2+z*VS^l{K@b4|2lJGI-N?R(df2iSx^2d f;eVHEu?1i2sosO00000NkvXXu0mjfI@S7a literal 0 HcmV?d00001 diff --git a/share/dark_resources/join32.png b/share/dark_resources/join32.png new file mode 100644 index 0000000000000000000000000000000000000000..266b104af49e103dda303a00290885de7913e688 GIT binary patch literal 1275 zcmV&U9TxH?>XRj?=(;g6ngq9m zsn2lbWKI0d&}9($aXa)ojl|v1H;T* zhI@YVKmU8q9fl`-uqPZJPXRVmK$4_NMNt|bmLA5~w~dXBp4QgZHc66P0A$9PZKErV z8Rr*EOG}4R=iCrLQIr9v)9ETNFJH$nF)@MS;^MXOzP>&<91h5`oH%VZ+q&!U@G$!O z`|qu+tUUL~03MIWrD+-wd-zZQkj}k z0N&-Cch}d~TLQ2###Sks5P~M%tn2!n6o6x@sva|l2=o~M=>T2>a2LRjob$U@0VKwl zFaVwfkfH1PYzn|BRaF}pWAP-=WTi7W=YLuSAaj`$)7NF|x;~WxFrljIE>g-+iQbDF z&k}$v&iU__0M4I3zh+V)1iASIUDv0R0fvT#ke8Q-oSYnZJf1yvyZt*-O$b5i#R-aY z9=8JUyryY8%@i2&7U{Y^W&-&A{{DD8o(CZ2^?G0S`~9n@PoI{ntE+bcm@q(Wob&sS z1wdb6OtxFs^=l?TOG^uDX=zD#B>5;TEX08W2NM1fLZoxf?^y;gmJ|`tWQ7+mUi{(u z_3MdvCr+HW>GSzsH10p~`FtL_Z*Om3ot~a<%*x6-C4^8o=gU?AT;u`DB~5DNGh=>! z{zHeuaiq4kRvsH0Tdk|BlW*L(fvKsff2pv2`}X?K%GDaei4;B{}X$gKx zV;+xZyt})5>*2$P6S8M!W}>F1rUbwc=X}Ld3N%eK0VoB#0NkX$aQX7(_xJDL-__92 zAYZs};eKvzu3TDL`apl^C_6iwIx3lP$r6BJLem4Jz%Kyy78MnR!r}1M=H_N< zLbMtNd_G^P8GLqjR&;iD9%77j2qCBx-?0RsX&O~OJAm5&@(EyWZfD!59s;$ z@#D8kN=mj|xpJjVQItf35<=KH=d)G;-T<&@IQ=C8n3TPDEZ;GpR3?NtG60+0h>!BFfc0KWlvlXHIQe*+X06u8`O_d2sLEG%Ht zCW`go2nK_qtgP%m|1ZMfFh)j39(_+}v)O7HV@(?^H5!v7Y0m5QI*qzNWb}%My>5>8 lE-x=1Nqy<*pV3nV{sFZ&ygx3lX%hed002ovPDHLkV1f!nRCE9U literal 0 HcmV?d00001 diff --git a/share/dark_resources/jump_to16.png b/share/dark_resources/jump_to16.png new file mode 100644 index 0000000000000000000000000000000000000000..e0417351ccbc5ddd18b635c5ee1e4414f98c279b GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`X`U{QAr}5;Ctu_PO1S>~{QLQt zWov_yDj%G^a&c|6?#bY_H4JATGYMF7CrtMV;H%`e_*onBFl+&%&4p@Vp?@qc%Dk#e z7&pIOw$W|!VXhgKEG=p!EE`f{7`OCnnYeBDgWTn1s&}oqUS&F?R`>ffZoAxCgeOYA~*~%DmVmSF&Of%=mF#q%bw`~2Uf-8A+E98B>(^b M07*qoM6N<$g7xcbZ2$lO literal 0 HcmV?d00001 diff --git a/share/dark_resources/letter_t_32.png b/share/dark_resources/letter_t_32.png new file mode 100644 index 0000000000000000000000000000000000000000..0f673c48a9d262dfdb3be8053d757fbd135b301a GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzKTj9OkO=p;mkhZW6nLBit3Tg~ zDfDJl?C$>Kr<v++47@ZR-(#S^hUgJkfmnLx^D3)VYnDkIGCr0B#!qgp2+c#bRJIUdGjh8pmwCnl@ueNGz z*vizpU10x#V1a{W(q|Q#M7200R$pRbo35R}{P^tYubU%Q#~jp{*q4JeJYD@<);T3K0Ra85J4Gj%HPz;ESj1*B_HIw*|TTqvu4ej1yckH zhugPr*Q=_kHeS7Ym3Q^()n70S2n`Ko=HlYYP*hZ$^5Me=!3h&4d_Y!|pP#QTC@6RX zB(`zmM*s8Y&u>EUf{>7q3_B}(XL@FO)alcwg|=?p`X1Q;Pft%Rb93{nb7s%EN)-)?0WIyg{p*vMBlMv$7-#ttlIeb`Nazh3!kIA z4kIb2rKNGrnlv&H;*0G^MOr82aTm0KemfCIY$ XwBRr>`jMkC00000NkvXXu0mjf0%KRy literal 0 HcmV?d00001 diff --git a/share/dark_resources/move16.png b/share/dark_resources/move16.png new file mode 100644 index 0000000000000000000000000000000000000000..cbe0bbc7f1509a073a63f142d9f98c4d589103cb GIT binary patch literal 151 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`ah@)YAr}5yCkJvdC~!D`ezvjl~wiKb1G+UXgS;FlB#g;`cd%{Z+oK z$9}zHO68U;lvL_|Sv)0lL-EJ`D%1L2s-0raWQyfqi#2w@Vr$QCsUxv-5TIx#wP<2;@+Wz-uTk-!VHJMW(F{O6qi4&i_g9dLde z0wk<}rfG7wZPPSuN4|sr_L6)H`ge%`6JUIN96dcfmOC*vHil?4YQ!f+f!Wzv3=IuA z0HgxQ0*q~n0Z0K50k8mI1HdYP`$C9k^Yimb2e1L)vKZnhfFl4_Oj#I65|NZrUJ^pg z?gzk009OHo0K6rlO(`YA90Ty(OwJ(Jg%E-L0yqa?27rx-!d$(ST)0s=D{=vVT?p~o zGJvLOsfwcHN2Adl8`9g`>uqmuuQ6vJ)0BPLY{3sA;yEx5g8(SuHVGl#SO)Od&gls6qfxT&dWBPS;Zqobqf>guv=M3a+~NKfZ0{$WJ% zEpWTtUR70n<}k6ew_93To@ZsT@9h5k)d}MP>g($#R8?&Qusky}6ZHH2PQTxehK7dS zXHP_dqM{-x*3r6rDg;`MqptCYX&db|R4 zb#?bzTU+mzmX@B6zpSF70wpCSb{;Y!+K^Hn2jJ9oeJ-g0JcLfC^Ko`|_C|Aav%%2c z-;c$`#nVJ&lxhy>8Gev-T@NM|ptiOaot>R1C@8?l$Ox*cst^bSFf}#h1fUSnM=7NO z;3BVJQUPMI7=pndOO4{<;suw>RZw1D-sN(+0v#P46YO;HZIM!*&~^P=(i9jR97J_> zH8L_XP*zsFMb!D=Wrpyr&^dV=EpQ z7)U8BEJR*jp4DOAjw7N+9*^g#)em>Pc-`IIJ^;7ktkvpW9LKhO$K&xB50sUY(4SH( g7bY5W2ym#tPk{ZpFmSlV0000007*qoM6N<$f--HEfdBvi literal 0 HcmV?d00001 diff --git a/share/dark_resources/move32_bis.png b/share/dark_resources/move32_bis.png new file mode 100644 index 0000000000000000000000000000000000000000..f464fa5367e609a56ba8856e1609e5cb07f1ef41 GIT binary patch literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJBc3jfArbCxrw8&iDDXHxeYSfi z+oH5rQ?@QhX!;*5Us@uytjXQwS%jWaW3ID!-lN$D+>VTMj(RI3G*}mkF)^L!G!_tO zklV7%c!OWvF2*w}OYasWSQHd0_-$9eIwLyas~y9Y6W^B4P564B@k^%-pTX(lmpmBm zwS3O8+Y;`;mBoCd?k(f2{Y+DzR&T4fYf10e&RFt)UlYg9+de{3e~%kU@%=f?`2L|{V)Hojy7HV!R|oF*X-u0({xid-(agyb!TXk zVHWZ}-V-FfcdMMz(*;c)4H_x;6g4|13Pn0@VSm%J`D#oh*y*q|&3xh##MjZ@$m2f+1}mV zp`xPVuOXra1VsRl^Xcj7NK8zGzrX*R11~Qxg7I!J7~t*g4YEBtI>O@OBJ%U||M)x2 z0vH<`LrqN$a&mGI92_hg!0PHM`uh5?wY9~RM9QeGt^EW;Nf3%CU}|a#4Gj$_EG+y0 zK(PCNGgw|;Mn^{n_V)G=8X5{OFE1P)AEUm${)46F08CF$qp`6OMMXsj3=EX&_nZC7 z$_fKOPDe*aGYFTLm#|u`HnZ9ME4e6`6ctf`QUE9f2*BatA>!iVkd&0fRA9AQF*`eJ ztE;P19D*VMlnjBct}g8F?;|!g76k7p`kIlE@#&cz$qAYR(B0jQot+()1573pa&vRp_~PK;0231v7#|;J z$@YEwF#sqB@BktsBT-UPg1o#ugoK3P;o$-6>+2XA8p8bi{IkVk@lXPSrWCNYwuYXb z9&B%KBRo8u4TxxL5fKr=e7(B5!ra^(CMPG^SixekIIILs0iYfx0GpeetORCeX0jYW z0H_*JE}*iww6p}OJQN;|sz7r9Iy*b5t_IvI*X#UgVxqoRw?9G15GJF zDgeqA1RyOfO$XqT3RqZJKwDdz>xO{S0T>({#QFKTV5o0wY=CTof`a~O>$Cs}LVSGu zU!9}rZ*_GwtM~tEP78phx>Z$Gf=UoF&;dAG66AA$t^ijL0ioE=&dx?^YO0VKoHhpt zRRLNHjEai-xd8MW;OaR*SAebn7as`Vk&{tmO;V#20+YM!07;paa@Xx4#3$a zLsEKIjIFK!T><){sJ<$!FN4mBB# z#28QczD+C|h6JrD#%i!ti=d#Wzp$PyCw9^7(dZJItq6s9q(DwvuhrciZFond09 zQNz4hxo3Q)Fx@%XzA&xBs3F0vZQg(8fOz+x+6E20H;_<{@q)6gH@{x5KYEjGRUf0? Yuj(I)wNpj60A0f1>FVdQ&MBb@06pqTJ^%m! literal 0 HcmV?d00001 diff --git a/share/dark_resources/new_file_exc16.png b/share/dark_resources/new_file_exc16.png new file mode 100644 index 0000000000000000000000000000000000000000..4053f6dd31eb98c82290e11711ed2f0532d56f22 GIT binary patch literal 642 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>6Vx4k^9e} z0A!N^fEwq3wasBfTOKF^G!uyAd*tVW#UUa<5+Vy!Dc3CrB!MD86Cj2_ zxIhsg0}lTG|1ak@-3`b$D+%%gd79zkj=NJCH??h;ZeLy-b8HGvXasZdnf5<<%$FIN z8OwiVGhJhP^qeImjEOP&M~IK_>5~U+DlE4EH8Li7yStdV@9($>vL>4nJ@ErkR z#;MwT(m+A>5>H=O_QzZzf*RsnOMjjR3N?GWIEF}E4n6BB)?^^Sa^aAIQj@Vlha%qt zo6~>SyD8*0M3wCQE`F8aOr30Yf^+JMQ<6K&#P=9-9y~Jh+_T&Wo!a|K98R;M1zkQy zm0fDs_;6DtbEwl2sTP~tcmG{rOnH%cf>CkOHMZj$e-$43X!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10;&y;fh%1n$BKXgsFo%I* zE)30KWSGp!B;O-1-z~4uEe{lz>yewyzyK5hGJss5V!3WPAQz;C5ySb|fr9KMp1!W^kGVtyHN?4= z{yY!V!|v(g7-DgH>ZH!FLk0q_^Tl2_X}?o*4ZIb^ntS)6R@276|Lu#IG;*!hemduA zR9y6Vk|)yyF|p9Fuw2f{o2RuS*RC>c-tcN?N$p`3pM+xX-1i|&1|3QX0z4Dcc@}Kk z?S3nKtI>l6g)2%+V%U5_w?AX?Yx!~5(Q2y0=P%lY=hP}+&ne!Kab6~-jN7XD_j#?T z&<6LdKjv~N>{y~4Bii^*K)e_f;l9a@fRIB8oR3OD*WMF8i zYiOWrWDsI#Ze?O%Wn`>vU}9xpaMF3jR1^)l`6-!cmAEzRkQ2}ZYGCkm^>bP0l+XkK D!dVA{ literal 0 HcmV?d00001 diff --git a/share/dark_resources/new_file_geo16.png b/share/dark_resources/new_file_geo16.png new file mode 100644 index 0000000000000000000000000000000000000000..da9bcbede625896b1494ad92001ec2bc33132186 GIT binary patch literal 605 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>{DK)S?zlUZaZ}rd>GtKdF~_FxghmAR zpP3ZoWPCW$C&fA;sil3|0?YXmHyw~OlRtg(K!}b0VxV5eByV>YgLQXwp8z?W1s;*b z3=DinK$vl=HlH+5kiEpy*OmP-mx!Q-IM>pj=Yc|Ho-U3d5|?Ao+!Sgu5OBFD=HlYY za*S1giD}c0zyI$``gYAKh_8BO!_(0E^?aOFz}hQ2vd7@Av|7+4t@Ya5tY85o>& hUNIF#LvDUbW?Cg~4LjrnG=UlzJYD@<);T3K0RSEGuM_|P literal 0 HcmV?d00001 diff --git a/share/dark_resources/new_file_geo32.png b/share/dark_resources/new_file_geo32.png new file mode 100644 index 0000000000000000000000000000000000000000..5d96f0c5fdf12d602e78b5341e684ac0c801730b GIT binary patch literal 640 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10qA|cH#1%+W5&UORz(9)s z8Gr~Rj%m^V|NoCnPXs!SL9-;tFPNd``@cmj-;Q*AT-os8`P_oltj8YCd}@66-QNfA zzt=Y$`0#uG{k`R1t12fJ$fp1`F(!GtyJ!XPyD|^R;VkfoEM{QfI|9OtQ?>b|fr9KM zp1!W^kGVtyHN?4={yYy9+T`it7-DgH>4lp@O$s6niC&A3hTU#v?%MX@pZ*LsQ!g3G z*ZZ3uO0)4PhBhzE6FaJWsjpA{?6Rt79U7Ur&$+{QB<#HO+E-nn?+07ohlXth4!iD# zzAf!(bgo)sJ=ZY7d(pfHhjJtyC^$3;Xq-5b-ODV-^1*(EkP!Qwe@6c+1JpPf4@}`< zhURDe!EZb5UTs!S=aJ@U zna`2|biHbcYeY#(Vo9o1a#1RfVlXl=wA3{;&^0m$F*LU_F|aZ+);2J)GB7ylykaVf dhTQy=%(P0}8g|GDXaY4bc)I$ztaD0e0su)u!UX^T literal 0 HcmV?d00001 diff --git a/share/dark_resources/new_file_grb16.png b/share/dark_resources/new_file_grb16.png new file mode 100644 index 0000000000000000000000000000000000000000..49840289900cc4372a75511fcb64f624b176cded GIT binary patch literal 679 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>Uwk1J+z>v7OG;d+n3kI9Gk)u8o_)fY(jt6w23p5 zPX9|tm^L9g(sqW;o9Xk5r=JRp!B%>p!tG0EHA#r8sOU?h;k zS>O>_%)r2R1cVu1z7@+YlX==`kDW#TESIupYn%lbYp-J>x zoswPavJETtu*Ey;bNpV#&epd0qsvwU0l&^q3hAGZ7O5`U%9yjw`psizXPt>GLdQLf z=A1kEw5oZB{h$BIFN0-IF$gaGV6x|)n*0N9iz_^vJe69m0^Oxr;u=wsl30>zm0Xkx zq!^403@vpH4RnnRLJZBVObo1yjI|9+tPBiJI!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10Vq<_$h%1n$BKXgs07UXV z^77sC5K^IAUam(DA}-f02WJCCKwPj0gaOn7QHJRrpiw}LKxO~`|NqDTp$VwMtR%=U zn4#wTzeOzHj&yun+3?``+=A7t#~#jnYJB(IUk=9iAMSsD@Q<0N{yq~s>)+q+zc(CU z5#C$=wW>0#cCH=J1jZz9cNZ%^&Lf~e;wb|fr9KMp1!W^kGVty zHN?4={yYy9`seB57-DgH>ZRL3hYSSR9$ZZd{Meu|ZW}!@H&0HRO=dap?7@XA!e9Fq%-m5QbH3B^tBXm-l=SEOJ{&x{R5GrV>4S@OMH8d% z!^VqWd(YnZ;`E@behUQi#23AJK+6E?81_mdcS4>6Gkei>9nO2Eg!wxwCO`rw_Pgg&ebxsLQ0KcXI AzyJUM literal 0 HcmV?d00001 diff --git a/share/dark_resources/new_geo16.png b/share/dark_resources/new_geo16.png new file mode 100644 index 0000000000000000000000000000000000000000..286910c6b18fce1dfe9af8441b5de9e59311e008 GIT binary patch literal 255 zcmVu+di_&;aPoHd-Bob1TrpFVwJ$jr?2ZD?pfQ4dmsVZga_=U&d7Ia3_jfPjF2 z|IeR4-~Q;)BX4vEV;FGl+O_8^SFV&qGl0Ru!s64kY14WhKYrYdEJu_99v&VHvuDp{ zNJ~q5bMoZLg!k{?Z-p5`lmWH1wG1CWeq{Lh^C!cmO`ER2c=1AuBm@+1mtIv^)!0|0#Qz!B@0+(-Zb002ovPDHLk FV1ft;anb+) literal 0 HcmV?d00001 diff --git a/share/dark_resources/new_geo32.png b/share/dark_resources/new_geo32.png new file mode 100644 index 0000000000000000000000000000000000000000..8030150ce62d20e64792e3bd1b4b46f74b06ef7b GIT binary patch literal 352 zcmV-m0iXVfP)l0f~52_aOMVh*qa(?C1|ux%TPqFl=GeSe={ilPu`ARYlE zNdjHhF9Bp(MifPmB-hB%JVG!5#y#3-U5~Nry31T(25@%ss;W2uH^2>W1Ka>NzzzHZ1H&*t6h+!k(y@Lo y)2`~mM+M2N$bUAyD#=&`zB_~JBYAh&oB3ZFNaZ0#I1AhW0000(edZ9?hG&46Y#+oflwvc0(8AFpYjlvDd62*;DZV-tJTgsj#Aq-}w zNy8w^pya{@Ng?|(eSh`(N%^QmkLBd#$W%+E`r{8JJV#2F5aa>?K*$OLZvd*Qsz_g7pENWy&Q<*E>~2<~ zuC7kFcWY~lqN1X%H4#}r-~|ALcXf58*RNlbuCDI60H>#?x7xdkiV8h_`jl|*?CdNJ z4h~XaVBkNW6D)w%)>iuP;RE^j_|UUw&!h%0GBQGym6i1K=TD|d(2S2CKZ?QN69g|B z(An8Z2?+@l92|TJz^&VV<%X|czfy5=G5!Ain@mkj>B*BPG&eU#pFVxMbf@3|bai#n z=g*%hBqW3k3=AZd`~3dl;b8^OAVbrcg5^Ph9!(JAtx0ek^~2>`&% z%naGv+mnNX1Ji=3sVVC1?LCT(jpZEzF97&7fzr}anw*@Z=g*&0P*4y9vAn!Y4Gj(S z^5sk3{ehqWzyttbVq${q?CdBaB7#MigM$MC(?*l z14JSb`TF{@{9<}~n%djjsjaPzIopft(ExxC-~iaz*icwl82S16k%@^3?d|Q+w{PF5 zuC9*y`}>dM;^Nf#fFLLh7#$s@^73*T8yh1lD=U@|A-Ax$wq~-fuC7vFUmtaJbg*0@ zE-vognjk0u*kJ(p@#6;zfu5e8%m)Afq5*sX!s5`-5FzrwJnpLnf&)-eQi71jGC@QD zI72ftGg4DiV;5?MKY#uZ%q221^4=-4pa4Lv5e1&em4ku^c#)X)&UZONSmAdaJhoSvRe`}_NB1^{8TwY3RZ zAgVmH!IqYmsIah*jE#+NWFU6{5Vo+xC~@Jut_q0c2K7DwAl*$(O=bE2bxW=QAh(Z? zkEiYJZK|%WCJPITf69fDH#0Mn37(dgc4L=Wt^lB&H9kI0mX?-ceg4~QUG6mi6d%T2u%=fVFrM<_@e;;!J3+9t2?=MyhpfJkL&ZhA2aMIM&lz%69RRXlLG1-A%c=6%|`!&uP zxx2elKtKSS_~_~B-5M(8CK0+-5-D#`0+82+h?E;H_Lx!wlp3Jy3M<>%jzC#egFO)$LLwwd~r!~YK)iRC;)u<@`VAw?Eaw^4prsm z=8E+U9vlGbdF1vu)MRLAcrO24-xrV+7!F5ZK?884=01m|c+miqx0vwYc-UN@&VYvhkkWV60MQB21xQ{gnqBo8X$DR?)v={9>8BvDrJ3}KWz9D%yV#d zK3pHflbw;l@OtT9MuXW2>za2?$q?_6I&i>%=MY2qD-|nQfm{a7pA3<@M|TP`ymJo_ UT>R{fHPA2yPgg&ebxsLQ0H9eU`Tzg` literal 0 HcmV?d00001 diff --git a/share/dark_resources/notebook32.png b/share/dark_resources/notebook32.png new file mode 100644 index 0000000000000000000000000000000000000000..4f8ad4bb09173db7411454836778bdd57cda5651 GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJbWaz@kO=p;(+~172=F-n{QS?d zaKZ@-f#|ZzKBZfGtwMB9u2y?3&LhL=ktKN1mdK II;Vst0H%L8q5uE@ literal 0 HcmV?d00001 diff --git a/share/dark_resources/notes16.png b/share/dark_resources/notes16.png new file mode 100644 index 0000000000000000000000000000000000000000..ac73e890a3e58275f1a116bfc6b84f1bc3ef44df GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp@KrFz)1|-ie{%Q%NqCH(4LoEE0QyQAu+S>l}^78g5 z==Jpa@~E8WnADJ|GL0>p>1M+^$@vncrVFh_Z|=9qT{KrM$(c_i!Nr22nI5<@aejj5R!)W`w|blI%C{W?TEpP!>gTe~DWM4fBZ@FX literal 0 HcmV?d00001 diff --git a/share/dark_resources/notes16_1.png b/share/dark_resources/notes16_1.png new file mode 100644 index 0000000000000000000000000000000000000000..bc9a6e02e793d8b54da4b7352c8f4005380cfe79 GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`(Vi}jAr}70DGtoMyuAOVrKBVh zO+2J#OZZ4D_b>*v9Q7kO=p;Q@!~PC~&xZeOCP0 z%xvRJ_N8nqb(Xz8wa13BIO@;Sqdz+tOdOa^E|@SRXnS)toSYQqt`o<9mL=nA72_G6 z_1XKvKeIg$T<184VctXA4(10^|DL~&kg{PraJi}UOO)8s?7qt_QQM=c9)Fgoa>%$W tS}Yn}(m&7C)?{(wrT;7o7^N08%KrQnp;-CKawE`H44$rjF6*2UngAXzOThpD literal 0 HcmV?d00001 diff --git a/share/dark_resources/offsetx32.png b/share/dark_resources/offsetx32.png new file mode 100644 index 0000000000000000000000000000000000000000..b32b117cb5f8a327c8d590119e4b98eef99e1be7 GIT binary patch literal 195 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJE>9Q7kO=p;Q@!~PC~&xZeOCP0 z%xvRJ_N8nqb(Xz8wa13BIO@;Sqdz+tOdOa^E|@SRXnS)toSYQqt`o<9mL=nA72_G6 z_1XKvKeIg$T<184VctXA4(10^|DL~&kg{PraJi}UOO)8s?7qt_QQM=c9)Fgoa>%$W tS}Yn}(m&7C)?{(wrT;7o7^N08%KrQnp;-CKawE`H44$rjF6*2UngAXzOThpD literal 0 HcmV?d00001 diff --git a/share/dark_resources/offsety32.png b/share/dark_resources/offsety32.png new file mode 100644 index 0000000000000000000000000000000000000000..9174daadfba2df737ff6357edd697521b3a8baaf GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJHJ&bxArbCxr$6LsFyLspJ^S~w z)`^Oby!|W-^ zVZEV7WjE6aNf(u#8mlQ<52cfgmbJz{{dMJ$Ifsg@Bf~c-qbn2(ujT&+x|_k%)z4*}Q$iB}HSSos literal 0 HcmV?d00001 diff --git a/share/dark_resources/open_excellon32.png b/share/dark_resources/open_excellon32.png new file mode 100644 index 0000000000000000000000000000000000000000..4f71b3a783e9830699935f591a3fdbf0b05c6c34 GIT binary patch literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJJWm(LkO=p;(++Yq81OjXo&Ws& zR5=^pj35EWd*>ph<8Ey%m2kh5dBUu7$<@2rtf36d^Mz*|dGI8@bgkq829|fnkKAP| zXIQN0lT>lGAz3L?PWZ(lkJ055Qb+)SP)2~B8@?()t)f!46XwCkO`?=I9&;eUAR)`!i^zuX^@n3 z`T@qET_Fe<+!^e~PIkfypSV-*V|9uo3{sv`JAIwE$IQagzN(PEx)5Cq(6wJLeKux?vr5Bc8!TsIDNzVEl0xw$X^n~>c+ z2!he9WdhV{wI8KY>2*jKE>1gTXquJ6OaM{iNh8pBCECm%g%<__R`@AGt- zPeLhWY65x2uJxw@004gg;MVn2Q|g`rKq>KUD1LI%`21JTi z{{yMwKhcA=MdtSAecxxk^LP(vQ;unx14`+ll#+M5-N$J< zFe#DG=btL2u%>B?0Dvz-h<|ef(&_XXBCGz z%d%cOj`KT+hk#rzw~7$D3PqIChVT20WHKq0Qkw{&Z()ux_JMPLHVPmJAuAL$o6Vx@ zy1#;W)E%YtKnU?Q27nMELI@23tyb$zyWPGEV#6?AR;$%s#N9X`lgX^qYPBB`(Fp+H z(D!|*>-tAR$bRGt8=Uj=n1fU*^{ig6d-F7rQfdex+A%;7KnULvLT+Y37-L(U^I@;X zMj1l5ObEH2GDxRNsZXx!{vDfxXhES+cp;@+(lqTY#`rkWmsdiFZd5yQnLAEia{r*v}*L#?`3!}+Wsr1D2yaGb#XLSCfy8os7yb-t`57Ynv002ovPDHLkV1i9` B=feO1 literal 0 HcmV?d00001 diff --git a/share/dark_resources/origin16.png b/share/dark_resources/origin16.png new file mode 100644 index 0000000000000000000000000000000000000000..02dc69376b1d3553d76eb2458e6f8f6fabac52b3 GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`wVp1HAr}5?CkOH!P~dPrezy9v z?hFSjwv0Kyi%$vP(hC2~xT93MA>{ZaUhN)N$rsEkx_HGD^&N65w}q`>-c%X>kJq6z zcxmIj?Sb1EpY@$_d7UFC^@r_E)&u1U`}KUpmuUQul-|khCv*Q;Y@yV7x0$-#Rw4SE fYL?Bkj#QKDu&m|Zw$exx=nw`^S3j3^P6U*XXkA+Vi0E-tXBJH0-WJ-p<_DnGqcZZZf2wF);3%N-w$xrOtH#_W}pIR zAOk@_4(`sm2h1+Q4}j>DRk0>lK082VsG7`tA%H1Ybw?R)0H#1SJBmRu4uHxbDpZ0z zP79!>2#MMNss!DY!0g7~0Zv8}z#bMW85-qQ4}61OYBGCBs)SX8=a|nuw3q=qD%HVh ztqKLXyzKHsh3}=5x2$UhQ4j9a!2w%yxy5RmBAfS*epL0#-YU}5d*$#J&4CrW0WsJ$iH*l|uJAy$dW za3QZtsfhzqE$5umsXG@7~18 pa>wr-yIER$$)MWkeeF}0GSM#%20!~>UkAF0!PC{xWt~$(698TgOTz#F literal 0 HcmV?d00001 diff --git a/share/dark_resources/paint16.png b/share/dark_resources/paint16.png new file mode 100644 index 0000000000000000000000000000000000000000..038ca1f1194eddf7ad6e81c203ff4f4d544a2886 GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%``JOJ0Ar}5;CkJvJP~dU?`fTUV zB~Gr{i#nyh5XOO?WY-iL%YX=b@OX1gMiKUK=zeFWU z7&In^SyqY{>?-$3_kMILTPg1JQI-P7#cEo&+!>xtvNvG3@_skd8<($~Tu-G61SeQL RI{>tr!PC{xWt~$(69BwQJFEZz literal 0 HcmV?d00001 diff --git a/share/dark_resources/paint20.png b/share/dark_resources/paint20.png new file mode 100644 index 0000000000000000000000000000000000000000..4f6ee1f9e6498858606a8ab938ec45877e8947e4 GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqEVdHapTOR*n!T@Wf@)sj|<*mam=T31eD&ZGOm z6a5q2+c?yAr-$?VRf=YdoA$h6Z>Zwty=W3{sAzC|rv0wqcG=DT?XjD6C!DUYzND>L ztelxrz1($mW1YdxAN)tnQg=wZur707FMRQ~{S2P`NmJjpegnFW!PC{xWt~$(695@O BN#6hf literal 0 HcmV?d00001 diff --git a/share/dark_resources/paint20_1.png b/share/dark_resources/paint20_1.png new file mode 100644 index 0000000000000000000000000000000000000000..25046740765b58750a4da30bea289ab401069329 GIT binary patch literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz2!3HGny7cS=QhA;(jv*HQYcF$iIVf_tTzq~m z{dp^Y&!+jabRQJ3_v~B3zQDkB{XB<9HjPru4v7V=t!mjFf_mJ(`x4h35?%KC%mPv4 zM!7d!RU4Hh4yqNjpYZ(heBx2`!8|$pVu*CtPiq#PBpu;c8gPR|bni WMjdNQJQ#t-F?hQAxvXYAW95=xs>)X9h$grA76V}pNNh(c!((1T>x_{ka|_~MeRKr z%U;V0L<^xNwZKxY1z;+G%8kVHEKmVBAnFaT*D_BCVAN#PPE9spbeD+4V#KS*`D%d& zfXaL4%tfvBA%NDM^SXZlXuFZJcX^fU~pc+8=WQ^bQ_meN_P@L2vA1UiT(L*0cE+z&sv6`ZqH6@n7!NilYDk002ovPDHLkV1hljawq@* literal 0 HcmV?d00001 diff --git a/share/dark_resources/panelize16.png b/share/dark_resources/panelize16.png new file mode 100644 index 0000000000000000000000000000000000000000..fdd3a40ef14005546b7041c18c239b09cb675db5 GIT binary patch literal 137 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`0iG_7Ar}70IT;y0&Nncdn3xze zE%~rAQRN!LjKmXVjb9G&I)pJ8i`-;&KEROk&|{J~hh&5HvI7@gI2YVuNV?4Er{BPH kK=il^`=b?%Q&Q6zHXK{btSGq16KFPrr>mdKI;Vst0EsUv#Q*>R literal 0 HcmV?d00001 diff --git a/share/dark_resources/panelize32.png b/share/dark_resources/panelize32.png new file mode 100644 index 0000000000000000000000000000000000000000..c9ce43a60416b0c5a43091279afe1b8640dfbeed GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJnVv3=ArbCxrv~yhDDXHxeYSh2 z+hoZQl_}TG^#442>a%J|D(6414}ZH^4x9=5;(q4Mj^9iTER_f3n$B3hP-if`GF!0y zEz_5#cZ^#bSv;6C9nun(T#a%S;WJ>mm+Pdmz)pMhqezA{zfHWV3_WgX-%Jj)7;NTm zn7RDQtqC8j(wt`8G?~D5>A-&;g}v{Vs^%UtV0e=B^yY`sJ&X|&0R{&Q_wfTA$>8bg K=d#Wzp$Py-?o^5Z literal 0 HcmV?d00001 diff --git a/share/dark_resources/path32.png b/share/dark_resources/path32.png new file mode 100644 index 0000000000000000000000000000000000000000..a83693df8240e8b0083b84156609820bf8c9d5d2 GIT binary patch literal 282 zcmV+#0p>o z3IqD=GV5EUz&Q{F(8)dcb^t5!p+buSQ5n4Ck!ooLJb+5_5o-!SYDvy`Ex!byRjA&+ ztbkR9DnyF{%Ik05pY@IqAhJ}}4W1J|0`P)EN??HF2AQr%+_40Z`5C=#=mL0ygub_Y zpK8U?B%A%5I(exTN3|vZbZVj!=wR827j51q09ho+8M5*(0Z^Hj6zE8DKLAp@t~1kV g*p;Zfko-Kr6Fh6QA;TfKxc~qF07*qoM6N<$f_95{_5c6? literal 0 HcmV?d00001 diff --git a/share/dark_resources/pdf32.png b/share/dark_resources/pdf32.png new file mode 100644 index 0000000000000000000000000000000000000000..2f2b4f45bfa049940987d86aec02d72c866b1f92 GIT binary patch literal 1539 zcmV+e2K@PnP)dN;N+kw zMa*LQkvH8z2nS$h^S3~B1tAQ8RgCWrK?ndVn*Ro&TPJV_U}f_=Lf{Gj&Hq~vx^x0J z0BHX4`K>w#E&$N{>%)6x2nayZ#Y0d0*pF-^LAu3Dxd8Y8lofYHkV0T57<(E&z% zNhAQp0LVTf5`cmLWI{jyiUN=Y0RbosKn4T^pf~{05D!y$$K;T5RO`zxTkN^+>fdY#!0j~|$l*<4+fRO)LmjMDG1Yp)KKmY&$Dnp<> z4G;hjfau4yOAP^tb|yJK3IYL0HYoaa1Rz@B2JsOH*a0pKJrhzZS{6G5z(Hw=h*d$5 zC};mX-gs9Ux0U0w7Re)cTrnjuw=!ek3FR zsXGAD1x7)7MF#;;&z--45)mt!kHBlW#-6?dNQ5K+ikT*vS(|HFHE4>|K8D=oN&plp z--)^nSwY~dd@JO4WI=|;>Y165oPx{KAq3!98UparrD7Mzm}E-;AQ6%Pfc;h?YL`u5 zl|1(rWN6F|uv5KKCm;Y|SF-M;t91ebKmhpj09FQ&S=8z7;$Xj^TFzC2B-g7I#JoHE z-@!3@KX8|yhsH|+ur>BhsYaRB?=b0X zB>)PgrL!LqSCPi;5D5fGj*@ssNlmu|Afny66!?I|Fr*eqyy*cz1Pk<56k1{!Qja7a z0T5Y}^N_?a0swe{h$RWTHz+#(QBKG^B|uHv0T7|C%$JDh@h-`G(36QY=Dz;co4`yn zJnsvnW+C-SV@?48BFsr^RfE5ehvb5q6dC(nhgyh?i|g6(K~#rf!6Ve7E=I#6nrMGRtT$E5#td(v~`#207${J&;I5105ty-X+)Fu z9RMkIhD#pFl7VPK03?bwdxiiA4AYV?2tE7}0&ru&%;qn*3Ct>Z__PKRSgHeTZt+U~ znik-j+oMYYa0bHc?f&FmgMS~uZ8|j!v~&k(=$CuS1i)R=UI7U}FTdQgB>?V{_6kS< zdimv^?KA+qE_u|Sp52vg5D+onqOaPNtOOf)6_R3>zG?t?bsOUQZ%_mP%OzPF0G2it zD|Nl-i1}7sQvt9hThA*0j8OBfnx+F_P1s-ZIuSMITlF*nfbIjfQd`!oI+pomGQ#|4 z_QL=m3}0Vb(>=8_17PU_e)DI|NFH6305oQ&3;^r``4oAW@3IHjtw-XYV9A$ko;P}# z?+ySvK|Exh=7#`42;v~{Ha`piLf{WUg!!QWye05B>-x*tCt{TGZv|YAfp>Bef;)wd p|3BLNln$^jjWArpkYV~ZgMZTt|+1`002ovPDHLkV1gvXlNJB~ literal 0 HcmV?d00001 diff --git a/share/dark_resources/pdf_link16.png b/share/dark_resources/pdf_link16.png new file mode 100644 index 0000000000000000000000000000000000000000..acec32fc9edaaab87bc9b2f49947e19199327f99 GIT binary patch literal 171 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`MV>B>Ar}5yC*S5fpupk$eE#?I z+c$J1F1h5hSYJv{U1US-Uxpoj&*m}o-fRzK)S2mM#~?Q0pye}jh44)*9TSQhR@lBa zn}2(mXb$tPbLHmSv^%&{3^W%;X>kU0Kfbigcg-yE|GjgXeniytga&=P$Q8!GfA3w7 V;2YLQyMVScc)I$ztaD0e0svq;K>z>% literal 0 HcmV?d00001 diff --git a/share/dark_resources/plot32.png b/share/dark_resources/plot32.png new file mode 100644 index 0000000000000000000000000000000000000000..4e61b5afa387e15320e0890e73565671232ee593 GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJm7Xq+ArbCxr#tdBDDbd6eExUm zF=@vIw>Jg&K8V?NIHKp7$eyBt|0N7@Y%Wi# zO=na%n9-ZX!29XiPKIsg7^+{rwwcbj{@t~G@0kqzBh#+N-;QNYWLPcry(rUOKJEi^ a0kfsr7R6V0XY2wxn!(f6&t;ucLK6V3O6iG3=#(z*bD^n67qjoEpaP5qr;$Z y_rTlP?e$I!1`Uin2@kB9w;xzu^*v95^#TL;_X5TALY8=-RScf4elF{r5}E+$xifnJ literal 0 HcmV?d00001 diff --git a/share/dark_resources/pointer.png b/share/dark_resources/pointer.png new file mode 100644 index 0000000000000000000000000000000000000000..c1f410e4f44c6830a725d1245081a7b995f7adc3 GIT binary patch literal 25986 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 TVEBKlNUd3Avoe|E^v!<&?hRzq literal 0 HcmV?d00001 diff --git a/share/dark_resources/pointer32.png b/share/dark_resources/pointer32.png new file mode 100644 index 0000000000000000000000000000000000000000..99e0ce519d9f9b1aae701a94924c7abed75f0d78 GIT binary patch literal 250 zcmVOZa?x*r~wbi0+?>#084UcA<)i9-2eap07*qoM6N<$f^2uq|jA1MeXj z1y_^9swW-iPPG!Q=>IiSx`F#$RKxSx_x>Kp>eSl6xSQ#r=mj&SQuz-S0?9Y-fB4Q| zW4`Ad(|N7{=hFrUt{-{A_CogJGxmV|OOu65SyjUI*d>`XBDjo192}=H&birNqImOi Ri3rfK44$rjF6*2UngECKQGNgb literal 0 HcmV?d00001 diff --git a/share/dark_resources/polygon32.png b/share/dark_resources/polygon32.png new file mode 100644 index 0000000000000000000000000000000000000000..afa05504f448de9c81a5cc5a108abeccb7984199 GIT binary patch literal 282 zcmV+#0poye{$C2fasmZU1MqNKqTIcZ16P&jKIj#rLZf#k z1rUX3VyO&B2V~zhH)J@|09qR&&$zWw-4J>XARzw@VD%5F-fLfY6{FjajqP`YwZ%0A zK+=sk;5i5bAeDOyO1nb^u&6x|%M}P9BM=pD=Wh;F03hw^u+sn$5z84Dph{>20j*+W g+-A?b0LvZt0C!ZJA>YU}{r~^~07*qoM6N<$f_%PgY5)KL literal 0 HcmV?d00001 diff --git a/share/dark_resources/power16.png b/share/dark_resources/power16.png new file mode 100644 index 0000000000000000000000000000000000000000..04cc2c6bb763ebbb49966259702072f3f93c79dd GIT binary patch literal 669 zcmV;O0%HA%P)C>+Y2?{;Ae&f0;$p$z$I0#(7e*HMe zfPer01>L-P^D{O>FkH~k(D1*xxp}{pmDTB6w{H1?3}9qpe0A&QEv}l{nt+Ce1{6Ig z92OQ9Hx_1=x$GS53_dMW7{x&`tzh6VL+@RXOj{rAup23{X~5Ui;?F8I+}08x(zo})m3+2xNspJ#Q+l%lhrq_->|fI zu-DzXb?bXduLYN_-@Mvmks$gelFHloc zyAc=|=-JTF@B_sF5T~xL&Ux;fxzpdhd&m3x_wRc(wKY~C@z$2s^K7ha5>ir9uM?6I zVymmGFJYtum_TP|r^){P`>W2LJ!|;=+jn-5I6oi%cM~&{Bi7c|EoEh8w~@VvH8Z89 zrLn53t1JHb^GBY6f#Dw;8{6Gu$BsQ-y?XUu^soT{I#dfFeg8B|00000NkvXXu0mjf Dyk|$W literal 0 HcmV?d00001 diff --git a/share/dark_resources/pref.png b/share/dark_resources/pref.png new file mode 100644 index 0000000000000000000000000000000000000000..3bd655edc5b4ad530af7b22f098df4492663cedf GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJEuJopArbCxr+M=oP~dR+`s~gg zUT)!}(7I(_PS>~b!@e0` z4ohiiHq2#Q%PaLK<7G(0wgP+kAVoFC&Al7eERSM%o8zi!$9N=jCUfTVv+K?@?&kbb z-0-hYPx-vr22Tr)8Rtv?tY+{^byrx)S>WOp{w>S&G4}(eZf-U6Mr{_8`!CH3=5{ZN l_{IOia{JLH5rJ6;xRvZ`6c67NcLutj!PC{xWt~$(6972PTF?Lh literal 0 HcmV?d00001 diff --git a/share/dark_resources/printer16.png b/share/dark_resources/printer16.png new file mode 100644 index 0000000000000000000000000000000000000000..1b98d2fbf639b8399767eb32aed9a1a0d93c728a GIT binary patch literal 559 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YDR+uenMVO6iP5s=4O z;1OBOz`%C|gc+x5^GO2**-JcqUD+S=2=l2i2uW020t)^0ba4#PINy5F*1IWDT)YyVkyI0I?b2rC)xBSn1y_WC4i_W5S-PTpl_D1)(H!P}}akQ?`f{Epotto@Zn#e%D z_{wCtyWeedymkhDlVbYZ_a>w21w*&r-M=3jbC1U*-Ec}>F!#FI(n}u=nmpO1n2s!+ zd;7z(o2ENoU0Y{-`Qex4w$mpW$to1|?hrmH@Z(#~q5cL%6WOTnfQe>Z`k}6zmf=x% zLzllb5$R2+7#p!^^C25YmQoo{Jej=i}dRlo6eaB|Et_t0SpM$ z64!{5l*E!$tK_0oAjM#0U}&jpXryas8DeN+Wo%((V4!Va03`dGi^U)iB1v(RMaV<}YKQe9(i|eOvtOi{o#<1t201reY#OCq^5x!5bh8 zQ3l8sZlIZ61N{Sp74Y^wD{a*W0wB@#0G#`c{9FJXyg9PsvUc8Dx|Kfwki$qDMi6fR z87(t}kPTWJ0*nO9e6=2KtH4W$&ryCWK-QLY1$sp|1)w5MYdZ{339e4U>)1Z`+d`By zpa%=P4LWFhx8K~;Fq(i_YX$vZuYfKQoAp!x-K#SI^b82+fHkyPd4j6i*i$jR5qTm+ z%0{-4e&`DclfAx>vh7O)pv84|2r|0FlmU9$u^Yf-NBxw1?Z2QWbH*p_0%nmBo8h=H?vnU5~VuOkgv3 zbw+*F1nvVzYeMYq3Mh1*{Ly|ipV4;zm1mEoGuA3DWifO!yr_5}YInu^=W~o(1o9XR z-R3nF=b0Y!v9;c+cPzpxxMuhP+-Pj_j%RJdL$Ludl9na|lI%|F~zDb*WapoGf(=Lt&|0mqIyTkY4hrLDT zfB$*+aIf`+5VnjLXS%DxC-cYwj&@F0gGbYj$^@U>VYqlH6T8)( z4M&X{jVn)ZRXa}=)?0TWf89klrs!k)^Ai_n&NNsurO0WTR=~02fp2V^Qzm0Xkx zq!^403@vpH4RnnRLJZBVObo1yjI|9+tPBiJI5fHkZ?ZS~aIn-?&6 zH3mH}=c^s!I+9btvw%p=b~Itp=4+i1#YbTF;#b0a;Zm(L# Q2y`ohr>mdKI;Vst05Et>fB*mh literal 0 HcmV?d00001 diff --git a/share/dark_resources/properties32.png b/share/dark_resources/properties32.png new file mode 100644 index 0000000000000000000000000000000000000000..362759aabd63e5c1c2da021e25dbfef97b220ab2 GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJsh%#5ArbCxrv-8yP~dU?`fTsd zV|HAN&m6ttxGk{$=(Cw_nfZ^d9{u(9HbdGrS-x43zm#4!>%G%G<8*-`&?2paRgy_T z(QJ?M22}=qE9Tj33A%eTPUZ$IWM=&!#r|k{bCWppE*U3FhTre}?VtF^HSS?8YB<#Z zA1XY=91A@O1TaS?83{1OOmu BPrU#D literal 0 HcmV?d00001 diff --git a/share/dark_resources/qrcode32.png b/share/dark_resources/qrcode32.png new file mode 100644 index 0000000000000000000000000000000000000000..80c1c65c4e6778371cbd1e0bb89b41c76e92db27 GIT binary patch literal 765 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 literal 0 HcmV?d00001 diff --git a/share/dark_resources/replot32.png b/share/dark_resources/replot32.png new file mode 100644 index 0000000000000000000000000000000000000000..7d4f47ddea56f66ee85e3b351acfa0fb2f1844ad GIT binary patch literal 1102 zcmV-U1hM;xP)q9ymStBFLccQ%!(gYw!^5orfSVZ^8BqdQmVJg0nq(N}TfBB;WaL^X6zXRf zCLP;OB!K7nWrWaOnx?zu0vryV8>S*>)@gLqkIsbvm7P zbaYf07#R3$ZEfvfb93`nb#?WP*4EZX9LGtpK1K-rc^m_7xBFA4)A^;vV#$xofZcB2 zYin!U&}cON*i+Eg*Qai1XgD`FH@DZ_-Tk>zseHA+zpq$dUk{h3xVZQquh%OqE-oGv z6&3kwYinOZ2%}EH^78V>4u|8s#bWs=X$S!TEJabH@)D@kY6AunM=O<}zrWw7*XygW z^Aq=hcn}JLP}$Yh6_g9u-Q5LRtv0F?4h{}J-`UwYFX!T&2sk`E)R|1C%|xdlwkb&6 z@x%hArl#&SHa6ZXDJj8?=sJY(2SE_VGBYzTt*)-tDHMwTy_#Jv*M!k%{42tcRE}>D zLf577%F0U4{QP`XQ&ZDd$1)HI1pMXY zKxb#CSXfvXhBES;1pp`k0I#L7%jG(got+(S!%0IJdl_*Y*9-vojpzAum6eq{*qPLb z-ug0%2jOu7L{W@_@SWU-u>y2D-4;O*OEWVwIvi@ z=``TA27_T>dwcup!ootDEbT|1f2Z@4EcQ61a(tA5RBn>U_v!dANTf2A^B*$sFYDNG UKl5>_ivR!s07*qoM6N<$f=Ge|0ssI2 literal 0 HcmV?d00001 diff --git a/share/dark_resources/resize16.png b/share/dark_resources/resize16.png new file mode 100644 index 0000000000000000000000000000000000000000..2694b84a82e8cc6e670dc12e67093e14b88f6def GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`8J;eVAr}5iCkFBzP~dQW`fTq{ zu^x$}H){_2JIm*8RI_2=mo|31?=IoOX3)W-VX0BRfr%mFPpo@Ep~!my$pAZL)*Zc9 zuUX7|k~eK)x2I(P1kM|gXU^Fv{}J7t_uAp6jCUrBXwbU{ti|rOUCjUc76I*K@O1Ta JS?83{1OWb+Hah?S literal 0 HcmV?d00001 diff --git a/share/dark_resources/rotate.png b/share/dark_resources/rotate.png new file mode 100644 index 0000000000000000000000000000000000000000..21efb72a50cd274798d1af5ba1cd454ccd87117b GIT binary patch literal 426 zcmV;b0agBqP)l0KD5bp4msCm#e_r?v>x$Om zQ4lbIp7;YIx(W~gN_?;1yg<_dyw*wsUdt)Kv(ru~7a#f^GJ3UMm{ zCCZanZ~&=wtPp7cdUlgEb}9f1L^=Qpg6f}?02+t~K$;xHP3d)~!D4?wjKgjmG4_hc(z z*$T1F_MBaM$Ga)ywNV>^n$*!kKmoL3Ea!^=EH<);v0U??0Mbd&^2VaCAxDX*VJuoO z8>96JD?qTrTy_W(K&Dh;0Y-Z@BapLl$d8z6MaE5;qfJ{Rgs1}4>PV9?C8QZB0Sf>0e(Q_ UF)+QB-2eap07*qoM6N<$g7`wQ2LJ#7 literal 0 HcmV?d00001 diff --git a/share/dark_resources/rules32.png b/share/dark_resources/rules32.png new file mode 100644 index 0000000000000000000000000000000000000000..6df220b75d85196abc8fa568c978eadd761baabf GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@RheLQfaR5DWjaQv$gTDDXJHK3iPe zo~)~Y*T>H1G*(H;-G0F2|9Td` TdWxGO&~gS(S3j3^P6@I2t>`zxw#gWScD>UzPixan)D;kFeD<{w*@~UN?JCRK=vSt#naImE~o}#h51ed zTMpt(a1f7x81{p1^VOO`F1(vM)H6Nbiw)Z&7Tx&(2#p_h8#;4MgKSu5sY3!S1K6Hz z0(p^&0c?=dK;E?0uxX%@l?ApOB!3ITpr}r^UK-YH1|P|eGV%L(cu&j4tP w63w9(X)tQ$DMJ-)KP)`dGnfEHfq|T%+5LctI+3hf-#W4NdAAA3qVAUKNJy>```}+rUB4|Uy5X4 z&;FtUmV|G$T4G=cP_kO7tZ^H_tw1&=)r1LReE{wDlEc3gD8-icSNnkFo?8K~az!)1 z=y?Ed0UaO_QcI8}qMFcBhV}aZQh}zx9>;VA^dwZH89wpNtr$J6hQ9}p`@QS)&I0er idg7sRdXl!p&;d?p>?km{Jxe_R0000;g zZmE*!LRF0l6TTdUprhO;7(H{W4$KsvP^5nEPDc{MHW|;HGB$>g##(-V^F&#owG5uF KelF{r5}E*^1~gj$ literal 0 HcmV?d00001 diff --git a/share/dark_resources/script_new16.png b/share/dark_resources/script_new16.png new file mode 100644 index 0000000000000000000000000000000000000000..3b583fba62324059551e824cd9e4111d70b420c9 GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Wu7jMAr}5iC*S5fpupk$^!)GV z(J_Y(ZHN%Bc~W#iEZ3yp^mjW8!;WVH3|qblryMmr_DTQ1#BeU28Opnj8SG=Cb z$g_vxpHKPmr2egpQ`x*i#5Y}8@M(V6iM)-sJC7dIIk&|}ck1^ktJj1@F!|Zf{Nuw_ a!mRMJmf!WC)^4B+7(8A5T-G@yGywn>KtxUe literal 0 HcmV?d00001 diff --git a/share/dark_resources/script_new24.png b/share/dark_resources/script_new24.png new file mode 100644 index 0000000000000000000000000000000000000000..f8e14ad8768e7e5e0055e8d992128d97881c2647 GIT binary patch literal 223 zcmV<503iQ~P)=e| z5wsfWP1QxJ?Cmm=9|2M`EbG=;`=YZS0RyfH&}?SC6YPRV!}qY@kW5m-WO;o(MXY*c zPe{O8#0s%}^pLZMr&6^fjE*THfHBQfAbaSC7Ll-f$$J~rvSSFgmL1%|8x8l52F*Hd Z(F-Fip%=7Fi*Ar}5yCkOH!P~dR>`fTq{ zF`romDp7`?XWM1#?v0%%_mx4el`|p3o+0!MH_s#{kNZ1+^KUq%uxqlBf#7FN#yyLT z8uYvvy52|%De(QQThcI@X)5Dso^`S}%rz&hd34!KYxaxuxT2jQg1gU&KLA?E;OXk; Jvd$@?2>?flH*Np` literal 0 HcmV?d00001 diff --git a/share/dark_resources/script_open18.png b/share/dark_resources/script_open18.png new file mode 100644 index 0000000000000000000000000000000000000000..6df220b75d85196abc8fa568c978eadd761baabf GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@RheLQfaR5DWjaQv$gTDDXJHK3iPe zo~)~Y*T>H1G*(H;-G0F2|9Td` TdWxGO&~gS(S3j3^P6nmB_B~ev+G1I&g!vns_nn^eJDq{Se8d(GN;aVv(zs>=lvTcH;Btf6fPANl$ToyYk|xMVm5oR;8+^o6XEQ#W}(A% uZ?-YsTj#OMz4eq$a(UIU4eDvu4_Le`PfQ7%!=nv!6@#a%pUXO@geCw+J4&1Y literal 0 HcmV?d00001 diff --git a/share/dark_resources/select_all.png b/share/dark_resources/select_all.png new file mode 100644 index 0000000000000000000000000000000000000000..efa8eb310afb9bde9beb759d3769fbe4495a3130 GIT binary patch literal 650 zcmV;50(Jd~P)2BI?-^ixaL&2r*I5YhCzHi=;uInd>=qLaIz+Ycq ze+}RQGcOR40x$^RRbOAo0f3}AM7d3hE9D3{Ak2q8wLlpX+A2yrWp6`Fwtoh)x@Zam6%Ex7BL3vf1n|DP@oh#BsbcilU}v zS(fkndp*yaQcArDf}qv|6bgkhfa3rzdY<&aIpqH{usF=npYwmsxHPMeuS03D^&6d8sw%*;oaSrE}50PmUk z41n*+F){NYB6%vYt&B3-~a#s literal 0 HcmV?d00001 diff --git a/share/dark_resources/semidisc32.png b/share/dark_resources/semidisc32.png new file mode 100644 index 0000000000000000000000000000000000000000..8bce9b13cd168e85eeac9cb22c869ab67aa21159 GIT binary patch literal 253 zcmV=m!)a&NQ3pKZvlwNEF!MZRIw~vq6!75g~I_N z#Pg=q2sH7$*xUYh0-WtW%z>c*SK=WKAb=+zcDLXMU>xv{!5o42ll)x(uPAOiPIki7}0mn^Qd^;)+c1JD4qs7(C;+BKS|0oF{nJ`fdV=Fbl5WmD>X9yCzc z7574*D+&Rsr`Hq-5-xRV00x8=t)nmlFbB@E<_A~+N~&xjbB+Dx00000NkvXXu0mjf DRPbak literal 0 HcmV?d00001 diff --git a/share/dark_resources/set_color16.png b/share/dark_resources/set_color16.png new file mode 100644 index 0000000000000000000000000000000000000000..a68dde64d21b153ed2812aefccf0fab8a517f51b GIT binary patch literal 703 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>Xfn;jhX`?{?<%bD<>A?z7r_yfi;Ai57CLtik21C71)M9kZHqo>n) zSGzUV7E5p56Nwe8zItEk+D);tlu&cA`qS)j&l$rmGKG7)Y;?6>6C+lAls(SNX~RDD zIB(&qGt3d^SYwW}#vEjeJ;xLU^un9guKz$vtt7}Vm_fY0W2t@ZwbnZi#RWNjbEz#k zGxLD`#XAS3j*4(7URro$@8RS7b$;3VtN`j@O!9VjVd!9$^#F1>3p^r=85sDEfH31! zZ9ZwBAbW|YuPggw9#L^Kp7ak7yMaPoo-U3d5|?97T@^ZHAkg|yVQECSnEpF&riIPP|AgE1eACgQr_*&Jn5XD6G;tklD~?-x zmHC;;on-<^yC(;|Q_fi#{JWqfc+XSGjf)plGxCNroxfhNTX;j9#5ei#*QI%n@GAZJ z*1YhZg^@sy`l^?2nAe+1J)e7@Z8FeRswJ)wB`Jv|saDBFsX&Us$iUE2*U(7U$S}mn z*vizz%FsyLz`)AD;J}V4Oeh+1^HVa@DsgMr_*7>fP=h4MhT#0PlJdl&REF~Ma=pyF e?Be9af>gcyqV(DCY@~pS7(8A5T-G@yGywqaqXQoR literal 0 HcmV?d00001 diff --git a/share/dark_resources/set_color32.png b/share/dark_resources/set_color32.png new file mode 100644 index 0000000000000000000000000000000000000000..a3578a0b4907eca13ae12e375a0cdaade8492439 GIT binary patch literal 848 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10;#Gi8h%1o(|DWN*e-Qcc zKf@<505qXK;AT6#kwe z;RQqNGln#v#{S7s&bF(AJ-2%~Z?v{p>g~MI!FuJ4?tlo@o~9BXbFuoJtg)XN!~Qdb zK4lEM$Q1ti8>^#I-CGbPPCh8_z8UBa0-Zr|c5n=5Xsu5DmH zJHR=NW0im+*Poz6^+1h`N#5=*3>~bp9zYIffk$L90|Va?5N4dJ%_j{MWH0gbb!C6d zBPwoc{Ut%%9Vqm{)5S5w;`G@Ik->)yMA{xUcW`96F4TF{#BIG)_06=!t|1FP{IBOX z?3g@<=i?#i`?ufE^bum{knwPJd~NXTgzV9ib!*=BO;%9wEPMV$zTvX*=}qT&7rd>C zYhT*4;IPDQg9g3(H=ovBNZ!xzE&PIf$0fDOWJ7R%T1k0gQ7S`udAVL@UUqSEVnM22eo^}D ScQ#T$MGT&bP0l+XkK`fN7b literal 0 HcmV?d00001 diff --git a/share/dark_resources/shell32.png b/share/dark_resources/shell32.png new file mode 100644 index 0000000000000000000000000000000000000000..c930c8908941475f05aed970d19aabc8c8130dd7 GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJ4W2HJArbCxr{CpkP~dR;dbaZO ztZ1uZg#|vj7emEW+WYtSBz_h)|IN?$0jPhSs3v2>qwRav6wPBkBk-K*ic#d!rC~Ee z6RaJix3W&~V)XeI$sy`c literal 0 HcmV?d00001 diff --git a/share/dark_resources/shortcuts24.png b/share/dark_resources/shortcuts24.png new file mode 100644 index 0000000000000000000000000000000000000000..56b5217f5f85b7d6e55d734506058eacac45aca4 GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gj6`n4RAs*gur#|F5puo}ceD?j> z`4Swt#j=wQ9ecIDboueu}yI2OEc!V4O$_m8@6RC{^DM=eEXbh_BRT4oiuiOlk>wqq3QaM b@4S2-i!ypNPJ4I(-N4}K>gTe~DWM4fi^W9T literal 0 HcmV?d00001 diff --git a/share/dark_resources/skewX.png b/share/dark_resources/skewX.png new file mode 100644 index 0000000000000000000000000000000000000000..7d9571f0a9425e27bb158f63e5c9ecdf6f479d1f GIT binary patch literal 296 zcmV+@0oVSCP)VM|| literal 0 HcmV?d00001 diff --git a/share/dark_resources/skewY.png b/share/dark_resources/skewY.png new file mode 100644 index 0000000000000000000000000000000000000000..7f02f9be5062429ad8645d58cdc91c2766dec239 GIT binary patch literal 286 zcmV+(0pb3MP)RDh0tQv@Xkx8i_{g&h--ZHL(me*$Vp9M)Y&ziV k843MMK_0YT=cWg~0f2;{DUlypF07*qoM6N<$g6Dd6=l}o! literal 0 HcmV?d00001 diff --git a/share/dark_resources/slot26.png b/share/dark_resources/slot26.png new file mode 100644 index 0000000000000000000000000000000000000000..58168047b053a9afa849e9abee9b9543e871846a GIT binary patch literal 131 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%UY;(FAs*gury6oG7;qf<^89^)DO@gT7rcygZVOC=b_t+`{}^Nea>~>{?|GGyH0KC zigN`&uz{02sG%hB3Fgp--#9}L#?X#+oY(3)j%hT7eGRPz|1&HW6B-NpLv&yQotVL4 zoZI+<&w*kHD|z>2Ttzd!;b!KaM{mS@&k?j>4@dEg_xP0+c#8!b2dXB8p$_0h=u4>2 z;nk8Vf>!K=UN23)Dr0z5k~@#p#u7&*vmanEyX(ijVu7Ey75aG~`y2Lwv;o-0YuWor z6aNtUs6?hR`4r#hc$_;|B-&P_HMV8`mlzKHBW`e+NDG+4Bwk?_r}!h0XH8;Zx3tRr zGKg>R&Oa(wTqe|ge8u(ZMO{gerx?K&Hl-o9qYt~$;NX7+s&WT+1I4!VJ0Isk7u6g= U?Ab|VE&u=k07*qoM6N<$g5O!XoB#j- literal 0 HcmV?d00001 diff --git a/share/dark_resources/snap_filled_16.png b/share/dark_resources/snap_filled_16.png new file mode 100644 index 0000000000000000000000000000000000000000..0db6956a91ebea1319b88038a44ac571863630aa GIT binary patch literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`<(@8%Ar}5eC&%&~P~d2OxKA$q z``t||B==uZRr}TPX<=^ascWv=Z)Y9Z_KZu!^p+muC59!HhuEGl|H-UVR6VfoI$r=o zfWdNq<#+xbFIGAyEoNJ@r7^F7O(7@9iY4l)<%%2`XEQdUD!KulZ_Ff$o21(<`W zV21%%mIDHTRm684xl{w{Qh>`_a2o*B=cqlIYvdVFv!7-~icNp2igp$k1Xv}WRU}cRT}>KV#-9!h52as?ERe|r0MfsJlVrvl7F*LFd*0{j2bZa59V z51wCG%Ua;GjE3`PGmwb^`@M&BNd^7@-uIbPvJ>;3s~By!?is-DgfDlTBrxCN(PaPt N002ovPDHLkV1l2Lf+YX| literal 0 HcmV?d00001 diff --git a/share/dark_resources/solderpastebis32.png b/share/dark_resources/solderpastebis32.png new file mode 100644 index 0000000000000000000000000000000000000000..8e1ea1301eaaa5203fdf9dad4984d92edcbd0582 GIT binary patch literal 303 zcmV+~0nq-5P)>o636Dyq~&07a~_MW+C0!J&hPftLW9 zp%-0+paHrO)0JQCGiVv0i7ODOmInA3KlMnM1(g642nMj}r2y<@6U{Gco&uUz!5+m_-Lvnt;-M2Em$#3HV2*3Z$4rfLY9{QKt2^ z3z&{~nbQgEG^EY}w8D3e!xzy`v!zGruRx9`@CG4>#37-;Uy=X-002ovPDHLkV1j-G Be1HG| literal 0 HcmV?d00001 diff --git a/share/dark_resources/source32.png b/share/dark_resources/source32.png new file mode 100644 index 0000000000000000000000000000000000000000..b04fab9b634b30efa9ae3d80f8e715ca02c09fcb GIT binary patch literal 12171 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�))2% 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/fQ$R_&{f3E|3Or7-HKRxOfrF-Plf3vkO zcIQCtgt@+5GdKALasRGL;}RoHU&VL+;iv<_6Wmm%p6%0sT@l5J(dKdO27NlSBq&z| zsaZx&v8c3}xTkw2hN`+x9_uEXr$PftP;s;8?&SzWlg%A|Ld@_@%wkPve^TJZ3TzBQ zZ>~m7nwkt+ⅅ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 literal 0 HcmV?d00001 diff --git a/share/dark_resources/subtract16.png b/share/dark_resources/subtract16.png new file mode 100644 index 0000000000000000000000000000000000000000..8fd86055d6914f4eda262a59f55674537be69b0a GIT binary patch literal 461 zcmV;;0W$uHP)FIg)<;xf8 ztgNhtojZ5d@87>4Z26-{j~Kpx|9;rj)fMb)f(De8m1%C=xbfPJ8xXI9=*N#AuXA;E z&3gU%HRIZ~YuDg)L3w$3>WURBW-VK`jN#9pKMeQo-D5a^{`_w}J-ttV|Ndq9^XJcj z?Ck6Sj4*(CVa}X6c2Ax>Ifx#G6DLk=FDomX#m>(DvZ$!&J5B>Y6951Ihea{t!Gi~_ z0|ElJ6ciNjH8eD!L_M4XibjwNwr$&HVry&r0%|++ix)2hA3l6&=k4u1J2y915U&9s zOaqc67o*00000NkvXXu0mjf DuPN9j literal 0 HcmV?d00001 diff --git a/share/dark_resources/subtract24.png b/share/dark_resources/subtract24.png new file mode 100644 index 0000000000000000000000000000000000000000..09ab3aa44f049afdfd4387c1ddebc40310b770cd GIT binary patch literal 766 zcmVa<6vp4I*_apzwFO%!4HOSTPQ8?@P_QYKm_4k2(IDbQNGh^42VH_5+>56eT?nNV z1=mxL#hy~Iwou!ULnOgcLRv2&g;c%7wb?|Ioibudh16^;LI?IT``-7P@4a~pf-7F= ziuK|D0Z5W`Q&m;-MUD|dS|AX}{28Om!NS7AeT?xZ05Iq%>67W{=@->FU4URP=mCJ2 zgM))J6h*Bggjx_nc_M-_zNTqf86jkeL?Z9<`TR3M5d1X(qA228CtO)sdBgL(OArJK zAyhMlcc z$E`-Aab|aSSJ>Oz1FzRh08IdJBFl17H$al4dp$ipKO7DRcDvos)zw8iozC)EW2tB~ z%I)mzyz=>c2xHuY5US|z0dXKnl8fWG&kVy<2*7T)w+sypsnr_AVzC>EMB>2f^|k^4 zxlyR05-lz+x_f(jlMKUX1i&!NBbUpS0Duwz9B*xHxwp5sU)yZ9-+jqsGFqur3fH|w z#6c(&dfeC7_oeD!d3hO3CKHs)<<55OON1HDNn4g~)J3Bkq0l=hb z8f`EbDw?Jh3WdUv*=)9?QmMOszyJNn$VlUWrKP1@cX#)#dWGNI+&r9|oU}IVpq_B8 w{|)uv$^e%Uu9u_h!Ko*5;WPR#$$D~s0hp9;C?r;}`~Uy|07*qoM6N<$g48TzmH+?% literal 0 HcmV?d00001 diff --git a/share/dark_resources/subtract32.png b/share/dark_resources/subtract32.png new file mode 100644 index 0000000000000000000000000000000000000000..b460e0d2c0a7d3f0a87579c3bd3a7f72beed657c GIT binary patch literal 954 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 literal 0 HcmV?d00001 diff --git a/share/dark_resources/svg32.png b/share/dark_resources/svg32.png new file mode 100644 index 0000000000000000000000000000000000000000..3e9e6d21f0ed77e365ca14a47f85886e92763a91 GIT binary patch literal 296 zcmV+@0oVSCP)h literal 0 HcmV?d00001 diff --git a/share/dark_resources/text32.png b/share/dark_resources/text32.png new file mode 100644 index 0000000000000000000000000000000000000000..7cc4998f685bfaaa8c5f6748a09169495b95f13c GIT binary patch literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJJWm(LkO=p;(;c}EDDbd+eg3<+ z)k$xm;In8qhGn!4ND5egD!>s{?9P&o=-&4?)!NU3>~g)-hMc% zb2=|WK%Tk Q70_k|Pgg&ebxsLQ00DnLtpET3 literal 0 HcmV?d00001 diff --git a/share/dark_resources/toggle_units16.png b/share/dark_resources/toggle_units16.png new file mode 100644 index 0000000000000000000000000000000000000000..2da61f42840cb23da7f861b9200c859429641af6 GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`ZJsWUAr}5~gD(m-C~%y%e}4Y; zha=3l4!k;>lAL3)?y$d0p04P`hl&pm?BL1yK5vQYi3dJGLJQ9Qo3FKyWyNOC@8uH~ zOpX-_XGryTo>EV<6 vv5TsTEO$dS0L{Zp=$%IaXdD4(gWd5DsJ9F-r5v~=00000NkvXXu0mjfuB?=} literal 0 HcmV?d00001 diff --git a/share/dark_resources/track32.png b/share/dark_resources/track32.png new file mode 100644 index 0000000000000000000000000000000000000000..d9ae2ebee8187319ea5a308780234a4dca4e5fbb GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJy`CUCeyCp+J30E55 z_2R4MpD(>!dnb53f;pG5Y*3MS*I4gaz$+4(u~PMcQ~RPVViAiB zoSdJ^&6SbJ^y*>=2$^b@eXYwkBQRw0Jm1I#mJQL~aUOftCvncOW_Z`<>6P&GPbFi) uvx#;2X%1Bm?{~f5n)qHm^E-cf0=uXui$TbQ>+gUbVeoYIb6Mw<&;$Up&|P@| literal 0 HcmV?d00001 diff --git a/share/dark_resources/transform.png b/share/dark_resources/transform.png new file mode 100644 index 0000000000000000000000000000000000000000..b8950bf12006b9a9f05a17a6d26b83102daa94cc GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gj6FprVLp;3SPJ77Lpuo}c`E2Fq zS$S4Q{P~BX^1fc4uwK~Di@n0-$(i*oDhnmjYIp2ZThD1TfqjAhyVg4l8avrP@g;nF z>SGu44$rjF6*2UngA); BQI!Ay literal 0 HcmV?d00001 diff --git a/share/dark_resources/trash16.png b/share/dark_resources/trash16.png new file mode 100644 index 0000000000000000000000000000000000000000..137f8392a167c5dd5ca349e11764d0c3966b5d38 GIT binary patch literal 512 zcmV+b0{{JqP)?ITf(87a>pPyg+)2B~nH*el_xpwWEMLC>-e zW@hR(G&KA}F@T4MN4un?TYi`ThI1w7k6h@fkB_Ou`66 zJ3G4uCnu-+g$owmicg4Fn>KCQLx%qh|Fg2Q6kuYzckOOFdhBR5%n}qAI5;>oI5;@e z|N8Yycm3M+(=;_Tx3jXc{<(1JLSSTMWD)}d!}VRecC{Tlb_~A(Z{NNZ+p}lSQdwEq z_1xUtf39D<9%*N97bqnq^lSZ!p8FF_1m|B z8ft1uwzjqxj~qEtyJydy7Oc_O(9obaYu2naX=!Py*plz88ME#rrzVFrH#eWhY5+*E zx3^dS(W6IB|Ni}BK{kYmiRq7=oZNxp;$paFkURjFQV$@lz5go!0000yL?v(ciXhTkyMg@9NOaZD?rtKW*x?X->{gtt(cncm|V4F`%KLf$8_}-~Lml zPL=!c;lo6jBCzIZ)0%Q}a`yfE_wPVMLjznNiUBYUm6eqN)22N!h@f}~peEIx^$IIKxvZJHJ{>P6Whrk9% zh)Eo@bFe$2rKQz;_3G8%_zaMjm*=>8`D*`_D^~;_KYbj=2nzWrQ>I+;^zW-n{7uH^9x!tz_A@407&Zo9wjn)o8-juWQVDoR==zn)!A;hn}%(!h6t(aM4S-}?i` zAEyPEgzgo)|L#HIo$t++`ZqfFGu=2_p3=KnOyauNve4xRBOax3AA6$F;x5DV;XsA! z@tAdD3byXahxaoGUYeumkjFm3&ON#Ke^W;2iQUr95-Su9rp|K#I*-BA)z4*}Q$iB} Dfz45r literal 0 HcmV?d00001 diff --git a/share/dark_resources/union16.png b/share/dark_resources/union16.png new file mode 100644 index 0000000000000000000000000000000000000000..d1766607758c1fb7496b63ac76553f524dac5760 GIT binary patch literal 466 zcmV;@0WJQCP)R)okFcvivqsePN&n*?RJrflrIX8b+ulvUpk!*RIAk} zKv9(EY&LtH$z-^DP%f9HQmG`gilRU+my;3kW3^gQEI^j!*YS9)=ks}xBnh_LEffj` z0q{Hz8jXe+_gBDVGSLmg(AesHK7VL7n|CZ)EEZI$R8&NKy9j8tTB6fzHlt#(C>(4y z8y*34UBCA{?{PRBp5FnFzz#xy>$oheJMX?;uSeDz$w3G(3_}KhK%@+Li-eBj1R)?yU`RR!i2=54>xo2yg^^Ca@55j) zfOfkrY@Zg72Tjvl(==~w+m4N|X`09Q#sdEGfMNlcUf)mkPbgr*5ur!A?*IS*07*qo IM6N<$g7@6e9{>OV literal 0 HcmV?d00001 diff --git a/share/dark_resources/union32.png b/share/dark_resources/union32.png new file mode 100644 index 0000000000000000000000000000000000000000..07d4bd69f9a90fbe8079a24556bbcbb7ef65e3eb GIT binary patch literal 849 zcmV-X1FrmuP)WtaBs9m%r%(P%h71UbE4gxuA9J4bp7YL4818wndybEP2Oyix za<|mVX0z9cccg%u!6}KJ0ajL49El;za?}2v08UR&F*G#f2!J-Pt*v2la?(226F@K+ zgx~MS$jC@X5EmC0C>D!QRTZgJ${m1#fdR;}+{YN>obx^a^r0s80f+$b0QgDK48!=b zv9ZxPK)Z$`1qfh%e*VS=7C@Zf2te0${#O8GS*9#02!UK%RH#C8URpB@que!suIuo4 zD9+WO>|?Q*H5ZS^|L6fpk}x(l7GR8-LJ4oz07pkhNF)*+HCp4QbUKaU;bEdC6+B%7 zlu9Kl%f-b-A7iY_IcLYm$D^yOtB3vl{g|4X8jVCEpGBbh*4EZ}p->2pkB=jnOxoq~ zxdA}6tc%+EbGckO6bg|GXdaBQ8hxv(dZ;K$QUF+I$Q3;UEG;dO*O&nC<#IVw06YL- z+D)fv+J^=JTQveOyK2IQ65OVML;wIt0j_DEN~PlbMPw@=0H_2-inzbO|Ef?Zylu4y z1vgETdIIHgxoMf!mY0{Yu&~hnRcyZrZGf4Xna6{JgWt*9beePi6hKTwAgg@?@KsgS z*ZF+@&HDN}GMUVs_Pz5mY6X~^n@fbl;V;yP!g9|=?JEFC73$E+-rnAed_Mo)bpTR8 zk|cw3PJK|}oIe8ai!pZIn5L#_FSob1-?am1%-*tbt5&TFOixdTqS5Fj0P4E3eaYD8 zY>V#h?xuEjb`BZ=T7%tGm$m?+33UK|aqZgI??V75V$Rew?LbkKXRZT8qfyIR?Z(;J z8R*xNYXF;@o0yoGXcxC>ojiYeN!7X9L>*&^oi(1_(bIDm@iOa3HKl$Kt((Py#TA? z6Qm<~06WAv5(y~*ra*QfhTMScu+>Q!q#eNZXp3M8kflc!yBq;J;XfeE)T~uoib`|9 zA0dPJ0-)23wx?Wr+qbFSsM`VVx>lwES*30v%hg;jMG9H6OygE=G?Ce}PWV@W?3?V& Y1u9o`8L_z=G5`Po07*qoM6N<$f+s{-8UO$Q literal 0 HcmV?d00001 diff --git a/share/dark_resources/view64.png b/share/dark_resources/view64.png new file mode 100644 index 0000000000000000000000000000000000000000..63d2cbca03ac31a66ab79a9463ce29c9b7472bf4 GIT binary patch literal 693 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 T4lz4S00000NkvXXu0mjfo`$E^ literal 0 HcmV?d00001 diff --git a/share/dark_resources/workspace24.png b/share/dark_resources/workspace24.png new file mode 100644 index 0000000000000000000000000000000000000000..4ca990e7a7d08690dad5843e2166a43dc21f9a62 GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gjk)AG&As*hzDGLk}mTdgVqkN#L zt*z~UOVh@M3mMZr1bCEoMK+wBYH)hxqvk;F0yUAEhc;5|4-%w#l@@h(Eu4Sx!_*Za un%x;`j0<-)Ot3lVp_am+_;X=CBg1}+0?FX|^~ZpgFnGH9xvXNSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fgp&Q^6;tHhypJ4xgn)Uw~ zmj7qL3?Tay>;IGNAQC7Dl41ptK$SV$=Y0lJyd^{XE)7O>#F^?Dn7kdY9^mCw)ho_5U zh{pNkgaZscr;ZgQJYf*w*xk)?Nm9b1Xd>%6PJ@Dbu8hJGI|5k6dbln)Gbl?*6i@uQ zy|FN|O=kjgPqf&Q6WdA-`0y|+b4(Rh+$>lCG*h+2HKHUXu_VaYXcbu29rukKmm);kei>9nO2Eg!(+`e?|>R4K{f>ErERK(!v>gTe~DWM4f$N7qR literal 0 HcmV?d00001 diff --git a/share/dark_resources/yellowlight12.png b/share/dark_resources/yellowlight12.png new file mode 100644 index 0000000000000000000000000000000000000000..328da65e73e7a55da5062e79ad1d76f3ed25262d GIT binary patch literal 578 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$3?vg*uel1OSkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP@*WnC&cyt|NlTH5U{d< z5QM=DvH`@ElK?STSU@P)nSq6wA>0il!psDg6$i0_%9xlKf}OzP%naE-YGq1-{DK)6({_E3KK_^K=`~m1_c4;<~2>CZ(>9K{Fgp@XpYfN6^4idofQWj za42tF^IB<)d%CUnMDb_KPdK(uZ+2Kdee!}W;%fuKzMbBtb@0_Q z)7w|_w!QuJa97*D?D^a|bDmX7#nv-B&g7nZLF8UD&|1|J*NBpo#FA92bP0l+XkK;i;|p literal 0 HcmV?d00001 diff --git a/share/dark_resources/youtube32.png b/share/dark_resources/youtube32.png new file mode 100644 index 0000000000000000000000000000000000000000..bf8c753bd47847a36f19177417fc623309e040ad GIT binary patch literal 858 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+0810!pIPlzi}!9!hLAbOyu z2SoSu^zQ5H-vc6DT_6c$KY*}dT#z_SF-R83*4MwQqjSdC7^oh|{?EVwGD=q$q8BIv zF&V@FtG^F60b~dm-3Kd%NP$!WEj2Iz>iutT4^#s&?Y^PmBMS?lMySa^cS4*2b`?+y z#A*l$G8X6yuu;#!(lYqh+2 z1~4GJOM?7@83gkeY(0AU?z6X_zyEo9=hBfa^K%7^Uh1*lyTRn+JfVHZ`U@u>eSH1< z>#tY0&mUjc-|FSSa)t4sCTC>dzSCEqeE9P7?~ixS?_Zml%H2`@0~EfDN#5=*ev*lW z_kkSF0*}aI1_o|n5N2eUHAey{$X?><>&pI^lV3>LEd7`YFajB#dAc};Se#BykPvB@ z*g3OxYVX|U$=$P$OLJ80*lAJu^9L(SYm2MHr$tHkEEwA@n44Rcn9C`so>h3a^n!+3FH71G9ija|Pd*xA*-&V1hL3c|7mn*+UE}QI=1$>{~ z*mt!kdG|ZY?`L9WbN<8CBhj<<bP0l+XkK{w_u? literal 0 HcmV?d00001 diff --git a/share/dark_resources/zoom_fit32.png b/share/dark_resources/zoom_fit32.png new file mode 100644 index 0000000000000000000000000000000000000000..6145c1b2e8e09115a46c7fc07babefc4a90fd47a GIT binary patch literal 441 zcmV;q0Y?6bP)DJ#Ce3E%n}7bD31Q9;%{f070RKY)W|lUuFmrGrtsizJu0w@F%mnC@{1+qy z!VBO_?hCFx*VaB201=%4cu$h#)&&!hB@sCik>#qY&eJr#32nz808dpL0G>qTjflP) z)vN%x1F$<7fH7usJRU!|cb?~ujYMYv4w-qo4&KKLtqQn6%)Afa3V>l|s{wFlv=C~5 zq9_s~nwkg9>{TEdz@*v(r$8S7ZS^j`#)Llr0JfOI00fDn?Sh`ivbKU zIS^I=Tl9nRuIpA+RUPzw|D%)|-oKj2t&M*GQ=?{7TI&Y@R{-vr`DToI7Q}1-8$?Pf zyZ}=}HU$jnvsyF=ptXJ`qQk+Fh@1jA2JlWquj98*W~nV zvQdDD&H$VMcoUJA5$daH8ZH7b?QNq5u9^AKmjBdwkkti5bXnK+QxO1PTeWR_Cn6U_ zw65#=c5Vx9(rPO%*B;omWoS>#ngcFbQ!l4j2=6)$MH+&Nfe79Mu6b`RA0KE4A_^cB zX$)lcMHJ&arfytHET%v%#Nq(Hbl6lV0+2GGiUF7qzD_6#5L3W=fSoJw3oc>UAyVoi QS^xk507*qoM6N<$g4ji+X#fBK literal 0 HcmV?d00001 diff --git a/share/dark_resources/zoom_out32.png b/share/dark_resources/zoom_out32.png new file mode 100644 index 0000000000000000000000000000000000000000..38c13e2b971a2b349f17028354b46af4f3145322 GIT binary patch literal 316 zcmV-C0mJ@@P)uj|K~)bD z;cZ1PC$R$vjKqm909@UqY3l}n&XTSGDMYRteg;r##qI#LqTK<8JMaL2F`ywDI(wV| O0000