diff --git a/.gitignore b/.gitignore
index 6f195bb04..e1ea4aadc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,3 +17,4 @@ compile_commands.json
/.idea
/.vs
CMakeUserPresets.json
+.DS_Store
diff --git a/radio/src/bitmaps/320x240/CMakeLists.txt b/radio/src/bitmaps/320x240/CMakeLists.txt
index fa73b2c0e..d11d892fd 100644
--- a/radio/src/bitmaps/320x240/CMakeLists.txt
+++ b/radio/src/bitmaps/320x240/CMakeLists.txt
@@ -2,23 +2,12 @@ set(BITMAP_SIZE_ARGS --size-format 2)
set(BITMAP_LZ4_ARGS ${BITMAP_SIZE_ARGS} --lz4)
set(MASK_LZ4_ARGS ${BITMAP_SIZE_ARGS} --lz4)
-add_bitmaps_target(bm320_splash_logo "${RADIO_SRC_DIR}/bitmaps/320x240/splash_logo.png" "4/4/4/4" "${BITMAP_LZ4_ARGS}")
+add_bitmaps_target(bm320_bmps "${RADIO_SRC_DIR}/bitmaps/320x240/bmp_*.png" "4/4/4/4" "${BITMAP_LZ4_ARGS}")
add_bitmaps_target(bm320_masks "${RADIO_SRC_DIR}/bitmaps/320x240/mask_*.png" 8bits "${MASK_LZ4_ARGS}")
-add_bitmaps_target(bm320_slider_masks "${RADIO_SRC_DIR}/bitmaps/320x240/slider/*.png" 8bits "${MASK_LZ4_ARGS}")
-add_bitmaps_target(bm320_volume_masks ${RADIO_SRC_DIR}/bitmaps/320x240/volume/*.png 8bits "${MASK_LZ4_ARGS}")
-add_bitmaps_target(bm320_themes_masks "${RADIO_SRC_DIR}/bitmaps/320x240/default_theme/mask_*.png" 8bits "${MASK_LZ4_ARGS}")
-add_bitmaps_target(bm320_themes_alpha "${RADIO_SRC_DIR}/bitmaps/320x240/default_theme/alpha_*.png" "4/4/4/4" "${BITMAP_LZ4_ARGS}")
-
-add_bitmaps_target(bm320_bootloader_bitmaps "${RADIO_SRC_DIR}/bitmaps/320x240/bootloader/bmp_*.png" "4/4/4/4" "${BITMAP_LZ4_ARGS}")
add_custom_target(bm320_bitmaps)
add_dependencies(bm320_bitmaps
- bm320_splash_logo
+ bm320_bmps
bm320_masks
- bm320_slider_masks
- bm320_themes_masks
- bm320_themes_alpha
- bm320_volume_masks
- bm320_bootloader_bitmaps
)
diff --git a/radio/src/bitmaps/320x240/bmp_bootloader_plug_usb.png b/radio/src/bitmaps/320x240/bmp_bootloader_plug_usb.png
new file mode 100644
index 000000000..b33275356
Binary files /dev/null and b/radio/src/bitmaps/320x240/bmp_bootloader_plug_usb.png differ
diff --git a/radio/src/bitmaps/320x240/bmp_bootloader_usb_plugged.png b/radio/src/bitmaps/320x240/bmp_bootloader_usb_plugged.png
new file mode 100644
index 000000000..cd11d1c64
Binary files /dev/null and b/radio/src/bitmaps/320x240/bmp_bootloader_usb_plugged.png differ
diff --git a/radio/src/bitmaps/320x240/bmp_logo_edgetx_splash.png b/radio/src/bitmaps/320x240/bmp_logo_edgetx_splash.png
new file mode 100644
index 000000000..c8d6e57a1
Binary files /dev/null and b/radio/src/bitmaps/320x240/bmp_logo_edgetx_splash.png differ
diff --git a/radio/src/bitmaps/320x240/bmp_radio_stick_background.png b/radio/src/bitmaps/320x240/bmp_radio_stick_background.png
new file mode 100644
index 000000000..ae0878a4e
Binary files /dev/null and b/radio/src/bitmaps/320x240/bmp_radio_stick_background.png differ
diff --git a/radio/src/bitmaps/320x240/bmp_radio_stick_pointer.png b/radio/src/bitmaps/320x240/bmp_radio_stick_pointer.png
new file mode 100644
index 000000000..75f7666c7
Binary files /dev/null and b/radio/src/bitmaps/320x240/bmp_radio_stick_pointer.png differ
diff --git a/radio/src/bitmaps/320x240/bootloader/bmp_plug_usb.png b/radio/src/bitmaps/320x240/bootloader/bmp_plug_usb.png
deleted file mode 100644
index 4dfe28c3b..000000000
Binary files a/radio/src/bitmaps/320x240/bootloader/bmp_plug_usb.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/bootloader/bmp_usb_plugged.png b/radio/src/bitmaps/320x240/bootloader/bmp_usb_plugged.png
deleted file mode 100644
index 4e5e5ef52..000000000
Binary files a/radio/src/bitmaps/320x240/bootloader/bmp_usb_plugged.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/alpha_stick_background.png b/radio/src/bitmaps/320x240/default_theme/alpha_stick_background.png
deleted file mode 100644
index 0eccd510c..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/alpha_stick_background.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/alpha_stick_pointer.png b/radio/src/bitmaps/320x240/default_theme/alpha_stick_pointer.png
deleted file mode 100644
index a9867a7e1..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/alpha_stick_pointer.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_btn_close.png b/radio/src/bitmaps/320x240/default_theme/mask_btn_close.png
deleted file mode 100644
index a728a5f17..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_btn_close.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_btn_next.png b/radio/src/bitmaps/320x240/default_theme/mask_btn_next.png
deleted file mode 100644
index 2ef14e078..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_btn_next.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_btn_prev.png b/radio/src/bitmaps/320x240/default_theme/mask_btn_prev.png
deleted file mode 100644
index c6abeb9de..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_btn_prev.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_busy.png b/radio/src/bitmaps/320x240/default_theme/mask_busy.png
deleted file mode 100644
index 75b62d44a..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_busy.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_currentmenu_bg.png b/radio/src/bitmaps/320x240/default_theme/mask_currentmenu_bg.png
deleted file mode 100644
index 8ac5804cc..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_currentmenu_bg.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_currentmenu_dot.png b/radio/src/bitmaps/320x240/default_theme/mask_currentmenu_dot.png
deleted file mode 100644
index 663bdc60f..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_currentmenu_dot.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_currentmenu_shadow.png b/radio/src/bitmaps/320x240/default_theme/mask_currentmenu_shadow.png
deleted file mode 100644
index 5e790b47e..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_currentmenu_shadow.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_edgetx.png b/radio/src/bitmaps/320x240/default_theme/mask_edgetx.png
deleted file mode 100644
index 958f4bf7a..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_edgetx.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_error.png b/radio/src/bitmaps/320x240/default_theme/mask_error.png
deleted file mode 100644
index c21f812f1..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_error.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_menu_favs.png b/radio/src/bitmaps/320x240/default_theme/mask_menu_favs.png
deleted file mode 100644
index 4224f562d..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_menu_favs.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_menu_model.png b/radio/src/bitmaps/320x240/default_theme/mask_menu_model.png
deleted file mode 100644
index b4a733794..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_menu_model.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_menu_model_select.png b/radio/src/bitmaps/320x240/default_theme/mask_menu_model_select.png
deleted file mode 100644
index 308bb04bc..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_menu_model_select.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_menu_notes.png b/radio/src/bitmaps/320x240/default_theme/mask_menu_notes.png
deleted file mode 100644
index 3a88c7d04..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_menu_notes.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_menu_radio.png b/radio/src/bitmaps/320x240/default_theme/mask_menu_radio.png
deleted file mode 100644
index c35fba3c9..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_menu_radio.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_menu_stats.png b/radio/src/bitmaps/320x240/default_theme/mask_menu_stats.png
deleted file mode 100644
index 87259372c..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_menu_stats.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_menu_theme.png b/radio/src/bitmaps/320x240/default_theme/mask_menu_theme.png
deleted file mode 100644
index 7944a12c9..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_menu_theme.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_model_curves.png b/radio/src/bitmaps/320x240/default_theme/mask_model_curves.png
deleted file mode 100644
index ad62ea9ae..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_model_curves.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_model_flight_modes.png b/radio/src/bitmaps/320x240/default_theme/mask_model_flight_modes.png
deleted file mode 100644
index 38802c2fe..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_model_flight_modes.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_model_grid_large.png b/radio/src/bitmaps/320x240/default_theme/mask_model_grid_large.png
deleted file mode 100644
index a69a055e3..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_model_grid_large.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_model_grid_small.png b/radio/src/bitmaps/320x240/default_theme/mask_model_grid_small.png
deleted file mode 100644
index b5192aaf4..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_model_grid_small.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_model_gvars.png b/radio/src/bitmaps/320x240/default_theme/mask_model_gvars.png
deleted file mode 100644
index aad686629..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_model_gvars.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_model_heli.png b/radio/src/bitmaps/320x240/default_theme/mask_model_heli.png
deleted file mode 100644
index 68f7d584e..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_model_heli.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_model_inputs.png b/radio/src/bitmaps/320x240/default_theme/mask_model_inputs.png
deleted file mode 100644
index 79064b772..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_model_inputs.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_model_list_one.png b/radio/src/bitmaps/320x240/default_theme/mask_model_list_one.png
deleted file mode 100644
index d0f3dd987..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_model_list_one.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_model_list_two.png b/radio/src/bitmaps/320x240/default_theme/mask_model_list_two.png
deleted file mode 100644
index d049b36ce..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_model_list_two.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_model_logical_switches.png b/radio/src/bitmaps/320x240/default_theme/mask_model_logical_switches.png
deleted file mode 100644
index 013df9953..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_model_logical_switches.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_model_lua_scripts.png b/radio/src/bitmaps/320x240/default_theme/mask_model_lua_scripts.png
deleted file mode 100644
index 6aa39849e..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_model_lua_scripts.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_model_mixer.png b/radio/src/bitmaps/320x240/default_theme/mask_model_mixer.png
deleted file mode 100644
index 4696f0e4e..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_model_mixer.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_model_outputs.png b/radio/src/bitmaps/320x240/default_theme/mask_model_outputs.png
deleted file mode 100644
index 77dc35ddb..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_model_outputs.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_model_setup.png b/radio/src/bitmaps/320x240/default_theme/mask_model_setup.png
deleted file mode 100644
index 0e61bd4dd..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_model_setup.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_model_special_functions.png b/radio/src/bitmaps/320x240/default_theme/mask_model_special_functions.png
deleted file mode 100644
index 4b530d0ca..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_model_special_functions.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_model_telemetry.png b/radio/src/bitmaps/320x240/default_theme/mask_model_telemetry.png
deleted file mode 100644
index 5bcf0dd2a..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_model_telemetry.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_model_usb.png b/radio/src/bitmaps/320x240/default_theme/mask_model_usb.png
deleted file mode 100644
index a53b0fe2c..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_model_usb.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_monitor.png b/radio/src/bitmaps/320x240/default_theme/mask_monitor.png
deleted file mode 100644
index 6ef2544b8..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_monitor.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_monitor_inver.png b/radio/src/bitmaps/320x240/default_theme/mask_monitor_inver.png
deleted file mode 100644
index 8d2166a7f..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_monitor_inver.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_monitor_lockch.png b/radio/src/bitmaps/320x240/default_theme/mask_monitor_lockch.png
deleted file mode 100644
index 359e8c985..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_monitor_lockch.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_monitor_logsw.png b/radio/src/bitmaps/320x240/default_theme/mask_monitor_logsw.png
deleted file mode 100644
index 4b294c87e..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_monitor_logsw.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_mplex_add.png b/radio/src/bitmaps/320x240/default_theme/mask_mplex_add.png
deleted file mode 100644
index 260491b02..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_mplex_add.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_mplex_multi.png b/radio/src/bitmaps/320x240/default_theme/mask_mplex_multi.png
deleted file mode 100644
index 5e6aad511..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_mplex_multi.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_mplex_replace.png b/radio/src/bitmaps/320x240/default_theme/mask_mplex_replace.png
deleted file mode 100644
index d11a44aba..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_mplex_replace.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_radio_calibration.png b/radio/src/bitmaps/320x240/default_theme/mask_radio_calibration.png
deleted file mode 100644
index a14223884..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_radio_calibration.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_radio_edit_theme.png b/radio/src/bitmaps/320x240/default_theme/mask_radio_edit_theme.png
deleted file mode 100644
index 488912145..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_radio_edit_theme.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_radio_global_functions.png b/radio/src/bitmaps/320x240/default_theme/mask_radio_global_functions.png
deleted file mode 100644
index 8f8290ece..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_radio_global_functions.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_radio_hardware.png b/radio/src/bitmaps/320x240/default_theme/mask_radio_hardware.png
deleted file mode 100644
index 7962bac15..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_radio_hardware.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_radio_sd_browser.png b/radio/src/bitmaps/320x240/default_theme/mask_radio_sd_browser.png
deleted file mode 100644
index 3e178c133..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_radio_sd_browser.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_radio_setup.png b/radio/src/bitmaps/320x240/default_theme/mask_radio_setup.png
deleted file mode 100644
index 43e068789..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_radio_setup.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_radio_tools.png b/radio/src/bitmaps/320x240/default_theme/mask_radio_tools.png
deleted file mode 100644
index 353906aac..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_radio_tools.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_radio_trainer.png b/radio/src/bitmaps/320x240/default_theme/mask_radio_trainer.png
deleted file mode 100644
index f508d37bb..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_radio_trainer.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_radio_version.png b/radio/src/bitmaps/320x240/default_theme/mask_radio_version.png
deleted file mode 100644
index 44fe40db8..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_radio_version.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_shutdown.png b/radio/src/bitmaps/320x240/default_theme/mask_shutdown.png
deleted file mode 100644
index d9ebdf664..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_shutdown.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_stats_analogs.png b/radio/src/bitmaps/320x240/default_theme/mask_stats_analogs.png
deleted file mode 100644
index f8c7a8eff..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_stats_analogs.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_stats_debug.png b/radio/src/bitmaps/320x240/default_theme/mask_stats_debug.png
deleted file mode 100644
index 45c5a86da..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_stats_debug.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_stats_timers.png b/radio/src/bitmaps/320x240/default_theme/mask_stats_timers.png
deleted file mode 100644
index 7130c9ad0..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_stats_timers.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_textline_curve.png b/radio/src/bitmaps/320x240/default_theme/mask_textline_curve.png
deleted file mode 100644
index 8235f9e93..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_textline_curve.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_textline_fm.png b/radio/src/bitmaps/320x240/default_theme/mask_textline_fm.png
deleted file mode 100644
index 9cbebcc02..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_textline_fm.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_theme_add_view.png b/radio/src/bitmaps/320x240/default_theme/mask_theme_add_view.png
deleted file mode 100644
index 33989efea..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_theme_add_view.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_theme_setup.png b/radio/src/bitmaps/320x240/default_theme/mask_theme_setup.png
deleted file mode 100644
index 73b0dc34e..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_theme_setup.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_theme_view1.png b/radio/src/bitmaps/320x240/default_theme/mask_theme_view1.png
deleted file mode 100644
index 018c43d26..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_theme_view1.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_theme_view10.png b/radio/src/bitmaps/320x240/default_theme/mask_theme_view10.png
deleted file mode 100644
index 0704464cc..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_theme_view10.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_theme_view2.png b/radio/src/bitmaps/320x240/default_theme/mask_theme_view2.png
deleted file mode 100644
index fa546ca62..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_theme_view2.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_theme_view3.png b/radio/src/bitmaps/320x240/default_theme/mask_theme_view3.png
deleted file mode 100644
index f7a9e4e35..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_theme_view3.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_theme_view4.png b/radio/src/bitmaps/320x240/default_theme/mask_theme_view4.png
deleted file mode 100644
index f811e221f..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_theme_view4.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_theme_view5.png b/radio/src/bitmaps/320x240/default_theme/mask_theme_view5.png
deleted file mode 100644
index c99fc9698..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_theme_view5.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_theme_view6.png b/radio/src/bitmaps/320x240/default_theme/mask_theme_view6.png
deleted file mode 100644
index ae16f7e31..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_theme_view6.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_theme_view7.png b/radio/src/bitmaps/320x240/default_theme/mask_theme_view7.png
deleted file mode 100644
index 7601eec3c..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_theme_view7.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_theme_view8.png b/radio/src/bitmaps/320x240/default_theme/mask_theme_view8.png
deleted file mode 100644
index ddd1609e5..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_theme_view8.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_theme_view9.png b/radio/src/bitmaps/320x240/default_theme/mask_theme_view9.png
deleted file mode 100644
index 030880f99..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_theme_view9.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_tools_apps.png b/radio/src/bitmaps/320x240/default_theme/mask_tools_apps.png
deleted file mode 100644
index 0ada3652a..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_tools_apps.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_tools_reset.png b/radio/src/bitmaps/320x240/default_theme/mask_tools_reset.png
deleted file mode 100644
index bc25afd6a..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_tools_reset.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_top_logo.png b/radio/src/bitmaps/320x240/default_theme/mask_top_logo.png
deleted file mode 100644
index c62e2763b..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_top_logo.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_topleft.png b/radio/src/bitmaps/320x240/default_theme/mask_topleft.png
deleted file mode 100644
index 45398dc43..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_topleft.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_trim.png b/radio/src/bitmaps/320x240/default_theme/mask_trim.png
deleted file mode 100644
index 59c1f1884..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_trim.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_trim_shadow.png b/radio/src/bitmaps/320x240/default_theme/mask_trim_shadow.png
deleted file mode 100644
index c6cb3ed4b..000000000
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_trim_shadow.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/mask_antenna.png b/radio/src/bitmaps/320x240/mask_antenna.png
deleted file mode 100644
index 7562a59e4..000000000
Binary files a/radio/src/bitmaps/320x240/mask_antenna.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/mask_dot.png b/radio/src/bitmaps/320x240/mask_dot.png
deleted file mode 100644
index 678ce31bb..000000000
Binary files a/radio/src/bitmaps/320x240/mask_dot.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_edgetx.png b/radio/src/bitmaps/320x240/mask_icon_edgetx.png
new file mode 100644
index 000000000..bb3b7776e
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_edgetx.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_menu_favs.png b/radio/src/bitmaps/320x240/mask_icon_menu_favs.png
new file mode 100644
index 000000000..9c078ea74
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_menu_favs.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_menu_manage_models.png b/radio/src/bitmaps/320x240/mask_icon_menu_manage_models.png
new file mode 100644
index 000000000..a7687c8da
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_menu_manage_models.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_menu_model_setup.png b/radio/src/bitmaps/320x240/mask_icon_menu_model_setup.png
new file mode 100644
index 000000000..525747fdf
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_menu_model_setup.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_menu_radio_setup.png b/radio/src/bitmaps/320x240/mask_icon_menu_radio_setup.png
new file mode 100644
index 000000000..7ce9efcbf
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_menu_radio_setup.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_menu_tools.png b/radio/src/bitmaps/320x240/mask_icon_menu_tools.png
new file mode 100644
index 000000000..4f6fee99a
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_menu_tools.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_menu_ui_setup.png b/radio/src/bitmaps/320x240/mask_icon_menu_ui_setup.png
new file mode 100644
index 000000000..d7eb47360
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_menu_ui_setup.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_model_curves.png b/radio/src/bitmaps/320x240/mask_icon_model_curves.png
new file mode 100644
index 000000000..6ee20a4e1
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_model_curves.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_model_flight_modes.png b/radio/src/bitmaps/320x240/mask_icon_model_flight_modes.png
new file mode 100644
index 000000000..eff45c3a7
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_model_flight_modes.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_model_general.png b/radio/src/bitmaps/320x240/mask_icon_model_general.png
new file mode 100644
index 000000000..e5220bc97
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_model_general.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_model_gvars.png b/radio/src/bitmaps/320x240/mask_icon_model_gvars.png
new file mode 100644
index 000000000..70e96a218
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_model_gvars.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_model_heli.png b/radio/src/bitmaps/320x240/mask_icon_model_heli.png
new file mode 100644
index 000000000..70b46f50b
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_model_heli.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_model_inputs.png b/radio/src/bitmaps/320x240/mask_icon_model_inputs.png
new file mode 100644
index 000000000..586ecc52c
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_model_inputs.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_model_logical_switches.png b/radio/src/bitmaps/320x240/mask_icon_model_logical_switches.png
new file mode 100644
index 000000000..0fa66cf0f
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_model_logical_switches.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_model_mixer.png b/radio/src/bitmaps/320x240/mask_icon_model_mixer.png
new file mode 100644
index 000000000..16c1aa2fe
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_model_mixer.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_model_mixer_scripts.png b/radio/src/bitmaps/320x240/mask_icon_model_mixer_scripts.png
new file mode 100644
index 000000000..6f2b3dce0
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_model_mixer_scripts.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_model_notes.png b/radio/src/bitmaps/320x240/mask_icon_model_notes.png
new file mode 100644
index 000000000..dbeb23ce4
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_model_notes.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_model_outputs.png b/radio/src/bitmaps/320x240/mask_icon_model_outputs.png
new file mode 100644
index 000000000..0f38af81e
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_model_outputs.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_model_special_functions.png b/radio/src/bitmaps/320x240/mask_icon_model_special_functions.png
new file mode 100644
index 000000000..7bfd20599
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_model_special_functions.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_model_telemetry.png b/radio/src/bitmaps/320x240/mask_icon_model_telemetry.png
new file mode 100644
index 000000000..130982007
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_model_telemetry.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_model_timers.png b/radio/src/bitmaps/320x240/mask_icon_model_timers.png
new file mode 100644
index 000000000..c0ea682a5
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_model_timers.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_model_usb.png b/radio/src/bitmaps/320x240/mask_icon_model_usb.png
new file mode 100644
index 000000000..e290bd657
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_model_usb.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_radio_about.png b/radio/src/bitmaps/320x240/mask_icon_radio_about.png
new file mode 100644
index 000000000..2cbabbb92
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_radio_about.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_radio_analogs.png b/radio/src/bitmaps/320x240/mask_icon_radio_analogs.png
new file mode 100644
index 000000000..7165b63d4
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_radio_analogs.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_radio_calibration.png b/radio/src/bitmaps/320x240/mask_icon_radio_calibration.png
new file mode 100644
index 000000000..7c2adc8df
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_radio_calibration.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_radio_general.png b/radio/src/bitmaps/320x240/mask_icon_radio_general.png
new file mode 100644
index 000000000..0c54461dc
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_radio_general.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_radio_global_functions.png b/radio/src/bitmaps/320x240/mask_icon_radio_global_functions.png
new file mode 100644
index 000000000..6a593d832
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_radio_global_functions.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_radio_hardware.png b/radio/src/bitmaps/320x240/mask_icon_radio_hardware.png
new file mode 100644
index 000000000..671523999
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_radio_hardware.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_radio_trainer.png b/radio/src/bitmaps/320x240/mask_icon_radio_trainer.png
new file mode 100644
index 000000000..3ae7172ef
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_radio_trainer.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_tools_apps.png b/radio/src/bitmaps/320x240/mask_icon_tools_apps.png
new file mode 100644
index 000000000..03d5a0603
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_tools_apps.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_tools_debug.png b/radio/src/bitmaps/320x240/mask_icon_tools_debug.png
new file mode 100644
index 000000000..f78dad5c9
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_tools_debug.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_tools_monitor_ch.png b/radio/src/bitmaps/320x240/mask_icon_tools_monitor_ch.png
new file mode 100644
index 000000000..fd3aa3386
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_tools_monitor_ch.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_tools_monitor_ls.png b/radio/src/bitmaps/320x240/mask_icon_tools_monitor_ls.png
new file mode 100644
index 000000000..c03a43996
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_tools_monitor_ls.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_tools_reset.png b/radio/src/bitmaps/320x240/mask_icon_tools_reset.png
new file mode 100644
index 000000000..2c369d726
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_tools_reset.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_tools_stats.png b/radio/src/bitmaps/320x240/mask_icon_tools_stats.png
new file mode 100644
index 000000000..5f9fa0901
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_tools_stats.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_tools_storage.png b/radio/src/bitmaps/320x240/mask_icon_tools_storage.png
new file mode 100644
index 000000000..032c79b02
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_tools_storage.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_ui_themes.png b/radio/src/bitmaps/320x240/mask_icon_ui_themes.png
new file mode 100644
index 000000000..b4598ceb5
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_ui_themes.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_ui_topbar_setup.png b/radio/src/bitmaps/320x240/mask_icon_ui_topbar_setup.png
new file mode 100644
index 000000000..c92368d5f
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_ui_topbar_setup.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_ui_view1.png b/radio/src/bitmaps/320x240/mask_icon_ui_view1.png
new file mode 100644
index 000000000..cd2688528
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_ui_view1.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_ui_view10.png b/radio/src/bitmaps/320x240/mask_icon_ui_view10.png
new file mode 100644
index 000000000..e4bbb6bed
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_ui_view10.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_ui_view2.png b/radio/src/bitmaps/320x240/mask_icon_ui_view2.png
new file mode 100644
index 000000000..ee9df268d
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_ui_view2.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_ui_view3.png b/radio/src/bitmaps/320x240/mask_icon_ui_view3.png
new file mode 100644
index 000000000..b62720d06
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_ui_view3.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_ui_view4.png b/radio/src/bitmaps/320x240/mask_icon_ui_view4.png
new file mode 100644
index 000000000..0c5f4c710
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_ui_view4.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_ui_view5.png b/radio/src/bitmaps/320x240/mask_icon_ui_view5.png
new file mode 100644
index 000000000..b1d862ac4
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_ui_view5.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_ui_view6.png b/radio/src/bitmaps/320x240/mask_icon_ui_view6.png
new file mode 100644
index 000000000..da83b7e80
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_ui_view6.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_ui_view7.png b/radio/src/bitmaps/320x240/mask_icon_ui_view7.png
new file mode 100644
index 000000000..b79b5f78d
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_ui_view7.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_ui_view8.png b/radio/src/bitmaps/320x240/mask_icon_ui_view8.png
new file mode 100644
index 000000000..3279d4c10
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_ui_view8.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_ui_view9.png b/radio/src/bitmaps/320x240/mask_icon_ui_view9.png
new file mode 100644
index 000000000..e4a14ac50
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_ui_view9.png differ
diff --git a/radio/src/bitmaps/320x240/mask_icon_ui_view_add.png b/radio/src/bitmaps/320x240/mask_icon_ui_view_add.png
new file mode 100644
index 000000000..42cee0b85
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_icon_ui_view_add.png differ
diff --git a/radio/src/bitmaps/320x240/mask_info_busy.png b/radio/src/bitmaps/320x240/mask_info_busy.png
new file mode 100644
index 000000000..614ddbfdc
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_info_busy.png differ
diff --git a/radio/src/bitmaps/320x240/mask_info_error.png b/radio/src/bitmaps/320x240/mask_info_error.png
new file mode 100644
index 000000000..736f9fc4d
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_info_error.png differ
diff --git a/radio/src/bitmaps/320x240/mask_info_shutdown.png b/radio/src/bitmaps/320x240/mask_info_shutdown.png
new file mode 100644
index 000000000..d6f108f2c
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_info_shutdown.png differ
diff --git a/radio/src/bitmaps/320x240/mask_info_shutdown_circle0.png b/radio/src/bitmaps/320x240/mask_info_shutdown_circle0.png
new file mode 100644
index 000000000..c6e9ac920
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_info_shutdown_circle0.png differ
diff --git a/radio/src/bitmaps/320x240/mask_info_shutdown_circle1.png b/radio/src/bitmaps/320x240/mask_info_shutdown_circle1.png
new file mode 100644
index 000000000..d3450cb71
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_info_shutdown_circle1.png differ
diff --git a/radio/src/bitmaps/320x240/mask_info_shutdown_circle2.png b/radio/src/bitmaps/320x240/mask_info_shutdown_circle2.png
new file mode 100644
index 000000000..eeeeaeeaf
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_info_shutdown_circle2.png differ
diff --git a/radio/src/bitmaps/320x240/mask_info_shutdown_circle3.png b/radio/src/bitmaps/320x240/mask_info_shutdown_circle3.png
new file mode 100644
index 000000000..e3cc24bd7
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_info_shutdown_circle3.png differ
diff --git a/radio/src/bitmaps/320x240/mask_info_usb_plugged.png b/radio/src/bitmaps/320x240/mask_info_usb_plugged.png
new file mode 100644
index 000000000..2b3704a5f
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_info_usb_plugged.png differ
diff --git a/radio/src/bitmaps/320x240/mask_inline_add.png b/radio/src/bitmaps/320x240/mask_inline_add.png
new file mode 100644
index 000000000..18ae05e09
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_inline_add.png differ
diff --git a/radio/src/bitmaps/320x240/mask_inline_curve.png b/radio/src/bitmaps/320x240/mask_inline_curve.png
new file mode 100644
index 000000000..e014617ac
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_inline_curve.png differ
diff --git a/radio/src/bitmaps/320x240/mask_inline_dot.png b/radio/src/bitmaps/320x240/mask_inline_dot.png
new file mode 100644
index 000000000..f2484a790
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_inline_dot.png differ
diff --git a/radio/src/bitmaps/320x240/mask_inline_fm.png b/radio/src/bitmaps/320x240/mask_inline_fm.png
new file mode 100644
index 000000000..6beba0f4f
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_inline_fm.png differ
diff --git a/radio/src/bitmaps/320x240/mask_inline_inverted.png b/radio/src/bitmaps/320x240/mask_inline_inverted.png
new file mode 100644
index 000000000..87bb152b8
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_inline_inverted.png differ
diff --git a/radio/src/bitmaps/320x240/mask_inline_locked.png b/radio/src/bitmaps/320x240/mask_inline_locked.png
new file mode 100644
index 000000000..4aaa8d3db
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_inline_locked.png differ
diff --git a/radio/src/bitmaps/320x240/mask_inline_multiply.png b/radio/src/bitmaps/320x240/mask_inline_multiply.png
new file mode 100644
index 000000000..69a41cefc
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_inline_multiply.png differ
diff --git a/radio/src/bitmaps/320x240/mask_inline_replace.png b/radio/src/bitmaps/320x240/mask_inline_replace.png
new file mode 100644
index 000000000..d46e67255
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_inline_replace.png differ
diff --git a/radio/src/bitmaps/320x240/mask_menu_edgetx.png b/radio/src/bitmaps/320x240/mask_menu_edgetx.png
new file mode 100644
index 000000000..61ab5c3f8
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_menu_edgetx.png differ
diff --git a/radio/src/bitmaps/320x240/mask_menu_favs.png b/radio/src/bitmaps/320x240/mask_menu_favs.png
new file mode 100644
index 000000000..9c078ea74
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_menu_favs.png differ
diff --git a/radio/src/bitmaps/320x240/mask_round_title_left.png b/radio/src/bitmaps/320x240/mask_round_title_left.png
deleted file mode 100644
index a246dd5e5..000000000
Binary files a/radio/src/bitmaps/320x240/mask_round_title_left.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/mask_round_title_right.png b/radio/src/bitmaps/320x240/mask_round_title_right.png
deleted file mode 100644
index 91291cd4c..000000000
Binary files a/radio/src/bitmaps/320x240/mask_round_title_right.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/mask_shutdown_circle0.png b/radio/src/bitmaps/320x240/mask_shutdown_circle0.png
deleted file mode 100644
index c38aef61b..000000000
Binary files a/radio/src/bitmaps/320x240/mask_shutdown_circle0.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/mask_shutdown_circle1.png b/radio/src/bitmaps/320x240/mask_shutdown_circle1.png
deleted file mode 100644
index bca43ff13..000000000
Binary files a/radio/src/bitmaps/320x240/mask_shutdown_circle1.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/mask_shutdown_circle2.png b/radio/src/bitmaps/320x240/mask_shutdown_circle2.png
deleted file mode 100644
index 2a24769d3..000000000
Binary files a/radio/src/bitmaps/320x240/mask_shutdown_circle2.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/mask_shutdown_circle3.png b/radio/src/bitmaps/320x240/mask_shutdown_circle3.png
deleted file mode 100644
index f950ec73e..000000000
Binary files a/radio/src/bitmaps/320x240/mask_shutdown_circle3.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/mask_timer.png b/radio/src/bitmaps/320x240/mask_timer.png
deleted file mode 100644
index 37e1e7c00..000000000
Binary files a/radio/src/bitmaps/320x240/mask_timer.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/mask_timer_bg.png b/radio/src/bitmaps/320x240/mask_timer_bg.png
deleted file mode 100644
index c1d846f69..000000000
Binary files a/radio/src/bitmaps/320x240/mask_timer_bg.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/mask_topmenu_gps_18.png b/radio/src/bitmaps/320x240/mask_topmenu_gps_18.png
deleted file mode 100644
index 75defb193..000000000
Binary files a/radio/src/bitmaps/320x240/mask_topmenu_gps_18.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/mask_txbat.png b/radio/src/bitmaps/320x240/mask_txbat.png
deleted file mode 100644
index 4d2a6be46..000000000
Binary files a/radio/src/bitmaps/320x240/mask_txbat.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/mask_txbat_charging.png b/radio/src/bitmaps/320x240/mask_txbat_charging.png
deleted file mode 100644
index ff1fb7765..000000000
Binary files a/radio/src/bitmaps/320x240/mask_txbat_charging.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/mask_ui_bg_tile_top_left.png b/radio/src/bitmaps/320x240/mask_ui_bg_tile_top_left.png
new file mode 100644
index 000000000..c140846ff
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_ui_bg_tile_top_left.png differ
diff --git a/radio/src/bitmaps/320x240/mask_ui_bg_tile_top_right.png b/radio/src/bitmaps/320x240/mask_ui_bg_tile_top_right.png
new file mode 100644
index 000000000..e6bba8164
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_ui_bg_tile_top_right.png differ
diff --git a/radio/src/bitmaps/320x240/mask_ui_bg_topbar_left.png b/radio/src/bitmaps/320x240/mask_ui_bg_topbar_left.png
new file mode 100644
index 000000000..b09cde63a
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_ui_bg_topbar_left.png differ
diff --git a/radio/src/bitmaps/320x240/default_theme/mask_topright.png b/radio/src/bitmaps/320x240/mask_ui_bg_topbar_right.png
similarity index 73%
rename from radio/src/bitmaps/320x240/default_theme/mask_topright.png
rename to radio/src/bitmaps/320x240/mask_ui_bg_topbar_right.png
index 97f8126d2..e704439d2 100644
Binary files a/radio/src/bitmaps/320x240/default_theme/mask_topright.png and b/radio/src/bitmaps/320x240/mask_ui_bg_topbar_right.png differ
diff --git a/radio/src/bitmaps/320x240/mask_ui_btn_close.png b/radio/src/bitmaps/320x240/mask_ui_btn_close.png
new file mode 100644
index 000000000..a275316a4
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_ui_btn_close.png differ
diff --git a/radio/src/bitmaps/320x240/mask_ui_btn_grid_large.png b/radio/src/bitmaps/320x240/mask_ui_btn_grid_large.png
new file mode 100644
index 000000000..e3d708a12
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_ui_btn_grid_large.png differ
diff --git a/radio/src/bitmaps/320x240/mask_ui_btn_grid_small.png b/radio/src/bitmaps/320x240/mask_ui_btn_grid_small.png
new file mode 100644
index 000000000..3767a5e14
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_ui_btn_grid_small.png differ
diff --git a/radio/src/bitmaps/320x240/mask_ui_btn_list_one.png b/radio/src/bitmaps/320x240/mask_ui_btn_list_one.png
new file mode 100644
index 000000000..0386ddf63
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_ui_btn_list_one.png differ
diff --git a/radio/src/bitmaps/320x240/mask_ui_btn_list_two.png b/radio/src/bitmaps/320x240/mask_ui_btn_list_two.png
new file mode 100644
index 000000000..637591df9
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_ui_btn_list_two.png differ
diff --git a/radio/src/bitmaps/320x240/mask_ui_btn_next.png b/radio/src/bitmaps/320x240/mask_ui_btn_next.png
new file mode 100644
index 000000000..3934bbd76
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_ui_btn_next.png differ
diff --git a/radio/src/bitmaps/320x240/mask_ui_btn_prev.png b/radio/src/bitmaps/320x240/mask_ui_btn_prev.png
new file mode 100644
index 000000000..4a668cf49
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_ui_btn_prev.png differ
diff --git a/radio/src/bitmaps/320x240/mask_usb_symbol.png b/radio/src/bitmaps/320x240/mask_usb_symbol.png
deleted file mode 100644
index 199d01eef..000000000
Binary files a/radio/src/bitmaps/320x240/mask_usb_symbol.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/mask_widget_antenna.png b/radio/src/bitmaps/320x240/mask_widget_antenna.png
new file mode 100644
index 000000000..ff5e3048c
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_widget_antenna.png differ
diff --git a/radio/src/bitmaps/320x240/mask_widget_gps.png b/radio/src/bitmaps/320x240/mask_widget_gps.png
new file mode 100644
index 000000000..76ffb476f
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_widget_gps.png differ
diff --git a/radio/src/bitmaps/320x240/mask_widget_timer.png b/radio/src/bitmaps/320x240/mask_widget_timer.png
new file mode 100644
index 000000000..8fb5f9963
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_widget_timer.png differ
diff --git a/radio/src/bitmaps/320x240/mask_widget_timer_bg.png b/radio/src/bitmaps/320x240/mask_widget_timer_bg.png
new file mode 100644
index 000000000..5b376445f
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_widget_timer_bg.png differ
diff --git a/radio/src/bitmaps/320x240/mask_widget_trim.png b/radio/src/bitmaps/320x240/mask_widget_trim.png
new file mode 100644
index 000000000..247bec73e
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_widget_trim.png differ
diff --git a/radio/src/bitmaps/320x240/mask_widget_trim_shadow.png b/radio/src/bitmaps/320x240/mask_widget_trim_shadow.png
new file mode 100644
index 000000000..53deb8828
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_widget_trim_shadow.png differ
diff --git a/radio/src/bitmaps/320x240/mask_widget_txbat.png b/radio/src/bitmaps/320x240/mask_widget_txbat.png
new file mode 100644
index 000000000..63a3c8e9e
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_widget_txbat.png differ
diff --git a/radio/src/bitmaps/320x240/mask_widget_txbat_charging.png b/radio/src/bitmaps/320x240/mask_widget_txbat_charging.png
new file mode 100644
index 000000000..210786cae
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_widget_txbat_charging.png differ
diff --git a/radio/src/bitmaps/320x240/mask_topmenu_usb.png b/radio/src/bitmaps/320x240/mask_widget_usb.png
similarity index 66%
rename from radio/src/bitmaps/320x240/mask_topmenu_usb.png
rename to radio/src/bitmaps/320x240/mask_widget_usb.png
index 2e3b293a5..01865e143 100644
Binary files a/radio/src/bitmaps/320x240/mask_topmenu_usb.png and b/radio/src/bitmaps/320x240/mask_widget_usb.png differ
diff --git a/radio/src/bitmaps/320x240/mask_widget_volume0.png b/radio/src/bitmaps/320x240/mask_widget_volume0.png
new file mode 100644
index 000000000..a3b446fb6
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_widget_volume0.png differ
diff --git a/radio/src/bitmaps/320x240/mask_widget_volume1.png b/radio/src/bitmaps/320x240/mask_widget_volume1.png
new file mode 100644
index 000000000..f00ba4d13
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_widget_volume1.png differ
diff --git a/radio/src/bitmaps/320x240/mask_widget_volume2.png b/radio/src/bitmaps/320x240/mask_widget_volume2.png
new file mode 100644
index 000000000..eb94080f5
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_widget_volume2.png differ
diff --git a/radio/src/bitmaps/320x240/mask_widget_volume3.png b/radio/src/bitmaps/320x240/mask_widget_volume3.png
new file mode 100644
index 000000000..85b53d127
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_widget_volume3.png differ
diff --git a/radio/src/bitmaps/320x240/mask_widget_volume4.png b/radio/src/bitmaps/320x240/mask_widget_volume4.png
new file mode 100644
index 000000000..38a9d5610
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_widget_volume4.png differ
diff --git a/radio/src/bitmaps/320x240/mask_widget_volume_scale.png b/radio/src/bitmaps/320x240/mask_widget_volume_scale.png
new file mode 100644
index 000000000..abc93c450
Binary files /dev/null and b/radio/src/bitmaps/320x240/mask_widget_volume_scale.png differ
diff --git a/radio/src/bitmaps/320x240/splash_logo.png b/radio/src/bitmaps/320x240/splash_logo.png
deleted file mode 100644
index d21969cb0..000000000
Binary files a/radio/src/bitmaps/320x240/splash_logo.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/volume/mask_volume_0.png b/radio/src/bitmaps/320x240/volume/mask_volume_0.png
deleted file mode 100644
index 3f9900831..000000000
Binary files a/radio/src/bitmaps/320x240/volume/mask_volume_0.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/volume/mask_volume_1.png b/radio/src/bitmaps/320x240/volume/mask_volume_1.png
deleted file mode 100644
index eee98e02f..000000000
Binary files a/radio/src/bitmaps/320x240/volume/mask_volume_1.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/volume/mask_volume_2.png b/radio/src/bitmaps/320x240/volume/mask_volume_2.png
deleted file mode 100644
index ecc9ba461..000000000
Binary files a/radio/src/bitmaps/320x240/volume/mask_volume_2.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/volume/mask_volume_3.png b/radio/src/bitmaps/320x240/volume/mask_volume_3.png
deleted file mode 100644
index bc57b3f48..000000000
Binary files a/radio/src/bitmaps/320x240/volume/mask_volume_3.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/volume/mask_volume_4.png b/radio/src/bitmaps/320x240/volume/mask_volume_4.png
deleted file mode 100644
index 76d4f9001..000000000
Binary files a/radio/src/bitmaps/320x240/volume/mask_volume_4.png and /dev/null differ
diff --git a/radio/src/bitmaps/320x240/volume/mask_volume_scale.png b/radio/src/bitmaps/320x240/volume/mask_volume_scale.png
deleted file mode 100644
index 9a92f757d..000000000
Binary files a/radio/src/bitmaps/320x240/volume/mask_volume_scale.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/CMakeLists.txt b/radio/src/bitmaps/480x272/CMakeLists.txt
index 59fbe9db5..59d5caeba 100644
--- a/radio/src/bitmaps/480x272/CMakeLists.txt
+++ b/radio/src/bitmaps/480x272/CMakeLists.txt
@@ -2,23 +2,12 @@ set(BITMAP_SIZE_ARGS --size-format 2)
set(BITMAP_LZ4_ARGS ${BITMAP_SIZE_ARGS} --lz4)
set(MASK_LZ4_ARGS ${BITMAP_SIZE_ARGS} --lz4)
-add_bitmaps_target(bm480_splash_logo "${RADIO_SRC_DIR}/bitmaps/480x272/splash_logo.png" "4/4/4/4" "${BITMAP_LZ4_ARGS}")
+add_bitmaps_target(bm480_bmps "${RADIO_SRC_DIR}/bitmaps/480x272/bmp_*.png" "4/4/4/4" "${BITMAP_LZ4_ARGS}")
add_bitmaps_target(bm480_masks "${RADIO_SRC_DIR}/bitmaps/480x272/mask_*.png" 8bits "${MASK_LZ4_ARGS}")
-add_bitmaps_target(bm480_slider_masks "${RADIO_SRC_DIR}/bitmaps/480x272/slider/*.png" 8bits "${MASK_LZ4_ARGS}")
-add_bitmaps_target(bm480_volume_masks ${RADIO_SRC_DIR}/bitmaps/480x272/volume/*.png 8bits "${MASK_LZ4_ARGS}")
-add_bitmaps_target(bm480_themes_masks "${RADIO_SRC_DIR}/bitmaps/480x272/default_theme/mask_*.png" 8bits "${MASK_LZ4_ARGS}")
-add_bitmaps_target(bm480_themes_alpha "${RADIO_SRC_DIR}/bitmaps/480x272/default_theme/alpha_*.png" "4/4/4/4" "${BITMAP_LZ4_ARGS}")
-
-add_bitmaps_target(bm480_bootloader_bitmaps "${RADIO_SRC_DIR}/bitmaps/480x272/bootloader/bmp_*.png" "4/4/4/4" "${BITMAP_LZ4_ARGS}")
add_custom_target(bm480_bitmaps)
add_dependencies(bm480_bitmaps
- bm480_splash_logo
+ bm480_bmps
bm480_masks
- bm480_slider_masks
- bm480_themes_masks
- bm480_themes_alpha
- bm480_volume_masks
- bm480_bootloader_bitmaps
)
diff --git a/radio/src/bitmaps/480x272/bmp_bootloader_plug_usb.png b/radio/src/bitmaps/480x272/bmp_bootloader_plug_usb.png
new file mode 100644
index 000000000..a003c5bf1
Binary files /dev/null and b/radio/src/bitmaps/480x272/bmp_bootloader_plug_usb.png differ
diff --git a/radio/src/bitmaps/480x272/bmp_bootloader_usb_plugged.png b/radio/src/bitmaps/480x272/bmp_bootloader_usb_plugged.png
new file mode 100644
index 000000000..1bf644e54
Binary files /dev/null and b/radio/src/bitmaps/480x272/bmp_bootloader_usb_plugged.png differ
diff --git a/radio/src/bitmaps/480x272/bmp_logo_edgetx_splash.png b/radio/src/bitmaps/480x272/bmp_logo_edgetx_splash.png
new file mode 100644
index 000000000..585af8e72
Binary files /dev/null and b/radio/src/bitmaps/480x272/bmp_logo_edgetx_splash.png differ
diff --git a/radio/src/bitmaps/480x272/bmp_radio_stick_background.png b/radio/src/bitmaps/480x272/bmp_radio_stick_background.png
new file mode 100644
index 000000000..ceaedf406
Binary files /dev/null and b/radio/src/bitmaps/480x272/bmp_radio_stick_background.png differ
diff --git a/radio/src/bitmaps/480x272/bmp_radio_stick_pointer.png b/radio/src/bitmaps/480x272/bmp_radio_stick_pointer.png
new file mode 100644
index 000000000..9c7808629
Binary files /dev/null and b/radio/src/bitmaps/480x272/bmp_radio_stick_pointer.png differ
diff --git a/radio/src/bitmaps/480x272/bootloader/bmp_plug_usb.png b/radio/src/bitmaps/480x272/bootloader/bmp_plug_usb.png
deleted file mode 100644
index a8836ac3e..000000000
Binary files a/radio/src/bitmaps/480x272/bootloader/bmp_plug_usb.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/bootloader/bmp_usb_plugged.png b/radio/src/bitmaps/480x272/bootloader/bmp_usb_plugged.png
deleted file mode 100644
index 0c020105d..000000000
Binary files a/radio/src/bitmaps/480x272/bootloader/bmp_usb_plugged.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/alpha_stick_background.png b/radio/src/bitmaps/480x272/default_theme/alpha_stick_background.png
deleted file mode 100644
index b3baf1f79..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/alpha_stick_background.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/alpha_stick_pointer.png b/radio/src/bitmaps/480x272/default_theme/alpha_stick_pointer.png
deleted file mode 100644
index cb1297e4b..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/alpha_stick_pointer.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_btn_close.png b/radio/src/bitmaps/480x272/default_theme/mask_btn_close.png
deleted file mode 100644
index 4945b5e00..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_btn_close.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_btn_next.png b/radio/src/bitmaps/480x272/default_theme/mask_btn_next.png
deleted file mode 100644
index f1f3f5abd..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_btn_next.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_btn_prev.png b/radio/src/bitmaps/480x272/default_theme/mask_btn_prev.png
deleted file mode 100644
index debe80dfa..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_btn_prev.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_busy.png b/radio/src/bitmaps/480x272/default_theme/mask_busy.png
deleted file mode 100644
index 41b2ca5e8..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_busy.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_currentmenu_bg.png b/radio/src/bitmaps/480x272/default_theme/mask_currentmenu_bg.png
deleted file mode 100644
index 006c7e141..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_currentmenu_bg.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_currentmenu_dot.png b/radio/src/bitmaps/480x272/default_theme/mask_currentmenu_dot.png
deleted file mode 100644
index 6813bbef6..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_currentmenu_dot.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_currentmenu_shadow.png b/radio/src/bitmaps/480x272/default_theme/mask_currentmenu_shadow.png
deleted file mode 100644
index a9539c34c..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_currentmenu_shadow.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_edgetx.png b/radio/src/bitmaps/480x272/default_theme/mask_edgetx.png
deleted file mode 100644
index b571cb030..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_edgetx.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_error.png b/radio/src/bitmaps/480x272/default_theme/mask_error.png
deleted file mode 100644
index 943398c93..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_error.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_menu_model.png b/radio/src/bitmaps/480x272/default_theme/mask_menu_model.png
deleted file mode 100644
index 7a8b42657..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_menu_model.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_menu_model_select.png b/radio/src/bitmaps/480x272/default_theme/mask_menu_model_select.png
deleted file mode 100644
index 6e50e34ac..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_menu_model_select.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_menu_notes.png b/radio/src/bitmaps/480x272/default_theme/mask_menu_notes.png
deleted file mode 100644
index 8df117358..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_menu_notes.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_menu_radio.png b/radio/src/bitmaps/480x272/default_theme/mask_menu_radio.png
deleted file mode 100644
index ae300e2bd..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_menu_radio.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_menu_stats.png b/radio/src/bitmaps/480x272/default_theme/mask_menu_stats.png
deleted file mode 100644
index f657bc2bd..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_menu_stats.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_menu_theme.png b/radio/src/bitmaps/480x272/default_theme/mask_menu_theme.png
deleted file mode 100644
index 9cff4274b..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_menu_theme.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_model_curves.png b/radio/src/bitmaps/480x272/default_theme/mask_model_curves.png
deleted file mode 100644
index abd0741ef..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_model_curves.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_model_flight_modes.png b/radio/src/bitmaps/480x272/default_theme/mask_model_flight_modes.png
deleted file mode 100644
index 21ed189be..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_model_flight_modes.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_model_grid_large.png b/radio/src/bitmaps/480x272/default_theme/mask_model_grid_large.png
deleted file mode 100644
index 36072030d..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_model_grid_large.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_model_grid_small.png b/radio/src/bitmaps/480x272/default_theme/mask_model_grid_small.png
deleted file mode 100644
index 3eb1a14c7..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_model_grid_small.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_model_gvars.png b/radio/src/bitmaps/480x272/default_theme/mask_model_gvars.png
deleted file mode 100644
index be659d790..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_model_gvars.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_model_heli.png b/radio/src/bitmaps/480x272/default_theme/mask_model_heli.png
deleted file mode 100644
index 7bfed7978..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_model_heli.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_model_inputs.png b/radio/src/bitmaps/480x272/default_theme/mask_model_inputs.png
deleted file mode 100644
index 283722b35..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_model_inputs.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_model_list_one.png b/radio/src/bitmaps/480x272/default_theme/mask_model_list_one.png
deleted file mode 100644
index c6f916339..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_model_list_one.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_model_list_two.png b/radio/src/bitmaps/480x272/default_theme/mask_model_list_two.png
deleted file mode 100644
index 8ee4ea451..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_model_list_two.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_model_logical_switches.png b/radio/src/bitmaps/480x272/default_theme/mask_model_logical_switches.png
deleted file mode 100644
index c3bcf36a7..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_model_logical_switches.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_model_lua_scripts.png b/radio/src/bitmaps/480x272/default_theme/mask_model_lua_scripts.png
deleted file mode 100644
index b6f830f0b..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_model_lua_scripts.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_model_mixer.png b/radio/src/bitmaps/480x272/default_theme/mask_model_mixer.png
deleted file mode 100644
index 86510a28e..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_model_mixer.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_model_outputs.png b/radio/src/bitmaps/480x272/default_theme/mask_model_outputs.png
deleted file mode 100644
index 371ce255b..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_model_outputs.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_model_special_functions.png b/radio/src/bitmaps/480x272/default_theme/mask_model_special_functions.png
deleted file mode 100644
index 794303873..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_model_special_functions.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_model_telemetry.png b/radio/src/bitmaps/480x272/default_theme/mask_model_telemetry.png
deleted file mode 100644
index 57bab88f5..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_model_telemetry.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_model_usb.png b/radio/src/bitmaps/480x272/default_theme/mask_model_usb.png
deleted file mode 100644
index dffbf2cc7..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_model_usb.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_monitor.png b/radio/src/bitmaps/480x272/default_theme/mask_monitor.png
deleted file mode 100644
index f1015d4fb..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_monitor.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_monitor_inver.png b/radio/src/bitmaps/480x272/default_theme/mask_monitor_inver.png
deleted file mode 100644
index 875e81398..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_monitor_inver.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_monitor_lockch.png b/radio/src/bitmaps/480x272/default_theme/mask_monitor_lockch.png
deleted file mode 100644
index faa042c8d..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_monitor_lockch.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_monitor_logsw.png b/radio/src/bitmaps/480x272/default_theme/mask_monitor_logsw.png
deleted file mode 100644
index 606927672..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_monitor_logsw.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_mplex_add.png b/radio/src/bitmaps/480x272/default_theme/mask_mplex_add.png
deleted file mode 100644
index c74f22855..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_mplex_add.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_mplex_multi.png b/radio/src/bitmaps/480x272/default_theme/mask_mplex_multi.png
deleted file mode 100644
index d6b32ee4d..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_mplex_multi.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_mplex_replace.png b/radio/src/bitmaps/480x272/default_theme/mask_mplex_replace.png
deleted file mode 100644
index 646324214..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_mplex_replace.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_radio_calibration.png b/radio/src/bitmaps/480x272/default_theme/mask_radio_calibration.png
deleted file mode 100644
index 9e9a37ca6..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_radio_calibration.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_radio_edit_theme.png b/radio/src/bitmaps/480x272/default_theme/mask_radio_edit_theme.png
deleted file mode 100644
index 4bf9e532f..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_radio_edit_theme.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_radio_global_functions.png b/radio/src/bitmaps/480x272/default_theme/mask_radio_global_functions.png
deleted file mode 100644
index 09aaebeaa..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_radio_global_functions.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_radio_hardware.png b/radio/src/bitmaps/480x272/default_theme/mask_radio_hardware.png
deleted file mode 100644
index 20d5b7c47..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_radio_hardware.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_radio_sd_browser.png b/radio/src/bitmaps/480x272/default_theme/mask_radio_sd_browser.png
deleted file mode 100644
index c0863ef35..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_radio_sd_browser.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_radio_tools.png b/radio/src/bitmaps/480x272/default_theme/mask_radio_tools.png
deleted file mode 100644
index 0a5047dda..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_radio_tools.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_radio_trainer.png b/radio/src/bitmaps/480x272/default_theme/mask_radio_trainer.png
deleted file mode 100644
index 6792bacf1..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_radio_trainer.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_radio_version.png b/radio/src/bitmaps/480x272/default_theme/mask_radio_version.png
deleted file mode 100644
index 56a386928..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_radio_version.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_shutdown.png b/radio/src/bitmaps/480x272/default_theme/mask_shutdown.png
deleted file mode 100644
index 459aee34e..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_shutdown.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_stats_analogs.png b/radio/src/bitmaps/480x272/default_theme/mask_stats_analogs.png
deleted file mode 100644
index b4a8f510c..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_stats_analogs.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_stats_debug.png b/radio/src/bitmaps/480x272/default_theme/mask_stats_debug.png
deleted file mode 100644
index 4085257b5..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_stats_debug.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_stats_timers.png b/radio/src/bitmaps/480x272/default_theme/mask_stats_timers.png
deleted file mode 100644
index 8bb039845..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_stats_timers.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_textline_curve.png b/radio/src/bitmaps/480x272/default_theme/mask_textline_curve.png
deleted file mode 100644
index 1540ac9eb..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_textline_curve.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_textline_fm.png b/radio/src/bitmaps/480x272/default_theme/mask_textline_fm.png
deleted file mode 100644
index a0f27b9f2..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_textline_fm.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_theme_add_view.png b/radio/src/bitmaps/480x272/default_theme/mask_theme_add_view.png
deleted file mode 100644
index 334ab58a7..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_theme_add_view.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_theme_setup.png b/radio/src/bitmaps/480x272/default_theme/mask_theme_setup.png
deleted file mode 100644
index 0fac07e74..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_theme_setup.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_theme_view1.png b/radio/src/bitmaps/480x272/default_theme/mask_theme_view1.png
deleted file mode 100644
index 57c524646..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_theme_view1.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_theme_view10.png b/radio/src/bitmaps/480x272/default_theme/mask_theme_view10.png
deleted file mode 100644
index 4958c342a..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_theme_view10.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_theme_view2.png b/radio/src/bitmaps/480x272/default_theme/mask_theme_view2.png
deleted file mode 100644
index 9a644520b..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_theme_view2.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_theme_view3.png b/radio/src/bitmaps/480x272/default_theme/mask_theme_view3.png
deleted file mode 100644
index 86cb092ee..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_theme_view3.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_theme_view4.png b/radio/src/bitmaps/480x272/default_theme/mask_theme_view4.png
deleted file mode 100644
index 788f92573..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_theme_view4.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_theme_view5.png b/radio/src/bitmaps/480x272/default_theme/mask_theme_view5.png
deleted file mode 100644
index 2b282c24b..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_theme_view5.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_theme_view6.png b/radio/src/bitmaps/480x272/default_theme/mask_theme_view6.png
deleted file mode 100644
index f53d7b3d2..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_theme_view6.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_theme_view7.png b/radio/src/bitmaps/480x272/default_theme/mask_theme_view7.png
deleted file mode 100644
index 181f444d9..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_theme_view7.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_theme_view8.png b/radio/src/bitmaps/480x272/default_theme/mask_theme_view8.png
deleted file mode 100644
index 8468898d5..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_theme_view8.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_theme_view9.png b/radio/src/bitmaps/480x272/default_theme/mask_theme_view9.png
deleted file mode 100644
index 5f8fa2043..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_theme_view9.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_tools_apps.png b/radio/src/bitmaps/480x272/default_theme/mask_tools_apps.png
deleted file mode 100644
index bad5627bf..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_tools_apps.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_tools_reset.png b/radio/src/bitmaps/480x272/default_theme/mask_tools_reset.png
deleted file mode 100644
index 4d786e0d0..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_tools_reset.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_top_logo.png b/radio/src/bitmaps/480x272/default_theme/mask_top_logo.png
deleted file mode 100644
index 56b78c347..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_top_logo.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_topright.png b/radio/src/bitmaps/480x272/default_theme/mask_topright.png
deleted file mode 100644
index b07b89448..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_topright.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_trim.png b/radio/src/bitmaps/480x272/default_theme/mask_trim.png
deleted file mode 100644
index 079e7a04d..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_trim.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_trim_shadow.png b/radio/src/bitmaps/480x272/default_theme/mask_trim_shadow.png
deleted file mode 100644
index 4d72f2440..000000000
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_trim_shadow.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/mask_antenna.png b/radio/src/bitmaps/480x272/mask_antenna.png
deleted file mode 100644
index 03d11f0a2..000000000
Binary files a/radio/src/bitmaps/480x272/mask_antenna.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/mask_dot.png b/radio/src/bitmaps/480x272/mask_dot.png
deleted file mode 100644
index 321ff9745..000000000
Binary files a/radio/src/bitmaps/480x272/mask_dot.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_edgetx.png b/radio/src/bitmaps/480x272/mask_icon_edgetx.png
new file mode 100644
index 000000000..a6dc76859
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_edgetx.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_menu_favs.png b/radio/src/bitmaps/480x272/mask_icon_menu_favs.png
new file mode 100644
index 000000000..0456f51e3
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_menu_favs.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_menu_manage_models.png b/radio/src/bitmaps/480x272/mask_icon_menu_manage_models.png
new file mode 100644
index 000000000..eb88e03ac
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_menu_manage_models.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_menu_model_setup.png b/radio/src/bitmaps/480x272/mask_icon_menu_model_setup.png
new file mode 100644
index 000000000..b3346db86
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_menu_model_setup.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_menu_radio_setup.png b/radio/src/bitmaps/480x272/mask_icon_menu_radio_setup.png
new file mode 100644
index 000000000..5bf0040be
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_menu_radio_setup.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_menu_tools.png b/radio/src/bitmaps/480x272/mask_icon_menu_tools.png
new file mode 100644
index 000000000..9c28e62ca
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_menu_tools.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_menu_ui_setup.png b/radio/src/bitmaps/480x272/mask_icon_menu_ui_setup.png
new file mode 100644
index 000000000..6882c2d4e
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_menu_ui_setup.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_model_curves.png b/radio/src/bitmaps/480x272/mask_icon_model_curves.png
new file mode 100644
index 000000000..82a949762
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_model_curves.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_model_flight_modes.png b/radio/src/bitmaps/480x272/mask_icon_model_flight_modes.png
new file mode 100644
index 000000000..3e26ff41e
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_model_flight_modes.png differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_model_setup.png b/radio/src/bitmaps/480x272/mask_icon_model_general.png
similarity index 91%
rename from radio/src/bitmaps/480x272/default_theme/mask_model_setup.png
rename to radio/src/bitmaps/480x272/mask_icon_model_general.png
index 4d26068fe..c94ba05b1 100644
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_model_setup.png and b/radio/src/bitmaps/480x272/mask_icon_model_general.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_model_gvars.png b/radio/src/bitmaps/480x272/mask_icon_model_gvars.png
new file mode 100644
index 000000000..1ab343fb8
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_model_gvars.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_model_heli.png b/radio/src/bitmaps/480x272/mask_icon_model_heli.png
new file mode 100644
index 000000000..089088e33
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_model_heli.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_model_inputs.png b/radio/src/bitmaps/480x272/mask_icon_model_inputs.png
new file mode 100644
index 000000000..c8bbc0381
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_model_inputs.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_model_logical_switches.png b/radio/src/bitmaps/480x272/mask_icon_model_logical_switches.png
new file mode 100644
index 000000000..0cefd1a6e
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_model_logical_switches.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_model_mixer.png b/radio/src/bitmaps/480x272/mask_icon_model_mixer.png
new file mode 100644
index 000000000..f1267dd50
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_model_mixer.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_model_mixer_scripts.png b/radio/src/bitmaps/480x272/mask_icon_model_mixer_scripts.png
new file mode 100644
index 000000000..d331fa2e3
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_model_mixer_scripts.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_model_notes.png b/radio/src/bitmaps/480x272/mask_icon_model_notes.png
new file mode 100644
index 000000000..f42e2e0e0
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_model_notes.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_model_outputs.png b/radio/src/bitmaps/480x272/mask_icon_model_outputs.png
new file mode 100644
index 000000000..ab328c6c1
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_model_outputs.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_model_special_functions.png b/radio/src/bitmaps/480x272/mask_icon_model_special_functions.png
new file mode 100644
index 000000000..492b862fd
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_model_special_functions.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_model_telemetry.png b/radio/src/bitmaps/480x272/mask_icon_model_telemetry.png
new file mode 100644
index 000000000..daddcdc43
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_model_telemetry.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_model_timers.png b/radio/src/bitmaps/480x272/mask_icon_model_timers.png
new file mode 100644
index 000000000..9ac21dc99
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_model_timers.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_model_usb.png b/radio/src/bitmaps/480x272/mask_icon_model_usb.png
new file mode 100644
index 000000000..a65a9b3de
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_model_usb.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_radio_about.png b/radio/src/bitmaps/480x272/mask_icon_radio_about.png
new file mode 100644
index 000000000..b3c16edd6
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_radio_about.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_radio_analogs.png b/radio/src/bitmaps/480x272/mask_icon_radio_analogs.png
new file mode 100644
index 000000000..e462758c3
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_radio_analogs.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_radio_calibration.png b/radio/src/bitmaps/480x272/mask_icon_radio_calibration.png
new file mode 100644
index 000000000..1b047a2d6
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_radio_calibration.png differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_radio_setup.png b/radio/src/bitmaps/480x272/mask_icon_radio_general.png
similarity index 93%
rename from radio/src/bitmaps/480x272/default_theme/mask_radio_setup.png
rename to radio/src/bitmaps/480x272/mask_icon_radio_general.png
index 222d5918d..1bac4b4ce 100644
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_radio_setup.png and b/radio/src/bitmaps/480x272/mask_icon_radio_general.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_radio_global_functions.png b/radio/src/bitmaps/480x272/mask_icon_radio_global_functions.png
new file mode 100644
index 000000000..0d390c60c
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_radio_global_functions.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_radio_hardware.png b/radio/src/bitmaps/480x272/mask_icon_radio_hardware.png
new file mode 100644
index 000000000..fedf83150
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_radio_hardware.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_radio_trainer.png b/radio/src/bitmaps/480x272/mask_icon_radio_trainer.png
new file mode 100644
index 000000000..0febcb1c4
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_radio_trainer.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_tools_apps.png b/radio/src/bitmaps/480x272/mask_icon_tools_apps.png
new file mode 100644
index 000000000..c7fa5f2f5
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_tools_apps.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_tools_debug.png b/radio/src/bitmaps/480x272/mask_icon_tools_debug.png
new file mode 100644
index 000000000..3092b74e9
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_tools_debug.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_tools_monitor_ch.png b/radio/src/bitmaps/480x272/mask_icon_tools_monitor_ch.png
new file mode 100644
index 000000000..d0c651124
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_tools_monitor_ch.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_tools_monitor_ls.png b/radio/src/bitmaps/480x272/mask_icon_tools_monitor_ls.png
new file mode 100644
index 000000000..7c0a6ed45
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_tools_monitor_ls.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_tools_reset.png b/radio/src/bitmaps/480x272/mask_icon_tools_reset.png
new file mode 100644
index 000000000..1cdb3adcb
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_tools_reset.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_tools_stats.png b/radio/src/bitmaps/480x272/mask_icon_tools_stats.png
new file mode 100644
index 000000000..7c1c6341b
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_tools_stats.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_tools_storage.png b/radio/src/bitmaps/480x272/mask_icon_tools_storage.png
new file mode 100644
index 000000000..791c2449a
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_tools_storage.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_ui_themes.png b/radio/src/bitmaps/480x272/mask_icon_ui_themes.png
new file mode 100644
index 000000000..feb088b18
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_ui_themes.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_ui_topbar_setup.png b/radio/src/bitmaps/480x272/mask_icon_ui_topbar_setup.png
new file mode 100644
index 000000000..1634d42ed
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_ui_topbar_setup.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_ui_view1.png b/radio/src/bitmaps/480x272/mask_icon_ui_view1.png
new file mode 100644
index 000000000..579199ab4
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_ui_view1.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_ui_view10.png b/radio/src/bitmaps/480x272/mask_icon_ui_view10.png
new file mode 100644
index 000000000..c63600a30
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_ui_view10.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_ui_view2.png b/radio/src/bitmaps/480x272/mask_icon_ui_view2.png
new file mode 100644
index 000000000..50824a30e
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_ui_view2.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_ui_view3.png b/radio/src/bitmaps/480x272/mask_icon_ui_view3.png
new file mode 100644
index 000000000..cc2846cc0
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_ui_view3.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_ui_view4.png b/radio/src/bitmaps/480x272/mask_icon_ui_view4.png
new file mode 100644
index 000000000..4d699e74f
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_ui_view4.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_ui_view5.png b/radio/src/bitmaps/480x272/mask_icon_ui_view5.png
new file mode 100644
index 000000000..e8cbe3002
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_ui_view5.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_ui_view6.png b/radio/src/bitmaps/480x272/mask_icon_ui_view6.png
new file mode 100644
index 000000000..d272c29dd
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_ui_view6.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_ui_view7.png b/radio/src/bitmaps/480x272/mask_icon_ui_view7.png
new file mode 100644
index 000000000..8af380bf1
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_ui_view7.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_ui_view8.png b/radio/src/bitmaps/480x272/mask_icon_ui_view8.png
new file mode 100644
index 000000000..a4289ad76
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_ui_view8.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_ui_view9.png b/radio/src/bitmaps/480x272/mask_icon_ui_view9.png
new file mode 100644
index 000000000..93b343369
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_ui_view9.png differ
diff --git a/radio/src/bitmaps/480x272/mask_icon_ui_view_add.png b/radio/src/bitmaps/480x272/mask_icon_ui_view_add.png
new file mode 100644
index 000000000..037c8786d
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_icon_ui_view_add.png differ
diff --git a/radio/src/bitmaps/480x272/mask_info_busy.png b/radio/src/bitmaps/480x272/mask_info_busy.png
new file mode 100644
index 000000000..7954ff422
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_info_busy.png differ
diff --git a/radio/src/bitmaps/480x272/mask_info_error.png b/radio/src/bitmaps/480x272/mask_info_error.png
new file mode 100644
index 000000000..983bfd1d3
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_info_error.png differ
diff --git a/radio/src/bitmaps/480x272/mask_info_shutdown.png b/radio/src/bitmaps/480x272/mask_info_shutdown.png
new file mode 100644
index 000000000..473b6d004
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_info_shutdown.png differ
diff --git a/radio/src/bitmaps/480x272/mask_info_shutdown_circle0.png b/radio/src/bitmaps/480x272/mask_info_shutdown_circle0.png
new file mode 100644
index 000000000..eacac2d25
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_info_shutdown_circle0.png differ
diff --git a/radio/src/bitmaps/480x272/mask_info_shutdown_circle1.png b/radio/src/bitmaps/480x272/mask_info_shutdown_circle1.png
new file mode 100644
index 000000000..0b37a8bbd
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_info_shutdown_circle1.png differ
diff --git a/radio/src/bitmaps/480x272/mask_info_shutdown_circle2.png b/radio/src/bitmaps/480x272/mask_info_shutdown_circle2.png
new file mode 100644
index 000000000..e6839010e
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_info_shutdown_circle2.png differ
diff --git a/radio/src/bitmaps/480x272/mask_info_shutdown_circle3.png b/radio/src/bitmaps/480x272/mask_info_shutdown_circle3.png
new file mode 100644
index 000000000..18d811a1b
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_info_shutdown_circle3.png differ
diff --git a/radio/src/bitmaps/480x272/mask_info_usb_plugged.png b/radio/src/bitmaps/480x272/mask_info_usb_plugged.png
new file mode 100644
index 000000000..70a959b08
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_info_usb_plugged.png differ
diff --git a/radio/src/bitmaps/480x272/mask_inline_add.png b/radio/src/bitmaps/480x272/mask_inline_add.png
new file mode 100644
index 000000000..640cc6f03
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_inline_add.png differ
diff --git a/radio/src/bitmaps/480x272/mask_inline_curve.png b/radio/src/bitmaps/480x272/mask_inline_curve.png
new file mode 100644
index 000000000..2a94bf519
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_inline_curve.png differ
diff --git a/radio/src/bitmaps/480x272/mask_inline_dot.png b/radio/src/bitmaps/480x272/mask_inline_dot.png
new file mode 100644
index 000000000..482a1d2db
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_inline_dot.png differ
diff --git a/radio/src/bitmaps/480x272/mask_inline_fm.png b/radio/src/bitmaps/480x272/mask_inline_fm.png
new file mode 100644
index 000000000..f8196cf5b
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_inline_fm.png differ
diff --git a/radio/src/bitmaps/480x272/mask_inline_inverted.png b/radio/src/bitmaps/480x272/mask_inline_inverted.png
new file mode 100644
index 000000000..1b65a7b80
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_inline_inverted.png differ
diff --git a/radio/src/bitmaps/480x272/mask_inline_locked.png b/radio/src/bitmaps/480x272/mask_inline_locked.png
new file mode 100644
index 000000000..8e12577fd
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_inline_locked.png differ
diff --git a/radio/src/bitmaps/480x272/mask_inline_multiply.png b/radio/src/bitmaps/480x272/mask_inline_multiply.png
new file mode 100644
index 000000000..b37d7a333
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_inline_multiply.png differ
diff --git a/radio/src/bitmaps/480x272/mask_inline_replace.png b/radio/src/bitmaps/480x272/mask_inline_replace.png
new file mode 100644
index 000000000..19534630c
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_inline_replace.png differ
diff --git a/radio/src/bitmaps/480x272/mask_menu_edgetx.png b/radio/src/bitmaps/480x272/mask_menu_edgetx.png
new file mode 100644
index 000000000..468452ec9
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_menu_edgetx.png differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_menu_favs.png b/radio/src/bitmaps/480x272/mask_menu_favs.png
similarity index 69%
rename from radio/src/bitmaps/480x272/default_theme/mask_menu_favs.png
rename to radio/src/bitmaps/480x272/mask_menu_favs.png
index a4240cd04..0456f51e3 100644
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_menu_favs.png and b/radio/src/bitmaps/480x272/mask_menu_favs.png differ
diff --git a/radio/src/bitmaps/480x272/mask_round_title_left.png b/radio/src/bitmaps/480x272/mask_round_title_left.png
deleted file mode 100644
index 858c6d9c1..000000000
Binary files a/radio/src/bitmaps/480x272/mask_round_title_left.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/mask_round_title_right.png b/radio/src/bitmaps/480x272/mask_round_title_right.png
deleted file mode 100644
index 671744c31..000000000
Binary files a/radio/src/bitmaps/480x272/mask_round_title_right.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/mask_shutdown_circle0.png b/radio/src/bitmaps/480x272/mask_shutdown_circle0.png
deleted file mode 100644
index e83baf7d1..000000000
Binary files a/radio/src/bitmaps/480x272/mask_shutdown_circle0.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/mask_shutdown_circle1.png b/radio/src/bitmaps/480x272/mask_shutdown_circle1.png
deleted file mode 100644
index a88b15594..000000000
Binary files a/radio/src/bitmaps/480x272/mask_shutdown_circle1.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/mask_shutdown_circle2.png b/radio/src/bitmaps/480x272/mask_shutdown_circle2.png
deleted file mode 100644
index 6f18c3c2c..000000000
Binary files a/radio/src/bitmaps/480x272/mask_shutdown_circle2.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/mask_shutdown_circle3.png b/radio/src/bitmaps/480x272/mask_shutdown_circle3.png
deleted file mode 100644
index a6ea9ea6f..000000000
Binary files a/radio/src/bitmaps/480x272/mask_shutdown_circle3.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/mask_timer.png b/radio/src/bitmaps/480x272/mask_timer.png
deleted file mode 100644
index c2ad61b9e..000000000
Binary files a/radio/src/bitmaps/480x272/mask_timer.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/mask_timer_bg.png b/radio/src/bitmaps/480x272/mask_timer_bg.png
deleted file mode 100644
index 4b42c9d78..000000000
Binary files a/radio/src/bitmaps/480x272/mask_timer_bg.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/mask_topmenu_gps_18.png b/radio/src/bitmaps/480x272/mask_topmenu_gps_18.png
deleted file mode 100644
index d8f66a456..000000000
Binary files a/radio/src/bitmaps/480x272/mask_topmenu_gps_18.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/mask_topmenu_usb.png b/radio/src/bitmaps/480x272/mask_topmenu_usb.png
deleted file mode 100644
index f29a09fe8..000000000
Binary files a/radio/src/bitmaps/480x272/mask_topmenu_usb.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/mask_txbat.png b/radio/src/bitmaps/480x272/mask_txbat.png
deleted file mode 100644
index 65d271850..000000000
Binary files a/radio/src/bitmaps/480x272/mask_txbat.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/mask_txbat_charging.png b/radio/src/bitmaps/480x272/mask_txbat_charging.png
deleted file mode 100644
index 072bdfe0a..000000000
Binary files a/radio/src/bitmaps/480x272/mask_txbat_charging.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/mask_ui_bg_tile_top_left.png b/radio/src/bitmaps/480x272/mask_ui_bg_tile_top_left.png
new file mode 100644
index 000000000..5f4f8ca27
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_ui_bg_tile_top_left.png differ
diff --git a/radio/src/bitmaps/480x272/mask_ui_bg_tile_top_right.png b/radio/src/bitmaps/480x272/mask_ui_bg_tile_top_right.png
new file mode 100644
index 000000000..ee33ffdc2
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_ui_bg_tile_top_right.png differ
diff --git a/radio/src/bitmaps/480x272/default_theme/mask_topleft.png b/radio/src/bitmaps/480x272/mask_ui_bg_topbar_left.png
similarity index 70%
rename from radio/src/bitmaps/480x272/default_theme/mask_topleft.png
rename to radio/src/bitmaps/480x272/mask_ui_bg_topbar_left.png
index 9dd234101..3768a0024 100644
Binary files a/radio/src/bitmaps/480x272/default_theme/mask_topleft.png and b/radio/src/bitmaps/480x272/mask_ui_bg_topbar_left.png differ
diff --git a/radio/src/bitmaps/480x272/mask_ui_bg_topbar_right.png b/radio/src/bitmaps/480x272/mask_ui_bg_topbar_right.png
new file mode 100644
index 000000000..324450716
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_ui_bg_topbar_right.png differ
diff --git a/radio/src/bitmaps/480x272/mask_ui_btn_close.png b/radio/src/bitmaps/480x272/mask_ui_btn_close.png
new file mode 100644
index 000000000..90e78e231
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_ui_btn_close.png differ
diff --git a/radio/src/bitmaps/480x272/mask_ui_btn_grid_large.png b/radio/src/bitmaps/480x272/mask_ui_btn_grid_large.png
new file mode 100644
index 000000000..b96feacfc
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_ui_btn_grid_large.png differ
diff --git a/radio/src/bitmaps/480x272/mask_ui_btn_grid_small.png b/radio/src/bitmaps/480x272/mask_ui_btn_grid_small.png
new file mode 100644
index 000000000..5c66dba5b
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_ui_btn_grid_small.png differ
diff --git a/radio/src/bitmaps/480x272/mask_ui_btn_list_one.png b/radio/src/bitmaps/480x272/mask_ui_btn_list_one.png
new file mode 100644
index 000000000..a7aabe1f7
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_ui_btn_list_one.png differ
diff --git a/radio/src/bitmaps/480x272/mask_ui_btn_list_two.png b/radio/src/bitmaps/480x272/mask_ui_btn_list_two.png
new file mode 100644
index 000000000..c60ff5006
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_ui_btn_list_two.png differ
diff --git a/radio/src/bitmaps/480x272/mask_ui_btn_next.png b/radio/src/bitmaps/480x272/mask_ui_btn_next.png
new file mode 100644
index 000000000..da4c7b722
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_ui_btn_next.png differ
diff --git a/radio/src/bitmaps/480x272/mask_ui_btn_prev.png b/radio/src/bitmaps/480x272/mask_ui_btn_prev.png
new file mode 100644
index 000000000..92e0a8af5
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_ui_btn_prev.png differ
diff --git a/radio/src/bitmaps/480x272/mask_usb_symbol.png b/radio/src/bitmaps/480x272/mask_usb_symbol.png
deleted file mode 100644
index 06e804af3..000000000
Binary files a/radio/src/bitmaps/480x272/mask_usb_symbol.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/mask_widget_antenna.png b/radio/src/bitmaps/480x272/mask_widget_antenna.png
new file mode 100644
index 000000000..8929919f6
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_widget_antenna.png differ
diff --git a/radio/src/bitmaps/480x272/mask_widget_gps.png b/radio/src/bitmaps/480x272/mask_widget_gps.png
new file mode 100644
index 000000000..bbd04138e
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_widget_gps.png differ
diff --git a/radio/src/bitmaps/480x272/mask_widget_timer.png b/radio/src/bitmaps/480x272/mask_widget_timer.png
new file mode 100644
index 000000000..b0e8688d4
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_widget_timer.png differ
diff --git a/radio/src/bitmaps/480x272/mask_widget_timer_bg.png b/radio/src/bitmaps/480x272/mask_widget_timer_bg.png
new file mode 100644
index 000000000..8d4902dbd
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_widget_timer_bg.png differ
diff --git a/radio/src/bitmaps/480x272/mask_widget_trim.png b/radio/src/bitmaps/480x272/mask_widget_trim.png
new file mode 100644
index 000000000..debf3e2aa
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_widget_trim.png differ
diff --git a/radio/src/bitmaps/480x272/mask_widget_trim_shadow.png b/radio/src/bitmaps/480x272/mask_widget_trim_shadow.png
new file mode 100644
index 000000000..26d8f9b4c
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_widget_trim_shadow.png differ
diff --git a/radio/src/bitmaps/480x272/mask_widget_txbat.png b/radio/src/bitmaps/480x272/mask_widget_txbat.png
new file mode 100644
index 000000000..85b5686ee
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_widget_txbat.png differ
diff --git a/radio/src/bitmaps/480x272/mask_widget_txbat_charging.png b/radio/src/bitmaps/480x272/mask_widget_txbat_charging.png
new file mode 100644
index 000000000..3392ff861
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_widget_txbat_charging.png differ
diff --git a/radio/src/bitmaps/480x272/mask_widget_usb.png b/radio/src/bitmaps/480x272/mask_widget_usb.png
new file mode 100644
index 000000000..18e5de461
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_widget_usb.png differ
diff --git a/radio/src/bitmaps/480x272/mask_widget_volume0.png b/radio/src/bitmaps/480x272/mask_widget_volume0.png
new file mode 100644
index 000000000..a5159631b
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_widget_volume0.png differ
diff --git a/radio/src/bitmaps/480x272/mask_widget_volume1.png b/radio/src/bitmaps/480x272/mask_widget_volume1.png
new file mode 100644
index 000000000..f47844cdb
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_widget_volume1.png differ
diff --git a/radio/src/bitmaps/480x272/mask_widget_volume2.png b/radio/src/bitmaps/480x272/mask_widget_volume2.png
new file mode 100644
index 000000000..e9556a5e1
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_widget_volume2.png differ
diff --git a/radio/src/bitmaps/480x272/mask_widget_volume3.png b/radio/src/bitmaps/480x272/mask_widget_volume3.png
new file mode 100644
index 000000000..300e333b8
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_widget_volume3.png differ
diff --git a/radio/src/bitmaps/480x272/mask_widget_volume4.png b/radio/src/bitmaps/480x272/mask_widget_volume4.png
new file mode 100644
index 000000000..8bc043f15
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_widget_volume4.png differ
diff --git a/radio/src/bitmaps/480x272/mask_widget_volume_scale.png b/radio/src/bitmaps/480x272/mask_widget_volume_scale.png
new file mode 100644
index 000000000..fc0717b25
Binary files /dev/null and b/radio/src/bitmaps/480x272/mask_widget_volume_scale.png differ
diff --git a/radio/src/bitmaps/480x272/splash_logo.png b/radio/src/bitmaps/480x272/splash_logo.png
deleted file mode 100644
index fb563ecad..000000000
Binary files a/radio/src/bitmaps/480x272/splash_logo.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/volume/mask_volume_0.png b/radio/src/bitmaps/480x272/volume/mask_volume_0.png
deleted file mode 100644
index 76c0a8d05..000000000
Binary files a/radio/src/bitmaps/480x272/volume/mask_volume_0.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/volume/mask_volume_1.png b/radio/src/bitmaps/480x272/volume/mask_volume_1.png
deleted file mode 100644
index 926db9498..000000000
Binary files a/radio/src/bitmaps/480x272/volume/mask_volume_1.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/volume/mask_volume_2.png b/radio/src/bitmaps/480x272/volume/mask_volume_2.png
deleted file mode 100644
index 9b0e3c34e..000000000
Binary files a/radio/src/bitmaps/480x272/volume/mask_volume_2.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/volume/mask_volume_3.png b/radio/src/bitmaps/480x272/volume/mask_volume_3.png
deleted file mode 100644
index 150601601..000000000
Binary files a/radio/src/bitmaps/480x272/volume/mask_volume_3.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/volume/mask_volume_4.png b/radio/src/bitmaps/480x272/volume/mask_volume_4.png
deleted file mode 100644
index b2457d9aa..000000000
Binary files a/radio/src/bitmaps/480x272/volume/mask_volume_4.png and /dev/null differ
diff --git a/radio/src/bitmaps/480x272/volume/mask_volume_scale.png b/radio/src/bitmaps/480x272/volume/mask_volume_scale.png
deleted file mode 100644
index 406622b2f..000000000
Binary files a/radio/src/bitmaps/480x272/volume/mask_volume_scale.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/CMakeLists.txt b/radio/src/bitmaps/800x480/CMakeLists.txt
index f0361a5e5..470534faf 100644
--- a/radio/src/bitmaps/800x480/CMakeLists.txt
+++ b/radio/src/bitmaps/800x480/CMakeLists.txt
@@ -2,23 +2,12 @@ set(BITMAP_SIZE_ARGS --size-format 2)
set(BITMAP_LZ4_ARGS ${BITMAP_SIZE_ARGS} --lz4)
set(MASK_LZ4_ARGS ${BITMAP_SIZE_ARGS} --lz4)
-add_bitmaps_target(bm800_splash_logo "${RADIO_SRC_DIR}/bitmaps/800x480/splash_logo.png" "4/4/4/4" "${BITMAP_LZ4_ARGS}")
-add_bitmaps_target(bm800_masks "${RADIO_SRC_DIR}/bitmaps/800x480/mask_*.png" 8bits "${MASK_LZ4_ARGS}")
-add_bitmaps_target(bm800_slider_masks "${RADIO_SRC_DIR}/bitmaps/800x480/slider/*.png" 8bits "${MASK_LZ4_ARGS}")
-add_bitmaps_target(bm800_volume_masks ${RADIO_SRC_DIR}/bitmaps/800x480/volume/*.png 8bits "${MASK_LZ4_ARGS}")
-add_bitmaps_target(bm800_themes_masks "${RADIO_SRC_DIR}/bitmaps/800x480/default_theme/mask_*.png" 8bits "${MASK_LZ4_ARGS}")
-add_bitmaps_target(bm800_themes_alpha "${RADIO_SRC_DIR}/bitmaps/800x480/default_theme/alpha_*.png" "4/4/4/4" "${BITMAP_LZ4_ARGS}")
-
-add_bitmaps_target(bm800_bootloader_bitmaps "${RADIO_SRC_DIR}/bitmaps/800x480/bootloader/bmp_*.png" "4/4/4/4" "${BITMAP_LZ4_ARGS}")
+add_bitmaps_target(bm800_bmps "${RADIO_SRC_DIR}/bitmaps/800x480/bmp_*.png" "4/4/4/4" "${BITMAP_LZ4_ARGS}")
+add_bitmaps_target(bm800_masks "${RADIO_SRC_DIR}/bitmaps/800x480/os/mask_*.png" 8bits "${MASK_LZ4_ARGS}")
add_custom_target(bm800_bitmaps)
add_dependencies(bm800_bitmaps
- bm800_splash_logo
+ bm800_bmps
bm800_masks
- bm800_slider_masks
- bm800_themes_masks
- bm800_themes_alpha
- bm800_volume_masks
- bm800_bootloader_bitmaps
)
diff --git a/radio/src/bitmaps/800x480/bmp_bootloader_plug_usb.png b/radio/src/bitmaps/800x480/bmp_bootloader_plug_usb.png
new file mode 100644
index 000000000..c9d77bfb4
Binary files /dev/null and b/radio/src/bitmaps/800x480/bmp_bootloader_plug_usb.png differ
diff --git a/radio/src/bitmaps/800x480/bmp_bootloader_usb_plugged.png b/radio/src/bitmaps/800x480/bmp_bootloader_usb_plugged.png
new file mode 100644
index 000000000..3a9063a45
Binary files /dev/null and b/radio/src/bitmaps/800x480/bmp_bootloader_usb_plugged.png differ
diff --git a/radio/src/bitmaps/800x480/bmp_logo_edgetx_splash.png b/radio/src/bitmaps/800x480/bmp_logo_edgetx_splash.png
new file mode 100644
index 000000000..2ba409de0
Binary files /dev/null and b/radio/src/bitmaps/800x480/bmp_logo_edgetx_splash.png differ
diff --git a/radio/src/bitmaps/800x480/bmp_radio_stick_background.png b/radio/src/bitmaps/800x480/bmp_radio_stick_background.png
new file mode 100644
index 000000000..d02028b74
Binary files /dev/null and b/radio/src/bitmaps/800x480/bmp_radio_stick_background.png differ
diff --git a/radio/src/bitmaps/800x480/bmp_radio_stick_pointer.png b/radio/src/bitmaps/800x480/bmp_radio_stick_pointer.png
new file mode 100644
index 000000000..6c85424a7
Binary files /dev/null and b/radio/src/bitmaps/800x480/bmp_radio_stick_pointer.png differ
diff --git a/radio/src/bitmaps/800x480/bootloader/bmp_plug_usb.png b/radio/src/bitmaps/800x480/bootloader/bmp_plug_usb.png
deleted file mode 100644
index 840b5964f..000000000
Binary files a/radio/src/bitmaps/800x480/bootloader/bmp_plug_usb.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/bootloader/bmp_usb_plugged.png b/radio/src/bitmaps/800x480/bootloader/bmp_usb_plugged.png
deleted file mode 100644
index defa9892b..000000000
Binary files a/radio/src/bitmaps/800x480/bootloader/bmp_usb_plugged.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/alpha_stick_background.png b/radio/src/bitmaps/800x480/default_theme/alpha_stick_background.png
deleted file mode 100644
index fd07208d0..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/alpha_stick_background.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/alpha_stick_pointer.png b/radio/src/bitmaps/800x480/default_theme/alpha_stick_pointer.png
deleted file mode 100644
index 57dd7aee9..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/alpha_stick_pointer.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_btn_close.png b/radio/src/bitmaps/800x480/default_theme/mask_btn_close.png
deleted file mode 100644
index 4469245d3..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_btn_close.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_btn_next.png b/radio/src/bitmaps/800x480/default_theme/mask_btn_next.png
deleted file mode 100644
index 30a157be2..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_btn_next.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_btn_prev.png b/radio/src/bitmaps/800x480/default_theme/mask_btn_prev.png
deleted file mode 100644
index 0722b243f..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_btn_prev.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_busy.png b/radio/src/bitmaps/800x480/default_theme/mask_busy.png
deleted file mode 100644
index 016ccfb58..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_busy.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_currentmenu_bg.png b/radio/src/bitmaps/800x480/default_theme/mask_currentmenu_bg.png
deleted file mode 100644
index fb705a832..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_currentmenu_bg.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_currentmenu_dot.png b/radio/src/bitmaps/800x480/default_theme/mask_currentmenu_dot.png
deleted file mode 100644
index 4a1a93bdc..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_currentmenu_dot.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_currentmenu_shadow.png b/radio/src/bitmaps/800x480/default_theme/mask_currentmenu_shadow.png
deleted file mode 100644
index 2d373f664..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_currentmenu_shadow.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_edgetx.png b/radio/src/bitmaps/800x480/default_theme/mask_edgetx.png
deleted file mode 100644
index b93b8477a..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_edgetx.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_error.png b/radio/src/bitmaps/800x480/default_theme/mask_error.png
deleted file mode 100644
index e27430e49..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_error.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_menu_model.png b/radio/src/bitmaps/800x480/default_theme/mask_menu_model.png
deleted file mode 100644
index 9039081aa..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_menu_model.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_menu_model_select.png b/radio/src/bitmaps/800x480/default_theme/mask_menu_model_select.png
deleted file mode 100644
index 02fdf19f4..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_menu_model_select.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_menu_notes.png b/radio/src/bitmaps/800x480/default_theme/mask_menu_notes.png
deleted file mode 100644
index 066f4b604..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_menu_notes.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_menu_radio.png b/radio/src/bitmaps/800x480/default_theme/mask_menu_radio.png
deleted file mode 100644
index 159512359..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_menu_radio.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_menu_stats.png b/radio/src/bitmaps/800x480/default_theme/mask_menu_stats.png
deleted file mode 100644
index ef2a85d9c..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_menu_stats.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_menu_theme.png b/radio/src/bitmaps/800x480/default_theme/mask_menu_theme.png
deleted file mode 100644
index f3930bda3..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_menu_theme.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_model_curves.png b/radio/src/bitmaps/800x480/default_theme/mask_model_curves.png
deleted file mode 100644
index 45425afbf..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_model_curves.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_model_flight_modes.png b/radio/src/bitmaps/800x480/default_theme/mask_model_flight_modes.png
deleted file mode 100644
index 4e3072a53..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_model_flight_modes.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_model_grid_large.png b/radio/src/bitmaps/800x480/default_theme/mask_model_grid_large.png
deleted file mode 100644
index 051309204..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_model_grid_large.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_model_grid_small.png b/radio/src/bitmaps/800x480/default_theme/mask_model_grid_small.png
deleted file mode 100644
index 31fbcf34a..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_model_grid_small.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_model_gvars.png b/radio/src/bitmaps/800x480/default_theme/mask_model_gvars.png
deleted file mode 100644
index afed37041..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_model_gvars.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_model_heli.png b/radio/src/bitmaps/800x480/default_theme/mask_model_heli.png
deleted file mode 100644
index c6d09ce2c..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_model_heli.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_model_inputs.png b/radio/src/bitmaps/800x480/default_theme/mask_model_inputs.png
deleted file mode 100644
index 53c907290..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_model_inputs.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_model_list_one.png b/radio/src/bitmaps/800x480/default_theme/mask_model_list_one.png
deleted file mode 100644
index 4ccd910f7..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_model_list_one.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_model_list_two.png b/radio/src/bitmaps/800x480/default_theme/mask_model_list_two.png
deleted file mode 100644
index cf28ff5ef..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_model_list_two.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_model_logical_switches.png b/radio/src/bitmaps/800x480/default_theme/mask_model_logical_switches.png
deleted file mode 100644
index 7a442ff76..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_model_logical_switches.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_model_lua_scripts.png b/radio/src/bitmaps/800x480/default_theme/mask_model_lua_scripts.png
deleted file mode 100644
index 4d591244c..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_model_lua_scripts.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_model_mixer.png b/radio/src/bitmaps/800x480/default_theme/mask_model_mixer.png
deleted file mode 100644
index 4d827b71e..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_model_mixer.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_model_outputs.png b/radio/src/bitmaps/800x480/default_theme/mask_model_outputs.png
deleted file mode 100644
index d7be38897..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_model_outputs.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_model_special_functions.png b/radio/src/bitmaps/800x480/default_theme/mask_model_special_functions.png
deleted file mode 100644
index a53fd8a73..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_model_special_functions.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_model_telemetry.png b/radio/src/bitmaps/800x480/default_theme/mask_model_telemetry.png
deleted file mode 100644
index 5b256c5b5..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_model_telemetry.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_model_usb.png b/radio/src/bitmaps/800x480/default_theme/mask_model_usb.png
deleted file mode 100644
index 0645a401b..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_model_usb.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_monitor.png b/radio/src/bitmaps/800x480/default_theme/mask_monitor.png
deleted file mode 100644
index b4f188b4c..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_monitor.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_monitor_inver.png b/radio/src/bitmaps/800x480/default_theme/mask_monitor_inver.png
deleted file mode 100644
index 3f292ca26..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_monitor_inver.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_monitor_lockch.png b/radio/src/bitmaps/800x480/default_theme/mask_monitor_lockch.png
deleted file mode 100644
index 6018d98c3..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_monitor_lockch.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_monitor_logsw.png b/radio/src/bitmaps/800x480/default_theme/mask_monitor_logsw.png
deleted file mode 100644
index 06da9c567..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_monitor_logsw.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_mplex_add.png b/radio/src/bitmaps/800x480/default_theme/mask_mplex_add.png
deleted file mode 100644
index 9569fdb43..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_mplex_add.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_mplex_multi.png b/radio/src/bitmaps/800x480/default_theme/mask_mplex_multi.png
deleted file mode 100644
index 31b228dbf..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_mplex_multi.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_mplex_replace.png b/radio/src/bitmaps/800x480/default_theme/mask_mplex_replace.png
deleted file mode 100644
index 99f135d9a..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_mplex_replace.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_radio_calibration.png b/radio/src/bitmaps/800x480/default_theme/mask_radio_calibration.png
deleted file mode 100644
index 9eda592da..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_radio_calibration.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_radio_edit_theme.png b/radio/src/bitmaps/800x480/default_theme/mask_radio_edit_theme.png
deleted file mode 100644
index 8d3038c6d..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_radio_edit_theme.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_radio_global_functions.png b/radio/src/bitmaps/800x480/default_theme/mask_radio_global_functions.png
deleted file mode 100644
index 165cbac92..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_radio_global_functions.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_radio_hardware.png b/radio/src/bitmaps/800x480/default_theme/mask_radio_hardware.png
deleted file mode 100644
index 6068aa66c..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_radio_hardware.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_radio_sd_browser.png b/radio/src/bitmaps/800x480/default_theme/mask_radio_sd_browser.png
deleted file mode 100644
index eea1199e6..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_radio_sd_browser.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_radio_tools.png b/radio/src/bitmaps/800x480/default_theme/mask_radio_tools.png
deleted file mode 100644
index 2480e64cc..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_radio_tools.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_radio_trainer.png b/radio/src/bitmaps/800x480/default_theme/mask_radio_trainer.png
deleted file mode 100644
index 33625255b..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_radio_trainer.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_radio_version.png b/radio/src/bitmaps/800x480/default_theme/mask_radio_version.png
deleted file mode 100644
index d393e4de2..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_radio_version.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_shutdown.png b/radio/src/bitmaps/800x480/default_theme/mask_shutdown.png
deleted file mode 100644
index bb21ecd6c..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_shutdown.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_stats_analogs.png b/radio/src/bitmaps/800x480/default_theme/mask_stats_analogs.png
deleted file mode 100644
index 2bd12ce85..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_stats_analogs.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_stats_debug.png b/radio/src/bitmaps/800x480/default_theme/mask_stats_debug.png
deleted file mode 100644
index bd91796ae..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_stats_debug.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_stats_timers.png b/radio/src/bitmaps/800x480/default_theme/mask_stats_timers.png
deleted file mode 100644
index 175f0916f..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_stats_timers.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_textline_curve.png b/radio/src/bitmaps/800x480/default_theme/mask_textline_curve.png
deleted file mode 100644
index 01826e353..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_textline_curve.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_textline_fm.png b/radio/src/bitmaps/800x480/default_theme/mask_textline_fm.png
deleted file mode 100644
index 5f80f5032..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_textline_fm.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_theme_add_view.png b/radio/src/bitmaps/800x480/default_theme/mask_theme_add_view.png
deleted file mode 100644
index 29450d666..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_theme_add_view.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_theme_setup.png b/radio/src/bitmaps/800x480/default_theme/mask_theme_setup.png
deleted file mode 100644
index affab65e6..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_theme_setup.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_theme_view1.png b/radio/src/bitmaps/800x480/default_theme/mask_theme_view1.png
deleted file mode 100644
index d5103e88b..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_theme_view1.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_theme_view10.png b/radio/src/bitmaps/800x480/default_theme/mask_theme_view10.png
deleted file mode 100644
index 36343d6c9..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_theme_view10.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_theme_view2.png b/radio/src/bitmaps/800x480/default_theme/mask_theme_view2.png
deleted file mode 100644
index 447115348..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_theme_view2.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_theme_view3.png b/radio/src/bitmaps/800x480/default_theme/mask_theme_view3.png
deleted file mode 100644
index f9d738d53..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_theme_view3.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_theme_view4.png b/radio/src/bitmaps/800x480/default_theme/mask_theme_view4.png
deleted file mode 100644
index d65ac7154..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_theme_view4.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_theme_view5.png b/radio/src/bitmaps/800x480/default_theme/mask_theme_view5.png
deleted file mode 100644
index 61341632e..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_theme_view5.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_theme_view6.png b/radio/src/bitmaps/800x480/default_theme/mask_theme_view6.png
deleted file mode 100644
index 71df7da8d..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_theme_view6.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_theme_view7.png b/radio/src/bitmaps/800x480/default_theme/mask_theme_view7.png
deleted file mode 100644
index 396fb24a9..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_theme_view7.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_theme_view8.png b/radio/src/bitmaps/800x480/default_theme/mask_theme_view8.png
deleted file mode 100644
index df3efc3c7..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_theme_view8.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_theme_view9.png b/radio/src/bitmaps/800x480/default_theme/mask_theme_view9.png
deleted file mode 100644
index 0288be6a3..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_theme_view9.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_tools_apps.png b/radio/src/bitmaps/800x480/default_theme/mask_tools_apps.png
deleted file mode 100644
index eb12538b6..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_tools_apps.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_tools_reset.png b/radio/src/bitmaps/800x480/default_theme/mask_tools_reset.png
deleted file mode 100644
index 95fccfe08..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_tools_reset.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_top_logo.png b/radio/src/bitmaps/800x480/default_theme/mask_top_logo.png
deleted file mode 100644
index a73900645..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_top_logo.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_topleft.png b/radio/src/bitmaps/800x480/default_theme/mask_topleft.png
deleted file mode 100644
index 4dc6cf40a..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_topleft.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_trim.png b/radio/src/bitmaps/800x480/default_theme/mask_trim.png
deleted file mode 100644
index c6ff2aa10..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_trim.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_trim_shadow.png b/radio/src/bitmaps/800x480/default_theme/mask_trim_shadow.png
deleted file mode 100644
index 8fea62782..000000000
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_trim_shadow.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/mask_antenna.png b/radio/src/bitmaps/800x480/mask_antenna.png
deleted file mode 100644
index 220c52aff..000000000
Binary files a/radio/src/bitmaps/800x480/mask_antenna.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/mask_dot.png b/radio/src/bitmaps/800x480/mask_dot.png
deleted file mode 100644
index 691ad9763..000000000
Binary files a/radio/src/bitmaps/800x480/mask_dot.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_edgetx.png b/radio/src/bitmaps/800x480/mask_icon_edgetx.png
new file mode 100644
index 000000000..b4cf813e9
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_edgetx.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_menu_favs.png b/radio/src/bitmaps/800x480/mask_icon_menu_favs.png
new file mode 100644
index 000000000..18f8e21b6
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_menu_favs.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_menu_manage_models.png b/radio/src/bitmaps/800x480/mask_icon_menu_manage_models.png
new file mode 100644
index 000000000..fc412bd6f
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_menu_manage_models.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_menu_model_setup.png b/radio/src/bitmaps/800x480/mask_icon_menu_model_setup.png
new file mode 100644
index 000000000..e36fded08
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_menu_model_setup.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_menu_radio_setup.png b/radio/src/bitmaps/800x480/mask_icon_menu_radio_setup.png
new file mode 100644
index 000000000..00d65e9eb
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_menu_radio_setup.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_menu_tools.png b/radio/src/bitmaps/800x480/mask_icon_menu_tools.png
new file mode 100644
index 000000000..58492db4e
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_menu_tools.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_menu_ui_setup.png b/radio/src/bitmaps/800x480/mask_icon_menu_ui_setup.png
new file mode 100644
index 000000000..74ae35136
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_menu_ui_setup.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_model_curves.png b/radio/src/bitmaps/800x480/mask_icon_model_curves.png
new file mode 100644
index 000000000..7ad421605
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_model_curves.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_model_flight_modes.png b/radio/src/bitmaps/800x480/mask_icon_model_flight_modes.png
new file mode 100644
index 000000000..3685214ec
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_model_flight_modes.png differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_model_setup.png b/radio/src/bitmaps/800x480/mask_icon_model_general.png
similarity index 89%
rename from radio/src/bitmaps/800x480/default_theme/mask_model_setup.png
rename to radio/src/bitmaps/800x480/mask_icon_model_general.png
index 1a86dccd4..8e9739be6 100644
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_model_setup.png and b/radio/src/bitmaps/800x480/mask_icon_model_general.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_model_gvars.png b/radio/src/bitmaps/800x480/mask_icon_model_gvars.png
new file mode 100644
index 000000000..874653153
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_model_gvars.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_model_heli.png b/radio/src/bitmaps/800x480/mask_icon_model_heli.png
new file mode 100644
index 000000000..1a272d6ac
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_model_heli.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_model_inputs.png b/radio/src/bitmaps/800x480/mask_icon_model_inputs.png
new file mode 100644
index 000000000..debc8fe8e
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_model_inputs.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_model_logical_switches.png b/radio/src/bitmaps/800x480/mask_icon_model_logical_switches.png
new file mode 100644
index 000000000..0250d3d34
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_model_logical_switches.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_model_mixer.png b/radio/src/bitmaps/800x480/mask_icon_model_mixer.png
new file mode 100644
index 000000000..a72e1f553
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_model_mixer.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_model_mixer_scripts.png b/radio/src/bitmaps/800x480/mask_icon_model_mixer_scripts.png
new file mode 100644
index 000000000..b38a35b29
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_model_mixer_scripts.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_model_notes.png b/radio/src/bitmaps/800x480/mask_icon_model_notes.png
new file mode 100644
index 000000000..18ec7e6bb
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_model_notes.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_model_outputs.png b/radio/src/bitmaps/800x480/mask_icon_model_outputs.png
new file mode 100644
index 000000000..ba037d62a
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_model_outputs.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_model_special_functions.png b/radio/src/bitmaps/800x480/mask_icon_model_special_functions.png
new file mode 100644
index 000000000..126ad0596
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_model_special_functions.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_model_telemetry.png b/radio/src/bitmaps/800x480/mask_icon_model_telemetry.png
new file mode 100644
index 000000000..92db41033
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_model_telemetry.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_model_timers.png b/radio/src/bitmaps/800x480/mask_icon_model_timers.png
new file mode 100644
index 000000000..01371f0d5
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_model_timers.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_model_usb.png b/radio/src/bitmaps/800x480/mask_icon_model_usb.png
new file mode 100644
index 000000000..d38ce868c
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_model_usb.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_radio_about.png b/radio/src/bitmaps/800x480/mask_icon_radio_about.png
new file mode 100644
index 000000000..8db328ac8
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_radio_about.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_radio_analogs.png b/radio/src/bitmaps/800x480/mask_icon_radio_analogs.png
new file mode 100644
index 000000000..c93745d6d
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_radio_analogs.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_radio_calibration.png b/radio/src/bitmaps/800x480/mask_icon_radio_calibration.png
new file mode 100644
index 000000000..1d538d49d
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_radio_calibration.png differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_radio_setup.png b/radio/src/bitmaps/800x480/mask_icon_radio_general.png
similarity index 94%
rename from radio/src/bitmaps/800x480/default_theme/mask_radio_setup.png
rename to radio/src/bitmaps/800x480/mask_icon_radio_general.png
index 079f692fe..2696f045a 100644
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_radio_setup.png and b/radio/src/bitmaps/800x480/mask_icon_radio_general.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_radio_global_functions.png b/radio/src/bitmaps/800x480/mask_icon_radio_global_functions.png
new file mode 100644
index 000000000..e3a4b7c52
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_radio_global_functions.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_radio_hardware.png b/radio/src/bitmaps/800x480/mask_icon_radio_hardware.png
new file mode 100644
index 000000000..0210ea6bd
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_radio_hardware.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_radio_trainer.png b/radio/src/bitmaps/800x480/mask_icon_radio_trainer.png
new file mode 100644
index 000000000..ef4accb51
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_radio_trainer.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_tools_apps.png b/radio/src/bitmaps/800x480/mask_icon_tools_apps.png
new file mode 100644
index 000000000..550b90987
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_tools_apps.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_tools_debug.png b/radio/src/bitmaps/800x480/mask_icon_tools_debug.png
new file mode 100644
index 000000000..3f64270ba
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_tools_debug.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_tools_monitor_ch.png b/radio/src/bitmaps/800x480/mask_icon_tools_monitor_ch.png
new file mode 100644
index 000000000..bfbb67a4d
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_tools_monitor_ch.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_tools_monitor_ls.png b/radio/src/bitmaps/800x480/mask_icon_tools_monitor_ls.png
new file mode 100644
index 000000000..bb3581ddc
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_tools_monitor_ls.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_tools_reset.png b/radio/src/bitmaps/800x480/mask_icon_tools_reset.png
new file mode 100644
index 000000000..4e20a4dcb
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_tools_reset.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_tools_stats.png b/radio/src/bitmaps/800x480/mask_icon_tools_stats.png
new file mode 100644
index 000000000..e36de02d3
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_tools_stats.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_tools_storage.png b/radio/src/bitmaps/800x480/mask_icon_tools_storage.png
new file mode 100644
index 000000000..ade9fc3f2
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_tools_storage.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_ui_themes.png b/radio/src/bitmaps/800x480/mask_icon_ui_themes.png
new file mode 100644
index 000000000..20447bdd7
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_ui_themes.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_ui_topbar_setup.png b/radio/src/bitmaps/800x480/mask_icon_ui_topbar_setup.png
new file mode 100644
index 000000000..6e342b8b0
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_ui_topbar_setup.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_ui_view1.png b/radio/src/bitmaps/800x480/mask_icon_ui_view1.png
new file mode 100644
index 000000000..cf65cfd88
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_ui_view1.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_ui_view10.png b/radio/src/bitmaps/800x480/mask_icon_ui_view10.png
new file mode 100644
index 000000000..427b99681
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_ui_view10.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_ui_view2.png b/radio/src/bitmaps/800x480/mask_icon_ui_view2.png
new file mode 100644
index 000000000..c6a5382ee
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_ui_view2.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_ui_view3.png b/radio/src/bitmaps/800x480/mask_icon_ui_view3.png
new file mode 100644
index 000000000..ff99a3a4c
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_ui_view3.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_ui_view4.png b/radio/src/bitmaps/800x480/mask_icon_ui_view4.png
new file mode 100644
index 000000000..72621881e
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_ui_view4.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_ui_view5.png b/radio/src/bitmaps/800x480/mask_icon_ui_view5.png
new file mode 100644
index 000000000..6eabe7150
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_ui_view5.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_ui_view6.png b/radio/src/bitmaps/800x480/mask_icon_ui_view6.png
new file mode 100644
index 000000000..d9d8f4724
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_ui_view6.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_ui_view7.png b/radio/src/bitmaps/800x480/mask_icon_ui_view7.png
new file mode 100644
index 000000000..b30175b74
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_ui_view7.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_ui_view8.png b/radio/src/bitmaps/800x480/mask_icon_ui_view8.png
new file mode 100644
index 000000000..2ff60c876
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_ui_view8.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_ui_view9.png b/radio/src/bitmaps/800x480/mask_icon_ui_view9.png
new file mode 100644
index 000000000..aeb7c7b68
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_ui_view9.png differ
diff --git a/radio/src/bitmaps/800x480/mask_icon_ui_view_add.png b/radio/src/bitmaps/800x480/mask_icon_ui_view_add.png
new file mode 100644
index 000000000..e857eee7e
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_icon_ui_view_add.png differ
diff --git a/radio/src/bitmaps/800x480/mask_info_busy.png b/radio/src/bitmaps/800x480/mask_info_busy.png
new file mode 100644
index 000000000..84f916419
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_info_busy.png differ
diff --git a/radio/src/bitmaps/800x480/mask_info_error.png b/radio/src/bitmaps/800x480/mask_info_error.png
new file mode 100644
index 000000000..693bbb58a
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_info_error.png differ
diff --git a/radio/src/bitmaps/800x480/mask_info_shutdown.png b/radio/src/bitmaps/800x480/mask_info_shutdown.png
new file mode 100644
index 000000000..41e7996de
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_info_shutdown.png differ
diff --git a/radio/src/bitmaps/800x480/mask_info_shutdown_circle0.png b/radio/src/bitmaps/800x480/mask_info_shutdown_circle0.png
new file mode 100644
index 000000000..954999c3a
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_info_shutdown_circle0.png differ
diff --git a/radio/src/bitmaps/800x480/mask_info_shutdown_circle1.png b/radio/src/bitmaps/800x480/mask_info_shutdown_circle1.png
new file mode 100644
index 000000000..89802e48e
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_info_shutdown_circle1.png differ
diff --git a/radio/src/bitmaps/800x480/mask_info_shutdown_circle2.png b/radio/src/bitmaps/800x480/mask_info_shutdown_circle2.png
new file mode 100644
index 000000000..442b76fcf
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_info_shutdown_circle2.png differ
diff --git a/radio/src/bitmaps/800x480/mask_info_shutdown_circle3.png b/radio/src/bitmaps/800x480/mask_info_shutdown_circle3.png
new file mode 100644
index 000000000..826ab760b
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_info_shutdown_circle3.png differ
diff --git a/radio/src/bitmaps/800x480/mask_info_usb_plugged.png b/radio/src/bitmaps/800x480/mask_info_usb_plugged.png
new file mode 100644
index 000000000..e79905744
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_info_usb_plugged.png differ
diff --git a/radio/src/bitmaps/800x480/mask_inline_add.png b/radio/src/bitmaps/800x480/mask_inline_add.png
new file mode 100644
index 000000000..d5377dc68
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_inline_add.png differ
diff --git a/radio/src/bitmaps/800x480/mask_inline_curve.png b/radio/src/bitmaps/800x480/mask_inline_curve.png
new file mode 100644
index 000000000..eeab0ebf6
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_inline_curve.png differ
diff --git a/radio/src/bitmaps/800x480/mask_inline_dot.png b/radio/src/bitmaps/800x480/mask_inline_dot.png
new file mode 100644
index 000000000..e89f90f53
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_inline_dot.png differ
diff --git a/radio/src/bitmaps/800x480/mask_inline_fm.png b/radio/src/bitmaps/800x480/mask_inline_fm.png
new file mode 100644
index 000000000..5a099b365
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_inline_fm.png differ
diff --git a/radio/src/bitmaps/800x480/mask_inline_inverted.png b/radio/src/bitmaps/800x480/mask_inline_inverted.png
new file mode 100644
index 000000000..64b5aefe2
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_inline_inverted.png differ
diff --git a/radio/src/bitmaps/800x480/mask_inline_locked.png b/radio/src/bitmaps/800x480/mask_inline_locked.png
new file mode 100644
index 000000000..8d59eb081
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_inline_locked.png differ
diff --git a/radio/src/bitmaps/800x480/mask_inline_multiply.png b/radio/src/bitmaps/800x480/mask_inline_multiply.png
new file mode 100644
index 000000000..c220f7bdd
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_inline_multiply.png differ
diff --git a/radio/src/bitmaps/800x480/mask_inline_replace.png b/radio/src/bitmaps/800x480/mask_inline_replace.png
new file mode 100644
index 000000000..0bd7dfbf8
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_inline_replace.png differ
diff --git a/radio/src/bitmaps/800x480/mask_menu_edgetx.png b/radio/src/bitmaps/800x480/mask_menu_edgetx.png
new file mode 100644
index 000000000..1513c6805
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_menu_edgetx.png differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_menu_favs.png b/radio/src/bitmaps/800x480/mask_menu_favs.png
similarity index 86%
rename from radio/src/bitmaps/800x480/default_theme/mask_menu_favs.png
rename to radio/src/bitmaps/800x480/mask_menu_favs.png
index 642e61874..18f8e21b6 100644
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_menu_favs.png and b/radio/src/bitmaps/800x480/mask_menu_favs.png differ
diff --git a/radio/src/bitmaps/800x480/mask_round_title_left.png b/radio/src/bitmaps/800x480/mask_round_title_left.png
deleted file mode 100644
index a742ac084..000000000
Binary files a/radio/src/bitmaps/800x480/mask_round_title_left.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/mask_round_title_right.png b/radio/src/bitmaps/800x480/mask_round_title_right.png
deleted file mode 100644
index bda0d240e..000000000
Binary files a/radio/src/bitmaps/800x480/mask_round_title_right.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/mask_shutdown_circle0.png b/radio/src/bitmaps/800x480/mask_shutdown_circle0.png
deleted file mode 100644
index 4d03f39d1..000000000
Binary files a/radio/src/bitmaps/800x480/mask_shutdown_circle0.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/mask_shutdown_circle1.png b/radio/src/bitmaps/800x480/mask_shutdown_circle1.png
deleted file mode 100644
index df9178ea9..000000000
Binary files a/radio/src/bitmaps/800x480/mask_shutdown_circle1.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/mask_shutdown_circle2.png b/radio/src/bitmaps/800x480/mask_shutdown_circle2.png
deleted file mode 100644
index 2db1b4d68..000000000
Binary files a/radio/src/bitmaps/800x480/mask_shutdown_circle2.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/mask_shutdown_circle3.png b/radio/src/bitmaps/800x480/mask_shutdown_circle3.png
deleted file mode 100644
index 15da5562d..000000000
Binary files a/radio/src/bitmaps/800x480/mask_shutdown_circle3.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/mask_timer.png b/radio/src/bitmaps/800x480/mask_timer.png
deleted file mode 100644
index 492a976bf..000000000
Binary files a/radio/src/bitmaps/800x480/mask_timer.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/mask_timer_bg.png b/radio/src/bitmaps/800x480/mask_timer_bg.png
deleted file mode 100644
index 8bc2f0b69..000000000
Binary files a/radio/src/bitmaps/800x480/mask_timer_bg.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/mask_topmenu_gps_18.png b/radio/src/bitmaps/800x480/mask_topmenu_gps_18.png
deleted file mode 100644
index 562243d1d..000000000
Binary files a/radio/src/bitmaps/800x480/mask_topmenu_gps_18.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/mask_topmenu_usb.png b/radio/src/bitmaps/800x480/mask_topmenu_usb.png
deleted file mode 100644
index ddbe18e9b..000000000
Binary files a/radio/src/bitmaps/800x480/mask_topmenu_usb.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/mask_txbat.png b/radio/src/bitmaps/800x480/mask_txbat.png
deleted file mode 100644
index a8a57518f..000000000
Binary files a/radio/src/bitmaps/800x480/mask_txbat.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/mask_txbat_charging.png b/radio/src/bitmaps/800x480/mask_txbat_charging.png
deleted file mode 100644
index 646a78813..000000000
Binary files a/radio/src/bitmaps/800x480/mask_txbat_charging.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/mask_ui_bg_tile_top_left.png b/radio/src/bitmaps/800x480/mask_ui_bg_tile_top_left.png
new file mode 100644
index 000000000..99a5474a4
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_ui_bg_tile_top_left.png differ
diff --git a/radio/src/bitmaps/800x480/mask_ui_bg_tile_top_right.png b/radio/src/bitmaps/800x480/mask_ui_bg_tile_top_right.png
new file mode 100644
index 000000000..18e414d6c
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_ui_bg_tile_top_right.png differ
diff --git a/radio/src/bitmaps/800x480/mask_ui_bg_topbar_left.png b/radio/src/bitmaps/800x480/mask_ui_bg_topbar_left.png
new file mode 100644
index 000000000..7ac717db2
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_ui_bg_topbar_left.png differ
diff --git a/radio/src/bitmaps/800x480/default_theme/mask_topright.png b/radio/src/bitmaps/800x480/mask_ui_bg_topbar_right.png
similarity index 54%
rename from radio/src/bitmaps/800x480/default_theme/mask_topright.png
rename to radio/src/bitmaps/800x480/mask_ui_bg_topbar_right.png
index 20a9daabc..1a3adb7c7 100644
Binary files a/radio/src/bitmaps/800x480/default_theme/mask_topright.png and b/radio/src/bitmaps/800x480/mask_ui_bg_topbar_right.png differ
diff --git a/radio/src/bitmaps/800x480/mask_ui_btn_close.png b/radio/src/bitmaps/800x480/mask_ui_btn_close.png
new file mode 100644
index 000000000..e3ea3107f
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_ui_btn_close.png differ
diff --git a/radio/src/bitmaps/800x480/mask_ui_btn_grid_large.png b/radio/src/bitmaps/800x480/mask_ui_btn_grid_large.png
new file mode 100644
index 000000000..da6f8b510
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_ui_btn_grid_large.png differ
diff --git a/radio/src/bitmaps/800x480/mask_ui_btn_grid_small.png b/radio/src/bitmaps/800x480/mask_ui_btn_grid_small.png
new file mode 100644
index 000000000..2b82717ac
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_ui_btn_grid_small.png differ
diff --git a/radio/src/bitmaps/800x480/mask_ui_btn_list_one.png b/radio/src/bitmaps/800x480/mask_ui_btn_list_one.png
new file mode 100644
index 000000000..df7cccc3e
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_ui_btn_list_one.png differ
diff --git a/radio/src/bitmaps/800x480/mask_ui_btn_list_two.png b/radio/src/bitmaps/800x480/mask_ui_btn_list_two.png
new file mode 100644
index 000000000..cbfde6c8b
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_ui_btn_list_two.png differ
diff --git a/radio/src/bitmaps/800x480/mask_ui_btn_next.png b/radio/src/bitmaps/800x480/mask_ui_btn_next.png
new file mode 100644
index 000000000..1db2aabba
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_ui_btn_next.png differ
diff --git a/radio/src/bitmaps/800x480/mask_ui_btn_prev.png b/radio/src/bitmaps/800x480/mask_ui_btn_prev.png
new file mode 100644
index 000000000..04a9a3282
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_ui_btn_prev.png differ
diff --git a/radio/src/bitmaps/800x480/mask_usb_symbol.png b/radio/src/bitmaps/800x480/mask_usb_symbol.png
deleted file mode 100644
index b44e6c236..000000000
Binary files a/radio/src/bitmaps/800x480/mask_usb_symbol.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/mask_widget_antenna.png b/radio/src/bitmaps/800x480/mask_widget_antenna.png
new file mode 100644
index 000000000..8b2288a4f
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_widget_antenna.png differ
diff --git a/radio/src/bitmaps/800x480/mask_widget_gps.png b/radio/src/bitmaps/800x480/mask_widget_gps.png
new file mode 100644
index 000000000..8f3f109c6
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_widget_gps.png differ
diff --git a/radio/src/bitmaps/800x480/mask_widget_timer.png b/radio/src/bitmaps/800x480/mask_widget_timer.png
new file mode 100644
index 000000000..cccafd661
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_widget_timer.png differ
diff --git a/radio/src/bitmaps/800x480/mask_widget_timer_bg.png b/radio/src/bitmaps/800x480/mask_widget_timer_bg.png
new file mode 100644
index 000000000..d51abaccb
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_widget_timer_bg.png differ
diff --git a/radio/src/bitmaps/800x480/mask_widget_trim.png b/radio/src/bitmaps/800x480/mask_widget_trim.png
new file mode 100644
index 000000000..82c201363
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_widget_trim.png differ
diff --git a/radio/src/bitmaps/800x480/mask_widget_trim_shadow.png b/radio/src/bitmaps/800x480/mask_widget_trim_shadow.png
new file mode 100644
index 000000000..d02b6b50b
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_widget_trim_shadow.png differ
diff --git a/radio/src/bitmaps/800x480/mask_widget_txbat.png b/radio/src/bitmaps/800x480/mask_widget_txbat.png
new file mode 100644
index 000000000..e5c4974ca
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_widget_txbat.png differ
diff --git a/radio/src/bitmaps/800x480/mask_widget_txbat_charging.png b/radio/src/bitmaps/800x480/mask_widget_txbat_charging.png
new file mode 100644
index 000000000..e8987b538
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_widget_txbat_charging.png differ
diff --git a/radio/src/bitmaps/800x480/mask_widget_usb.png b/radio/src/bitmaps/800x480/mask_widget_usb.png
new file mode 100644
index 000000000..39c5b2487
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_widget_usb.png differ
diff --git a/radio/src/bitmaps/800x480/mask_widget_volume0.png b/radio/src/bitmaps/800x480/mask_widget_volume0.png
new file mode 100644
index 000000000..a6932e476
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_widget_volume0.png differ
diff --git a/radio/src/bitmaps/800x480/mask_widget_volume1.png b/radio/src/bitmaps/800x480/mask_widget_volume1.png
new file mode 100644
index 000000000..28ada378e
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_widget_volume1.png differ
diff --git a/radio/src/bitmaps/800x480/mask_widget_volume2.png b/radio/src/bitmaps/800x480/mask_widget_volume2.png
new file mode 100644
index 000000000..098eff19d
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_widget_volume2.png differ
diff --git a/radio/src/bitmaps/800x480/mask_widget_volume3.png b/radio/src/bitmaps/800x480/mask_widget_volume3.png
new file mode 100644
index 000000000..41ba1b768
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_widget_volume3.png differ
diff --git a/radio/src/bitmaps/800x480/mask_widget_volume4.png b/radio/src/bitmaps/800x480/mask_widget_volume4.png
new file mode 100644
index 000000000..4d75018e0
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_widget_volume4.png differ
diff --git a/radio/src/bitmaps/800x480/mask_widget_volume_scale.png b/radio/src/bitmaps/800x480/mask_widget_volume_scale.png
new file mode 100644
index 000000000..61b097aff
Binary files /dev/null and b/radio/src/bitmaps/800x480/mask_widget_volume_scale.png differ
diff --git a/radio/src/bitmaps/800x480/splash_logo.png b/radio/src/bitmaps/800x480/splash_logo.png
deleted file mode 100644
index 92b2c48c4..000000000
Binary files a/radio/src/bitmaps/800x480/splash_logo.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/volume/mask_volume_0.png b/radio/src/bitmaps/800x480/volume/mask_volume_0.png
deleted file mode 100644
index aaa01d74b..000000000
Binary files a/radio/src/bitmaps/800x480/volume/mask_volume_0.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/volume/mask_volume_1.png b/radio/src/bitmaps/800x480/volume/mask_volume_1.png
deleted file mode 100644
index d3ee906f8..000000000
Binary files a/radio/src/bitmaps/800x480/volume/mask_volume_1.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/volume/mask_volume_2.png b/radio/src/bitmaps/800x480/volume/mask_volume_2.png
deleted file mode 100644
index ba7ee666b..000000000
Binary files a/radio/src/bitmaps/800x480/volume/mask_volume_2.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/volume/mask_volume_3.png b/radio/src/bitmaps/800x480/volume/mask_volume_3.png
deleted file mode 100644
index 6b31bcc4c..000000000
Binary files a/radio/src/bitmaps/800x480/volume/mask_volume_3.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/volume/mask_volume_4.png b/radio/src/bitmaps/800x480/volume/mask_volume_4.png
deleted file mode 100644
index dbb315a22..000000000
Binary files a/radio/src/bitmaps/800x480/volume/mask_volume_4.png and /dev/null differ
diff --git a/radio/src/bitmaps/800x480/volume/mask_volume_scale.png b/radio/src/bitmaps/800x480/volume/mask_volume_scale.png
deleted file mode 100644
index 50d90c41b..000000000
Binary files a/radio/src/bitmaps/800x480/volume/mask_volume_scale.png and /dev/null differ
diff --git a/radio/src/bitmaps/img-src/bmp_bootloader_plug_usb.svg b/radio/src/bitmaps/img-src/bmp_bootloader_plug_usb.svg
new file mode 100644
index 000000000..f412d9e78
--- /dev/null
+++ b/radio/src/bitmaps/img-src/bmp_bootloader_plug_usb.svg
@@ -0,0 +1,59 @@
+
diff --git a/radio/src/bitmaps/img-src/bmp_bootloader_usb_plugged.svg b/radio/src/bitmaps/img-src/bmp_bootloader_usb_plugged.svg
new file mode 100644
index 000000000..e408b36a9
--- /dev/null
+++ b/radio/src/bitmaps/img-src/bmp_bootloader_usb_plugged.svg
@@ -0,0 +1,37 @@
+
diff --git a/radio/src/bitmaps/img-src/bmp_logo_edgetx_splash.svg b/radio/src/bitmaps/img-src/bmp_logo_edgetx_splash.svg
new file mode 100644
index 000000000..84237167f
--- /dev/null
+++ b/radio/src/bitmaps/img-src/bmp_logo_edgetx_splash.svg
@@ -0,0 +1,203 @@
+
diff --git a/radio/src/bitmaps/img-src/bmp_radio_stick_background.svg b/radio/src/bitmaps/img-src/bmp_radio_stick_background.svg
new file mode 100644
index 000000000..5918abde5
--- /dev/null
+++ b/radio/src/bitmaps/img-src/bmp_radio_stick_background.svg
@@ -0,0 +1,50 @@
+
diff --git a/radio/src/bitmaps/img-src/bmp_radio_stick_pointer.svg b/radio/src/bitmaps/img-src/bmp_radio_stick_pointer.svg
new file mode 100644
index 000000000..9fac9d956
--- /dev/null
+++ b/radio/src/bitmaps/img-src/bmp_radio_stick_pointer.svg
@@ -0,0 +1,19 @@
+
diff --git a/radio/src/bitmaps/img-src/bootloader/bmp_plug_usb.svg b/radio/src/bitmaps/img-src/bootloader/bmp_plug_usb.svg
deleted file mode 100644
index 90e6f8b9f..000000000
--- a/radio/src/bitmaps/img-src/bootloader/bmp_plug_usb.svg
+++ /dev/null
@@ -1,298 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/bootloader/bmp_usb_plugged.svg b/radio/src/bitmaps/img-src/bootloader/bmp_usb_plugged.svg
deleted file mode 100644
index 8f63461e0..000000000
--- a/radio/src/bitmaps/img-src/bootloader/bmp_usb_plugged.svg
+++ /dev/null
@@ -1,155 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/alpha_stick_background.svg b/radio/src/bitmaps/img-src/default_theme/alpha_stick_background.svg
deleted file mode 100644
index adb60c454..000000000
--- a/radio/src/bitmaps/img-src/default_theme/alpha_stick_background.svg
+++ /dev/null
@@ -1,460 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/alpha_stick_pointer.svg b/radio/src/bitmaps/img-src/default_theme/alpha_stick_pointer.svg
deleted file mode 100644
index 789d511bb..000000000
--- a/radio/src/bitmaps/img-src/default_theme/alpha_stick_pointer.svg
+++ /dev/null
@@ -1,97 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_btn_close.svg b/radio/src/bitmaps/img-src/default_theme/mask_btn_close.svg
deleted file mode 100644
index 61cb7a017..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_btn_close.svg
+++ /dev/null
@@ -1,92 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_btn_next.svg b/radio/src/bitmaps/img-src/default_theme/mask_btn_next.svg
deleted file mode 100644
index cc3a15d26..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_btn_next.svg
+++ /dev/null
@@ -1,85 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_btn_prev.svg b/radio/src/bitmaps/img-src/default_theme/mask_btn_prev.svg
deleted file mode 100644
index 6eb9f29bf..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_btn_prev.svg
+++ /dev/null
@@ -1,85 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_busy.svg b/radio/src/bitmaps/img-src/default_theme/mask_busy.svg
deleted file mode 100644
index cce900cd4..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_busy.svg
+++ /dev/null
@@ -1,89 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_currentmenu_bg.svg b/radio/src/bitmaps/img-src/default_theme/mask_currentmenu_bg.svg
deleted file mode 100644
index 9667e6275..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_currentmenu_bg.svg
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_currentmenu_dot.svg b/radio/src/bitmaps/img-src/default_theme/mask_currentmenu_dot.svg
deleted file mode 100644
index f6c211788..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_currentmenu_dot.svg
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_currentmenu_shadow.svg b/radio/src/bitmaps/img-src/default_theme/mask_currentmenu_shadow.svg
deleted file mode 100644
index 6f7fdf78c..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_currentmenu_shadow.svg
+++ /dev/null
@@ -1,74 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_edgetx.svg b/radio/src/bitmaps/img-src/default_theme/mask_edgetx.svg
deleted file mode 100644
index ebda44f23..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_edgetx.svg
+++ /dev/null
@@ -1,208 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_error.svg b/radio/src/bitmaps/img-src/default_theme/mask_error.svg
deleted file mode 100644
index e60e44079..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_error.svg
+++ /dev/null
@@ -1,192 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_menu_model.svg b/radio/src/bitmaps/img-src/default_theme/mask_menu_model.svg
deleted file mode 100644
index b6bda6b8a..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_menu_model.svg
+++ /dev/null
@@ -1,90 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_menu_model_select.svg b/radio/src/bitmaps/img-src/default_theme/mask_menu_model_select.svg
deleted file mode 100644
index 306041641..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_menu_model_select.svg
+++ /dev/null
@@ -1,247 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_menu_notes.svg b/radio/src/bitmaps/img-src/default_theme/mask_menu_notes.svg
deleted file mode 100644
index 674233e34..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_menu_notes.svg
+++ /dev/null
@@ -1,92 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_menu_radio.svg b/radio/src/bitmaps/img-src/default_theme/mask_menu_radio.svg
deleted file mode 100644
index 6eca5f4a6..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_menu_radio.svg
+++ /dev/null
@@ -1,111 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_menu_stats.svg b/radio/src/bitmaps/img-src/default_theme/mask_menu_stats.svg
deleted file mode 100644
index 160abea41..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_menu_stats.svg
+++ /dev/null
@@ -1,110 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_menu_theme.svg b/radio/src/bitmaps/img-src/default_theme/mask_menu_theme.svg
deleted file mode 100644
index 0563383de..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_menu_theme.svg
+++ /dev/null
@@ -1,97 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_model_curves.svg b/radio/src/bitmaps/img-src/default_theme/mask_model_curves.svg
deleted file mode 100644
index 90bcd0875..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_model_curves.svg
+++ /dev/null
@@ -1,80 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_model_flight_modes.svg b/radio/src/bitmaps/img-src/default_theme/mask_model_flight_modes.svg
deleted file mode 100644
index f15a81003..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_model_flight_modes.svg
+++ /dev/null
@@ -1,89 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_model_grid_large.svg b/radio/src/bitmaps/img-src/default_theme/mask_model_grid_large.svg
deleted file mode 100644
index 02fc8b542..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_model_grid_large.svg
+++ /dev/null
@@ -1,98 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_model_grid_small.svg b/radio/src/bitmaps/img-src/default_theme/mask_model_grid_small.svg
deleted file mode 100644
index 4d926c861..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_model_grid_small.svg
+++ /dev/null
@@ -1,141 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_model_gvars.svg b/radio/src/bitmaps/img-src/default_theme/mask_model_gvars.svg
deleted file mode 100644
index c3c18efd3..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_model_gvars.svg
+++ /dev/null
@@ -1,80 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_model_heli.svg b/radio/src/bitmaps/img-src/default_theme/mask_model_heli.svg
deleted file mode 100644
index 2e284eda7..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_model_heli.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_model_inputs.svg b/radio/src/bitmaps/img-src/default_theme/mask_model_inputs.svg
deleted file mode 100644
index 3b4a502a7..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_model_inputs.svg
+++ /dev/null
@@ -1,92 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_model_list_one.svg b/radio/src/bitmaps/img-src/default_theme/mask_model_list_one.svg
deleted file mode 100644
index 70e897723..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_model_list_one.svg
+++ /dev/null
@@ -1,94 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_model_list_two.svg b/radio/src/bitmaps/img-src/default_theme/mask_model_list_two.svg
deleted file mode 100644
index c4ffa5a38..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_model_list_two.svg
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_model_logical_switches.svg b/radio/src/bitmaps/img-src/default_theme/mask_model_logical_switches.svg
deleted file mode 100644
index ff4c611ee..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_model_logical_switches.svg
+++ /dev/null
@@ -1,95 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_model_lua_scripts.svg b/radio/src/bitmaps/img-src/default_theme/mask_model_lua_scripts.svg
deleted file mode 100644
index bcc199604..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_model_lua_scripts.svg
+++ /dev/null
@@ -1,86 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_model_mixer.svg b/radio/src/bitmaps/img-src/default_theme/mask_model_mixer.svg
deleted file mode 100644
index fa7673804..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_model_mixer.svg
+++ /dev/null
@@ -1,106 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_model_outputs.svg b/radio/src/bitmaps/img-src/default_theme/mask_model_outputs.svg
deleted file mode 100644
index 4fe9a5326..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_model_outputs.svg
+++ /dev/null
@@ -1,85 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_model_special_functions.svg b/radio/src/bitmaps/img-src/default_theme/mask_model_special_functions.svg
deleted file mode 100644
index 9bd0db889..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_model_special_functions.svg
+++ /dev/null
@@ -1,81 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_model_telemetry.svg b/radio/src/bitmaps/img-src/default_theme/mask_model_telemetry.svg
deleted file mode 100644
index 19558d499..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_model_telemetry.svg
+++ /dev/null
@@ -1,93 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_model_usb.svg b/radio/src/bitmaps/img-src/default_theme/mask_model_usb.svg
deleted file mode 100644
index 40ee7814c..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_model_usb.svg
+++ /dev/null
@@ -1,112 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_monitor.svg b/radio/src/bitmaps/img-src/default_theme/mask_monitor.svg
deleted file mode 100644
index 83172d6de..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_monitor.svg
+++ /dev/null
@@ -1,114 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_monitor_inver.svg b/radio/src/bitmaps/img-src/default_theme/mask_monitor_inver.svg
deleted file mode 100644
index d8b0ebb8d..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_monitor_inver.svg
+++ /dev/null
@@ -1,80 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_monitor_lockch.svg b/radio/src/bitmaps/img-src/default_theme/mask_monitor_lockch.svg
deleted file mode 100644
index ca2446b81..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_monitor_lockch.svg
+++ /dev/null
@@ -1,98 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_monitor_logsw.svg b/radio/src/bitmaps/img-src/default_theme/mask_monitor_logsw.svg
deleted file mode 100644
index b80c59852..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_monitor_logsw.svg
+++ /dev/null
@@ -1,108 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_mplex_add.svg b/radio/src/bitmaps/img-src/default_theme/mask_mplex_add.svg
deleted file mode 100644
index 44b51ecc9..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_mplex_add.svg
+++ /dev/null
@@ -1,102 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_mplex_multi.svg b/radio/src/bitmaps/img-src/default_theme/mask_mplex_multi.svg
deleted file mode 100644
index b540de6f2..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_mplex_multi.svg
+++ /dev/null
@@ -1,110 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_mplex_replace.svg b/radio/src/bitmaps/img-src/default_theme/mask_mplex_replace.svg
deleted file mode 100644
index 3628f7529..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_mplex_replace.svg
+++ /dev/null
@@ -1,107 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_radio_calibration.svg b/radio/src/bitmaps/img-src/default_theme/mask_radio_calibration.svg
deleted file mode 100644
index 49980df74..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_radio_calibration.svg
+++ /dev/null
@@ -1,101 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_radio_edit_theme.svg b/radio/src/bitmaps/img-src/default_theme/mask_radio_edit_theme.svg
deleted file mode 100644
index 511e2edf1..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_radio_edit_theme.svg
+++ /dev/null
@@ -1,118 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_radio_global_functions.svg b/radio/src/bitmaps/img-src/default_theme/mask_radio_global_functions.svg
deleted file mode 100644
index 969aa3c56..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_radio_global_functions.svg
+++ /dev/null
@@ -1,98 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_radio_hardware.svg b/radio/src/bitmaps/img-src/default_theme/mask_radio_hardware.svg
deleted file mode 100644
index a45dc90b5..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_radio_hardware.svg
+++ /dev/null
@@ -1,142 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_radio_sd_browser.svg b/radio/src/bitmaps/img-src/default_theme/mask_radio_sd_browser.svg
deleted file mode 100644
index b89c55a2c..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_radio_sd_browser.svg
+++ /dev/null
@@ -1,107 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_radio_setup.svg b/radio/src/bitmaps/img-src/default_theme/mask_radio_setup.svg
deleted file mode 100644
index b5aaa3d25..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_radio_setup.svg
+++ /dev/null
@@ -1,8 +0,0 @@
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_radio_tools.svg b/radio/src/bitmaps/img-src/default_theme/mask_radio_tools.svg
deleted file mode 100644
index 814f2ee38..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_radio_tools.svg
+++ /dev/null
@@ -1,102 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_radio_trainer.svg b/radio/src/bitmaps/img-src/default_theme/mask_radio_trainer.svg
deleted file mode 100644
index 66fa342da..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_radio_trainer.svg
+++ /dev/null
@@ -1,99 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_radio_version.svg b/radio/src/bitmaps/img-src/default_theme/mask_radio_version.svg
deleted file mode 100644
index 58dafd860..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_radio_version.svg
+++ /dev/null
@@ -1,91 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_shutdown.svg b/radio/src/bitmaps/img-src/default_theme/mask_shutdown.svg
deleted file mode 100644
index b5b44f10c..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_shutdown.svg
+++ /dev/null
@@ -1,102 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_stats_analogs.svg b/radio/src/bitmaps/img-src/default_theme/mask_stats_analogs.svg
deleted file mode 100644
index f072b351c..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_stats_analogs.svg
+++ /dev/null
@@ -1,95 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_stats_debug.svg b/radio/src/bitmaps/img-src/default_theme/mask_stats_debug.svg
deleted file mode 100644
index cf721a52d..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_stats_debug.svg
+++ /dev/null
@@ -1,100 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_stats_timers.svg b/radio/src/bitmaps/img-src/default_theme/mask_stats_timers.svg
deleted file mode 100644
index c2f05313b..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_stats_timers.svg
+++ /dev/null
@@ -1,105 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_textline_curve.svg b/radio/src/bitmaps/img-src/default_theme/mask_textline_curve.svg
deleted file mode 100644
index da8ad37d1..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_textline_curve.svg
+++ /dev/null
@@ -1,95 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_textline_fm.svg b/radio/src/bitmaps/img-src/default_theme/mask_textline_fm.svg
deleted file mode 100644
index 135152450..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_textline_fm.svg
+++ /dev/null
@@ -1,104 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_theme_add_view.svg b/radio/src/bitmaps/img-src/default_theme/mask_theme_add_view.svg
deleted file mode 100644
index abe809d2b..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_theme_add_view.svg
+++ /dev/null
@@ -1,95 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_theme_setup.svg b/radio/src/bitmaps/img-src/default_theme/mask_theme_setup.svg
deleted file mode 100644
index fb72de6a5..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_theme_setup.svg
+++ /dev/null
@@ -1,87 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_theme_view1.svg b/radio/src/bitmaps/img-src/default_theme/mask_theme_view1.svg
deleted file mode 100644
index 1739cc66d..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_theme_view1.svg
+++ /dev/null
@@ -1,110 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_theme_view10.svg b/radio/src/bitmaps/img-src/default_theme/mask_theme_view10.svg
deleted file mode 100644
index 0de7d3f08..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_theme_view10.svg
+++ /dev/null
@@ -1,110 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_theme_view2.svg b/radio/src/bitmaps/img-src/default_theme/mask_theme_view2.svg
deleted file mode 100644
index 6da07ea89..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_theme_view2.svg
+++ /dev/null
@@ -1,110 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_theme_view3.svg b/radio/src/bitmaps/img-src/default_theme/mask_theme_view3.svg
deleted file mode 100644
index 08aff640c..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_theme_view3.svg
+++ /dev/null
@@ -1,110 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_theme_view4.svg b/radio/src/bitmaps/img-src/default_theme/mask_theme_view4.svg
deleted file mode 100644
index c0999d382..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_theme_view4.svg
+++ /dev/null
@@ -1,110 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_theme_view5.svg b/radio/src/bitmaps/img-src/default_theme/mask_theme_view5.svg
deleted file mode 100644
index d50a649fa..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_theme_view5.svg
+++ /dev/null
@@ -1,110 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_theme_view6.svg b/radio/src/bitmaps/img-src/default_theme/mask_theme_view6.svg
deleted file mode 100644
index efbd6de75..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_theme_view6.svg
+++ /dev/null
@@ -1,110 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_theme_view7.svg b/radio/src/bitmaps/img-src/default_theme/mask_theme_view7.svg
deleted file mode 100644
index c5c214b37..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_theme_view7.svg
+++ /dev/null
@@ -1,110 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_theme_view8.svg b/radio/src/bitmaps/img-src/default_theme/mask_theme_view8.svg
deleted file mode 100644
index 57cdfc1d5..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_theme_view8.svg
+++ /dev/null
@@ -1,110 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_theme_view9.svg b/radio/src/bitmaps/img-src/default_theme/mask_theme_view9.svg
deleted file mode 100644
index 35a318795..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_theme_view9.svg
+++ /dev/null
@@ -1,110 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_tools_apps.svg b/radio/src/bitmaps/img-src/default_theme/mask_tools_apps.svg
deleted file mode 100644
index d306c02f9..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_tools_apps.svg
+++ /dev/null
@@ -1,88 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_tools_reset.svg b/radio/src/bitmaps/img-src/default_theme/mask_tools_reset.svg
deleted file mode 100644
index 0d8037cd9..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_tools_reset.svg
+++ /dev/null
@@ -1,92 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_top_logo.svg b/radio/src/bitmaps/img-src/default_theme/mask_top_logo.svg
deleted file mode 100644
index 02ef9184a..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_top_logo.svg
+++ /dev/null
@@ -1,17 +0,0 @@
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_topleft.svg b/radio/src/bitmaps/img-src/default_theme/mask_topleft.svg
deleted file mode 100644
index a0480535a..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_topleft.svg
+++ /dev/null
@@ -1,80 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_topright.svg b/radio/src/bitmaps/img-src/default_theme/mask_topright.svg
deleted file mode 100644
index 358de77e5..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_topright.svg
+++ /dev/null
@@ -1,80 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_trim.svg b/radio/src/bitmaps/img-src/default_theme/mask_trim.svg
deleted file mode 100644
index 4bdc3caa0..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_trim.svg
+++ /dev/null
@@ -1,83 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_trim_shadow.svg b/radio/src/bitmaps/img-src/default_theme/mask_trim_shadow.svg
deleted file mode 100644
index 0bae05c1c..000000000
--- a/radio/src/bitmaps/img-src/default_theme/mask_trim_shadow.svg
+++ /dev/null
@@ -1,101 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/mask_antenna.svg b/radio/src/bitmaps/img-src/mask_antenna.svg
deleted file mode 100644
index abde71b8c..000000000
--- a/radio/src/bitmaps/img-src/mask_antenna.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/mask_dot.svg b/radio/src/bitmaps/img-src/mask_dot.svg
deleted file mode 100644
index 2ee1c5d4a..000000000
--- a/radio/src/bitmaps/img-src/mask_dot.svg
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/mask_icon_edgetx.svg b/radio/src/bitmaps/img-src/mask_icon_edgetx.svg
new file mode 100644
index 000000000..e6cf2588b
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_edgetx.svg
@@ -0,0 +1,11 @@
+
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_menu_favs.svg b/radio/src/bitmaps/img-src/mask_icon_menu_favs.svg
similarity index 100%
rename from radio/src/bitmaps/img-src/default_theme/mask_menu_favs.svg
rename to radio/src/bitmaps/img-src/mask_icon_menu_favs.svg
diff --git a/radio/src/bitmaps/img-src/mask_icon_menu_manage_models.svg b/radio/src/bitmaps/img-src/mask_icon_menu_manage_models.svg
new file mode 100644
index 000000000..cd7103fd5
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_menu_manage_models.svg
@@ -0,0 +1,8 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_menu_model_setup.svg b/radio/src/bitmaps/img-src/mask_icon_menu_model_setup.svg
new file mode 100644
index 000000000..2f263ea9e
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_menu_model_setup.svg
@@ -0,0 +1,7 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_menu_radio_setup.svg b/radio/src/bitmaps/img-src/mask_icon_menu_radio_setup.svg
new file mode 100644
index 000000000..a4cfecb1a
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_menu_radio_setup.svg
@@ -0,0 +1,7 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_menu_tools.svg b/radio/src/bitmaps/img-src/mask_icon_menu_tools.svg
new file mode 100644
index 000000000..ce2fe0e4c
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_menu_tools.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_menu_ui_setup.svg b/radio/src/bitmaps/img-src/mask_icon_menu_ui_setup.svg
new file mode 100644
index 000000000..607667be2
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_menu_ui_setup.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_model_curves.svg b/radio/src/bitmaps/img-src/mask_icon_model_curves.svg
new file mode 100644
index 000000000..150d28409
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_model_curves.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_model_flight_modes.svg b/radio/src/bitmaps/img-src/mask_icon_model_flight_modes.svg
new file mode 100644
index 000000000..deee83373
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_model_flight_modes.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/default_theme/mask_model_setup.svg b/radio/src/bitmaps/img-src/mask_icon_model_general.svg
similarity index 100%
rename from radio/src/bitmaps/img-src/default_theme/mask_model_setup.svg
rename to radio/src/bitmaps/img-src/mask_icon_model_general.svg
diff --git a/radio/src/bitmaps/img-src/mask_icon_model_gvars.svg b/radio/src/bitmaps/img-src/mask_icon_model_gvars.svg
new file mode 100644
index 000000000..bf2d73fdb
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_model_gvars.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_model_heli.svg b/radio/src/bitmaps/img-src/mask_icon_model_heli.svg
new file mode 100644
index 000000000..56d74cb5a
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_model_heli.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_model_inputs.svg b/radio/src/bitmaps/img-src/mask_icon_model_inputs.svg
new file mode 100644
index 000000000..e1bea4128
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_model_inputs.svg
@@ -0,0 +1,7 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_model_logical_switches.svg b/radio/src/bitmaps/img-src/mask_icon_model_logical_switches.svg
new file mode 100644
index 000000000..973bcf35a
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_model_logical_switches.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_model_mixer.svg b/radio/src/bitmaps/img-src/mask_icon_model_mixer.svg
new file mode 100644
index 000000000..dabdd2c66
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_model_mixer.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_model_mixer_scripts.svg b/radio/src/bitmaps/img-src/mask_icon_model_mixer_scripts.svg
new file mode 100644
index 000000000..c0b5a0d8c
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_model_mixer_scripts.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_model_notes.svg b/radio/src/bitmaps/img-src/mask_icon_model_notes.svg
new file mode 100644
index 000000000..35e696826
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_model_notes.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_model_outputs.svg b/radio/src/bitmaps/img-src/mask_icon_model_outputs.svg
new file mode 100644
index 000000000..630ea6eb6
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_model_outputs.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_model_special_functions.svg b/radio/src/bitmaps/img-src/mask_icon_model_special_functions.svg
new file mode 100644
index 000000000..041240e04
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_model_special_functions.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_model_telemetry.svg b/radio/src/bitmaps/img-src/mask_icon_model_telemetry.svg
new file mode 100644
index 000000000..bf6e3bf21
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_model_telemetry.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_model_timers.svg b/radio/src/bitmaps/img-src/mask_icon_model_timers.svg
new file mode 100644
index 000000000..1c8a8fa35
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_model_timers.svg
@@ -0,0 +1,9 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_model_usb.svg b/radio/src/bitmaps/img-src/mask_icon_model_usb.svg
new file mode 100644
index 000000000..4c5ee4208
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_model_usb.svg
@@ -0,0 +1,17 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_radio_about.svg b/radio/src/bitmaps/img-src/mask_icon_radio_about.svg
new file mode 100644
index 000000000..bd39386ee
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_radio_about.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_radio_analogs.svg b/radio/src/bitmaps/img-src/mask_icon_radio_analogs.svg
new file mode 100644
index 000000000..80b0b9f58
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_radio_analogs.svg
@@ -0,0 +1,7 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_radio_calibration.svg b/radio/src/bitmaps/img-src/mask_icon_radio_calibration.svg
new file mode 100644
index 000000000..73c83ea0c
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_radio_calibration.svg
@@ -0,0 +1,8 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_radio_general.svg b/radio/src/bitmaps/img-src/mask_icon_radio_general.svg
new file mode 100644
index 000000000..0167f884f
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_radio_general.svg
@@ -0,0 +1,8 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_radio_global_functions.svg b/radio/src/bitmaps/img-src/mask_icon_radio_global_functions.svg
new file mode 100644
index 000000000..9d02a7764
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_radio_global_functions.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_radio_hardware.svg b/radio/src/bitmaps/img-src/mask_icon_radio_hardware.svg
new file mode 100644
index 000000000..faea8f1c6
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_radio_hardware.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_radio_trainer.svg b/radio/src/bitmaps/img-src/mask_icon_radio_trainer.svg
new file mode 100644
index 000000000..c7553e5d2
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_radio_trainer.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_tools_apps.svg b/radio/src/bitmaps/img-src/mask_icon_tools_apps.svg
new file mode 100644
index 000000000..81a3aed98
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_tools_apps.svg
@@ -0,0 +1,7 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_tools_debug.svg b/radio/src/bitmaps/img-src/mask_icon_tools_debug.svg
new file mode 100644
index 000000000..639819afb
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_tools_debug.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_tools_monitor_ch.svg b/radio/src/bitmaps/img-src/mask_icon_tools_monitor_ch.svg
new file mode 100644
index 000000000..0e3f61334
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_tools_monitor_ch.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_tools_monitor_ls.svg b/radio/src/bitmaps/img-src/mask_icon_tools_monitor_ls.svg
new file mode 100644
index 000000000..017c92048
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_tools_monitor_ls.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_tools_reset.svg b/radio/src/bitmaps/img-src/mask_icon_tools_reset.svg
new file mode 100644
index 000000000..81a32fd97
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_tools_reset.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_tools_stats.svg b/radio/src/bitmaps/img-src/mask_icon_tools_stats.svg
new file mode 100644
index 000000000..3866aca9d
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_tools_stats.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_tools_storage.svg b/radio/src/bitmaps/img-src/mask_icon_tools_storage.svg
new file mode 100644
index 000000000..29b40bc30
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_tools_storage.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_ui_themes.svg b/radio/src/bitmaps/img-src/mask_icon_ui_themes.svg
new file mode 100644
index 000000000..0e5e59abe
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_ui_themes.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_ui_topbar_setup.svg b/radio/src/bitmaps/img-src/mask_icon_ui_topbar_setup.svg
new file mode 100644
index 000000000..2375710e4
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_ui_topbar_setup.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_ui_view1.svg b/radio/src/bitmaps/img-src/mask_icon_ui_view1.svg
new file mode 100644
index 000000000..bccc5ce6f
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_ui_view1.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_ui_view10.svg b/radio/src/bitmaps/img-src/mask_icon_ui_view10.svg
new file mode 100644
index 000000000..8535a3c0b
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_ui_view10.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_ui_view2.svg b/radio/src/bitmaps/img-src/mask_icon_ui_view2.svg
new file mode 100644
index 000000000..5366b256b
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_ui_view2.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_ui_view3.svg b/radio/src/bitmaps/img-src/mask_icon_ui_view3.svg
new file mode 100644
index 000000000..1b4d4683a
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_ui_view3.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_ui_view4.svg b/radio/src/bitmaps/img-src/mask_icon_ui_view4.svg
new file mode 100644
index 000000000..998936088
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_ui_view4.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_ui_view5.svg b/radio/src/bitmaps/img-src/mask_icon_ui_view5.svg
new file mode 100644
index 000000000..9df2e15ce
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_ui_view5.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_ui_view6.svg b/radio/src/bitmaps/img-src/mask_icon_ui_view6.svg
new file mode 100644
index 000000000..e642c0b0d
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_ui_view6.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_ui_view7.svg b/radio/src/bitmaps/img-src/mask_icon_ui_view7.svg
new file mode 100644
index 000000000..869d61035
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_ui_view7.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_ui_view8.svg b/radio/src/bitmaps/img-src/mask_icon_ui_view8.svg
new file mode 100644
index 000000000..3aeba749f
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_ui_view8.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_ui_view9.svg b/radio/src/bitmaps/img-src/mask_icon_ui_view9.svg
new file mode 100644
index 000000000..5a023b428
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_ui_view9.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_icon_ui_view_add.svg b/radio/src/bitmaps/img-src/mask_icon_ui_view_add.svg
new file mode 100644
index 000000000..384462983
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_icon_ui_view_add.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_info_busy.svg b/radio/src/bitmaps/img-src/mask_info_busy.svg
new file mode 100644
index 000000000..8097fc56b
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_info_busy.svg
@@ -0,0 +1,11 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_info_error.svg b/radio/src/bitmaps/img-src/mask_info_error.svg
new file mode 100644
index 000000000..cbe52ba58
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_info_error.svg
@@ -0,0 +1,11 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_info_shutdown.svg b/radio/src/bitmaps/img-src/mask_info_shutdown.svg
new file mode 100644
index 000000000..398cf4247
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_info_shutdown.svg
@@ -0,0 +1,11 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_info_shutdown_circle0.svg b/radio/src/bitmaps/img-src/mask_info_shutdown_circle0.svg
new file mode 100644
index 000000000..5cfdfcc68
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_info_shutdown_circle0.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_info_shutdown_circle1.svg b/radio/src/bitmaps/img-src/mask_info_shutdown_circle1.svg
new file mode 100644
index 000000000..c69b2bd8c
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_info_shutdown_circle1.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_info_shutdown_circle2.svg b/radio/src/bitmaps/img-src/mask_info_shutdown_circle2.svg
new file mode 100644
index 000000000..9ae90d3d7
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_info_shutdown_circle2.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_info_shutdown_circle3.svg b/radio/src/bitmaps/img-src/mask_info_shutdown_circle3.svg
new file mode 100644
index 000000000..92bf45fa7
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_info_shutdown_circle3.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_info_usb_plugged.svg b/radio/src/bitmaps/img-src/mask_info_usb_plugged.svg
new file mode 100644
index 000000000..5a4f1ab54
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_info_usb_plugged.svg
@@ -0,0 +1,14 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_inline_add.svg b/radio/src/bitmaps/img-src/mask_inline_add.svg
new file mode 100644
index 000000000..bef4ac68c
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_inline_add.svg
@@ -0,0 +1,11 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_inline_curve.svg b/radio/src/bitmaps/img-src/mask_inline_curve.svg
new file mode 100644
index 000000000..7571ef8c6
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_inline_curve.svg
@@ -0,0 +1,11 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_inline_dot.svg b/radio/src/bitmaps/img-src/mask_inline_dot.svg
new file mode 100644
index 000000000..76e06ba4e
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_inline_dot.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_inline_fm.svg b/radio/src/bitmaps/img-src/mask_inline_fm.svg
new file mode 100644
index 000000000..624f689ac
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_inline_fm.svg
@@ -0,0 +1,11 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_inline_inverted.svg b/radio/src/bitmaps/img-src/mask_inline_inverted.svg
new file mode 100644
index 000000000..76206ea46
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_inline_inverted.svg
@@ -0,0 +1,12 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_inline_locked.svg b/radio/src/bitmaps/img-src/mask_inline_locked.svg
new file mode 100644
index 000000000..fbf4004be
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_inline_locked.svg
@@ -0,0 +1,11 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_inline_multiply.svg b/radio/src/bitmaps/img-src/mask_inline_multiply.svg
new file mode 100644
index 000000000..ff1eac511
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_inline_multiply.svg
@@ -0,0 +1,11 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_inline_replace.svg b/radio/src/bitmaps/img-src/mask_inline_replace.svg
new file mode 100644
index 000000000..39e43fe2a
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_inline_replace.svg
@@ -0,0 +1,11 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_menu_edgetx.svg b/radio/src/bitmaps/img-src/mask_menu_edgetx.svg
new file mode 100644
index 000000000..2eb707f42
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_menu_edgetx.svg
@@ -0,0 +1,11 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_menu_favs.svg b/radio/src/bitmaps/img-src/mask_menu_favs.svg
new file mode 100644
index 000000000..15f14febc
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_menu_favs.svg
@@ -0,0 +1,7 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_round_title_left.svg b/radio/src/bitmaps/img-src/mask_round_title_left.svg
deleted file mode 100644
index 8aaad2816..000000000
--- a/radio/src/bitmaps/img-src/mask_round_title_left.svg
+++ /dev/null
@@ -1,68 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/mask_round_title_right.svg b/radio/src/bitmaps/img-src/mask_round_title_right.svg
deleted file mode 100644
index 0199b670a..000000000
--- a/radio/src/bitmaps/img-src/mask_round_title_right.svg
+++ /dev/null
@@ -1,68 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/mask_shutdown_circle0.svg b/radio/src/bitmaps/img-src/mask_shutdown_circle0.svg
deleted file mode 100644
index 90399abcf..000000000
--- a/radio/src/bitmaps/img-src/mask_shutdown_circle0.svg
+++ /dev/null
@@ -1,104 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/mask_shutdown_circle1.svg b/radio/src/bitmaps/img-src/mask_shutdown_circle1.svg
deleted file mode 100644
index fdd36d08b..000000000
--- a/radio/src/bitmaps/img-src/mask_shutdown_circle1.svg
+++ /dev/null
@@ -1,92 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/mask_shutdown_circle2.svg b/radio/src/bitmaps/img-src/mask_shutdown_circle2.svg
deleted file mode 100644
index 9f3f56af5..000000000
--- a/radio/src/bitmaps/img-src/mask_shutdown_circle2.svg
+++ /dev/null
@@ -1,92 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/mask_shutdown_circle3.svg b/radio/src/bitmaps/img-src/mask_shutdown_circle3.svg
deleted file mode 100644
index e01c4ba16..000000000
--- a/radio/src/bitmaps/img-src/mask_shutdown_circle3.svg
+++ /dev/null
@@ -1,92 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/mask_timer.svg b/radio/src/bitmaps/img-src/mask_timer.svg
deleted file mode 100644
index c44abe06b..000000000
--- a/radio/src/bitmaps/img-src/mask_timer.svg
+++ /dev/null
@@ -1,64 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/mask_timer_bg.svg b/radio/src/bitmaps/img-src/mask_timer_bg.svg
deleted file mode 100644
index 173a9f09c..000000000
--- a/radio/src/bitmaps/img-src/mask_timer_bg.svg
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/mask_topmenu_gps_18.svg b/radio/src/bitmaps/img-src/mask_topmenu_gps_18.svg
deleted file mode 100644
index 2eaacbc15..000000000
--- a/radio/src/bitmaps/img-src/mask_topmenu_gps_18.svg
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/mask_topmenu_usb.svg b/radio/src/bitmaps/img-src/mask_topmenu_usb.svg
deleted file mode 100644
index 10808762b..000000000
--- a/radio/src/bitmaps/img-src/mask_topmenu_usb.svg
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/mask_txbat.svg b/radio/src/bitmaps/img-src/mask_txbat.svg
deleted file mode 100644
index 04484d89d..000000000
--- a/radio/src/bitmaps/img-src/mask_txbat.svg
+++ /dev/null
@@ -1,75 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/mask_txbat_charging.svg b/radio/src/bitmaps/img-src/mask_txbat_charging.svg
deleted file mode 100644
index 4c6e20926..000000000
--- a/radio/src/bitmaps/img-src/mask_txbat_charging.svg
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/mask_ui_bg_tile_top_left.svg b/radio/src/bitmaps/img-src/mask_ui_bg_tile_top_left.svg
new file mode 100644
index 000000000..e35aee7ca
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_ui_bg_tile_top_left.svg
@@ -0,0 +1,11 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_ui_bg_tile_top_right.svg b/radio/src/bitmaps/img-src/mask_ui_bg_tile_top_right.svg
new file mode 100644
index 000000000..1459a5fff
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_ui_bg_tile_top_right.svg
@@ -0,0 +1,11 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_ui_bg_topbar_left.svg b/radio/src/bitmaps/img-src/mask_ui_bg_topbar_left.svg
new file mode 100644
index 000000000..36befb07a
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_ui_bg_topbar_left.svg
@@ -0,0 +1,11 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_ui_bg_topbar_right.svg b/radio/src/bitmaps/img-src/mask_ui_bg_topbar_right.svg
new file mode 100644
index 000000000..362a28ac0
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_ui_bg_topbar_right.svg
@@ -0,0 +1,11 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_ui_btn_close.svg b/radio/src/bitmaps/img-src/mask_ui_btn_close.svg
new file mode 100644
index 000000000..b481194e7
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_ui_btn_close.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_ui_btn_grid_large.svg b/radio/src/bitmaps/img-src/mask_ui_btn_grid_large.svg
new file mode 100644
index 000000000..a532d9ec1
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_ui_btn_grid_large.svg
@@ -0,0 +1,9 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_ui_btn_grid_small.svg b/radio/src/bitmaps/img-src/mask_ui_btn_grid_small.svg
new file mode 100644
index 000000000..0918dc0d5
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_ui_btn_grid_small.svg
@@ -0,0 +1,14 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_ui_btn_list_one.svg b/radio/src/bitmaps/img-src/mask_ui_btn_list_one.svg
new file mode 100644
index 000000000..59aa972d6
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_ui_btn_list_one.svg
@@ -0,0 +1,9 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_ui_btn_list_two.svg b/radio/src/bitmaps/img-src/mask_ui_btn_list_two.svg
new file mode 100644
index 000000000..e5233eb7d
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_ui_btn_list_two.svg
@@ -0,0 +1,13 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_ui_btn_next.svg b/radio/src/bitmaps/img-src/mask_ui_btn_next.svg
new file mode 100644
index 000000000..822b69081
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_ui_btn_next.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_ui_btn_prev.svg b/radio/src/bitmaps/img-src/mask_ui_btn_prev.svg
new file mode 100644
index 000000000..9ec695a66
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_ui_btn_prev.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_usb_symbol.svg b/radio/src/bitmaps/img-src/mask_usb_symbol.svg
deleted file mode 100644
index e2d3f4ab2..000000000
--- a/radio/src/bitmaps/img-src/mask_usb_symbol.svg
+++ /dev/null
@@ -1,80 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/mask_widget_antenna.svg b/radio/src/bitmaps/img-src/mask_widget_antenna.svg
new file mode 100644
index 000000000..81147a487
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_widget_antenna.svg
@@ -0,0 +1,11 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_widget_gps.svg b/radio/src/bitmaps/img-src/mask_widget_gps.svg
new file mode 100644
index 000000000..214567107
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_widget_gps.svg
@@ -0,0 +1,7 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_widget_timer.svg b/radio/src/bitmaps/img-src/mask_widget_timer.svg
new file mode 100644
index 000000000..c57dc89e6
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_widget_timer.svg
@@ -0,0 +1,13 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_widget_timer_bg.svg b/radio/src/bitmaps/img-src/mask_widget_timer_bg.svg
new file mode 100644
index 000000000..1205d0d01
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_widget_timer_bg.svg
@@ -0,0 +1,11 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_widget_trim.svg b/radio/src/bitmaps/img-src/mask_widget_trim.svg
new file mode 100644
index 000000000..9186d28d0
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_widget_trim.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_widget_trim_shadow.svg b/radio/src/bitmaps/img-src/mask_widget_trim_shadow.svg
new file mode 100644
index 000000000..00e44e81c
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_widget_trim_shadow.svg
@@ -0,0 +1,15 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_widget_txbat.svg b/radio/src/bitmaps/img-src/mask_widget_txbat.svg
new file mode 100644
index 000000000..a5a5a7344
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_widget_txbat.svg
@@ -0,0 +1,7 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_widget_txbat_charging.svg b/radio/src/bitmaps/img-src/mask_widget_txbat_charging.svg
new file mode 100644
index 000000000..9a4d57ffc
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_widget_txbat_charging.svg
@@ -0,0 +1,6 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_widget_usb.svg b/radio/src/bitmaps/img-src/mask_widget_usb.svg
new file mode 100644
index 000000000..5ae1311c5
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_widget_usb.svg
@@ -0,0 +1,13 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_widget_volume0.svg b/radio/src/bitmaps/img-src/mask_widget_volume0.svg
new file mode 100644
index 000000000..96a8aaa8a
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_widget_volume0.svg
@@ -0,0 +1,15 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_widget_volume1.svg b/radio/src/bitmaps/img-src/mask_widget_volume1.svg
new file mode 100644
index 000000000..0d5ae0bdc
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_widget_volume1.svg
@@ -0,0 +1,9 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_widget_volume2.svg b/radio/src/bitmaps/img-src/mask_widget_volume2.svg
new file mode 100644
index 000000000..a866189ae
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_widget_volume2.svg
@@ -0,0 +1,10 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_widget_volume3.svg b/radio/src/bitmaps/img-src/mask_widget_volume3.svg
new file mode 100644
index 000000000..979068a2e
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_widget_volume3.svg
@@ -0,0 +1,23 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_widget_volume4.svg b/radio/src/bitmaps/img-src/mask_widget_volume4.svg
new file mode 100644
index 000000000..7cdc21bb8
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_widget_volume4.svg
@@ -0,0 +1,12 @@
+
diff --git a/radio/src/bitmaps/img-src/mask_widget_volume_scale.svg b/radio/src/bitmaps/img-src/mask_widget_volume_scale.svg
new file mode 100644
index 000000000..40fa90b95
--- /dev/null
+++ b/radio/src/bitmaps/img-src/mask_widget_volume_scale.svg
@@ -0,0 +1,8 @@
+
diff --git a/radio/src/bitmaps/img-src/splash_logo.svg b/radio/src/bitmaps/img-src/splash_logo.svg
deleted file mode 100644
index 081da9d35..000000000
--- a/radio/src/bitmaps/img-src/splash_logo.svg
+++ /dev/null
@@ -1,551 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/volume/mask_volume_0.svg b/radio/src/bitmaps/img-src/volume/mask_volume_0.svg
deleted file mode 100644
index 5ba267f3e..000000000
--- a/radio/src/bitmaps/img-src/volume/mask_volume_0.svg
+++ /dev/null
@@ -1,100 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/volume/mask_volume_1.svg b/radio/src/bitmaps/img-src/volume/mask_volume_1.svg
deleted file mode 100644
index f6fa8c18c..000000000
--- a/radio/src/bitmaps/img-src/volume/mask_volume_1.svg
+++ /dev/null
@@ -1,84 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/volume/mask_volume_2.svg b/radio/src/bitmaps/img-src/volume/mask_volume_2.svg
deleted file mode 100644
index 53dd84dec..000000000
--- a/radio/src/bitmaps/img-src/volume/mask_volume_2.svg
+++ /dev/null
@@ -1,97 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/volume/mask_volume_3.svg b/radio/src/bitmaps/img-src/volume/mask_volume_3.svg
deleted file mode 100644
index 8c6198b3f..000000000
--- a/radio/src/bitmaps/img-src/volume/mask_volume_3.svg
+++ /dev/null
@@ -1,110 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/volume/mask_volume_4.svg b/radio/src/bitmaps/img-src/volume/mask_volume_4.svg
deleted file mode 100644
index cabe0daf5..000000000
--- a/radio/src/bitmaps/img-src/volume/mask_volume_4.svg
+++ /dev/null
@@ -1,123 +0,0 @@
-
-
-
-
diff --git a/radio/src/bitmaps/img-src/volume/mask_volume_scale.svg b/radio/src/bitmaps/img-src/volume/mask_volume_scale.svg
deleted file mode 100644
index 604cc4c81..000000000
--- a/radio/src/bitmaps/img-src/volume/mask_volume_scale.svg
+++ /dev/null
@@ -1,103 +0,0 @@
-
-
-
-
diff --git a/radio/src/gui/colorlcd/bitmaps.cpp b/radio/src/gui/colorlcd/bitmaps.cpp
index 3a30cdcdc..c03525bf7 100644
--- a/radio/src/gui/colorlcd/bitmaps.cpp
+++ b/radio/src/gui/colorlcd/bitmaps.cpp
@@ -69,316 +69,329 @@ MaskBitmap* _decompressed_mask(const uint8_t* lz4_compressed)
return raw;
}
+// gfx for quick menu
static const uint8_t mask_menu_favs[] __FLASH = {
-#include "mask_menu_favs.lbm"
+#include "mask_icon_menu_favs.lbm"
};
-static const uint8_t mask_menu_model[] __FLASH = {
-#include "mask_menu_model.lbm"
+static const uint8_t mask_menu_manage_models[] __FLASH = {
+#include "mask_icon_menu_manage_models.lbm" //TODO: someone may want to make proper icon
};
-static const uint8_t mask_menu_notes[] __FLASH = {
-#include "mask_menu_notes.lbm"
+static const uint8_t mask_menu_model_setup[] __FLASH = {
+#include "mask_icon_menu_model_setup.lbm"
};
-static const uint8_t mask_menu_radio[] __FLASH = {
-#include "mask_menu_radio.lbm"
+static const uint8_t mask_menu_radio_setup[] __FLASH = {
+#include "mask_icon_menu_radio_setup.lbm"
};
-static const uint8_t mask_menu_stats[] __FLASH = {
-#include "mask_menu_stats.lbm"
+static const uint8_t mask_menu_ui_setup[] __FLASH = {
+#include "mask_icon_menu_ui_setup.lbm"
};
-static const uint8_t mask_menu_theme[] __FLASH = {
-#include "mask_menu_theme.lbm"
+static const uint8_t mask_menu_tools[] __FLASH = {
+#include "mask_icon_menu_tools.lbm"
};
+static const uint8_t mask_menu_logo[] __FLASH = {
+#include "mask_menu_edgetx.lbm"
+};
+
+// gfx for settings screens
+
+static const uint8_t mask_edgetx[] __FLASH = {
+#include "mask_icon_edgetx.lbm"
+};
+
+
+// gfx model setup from model group
+
static const uint8_t mask_model_curves[] __FLASH = {
-#include "mask_model_curves.lbm"
+#include "mask_icon_model_curves.lbm"
};
static const uint8_t mask_model_flight_modes[] __FLASH = {
-#include "mask_model_flight_modes.lbm"
+#include "mask_icon_model_flight_modes.lbm"
+};
+static const uint8_t mask_model_general[] __FLASH = {
+#include "mask_icon_model_general.lbm"
};
static const uint8_t mask_model_gvars[] __FLASH = {
-#include "mask_model_gvars.lbm"
+#include "mask_icon_model_gvars.lbm"
};
static const uint8_t mask_model_heli[] __FLASH = {
-#include "mask_model_heli.lbm"
+#include "mask_icon_model_heli.lbm"
};
static const uint8_t mask_model_inputs[] __FLASH = {
-#include "mask_model_inputs.lbm"
+#include "mask_icon_model_inputs.lbm"
};
static const uint8_t mask_model_logical_switches[] __FLASH = {
-#include "mask_model_logical_switches.lbm"
-};
-static const uint8_t mask_model_lua_scripts[] __FLASH = {
-#include "mask_model_lua_scripts.lbm"
+#include "mask_icon_model_logical_switches.lbm"
};
static const uint8_t mask_model_mixer[] __FLASH = {
-#include "mask_model_mixer.lbm"
+#include "mask_icon_model_mixer.lbm"
+};
+static const uint8_t mask_model_mixer_scripts[] __FLASH = {
+#include "mask_icon_model_mixer_scripts.lbm"
+};
+static const uint8_t mask_model_notes[] __FLASH = {
+#include "mask_icon_model_notes.lbm"
};
static const uint8_t mask_model_outputs[] __FLASH = {
-#include "mask_model_outputs.lbm"
-};
-static const uint8_t mask_model_setup[] __FLASH = {
-#include "mask_model_setup.lbm"
+#include "mask_icon_model_outputs.lbm"
};
static const uint8_t mask_model_special_functions[] __FLASH = {
-#include "mask_model_special_functions.lbm"
+#include "mask_icon_model_special_functions.lbm"
};
static const uint8_t mask_model_telemetry[] __FLASH = {
-#include "mask_model_telemetry.lbm"
+#include "mask_icon_model_telemetry.lbm"
+};
+static const uint8_t mask_model_timers[] __FLASH = {
+#include "mask_icon_model_timers.lbm"
};
static const uint8_t mask_model_usb[] __FLASH = {
-#include "mask_model_usb.lbm"
+#include "mask_icon_model_usb.lbm"
};
-static const uint8_t mask_menu_model_select[] __FLASH = {
-#include "mask_menu_model_select.lbm" //TODO: someone may want to make proper icon
+
+// gfx for radio setup group
+
+static const uint8_t mask_radio_about[] __FLASH = {
+#include "mask_icon_radio_about.lbm"
};
-static const uint8_t mask_monitor[] __FLASH = {
-#include "mask_monitor.lbm"
-};
-static const uint8_t mask_monitor_logsw[] __FLASH = {
-#include "mask_monitor_logsw.lbm"
-};
-static const uint8_t mask_edgetx[] __FLASH = {
-#include "mask_edgetx.lbm"
+static const uint8_t mask_radio_analogs[] __FLASH = {
+#include "mask_icon_radio_analogs.lbm"
};
static const uint8_t mask_radio_calibration[] __FLASH = {
-#include "mask_radio_calibration.lbm"
+#include "mask_icon_radio_calibration.lbm"
+};
+static const uint8_t mask_radio_general[] __FLASH = {
+#include "mask_icon_radio_general.lbm"
};
static const uint8_t mask_radio_global_functions[] __FLASH = {
-#include "mask_radio_global_functions.lbm"
+#include "mask_icon_radio_global_functions.lbm"
};
static const uint8_t mask_radio_hardware[] __FLASH = {
-#include "mask_radio_hardware.lbm"
-};
-static const uint8_t mask_radio_sd_browser[] __FLASH = {
-#include "mask_radio_sd_browser.lbm"
-};
-static const uint8_t mask_radio_setup[] __FLASH = {
-#include "mask_radio_setup.lbm"
-};
-static const uint8_t mask_radio_tools[] __FLASH = {
-#include "mask_radio_tools.lbm"
-};
-static const uint8_t mask_radio_edit_theme[] __FLASH = {
-#include "mask_radio_edit_theme.lbm"
+#include "mask_icon_radio_hardware.lbm"
};
static const uint8_t mask_radio_trainer[] __FLASH = {
-#include "mask_radio_trainer.lbm"
-};
-static const uint8_t mask_radio_version[] __FLASH = {
-#include "mask_radio_version.lbm"
-};
-static const uint8_t mask_stats_analogs[] __FLASH = {
-#include "mask_stats_analogs.lbm"
-};
-static const uint8_t mask_stats_debug[] __FLASH = {
-#include "mask_stats_debug.lbm"
-};
-static const uint8_t mask_stats_timers[] __FLASH = {
-#include "mask_stats_timers.lbm"
-};
-static const uint8_t mask_theme_add_view[] __FLASH = {
-#include "mask_theme_add_view.lbm"
-};
-static const uint8_t mask_theme_setup[] __FLASH = {
-#include "mask_theme_setup.lbm"
-};
-static const uint8_t mask_theme_view1[] __FLASH = {
-#include "mask_theme_view1.lbm"
-};
-static const uint8_t mask_theme_view2[] __FLASH = {
-#include "mask_theme_view2.lbm"
-};
-static const uint8_t mask_theme_view3[] __FLASH = {
-#include "mask_theme_view3.lbm"
-};
-static const uint8_t mask_theme_view4[] __FLASH = {
-#include "mask_theme_view4.lbm"
-};
-static const uint8_t mask_theme_view5[] __FLASH = {
-#include "mask_theme_view5.lbm"
-};
-static const uint8_t mask_theme_view6[] __FLASH = {
-#include "mask_theme_view6.lbm"
-};
-static const uint8_t mask_theme_view7[] __FLASH = {
-#include "mask_theme_view7.lbm"
-};
-static const uint8_t mask_theme_view8[] __FLASH = {
-#include "mask_theme_view8.lbm"
-};
-static const uint8_t mask_theme_view9[] __FLASH = {
-#include "mask_theme_view9.lbm"
-};
-static const uint8_t mask_theme_view10[] __FLASH = {
-#include "mask_theme_view10.lbm"
+#include "mask_icon_radio_trainer.lbm"
};
-static const uint8_t mask_chan_locked[] __FLASH = {
-#include "mask_monitor_lockch.lbm"
+// gfx for tools group
+
+static const uint8_t mask_tools_apps[] __FLASH = {
+#include "mask_icon_tools_apps.lbm"
};
-static const uint8_t mask_chan_inverted[] __FLASH = {
-#include "mask_monitor_inver.lbm"
+static const uint8_t mask_tools_debug[] __FLASH = {
+#include "mask_icon_tools_debug.lbm"
+};
+static const uint8_t mask_tools_monitor_ch[] __FLASH = {
+#include "mask_icon_tools_monitor_ch.lbm"
+};
+static const uint8_t mask_tools_monitor_ls[] __FLASH = {
+#include "mask_icon_tools_monitor_ls.lbm"
+};
+static const uint8_t mask_tools_reset[] __FLASH = {
+#include "mask_icon_tools_reset.lbm"
+};
+static const uint8_t mask_tools_stats[] __FLASH = {
+#include "mask_icon_tools_stats.lbm"
+};
+static const uint8_t mask_tools_storage[] __FLASH = {
+#include "mask_icon_tools_storage.lbm"
};
-static const uint8_t mask_shutdown_circle0[] __FLASH = {
-#include "mask_shutdown_circle0.lbm"
+// gfx for ui setup group
+
+static const uint8_t mask_ui_view_add[] __FLASH = {
+#include "mask_icon_ui_view_add.lbm"
};
-static const uint8_t mask_shutdown_circle1[] __FLASH = {
-#include "mask_shutdown_circle1.lbm"
+static const uint8_t mask_ui_view1[] __FLASH = {
+#include "mask_icon_ui_view1.lbm"
};
-static const uint8_t mask_shutdown_circle2[] __FLASH = {
-#include "mask_shutdown_circle2.lbm"
+static const uint8_t mask_ui_view2[] __FLASH = {
+#include "mask_icon_ui_view2.lbm"
};
-static const uint8_t mask_shutdown_circle3[] __FLASH = {
-#include "mask_shutdown_circle3.lbm"
+static const uint8_t mask_ui_view3[] __FLASH = {
+#include "mask_icon_ui_view3.lbm"
+};
+static const uint8_t mask_ui_view4[] __FLASH = {
+#include "mask_icon_ui_view4.lbm"
+};
+static const uint8_t mask_ui_view5[] __FLASH = {
+#include "mask_icon_ui_view5.lbm"
+};
+static const uint8_t mask_ui_view6[] __FLASH = {
+#include "mask_icon_ui_view6.lbm"
+};
+static const uint8_t mask_ui_view7[] __FLASH = {
+#include "mask_icon_ui_view7.lbm"
+};
+static const uint8_t mask_ui_view8[] __FLASH = {
+#include "mask_icon_ui_view8.lbm"
+};
+static const uint8_t mask_ui_view9[] __FLASH = {
+#include "mask_icon_ui_view9.lbm"
+};
+static const uint8_t mask_ui_view10[] __FLASH = {
+#include "mask_icon_ui_view10.lbm"
+};
+static const uint8_t mask_ui_themes[] __FLASH = {
+#include "mask_icon_ui_themes.lbm"
+};
+static const uint8_t mask_ui_topbar_setup[] __FLASH = {
+#include "mask_icon_ui_topbar_setup.lbm"
};
-static const uint8_t mask_shutdown[] __FLASH = {
-#include "mask_shutdown.lbm"
+// gfx used in lines
+
+static const uint8_t mask_inline_add[] __FLASH = {
+#include "mask_inline_add.lbm"
+};
+static const uint8_t mask_inline_curve[] __FLASH = {
+#include "mask_inline_curve.lbm"
+};
+static const uint8_t mask_inline_dot[] __FLASH = {
+#include "mask_inline_dot.lbm"
+};
+static const uint8_t mask_inline_fm[] __FLASH = {
+#include "mask_inline_fm.lbm"
+};
+static const uint8_t mask_inline_inverted[] __FLASH = {
+#include "mask_inline_inverted.lbm"
+};
+static const uint8_t mask_inline_locked[] __FLASH = {
+#include "mask_inline_locked.lbm"
+};
+static const uint8_t mask_inline_multiply[] __FLASH = {
+#include "mask_inline_multiply.lbm"
+};
+static const uint8_t mask_inline_replace[] __FLASH = {
+#include "mask_inline_replace.lbm"
};
+// gfx for info screens
+
+static const uint8_t mask_info_busy[] __FLASH = {
+#include "mask_info_busy.lbm"
+};
+static const uint8_t mask_info_error[] __FLASH = {
+#include "mask_info_error.lbm"
+};
+static const uint8_t mask_info_shutdown[] __FLASH = {
+#include "mask_info_shutdown.lbm"
+};
+static const uint8_t mask_info_shutdown_circle0[] __FLASH = {
+#include "mask_info_shutdown_circle0.lbm"
+};
+static const uint8_t mask_info_shutdown_circle1[] __FLASH = {
+#include "mask_info_shutdown_circle1.lbm"
+};
+static const uint8_t mask_info_shutdown_circle2[] __FLASH = {
+#include "mask_info_shutdown_circle2.lbm"
+};
+static const uint8_t mask_info_shutdown_circle3[] __FLASH = {
+#include "mask_info_shutdown_circle3.lbm"
+};
+static const uint8_t mask_info_usb_plugged[] __FLASH = {
+#include "mask_info_usb_plugged.lbm"
+};
+
+
+// gfx for ui elements
+
+const uint8_t mask_round_title_left[]{
+#include "mask_ui_bg_tile_top_left.lbm"
+};
+const uint8_t mask_round_title_right[]{
+#include "mask_ui_bg_tile_top_right.lbm"
+};
const uint8_t mask_topleft_bg[] __FLASH = {
-#include "mask_topleft.lbm"
+#include "mask_ui_bg_topbar_left.lbm"
};
const uint8_t mask_topright_bg[] __FLASH = {
-#include "mask_topright.lbm"
+#include "mask_ui_bg_topbar_right.lbm"
+};
+static const uint8_t mask_btn_close[] __FLASH = {
+#include "mask_ui_btn_close.lbm"
+};
+static const uint8_t mask_btn_next[] __FLASH = {
+#include "mask_ui_btn_next.lbm"
+};
+static const uint8_t mask_btn_prev[] __FLASH = {
+#include "mask_ui_btn_prev.lbm"
+};
+static const uint8_t mask_btn_grid_large[] __FLASH = {
+#include "mask_ui_btn_grid_large.lbm"
+};
+static const uint8_t mask_btn_grid_small[] __FLASH = {
+#include "mask_ui_btn_grid_small.lbm"
+};
+static const uint8_t mask_btn_list_one[] __FLASH = {
+#include "mask_ui_btn_list_one.lbm"
+};
+static const uint8_t mask_btn_list_two[] __FLASH = {
+#include "mask_ui_btn_list_two.lbm"
};
-const uint8_t mask_currentmenu_bg[] __FLASH = {
-#include "mask_currentmenu_bg.lbm"
-};
-const uint8_t mask_currentmenu_shadow[] __FLASH = {
-#include "mask_currentmenu_shadow.lbm"
-};
-const uint8_t mask_currentmenu_dot[] __FLASH = {
-#include "mask_currentmenu_dot.lbm"
-};
+// gfx for widgets
-static const uint8_t mask_dot[] __FLASH = {
-#include "mask_dot.lbm"
-};
-
-static const uint8_t mask_topmenu_usb[] __FLASH = {
-#include "mask_topmenu_usb.lbm"
-};
-static const uint8_t mask_topmenu_vol0[] __FLASH = {
-#include "mask_volume_0.lbm"
-};
-static const uint8_t mask_topmenu_vol1[] __FLASH = {
-#include "mask_volume_1.lbm"
-};
-static const uint8_t mask_topmenu_vol2[] __FLASH = {
-#include "mask_volume_2.lbm"
-};
-static const uint8_t mask_topmenu_vol3[] __FLASH = {
-#include "mask_volume_3.lbm"
-};
-static const uint8_t mask_topmenu_vol4[] __FLASH = {
-#include "mask_volume_4.lbm"
-};
-static const uint8_t mask_topmenu_vol_scale[] __FLASH = {
-#include "mask_volume_scale.lbm"
-};
-static const uint8_t mask_topmenu_txbatt[] __FLASH = {
-#include "mask_txbat.lbm"
-};
-#if defined(USB_CHARGER)
-static const uint8_t mask_topmenu_txbatt_charging[] __FLASH = {
-#include "mask_txbat_charging.lbm"
-};
-#endif
#if defined(INTERNAL_MODULE_PXX1) && defined(EXTERNAL_ANTENNA)
static const uint8_t mask_topmenu_antenna[] __FLASH = {
-#include "mask_antenna.lbm"
+#include "mask_widget_antenna.lbm"
};
#endif
#if defined(INTERNAL_GPS)
static const uint8_t mask_topmenu_gps[] __FLASH = {
-#include "mask_topmenu_gps_18.lbm"
+#include "mask_widget_gps.lbm"
};
#endif
-
-static const uint8_t mask_error[] __FLASH = {
-#include "mask_error.lbm"
+static const uint8_t mask_widget_timer[] __FLASH = {
+#include "mask_widget_timer.lbm"
};
-static const uint8_t mask_busy[] __FLASH = {
-#include "mask_busy.lbm"
+static const uint8_t mask_widget_timer_bg[] __FLASH = {
+#include "mask_widget_timer_bg.lbm"
+};
+static const uint8_t mask_widget_trim[] __FLASH = {
+#include "mask_widget_trim.lbm"
+};
+static const uint8_t mask_widget_trim_shadow[] __FLASH = {
+#include "mask_widget_trim_shadow.lbm"
+};
+static const uint8_t mask_widget_txbatt[] __FLASH = {
+#include "mask_widget_txbat.lbm"
+};
+#if defined(USB_CHARGER)
+static const uint8_t mask_widget_txbatt_charging[] __FLASH = {
+#include "mask_widget_txbat_charging.lbm"
+};
+#endif
+static const uint8_t mask_widget_usb[] __FLASH = {
+#include "mask_widget_usb.lbm"
+};
+static const uint8_t mask_widget_volume0[] __FLASH = {
+#include "mask_widget_volume0.lbm"
+};
+static const uint8_t mask_widget_volume1[] __FLASH = {
+#include "mask_widget_volume1.lbm"
+};
+static const uint8_t mask_widget_volume2[] __FLASH = {
+#include "mask_widget_volume2.lbm"
+};
+static const uint8_t mask_widget_volume3[] __FLASH = {
+#include "mask_widget_volume3.lbm"
+};
+static const uint8_t mask_widget_volume4[] __FLASH = {
+#include "mask_widget_volume4.lbm"
+};
+static const uint8_t mask_widget_volume_scale[] __FLASH = {
+#include "mask_widget_volume_scale.lbm"
};
-static const uint8_t mask_usb_plugged[] __FLASH = {
-#include "mask_usb_symbol.lbm"
-};
-
-static const uint8_t mask_timer[] __FLASH = {
-#include "mask_timer.lbm"
-};
-static const uint8_t mask_timer_bg[] __FLASH = {
-#include "mask_timer_bg.lbm"
-};
-
-static const uint8_t mask_textline_curve[] __FLASH = {
-#include "mask_textline_curve.lbm"
-};
-static const uint8_t mask_textline_fm[] __FLASH = {
-#include "mask_textline_fm.lbm"
-};
-
-static const uint8_t mask_mplex_add[] __FLASH = {
-#include "mask_mplex_add.lbm"
-};
-static const uint8_t mask_mplex_multi[] __FLASH = {
-#include "mask_mplex_multi.lbm"
-};
-static const uint8_t mask_mplex_replace[] __FLASH = {
-#include "mask_mplex_replace.lbm"
-};
-
-const uint8_t mask_round_title_left[] __FLASH = {
-#include "mask_round_title_left.lbm"
-};
-const uint8_t mask_round_title_right[] __FLASH = {
-#include "mask_round_title_right.lbm"
-};
-
-static const uint8_t mask_model_grid_large[] __FLASH = {
-#include "mask_model_grid_large.lbm"
-};
-static const uint8_t mask_model_grid_small[] __FLASH = {
-#include "mask_model_grid_small.lbm"
-};
-static const uint8_t mask_model_list_one[] __FLASH = {
-#include "mask_model_list_one.lbm"
-};
-static const uint8_t mask_model_list_two[] __FLASH = {
-#include "mask_model_list_two.lbm"
-};
-
-static const uint8_t mask_trim[] __FLASH = {
-#include "mask_trim.lbm"
-};
-static const uint8_t mask_trim_shadow[] __FLASH = {
-#include "mask_trim_shadow.lbm"
-};
-
-static const uint8_t mask_tools_apps[] __FLASH = {
-#include "mask_tools_apps.lbm"
-};
-static const uint8_t mask_tools_reset[] __FLASH = {
-#include "mask_tools_reset.lbm"
-};
-
-static const uint8_t mask_btn_close[] __FLASH = {
-#include "mask_btn_close.lbm"
-};
-static const uint8_t mask_btn_next[] __FLASH = {
-#include "mask_btn_next.lbm"
-};
-static const uint8_t mask_btn_prev[] __FLASH = {
-#include "mask_btn_prev.lbm"
-};
-
-static const uint8_t mask_top_logo[] __FLASH = {
-#include "mask_top_logo.lbm"
-};
+// const uint8_t mask_currentmenu_bg[] __FLASH = {
+// #include "mask_currentmenu_bg.lbm"
+// };
+// const uint8_t mask_currentmenu_shadow[] __FLASH = {
+// #include "mask_currentmenu_shadow.lbm"
+// };
+// const uint8_t mask_currentmenu_dot[] __FLASH = {
+// #include "mask_currentmenu_dot.lbm"
+// };
struct _BuiltinIcon {
const uint8_t* lz4_compressed_bitmap;
@@ -390,82 +403,82 @@ struct _BuiltinIcon {
}
// Note: Order must match EdgeTxIcon enum
-static const _BuiltinIcon _builtinIcons[EDGETX_ICONS_COUNT] __FLASH = {
+static const _BuiltinIcon _builtinIcons[EDGETX_ICONS_COUNT] = {
BI(ICON_EDGETX, mask_edgetx),
BI(ICON_QM_FAVORITES, mask_menu_favs),
- BI(ICON_RADIO, mask_menu_radio),
- BI(ICON_RADIO_SETUP, mask_radio_setup),
- BI(ICON_RADIO_SD_MANAGER, mask_radio_sd_browser),
- BI(ICON_RADIO_TOOLS, mask_radio_tools),
+ BI(ICON_RADIO, mask_menu_radio_setup),
+ BI(ICON_RADIO_SETUP, mask_radio_general),
+ BI(ICON_RADIO_SD_MANAGER, mask_tools_storage),
+ BI(ICON_RADIO_TOOLS, mask_menu_tools),
BI(ICON_RADIO_GLOBAL_FUNCTIONS, mask_radio_global_functions),
BI(ICON_RADIO_TRAINER, mask_radio_trainer),
BI(ICON_RADIO_HARDWARE, mask_radio_hardware),
BI(ICON_RADIO_CALIBRATION, mask_radio_calibration),
- BI(ICON_RADIO_EDIT_THEME, mask_radio_edit_theme),
- BI(ICON_RADIO_VERSION, mask_radio_version),
- BI(ICON_MODEL, mask_menu_model),
- BI(ICON_MODEL_SETUP, mask_model_setup),
+ BI(ICON_RADIO_EDIT_THEME, mask_ui_themes),
+ BI(ICON_RADIO_VERSION, mask_radio_about),
+ BI(ICON_MODEL, mask_menu_model_setup),
+ BI(ICON_MODEL_SETUP, mask_model_general),
BI(ICON_MODEL_HELI, mask_model_heli),
BI(ICON_MODEL_FLIGHT_MODES, mask_model_flight_modes),
BI(ICON_MODEL_INPUTS, mask_model_inputs),
BI(ICON_MODEL_MIXER, mask_model_mixer),
- BI(ICON_MODEL_NOTES, mask_menu_notes),
+ BI(ICON_MODEL_NOTES, mask_model_notes),
BI(ICON_MODEL_OUTPUTS, mask_model_outputs),
BI(ICON_MODEL_CURVES, mask_model_curves),
BI(ICON_MODEL_GVARS, mask_model_gvars),
BI(ICON_MODEL_LOGICAL_SWITCHES, mask_model_logical_switches),
BI(ICON_MODEL_SPECIAL_FUNCTIONS, mask_model_special_functions),
- BI(ICON_MODEL_LUA_SCRIPTS, mask_model_lua_scripts),
+ BI(ICON_MODEL_LUA_SCRIPTS, mask_model_mixer_scripts),
BI(ICON_MODEL_TELEMETRY, mask_model_telemetry),
BI(ICON_MODEL_USB, mask_model_usb),
- BI(ICON_MODEL_SELECT, mask_menu_model_select),
- BI(ICON_THEME, mask_menu_theme),
- BI(ICON_THEME_SETUP, mask_theme_setup),
- BI(ICON_THEME_VIEW1, mask_theme_view1),
- BI(ICON_THEME_VIEW2, mask_theme_view2),
- BI(ICON_THEME_VIEW3, mask_theme_view3),
- BI(ICON_THEME_VIEW4, mask_theme_view4),
- BI(ICON_THEME_VIEW5, mask_theme_view5),
- BI(ICON_THEME_VIEW6, mask_theme_view6),
- BI(ICON_THEME_VIEW7, mask_theme_view7),
- BI(ICON_THEME_VIEW8, mask_theme_view8),
- BI(ICON_THEME_VIEW9, mask_theme_view9),
- BI(ICON_THEME_VIEW10, mask_theme_view10),
- BI(ICON_THEME_ADD_VIEW, mask_theme_add_view),
- BI(ICON_STATS, mask_menu_stats),
- BI(ICON_STATS_TIMERS, mask_stats_timers),
- BI(ICON_STATS_ANALOGS, mask_stats_analogs),
- BI(ICON_STATS_DEBUG, mask_stats_debug),
- BI(ICON_MONITOR, mask_monitor),
- BI(ICON_MONITOR_LOGICAL_SWITCHES, mask_monitor_logsw),
+ BI(ICON_MODEL_SELECT, mask_menu_manage_models),
+ BI(ICON_THEME, mask_menu_ui_setup),
+ BI(ICON_THEME_SETUP, mask_ui_topbar_setup),
+ BI(ICON_THEME_VIEW1, mask_ui_view1),
+ BI(ICON_THEME_VIEW2, mask_ui_view2),
+ BI(ICON_THEME_VIEW3, mask_ui_view3),
+ BI(ICON_THEME_VIEW4, mask_ui_view4),
+ BI(ICON_THEME_VIEW5, mask_ui_view5),
+ BI(ICON_THEME_VIEW6, mask_ui_view6),
+ BI(ICON_THEME_VIEW7, mask_ui_view7),
+ BI(ICON_THEME_VIEW8, mask_ui_view8),
+ BI(ICON_THEME_VIEW9, mask_ui_view9),
+ BI(ICON_THEME_VIEW10, mask_ui_view10),
+ BI(ICON_THEME_ADD_VIEW, mask_ui_view_add),
+ BI(ICON_STATS, mask_tools_stats),
+ BI(ICON_STATS_TIMERS, mask_model_timers),
+ BI(ICON_STATS_ANALOGS, mask_radio_analogs),
+ BI(ICON_STATS_DEBUG, mask_tools_debug),
+ BI(ICON_MONITOR, mask_tools_monitor_ch),
+ BI(ICON_MONITOR_LOGICAL_SWITCHES, mask_tools_monitor_ls),
- BI(ICON_CHAN_MONITOR_LOCKED, mask_chan_locked),
- BI(ICON_CHAN_MONITOR_INVERTED, mask_chan_inverted),
+ BI(ICON_CHAN_MONITOR_LOCKED, mask_inline_locked),
+ BI(ICON_CHAN_MONITOR_INVERTED, mask_inline_inverted),
- BI(ICON_SHUTDOWN_CIRCLE0, mask_shutdown_circle0),
- BI(ICON_SHUTDOWN_CIRCLE1, mask_shutdown_circle1),
- BI(ICON_SHUTDOWN_CIRCLE2, mask_shutdown_circle2),
- BI(ICON_SHUTDOWN_CIRCLE3, mask_shutdown_circle3),
- BI(ICON_SHUTDOWN, mask_shutdown),
+ BI(ICON_SHUTDOWN_CIRCLE0, mask_info_shutdown_circle0),
+ BI(ICON_SHUTDOWN_CIRCLE1, mask_info_shutdown_circle1),
+ BI(ICON_SHUTDOWN_CIRCLE2, mask_info_shutdown_circle2),
+ BI(ICON_SHUTDOWN_CIRCLE3, mask_info_shutdown_circle3),
+ BI(ICON_SHUTDOWN, mask_info_shutdown),
BI(ICON_TOPLEFT_BG, mask_topleft_bg),
BI(ICON_TOPRIGHT_BG, mask_topright_bg),
- BI(ICON_CURRENTMENU_BG, mask_currentmenu_bg),
- BI(ICON_CURRENTMENU_SHADOW, mask_currentmenu_shadow),
- BI(ICON_CURRENTMENU_DOT, mask_currentmenu_dot),
+ // BI(ICON_CURRENTMENU_BG, mask_currentmenu_bg),
+ // BI(ICON_CURRENTMENU_SHADOW, mask_currentmenu_shadow),
+ // BI(ICON_CURRENTMENU_DOT, mask_currentmenu_dot),
- BI(ICON_DOT, mask_dot),
+ BI(ICON_DOT, mask_inline_dot),
- BI(ICON_TOPMENU_USB, mask_topmenu_usb),
- BI(ICON_TOPMENU_VOLUME_0, mask_topmenu_vol0),
- BI(ICON_TOPMENU_VOLUME_1, mask_topmenu_vol1),
- BI(ICON_TOPMENU_VOLUME_2, mask_topmenu_vol2),
- BI(ICON_TOPMENU_VOLUME_3, mask_topmenu_vol3),
- BI(ICON_TOPMENU_VOLUME_4, mask_topmenu_vol4),
- BI(ICON_TOPMENU_VOLUME_SCALE, mask_topmenu_vol_scale),
- BI(ICON_TOPMENU_TXBATT, mask_topmenu_txbatt),
+ BI(ICON_TOPMENU_USB, mask_widget_usb),
+ BI(ICON_TOPMENU_VOLUME_0, mask_widget_volume0),
+ BI(ICON_TOPMENU_VOLUME_1, mask_widget_volume1),
+ BI(ICON_TOPMENU_VOLUME_2, mask_widget_volume2),
+ BI(ICON_TOPMENU_VOLUME_3, mask_widget_volume3),
+ BI(ICON_TOPMENU_VOLUME_4, mask_widget_volume4),
+ BI(ICON_TOPMENU_VOLUME_SCALE, mask_widget_volume_scale),
+ BI(ICON_TOPMENU_TXBATT, mask_widget_txbatt),
#if defined(USB_CHARGER)
- BI(ICON_TOPMENU_TXBATT_CHARGE, mask_topmenu_txbatt_charging),
+ BI(ICON_TOPMENU_TXBATT_CHARGE, mask_widget_txbatt_charging),
#endif
#if defined(INTERNAL_MODULE_PXX1) && defined(EXTERNAL_ANTENNA)
BI(ICON_TOPMENU_ANTENNA, mask_topmenu_antenna),
@@ -474,30 +487,30 @@ static const _BuiltinIcon _builtinIcons[EDGETX_ICONS_COUNT] __FLASH = {
BI(ICON_TOPMENU_GPS, mask_topmenu_gps),
#endif
- BI(ICON_ERROR, mask_error),
- BI(ICON_BUSY, mask_busy),
+ BI(ICON_ERROR, mask_info_error),
+ BI(ICON_BUSY, mask_info_busy),
- BI(ICON_USB_PLUGGED, mask_usb_plugged),
+ BI(ICON_USB_PLUGGED, mask_info_usb_plugged),
- BI(ICON_TIMER_BG, mask_timer_bg),
- BI(ICON_TIMER, mask_timer),
+ BI(ICON_TIMER_BG, mask_widget_timer_bg),
+ BI(ICON_TIMER, mask_widget_timer),
- BI(ICON_TEXTLINE_CURVE, mask_textline_curve),
- BI(ICON_TEXTLINE_FM, mask_textline_fm),
+ BI(ICON_TEXTLINE_CURVE, mask_inline_curve),
+ BI(ICON_TEXTLINE_FM, mask_inline_fm),
- BI(ICON_MPLEX_ADD, mask_mplex_add),
- BI(ICON_MPLEX_MULTIPLY, mask_mplex_multi),
- BI(ICON_MPLEX_REPLACE, mask_mplex_replace),
+ BI(ICON_MPLEX_ADD, mask_inline_add),
+ BI(ICON_MPLEX_MULTIPLY, mask_inline_multiply),
+ BI(ICON_MPLEX_REPLACE, mask_inline_replace),
BI(ICON_ROUND_TITLE_LEFT, mask_round_title_left),
BI(ICON_ROUND_TITLE_RIGHT, mask_round_title_right),
- BI(ICON_MODEL_GRID_LARGE, mask_model_grid_large),
- BI(ICON_MODEL_GRID_SMALL, mask_model_grid_small),
- BI(ICON_MODEL_LIST_TWO, mask_model_list_two),
- BI(ICON_MODEL_LIST_ONE, mask_model_list_one),
+ BI(ICON_MODEL_GRID_LARGE, mask_btn_grid_large),
+ BI(ICON_MODEL_GRID_SMALL, mask_btn_grid_small),
+ BI(ICON_MODEL_LIST_TWO, mask_btn_list_two),
+ BI(ICON_MODEL_LIST_ONE, mask_btn_list_one),
- BI(ICON_TRIM, mask_trim),
- BI(ICON_TRIM_SHADOW, mask_trim_shadow),
+ BI(ICON_TRIM, mask_widget_trim),
+ BI(ICON_TRIM_SHADOW, mask_widget_trim_shadow),
BI(ICON_TOOLS_APPS, mask_tools_apps),
BI(ICON_TOOLS_RESET, mask_tools_reset),
@@ -505,7 +518,7 @@ static const _BuiltinIcon _builtinIcons[EDGETX_ICONS_COUNT] __FLASH = {
BI(ICON_BTN_CLOSE, mask_btn_close),
BI(ICON_BTN_NEXT, mask_btn_next),
BI(ICON_BTN_PREV, mask_btn_prev),
- BI(ICON_TOP_LOGO, mask_top_logo),
+ BI(ICON_TOP_LOGO, mask_menu_logo),
};
static MaskBitmap* _builtinIconsDecompressed[EDGETX_ICONS_COUNT] = {0};
diff --git a/radio/src/gui/colorlcd/bitmaps.h b/radio/src/gui/colorlcd/bitmaps.h
index a410735d9..e646484cf 100644
--- a/radio/src/gui/colorlcd/bitmaps.h
+++ b/radio/src/gui/colorlcd/bitmaps.h
@@ -83,9 +83,9 @@ enum EdgeTxIcon {
ICON_TOPLEFT_BG,
ICON_TOPRIGHT_BG,
- ICON_CURRENTMENU_BG,
- ICON_CURRENTMENU_SHADOW,
- ICON_CURRENTMENU_DOT,
+ // ICON_CURRENTMENU_BG,
+ // ICON_CURRENTMENU_SHADOW,
+ // ICON_CURRENTMENU_DOT,
ICON_DOT,
diff --git a/radio/src/gui/colorlcd/boot_menu.cpp b/radio/src/gui/colorlcd/boot_menu.cpp
index 24bdc1c30..74a9db750 100644
--- a/radio/src/gui/colorlcd/boot_menu.cpp
+++ b/radio/src/gui/colorlcd/boot_menu.cpp
@@ -227,12 +227,12 @@ LAYOUT_ORIENTATION_SCALED(VERCHK_Y, 138, 240)
LAYOUT_ORIENTATION_SCALED(VERCHK_ICN_X, 78, 22)
const uint8_t __bmp_plug_usb[] {
- #include "bmp_plug_usb.lbm"
+ #include "bmp_bootloader_plug_usb.lbm"
};
LZ4BitmapBuffer BMP_PLUG_USB(BMP_ARGB4444);
const uint8_t __bmp_usb_plugged[] {
- #include "bmp_usb_plugged.lbm"
+ #include "bmp_bootloader_usb_plugged.lbm"
};
LZ4BitmapBuffer BMP_USB_PLUGGED(BMP_ARGB4444);
diff --git a/radio/src/gui/colorlcd/radio/radio_calibration.cpp b/radio/src/gui/colorlcd/radio/radio_calibration.cpp
index 5d2daf3b1..b7db72eef 100644
--- a/radio/src/gui/colorlcd/radio/radio_calibration.cpp
+++ b/radio/src/gui/colorlcd/radio/radio_calibration.cpp
@@ -32,10 +32,10 @@
uint8_t menuCalibrationState;
static const uint8_t stick_pointer[] __FLASH = {
-#include "alpha_stick_pointer.lbm"
+#include "bmp_radio_stick_pointer.lbm"
};
static const uint8_t stick_background[] __FLASH = {
-#include "alpha_stick_background.lbm"
+#include "bmp_radio_stick_background.lbm"
};
class StickCalibrationWindow : public Window
diff --git a/radio/src/gui/colorlcd/startup_shutdown.cpp b/radio/src/gui/colorlcd/startup_shutdown.cpp
index ac48fc5af..df1cf7791 100644
--- a/radio/src/gui/colorlcd/startup_shutdown.cpp
+++ b/radio/src/gui/colorlcd/startup_shutdown.cpp
@@ -45,7 +45,7 @@ const std::string git_str = "(" GIT_STR ")";
#endif
const uint8_t __bmp_splash_logo[] __FLASH = {
-#include "splash_logo.lbm"
+#include "bmp_logo_edgetx_splash.lbm"
};
static Window* splashScreen = nullptr;
diff --git a/tools/convert-gfx-list.csv b/tools/convert-gfx-list.csv
new file mode 100644
index 000000000..14b4fdee8
--- /dev/null
+++ b/tools/convert-gfx-list.csv
@@ -0,0 +1,99 @@
+file,width,height,modified
+bmp_bootloader_plug_usb,111,59,2026-01-13 11:36:16
+bmp_bootloader_usb_plugged,52,54,2026-01-13 11:36:16
+bmp_logo_edgetx_splash,271,257,2026-01-13 11:36:16
+bmp_radio_stick_background,90,90,2026-01-13 12:46:22
+bmp_radio_stick_pointer,20,20,2026-01-13 11:36:16
+mask_icon_edgetx,30,30,2026-01-13 11:36:16
+mask_icon_menu_favs,30,30,2026-01-13 11:36:16
+mask_icon_menu_manage_models,30,30,2026-01-13 11:36:16
+mask_icon_menu_model_setup,30,30,2026-01-13 11:36:16
+mask_icon_menu_radio_setup,30,30,2026-01-13 11:36:16
+mask_icon_menu_tools,30,30,2026-01-13 11:36:16
+mask_icon_menu_ui_setup,30,30,2026-01-13 11:36:16
+mask_icon_model_curves,30,30,2026-01-13 11:36:16
+mask_icon_model_flight_modes,30,30,2026-01-13 11:36:16
+mask_icon_model_general,30,30,2026-01-13 11:36:16
+mask_icon_model_gvars,30,30,2026-01-13 11:36:16
+mask_icon_model_heli,30,30,2026-01-13 11:36:16
+mask_icon_model_inputs,30,30,2026-01-13 11:36:16
+mask_icon_model_logical_switches,30,30,2026-01-13 11:36:16
+mask_icon_model_mixer,30,30,2026-01-13 11:36:16
+mask_icon_model_mixer_scripts,30,30,2026-01-13 11:36:16
+mask_icon_model_notes,30,30,2026-01-13 11:36:16
+mask_icon_model_outputs,30,30,2026-01-13 11:36:16
+mask_icon_model_special_functions,30,30,2026-01-13 11:36:16
+mask_icon_model_telemetry,30,30,2026-01-13 11:36:16
+mask_icon_model_timers,30,30,2026-01-13 11:36:16
+mask_icon_model_usb,30,30,2026-01-13 11:36:16
+mask_icon_radio_about,30,30,2026-01-13 11:36:16
+mask_icon_radio_analogs,30,30,2026-01-13 11:36:16
+mask_icon_radio_calibration,30,30,2026-01-13 11:36:16
+mask_icon_radio_general,30,30,2026-01-13 11:36:16
+mask_icon_radio_global_functions,30,30,2026-01-13 11:36:16
+mask_icon_radio_hardware,30,30,2026-01-13 11:36:16
+mask_icon_radio_trainer,30,30,2026-01-13 11:36:16
+mask_icon_tools_apps,30,30,2026-01-13 11:36:16
+mask_icon_tools_debug,30,30,2026-01-13 11:36:16
+mask_icon_tools_monitor_ch,30,30,2026-01-13 11:36:16
+mask_icon_tools_monitor_ls,30,30,2026-01-13 11:36:16
+mask_icon_tools_reset,30,30,2026-01-13 11:36:16
+mask_icon_tools_stats,30,30,2026-01-13 11:36:16
+mask_icon_tools_storage,30,30,2026-01-13 11:36:16
+mask_icon_ui_themes,30,30,2026-01-13 11:36:16
+mask_icon_ui_topbar_setup,30,30,2026-01-13 11:36:16
+mask_icon_ui_view1,30,30,2026-01-13 11:36:16
+mask_icon_ui_view10,30,30,2026-01-13 11:36:16
+mask_icon_ui_view2,30,30,2026-01-13 11:36:16
+mask_icon_ui_view3,30,30,2026-01-13 11:36:16
+mask_icon_ui_view4,30,30,2026-01-13 11:36:16
+mask_icon_ui_view5,30,30,2026-01-13 11:36:16
+mask_icon_ui_view6,30,30,2026-01-13 11:36:16
+mask_icon_ui_view7,30,30,2026-01-13 11:36:16
+mask_icon_ui_view8,30,30,2026-01-13 11:36:16
+mask_icon_ui_view9,30,30,2026-01-13 11:36:16
+mask_icon_ui_view_add,30,30,2026-01-13 11:36:16
+mask_info_busy,96,96,2026-01-13 13:10:04
+mask_info_error,96,96,2026-01-13 11:36:16
+mask_info_shutdown,96,96,2026-01-13 11:36:16
+mask_info_shutdown_circle0,75,75,2026-01-13 11:36:16
+mask_info_shutdown_circle1,75,75,2026-01-13 11:36:16
+mask_info_shutdown_circle2,75,75,2026-01-13 11:36:16
+mask_info_shutdown_circle3,75,75,2026-01-13 11:36:16
+mask_info_usb_plugged,211,110,2026-01-13 11:36:16
+mask_inline_add,17,17,2026-01-13 11:36:16
+mask_inline_curve,17,17,2026-01-13 11:36:16
+mask_inline_dot,13,13,2026-01-13 11:36:16
+mask_inline_fm,17,17,2026-01-13 11:36:16
+mask_inline_inverted,11,16,2026-01-13 11:36:16
+mask_inline_locked,11,16,2026-01-13 11:36:16
+mask_inline_multiply,17,17,2026-01-13 11:36:16
+mask_inline_replace,17,17,2026-01-13 11:36:16
+mask_menu_edgetx,122,25,2026-01-13 11:36:16
+mask_menu_favs,30,30,2026-01-13 11:36:16
+mask_ui_bg_tile_top_left,4,20,2026-01-13 11:36:16
+mask_ui_bg_tile_top_right,4,20,2026-01-13 11:36:16
+mask_ui_bg_topbar_left,45,45,2026-01-13 11:36:16
+mask_ui_bg_topbar_right,45,45,2026-01-13 11:36:16
+mask_ui_btn_close,30,30,2026-01-13 11:36:16
+mask_ui_btn_grid_large,26,26,2026-01-13 11:36:16
+mask_ui_btn_grid_small,26,26,2026-01-13 11:36:16
+mask_ui_btn_list_one,26,26,2026-01-13 11:36:16
+mask_ui_btn_list_two,26,26,2026-01-13 11:36:16
+mask_ui_btn_next,26,26,2026-01-13 11:36:16
+mask_ui_btn_prev,26,26,2026-01-13 11:36:16
+mask_widget_antenna,18,17,2026-01-13 11:36:16
+mask_widget_gps,18,18,2026-01-13 11:36:16
+mask_widget_timer,62,62,2026-01-13 11:36:16
+mask_widget_timer_bg,180,70,2026-01-13 11:36:16
+mask_widget_trim,15,15,2026-01-13 11:36:16
+mask_widget_trim_shadow,17,17,2026-01-13 11:36:16
+mask_widget_txbat,24,12,2026-01-13 11:36:16
+mask_widget_txbat_charging,5,15,2026-01-13 11:36:16
+mask_widget_usb,22,10,2026-01-13 11:36:16
+mask_widget_volume0,18,16,2026-01-13 11:36:16
+mask_widget_volume1,15,16,2026-01-13 11:36:16
+mask_widget_volume2,19,16,2026-01-13 11:36:16
+mask_widget_volume3,24,16,2026-01-13 11:36:16
+mask_widget_volume4,30,16,2026-01-13 11:36:16
+mask_widget_volume_scale,15,16,2026-01-13 11:36:16
diff --git a/tools/convert-gfx.py b/tools/convert-gfx.py
new file mode 100755
index 000000000..aed9d4726
--- /dev/null
+++ b/tools/convert-gfx.py
@@ -0,0 +1,1140 @@
+#!/usr/bin/env python3
+"""
+Convert SVG files to PNG icons for different screen resolutions.
+Manages conversion, validation, and incremental builds with CSV tracking.
+"""
+
+import sys
+import csv
+import logging
+import shutil
+import subprocess
+import time
+import argparse
+import importlib.util
+from pathlib import Path
+from datetime import datetime
+from typing import Tuple, Optional, List, Dict
+
+
+def check_dependencies():
+ """Check if required Python packages are installed."""
+ missing = []
+
+ if importlib.util.find_spec('PIL') is None:
+ missing.append('pillow')
+
+ if importlib.util.find_spec('rich') is None:
+ missing.append('rich')
+
+ if missing:
+ print("Error: Missing required packages:", file=sys.stderr)
+ for pkg in missing:
+ print(f" - {pkg}", file=sys.stderr)
+ print(file=sys.stderr)
+
+ if shutil.which('uv'):
+ print(f"Install with: uv pip install {' '.join(missing)}", file=sys.stderr)
+ else:
+ print(f"Install with: pip install {' '.join(missing)}", file=sys.stderr)
+
+ sys.exit(1)
+
+
+# Check dependencies before importing external packages
+check_dependencies()
+
+from PIL import Image # noqa: E402
+from rich.progress import Progress, SpinnerColumn, BarColumn, TextColumn, TaskProgressColumn # noqa: E402
+from rich.logging import RichHandler # noqa: E402
+from rich.console import Console # noqa: E402
+
+
+# Set up logging and console
+logger = logging.getLogger("convert-gfx")
+console = Console(highlight=False)
+
+# Configuration
+SCRIPT_DIR = Path(__file__).parent.resolve()
+BASE_DIR = SCRIPT_DIR.parent / "radio" / "src" / "bitmaps"
+SRC_DIR = BASE_DIR / "img-src"
+SRC_LIST = SCRIPT_DIR / "convert-gfx-list.csv"
+
+RESOLUTIONS = {
+ "320x240": 0.8,
+ "480x272": 1.0,
+ "800x480": 1.375,
+}
+
+
+def get_png_dimensions(png_path: Path) -> Optional[Tuple[int, int]]:
+ """Extract PNG dimensions using PIL."""
+ try:
+ if not png_path.exists():
+ return None
+ img = Image.open(png_path)
+ return img.size
+ except Exception:
+ return None
+
+
+def get_svg_mtime(svg_path: Path) -> str:
+ """Get SVG modification time as formatted string."""
+ if not svg_path.exists():
+ return ""
+ mtime = svg_path.stat().st_mtime
+ dt = datetime.fromtimestamp(mtime)
+ return dt.strftime("%Y-%m-%d %H:%M:%S")
+
+
+def round_divide(value: int, scale: float) -> int:
+ """Round division: value / scale rounded to nearest integer."""
+ if scale == 0:
+ return 0
+ return round(value / scale)
+
+
+def check_command(cmd: str, instructions: Dict[str, str]) -> bool:
+ """Check if a command is available in PATH."""
+ if shutil.which(cmd) is None:
+ print(f"Error: {cmd} is not installed or not in PATH")
+ print(f"Please install {cmd} to use this script")
+ print()
+ for key, val in instructions.items():
+ print(f"{key}: {val}")
+ return False
+ return True
+
+
+def scale_dimension(value: int, scale: float) -> int:
+ """Scale a dimension and round to nearest integer."""
+ return round(value * scale)
+
+
+def format_duration(seconds: float) -> str:
+ """Format duration in seconds to human-readable string.
+
+ Returns:
+ String like "450ms", "2.3s", or "1m 23s"
+ """
+ if seconds < 1.0:
+ return f"{int(seconds * 1000)}ms"
+ elif seconds < 60:
+ return f"{seconds:.1f}s"
+ else:
+ minutes = int(seconds // 60)
+ secs = int(seconds % 60)
+ return f"{minutes}m {secs}s"
+
+
+def read_csv_entries() -> Dict[str, Tuple[str, str]]:
+ """Read CSV file and return dict of filename -> (width, height).
+
+ Returns:
+ Dictionary mapping filename to (width, height) tuple
+ """
+ entries = {}
+ if not SRC_LIST.exists():
+ return entries
+
+ try:
+ with open(SRC_LIST, "r") as f:
+ reader = csv.DictReader(f)
+ for row in reader:
+ file_name = row.get("file", "").strip()
+ width = row.get("width", "").strip()
+ height = row.get("height", "").strip()
+ if file_name:
+ entries[file_name] = (width, height)
+ except Exception as e:
+ console.print(f"[red]Error reading CSV: {e}[/red]")
+
+ return entries
+
+
+def run_conversion(
+ engine: str,
+ width: int,
+ height: int,
+ input_file: Path,
+ output_file: Path,
+ dry_run: bool = False,
+) -> bool:
+ """Run SVG to PNG conversion using rsvg-convert or resvg."""
+ if dry_run:
+ return True
+
+ output_file.parent.mkdir(parents=True, exist_ok=True)
+
+ try:
+ if engine == "resvg":
+ subprocess.run(
+ ["resvg", "--width", str(width), "--height", str(height),
+ str(input_file), str(output_file)],
+ check=True,
+ capture_output=True,
+ text=True,
+ )
+ else: # rsvg-convert
+ subprocess.run(
+ ["rsvg-convert", "--width", str(width), "--height", str(height),
+ "--output", str(output_file), str(input_file)],
+ check=True,
+ capture_output=True,
+ text=True,
+ )
+ return True
+ except subprocess.CalledProcessError as e:
+ error_msg = e.stderr.strip() if e.stderr else str(e)
+ console.print(f" [red]Error converting {input_file.name}: {error_msg}[/red]")
+ return False
+ except Exception as e:
+ console.print(f" [red]Unexpected error converting {input_file.name}: {e}[/red]")
+ return False
+
+
+def update_src_list_csv(verbose: bool = False) -> int:
+ """Regenerate convert-gfx-list.csv from existing PNGs and SVGs.
+
+ Preserves existing modified timestamps for unchanged entries.
+ Derives dimensions from existing PNGs (prefers 480x272 base resolution).
+ Maintains alphabetical sort order.
+ """
+ start_time = time.time()
+
+ if not SRC_DIR.exists():
+ print(f"Error: SVG source directory not found: {SRC_DIR}")
+ return 1
+
+ print(f"Scanning SVG files in {SRC_DIR}...")
+ print(f"CSV output: {SRC_LIST}")
+ print()
+
+ # Load existing CSV to preserve modified dates
+ existing_dates: Dict[str, str] = {}
+ if SRC_LIST.exists():
+ try:
+ with open(SRC_LIST, "r") as f:
+ reader = csv.DictReader(f)
+ for row in reader:
+ file_name = row.get("file", "").strip()
+ modified = row.get("modified", "").strip()
+ if file_name and modified:
+ existing_dates[file_name] = modified
+ except Exception as e:
+ print(f"Warning: Could not read existing CSV: {e}")
+
+ # Collect SVG files first
+ svg_paths = sorted(SRC_DIR.glob("**/*.svg"))
+
+ # Scan all SVGs with progress bar
+ rows = []
+ with Progress(
+ SpinnerColumn(),
+ TextColumn("[progress.description]{task.description}"),
+ BarColumn(),
+ TaskProgressColumn(),
+ transient=False,
+ ) as progress:
+ task = progress.add_task(
+ "Scanning SVGs...",
+ total=len(svg_paths),
+ )
+
+ for svg_path in svg_paths:
+ rel_path = svg_path.relative_to(SRC_DIR)
+ file_name = str(rel_path.with_suffix(""))
+ png_name = f"{file_name}.png"
+
+ # Try to get dimensions from existing PNGs (prefer 480x272 base resolution)
+ width = ""
+ height = ""
+
+ png_480 = BASE_DIR / "480x272" / png_name
+ png_320 = BASE_DIR / "320x240" / png_name
+ png_800 = BASE_DIR / "800x480" / png_name
+
+ dim_480 = get_png_dimensions(png_480)
+ if dim_480:
+ width, height = dim_480
+ else:
+ dim_320 = get_png_dimensions(png_320)
+ if dim_320:
+ w, h = dim_320
+ width = round_divide(w, 0.8)
+ height = round_divide(h, 0.8)
+ else:
+ dim_800 = get_png_dimensions(png_800)
+ if dim_800:
+ w, h = dim_800
+ width = round_divide(w, 1.375)
+ height = round_divide(h, 1.375)
+
+ # Preserve existing modified date, or use SVG mtime for new entries
+ if file_name in existing_dates:
+ modified = existing_dates[file_name]
+ else:
+ modified = get_svg_mtime(svg_path)
+
+ rows.append({
+ "file": file_name,
+ "width": str(width) if width else "",
+ "height": str(height) if height else "",
+ "modified": modified,
+ })
+
+ progress.update(task, advance=1)
+
+ # Write sorted CSV
+ try:
+ with open(SRC_LIST, "w", newline="") as f:
+ writer = csv.DictWriter(f, fieldnames=["file", "width", "height", "modified"])
+ writer.writeheader()
+ writer.writerows(rows)
+ except Exception as e:
+ print(f"Error writing CSV: {e}")
+ return 1
+
+ total_svg = len(rows)
+ elapsed = time.time() - start_time
+ print()
+ print(f"Total SVG files processed: {total_svg}")
+ console.print(f"[green]CSV updated: {SRC_LIST}[/green] [cyan]({format_duration(elapsed)})[/cyan]")
+ return 0
+
+
+def validate_svg(verbose: bool = False) -> int:
+ """Validate that SVG files match CSV entries."""
+ if not SRC_LIST.exists():
+ print(f"Error: CSV files list not found: {SRC_LIST}")
+ return 1
+ if not SRC_DIR.exists():
+ print(f"Error: SVG source directory not found: {SRC_DIR}")
+ return 1
+
+ print("Validating SVG source files")
+ print("---------------------------")
+ print()
+
+ has_errors = False
+
+ # Part 0: Check CSV for missing dimensions
+ print("Checking CSV for missing dimensions...")
+ missing_dimensions = 0
+ csv_entries = read_csv_entries()
+
+ if not csv_entries:
+ console.print("[red]Error: Could not read CSV or CSV is empty[/red]")
+ return 1
+
+ for file_name, (width, height) in csv_entries.items():
+ if not width or not height:
+ console.print(
+ f" [red]CSV entry missing dimensions: {file_name} "
+ f"(width: '{width}', height: '{height}')[/red]"
+ )
+ has_errors = True
+ missing_dimensions += 1
+
+ if missing_dimensions > 0:
+ print(f" Total entries with missing dimensions: {missing_dimensions}")
+ else:
+ console.print(" [green]All CSV entries have dimensions[/green]")
+
+ # Part 1: Check CSV entries against SVG directory
+ print()
+ print("Comparing CSV files list with SVG directory...")
+ missing_in_dir = 0
+ found_in_dir = 0
+
+ for file_name in sorted(csv_entries.keys()):
+ svg_path = SRC_DIR / f"{file_name}.svg"
+ if not svg_path.exists():
+ console.print(f" [red]CSV entry missing SVG file: {file_name}.svg[/red]")
+ has_errors = True
+ missing_in_dir += 1
+ else:
+ found_in_dir += 1
+
+ print(f" CSV entries - Found: {found_in_dir}, Missing in SVG dir: {missing_in_dir}")
+
+ # Part 2: Check SVG directory against CSV
+ print()
+ print("Comparing SVG directory with CSV files list...")
+
+ svg_files = {p.stem for p in SRC_DIR.glob("**/*.svg")}
+ csv_files = set(csv_entries.keys())
+ missing_in_csv = svg_files - csv_files
+
+ for file_name in sorted(missing_in_csv):
+ console.print(f" [red]SVG file missing in CSV list: {file_name}.svg[/red]")
+ has_errors = True
+
+ total_svg = len(svg_files)
+ print(f" SVG files - Total: {total_svg}, Missing in CSV: {len(missing_in_csv)}")
+
+ print()
+ if not has_errors and len(missing_in_csv) == 0:
+ console.print("[green]SVG source files validation passed: All files match[/green]")
+ return 0
+ else:
+ console.print("[red]SVG source files validation failed[/red]")
+ return 1
+
+
+def validate_png(verbose: bool = False) -> int:
+ """Validate that PNG files exist for all CSV entries."""
+ if not SRC_LIST.exists():
+ print(f"Error: CSV files list not found: {SRC_LIST}")
+ return 1
+ if not SRC_DIR.exists():
+ print(f"Error: SVG source directory not found: {SRC_DIR}")
+ return 1
+
+ print("Validating PNG files")
+ print("--------------------")
+
+ has_errors = False
+
+ # Read CSV - only include entries with valid dimensions
+ csv_entries = {name: dims for name, dims in read_csv_entries().items()
+ if dims[0] and dims[1]}
+
+ if not csv_entries:
+ console.print("[red]Error: No valid entries found in CSV[/red]")
+ return 1
+
+ for resolution in RESOLUTIONS:
+ print()
+ print(f"Checking resolution: {resolution}")
+ out_dir = BASE_DIR / resolution
+
+ if not out_dir.exists():
+ print(f" Warning: Output directory not found: {out_dir}")
+ has_errors = True
+ continue
+
+ missing_count = 0
+ found_count = 0
+
+ for file_name in csv_entries:
+ png_path = out_dir / f"{file_name}.png"
+ if not png_path.exists():
+ console.print(f" [red]Missing PNG: {file_name}.png[/red]")
+ has_errors = True
+ missing_count += 1
+ else:
+ found_count += 1
+
+ print(f" Found: {found_count}, Missing: {missing_count}")
+
+ # Check for orphaned PNGs across all resolutions
+ print()
+ print("Checking for orphaned PNG files...")
+ orphaned = find_orphaned_pngs()
+ total_orphaned = sum(len(files) for files in orphaned.values())
+
+ if total_orphaned > 0:
+ for resolution, files in orphaned.items():
+ if files:
+ console.print(f"[red]{resolution}: {len(files)} orphaned PNG file(s)[/red]")
+ for filename in sorted(files):
+ console.print(f" [red]Orphaned PNG: {filename}.png[/red]")
+ has_errors = True
+ else:
+ console.print(" [green]No orphaned PNG files found[/green]")
+
+ print()
+ if not has_errors:
+ console.print("[green]PNG validation passed: All PNG files valid[/green]")
+ return 0
+ else:
+ console.print("[red]PNG validation failed: See errors above[/red]")
+ return 1
+
+
+def validate_all(verbose: bool = False) -> int:
+ """Validate SVG and PNG files with interleaved per-file results."""
+ start_time = time.time()
+
+ if not SRC_LIST.exists():
+ print(f"Error: CSV files list not found: {SRC_LIST}")
+ return 1
+ if not SRC_DIR.exists():
+ print(f"Error: SVG source directory not found: {SRC_DIR}")
+ return 1
+
+ print("Validating SVG and PNG files")
+ print("----------------------------")
+ print()
+
+ has_errors = False
+
+ # Part 0: Check CSV for missing dimensions
+ print("Checking CSV for missing dimensions...")
+ missing_dimensions = 0
+ csv_entries = read_csv_entries()
+
+ if not csv_entries:
+ console.print("[red]Error: Could not read CSV or CSV is empty[/red]")
+ return 1
+
+ for file_name, (width, height) in csv_entries.items():
+ if not width or not height:
+ console.print(
+ f" [red]CSV entry missing dimensions: {file_name} "
+ f"(width: '{width}', height: '{height}')[/red]"
+ )
+ has_errors = True
+ missing_dimensions += 1
+
+ if missing_dimensions > 0:
+ print(f" Total entries with missing dimensions: {missing_dimensions}")
+ else:
+ console.print(" [green]All CSV entries have dimensions[/green]")
+
+ # Part 1: Check SVG/PNG for each file
+ print()
+ print("Validating each file across SVG and PNG...")
+ svg_files = {p.stem for p in SRC_DIR.glob("**/*.svg")}
+ csv_files = set(csv_entries.keys())
+ all_files = sorted(svg_files | csv_files)
+
+ svg_found = 0
+ svg_missing = 0
+ svg_unreferenced = 0
+ png_missing_by_res = {res: 0 for res in RESOLUTIONS}
+ png_found_by_res = {res: 0 for res in RESOLUTIONS}
+
+ with Progress(
+ SpinnerColumn(),
+ TextColumn("[progress.description]{task.description}"),
+ BarColumn(),
+ TaskProgressColumn(),
+ transient=False,
+ ) as progress:
+ task = progress.add_task(
+ "Validating files...",
+ total=len(all_files),
+ )
+
+ for file_name in all_files:
+ # Check SVG
+ svg_path = SRC_DIR / f"{file_name}.svg"
+ in_csv = file_name in csv_entries
+ svg_exists = svg_path.exists()
+
+ if not svg_exists and in_csv:
+ progress.print(f" [red]SVG missing: {file_name}.svg (in CSV but not on disk)[/red]")
+ has_errors = True
+ svg_missing += 1
+ elif svg_exists and not in_csv:
+ progress.print(f" [red]SVG unreferenced: {file_name}.svg (on disk but not in CSV)[/red]")
+ svg_unreferenced += 1
+ elif svg_exists and in_csv:
+ svg_found += 1
+
+ # Check PNG for each resolution (only if in CSV with dimensions)
+ if in_csv:
+ width, height = csv_entries[file_name]
+ if width and height:
+ all_missing = True
+ for resolution in RESOLUTIONS:
+ out_dir = BASE_DIR / resolution
+ png_path = out_dir / f"{file_name}.png"
+ if png_path.exists():
+ all_missing = False
+ png_found_by_res[resolution] += 1
+ else:
+ png_missing_by_res[resolution] += 1
+
+ if all_missing:
+ progress.print(f" [red]PNG missing in all resolutions: {file_name}.png[/red]")
+ has_errors = True
+
+ progress.update(task, advance=1)
+
+ # Part 2: Check for orphaned PNGs (on disk but not in SVG/CSV)
+ print()
+ print("Checking for orphaned PNG files...")
+ orphaned = find_orphaned_pngs()
+ total_orphaned = sum(len(files) for files in orphaned.values())
+
+ if total_orphaned > 0:
+ for resolution, files in orphaned.items():
+ if files:
+ console.print(f"[red]{resolution}: {len(files)} orphaned PNG file(s)[/red]")
+ for filename in sorted(files):
+ console.print(f" [red]Orphaned PNG: {filename}.png[/red]")
+ has_errors = True
+ else:
+ console.print(" [green]No orphaned PNG files found[/green]")
+
+ elapsed = time.time() - start_time
+ print()
+ print(f"SVG validation - Found: {svg_found}, Missing: {svg_missing}, Unreferenced: {svg_unreferenced}")
+ for resolution in RESOLUTIONS:
+ found = png_found_by_res[resolution]
+ missing = png_missing_by_res[resolution]
+ total = found + missing
+ if total > 0:
+ print(f"PNG validation - {resolution}: Found: {found}/{total}, Missing: {missing}")
+ if total_orphaned > 0:
+ print(f"Orphaned PNG files - Total: {total_orphaned}")
+
+ print()
+ if not has_errors and svg_unreferenced == 0:
+ console.print(f"[green]All validations passed[/green] [cyan]({format_duration(elapsed)})[/cyan]")
+ return 0
+ elif (svg_unreferenced > 0 or total_orphaned > 0) and not has_errors:
+ console.print(f"[red]Validation complete: {svg_unreferenced} unreferenced SVG file(s) and {total_orphaned} orphaned PNG file(s) found[/red] [cyan]({format_duration(elapsed)})[/cyan]")
+ return 1
+ else:
+ console.print(f"[red]Validation failed: See errors above[/red] [cyan]({format_duration(elapsed)})[/cyan]")
+ return 1
+
+
+def find_orphaned_pngs() -> Dict[str, List[str]]:
+ """Find PNG files that don't have corresponding SVG sources.
+
+ Returns:
+ Dictionary mapping resolution -> list of orphaned PNG filenames
+ """
+ orphaned: Dict[str, List[str]] = {res: [] for res in RESOLUTIONS}
+
+ # Get all SVG basenames from source directory
+ svg_files = {f.stem for f in SRC_DIR.glob("*.svg")}
+
+ # Check each resolution for PNGs without SVG sources
+ for resolution in RESOLUTIONS:
+ dest_dir = BASE_DIR / resolution
+ if not dest_dir.exists():
+ continue
+
+ for png_file in dest_dir.glob("*.png"):
+ basename = png_file.stem
+ if basename not in svg_files:
+ orphaned[resolution].append(basename)
+
+ return orphaned
+
+
+def find_unreferenced_svgs() -> List[str]:
+ """Find SVG files that aren't referenced in the CSV.
+
+ Returns:
+ List of unreferenced SVG filenames (without .svg extension)
+ """
+ # Get all SVG files from source directory
+ svg_files = {f.stem for f in SRC_DIR.glob("**/*.svg")}
+
+ # Get all files referenced in CSV
+ csv_entries = read_csv_entries()
+ csv_files = set(csv_entries.keys())
+
+ # Return SVGs not in CSV
+ unreferenced = svg_files - csv_files
+ return sorted(unreferenced)
+
+
+def cleanup_orphaned_pngs(dry_run: bool = False, verbose: bool = False, include_svg: bool = False) -> int:
+ """Remove orphaned PNG files and optionally unreferenced SVG files.
+
+ Args:
+ dry_run: If True, only show what would be deleted without actually deleting
+ verbose: Show detailed output
+ include_svg: If True, also remove SVG files not referenced in CSV
+ """
+ start_time = time.time()
+ orphaned_pngs = find_orphaned_pngs()
+ unreferenced_svgs = find_unreferenced_svgs() if include_svg else []
+
+ total_orphaned_pngs = sum(len(files) for files in orphaned_pngs.values())
+ total_unreferenced_svgs = len(unreferenced_svgs)
+ total_files = total_orphaned_pngs + total_unreferenced_svgs
+
+ if total_files == 0:
+ console.print("[green]No orphaned files found[/green]")
+ return 0
+
+ mode_str = "[DRY RUN] " if dry_run else ""
+
+ # Show PNG orphans
+ if total_orphaned_pngs > 0:
+ console.print(f"\n{mode_str}Found {total_orphaned_pngs} orphaned PNG file(s):")
+
+ deleted_count = 0
+
+ # Delete orphaned PNGs
+ for resolution, files in orphaned_pngs.items():
+ if not files:
+ continue
+
+ console.print(f"\n{resolution}: {len(files)} file(s)")
+ dest_dir = BASE_DIR / resolution
+
+ for filename in sorted(files):
+ png_path = dest_dir / f"{filename}.png"
+ if verbose or dry_run:
+ action = "Would delete" if dry_run else "Deleting"
+ console.print(f" {action}: {filename}.png")
+
+ if not dry_run:
+ try:
+ png_path.unlink()
+ deleted_count += 1
+ except Exception as e:
+ console.print(f" [red]Error deleting {filename}.png: {e}[/red]")
+ else:
+ deleted_count += 1
+
+ # Delete unreferenced SVGs
+ if include_svg and total_unreferenced_svgs > 0:
+ console.print(f"\n{mode_str}Found {total_unreferenced_svgs} unreferenced SVG file(s):")
+
+ for filename in unreferenced_svgs:
+ svg_path = SRC_DIR / f"{filename}.svg"
+ if verbose or dry_run:
+ action = "Would delete" if dry_run else "Deleting"
+ console.print(f" {action}: {filename}.svg")
+
+ if not dry_run:
+ try:
+ svg_path.unlink()
+ deleted_count += 1
+ except Exception as e:
+ console.print(f" [red]Error deleting {filename}.svg: {e}[/red]")
+ else:
+ deleted_count += 1
+
+ elapsed = time.time() - start_time
+ print()
+ if dry_run:
+ console.print(f"[yellow]Dry run complete: {deleted_count} file(s) would be deleted[/yellow] [cyan]({format_duration(elapsed)})[/cyan]")
+ else:
+ console.print(f"[green]Cleanup complete: {deleted_count} file(s) deleted[/green] [cyan]({format_duration(elapsed)})[/cyan]")
+
+ return 0
+
+
+def process_resolution(
+ resolution: str,
+ engine: str,
+ update_mode: bool,
+ verbose: bool = False,
+ dry_run: bool = False,
+) -> int:
+ """Generate PNGs for a specific resolution."""
+ start_time = time.time()
+
+ if not SRC_LIST.exists():
+ print(f"Error: CSV files list not found: {SRC_LIST}")
+ return 1
+ if not SRC_DIR.exists():
+ print(f"Error: SVG source directory not found: {SRC_DIR}")
+ return 1
+
+ scale = RESOLUTIONS.get(resolution)
+ if scale is None:
+ print(f"Error: Unsupported resolution '{resolution}'")
+ print(f"Supported resolutions: {', '.join(RESOLUTIONS.keys())}")
+ return 1
+
+ print(f"Generating icons for resolution: {resolution} (scale: {scale}x)")
+
+ out_dir = BASE_DIR / resolution
+ if not out_dir.exists():
+ print(f"Error: Output directory not found: {out_dir}")
+ return 1
+
+ mode_msg = (
+ "Converting SVG files to PNG using {} (update mode - only changed files)"
+ if update_mode
+ else "Converting SVG files to PNG using {}"
+ )
+ print(mode_msg.format(engine))
+
+ has_errors = False
+ processed_count = 0
+ skipped_count = 0
+
+ # First pass: read CSV entries and validate
+ csv_rows = []
+ try:
+ with open(SRC_LIST, "r") as f:
+ reader = csv.DictReader(f)
+ for row in reader:
+ file_name = row.get("file", "").strip()
+ width_str = row.get("width", "").strip()
+ height_str = row.get("height", "").strip()
+ csv_date = row.get("modified", "").strip()
+
+ if not file_name:
+ continue
+
+ if not width_str or not height_str:
+ console.print(
+ f" [red]Error: Skipping {file_name}.svg - "
+ f"missing dimension(s) (width: '{width_str}', height: '{height_str}')[/red]"
+ )
+ has_errors = True
+ continue
+
+ try:
+ width = int(width_str)
+ height = int(height_str)
+ except ValueError:
+ console.print(
+ f" [red]Error: Invalid dimensions for {file_name}: "
+ f"'{width_str}x{height_str}'[/red]"
+ )
+ has_errors = True
+ continue
+
+ csv_rows.append({
+ "file_name": file_name,
+ "width": width,
+ "height": height,
+ "csv_date": csv_date,
+ })
+ except Exception as e:
+ print(f"Error reading CSV: {e}")
+ return 1
+
+ # Second pass: process files with progress bar
+ with Progress(
+ SpinnerColumn(),
+ TextColumn("[progress.description]{task.description}"),
+ BarColumn(),
+ TaskProgressColumn(),
+ TextColumn("[cyan]{task.fields[status]}"),
+ transient=False,
+ ) as progress:
+ task = progress.add_task(
+ "Converting...",
+ total=len(csv_rows),
+ status="",
+ )
+
+ for row in csv_rows:
+ file_name = row["file_name"]
+ width = row["width"]
+ height = row["height"]
+ csv_date = row["csv_date"]
+
+ svg_path = SRC_DIR / f"{file_name}.svg"
+ png_path = out_dir / f"{file_name}.png"
+ scaled_width = scale_dimension(width, scale)
+ scaled_height = scale_dimension(height, scale)
+
+ should_process = True
+ status_msg = ""
+
+ if update_mode:
+ if not svg_path.exists():
+ progress.print(
+ f" [red]Error: SVG file not found: {file_name}.svg[/red]"
+ )
+ has_errors = True
+ progress.update(task, advance=1)
+ continue
+
+ svg_mtime = get_svg_mtime(svg_path)
+
+ if not png_path.exists():
+ status_msg = f"Adding {file_name}"
+ if verbose:
+ logger.debug(f"Adding new: {file_name}.svg (PNG missing for {resolution})")
+ should_process = True
+ elif not csv_date:
+ status_msg = f"Adding {file_name} (no date)"
+ if verbose:
+ logger.debug(f"Adding new: {file_name}.svg (no previous date in CSV)")
+ should_process = True
+ elif svg_mtime > csv_date:
+ status_msg = f"Updating {file_name}"
+ if verbose:
+ logger.debug(f"Updating: {file_name}.svg (SVG: {svg_mtime}, CSV: {csv_date})")
+ should_process = True
+ else:
+ png_mtime = datetime.fromtimestamp(
+ png_path.stat().st_mtime
+ ).strftime("%Y-%m-%d %H:%M:%S")
+ if png_mtime < svg_mtime:
+ status_msg = f"Updating {file_name}"
+ if verbose:
+ logger.debug(f"Updating: {file_name}.svg (PNG older than SVG for {resolution})")
+ should_process = True
+ else:
+ skipped_count += 1
+ should_process = False
+
+ if should_process:
+ if run_conversion(engine, scaled_width, scaled_height, svg_path, png_path, dry_run):
+ processed_count += 1
+ status_msg = f"✓ {file_name}"
+ if verbose:
+ action = "Would convert" if dry_run else "Converted"
+ logger.debug(f"{action}: {file_name}.svg")
+ else:
+ has_errors = True
+ status_msg = f"✗ {file_name}"
+ if verbose:
+ logger.error(f"Failed to convert: {file_name}.svg")
+
+ progress.update(task, advance=1, status=status_msg)
+
+ elapsed = time.time() - start_time
+ print()
+
+ mode_str = "[DRY RUN] " if dry_run else ""
+ if update_mode:
+ console.print(f"[green]{mode_str}Processed: {processed_count}, Skipped: {skipped_count}[/green]")
+
+ if has_errors:
+ print()
+ console.print("[red]Warning: Some files were skipped due to missing dimensions[/red]")
+ console.print("Please run --validate png to see all entries with missing dimensions")
+
+ action = "Icons would be generated" if dry_run else "Icons generated"
+ console.print(f"[green]{mode_str}Done! {action} for {resolution}[/green] [cyan]({format_duration(elapsed)})[/cyan]")
+ return 0
+
+
+def update_csv_dates(resolutions: List[str], verbose: bool = False) -> None:
+ """Update CSV modification dates for processed files."""
+ if not SRC_LIST.exists():
+ return
+
+ print()
+ print("Updating CSV modification dates...")
+
+ rows = []
+ try:
+ with open(SRC_LIST, "r") as f:
+ reader = csv.DictReader(f)
+ for row in reader:
+ file_name = row.get("file", "").strip()
+ if file_name:
+ svg_path = SRC_DIR / f"{file_name}.svg"
+ mtime = get_svg_mtime(svg_path)
+ row["modified"] = mtime
+ rows.append(row)
+ except Exception as e:
+ print(f"Error reading CSV: {e}")
+ return
+
+ with Progress(
+ SpinnerColumn(),
+ TextColumn("[progress.description]{task.description}"),
+ BarColumn(),
+ TaskProgressColumn(),
+ transient=False,
+ ) as progress:
+ task = progress.add_task(
+ "Updating CSV...",
+ total=len(rows),
+ )
+
+ try:
+ with open(SRC_LIST, "w", newline="") as f:
+ writer = csv.DictWriter(f, fieldnames=["file", "width", "height", "modified"])
+ writer.writeheader()
+ for row in rows:
+ writer.writerow(row)
+ progress.update(task, advance=1)
+ print("CSV modification dates updated.")
+ except Exception as e:
+ print(f"Error writing CSV: {e}")
+
+
+def create_parser() -> argparse.ArgumentParser:
+ """Create and configure the argument parser."""
+ parser = argparse.ArgumentParser(
+ description="Convert SVG files to PNG icons for different screen resolutions",
+ epilog="Requires: rsvg-convert (default) or resvg command line tool",
+ formatter_class=argparse.RawDescriptionHelpFormatter,
+ )
+
+ # Global options
+ parser.add_argument(
+ '-v', '--verbose',
+ action='store_true',
+ help='Show detailed per-file logs while processing'
+ )
+
+ subparsers = parser.add_subparsers(dest='command', help='Command to execute')
+
+ # --validate command
+ validate_parser = subparsers.add_parser(
+ 'validate',
+ help='Validate SVG and PNG files',
+ description='Validate SVG source files and generated PNG files'
+ )
+ validate_parser.add_argument(
+ 'mode',
+ choices=['svg', 'png', 'all'],
+ help='What to validate: svg (source files), png (generated files), or all (both)'
+ )
+ validate_parser.add_argument(
+ '-v', '--verbose',
+ action='store_true',
+ help='Show detailed per-file logs while processing'
+ )
+
+ # --make command
+ make_parser = subparsers.add_parser(
+ 'make',
+ help='Generate PNG files from SVG sources',
+ description='Convert SVG files to PNG icons for specified resolutions'
+ )
+ make_parser.add_argument(
+ 'resolutions',
+ nargs='+',
+ metavar='RESOLUTION',
+ help=f'Resolutions to generate ({", ".join(RESOLUTIONS.keys())}, or "all")'
+ )
+ make_parser.add_argument(
+ '--update',
+ action='store_true',
+ help='Only regenerate PNGs for SVGs newer than CSV date (incremental build)'
+ )
+ make_parser.add_argument(
+ '--resvg',
+ action='store_true',
+ help='Use resvg engine instead of rsvg-convert (default)'
+ )
+ make_parser.add_argument(
+ '--dry-run',
+ action='store_true',
+ help='Show what would be done without actually creating/modifying files'
+ )
+ make_parser.add_argument(
+ '-v', '--verbose',
+ action='store_true',
+ help='Show detailed per-file logs while processing'
+ )
+
+ # --update-list command
+ update_list_parser = subparsers.add_parser(
+ 'update-list',
+ help='Regenerate convert-gfx-list.csv from existing files',
+ description='Regenerate convert-gfx-list.csv with dimensions and modification dates from existing PNGs and SVGs'
+ )
+ update_list_parser.add_argument(
+ '-v', '--verbose',
+ action='store_true',
+ help='Show detailed per-file logs while processing'
+ )
+
+ # --cleanup command
+ cleanup_parser = subparsers.add_parser(
+ 'cleanup',
+ help='Remove orphaned PNG files',
+ description='Remove PNG files that don\'t have corresponding SVG sources. Optionally remove unreferenced SVG files.'
+ )
+ cleanup_parser.add_argument(
+ '--dry-run',
+ action='store_true',
+ help='Show what would be deleted without actually deleting files'
+ )
+ cleanup_parser.add_argument(
+ '--include-svg',
+ action='store_true',
+ help='Also remove SVG files not referenced in CSV (CSV is source of truth)'
+ )
+ cleanup_parser.add_argument(
+ '-v', '--verbose',
+ action='store_true',
+ help='Show detailed per-file logs while processing'
+ )
+
+ return parser
+
+
+def main() -> int:
+ """Main entry point."""
+ parser = create_parser()
+
+ # Handle no arguments - show help
+ if len(sys.argv) == 1:
+ parser.print_help()
+ return 0
+
+ args = parser.parse_args()
+
+ # Set up logging based on verbose flag
+ if args.verbose:
+ # Configure rich handler for our logger only
+ handler = RichHandler(rich_tracebacks=True)
+ logger.setLevel(logging.DEBUG)
+ logger.addHandler(handler)
+ # Suppress debug output from other libraries (PIL, etc.)
+ logging.getLogger('PIL').setLevel(logging.WARNING)
+ else:
+ # Suppress logging when not verbose
+ logger.setLevel(logging.CRITICAL)
+
+ # Handle commands
+ if args.command == 'validate':
+ if args.mode == 'svg':
+ return validate_svg(args.verbose)
+ elif args.mode == 'png':
+ return validate_png(args.verbose)
+ elif args.mode == 'all':
+ return validate_all(args.verbose)
+
+ elif args.command == 'update-list':
+ return update_src_list_csv(args.verbose)
+
+ elif args.command == 'cleanup':
+ return cleanup_orphaned_pngs(args.dry_run, args.verbose, args.include_svg)
+
+ elif args.command == 'make':
+ # Expand "all" to list of resolutions
+ resolutions = []
+ for res in args.resolutions:
+ if res == 'all':
+ resolutions.extend(RESOLUTIONS.keys())
+ else:
+ resolutions.append(res)
+
+ # Determine engine
+ engine = "resvg" if args.resvg else "rsvg-convert"
+
+ # Check for conversion engine
+ engine_cmds = {
+ "resvg": {
+ "Ubuntu/Debian": "sudo apt-get install resvg",
+ "macOS": "brew install resvg",
+ "Windows": "Download from https://github.com/RazrFalcon/resvg/releases"
+ },
+ "rsvg-convert": {
+ "Ubuntu/Debian": "sudo apt-get install librsvg2-bin",
+ "macOS": "brew install librsvg",
+ "Windows (MSYS2)": "pacman -S mingw-w64-x86_64-librsvg"
+ },
+ }
+
+ if not check_command(engine, engine_cmds[engine]):
+ return 1
+
+ # Process each resolution
+ for resolution in resolutions:
+ if process_resolution(resolution, engine, args.update, args.verbose, args.dry_run) != 0:
+ return 1
+
+ # Update CSV dates if in update mode
+ if args.update:
+ update_csv_dates(resolutions, args.verbose)
+
+ print("All done!")
+ return 0
+
+ else:
+ parser.print_help()
+ return 1
+
+
+if __name__ == "__main__":
+ sys.exit(main())