| 1 | #include "stdlib.h" |
|---|
| 2 | #include "platform.h" |
|---|
| 3 | #include "core.h" |
|---|
| 4 | #include "keyboard.h" |
|---|
| 5 | #include "conf.h" |
|---|
| 6 | #include "ubasic.h" |
|---|
| 7 | #include "font.h" |
|---|
| 8 | #include "lang.h" |
|---|
| 9 | #include "gui.h" |
|---|
| 10 | #include "gui_lang.h" |
|---|
| 11 | #include "gui_draw.h" |
|---|
| 12 | #include "gui_menu.h" |
|---|
| 13 | #include "gui_palette.h" |
|---|
| 14 | #include "gui_mbox.h" |
|---|
| 15 | #include "gui_mpopup.h" |
|---|
| 16 | #include "gui_reversi.h" |
|---|
| 17 | #include "gui_sokoban.h" |
|---|
| 18 | #include "gui_debug.h" |
|---|
| 19 | #include "gui_fselect.h" |
|---|
| 20 | #include "gui_batt.h" |
|---|
| 21 | #include "gui_space.h" |
|---|
| 22 | #include "gui_osd.h" |
|---|
| 23 | #include "gui_read.h" |
|---|
| 24 | #include "gui_calendar.h" |
|---|
| 25 | #include "gui_bench.h" |
|---|
| 26 | #include "gui_grid.h" |
|---|
| 27 | #include "histogram.h" |
|---|
| 28 | #include "script.h" |
|---|
| 29 | #include "motion_detector.h" |
|---|
| 30 | #include "raw.h" |
|---|
| 31 | |
|---|
| 32 | //------------------------------------------------------------------- |
|---|
| 33 | |
|---|
| 34 | #define OPTIONS_AUTOSAVE |
|---|
| 35 | #define SPLASH_TIME 20 |
|---|
| 36 | |
|---|
| 37 | //shortcuts |
|---|
| 38 | //------------------------------------------------------------------ |
|---|
| 39 | // #define KEY_NONE (KEY_DUMMY+1) |
|---|
| 40 | |
|---|
| 41 | #if defined(CAMERA_ixus700_sd500) || defined(CAMERA_ixus800_sd700) || defined(CAMERA_ixus65_sd630) || defined(CAMERA_a560) || defined(CAMERA_ixus850_sd800) || defined (CAMERA_ixus70_sd1000) || defined (CAMERA_ixus950_sd850) || defined(CAMERA_ixus55_sd450) |
|---|
| 42 | //Alt mode |
|---|
| 43 | #define SHORTCUT_TOGGLE_RAW KEY_DISPLAY |
|---|
| 44 | #define SHORTCUT_MF_TOGGLE KEY_UP |
|---|
| 45 | //Half press shoot button |
|---|
| 46 | #define SHORTCUT_TOGGLE_HISTO KEY_DOWN |
|---|
| 47 | #define SHORTCUT_TOGGLE_ZEBRA KEY_MENU |
|---|
| 48 | #define SHORTCUT_TOGGLE_OSD KEY_RIGHT |
|---|
| 49 | //Alt mode & Manual mode |
|---|
| 50 | #define SHORTCUT_SET_INFINITY KEY_DISPLAY |
|---|
| 51 | #define SHORTCUT_SET_HYPERFOCAL KEY_DOWN |
|---|
| 52 | |
|---|
| 53 | #elif defined(CAMERA_g7) |
|---|
| 54 | //Alt mode |
|---|
| 55 | #define SHORTCUT_TOGGLE_RAW KEY_ERASE |
|---|
| 56 | //Half press shoot button |
|---|
| 57 | #define SHORTCUT_TOGGLE_HISTO KEY_DOWN |
|---|
| 58 | #define SHORTCUT_TOGGLE_ZEBRA KEY_LEFT |
|---|
| 59 | #define SHORTCUT_TOGGLE_OSD KEY_RIGHT |
|---|
| 60 | //Alt mode & Manual mode |
|---|
| 61 | #define SHORTCUT_SET_INFINITY KEY_UP |
|---|
| 62 | #define SHORTCUT_SET_HYPERFOCAL KEY_DOWN |
|---|
| 63 | |
|---|
| 64 | #elif defined(CAMERA_a460) |
|---|
| 65 | //Alt mode |
|---|
| 66 | #define SHORTCUT_TOGGLE_RAW KEY_DISPLAY |
|---|
| 67 | #define SHORTCUT_MF_TOGGLE KEY_UP |
|---|
| 68 | //Half press shoot button |
|---|
| 69 | #define SHORTCUT_TOGGLE_HISTO KEY_UP |
|---|
| 70 | #define SHORTCUT_TOGGLE_ZEBRA KEY_LEFT |
|---|
| 71 | #define SHORTCUT_TOGGLE_OSD KEY_RIGHT |
|---|
| 72 | //Alt mode & Manual mode |
|---|
| 73 | // #define SHORTCUT_SET_INFINITY KEY_DISPLAY // KEY_DISPLAY used for gui_subj_dist_override_koef_enum; KEY_LEFT/KEY_RIGHT used for gui_subj_dist_override_value_enum (because of no separate ZOOM_IN/OUT) |
|---|
| 74 | #define SHORTCUT_SET_HYPERFOCAL KEY_DOWN |
|---|
| 75 | |
|---|
| 76 | #else |
|---|
| 77 | |
|---|
| 78 | //Alt mode |
|---|
| 79 | #define SHORTCUT_TOGGLE_RAW KEY_ERASE |
|---|
| 80 | //Half press shoot button |
|---|
| 81 | #define SHORTCUT_TOGGLE_HISTO KEY_UP |
|---|
| 82 | #define SHORTCUT_TOGGLE_ZEBRA KEY_LEFT |
|---|
| 83 | #define SHORTCUT_TOGGLE_OSD KEY_RIGHT |
|---|
| 84 | //Alt mode & Manual mode |
|---|
| 85 | #define SHORTCUT_SET_INFINITY KEY_UP |
|---|
| 86 | #define SHORTCUT_SET_HYPERFOCAL KEY_DOWN |
|---|
| 87 | #endif |
|---|
| 88 | |
|---|
| 89 | |
|---|
| 90 | // forward declarations |
|---|
| 91 | //------------------------------------------------------------------- |
|---|
| 92 | extern void dump_memory(); |
|---|
| 93 | |
|---|
| 94 | static void gui_draw_osd(); |
|---|
| 95 | static void gui_draw_splash(); |
|---|
| 96 | void user_menu_save(); |
|---|
| 97 | void user_menu_restore(); |
|---|
| 98 | // Menu procs |
|---|
| 99 | //------------------------------------------------------------------- |
|---|
| 100 | static void gui_show_build_info(int arg); |
|---|
| 101 | static void gui_show_memory_info(int arg); |
|---|
| 102 | static void gui_draw_palette(int arg); |
|---|
| 103 | static void gui_draw_reversi(int arg); |
|---|
| 104 | static void gui_draw_sokoban(int arg); |
|---|
| 105 | static void gui_draw_debug(int arg); |
|---|
| 106 | static void gui_draw_bench(int arg); |
|---|
| 107 | static void gui_draw_fselect(int arg); |
|---|
| 108 | static void gui_draw_osd_le(int arg); |
|---|
| 109 | static void gui_load_script(int arg); |
|---|
| 110 | static void gui_draw_read(int arg); |
|---|
| 111 | static void gui_draw_read_last(int arg); |
|---|
| 112 | static void gui_draw_load_menu_rbf(int arg); |
|---|
| 113 | static void gui_draw_load_rbf(int arg); |
|---|
| 114 | static void gui_draw_calendar(int arg); |
|---|
| 115 | static void gui_draw_load_lang(int arg); |
|---|
| 116 | static void gui_menuproc_mkbootdisk(int arg); |
|---|
| 117 | #ifndef OPTIONS_AUTOSAVE |
|---|
| 118 | static void gui_menuproc_save(int arg); |
|---|
| 119 | #endif |
|---|
| 120 | static void gui_menuproc_reset(int arg); |
|---|
| 121 | static void gui_grid_lines_load(int arg); |
|---|
| 122 | static void gui_raw_develop(int arg); |
|---|
| 123 | static void gui_menuproc_break_card(int arg); |
|---|
| 124 | static void gui_menuproc_swap_patitons(int arg); |
|---|
| 125 | static const char* gui_histo_show_enum(int change, int arg); |
|---|
| 126 | static const char* gui_histo_mode_enum(int change, int arg); |
|---|
| 127 | static const char* gui_histo_layout_enum(int change, int arg); |
|---|
| 128 | static const char* gui_zebra_mode_enum(int change, int arg); |
|---|
| 129 | static const char* gui_zebra_draw_osd_enum(int change, int arg); |
|---|
| 130 | static const char* gui_font_enum(int change, int arg); |
|---|
| 131 | static const char* gui_raw_prefix_enum(int change, int arg); |
|---|
| 132 | static const char* gui_raw_ext_enum(int change, int arg); |
|---|
| 133 | static const char* gui_raw_nr_enum(int change, int arg); |
|---|
| 134 | static const char* gui_reader_codepage_enum(int change, int arg); |
|---|
| 135 | static const char* gui_zoom_value_enum(int change, int arg); |
|---|
| 136 | static const char* gui_show_values_enum(int change, int arg); |
|---|
| 137 | static const char* gui_dof_show_value_enum(int change, int arg); |
|---|
| 138 | #if defined(CAMERA_s2is) || defined(CAMERA_s3is) || defined(CAMERA_g7) |
|---|
| 139 | static const char* gui_alt_mode_button_enum(int change, int arg); |
|---|
| 140 | #endif |
|---|
| 141 | static const char* gui_alt_power_enum(int change, int arg); |
|---|
| 142 | static const char* gui_video_mode_enum(int change, int arg); |
|---|
| 143 | static const char* gui_video_bitrate_enum(int change, int arg); |
|---|
| 144 | static const char* gui_tv_bracket_values_enum(int change, int arg); |
|---|
| 145 | static const char* gui_av_bracket_values_enum(int change, int arg); |
|---|
| 146 | static const char* gui_iso_bracket_koef_enum(int change, int arg); |
|---|
| 147 | static const char* gui_subj_dist_bracket_koef_enum(int change, int arg); |
|---|
| 148 | static const char* gui_bracket_type_enum(int change, int arg); |
|---|
| 149 | static const char* gui_av_override_enum(int change, int arg); |
|---|
| 150 | static const char* gui_iso_override_koef_enum(int change, int arg); |
|---|
| 151 | static const char* gui_tv_override_koef_enum(int change, int arg); |
|---|
| 152 | static const char* gui_tv_override_value_enum(int change, int arg); |
|---|
| 153 | static const char* gui_tv_enum_type_enum(int change, int arg); |
|---|
| 154 | static const char* gui_subj_dist_override_value_enum(int change, int arg); |
|---|
| 155 | static const char* gui_subj_dist_override_koef_enum(int change, int arg); |
|---|
| 156 | static const char* gui_tv_exposure_order_enum(int change, int arg); |
|---|
| 157 | static const char* gui_av_exposure_order_enum(int change, int arg); |
|---|
| 158 | static const char* gui_iso_exposure_order_enum(int change, int arg); |
|---|
| 159 | static const char* gui_nd_filter_state_enum(int change, int arg); |
|---|
| 160 | //static const char* gui_tv_enum(int change, int arg); |
|---|
| 161 | const char* gui_user_menu_show_enum(int change, int arg); |
|---|
| 162 | |
|---|
| 163 | void rinit(); |
|---|
| 164 | |
|---|
| 165 | |
|---|
| 166 | // Menu callbacks |
|---|
| 167 | //------------------------------------------------------------------- |
|---|
| 168 | static void cb_step_25(); |
|---|
| 169 | static void cb_perc(); |
|---|
| 170 | static void cb_volts(); |
|---|
| 171 | static void cb_space_perc(); |
|---|
| 172 | static void cb_space_mb(); |
|---|
| 173 | static void cb_battery_menu_change(unsigned int item); |
|---|
| 174 | static void cb_zebra_restore_screen(); |
|---|
| 175 | static void cb_zebra_restore_osd(); |
|---|
| 176 | |
|---|
| 177 | // Menu definition |
|---|
| 178 | //------------------------------------------------------------------- |
|---|
| 179 | static CMenuItem script_submenu_items_top[] = { |
|---|
| 180 | {LANG_MENU_SCRIPT_LOAD, MENUITEM_PROC, (int*)gui_load_script }, |
|---|
| 181 | {LANG_MENU_SCRIPT_DELAY, MENUITEM_INT|MENUITEM_F_UNSIGNED, &conf.script_shoot_delay }, |
|---|
| 182 | // remote autostart |
|---|
| 183 | {LANG_MENU_SCRIPT_AUTOSTART, MENUITEM_BOOL, &conf.script_startup }, |
|---|
| 184 | |
|---|
| 185 | #if !defined (CAMERA_a560) && !defined (CAMERA_a700) |
|---|
| 186 | {LANG_MENU_SCRIPT_REMOTE_ENABLE, MENUITEM_BOOL, &conf.remote_enable}, |
|---|
| 187 | #endif |
|---|
| 188 | {LANG_MENU_SCRIPT_CURRENT, MENUITEM_SEPARATOR }, |
|---|
| 189 | {(int)script_title, MENUITEM_TEXT }, |
|---|
| 190 | {LANG_MENU_SCRIPT_PARAMS, MENUITEM_SEPARATOR } |
|---|
| 191 | }; |
|---|
| 192 | |
|---|
| 193 | static CMenuItem script_submenu_items_bottom[] = { |
|---|
| 194 | {LANG_MENU_BACK, MENUITEM_UP }, |
|---|
| 195 | {0} |
|---|
| 196 | }; |
|---|
| 197 | |
|---|
| 198 | static CMenuItem script_submenu_items[sizeof(script_submenu_items_top)/sizeof(script_submenu_items_top[0])+SCRIPT_NUM_PARAMS+ |
|---|
| 199 | sizeof(script_submenu_items_bottom)/sizeof(script_submenu_items_bottom[0])]; |
|---|
| 200 | static CMenu script_submenu = { LANG_MENU_SCRIPT_TITLE, NULL, script_submenu_items }; |
|---|
| 201 | |
|---|
| 202 | |
|---|
| 203 | static CMenuItem games_submenu_items[] = { |
|---|
| 204 | {LANG_MENU_GAMES_REVERSI, MENUITEM_PROC, (int*)gui_draw_reversi }, |
|---|
| 205 | {LANG_MENU_GAMES_SOKOBAN, MENUITEM_PROC, (int*)gui_draw_sokoban }, |
|---|
| 206 | {LANG_MENU_BACK, MENUITEM_UP }, |
|---|
| 207 | {0} |
|---|
| 208 | }; |
|---|
| 209 | static CMenu games_submenu = { LANG_MENU_GAMES_TITLE, NULL, games_submenu_items }; |
|---|
| 210 | |
|---|
| 211 | |
|---|
| 212 | static CMenuItem reader_submenu_items[] = { |
|---|
| 213 | {LANG_MENU_READ_OPEN_NEW, MENUITEM_PROC, (int*)gui_draw_read }, |
|---|
| 214 | {LANG_MENU_READ_OPEN_LAST, MENUITEM_PROC, (int*)gui_draw_read_last }, |
|---|
| 215 | {LANG_MENU_READ_SELECT_FONT, MENUITEM_PROC, (int*)gui_draw_load_rbf }, |
|---|
| 216 | {LANG_MENU_READ_CODEPAGE, MENUITEM_ENUM, (int*)gui_reader_codepage_enum }, |
|---|
| 217 | {LANG_MENU_READ_WORD_WRAP, MENUITEM_BOOL, &conf.reader_wrap_by_words }, |
|---|
| 218 | {LANG_MENU_READ_AUTOSCROLL, MENUITEM_BOOL, &conf.reader_autoscroll }, |
|---|
| 219 | {LANG_MENU_READ_AUTOSCROLL_DELAY, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.reader_autoscroll_delay, MENU_MINMAX(0, 60) }, |
|---|
| 220 | {LANG_MENU_BACK, MENUITEM_UP }, |
|---|
| 221 | {0} |
|---|
| 222 | }; |
|---|
| 223 | static CMenu reader_submenu = { LANG_MENU_READ_TITLE, NULL, reader_submenu_items }; |
|---|
| 224 | |
|---|
| 225 | |
|---|
| 226 | static CMenuItem misc_submenu_items[] = { |
|---|
| 227 | {LANG_MENU_MISC_FILE_BROWSER, MENUITEM_PROC, (int*)gui_draw_fselect }, |
|---|
| 228 | {LANG_MENU_MISC_CALENDAR, MENUITEM_PROC, (int*)gui_draw_calendar }, |
|---|
| 229 | {LANG_MENU_MISC_TEXT_READER, MENUITEM_SUBMENU, (int*)&reader_submenu }, |
|---|
| 230 | {LANG_MENU_MISC_GAMES, MENUITEM_SUBMENU, (int*)&games_submenu }, |
|---|
| 231 | #if defined(CAMERA_a610) || defined(CAMERA_a620) || defined(CAMERA_a630) || defined(CAMERA_a640) || defined(CAMERA_a650) || defined (CAMERA_s2is) || defined (CAMERA_s3is) || defined (CAMERA_s5is) |
|---|
| 232 | {LANG_MENU_MISC_FLASHLIGHT, MENUITEM_BOOL, &conf.flashlight }, |
|---|
| 233 | #endif |
|---|
| 234 | {LANG_MENU_MISC_SHOW_SPLASH, MENUITEM_BOOL, &conf.splash_show }, |
|---|
| 235 | #if !defined(CAMERA_g7) && !defined (CAMERA_ixus700_sd500) && !defined (CAMERA_ixus800_sd700) && !defined (CAMERA_a560) && !defined (CAMERA_ixus850_sd800) && !defined (CAMERA_ixus70_sd1000) && !defined (CAMERA_ixus950_sd850) && !defined (CAMERA_a460) && !defined(CAMERA_ixus55_sd450) |
|---|
| 236 | {LANG_MENU_MISC_ZOOM_FOR_MF, MENUITEM_BOOL, &conf.use_zoom_mf }, |
|---|
| 237 | #endif |
|---|
| 238 | #if defined(CAMERA_s2is) || defined(CAMERA_s3is) || defined(CAMERA_g7) |
|---|
| 239 | {LANG_MENU_MISC_ALT_BUTTON, MENUITEM_ENUM, (int*)gui_alt_mode_button_enum }, |
|---|
| 240 | #endif |
|---|
| 241 | {LANG_MENU_MISC_DISABLE_LCD_OFF, MENUITEM_ENUM, (int*)gui_alt_power_enum }, |
|---|
| 242 | {LANG_MENU_MISC_PALETTE, MENUITEM_PROC, (int*)gui_draw_palette }, |
|---|
| 243 | {LANG_MENU_MISC_BUILD_INFO, MENUITEM_PROC, (int*)gui_show_build_info }, |
|---|
| 244 | {LANG_MENU_MISC_MEMORY_INFO, MENUITEM_PROC, (int*)gui_show_memory_info }, |
|---|
| 245 | {LANG_MENU_BACK, MENUITEM_UP }, |
|---|
| 246 | {0}, |
|---|
| 247 | }; |
|---|
| 248 | static CMenu misc_submenu = { LANG_MENU_MISC_TITLE, NULL, misc_submenu_items }; |
|---|
| 249 | |
|---|
| 250 | |
|---|
| 251 | static CMenuItem debug_submenu_items[] = { |
|---|
| 252 | {LANG_MENU_DEBUG_SHOW_PROPCASES, MENUITEM_BOOL, &debug_propcase_show }, |
|---|
| 253 | {LANG_MENU_DEBUG_SHOW_PARAMETER_DATA, MENUITEM_BOOL, &debug_pardata_show }, |
|---|
| 254 | {LANG_MENU_DEBUG_PROPCASE_PAGE, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &debug_propcase_page, MENU_MINMAX(0, 128) }, |
|---|
| 255 | {LANG_MENU_DEBUG_SHOW_MISC_VALS, MENUITEM_BOOL, &debug_vals_show }, |
|---|
| 256 | {LANG_MENU_DEBUG_MEMORY_BROWSER, MENUITEM_PROC, (int*)gui_draw_debug }, |
|---|
| 257 | {LANG_MENU_DEBUG_BENCHMARK, MENUITEM_PROC, (int*)gui_draw_bench }, |
|---|
| 258 | {LANG_MENU_DEBUG_DUMP_RAM, MENUITEM_BOOL, &conf.ns_enable_memdump }, |
|---|
| 259 | {LANG_MENU_DEBUG_MAKE_BOOTABLE, MENUITEM_PROC, (int*)gui_menuproc_mkbootdisk }, |
|---|
| 260 | #if defined (CAMERA_MULTIPART) |
|---|
| 261 | {LANG_MENU_DEBUG_CREATE_MULTIPART , MENUITEM_PROC, (int*)gui_menuproc_break_card }, |
|---|
| 262 | {LANG_MENU_DEBUG_SWAP_PART, MENUITEM_PROC, (int*)gui_menuproc_swap_patitons }, |
|---|
| 263 | #endif |
|---|
| 264 | {LANG_MENU_BACK, MENUITEM_UP }, |
|---|
| 265 | {0} |
|---|
| 266 | }; |
|---|
| 267 | static CMenu debug_submenu = { LANG_MENU_DEBUG_TITLE, NULL, debug_submenu_items }; |
|---|
| 268 | |
|---|
| 269 | |
|---|
| 270 | static int voltage_step; |
|---|
| 271 | static CMenuItem battery_submenu_items[] = { |
|---|
| 272 | {LANG_MENU_BATT_VOLT_MAX, MENUITEM_INT|MENUITEM_ARG_ADDR_INC, &conf.batt_volts_max, (int)&voltage_step }, |
|---|
| 273 | {LANG_MENU_BATT_VOLT_MIN, MENUITEM_INT|MENUITEM_ARG_ADDR_INC, &conf.batt_volts_min, (int)&voltage_step }, |
|---|
| 274 | {LANG_MENU_BATT_STEP_25, MENUITEM_BOOL|MENUITEM_ARG_CALLBACK, &conf.batt_step_25, (int)cb_step_25 }, |
|---|
| 275 | {(int)"", MENUITEM_SEPARATOR }, |
|---|
| 276 | {LANG_MENU_BATT_SHOW_PERCENT, MENUITEM_BOOL|MENUITEM_ARG_CALLBACK, &conf.batt_perc_show, (int)cb_perc }, |
|---|
| 277 | {LANG_MENU_BATT_SHOW_VOLTS, MENUITEM_BOOL|MENUITEM_ARG_CALLBACK, &conf.batt_volts_show, (int)cb_volts }, |
|---|
| 278 | {LANG_MENU_BATT_SHOW_ICON, MENUITEM_BOOL, &conf.batt_icon_show }, |
|---|
| 279 | {(int)"", MENUITEM_SEPARATOR }, |
|---|
| 280 | {LANG_MENU_SPACE_SHOW_ICON, MENUITEM_BOOL, &conf.space_icon_show }, |
|---|
| 281 | {LANG_MENU_SPACE_SHOW_PERCENT, MENUITEM_BOOL|MENUITEM_ARG_CALLBACK, &conf.space_perc_show, (int)cb_space_perc }, |
|---|
| 282 | {LANG_MENU_SPACE_SHOW_MB, MENUITEM_BOOL|MENUITEM_ARG_CALLBACK, &conf.space_mb_show, (int)cb_space_mb }, |
|---|
| 283 | {LANG_MENU_BACK, MENUITEM_UP }, |
|---|
| 284 | {0} |
|---|
| 285 | }; |
|---|
| 286 | static CMenu battery_submenu = { LANG_MENU_BATT_TITLE, cb_battery_menu_change, battery_submenu_items }; |
|---|
| 287 | |
|---|
| 288 | static CMenuItem dof_submenu_items[] = { |
|---|
| 289 | {LANG_MENU_OSD_SHOW_DOF_CALC, MENUITEM_ENUM, (int*)gui_dof_show_value_enum }, |
|---|
| 290 | {LANG_MENU_DOF_SUBJ_DIST_AS_NEAR_LIMIT, MENUITEM_BOOL, &conf.dof_subj_dist_as_near_limit}, |
|---|
| 291 | {LANG_MENU_DOF_USE_EXIF_SUBJ_DIST, MENUITEM_BOOL, &conf.dof_use_exif_subj_dist}, |
|---|
| 292 | {LANG_MENU_DOF_SUBJ_DIST_IN_MISC, MENUITEM_BOOL, &conf.dof_subj_dist_in_misc}, |
|---|
| 293 | {LANG_MENU_DOF_NEAR_LIMIT_IN_MISC, MENUITEM_BOOL, &conf.dof_near_limit_in_misc}, |
|---|
| 294 | {LANG_MENU_DOF_FAR_LIMIT_IN_MISC, MENUITEM_BOOL, &conf.dof_far_limit_in_misc}, |
|---|
| 295 | {LANG_MENU_DOF_HYPERFOCAL_IN_MISC, MENUITEM_BOOL, &conf.dof_hyperfocal_in_misc}, |
|---|
| 296 | {LANG_MENU_DOF_DEPTH_LIMIT_IN_MISC, MENUITEM_BOOL, &conf.dof_depth_in_misc}, |
|---|
| 297 | #if !defined(CAMERA_a650) && !defined(CAMERA_a720) |
|---|
| 298 | {LANG_MENU_DOF_DIST_FROM_LENS, MENUITEM_BOOL, &conf.dof_dist_from_lens}, |
|---|
| 299 | #endif |
|---|
| 300 | {LANG_MENU_BACK, MENUITEM_UP }, |
|---|
| 301 | {0} |
|---|
| 302 | }; |
|---|
| 303 | static CMenu dof_submenu = { LANG_MENU_DOF_TITLE, /*cb_dof_menu_change*/ NULL, dof_submenu_items }; |
|---|
| 304 | |
|---|
| 305 | static CMenuItem values_submenu_items[] = { |
|---|
| 306 | {LANG_MENU_OSD_SHOW_MISC_VALUES, MENUITEM_ENUM, (int*)gui_show_values_enum }, |
|---|
| 307 | // {LANG_MENU_VALUES_SHOW_IN_REVIEW, MENUITEM_BOOL, &conf.values_show_in_review}, |
|---|
| 308 | {LANG_MENU_SHOW_VALUES_IN_VIDEO, MENUITEM_BOOL, &conf.show_values_in_video}, |
|---|
| 309 | {LANG_MENU_VALUES_SHOW_ZOOM, MENUITEM_BOOL, &conf.values_show_zoom}, |
|---|
| 310 | {LANG_MENU_OSD_ZOOM_VALUE, MENUITEM_ENUM, (int*)gui_zoom_value_enum }, |
|---|
| 311 | {LANG_MENU_OSD_ZOOM_SCALE, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.zoom_scale, MENU_MINMAX(0, 1000)}, |
|---|
| 312 | {LANG_MENU_VALUES_SHOW_REAL_APERTURE, MENUITEM_BOOL, &conf.values_show_real_aperture}, |
|---|
| 313 | {LANG_MENU_VALUES_SHOW_REAL_ISO, MENUITEM_BOOL, &conf.values_show_real_iso}, |
|---|
| 314 | {LANG_MENU_VALUES_SHOW_MARKET_ISO, MENUITEM_BOOL, &conf.values_show_market_iso}, |
|---|
| 315 | {LANG_MENU_SHOW_ISO_ONLY_IN_AUTOISO_MODE, MENUITEM_BOOL, &conf.values_show_iso_only_in_autoiso_mode}, |
|---|
| 316 | {LANG_MENU_VALUES_SHOW_EV_SETED, MENUITEM_BOOL, &conf.values_show_ev_seted}, |
|---|
| 317 | {LANG_MENU_VALUES_SHOW_EV_MEASURED, MENUITEM_BOOL, &conf.values_show_ev_measured}, |
|---|
| 318 | {LANG_MENU_VALUES_SHOW_BV_SETED, MENUITEM_BOOL, &conf.values_show_bv_seted}, |
|---|
| 319 | {LANG_MENU_VALUES_SHOW_BV_MEASURED, MENUITEM_BOOL, &conf.values_show_bv_measured}, |
|---|
| 320 | {LANG_MENU_VALUES_SHOW_OVEREXPOSURE, MENUITEM_BOOL, &conf.values_show_overexposure}, |
|---|
| 321 | {LANG_MENU_SHOW_CANON_OVEREXPOSURE, MENUITEM_BOOL, &conf.values_show_canon_overexposure}, |
|---|
| 322 | {LANG_MENU_VALUES_SHOW_LUMINANCE, MENUITEM_BOOL, &conf.values_show_luminance}, |
|---|
| 323 | {LANG_MENU_BACK, MENUITEM_UP }, |
|---|
| 324 | {0} |
|---|
| 325 | }; |
|---|
| 326 | static CMenu values_submenu = { LANG_MENU_OSD_VALUES_TITLE, /*cb_values_menu_change*/ NULL, values_submenu_items }; |
|---|
| 327 | |
|---|
| 328 | static CMenuItem video_submenu_items[] = { |
|---|
| 329 | {LANG_MENU_VIDEO_MODE, MENUITEM_ENUM, (int*)gui_video_mode_enum}, |
|---|
| 330 | {LANG_MENU_VIDEO_BITRATE, MENUITEM_ENUM, (int*)gui_video_bitrate_enum}, |
|---|
| 331 | {LANG_MENU_VIDEO_QUALITY, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.video_quality, MENU_MINMAX(1, 99)}, |
|---|
| 332 | {LANG_MENU_BACK, MENUITEM_UP }, |
|---|
| 333 | {0} |
|---|
| 334 | }; |
|---|
| 335 | static CMenu video_submenu = { LANG_MENU_VIDEO_PARAM_TITLE, NULL, video_submenu_items }; |
|---|
| 336 | |
|---|
| 337 | static CMenuItem bracketing_in_continuous_submenu_items[] = { |
|---|
| 338 | {LANG_MENU_TV_BRACKET_VALUE, MENUITEM_ENUM, (int*)gui_tv_bracket_values_enum }, |
|---|
| 339 | #if !defined (CAMERA_ixus700_sd500) && !defined (CAMERA_ixus800_sd700) && !defined (CAMERA_ixus850_sd800) && !defined (CAMERA_ixus70_sd1000) && !defined (CAMERA_ixus950_sd850) && !defined (CAMERA_a560) && !defined (CAMERA_a460) && !defined(CAMERA_ixus55_sd450) |
|---|
| 340 | {LANG_MENU_AV_BRACKET_VALUE, MENUITEM_ENUM, (int*)gui_av_bracket_values_enum }, |
|---|
| 341 | #endif |
|---|
| 342 | {LANG_MENU_ISO_BRACKET_VALUE, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.iso_bracket_value, MENU_MINMAX(0, 100)}, |
|---|
| 343 | {LANG_MENU_ISO_BRACKET_KOEF, MENUITEM_ENUM, (int*)gui_iso_bracket_koef_enum}, |
|---|
| 344 | #if !defined (CAMERA_ixus700_sd500) |
|---|
| 345 | {LANG_MENU_SUBJ_DIST_BRACKET_VALUE, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.subj_dist_bracket_value, MENU_MINMAX(0, 100)}, |
|---|
| 346 | {LANG_MENU_SUBJ_DIST_BRACKET_KOEF, MENUITEM_ENUM, (int*)gui_subj_dist_bracket_koef_enum}, |
|---|
| 347 | #endif |
|---|
| 348 | {LANG_MENU_BRACKET_TYPE, MENUITEM_ENUM, (int*)gui_bracket_type_enum }, |
|---|
| 349 | {LANG_MENU_CLEAR_BRACKET_VALUES, MENUITEM_BOOL, (int*)&conf.clear_bracket}, |
|---|
| 350 | {LANG_MENU_BACK, MENUITEM_UP }, |
|---|
| 351 | {0} |
|---|
| 352 | }; |
|---|
| 353 | static CMenu bracketing_in_continuous_submenu = { LANG_MENU_BRACKET_IN_CONTINUOUS_TITLE, NULL, bracketing_in_continuous_submenu_items }; |
|---|
| 354 | |
|---|
| 355 | |
|---|
| 356 | static CMenuItem exposure_submenu_items[] = { |
|---|
| 357 | {LANG_MENU_RECALC_EXPOSURE, MENUITEM_BOOL, &conf.recalc_exposure}, |
|---|
| 358 | {LANG_MENU_TV_EXPOSURE_ORDER, MENUITEM_ENUM, (int*)gui_tv_exposure_order_enum}, |
|---|
| 359 | {LANG_MENU_AV_EXPOSURE_ORDER, MENUITEM_ENUM, (int*)gui_av_exposure_order_enum}, |
|---|
| 360 | {LANG_MENU_ISO_EXPOSURE_ORDER, MENUITEM_ENUM, (int*)gui_iso_exposure_order_enum}, |
|---|
| 361 | {LANG_MENU_BACK, MENUITEM_UP }, |
|---|
| 362 | {0} |
|---|
| 363 | }; |
|---|
| 364 | static CMenu exposure_submenu = { LANG_MENU_EXPOSURE_TITLE, NULL, exposure_submenu_items }; |
|---|
| 365 | |
|---|
| 366 | static CMenuItem operation_submenu_items[] = { |
|---|
| 367 | {LANG_MENU_OVERRIDE_TV_VALUE, MENUITEM_ENUM, (int*)gui_tv_override_value_enum}, |
|---|
| 368 | {LANG_MENU_OVERRIDE_TV_KOEF, MENUITEM_ENUM, (int*)gui_tv_override_koef_enum}, |
|---|
| 369 | {LANG_MENU_TV_ENUM_TYPE, MENUITEM_ENUM, (int*)gui_tv_enum_type_enum}, |
|---|
| 370 | #if !defined (CAMERA_ixus700_sd500) && !defined (CAMERA_ixus800_sd700) && !defined (CAMERA_a560) && !defined (CAMERA_ixus850_sd800) && !defined (CAMERA_ixus70_sd1000) && !defined (CAMERA_ixus950_sd850) && !defined (CAMERA_a460) && !defined(CAMERA_ixus55_sd450) |
|---|
| 371 | {LANG_MENU_OVERRIDE_AV_VALUE, MENUITEM_ENUM, (int*)gui_av_override_enum }, |
|---|
| 372 | #endif |
|---|
| 373 | #if defined (CAMERA_ixus700_sd500) || defined (CAMERA_ixus800_sd700) || defined (CAMERA_ixus850_sd800) || defined (CAMERA_ixus70_sd1000) || defined (CAMERA_ixus950_sd850) || defined (CAMERA_a560) || defined (CAMERA_a570) || defined (CAMERA_g7) || defined (CAMERA_a460) || defined(CAMERA_ixus55_sd450) |
|---|
| 374 | {LANG_MENU_OVERRIDE_ND_FILTER, MENUITEM_ENUM, (int*)gui_nd_filter_state_enum }, |
|---|
| 375 | #endif |
|---|
| 376 | {LANG_MENU_OVERRIDE_ISO_VALUE, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.iso_override_value, MENU_MINMAX(0, 800)}, |
|---|
| 377 | {LANG_MENU_OVERRIDE_ISO_KOEF, MENUITEM_ENUM, (int*)gui_iso_override_koef_enum}, |
|---|
| 378 | #if !defined (CAMERA_ixus700_sd500) |
|---|
| 379 | {LANG_MENU_OVERRIDE_SUBJ_DIST_VALUE, MENUITEM_ENUM, (int*)gui_subj_dist_override_value_enum}, |
|---|
| 380 | {LANG_MENU_OVERRIDE_SUBJ_DIST_KOEF, MENUITEM_ENUM, (int*)gui_subj_dist_override_koef_enum}, |
|---|
| 381 | #endif |
|---|
| 382 | {LANG_MENU_BRACKET_IN_CONTINUOUS, MENUITEM_SUBMENU, (int*)&bracketing_in_continuous_submenu }, |
|---|
| 383 | {LANG_MENU_CLEAR_OVERRIDE_VALUES, MENUITEM_BOOL, (int*)&conf.clear_override}, |
|---|
| 384 | //{LANG_MENU_EXPOSURE, MENUITEM_SUBMENU, (int*)&exposure_submenu }, |
|---|
| 385 | {LANG_MENU_BACK, MENUITEM_UP }, |
|---|
| 386 | {0} |
|---|
| 387 | }; |
|---|
| 388 | static CMenu operation_submenu = { LANG_MENU_OPERATION_PARAM_TITLE, NULL, operation_submenu_items }; |
|---|
| 389 | |
|---|
| 390 | static CMenuItem grid_submenu_items[] = { |
|---|
| 391 | {LANG_MENU_SHOW_GRID, MENUITEM_BOOL, &conf.show_grid_lines }, |
|---|
| 392 | {LANG_MENU_GRID_LOAD, MENUITEM_PROC, (int*)gui_grid_lines_load }, |
|---|
| 393 | {LANG_MENU_GRID_CURRENT, MENUITEM_SEPARATOR }, |
|---|
| 394 | {(int)grid_title, MENUITEM_TEXT }, |
|---|
| 395 | {(int)"", MENUITEM_SEPARATOR }, |
|---|
| 396 | {LANG_MENU_GRID_FORCE_COLOR, MENUITEM_BOOL, &conf.grid_force_color }, |
|---|
| 397 | {LANG_MENU_GRID_COLOR_LINE, MENUITEM_COLOR_FG, (int*)&conf.grid_color }, |
|---|
| 398 | {LANG_MENU_GRID_COLOR_FILL, MENUITEM_COLOR_BG, (int*)&conf.grid_color }, |
|---|
| 399 | {LANG_MENU_BACK, MENUITEM_UP }, |
|---|
| 400 | {0} |
|---|
| 401 | }; |
|---|
| 402 | static CMenu grid_submenu = { LANG_MENU_GRID_TITLE, NULL, grid_submenu_items }; |
|---|
| 403 | |
|---|
| 404 | static CMenuItem visual_submenu_items[] = { |
|---|
| 405 | {LANG_MENU_VIS_LANG, MENUITEM_PROC, (int*)gui_draw_load_lang }, |
|---|
| 406 | {LANG_MENU_VIS_OSD_FONT, MENUITEM_ENUM, (int*)gui_font_enum }, |
|---|
| 407 | {LANG_MENU_VIS_MENU_FONT, MENUITEM_PROC, (int*)gui_draw_load_menu_rbf }, |
|---|
| 408 | {LANG_MENU_VIS_COLORS, MENUITEM_SEPARATOR }, |
|---|
| 409 | {LANG_MENU_VIS_OSD_TEXT, MENUITEM_COLOR_FG, (int*)&conf.osd_color }, |
|---|
| 410 | {LANG_MENU_VIS_OSD_BKG, MENUITEM_COLOR_BG, (int*)&conf.osd_color }, |
|---|
| 411 | {LANG_MENU_VIS_OSD_WARNING, MENUITEM_COLOR_FG, (int*)&conf.osd_color_warn }, |
|---|
| 412 | {LANG_MENU_VIS_OSD_WARNING_BKG, MENUITEM_COLOR_BG, (int*)&conf.osd_color_warn }, |
|---|
| 413 | {LANG_MENU_VIS_HISTO, MENUITEM_COLOR_FG, (int*)&conf.histo_color }, |
|---|
| 414 | {LANG_MENU_VIS_HISTO_BKG, MENUITEM_COLOR_BG, (int*)&conf.histo_color }, |
|---|
| 415 | {LANG_MENU_VIS_HISTO_BORDER, MENUITEM_COLOR_FG, (int*)&conf.histo_color2 }, |
|---|
| 416 | {LANG_MENU_VIS_HISTO_MARKERS, MENUITEM_COLOR_BG, (int*)&conf.histo_color2 }, |
|---|
| 417 | {LANG_MENU_VIS_ZEBRA_UNDER, MENUITEM_COLOR_BG, (int*)&conf.zebra_color }, |
|---|
| 418 | {LANG_MENU_VIS_ZEBRA_OVER, MENUITEM_COLOR_FG, (int*)&conf.zebra_color }, |
|---|
| 419 | {LANG_MENU_VIS_BATT_ICON, MENUITEM_COLOR_FG, (int*)&conf.batt_icon_color }, |
|---|
| 420 | {LANG_MENU_VIS_SPACE_ICON, MENUITEM_COLOR_FG, (int*)&conf.space_color }, |
|---|
| 421 | {LANG_MENU_VIS_MENU_TEXT, MENUITEM_COLOR_FG, (int*)&conf.menu_color }, |
|---|
| 422 | {LANG_MENU_VIS_MENU_BKG, MENUITEM_COLOR_BG, (int*)&conf.menu_color }, |
|---|
| 423 | {LANG_MENU_VIS_READER_TEXT, MENUITEM_COLOR_FG, (int*)&conf.reader_color }, |
|---|
| 424 | {LANG_MENU_VIS_READER_BKG, MENUITEM_COLOR_BG, (int*)&conf.reader_color }, |
|---|
| 425 | {LANG_MENU_BACK, MENUITEM_UP }, |
|---|
| 426 | {0} |
|---|
| 427 | }; |
|---|
| 428 | static CMenu visual_submenu = { LANG_MENU_VIS_TITLE, NULL, visual_submenu_items }; |
|---|
| 429 | |
|---|
| 430 | void blank_menu() |
|---|
| 431 | {}; |
|---|
| 432 | |
|---|
| 433 | static CMenuItem user_submenu_items[] = { |
|---|
| 434 | { LANG_MENU_ITEM_BLANK, MENUITEM_PROC, (int*)blank_menu,0}, |
|---|
| 435 | { LANG_MENU_ITEM_BLANK, MENUITEM_PROC, (int*)blank_menu,0}, |
|---|
| 436 | { LANG_MENU_ITEM_BLANK, MENUITEM_PROC, (int*)blank_menu,0}, |
|---|
| 437 | { LANG_MENU_ITEM_BLANK, MENUITEM_PROC, (int*)blank_menu,0}, |
|---|
| 438 | { LANG_MENU_ITEM_BLANK, MENUITEM_PROC, (int*)blank_menu,0}, |
|---|
| 439 | { LANG_MENU_ITEM_BLANK, MENUITEM_PROC, (int*)blank_menu,0}, |
|---|
| 440 | { LANG_MENU_ITEM_BLANK, MENUITEM_PROC, (int*)blank_menu,0}, |
|---|
| 441 | { LANG_MENU_ITEM_BLANK, MENUITEM_PROC, (int*)blank_menu,0}, |
|---|
| 442 | { LANG_MENU_ITEM_BLANK, MENUITEM_PROC, (int*)blank_menu,0}, |
|---|
| 443 | { LANG_MENU_ITEM_BLANK, MENUITEM_PROC, (int*)blank_menu,0}, |
|---|
| 444 | { LANG_MENU_MAIN_TITLE, MENUITEM_PROC, (int*)rinit}, |
|---|
| 445 | {0} |
|---|
| 446 | }; |
|---|
| 447 | static CMenu user_submenu = { LANG_MENU_USER_MENU, NULL, user_submenu_items }; |
|---|
| 448 | |
|---|
| 449 | static CMenuItem osd_submenu_items[] = { |
|---|
| 450 | {LANG_MENU_OSD_SHOW, MENUITEM_BOOL, &conf.show_osd }, |
|---|
| 451 | {LANG_MENU_USER_MENU, MENUITEM_SUBMENU, (int*)&user_submenu}, |
|---|
| 452 | {LANG_MENU_USER_MENU_ENABLE, MENUITEM_ENUM, (int*)gui_user_menu_show_enum }, |
|---|
| 453 | {LANG_MENU_OSD_SHOW_STATES, MENUITEM_BOOL, &conf.show_state }, |
|---|
| 454 | |
|---|
| 455 | {LANG_MENU_OSD_SHOW_CLOCK, MENUITEM_BOOL, &conf.show_clock }, |
|---|
| 456 | {LANG_MENU_OSD_LAYOUT_EDITOR, MENUITEM_PROC, (int*)gui_draw_osd_le }, |
|---|
| 457 | {LANG_MENU_OSD_VALUES, MENUITEM_SUBMENU, (int*)&values_submenu }, |
|---|
| 458 | {LANG_MENU_OSD_DOF_CALC, MENUITEM_SUBMENU, (int*)&dof_submenu }, |
|---|
| 459 | {LANG_MENU_OSD_BATT_PARAMS, MENUITEM_SUBMENU, (int*)&battery_submenu }, |
|---|
| 460 | {LANG_MENU_OSD_GRID_PARAMS, MENUITEM_SUBMENU, (int*)&grid_submenu }, |
|---|
| 461 | {LANG_MENU_OSD_SHOW_RAW_STATE, MENUITEM_BOOL, &conf.show_raw_state }, |
|---|
| 462 | {LANG_MENU_OSD_SHOW_REMAINING_RAW, MENUITEM_BOOL, &conf.show_remaining_raw }, |
|---|
| 463 | {LANG_MENU_OSD_SHOW_IN_REVIEW, MENUITEM_BOOL, &conf.show_osd_in_review}, |
|---|
| 464 | #ifndef OPTIONS_AUTOSAVE |
|---|
| 465 | {LANG_MENU_MAIN_SAVE_OPTIONS, MENUITEM_PROC, (int*)gui_menuproc_save }, |
|---|
| 466 | #endif |
|---|
| 467 | {LANG_MENU_BACK, MENUITEM_UP }, |
|---|
| 468 | {0} |
|---|
| 469 | }; |
|---|
| 470 | static CMenu osd_submenu = { LANG_MENU_OSD_TITLE, NULL, osd_submenu_items }; |
|---|
| 471 | |
|---|
| 472 | static CMenuItem histo_submenu_items[] = { |
|---|
| 473 | {LANG_MENU_HISTO_SHOW, MENUITEM_ENUM, (int*)gui_histo_show_enum }, |
|---|
| 474 | {LANG_MENU_HISTO_LAYOUT, MENUITEM_ENUM, (int*)gui_histo_layout_enum }, |
|---|
| 475 | {LANG_MENU_HISTO_MODE, MENUITEM_ENUM, (int*)gui_histo_mode_enum }, |
|---|
| 476 | {LANG_MENU_HISTO_EXP, MENUITEM_BOOL, &conf.show_overexp }, |
|---|
| 477 | {LANG_MENU_HISTO_IGNORE_PEAKS, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.histo_ignore_boundary, MENU_MINMAX(0, 32)}, |
|---|
| 478 | {LANG_MENU_HISTO_MAGNIFY, MENUITEM_BOOL, &conf.histo_auto_ajust }, |
|---|
| 479 | {LANG_MENU_HISTO_SHOW_EV_GRID, MENUITEM_BOOL, &conf.histo_show_ev_grid }, |
|---|
| 480 | {LANG_MENU_BACK, MENUITEM_UP }, |
|---|
| 481 | {0} |
|---|
| 482 | }; |
|---|
| 483 | static CMenu histo_submenu = { LANG_MENU_HISTO_TITLE, NULL, histo_submenu_items }; |
|---|
| 484 | |
|---|
| 485 | static CMenuItem raw_submenu_items[] = { |
|---|
| 486 | {LANG_MENU_RAW_SAVE, MENUITEM_BOOL, &conf.save_raw }, |
|---|
| 487 | {LANG_MENU_RAW_NOISE_REDUCTION, MENUITEM_ENUM, (int*)gui_raw_nr_enum }, |
|---|
| 488 | {LANG_MENU_RAW_FIRST_ONLY, MENUITEM_BOOL, &conf.raw_save_first_only }, |
|---|
| 489 | {LANG_MENU_RAW_SAVE_IN_DIR, MENUITEM_BOOL, &conf.raw_in_dir }, |
|---|
| 490 | {LANG_MENU_RAW_PREFIX, MENUITEM_ENUM, (int*)gui_raw_prefix_enum }, |
|---|
| 491 | {LANG_MENU_RAW_EXTENSION, MENUITEM_ENUM, (int*)gui_raw_ext_enum }, |
|---|
| 492 | {LANG_MENU_RAW_DEVELOP, MENUITEM_PROC, (int*)gui_raw_develop }, |
|---|
| 493 | {LANG_MENU_BACK, MENUITEM_UP }, |
|---|
| 494 | {0} |
|---|
| 495 | }; |
|---|
| 496 | static CMenu raw_submenu = { LANG_MENU_RAW_TITLE, NULL, raw_submenu_items }; |
|---|
| 497 | |
|---|
| 498 | |
|---|
| 499 | static CMenuItem zebra_submenu_items[] = { |
|---|
| 500 | {LANG_MENU_ZEBRA_DRAW, MENUITEM_BOOL, &conf.zebra_draw }, |
|---|
| 501 | {LANG_MENU_ZEBRA_MODE, MENUITEM_ENUM, (int*)gui_zebra_mode_enum }, |
|---|
| 502 | {LANG_MENU_ZEBRA_UNDER, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.zebra_under, MENU_MINMAX(0, 32)}, |
|---|
| 503 | {LANG_MENU_ZEBRA_OVER, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.zebra_over, MENU_MINMAX(0, 32)}, |
|---|
| 504 | {LANG_MENU_ZEBRA_RESTORE_SCREEN, MENUITEM_BOOL|MENUITEM_ARG_CALLBACK, &conf.zebra_restore_screen, (int)cb_zebra_restore_screen }, |
|---|
| 505 | {LANG_MENU_ZEBRA_RESTORE_OSD, MENUITEM_BOOL|MENUITEM_ARG_CALLBACK, &conf.zebra_restore_osd, (int)cb_zebra_restore_osd }, |
|---|
| 506 | {LANG_MENU_ZEBRA_DRAW_OVER, MENUITEM_ENUM, (int*)gui_zebra_draw_osd_enum }, |
|---|
| 507 | {LANG_MENU_ZEBRA_MULTICHANNEL, MENUITEM_BOOL, &conf.zebra_multichannel}, |
|---|
| 508 | {LANG_MENU_BACK, MENUITEM_UP }, |
|---|
| 509 | {0} |
|---|
| 510 | }; |
|---|
| 511 | static CMenu zebra_submenu = { LANG_MENU_ZEBRA_TITLE, NULL, zebra_submenu_items }; |
|---|
| 512 | |
|---|
| 513 | |
|---|
| 514 | static CMenuItem root_menu_items[] = { |
|---|
| 515 | {LANG_MENU_OPERATION_PARAM, MENUITEM_SUBMENU, (int*)&operation_submenu }, |
|---|
| 516 | {LANG_MENU_MAIN_OSD_PARAM, MENUITEM_SUBMENU, (int*)&osd_submenu }, |
|---|
| 517 | #if !defined (CAMERA_a720) && !defined(CAMERA_a650) |
|---|
| 518 | {LANG_MENU_VIDEO_PARAM, MENUITEM_SUBMENU, (int*)&video_submenu }, |
|---|
| 519 | #endif |
|---|
| 520 | {LANG_MENU_MAIN_RAW_PARAM, MENUITEM_SUBMENU, (int*)&raw_submenu }, |
|---|
| 521 | {LANG_MENU_MAIN_HISTO_PARAM, MENUITEM_SUBMENU, (int*)&histo_submenu }, |
|---|
| 522 | {LANG_MENU_MAIN_ZEBRA_PARAM, MENUITEM_SUBMENU, (int*)&zebra_submenu }, |
|---|
| 523 | {LANG_MENU_MAIN_SCRIPT_PARAM, MENUITEM_SUBMENU, (int*)&script_submenu }, |
|---|
| 524 | {LANG_MENU_MAIN_VISUAL_PARAM, MENUITEM_SUBMENU, (int*)&visual_submenu }, |
|---|
| 525 | {LANG_MENU_MAIN_MISC, MENUITEM_SUBMENU, (int*)&misc_submenu }, |
|---|
| 526 | {LANG_MENU_MAIN_DEBUG, MENUITEM_SUBMENU, (int*)&debug_submenu }, |
|---|
| 527 | {LANG_MENU_MAIN_RESET_OPTIONS, MENUITEM_PROC, (int*)gui_menuproc_reset }, |
|---|
| 528 | #ifndef OPTIONS_AUTOSAVE |
|---|
| 529 | {LANG_MENU_MAIN_SAVE_OPTIONS, MENUITEM_PROC, (int*)gui_menuproc_save }, |
|---|
| 530 | #endif |
|---|
| 531 | {0} |
|---|
| 532 | }; |
|---|
| 533 | |
|---|
| 534 | static CMenu root_menu = { LANG_MENU_MAIN_TITLE, NULL, root_menu_items }; |
|---|
| 535 | static int gui_user_menu_flag; |
|---|
| 536 | |
|---|
| 537 | void rinit(){ |
|---|
| 538 | gui_menu_init(&root_menu); |
|---|
| 539 | } |
|---|
| 540 | |
|---|
| 541 | static CMenuItem blank_menu_item = { LANG_MENU_ITEM_BLANK, MENUITEM_PROC, (int*)blank_menu,0}; |
|---|
| 542 | |
|---|
| 543 | void add_user_menu(CMenuItem curr_menu_item, int* gui_menu_add_item, int del) { |
|---|
| 544 | if (*gui_menu_add_item<10){ |
|---|
| 545 | if (del) { |
|---|
| 546 | user_submenu_items[*gui_menu_add_item] = blank_menu_item; |
|---|
| 547 | } else { |
|---|
| 548 | user_submenu_items[*gui_menu_add_item] = curr_menu_item; |
|---|
| 549 | *gui_menu_add_item += 1; |
|---|
| 550 | } |
|---|
| 551 | } |
|---|
| 552 | } |
|---|
| 553 | |
|---|
| 554 | //------------------------------------------------------------------- |
|---|
| 555 | void cb_step_25() { |
|---|
| 556 | voltage_step = (conf.batt_step_25)?25:1; |
|---|
| 557 | } |
|---|
| 558 | |
|---|
| 559 | void cb_perc() { |
|---|
| 560 | conf.batt_volts_show=0; |
|---|
| 561 | } |
|---|
| 562 | |
|---|
| 563 | void cb_volts() { |
|---|
| 564 | conf.batt_perc_show=0; |
|---|
| 565 | } |
|---|
| 566 | |
|---|
| 567 | void cb_space_perc() { |
|---|
| 568 | conf.space_mb_show=0; |
|---|
| 569 | } |
|---|
| 570 | |
|---|
| 571 | void cb_space_mb() { |
|---|
| 572 | conf.space_perc_show=0; |
|---|
| 573 | } |
|---|
| 574 | |
|---|
| 575 | void cb_battery_menu_change(unsigned int item) { |
|---|
| 576 | switch (item) { |
|---|
| 577 | case 0: //Voltage MAX |
|---|
| 578 | if (conf.batt_volts_max<conf.batt_volts_min+25) { |
|---|
| 579 | conf.batt_volts_min = conf.batt_volts_max-25; |
|---|
| 580 | } |
|---|
| 581 | break; |
|---|
| 582 | case 1: //Voltage MIN |
|---|
| 583 | if (conf.batt_volts_min>conf.batt_volts_max-25) { |
|---|
| 584 | conf.batt_volts_max = conf.batt_volts_min+25; |
|---|
| 585 | } |
|---|
| 586 | break; |
|---|
| 587 | default: |
|---|
| 588 | break; |
|---|
| 589 | } |
|---|
| 590 | } |
|---|
| 591 | |
|---|
| 592 | void cb_zebra_restore_screen() { |
|---|
| 593 | if (!conf.zebra_restore_screen) |
|---|
| 594 | conf.zebra_restore_osd = 0; |
|---|
| 595 | } |
|---|
| 596 | |
|---|
| 597 | void cb_zebra_restore_osd() { |
|---|
| 598 | if (conf.zebra_restore_osd) |
|---|
| 599 | conf.zebra_restore_screen = 1; |
|---|
| 600 | } |
|---|
| 601 | |
|---|
| 602 | //------------------------------------------------------------------- |
|---|
| 603 | const char* gui_histo_mode_enum(int change, int arg) { |
|---|
| 604 | static const char* modes[]={ "Linear", "Log" }; |
|---|
| 605 | |
|---|
| 606 | conf.histo_mode+=change; |
|---|
| 607 | if (conf.histo_mode<0) |
|---|
| 608 | conf.histo_mode=(sizeof(modes)/sizeof(modes[0]))-1; |
|---|
| 609 | else if (conf.histo_mode>=(sizeof(modes)/sizeof(modes[0]))) |
|---|
| 610 | conf.histo_mode=0; |
|---|
| 611 | |
|---|
| 612 | histogram_set_mode(conf.histo_mode); |
|---|
| 613 | |
|---|
| 614 | return modes[conf.histo_mode]; |
|---|
| 615 | } |
|---|
| 616 | |
|---|
| 617 | //------------------------------------------------------------------- |
|---|
| 618 | const char* gui_histo_layout_enum(int change, int arg) { |
|---|
| 619 | static const char* modes[]={ "RGB", "Y", "RGB Y", "R G B", "RGB all", "Y all", "Blend", "Blend Y"}; |
|---|
| 620 | |
|---|
| 621 | conf.histo_layout+=change; |
|---|
| 622 | if (conf.histo_layout<0) |
|---|
| 623 | conf.histo_layout=(sizeof(modes)/sizeof(modes[0]))-1; |
|---|
| 624 | else if (conf.histo_layout>=(sizeof(modes)/sizeof(modes[0]))) |
|---|
| 625 | conf.histo_layout=0; |
|---|
| 626 | |
|---|
| 627 | if (conf.histo_layout==OSD_HISTO_LAYOUT_Y || conf.histo_layout==OSD_HISTO_LAYOUT_Y_argb) { |
|---|
| 628 | histogram_set_main(HISTO_Y); |
|---|
| 629 | } else { |
|---|
| 630 | histogram_set_main(HISTO_RGB); |
|---|
| 631 | } |
|---|
| 632 | |
|---|
| 633 | return modes[conf.histo_layout]; |
|---|
| 634 | } |
|---|
| 635 | |
|---|
| 636 | //------------------------------------------------------------------- |
|---|
| 637 | const char* gui_font_enum(int change, int arg) { |
|---|
| 638 | static const char* fonts[]={ "Win1250", "Win1251", "Win1252", "Win1254", "Win1257"}; |
|---|
| 639 | |
|---|
| 640 | conf.font_cp+=change; |
|---|
| 641 | if (conf.font_cp<0) |
|---|
| 642 | conf.font_cp=(sizeof(fonts)/sizeof(fonts[0]))-1; |
|---|
| 643 | else if (conf.font_cp>=(sizeof(fonts)/sizeof(fonts[0]))) |
|---|
| 644 | conf.font_cp=0; |
|---|
| 645 | |
|---|
| 646 | if (change != 0) { |
|---|
| 647 | font_set(conf.font_cp); |
|---|
| 648 | if (!rbf_load(conf.menu_rbf_file)) |
|---|
| 649 | rbf_load_from_8x16(current_font); |
|---|
| 650 | rbf_set_codepage(FONT_CP_WIN); |
|---|
| 651 | gui_menu_init(NULL); |
|---|
| 652 | } |
|---|
| 653 | |
|---|
| 654 | return fonts[conf.font_cp]; |
|---|
| 655 | } |
|---|
| 656 | |
|---|
| 657 | //------------------------------------------------------------------- |
|---|
| 658 | const char* gui_raw_prefix_enum(int change, int arg) { |
|---|
| 659 | static const char* prefixes[]={ "IMG_", "CRW_", "SND_"}; |
|---|
| 660 | |
|---|
| 661 | conf.raw_prefix+=change; |
|---|
| 662 | if (conf.raw_prefix<0) |
|---|
| 663 | conf.raw_prefix=(sizeof(prefixes)/sizeof(prefixes[0]))-1; |
|---|
| 664 | else if (conf.raw_prefix>=(sizeof(prefixes)/sizeof(prefixes[0]))) |
|---|
| 665 | conf.raw_prefix=0; |
|---|
| 666 | |
|---|
| 667 | return prefixes[conf.raw_prefix]; |
|---|
| 668 | } |
|---|
| 669 | |
|---|
| 670 | //------------------------------------------------------------------- |
|---|
| 671 | const char* gui_raw_ext_enum(int change, int arg) { |
|---|
| 672 | static const char* exts[]={ ".JPG", ".CRW", ".CR2", ".THM", ".WAV"}; |
|---|
| 673 | |
|---|
| 674 | conf.raw_ext+=change; |
|---|
| 675 | if (conf.raw_ext<0) |
|---|
| 676 | conf.raw_ext=(sizeof(exts)/sizeof(exts[0]))-1; |
|---|
| 677 | else if (conf.raw_ext>=(sizeof(exts)/sizeof(exts[0]))) |
|---|
| 678 | conf.raw_ext=0; |
|---|
| 679 | |
|---|
| 680 | return exts[conf.raw_ext]; |
|---|
| 681 | } |
|---|
| 682 | |
|---|
| 683 | //------------------------------------------------------------------- |
|---|
| 684 | const char* gui_raw_nr_enum(int change, int arg) { |
|---|
| 685 | static const char* modes[]={ "Auto", "Off", "On"}; |
|---|
| 686 | |
|---|
| 687 | conf.raw_nr+=change; |
|---|
| 688 | if (conf.raw_nr<0) |
|---|
| 689 | conf.raw_nr=(sizeof(modes)/sizeof(modes[0]))-1; |
|---|
| 690 | else if (conf.raw_nr>=(sizeof(modes)/sizeof(modes[0]))) |
|---|
| 691 | conf.raw_nr=0; |
|---|
| 692 | |
|---|
| 693 | return modes[conf.raw_nr]; |
|---|
| 694 | } |
|---|
| 695 | |
|---|
| 696 | //------------------------------------------------------------------- |
|---|
| 697 | const char* gui_reader_codepage_enum(int change, int arg) { |
|---|
| 698 | static const char* cps[]={ "Win1251", "DOS"}; |
|---|
| 699 | |
|---|
| 700 | conf.reader_codepage+=change; |
|---|
| 701 | if (conf.reader_codepage<0) |
|---|
| 702 | conf.reader_codepage=(sizeof(cps)/sizeof(cps[0]))-1; |
|---|
| 703 | else if (conf.reader_codepage>=(sizeof(cps)/sizeof(cps[0]))) |
|---|
| 704 | conf.reader_codepage=0; |
|---|
| 705 | |
|---|
| 706 | return cps[conf.reader_codepage]; |
|---|
| 707 | } |
|---|
| 708 | |
|---|
| 709 | //------------------------------------------------------------------- |
|---|
| 710 | const char* gui_zebra_mode_enum(int change, int arg) { |
|---|
| 711 | static const char* modes[]={ "Blink 1", "Blink 2", "Blink 3", "Solid", "Zebra 1", "Zebra 2" }; |
|---|
| 712 | |
|---|
| 713 | conf.zebra_mode+=change; |
|---|
| 714 | if (conf.zebra_mode<0) |
|---|
| 715 | conf.zebra_mode=(sizeof(modes)/sizeof(modes[0]))-1; |
|---|
| 716 | else if (conf.zebra_mode>=(sizeof(modes)/sizeof(modes[0]))) |
|---|
| 717 | conf.zebra_mode=0; |
|---|
| 718 | |
|---|
| 719 | return modes[conf.zebra_mode]; |
|---|
| 720 | } |
|---|
| 721 | |
|---|
| 722 | //------------------------------------------------------------------- |
|---|
| 723 | const char* gui_zebra_draw_osd_enum(int change, int arg) { |
|---|
| 724 | static const char* modes[]={ "Nothing", "Histo", "OSD" }; |
|---|
| 725 | |
|---|
| 726 | conf.zebra_draw_osd+=change; |
|---|
| 727 | if (conf.zebra_draw_osd<0) |
|---|
| 728 | conf.zebra_draw_osd=(sizeof(modes)/sizeof(modes[0]))-1; |
|---|
| 729 | else if (conf.zebra_draw_osd>=(sizeof(modes)/sizeof(modes[0]))) |
|---|
| 730 | conf.zebra_draw_osd=0; |
|---|
| 731 | |
|---|
| 732 | return modes[conf.zebra_draw_osd]; |
|---|
| 733 | } |
|---|
| 734 | |
|---|
| 735 | //------------------------------------------------------------------- |
|---|
| 736 | const char* gui_zoom_value_enum(int change, int arg) { |
|---|
| 737 | static const char* modes[]={ "X", "FL", "EFL" }; |
|---|
| 738 | |
|---|
| 739 | conf.zoom_value+=change; |
|---|
| 740 | if (conf.zoom_value<0) |
|---|
| 741 | conf.zoom_value=(sizeof(modes)/sizeof(modes[0]))-1; |
|---|
| 742 | else if (conf.zoom_value>=(sizeof(modes)/sizeof(modes[0]))) |
|---|
| 743 | conf.zoom_value=0; |
|---|
| 744 | |
|---|
| 745 | return modes[conf.zoom_value]; |
|---|
| 746 | } |
|---|
| 747 | |
|---|
| 748 | const char* gui_show_values_enum(int change, int arg) { |
|---|
| 749 | static const char* modes[]={ "Don't", "Always", "Shoot" }; |
|---|
| 750 | |
|---|
| 751 | conf.show_values+=change; |
|---|
| 752 | if (conf.show_values<0) |
|---|
| 753 | conf.show_values=(sizeof(modes)/sizeof(modes[0]))-1; |
|---|
| 754 | else if (conf.show_values>=(sizeof(modes)/sizeof(modes[0]))) |
|---|
| 755 | conf.show_values=0; |
|---|
| 756 | |
|---|
| 757 | return modes[conf.show_values]; |
|---|
| 758 | } |
|---|
| 759 | |
|---|
| 760 | const char* gui_nd_filter_state_enum(int change, int arg) { |
|---|
| 761 | static const char* modes[]={ "Off", "In", "Out" }; |
|---|
| 762 | |
|---|
| 763 | conf.nd_filter_state+=change; |
|---|
| 764 | if (conf.nd_filter_state<0) |
|---|
| 765 | conf.nd_filter_state=(sizeof(modes)/sizeof(modes[0]))-1; |
|---|
| 766 | else if (conf.nd_filter_state>=(sizeof(modes)/sizeof(modes[0]))) |
|---|
| 767 | conf.nd_filter_state=0; |
|---|
| 768 | |
|---|
| 769 | return modes[conf.nd_filter_state]; |
|---|
| 770 | } |
|---|
| 771 | |
|---|
| 772 | |
|---|
| 773 | |
|---|
| 774 | const char* gui_dof_show_value_enum(int change, int arg) { |
|---|
| 775 | static const char* modes[]={ "Don't", "Separate", "In Misc" }; |
|---|
| 776 | |
|---|
| 777 | conf.show_dof+=change; |
|---|
| 778 | if (conf.show_dof<0) |
|---|
| 779 | conf.show_dof=(sizeof(modes)/sizeof(modes[0]))-1; |
|---|
| 780 | else if (conf.show_dof>=(sizeof(modes)/sizeof(modes[0]))) |
|---|
| 781 | conf.show_dof=0; |
|---|
| 782 | |
|---|
| 783 | return modes[conf.show_dof]; |
|---|
| 784 | } |
|---|
| 785 | |
|---|
| 786 | |
|---|
| 787 | const char* gui_histo_show_enum(int change, int arg) { |
|---|
| 788 | static const char* modes[]={ "Don't", "Always", "Shoot" }; |
|---|
| 789 | |
|---|
| 790 | conf.show_histo+=change; |
|---|
| 791 | if (conf.show_histo<0) |
|---|
| 792 | conf.show_histo=(sizeof(modes)/sizeof(modes[0]))-1; |
|---|
| 793 | else if (conf.show_histo>=(sizeof(modes)/sizeof(modes[0]))) |
|---|
| 794 | conf.show_histo=0; |
|---|
| 795 | |
|---|
| 796 | return modes[conf.show_histo]; |
|---|
| 797 | } |
|---|
| 798 | |
|---|
| 799 | //------------------------------------------------------------------- |
|---|
| 800 | #if defined(CAMERA_s2is) || defined(CAMERA_s3is) || defined(CAMERA_g7) |
|---|
| 801 | const char* gui_alt_mode_button_enum(int change, int arg) { |
|---|
| 802 | #if defined(CAMERA_s2is) || defined(CAMERA_s3is) |
|---|
| 803 | static const char* names[]={ "Shrtcut", "Flash", "Timer", "ISO", "Video" }; |
|---|
| 804 | static const int keys[]={ KEY_PRINT, KEY_FLASH, KEY_TIMER, KEY_ISO, KEY_VIDEO }; |
|---|
| 805 | #else |
|---|
| 806 | static const char* names[]={ "Print", "FE"}; |
|---|
| 807 | static const int keys[]={ KEY_PRINT, KEY_MICROPHONE }; |
|---|
| 808 | #endif |
|---|
| 809 | int i; |
|---|
| 810 | |
|---|
| 811 | for (i=0; i<sizeof(names)/sizeof(names[0]); ++i) { |
|---|
| 812 | if (conf.alt_mode_button==keys[i]) { |
|---|
| 813 | break; |
|---|
| 814 | } |
|---|
| 815 | } |
|---|
| 816 | |
|---|
| 817 | i+=change; |
|---|
| 818 | if (i<0) |
|---|
| 819 | i=(sizeof(names)/sizeof(names[0]))-1; |
|---|
| 820 | else if (i>=(sizeof(names)/sizeof(names[0]))) |
|---|
| 821 | i=0; |
|---|
| 822 | |
|---|
| 823 | conf.alt_mode_button = keys[i]; |
|---|
| 824 | kbd_set_alt_mode_key_mask(conf.alt_mode_button); |
|---|
| 825 | return names[i]; |
|---|
| 826 | } |
|---|
| 827 | #endif |
|---|
| 828 | |
|---|
| 829 | //------------------------------------------------------------------- |
|---|
| 830 | const char* gui_alt_power_enum(int change, int arg) { |
|---|
| 831 | static const char* modes[]={ "No", "Alt", "Script" }; |
|---|
| 832 | |
|---|
| 833 | conf.alt_prevent_shutdown+=change; |
|---|
| 834 | if (conf.alt_prevent_shutdown<0) |
|---|
| 835 | conf.alt_prevent_shutdown=(sizeof(modes)/sizeof(modes[0]))-1; |
|---|
| 836 | else if (conf.alt_prevent_shutdown>=(sizeof(modes)/sizeof(modes[0]))) |
|---|
| 837 | conf.alt_prevent_shutdown=0; |
|---|
| 838 | |
|---|
| 839 | return modes[conf.alt_prevent_shutdown]; |
|---|
| 840 | } |
|---|
| 841 | const char* gui_video_mode_enum(int change, int arg) { |
|---|
| 842 | static const char* modes[]={ "Bitrate", "Quality"}; |
|---|
| 843 | |
|---|
| 844 | conf.video_mode+=change; |
|---|
| 845 | if (conf.video_mode<0) |
|---|
| 846 | conf.video_mode=(sizeof(modes)/sizeof(modes[0]))-1; |
|---|
| 847 | else if (conf.video_mode>=(sizeof(modes)/sizeof(modes[0]))) |
|---|
| 848 | conf.video_mode=0; |
|---|
| 849 | |
|---|
| 850 | return modes[conf.video_mode]; |
|---|
| 851 | } |
|---|
| 852 | |
|---|
| 853 | //------------------------------------------------------------------- |
|---|
| 854 | const char* gui_video_bitrate_enum(int change, int arg) { |
|---|
| 855 | static const char* modes[]={ "0.25x", "0.5x","0.75x", "1x", "1.25x", "1.5x", "1.75x", "2x", "2.5x", "3x"}; |
|---|
| 856 | |
|---|
| 857 | conf.video_bitrate+=change; |
|---|
| 858 | if (conf.video_bitrate<0) |
|---|
| 859 | conf.video_bitrate=sizeof(modes)/sizeof(modes[0])-1; |
|---|
| 860 | else if (conf.video_bitrate>=(sizeof(modes)/sizeof(modes[0]))) |
|---|
| 861 | conf.video_bitrate=0; |
|---|
| 862 | |
|---|
| 863 | shooting_video_bitrate_change(conf.video_bitrate); |
|---|
| 864 | |
|---|
| 865 | return modes[conf.video_bitrate]; |
|---|
| 866 | } |
|---|
| 867 | |
|---|
| 868 | |
|---|
| 869 | //------------------------------------------------------------------- |
|---|
| 870 | const char* gui_tv_bracket_values_enum(int change, int arg) { |
|---|
| 871 | static const char* modes[]={ "Off", "1/3 EV","2/3 EV", "1 EV", "1 1/3Ev", "1 2/3Ev", "2 Ev"}; |
|---|
| 872 | |
|---|
| 873 | conf.tv_bracket_value+=change; |
|---|
| 874 | if (conf.tv_bracket_value<0) |
|---|
| 875 | conf.tv_bracket_value=sizeof(modes)/sizeof(modes[0])-1; |
|---|
| 876 | else if (conf.tv_bracket_value>=(sizeof(modes)/sizeof(modes[0]))) |
|---|
| 877 | conf.tv_bracket_value=0; |
|---|
| 878 | |
|---|
| 879 | return modes[conf.tv_bracket_value]; |
|---|
| 880 | } |
|---|
| 881 | |
|---|
| 882 | const char* gui_av_bracket_values_enum(int change, int arg) { |
|---|
| 883 | static const char* modes[]={ "Off", "1/3 EV","2/3 EV", "1 EV", "1 1/3Ev", "1 2/3Ev", "2 Ev"}; |
|---|
| 884 | |
|---|
| 885 | conf.av_bracket_value+=change; |
|---|
| 886 | if (conf.av_bracket_value<0) |
|---|
| 887 | conf.av_bracket_value=sizeof(modes)/sizeof(modes[0])-1; |
|---|
| 888 | else if (conf.av_bracket_value>=(sizeof(modes)/sizeof(modes[0]))) |
|---|
| 889 | conf.av_bracket_value=0; |
|---|
| 890 | |
|---|
| 891 | return modes[conf.av_bracket_value]; |
|---|
| 892 | } |
|---|
| 893 | |
|---|
| 894 | const char* gui_subj_dist_bracket_koef_enum(int change, int arg) { |
|---|
| 895 | static const char* modes[]={"Off", "1", "10","100","1000"}; |
|---|
| 896 | |
|---|
| 897 | conf.subj_dist_bracket_koef+=change; |
|---|
| 898 | if (conf.subj_dist_bracket_koef<0) |
|---|
| 899 | conf.subj_dist_bracket_koef=sizeof(modes)/sizeof(modes[0])-1; |
|---|
| 900 | else if (conf.subj_dist_bracket_koef>=(sizeof(modes)/sizeof(modes[0]))) |
|---|
| 901 | conf.subj_dist_bracket_koef=0; |
|---|
| 902 | |
|---|
| 903 | return modes[conf.subj_dist_bracket_koef]; |
|---|
| 904 | } |
|---|
| 905 | |
|---|
| 906 | const char* gui_iso_bracket_koef_enum(int change, int arg) { |
|---|
| 907 | static const char* modes[]={ "Off","1", "10","100"}; |
|---|
| 908 | |
|---|
| 909 | conf.iso_bracket_koef+=change; |
|---|
| 910 | if (conf.iso_bracket_koef<0) |
|---|
| 911 | conf.iso_bracket_koef=sizeof(modes)/sizeof(modes[0])-1; |
|---|
| 912 | else if (conf.iso_bracket_koef>=(sizeof(modes)/sizeof(modes[0]))) |
|---|
| 913 | conf.iso_bracket_koef=0; |
|---|
| 914 | |
|---|
| 915 | return modes[conf.iso_bracket_koef]; |
|---|
| 916 | } |
|---|
| 917 | |
|---|
| 918 | const char* gui_bracket_type_enum(int change, int arg) { |
|---|
| 919 | static const char* modes[]={ "+/-", "-","+"}; |
|---|
| 920 | |
|---|
| 921 | conf.bracket_type+=change; |
|---|
| 922 | if (conf.bracket_type<0) |
|---|
| 923 | conf.bracket_type=0; |
|---|
| 924 | else if (conf.bracket_type>=(sizeof(modes)/sizeof(modes[0]))) |
|---|
| 925 | conf.bracket_type=sizeof(modes)/sizeof(modes[0])-1; |
|---|
| 926 | |
|---|
| 927 | return modes[conf.bracket_type]; |
|---|
| 928 | } |
|---|
| 929 | |
|---|
| 930 | const char* gui_tv_override_koef_enum(int change, int arg) { |
|---|
| 931 | static const char* modes[]={"Off", "1/100K", "1/10000", "1/1000","1/100","1/10", "1","10","100"}; |
|---|
| 932 | |
|---|
| 933 | conf.tv_override_koef+=change; |
|---|
| 934 | if (conf.tv_enum_type) { |
|---|
| 935 | if (conf.tv_override_koef<0) conf.tv_override_koef=6; |
|---|
| 936 | else if (conf.tv_override_koef>6) conf.tv_override_koef=0; |
|---|
| 937 | else if (conf.tv_override_koef==1) conf.tv_override_koef=6; |
|---|
| 938 | else if (conf.tv_override_koef==5) conf.tv_override_koef=0; |
|---|
| 939 | else if (conf.tv_override_koef!=0 && conf.tv_override_koef!=6) conf.tv_override_koef=6; |
|---|
| 940 | } |
|---|
| 941 | else { |
|---|
| 942 | if (conf.tv_override_koef<0) |
|---|
| 943 | conf.tv_override_koef=sizeof(modes)/sizeof(modes[0])-1; |
|---|
| 944 | else if (conf.tv_override_koef>=(sizeof(modes)/sizeof(modes[0]))) |
|---|
| 945 | conf.tv_override_koef=0; |
|---|
| 946 | } |
|---|
| 947 | |
|---|
| 948 | return modes[conf.tv_override_koef]; |
|---|
| 949 | } |
|---|
| 950 | |
|---|
| 951 | const char* gui_tv_override_value_enum(int change, int arg) { |
|---|
| 952 | static const char* modes[]={"64","50.8", "40.3", "32", "25.4","20","16", "12.7", "10","8", "6.3","5","4","3.2", "2.5","2", "1.6", "1.3", "1", "0.8", "0.6", "0.5", "0.4", "0.3", "1/4", "1/5", "1/6", "1/8", "1/10", "1/13", "1/15", "1/20", "1/25", "1/30", "1/40", "1/50", "1/60", "1/80", "1/100", "1/125", "1/160", "1/200", "1/250", "1/320", "1/400", "1/500", "1/640","1/800", "1/1000", "1/1250", "1/1600","1/2000","1/2500","1/3200","1/4000", "1/5000", "1/6400", "1/8000", "1/10000", "1/12500", "1/16000", "1/20000", "1/25000", "1/32000", "1/40000", "1/50000", "1/64000","1/80000", "1/100k"}; |
|---|
| 953 | |
|---|
| 954 | conf.tv_override_value+=change; |
|---|
| 955 | if (conf.tv_enum_type) { |
|---|
| 956 | if (conf.tv_override_value<0) { |
|---|
| 957 | conf.tv_override_value=sizeof(modes)/sizeof(modes[0])-1; |
|---|
| 958 | } |
|---|
| 959 | else if (conf.tv_override_value>=(sizeof(modes)/sizeof(modes[0]))) |
|---|
| 960 | conf.tv_override_value=0; |
|---|
| 961 | return modes[conf.tv_override_value]; |
|---|
| 962 | } |
|---|
| 963 | else |
|---|
| 964 | { |
|---|
| 965 | char * buf=""; |
|---|
| 966 | if (conf.tv_override_value<0) { |
|---|
| 967 | conf.tv_override_value=100; |
|---|
| 968 | } |
|---|
| 969 | else if (conf.tv_override_value>100) conf.tv_override_value=0; |
|---|
| 970 | sprintf(buf, "%d", conf.tv_override_value); |
|---|
| 971 | return buf; |
|---|
| 972 | } |
|---|
| 973 | } |
|---|
| 974 | |
|---|
| 975 | const char* gui_tv_enum_type_enum(int change, int arg) { |
|---|
| 976 | static const char* modes[]={"Factor", "Ev Step"}; |
|---|
| 977 | |
|---|
| 978 | conf.tv_enum_type+=change; |
|---|
| 979 | if (conf.tv_enum_type<0) |
|---|
| 980 | conf.tv_enum_type=sizeof(modes)/sizeof(modes[0])-1; |
|---|
| 981 | else if (conf.tv_enum_type>=(sizeof(modes)/sizeof(modes[0]))) |
|---|
| 982 | conf.tv_enum_type=0; |
|---|
| 983 | if (change) { |
|---|
| 984 | conf.tv_override_koef=6; |
|---|
| 985 | if (conf.tv_enum_type) |
|---|
| 986 | conf.tv_override_value=18; |
|---|
| 987 | else conf.tv_override_value=1; |
|---|
| 988 | } |
|---|
| 989 | return modes[conf.tv_enum_type]; |
|---|
| 990 | } |
|---|
| 991 | |
|---|
| 992 | |
|---|
| 993 | const char* gui_iso_override_koef_enum(int change, int arg) { |
|---|
| 994 | static const char* modes[]={ "Off","1", "10","100"}; |
|---|
| 995 | |
|---|
| 996 | conf.iso_override_koef+=change; |
|---|
| 997 | if (conf.iso_override_koef<0) |
|---|
| 998 | conf.iso_override_koef=0; |
|---|
| 999 | else if (conf.iso_override_koef>=(sizeof(modes)/sizeof(modes[0]))) |
|---|
| 1000 | conf.iso_override_koef=sizeof(modes)/sizeof(modes[0])-1; |
|---|
| 1001 | |
|---|
| 1002 | return modes[conf.iso_override_koef]; |
|---|
| 1003 | } |
|---|
| 1004 | |
|---|
| 1005 | const char* gui_subj_dist_override_value_enum(int change, int arg) { |
|---|
| 1006 | static const int koef[] = {0, 1,10,100,1000}; |
|---|
| 1007 | static char buf[8]; |
|---|
| 1008 | conf.subj_dist_override_value+=(change*koef[conf.subj_dist_override_koef]); |
|---|
| 1009 | if (conf.subj_dist_override_value<0) |
|---|
| 1010 | conf.subj_dist_override_value=MAX_DIST; |
|---|
| 1011 | else if (conf.subj_dist_override_value>MAX_DIST) |
|---|
| 1012 | conf.subj_dist_override_value=0; |
|---|
| 1013 | sprintf(buf, "%d", (int)conf.subj_dist_override_value); |
|---|
| 1014 | return buf; |
|---|
| 1015 | } |
|---|
| 1016 | |
|---|
| 1017 | |
|---|
| 1018 | const char* gui_subj_dist_override_koef_enum(int change, int arg) { |
|---|
| 1019 | static const char* modes[]={ "Off","1", "10","100","1000"}; |
|---|
| 1020 | |
|---|
| 1021 | conf.subj_dist_override_koef+=change; |
|---|
| 1022 | if (conf.subj_dist_override_koef<0) conf.subj_dist_override_koef=0; |
|---|
| 1023 | else if (conf.subj_dist_override_koef>=(sizeof(modes)/sizeof(modes[0]))) |
|---|
| 1024 | conf.subj_dist_override_koef=sizeof(modes)/sizeof(modes[0])-1; |
|---|
| 1025 | |
|---|
| 1026 | return modes[conf.subj_dist_override_koef]; |
|---|
| 1027 | } |
|---|
| 1028 | |
|---|
| 1029 | /* |
|---|
| 1030 | const char* gui_tv_exposure_order_enum(int change, int arg) { |
|---|
| 1031 | static const char* modes[]={ "Off", "1","2", "3"}; |
|---|
| 1032 | |
|---|
| 1033 | conf.tv_exposure_order+=change; |
|---|
| 1034 | if (conf.tv_exposure_order<0) |
|---|
| 1035 | conf.tv_exposure_order=0; |
|---|
| 1036 | else if (conf.tv_exposure_order>=(sizeof(modes)/sizeof(modes[0]))) |
|---|
| 1037 | conf.tv_exposure_order=sizeof(modes)/sizeof(modes[0])-1; |
|---|
| 1038 | if((conf.tv_exposure_order>0) && (conf.av_exposure_order==conf.tv_exposure_order)) |
|---|
| 1039 | { |
|---|
| 1040 | conf.av_exposure_order=0; |
|---|
| 1041 | } |
|---|
| 1042 | if((conf.tv_exposure_order>0) && (conf.iso_exposure_order==conf.tv_exposure_order)) |
|---|
| 1043 | { |
|---|
| 1044 | conf.iso_exposure_order=0; |
|---|
| 1045 | } |
|---|
| 1046 | |
|---|
| 1047 | return modes[conf.tv_exposure_order]; |
|---|
| 1048 | } |
|---|
| 1049 | |
|---|
| 1050 | const char* gui_av_exposure_order_enum(int change, int arg) { |
|---|
| 1051 | static const char* modes[]={ "Off", "1","2", "3"}; |
|---|
| 1052 | |
|---|
| 1053 | conf.av_exposure_order+=change; |
|---|
| 1054 | if (conf.av_exposure_order<0) |
|---|
| 1055 | conf.av_exposure_order=0; |
|---|
| 1056 | else if (conf.av_exposure_order>=(sizeof(modes)/sizeof(modes[0]))) |
|---|
| 1057 | conf.av_exposure_order=sizeof(modes)/sizeof(modes[0])-1; |
|---|
| 1058 | if((conf.av_exposure_order>0) && (conf.tv_exposure_order==conf.av_exposure_order)) |
|---|
| 1059 | { |
|---|
| 1060 | conf.tv_exposure_order=0; |
|---|
| 1061 | } |
|---|
| 1062 | if((conf.av_exposure_order>0) && (conf.iso_exposure_order==conf.av_exposure_order)) |
|---|
| 1063 | { |
|---|
| 1064 | conf.iso_exposure_order=0; |
|---|
| 1065 | } |
|---|
| 1066 | return modes[conf.av_exposure_order]; |
|---|
| 1067 | } |
|---|
| 1068 | |
|---|
| 1069 | const char* gui_iso_exposure_order_enum(int change, int arg) { |
|---|
| 1070 | static const char* modes[]={ "Off", "1","2", "3"}; |
|---|
| 1071 | |
|---|
| 1072 | conf.iso_exposure_order+=change; |
|---|
| 1073 | if (conf.iso_exposure_order<0) |
|---|
| 1074 | conf.iso_exposure_order=0; |
|---|
| 1075 | else if (conf.iso_exposure_order>=(sizeof(modes)/sizeof(modes[0]))) |
|---|
| 1076 | conf.iso_exposure_order=sizeof(modes)/sizeof(modes[0])-1; |
|---|
| 1077 | if((conf.iso_exposure_order>0) && (conf.tv_exposure_order==conf.iso_exposure_order)) |
|---|
| 1078 | { |
|---|
| 1079 | conf.tv_exposure_order=0; |
|---|
| 1080 | } |
|---|
| 1081 | if((conf.iso_exposure_order>0) && (conf.av_exposure_order==conf.iso_exposure_order)) |
|---|
| 1082 | { |
|---|
| 1083 | conf.av_exposure_order=0; |
|---|
| 1084 | } |
|---|
| 1085 | |
|---|
| 1086 | return modes[conf.iso_exposure_order]; |
|---|
| 1087 | } |
|---|
| 1088 | */ |
|---|
| 1089 | const char* gui_av_override_enum(int change, int arg) { |
|---|
| 1090 | static char buf[8]; |
|---|
| 1091 | short prop_id; |
|---|
| 1092 | conf.av_override_value+=change; |
|---|
| 1093 | if (conf.av_override_value<0) conf.av_override_value=shooting_get_aperture_sizes_table_size()+6; |
|---|
| 1094 | else if (conf.av_override_value>shooting_get_aperture_sizes_table_size()+6) conf.av_override_value=0; |
|---|
| 1095 | if (conf.av_override_value == 0) return "Off"; |
|---|
| 1096 | else { |
|---|
| 1097 | short prop_id=shooting_get_aperture_from_av96(shooting_get_av96_override_value()); |
|---|
| 1098 | sprintf(buf, "%d.%02d", (int)prop_id/100, (int)prop_id%100 ); |
|---|
| 1099 | return buf; |
|---|
| 1100 | } |
|---|
| 1101 | } |
|---|
| 1102 | |
|---|
| 1103 | const char* gui_user_menu_show_enum(int change, int arg) { |
|---|
| 1104 | static const char* modes[]={ "Off", "On","On Direct", "Edit" };
|
|---|
| 1105 | |
|---|
| 1106 | if (conf.user_menu_enable == 3) user_menu_save();
|
|---|
| 1107 | |
|---|
| 1108 | conf.user_menu_enable+=change; |
|---|
| 1109 | if (conf.user_menu_enable<0) |
|---|
| 1110 | conf.user_menu_enable=(sizeof(modes)/sizeof(modes[0]))-1; |
|---|
| 1111 | else if (conf.user_menu_enable>=(sizeof(modes)/sizeof(modes[0]))) |
|---|
| 1112 | conf.user_menu_enable=0; |
|---|
| 1113 | |
|---|
| 1114 | return modes[conf.user_menu_enable]; |
|---|
| 1115 | } |
|---|
| 1116 | |
|---|
| 1117 | //------------------------------------------------------------------- |
|---|
| 1118 | void gui_update_script_submenu() { |
|---|
| 1119 | register int p=0, i; |
|---|
| 1120 | |
|---|
| 1121 | for (i=0; i<sizeof(script_submenu_items_top)/sizeof(script_submenu_items_top[0]); ++p, ++i) { |
|---|
| 1122 | script_submenu_items[p]=script_submenu_items_top[i]; |
|---|
| 1123 | } |
|---|
| 1124 | for (i=0; i<SCRIPT_NUM_PARAMS; ++i) { |
|---|
| 1125 | if (script_params[i][0]) { |
|---|
| 1126 | script_submenu_items[p].text=(int)script_params[i]; |
|---|
| 1127 | script_submenu_items[p].type=MENUITEM_INT; |
|---|
| 1128 | script_submenu_items[p].value=&conf.ubasic_vars[i]; |
|---|
| 1129 | ++p; |
|---|
| 1130 | } |
|---|
| 1131 | } |
|---|
| 1132 | for (i=0; i<sizeof(script_submenu_items_bottom)/sizeof(script_submenu_items_bottom[0]); ++p, ++i) { |
|---|
| 1133 | script_submenu_items[p]=script_submenu_items_bottom[i]; |
|---|
| 1134 | } |
|---|
| 1135 | } |
|---|
| 1136 | |
|---|
| 1137 | //------------------------------------------------------------------- |
|---|
| 1138 | |
|---|
| 1139 | void raw_fselect_cb(const char * filename){ |
|---|
| 1140 | struct stat st; |
|---|
| 1141 | if (!filename) return; |
|---|
| 1142 | stat((char*)filename,&st); |
|---|
| 1143 | if (st.st_size!=hook_raw_size()) return; |
|---|
| 1144 | gui_mbox_init((int)"", LANG_RAW_DEVELOP_MESSAGE, MBOX_BTN_OK|MBOX_TEXT_CENTER, NULL); |
|---|
| 1145 | raw_prepare_develop((char*)filename); |
|---|
| 1146 | } |
|---|
| 1147 | |
|---|
| 1148 | //------------------------------------------------------------------- |
|---|
| 1149 | void gui_raw_develop(int arg){ |
|---|
| 1150 | int m=mode_get(); |
|---|
| 1151 | gui_fselect_init(LANG_RAW_DEVELOP_SELECT_FILE, "A/DCIM", raw_fselect_cb); |
|---|
| 1152 | } |
|---|
| 1153 | |
|---|
| 1154 | //------------------------------------------------------------------- |
|---|
| 1155 | |
|---|
| 1156 | #if defined (CAMERA_MULTIPART) |
|---|
| 1157 | void card_break_proc(unsigned int btn){ |
|---|
| 1158 | if (btn==MBOX_BTN_YES) create_partitions(); |
|---|
| 1159 | } |
|---|
| 1160 | |
|---|
| 1161 | |
|---|
| 1162 | static void gui_menuproc_break_card(int arg){ |
|---|
| 1163 | gui_mbox_init(LANG_WARNING, LANG_PARTITIONS_CREATE_WARNING, MBOX_BTN_YES_NO|MBOX_DEF_BTN2|MBOX_TEXT_CENTER, card_break_proc); |
|---|
| 1164 | } |
|---|
| 1165 | |
|---|
| 1166 | |
|---|
| 1167 | static void gui_menuproc_swap_patitons(int arg){ |
|---|
| 1168 | if (get_part_count()<2) gui_mbox_init(LANG_ERROR, LANG_ONLY_ONE_PARTITION, MBOX_BTN_OK|MBOX_TEXT_CENTER, NULL); |
|---|
| 1169 | else swap_partitions(); |
|---|
| 1170 | } |
|---|
| 1171 | #endif |
|---|
| 1172 | |
|---|
| 1173 | //------------------------------------------------------------------- |
|---|
| 1174 | static volatile enum Gui_Mode gui_mode; |
|---|
| 1175 | static volatile int gui_restore; |
|---|
| 1176 | static volatile int gui_in_redraw; |
|---|
| 1177 | static int gui_splash, gui_splash_mode; |
|---|
| 1178 | static char osd_buf[32]; |
|---|
| 1179 | #ifdef OPTIONS_AUTOSAVE |
|---|
| 1180 | static Conf old_conf; |
|---|
| 1181 | #endif |
|---|
| 1182 | |
|---|
| 1183 | //------------------------------------------------------------------- |
|---|
| 1184 | void gui_init() |
|---|
| 1185 | { |
|---|
| 1186 | gui_mode = GUI_MODE_NONE; |
|---|
| 1187 | gui_restore = 0; |
|---|
| 1188 | gui_in_redraw = 0; |
|---|
| 1189 | gui_splash = (conf.splash_show)?SPLASH_TIME:0; |
|---|
| 1190 | user_menu_restore(); |
|---|
| 1191 | gui_lang_init(); |
|---|
| 1192 | draw_init(); |
|---|
| 1193 | |
|---|
| 1194 | exposition_thresh = screen_size/500; |
|---|
| 1195 | voltage_step = (conf.batt_step_25)?25:1; |
|---|
| 1196 | load_bad_pixels_list("A/CHDK/badpixel"); |
|---|
| 1197 | } |
|---|
| 1198 | |
|---|
| 1199 | //------------------------------------------------------------------- |
|---|
| 1200 | enum Gui_Mode gui_get_mode() { |
|---|
| 1201 | return gui_mode; |
|---|
| 1202 | } |
|---|
| 1203 | |
|---|
| 1204 | //------------------------------------------------------------------- |
|---|
| 1205 | void gui_set_mode(enum Gui_Mode mode) { |
|---|
| 1206 | gui_mode = mode; |
|---|
| 1207 | } |
|---|
| 1208 | |
|---|
| 1209 | //------------------------------------------------------------------- |
|---|
| 1210 | void gui_force_restore() { |
|---|
| 1211 | gui_restore = gui_in_redraw; |
|---|
| 1212 | } |
|---|
| 1213 | |
|---|
| 1214 | //------------------------------------------------------------------- |
|---|
| 1215 | void gui_redraw() |
|---|
| 1216 | { |
|---|
| 1217 | enum Gui_Mode gui_mode_old; |
|---|
| 1218 | static int show_script_console=0; |
|---|
| 1219 | |
|---|
| 1220 | if (gui_splash) { |
|---|
| 1221 | if (gui_splash>(SPLASH_TIME-4)) { |
|---|
| 1222 | gui_draw_splash(); |
|---|
| 1223 | } else if (gui_splash==1 && (mode_get()&MODE_MASK) == gui_splash_mode && (gui_mode==GUI_MODE_NONE || gui_mode==GUI_MODE_ALT)) { |
|---|
| 1224 | draw_restore(); |
|---|
| 1225 | } |
|---|
| 1226 | --gui_splash; |
|---|
| 1227 | } |
|---|
| 1228 | |
|---|
| 1229 | gui_in_redraw = 1; |
|---|
| 1230 | gui_mode_old = gui_mode; |
|---|
| 1231 | |
|---|
| 1232 | switch (gui_mode) { |
|---|
| 1233 | case GUI_MODE_MENU: |
|---|
| 1234 | gui_menu_draw(); |
|---|
| 1235 | draw_txt_string(20, 14, "<CNF>", MAKE_COLOR(COLOR_ALT_BG, COLOR_FG)); |
|---|
| 1236 | break; |
|---|
| 1237 | case GUI_MODE_ALT: |
|---|
| 1238 | gui_draw_osd(); |
|---|
| 1239 | draw_txt_string(20, 14, "<ALT>", MAKE_COLOR(COLOR_ALT_BG, COLOR_FG)); |
|---|
| 1240 | if ((mode_get()&MODE_MASK) == MODE_REC) { |
|---|
| 1241 | draw_txt_string(0, 14, script_title, MAKE_COLOR(COLOR_ALT_BG, COLOR_FG)); |
|---|
| 1242 | if (state_kbd_script_run) show_script_console=5; |
|---|
| 1243 | if (show_script_console) { |
|---|
| 1244 | --show_script_console; |
|---|
| 1245 | md_draw_grid(); |
|---|
| 1246 | script_console_draw(); |
|---|
| 1247 | } |
|---|
| 1248 | } |
|---|
| 1249 | break; |
|---|
| 1250 | case GUI_MODE_NONE: |
|---|
| 1251 | gui_draw_osd(); |
|---|
| 1252 | break; |
|---|
| 1253 | case GUI_MODE_PALETTE: |
|---|
| 1254 | gui_palette_draw(); |
|---|
| 1255 | break; |
|---|
| 1256 | case GUI_MODE_MBOX: |
|---|
| 1257 | gui_mbox_draw(); |
|---|
| 1258 | break; |
|---|
| 1259 | case GUI_MODE_REVERSI: |
|---|
| 1260 | gui_reversi_draw(); |
|---|
| 1261 | break; |
|---|
| 1262 | case GUI_MODE_SOKOBAN: |
|---|
| 1263 | gui_sokoban_draw(); |
|---|
| 1264 | break; |
|---|
| 1265 | case GUI_MODE_DEBUG: |
|---|
| 1266 | gui_debug_draw(); |
|---|
| 1267 | break; |
|---|
| 1268 | case GUI_MODE_FSELECT: |
|---|
| 1269 | gui_fselect_draw(); |
|---|
| 1270 | break; |
|---|
| 1271 | case GUI_MODE_READ: |
|---|
| 1272 | gui_read_draw(); |
|---|
| 1273 | break; |
|---|
| 1274 | case GUI_MODE_OSD: |
|---|
| 1275 | gui_osd_draw(); |
|---|
| 1276 | // draw_txt_string(20, 14, "<OSD>", MAKE_COLOR(COLOR_ALT_BG, COLOR_FG)); |
|---|
| 1277 | break; |
|---|
| 1278 | case GUI_MODE_CALENDAR: |
|---|
| 1279 | gui_calendar_draw(); |
|---|
| 1280 | break; |
|---|
| 1281 | case GUI_MODE_BENCH: |
|---|
| 1282 | gui_bench_draw(); |
|---|
| 1283 | break; |
|---|
| 1284 | case GUI_MODE_MPOPUP: |
|---|
| 1285 | gui_mpopup_draw(); |
|---|
| 1286 | break; |
|---|
| 1287 | default: |
|---|
| 1288 | break; |
|---|
| 1289 | } |
|---|
| 1290 | |
|---|
| 1291 | gui_in_redraw = 0; |
|---|
| 1292 | if ((gui_mode_old != gui_mode && (gui_mode_old != GUI_MODE_NONE && gui_mode_old != GUI_MODE_ALT) && (gui_mode != GUI_MODE_MBOX && gui_mode != GUI_MODE_MPOPUP)) || gui_restore) { |
|---|
| 1293 | gui_restore = 0; |
|---|
| 1294 | if (gui_mode != GUI_MODE_REVERSI && gui_mode != GUI_MODE_SOKOBAN) |
|---|
| 1295 | draw_restore(); |
|---|
| 1296 | } |
|---|
| 1297 | } |
|---|
| 1298 | |
|---|
| 1299 | #ifdef OPTIONS_AUTOSAVE |
|---|
| 1300 | //------------------------------------------------------------------- |
|---|
| 1301 | static inline void conf_store_old_settings() { |
|---|
| 1302 | old_conf=conf; |
|---|
| 1303 | } |
|---|
| 1304 | |
|---|
| 1305 | //------------------------------------------------------------------- |
|---|
| 1306 | static inline int conf_save_new_settings_if_changed() { |
|---|
| 1307 | if (memcmp(&old_conf, &conf, sizeof(Conf)) != 0) { |
|---|
| 1308 | user_menu_save(); |
|---|
| 1309 | conf_save(); |
|---|
| 1310 | conf_store_old_settings(); |
|---|
| 1311 | return 1; |
|---|
| 1312 | } |
|---|
| 1313 | return 0; |
|---|
| 1314 | } |
|---|
| 1315 | #endif |
|---|
| 1316 | |
|---|
| 1317 | |
|---|
| 1318 | //------------------------------------------------------------------- |
|---|
| 1319 | void gui_kbd_process() |
|---|
| 1320 | { |
|---|
| 1321 | int clicked_key; |
|---|
| 1322 | |
|---|
| 1323 | if (kbd_is_key_clicked(KEY_MENU)){ |
|---|
| 1324 | switch (gui_mode) { |
|---|
| 1325 | case GUI_MODE_ALT: |
|---|
| 1326 | if (conf.user_menu_enable == 1) |
|---|
| 1327 | gui_menu_init(&user_submenu); |
|---|
| 1328 | else |
|---|
| 1329 | gui_menu_init(&root_menu); |
|---|
| 1330 | gui_mode = GUI_MODE_MENU; |
|---|
| 1331 | draw_restore(); |
|---|
| 1332 | break; |
|---|
| 1333 | case GUI_MODE_MENU: |
|---|
| 1334 | #ifdef OPTIONS_AUTOSAVE |
|---|
| 1335 | conf_save_new_settings_if_changed(); |
|---|
| 1336 | #endif |
|---|
| 1337 | if (gui_user_menu_flag) {
|
|---|
| 1338 | gui_mode = GUI_MODE_MENU;
|
|---|
| 1339 | gui_user_menu_flag = 0;
|
|---|
| 1340 | gui_menu_init(&root_menu);
|
|---|
| 1341 | }
|
|---|
| 1342 | else
|
|---|
| 1343 | gui_mode = GUI_MODE_ALT; |
|---|
| 1344 | draw_restore(); |
|---|
| 1345 | break; |
|---|
| 1346 | case GUI_MODE_PALETTE: |
|---|
| 1347 | case GUI_MODE_REVERSI: |
|---|
| 1348 | case GUI_MODE_SOKOBAN: |
|---|
| 1349 | case GUI_MODE_DEBUG: |
|---|
| 1350 | case GUI_MODE_OSD: |
|---|
| 1351 | case GUI_MODE_CALENDAR: |
|---|
| 1352 | case GUI_MODE_BENCH: |
|---|
| 1353 | draw_restore(); |
|---|
| 1354 | gui_mode = GUI_MODE_MENU; |
|---|
| 1355 | break; |
|---|
| 1356 | case GUI_MODE_FSELECT: |
|---|
| 1357 | gui_fselect_kbd_process(); |
|---|
| 1358 | break; |
|---|
| 1359 | case GUI_MODE_READ: |
|---|
| 1360 | gui_read_kbd_process(); |
|---|
| 1361 | draw_restore(); |
|---|
| 1362 | gui_mode = GUI_MODE_MENU; |
|---|
| 1363 | break; |
|---|
| 1364 | default: |
|---|
| 1365 | break; |
|---|
| 1366 | } |
|---|
| 1367 | return; |
|---|
| 1368 | } |
|---|
| 1369 | |
|---|
| 1370 | switch (gui_mode) { |
|---|
| 1371 | case GUI_MODE_ALT: |
|---|
| 1372 | if (kbd_is_key_clicked(SHORTCUT_TOGGLE_RAW)) { |
|---|
| 1373 | if (conf.ns_enable_memdump) dump_memory(); |
|---|
| 1374 | #if defined (CAMERA_ixus800_sd700) || defined (CAMERA_ixus850_sd800) || defined (CAMERA_ixus70_sd1000) || defined (CAMERA_ixus950_sd850) || defined (CAMERA_a560) || defined (CAMERA_a460) || defined(CAMERA_ixus55_sd450) |
|---|
| 1375 | else if (!shooting_get_common_focus_mode()) |
|---|
| 1376 | #else |
|---|
| 1377 | else |
|---|
| 1378 | #endif |
|---|
| 1379 | {conf.save_raw = !conf.save_raw; |
|---|
| 1380 | draw_restore(); |
|---|
| 1381 | } |
|---|
| 1382 | #if defined (CAMERA_a460) |
|---|
| 1383 | else { |
|---|
| 1384 | if (conf.subj_dist_override_koef==4) |
|---|
| 1385 | gui_subj_dist_override_koef_enum(-3,0); |
|---|
| 1386 | else |
|---|
| 1387 | gui_subj_dist_override_koef_enum(1,0); |
|---|
| 1388 | } |
|---|
| 1389 | #elif defined (CAMERA_ixus800_sd700) || defined (CAMERA_ixus850_sd800) || defined (CAMERA_ixus70_sd1000) || defined (CAMERA_ixus950_sd850) || defined (CAMERA_a560) || defined(CAMERA_ixus55_sd450) |
|---|
| 1390 | else |
|---|
| 1391 | { |
|---|
| 1392 | conf.subj_dist_override_value=MAX_DIST; |
|---|
| 1393 | shooting_set_focus(shooting_get_subject_distance_override_value(), SET_NOW); |
|---|
| 1394 | } |
|---|
| 1395 | #endif |
|---|
| 1396 | } else if (kbd_is_key_clicked(KEY_SET)) { |
|---|
| 1397 | gui_menu_init(&script_submenu); |
|---|
| 1398 | gui_mode = GUI_MODE_MENU; |
|---|
| 1399 | draw_restore(); |
|---|
| 1400 | } else { |
|---|
| 1401 | #if defined (CAMERA_ixus800_sd700) || defined (CAMERA_ixus850_sd800) || defined (CAMERA_ixus70_sd1000) || defined (CAMERA_ixus950_sd850) || defined (CAMERA_a560) || defined (CAMERA_a460) || defined(CAMERA_ixus55_sd450) |
|---|
| 1402 | if (kbd_is_key_clicked(SHORTCUT_MF_TOGGLE)) { |
|---|
| 1403 | if (conf.subj_dist_override_koef>0) |
|---|
| 1404 | conf.subj_dist_override_koef=0; |
|---|
| 1405 | else conf.subj_dist_override_koef=1; |
|---|
| 1406 | draw_restore(); |
|---|
| 1407 | } |
|---|
| 1408 | else if (shooting_get_common_focus_mode()) |
|---|
| 1409 | #elif !defined (CAMERA_ixus700_sd500) |
|---|
| 1410 | if (shooting_get_common_focus_mode()) |
|---|
| 1411 | #endif |
|---|
| 1412 | #if !defined (CAMERA_ixus700_sd500) |
|---|
| 1413 | { |
|---|
| 1414 | #if !defined (CAMERA_a460) |
|---|
| 1415 | if (kbd_is_key_clicked(KEY_RIGHT)) { |
|---|
| 1416 | gui_subj_dist_override_koef_enum(1,0); |
|---|
| 1417 | #if defined (CAMERA_ixus800_sd700) || defined (CAMERA_ixus850_sd800) || defined (CAMERA_ixus70_sd1000) || defined (CAMERA_ixus950_sd850) || defined (CAMERA_a560) || defined(CAMERA_ixus55_sd450) |
|---|
| 1418 | if (conf.subj_dist_override_koef==0) conf.subj_dist_override_koef=1; |
|---|
| 1419 | #endif |
|---|
| 1420 | shooting_set_focus(shooting_get_subject_distance_override_value(), SET_NOW); |
|---|
| 1421 | } |
|---|
| 1422 | else if (kbd_is_key_clicked(KEY_LEFT)) |
|---|
| 1423 | { |
|---|
| 1424 | gui_subj_dist_override_koef_enum(-1,0); |
|---|
| 1425 | #if defined (CAMERA_ixus800_sd700) || defined (CAMERA_ixus850_sd800) || defined (CAMERA_ixus70_sd1000) || defined (CAMERA_ixus950_sd850) || defined (CAMERA_a560) || defined(CAMERA_ixus55_sd450) |
|---|
| 1426 | if (conf.subj_dist_override_koef==0) conf.subj_dist_override_koef=1; |
|---|
| 1427 | #endif |
|---|
| 1428 | shooting_set_focus(shooting_get_subject_distance_override_value(), SET_NOW); |
|---|
| 1429 | } |
|---|
| 1430 | else if (kbd_is_key_clicked(SHORTCUT_SET_INFINITY)) |
|---|
| 1431 | { |
|---|
| 1432 | conf.subj_dist_override_value=MAX_DIST; |
|---|
| 1433 | shooting_set_focus(shooting_get_subject_distance_override_value(), SET_NOW); |
|---|
| 1434 | } |
|---|
| 1435 | else |
|---|
| 1436 | #endif |
|---|
| 1437 | if (kbd_is_key_clicked(SHORTCUT_SET_HYPERFOCAL)) |
|---|
| 1438 | { |
|---|
| 1439 | int m=mode_get()&MODE_SHOOTING_MASK; |
|---|
| 1440 | if ((m==MODE_M) || (m==MODE_AV)) |
|---|
| 1441 | conf.subj_dist_override_value=(int)shooting_get_hyperfocal_distance_f(shooting_get_aperture_from_av96(shooting_get_user_av96()),get_focal_length(lens_get_zoom_point())); |
|---|
| 1442 | else conf.subj_dist_override_value=(int)shooting_get_hyperfocal_distance(); |
|---|
| 1443 | shooting_set_focus(shooting_get_subject_distance_override_value(), SET_NOW); |
|---|
| 1444 | } |
|---|
| 1445 | else |
|---|
| 1446 | switch (kbd_get_autoclicked_key()) { |
|---|
| 1447 | #if defined (CAMERA_a460) |
|---|
| 1448 | case KEY_RIGHT: |
|---|
| 1449 | #else |
|---|
| 1450 | case KEY_ZOOM_IN: |
|---|
| 1451 | #endif |
|---|
| 1452 | gui_subj_dist_override_value_enum(1,0); |
|---|
| 1453 | shooting_set_focus(shooting_get_subject_distance_override_value(),SET_NOW); |
|---|
| 1454 | break; |
|---|
| 1455 | #if defined (CAMERA_a460) |
|---|
| 1456 | case KEY_LEFT: |
|---|
| 1457 | #else |
|---|
| 1458 | case KEY_ZOOM_OUT: |
|---|
| 1459 | #endif |
|---|
| 1460 | gui_subj_dist_override_value_enum(-1,0); |
|---|
| 1461 | shooting_set_focus(shooting_get_subject_distance_override_value(), SET_NOW); |
|---|
| 1462 | break; |
|---|
| 1463 | } |
|---|
| 1464 | } |
|---|
| 1465 | #endif |
|---|
| 1466 | } |
|---|
| 1467 | break; |
|---|
| 1468 | case GUI_MODE_MENU: |
|---|
| 1469 | gui_menu_kbd_process(); |
|---|
| 1470 | break; |
|---|
| 1471 | case GUI_MODE_PALETTE: |
|---|
| 1472 | gui_palette_kbd_process(); |
|---|
| 1473 | break; |
|---|
| 1474 | case GUI_MODE_MBOX: |
|---|
| 1475 | gui_mbox_kbd_process(); |
|---|
| 1476 | break; |
|---|
| 1477 | case GUI_MODE_REVERSI: |
|---|
| 1478 | gui_reversi_kbd_process(); |
|---|
| 1479 | break; |
|---|
| 1480 | case GUI_MODE_SOKOBAN: |
|---|
| 1481 | gui_sokoban_kbd_process(); |
|---|
| 1482 | break; |
|---|
| 1483 | case GUI_MODE_DEBUG: |
|---|
| 1484 | gui_debug_kbd_process(); |
|---|
| 1485 | break; |
|---|
| 1486 | case GUI_MODE_FSELECT: |
|---|
| 1487 | gui_fselect_kbd_process(); |
|---|
| 1488 | break; |
|---|
| 1489 | case GUI_MODE_READ: |
|---|
| 1490 | gui_read_kbd_process(); |
|---|
| 1491 | break; |
|---|
| 1492 | case GUI_MODE_OSD: |
|---|
| 1493 | gui_osd_kbd_process(); |
|---|
| 1494 | break; |
|---|
| 1495 | case GUI_MODE_CALENDAR: |
|---|
| 1496 | gui_calendar_kbd_process(); |
|---|
| 1497 | break; |
|---|
| 1498 | case GUI_MODE_BENCH: |
|---|
| 1499 | gui_bench_kbd_process(); |
|---|
| 1500 | break; |
|---|
| 1501 | case GUI_MODE_MPOPUP: |
|---|
| 1502 | gui_mpopup_kbd_process(); |
|---|
| 1503 | break; |
|---|
| 1504 | default: |
|---|
| 1505 | break; |
|---|
| 1506 | } |
|---|
| 1507 | } |
|---|
| 1508 | |
|---|
| 1509 | //------------------------------------------------------------------- |
|---|
| 1510 | void gui_kbd_enter() |
|---|
| 1511 | { |
|---|
| 1512 | // XXX set custom palette |
|---|
| 1513 | #ifdef OPTIONS_AUTOSAVE |
|---|
| 1514 | conf_store_old_settings(); |
|---|
| 1515 | #endif |
|---|
| 1516 | if ((conf.alt_prevent_shutdown == ALT_PREVENT_SHUTDOWN_ALT && !state_kbd_script_run) |
|---|
| 1517 | || conf.alt_prevent_shutdown == ALT_PREVENT_SHUTDOWN_ALT_SCRIPT) { |
|---|
| 1518 | disable_shutdown(); |
|---|
| 1519 | } |
|---|
| 1520 | gui_mode = GUI_MODE_ALT; |
|---|
| 1521 |
|
|---|
| 1522 | gui_user_menu_flag = 0;
|
|---|
| 1523 | if (conf.user_menu_enable == 2) {
|
|---|
| 1524 | gui_menu_init(&user_submenu);
|
|---|
| 1525 | gui_mode = GUI_MODE_MENU;
|
|---|
| 1526 | draw_restore();
|
|---|
| 1527 | gui_user_menu_flag = 1;
|
|---|
| 1528 | }
|
|---|
| 1529 |
|
|---|
| 1530 | } |
|---|
| 1531 | |
|---|
| 1532 | //------------------------------------------------------------------- |
|---|
| 1533 | void gui_kbd_leave() |
|---|
| 1534 | { |
|---|
| 1535 | // XXX restore palette |
|---|
| 1536 | #ifdef OPTIONS_AUTOSAVE |
|---|
| 1537 | conf_save_new_settings_if_changed(); |
|---|
| 1538 | #endif |
|---|
| 1539 | ubasic_error = 0; |
|---|
| 1540 | draw_restore(); |
|---|
| 1541 | if (gui_mode == GUI_MODE_READ && !rbf_load(conf.menu_rbf_file)) |
|---|
| 1542 | rbf_load_from_8x16(current_font); |
|---|
| 1543 | rbf_set_codepage(FONT_CP_WIN); |
|---|
| 1544 | enable_shutdown(); |
|---|
| 1545 | gui_mode = GUI_MODE_NONE; |
|---|
| 1546 | } |
|---|
| 1547 | |
|---|
| 1548 | //------------------------------------------------------------------- |
|---|
| 1549 | extern long physw_status[3]; |
|---|
| 1550 | extern long GetPropertyCase(long opt_id, void *buf, long bufsize); |
|---|
| 1551 | //extern int xxxx, eeee; |
|---|
| 1552 | //------------------------------------------------------------------- |
|---|
| 1553 | void gui_draw_osd() { |
|---|
| 1554 | unsigned int m, n = 0, mode_photo, mode_video; |
|---|
| 1555 | coord x; |
|---|
| 1556 | static int flashlight = 0, zebra = 0, zebra_init = 0, pressed = 0; |
|---|
| 1557 | static int half_disp_press_old=0; |
|---|
| 1558 | int half_disp_press; |
|---|
| 1559 | |
|---|
| 1560 | m = mode_get(); |
|---|
| 1561 | |
|---|
| 1562 | if (conf.flashlight && (m&MODE_SCREEN_OPENED) && (m&MODE_SCREEN_ROTATED) && (gui_mode==GUI_MODE_NONE /* || gui_mode==GUI_MODE_ALT */)) { |
|---|
| 1563 | draw_filled_rect(0, 0, screen_width-1, screen_height-1, MAKE_COLOR(COLOR_WHITE, COLOR_WHITE)); |
|---|
| 1564 | flashlight = 1; |
|---|
| 1565 | } |
|---|
| 1566 | if (flashlight) { |
|---|
| 1567 | if ((!((m&MODE_SCREEN_OPENED) && (m&MODE_SCREEN_ROTATED))) || (gui_mode!=GUI_MODE_NONE /* && gui_mode!=GUI_MODE_ALT */)) { |
|---|
| 1568 | flashlight = 0; |
|---|
| 1569 | draw_restore(); |
|---|
| 1570 | } |
|---|
| 1571 | return; |
|---|
| 1572 | } |
|---|
| 1573 | |
|---|
| 1574 | if (kbd_is_key_pressed(KEY_SHOOT_HALF)) { |
|---|
| 1575 | if (kbd_is_key_pressed(SHORTCUT_TOGGLE_ZEBRA)) { |
|---|
| 1576 | if (!pressed) { |
|---|
| 1577 | conf.zebra_draw = !conf.zebra_draw; |
|---|
| 1578 | if (zebra && !conf.zebra_draw) { |
|---|
| 1579 | zebra = 0; |
|---|
| 1580 | draw_restore(); |
|---|
| 1581 | } |
|---|
| 1582 | pressed = 1; |
|---|
| 1583 | } |
|---|
| 1584 | } |
|---|
| 1585 | else if (kbd_is_key_pressed(SHORTCUT_TOGGLE_HISTO)) { |
|---|
| 1586 | if (!pressed) { |
|---|
| 1587 | if (++conf.show_histo>SHOW_HALF) conf.show_histo=0; |
|---|
| 1588 | if (!conf.show_histo) { |
|---|
| 1589 | draw_restore(); |
|---|
| 1590 | } |
|---|
| 1591 | pressed = 1; |
|---|
| 1592 | } |
|---|
| 1593 | } else if (kbd_is_key_pressed(SHORTCUT_TOGGLE_OSD)) { |
|---|
| 1594 | if (!pressed) { |
|---|
| 1595 | conf.show_osd = !conf.show_osd; |
|---|
| 1596 | if (!conf.show_osd) { |
|---|
| 1597 | draw_restore(); |
|---|
| 1598 | } |
|---|
| 1599 | pressed = 1; |
|---|
| 1600 | } |
|---|
| 1601 | } else { |
|---|
| 1602 | pressed = 0; |
|---|
| 1603 | } |
|---|
| 1604 | } else { |
|---|
| 1605 | pressed = 0; |
|---|
| 1606 | } |
|---|
| 1607 | |
|---|
| 1608 | mode_video = ((m&MODE_SHOOTING_MASK)==MODE_VIDEO_STD || |
|---|
| 1609 | (m&MODE_SHOOTING_MASK)==MODE_VIDEO_SPEED || |
|---|
| 1610 | (m&MODE_SHOOTING_MASK)==MODE_VIDEO_COMPACT || |
|---|
| 1611 | (m&MODE_SHOOTING_MASK)==MODE_VIDEO_MY_COLORS || |
|---|
| 1612 | (m&MODE_SHOOTING_MASK)==MODE_VIDEO_COLOR_ACCENT || |
|---|
| 1613 | (m&MODE_SHOOTING_MASK)==MODE_VIDEO_TIME_LAPSE); |
|---|
| 1614 | |
|---|
| 1615 | |
|---|
| 1616 | mode_photo = (m&MODE_MASK) == MODE_PLAY || |
|---|
| 1617 | !( mode_video || |
|---|
| 1618 | (m&MODE_SHOOTING_MASK)==MODE_STITCH); |
|---|
| 1619 | |
|---|
| 1620 | half_disp_press=mode_photo && kbd_is_key_pressed(KEY_SHOOT_HALF) && kbd_is_key_pressed(KEY_DISPLAY); |
|---|
| 1621 | if (half_disp_press && ! half_disp_press_old) draw_restore(); |
|---|
| 1622 | half_disp_press_old=half_disp_press; |
|---|
| 1623 | if (half_disp_press) return; |
|---|
| 1624 | |
|---|
| 1625 | if (conf.zebra_draw && gui_mode==GUI_MODE_NONE && kbd_is_key_pressed(KEY_SHOOT_HALF) && mode_photo) { |
|---|
| 1626 | if (!zebra_init) { |
|---|
| 1627 | zebra_init = 1; |
|---|
| 1628 | gui_osd_zebra_init(); |
|---|
| 1629 | } |
|---|
| 1630 | zebra = gui_osd_draw_zebra(); |
|---|
| 1631 | } |
|---|
| 1632 | if (zebra_init && !kbd_is_key_pressed(KEY_SHOOT_HALF)) { |
|---|
| 1633 | zebra_init = 0; |
|---|
| 1634 | } |
|---|
| 1635 | if (zebra) { |
|---|
| 1636 | if (!kbd_is_key_pressed(KEY_SHOOT_HALF)) { |
|---|
| 1637 | zebra = 0; |
|---|
| 1638 | draw_restore(); |
|---|
| 1639 | } |
|---|
| 1640 | return; |
|---|
| 1641 | } |
|---|
| 1642 | #if !defined (CAMERA_ixus700_sd500) && !defined (CAMERA_ixus800_sd700) && !defined (CAMERA_ixus850_sd800) && !defined (CAMERA_ixus70_sd1000) && !defined (CAMERA_ixus950_sd850) && !defined (CAMERA_a560) && !defined (CAMERA_a460) && !defined(CAMERA_ixus55_sd450) |
|---|
| 1643 | if (!(conf.show_osd && (canon_menu_active==(int)&canon_menu_active-4) && (canon_shoot_menu_active==0))) return; |
|---|
| 1644 | #else |
|---|
| 1645 | if (!(conf.show_osd && (canon_menu_active==(int)&canon_menu_active-4) /*&& (canon_shoot_menu_active==0)*/ )) return; |
|---|
| 1646 | #endif |
|---|
| 1647 | |
|---|
| 1648 | |
|---|
| 1649 | if ((gui_mode==GUI_MODE_NONE || gui_mode==GUI_MODE_ALT) && ( |
|---|
| 1650 | (kbd_is_key_pressed(KEY_SHOOT_HALF) && ((conf.show_histo==SHOW_HALF)/* || (m&MODE_MASK) == MODE_PLAY*/)) || |
|---|
| 1651 | ((conf.show_histo==SHOW_ALWAYS) && !((m&MODE_MASK) == MODE_PLAY) && (recreview_hold==0)) |
|---|
| 1652 | ) && |
|---|
| 1653 | (mode_photo || (m&MODE_SHOOTING_MASK)==MODE_STITCH)) { |
|---|
| 1654 | gui_osd_draw_histo(); |
|---|
| 1655 | } |
|---|
| 1656 | |
|---|
| 1657 | if ((m&MODE_MASK) == MODE_REC && (recreview_hold==0 || conf.show_osd_in_review) ) { |
|---|
| 1658 | // m &= MODE_SHOOTING_MASK; |
|---|
| 1659 | // if (m==MODE_SCN_WATER || m==MODE_SCN_NIGHT || m==MODE_SCN_CHILD || m==MODE_SCN_PARTY || m==MODE_STITCH || |
|---|
| 1660 | // m==MODE_SCN_GRASS || m==MODE_SCN_SNOW || m==MODE_SCN_BEACH || m==MODE_SCN_FIREWORK || m==MODE_VIDEO) |
|---|
| 1661 | // ++n; |
|---|
| 1662 | |
|---|
| 1663 | if (conf.show_grid_lines) { |
|---|
| 1664 | gui_grid_draw_osd(1); |
|---|
| 1665 | } |
|---|
| 1666 | if ((gui_mode==GUI_MODE_NONE || gui_mode==GUI_MODE_ALT) && (((kbd_is_key_pressed(KEY_SHOOT_HALF) || (state_kbd_script_run) || (shooting_get_common_focus_mode())) && (mode_photo || (m&MODE_SHOOTING_MASK)==MODE_STITCH )) || (mode_video && conf.show_values_in_video) )) { |
|---|
| 1667 | |
|---|
| 1668 | if (conf.show_dof!=DOF_DONT_SHOW) gui_osd_calc_dof(); |
|---|
| 1669 | |
|---|
| 1670 | if (conf.show_dof==DOF_SHOW_IN_DOF) gui_osd_draw_dof(); |
|---|
| 1671 | |
|---|
| 1672 | if (conf.values_show_real_iso || conf.values_show_market_iso || conf.values_show_ev_seted || conf.values_show_ev_measured || conf.values_show_bv_measured || conf.values_show_bv_seted || conf.values_show_overexposure || conf.values_show_canon_overexposure) gui_osd_calc_expo_param(); |
|---|
| 1673 | } |
|---|
| 1674 | if (conf.show_state && !mode_video) gui_osd_draw_state(); |
|---|
| 1675 | if (conf.save_raw && conf.show_raw_state && !mode_video) gui_osd_draw_raw_info(); |
|---|
| 1676 | |
|---|
| 1677 | if ((conf.show_values==SHOW_ALWAYS && mode_photo) || (mode_video && conf.show_values_in_video) || ((kbd_is_key_pressed(KEY_SHOOT_HALF) || (recreview_hold==1)) && (conf.show_values==SHOW_HALF))) |
|---|
| 1678 | gui_osd_draw_values(1); |
|---|
| 1679 | else if (shooting_get_common_focus_mode() && mode_photo && conf.show_values && !(conf.show_dof==DOF_SHOW_IN_DOF) ) |
|---|
| 1680 | gui_osd_draw_values(2); |
|---|
| 1681 | else if (conf.show_values==SHOW_HALF) |
|---|
| 1682 | gui_osd_draw_values(0); |
|---|
| 1683 | } |
|---|
| 1684 | |
|---|
| 1685 | |
|---|
| 1686 | if (recreview_hold==0) { |
|---|
| 1687 | gui_batt_draw_osd(); |
|---|
| 1688 | gui_space_draw_osd(); |
|---|
| 1689 | } |
|---|
| 1690 | |
|---|
| 1691 | if ((conf.show_clock) && (recreview_hold==0)) { |
|---|
| 1692 | gui_osd_draw_clock(); |
|---|
| 1693 | } |
|---|
| 1694 | |
|---|
| 1695 | #if defined (CAMERA_ixus700_sd500) || defined (CAMERA_ixus800_sd700) || defined (CAMERA_ixus850_sd800) || defined (CAMERA_a460) |
|---|
| 1696 | if (gui_mode==GUI_MODE_NONE && kbd_is_key_pressed(KEY_SHOOT_HALF) && ((m&MODE_MASK)==MODE_REC) && ((m&MODE_SHOOTING_MASK))!=MODE_VIDEO_STD && (m&MODE_SHOOTING_MASK)!=MODE_VIDEO_COMPACT) { |
|---|
| 1697 | strcpy(osd_buf,shooting_get_tv_str()); |
|---|
| 1698 | strcat(osd_buf,"\" F"); |
|---|
| 1699 | strcat(osd_buf,shooting_get_av_str()); |
|---|
| 1700 | draw_txt_string(22-strlen(osd_buf)/2, 14, osd_buf, conf.osd_color); |
|---|
| 1701 | } |
|---|
| 1702 | #endif |
|---|
| 1703 | |
|---|
| 1704 | if (debug_vals_show) { |
|---|
| 1705 | // long v=get_file_counter(); |
|---|
| 1706 | // sprintf(osd_buf, "1:%03d-%04d ", (v>>18)&0x3FF, (v>>4)&0x3FFF); |
|---|
| 1707 | // sprintf(osd_buf, "1:%d, %08X ", xxxx, eeee); |
|---|
| 1708 | sprintf(osd_buf, "1:%8x ", physw_status[0]); |
|---|
| 1709 | draw_txt_string(28, 10, osd_buf, conf.osd_color); |
|---|
| 1710 | |
|---|
| 1711 | sprintf(osd_buf, "2:%8x ", physw_status[1]); |
|---|
| 1712 | draw_txt_string(28, 11, osd_buf, conf.osd_color); |
|---|
| 1713 | |
|---|
| 1714 | sprintf(osd_buf, "3:%8x ", physw_status[2]); |
|---|
| 1715 | draw_txt_string(28, 12, osd_buf, conf.osd_color); |
|---|
| 1716 | |
|---|
| 1717 | // sprintf(osd_buf, "4:%8x ", vid_get_viewport_fb_d()); |
|---|
| 1718 | sprintf(osd_buf, "4:%8x ", get_usb_power(1)); |
|---|
| 1719 | draw_txt_string(28, 13, osd_buf, conf.osd_color); |
|---|
| 1720 | } |
|---|
| 1721 | |
|---|
| 1722 | { |
|---|
| 1723 | static char sbuf[100]; |
|---|
| 1724 | int r,i, p, len; |
|---|
| 1725 | if (debug_propcase_show){ |
|---|
| 1726 | |
|---|
| 1727 | for (i=0;i<10;i++){ |
|---|
| 1728 | r = 0; |
|---|
| 1729 | p = debug_propcase_page*10+i; |
|---|
| 1730 | get_property_case(p, &r, 4); |
|---|
| 1731 | sprintf(sbuf, "%3d: %d ", p, r);sbuf[20]=0; |
|---|
| 1732 | draw_string(64,16+16*i,sbuf, conf.osd_color); |
|---|
| 1733 | } |
|---|
| 1734 | } |
|---|
| 1735 | |
|---|
| 1736 | if (debug_pardata_show){ |
|---|
| 1737 | extern long* FlashParamsTable[]; |
|---|
| 1738 | char s[30]; |
|---|
| 1739 | int count; |
|---|
| 1740 | |
|---|
| 1741 | for (i=0;i<10;i++){ |
|---|
| 1742 | r = 0; |
|---|
| 1743 | p = debug_propcase_page*10+i; |
|---|
| 1744 | if (p>=get_flash_params_count()) sprintf(sbuf, "%3d: This parameter does not exists", p); |
|---|
| 1745 | else { |
|---|
| 1746 | len=FlashParamsTable[p][1]>>16; |
|---|
| 1747 | if ((len==1)||(len==2)||(len==4)){ |
|---|
| 1748 | get_parameter_data(p, &r, len); |
|---|
| 1749 | sprintf(sbuf, "%3d: %30d :%2d ", p, r,len); |
|---|
| 1750 | } |
|---|
| 1751 | else { |
|---|
| 1752 | if (len>=sizeof(s)) count=sizeof(s)-1; else count=len; |
|---|
| 1753 | get_parameter_data(p, &s, count); |
|---|
| 1754 | s[count]=0; |
|---|
| 1755 | sprintf(sbuf, "%3d: %30s :%2d ", p, s,len); |
|---|
| 1756 | } |
|---|
| 1757 | } |
|---|
| 1758 | draw_string(16,16+16*i,sbuf, conf.osd_color); |
|---|
| 1759 | } |
|---|
| 1760 | } |
|---|
| 1761 | } |
|---|
| 1762 | |
|---|
| 1763 | |
|---|
| 1764 | if (ubasic_error){ |
|---|
| 1765 | const char *msg; |
|---|
| 1766 | if (ubasic_error >= UBASIC_E_ENDMARK) { |
|---|
| 1767 | msg = ubasic_errstrings[UBASIC_E_UNKNOWN_ERROR]; |
|---|
| 1768 | } else { |
|---|
| 1769 | msg = ubasic_errstrings[ubasic_error]; |
|---|
| 1770 | } |
|---|
| 1771 | sprintf(osd_buf, "uBASIC:%d %s ", ubasic_linenumber(), msg); |
|---|
| 1772 | draw_txt_string(0, 0, osd_buf, MAKE_COLOR(COLOR_RED, COLOR_YELLOW)); |
|---|
| 1773 | } |
|---|
| 1774 | } |
|---|
| 1775 | |
|---|
| 1776 | #ifndef OPTIONS_AUTOSAVE |
|---|
| 1777 | //------------------------------------------------------------------- |
|---|
| 1778 | void gui_menuproc_save(int arg) |
|---|
| 1779 | { |
|---|
| 1780 | conf_save(); |
|---|
| 1781 | } |
|---|
| 1782 | #endif |
|---|
| 1783 | |
|---|
| 1784 | //------------------------------------------------------------------- |
|---|
| 1785 | static void gui_menuproc_reset_selected(unsigned int btn) { |
|---|
| 1786 | if (btn==MBOX_BTN_YES) |
|---|
| 1787 | conf_load_defaults(); |
|---|
| 1788 | } |
|---|
| 1789 | |
|---|
| 1790 | void gui_menuproc_reset(int arg) |
|---|
| 1791 | { |
|---|
| 1792 | gui_mbox_init(LANG_MSG_RESET_OPTIONS_TITLE, |
|---|
| 1793 | LANG_MSG_RESET_OPTIONS_TEXT, |
|---|
| 1794 | MBOX_FUNC_RESTORE|MBOX_TEXT_CENTER|MBOX_BTN_YES_NO|MBOX_DEF_BTN2, gui_menuproc_reset_selected); |
|---|
| 1795 | } |
|---|
| 1796 | |
|---|
| 1797 | //------------------------------------------------------------------- |
|---|
| 1798 | void gui_draw_palette(int arg) { |
|---|
| 1799 | draw_restore(); |
|---|
| 1800 | gui_palette_init(PALETTE_MODE_DEFAULT, 0x00, NULL); |
|---|
| 1801 | gui_mode = GUI_MODE_PALETTE; |
|---|
| 1802 | } |
|---|
| 1803 | |
|---|
| 1804 | //------------------------------------------------------------------- |
|---|
| 1805 | void gui_show_build_info(int arg) { |
|---|
| 1806 | static char buf[192]; |
|---|
| 1807 | |
|---|
| 1808 | sprintf(buf, lang_str(LANG_MSG_BUILD_INFO_TEXT), HDK_VERSION, BUILD_NUMBER, __DATE__, __TIME__, PLATFORM, PLATFORMSUB); |
|---|
| 1809 | gui_mbox_init(LANG_MSG_BUILD_INFO_TITLE, (int)buf, MBOX_FUNC_RESTORE|MBOX_TEXT_LEFT, NULL); |
|---|
| 1810 | } |
|---|
| 1811 | |
|---|
| 1812 | //------------------------------------------------------------------- |
|---|
| 1813 | void gui_show_memory_info(int arg) { |
|---|
| 1814 | static char buf[64]; |
|---|
| 1815 | int size, l_size, d; |
|---|
| 1816 | char* ptr; |
|---|
| 1817 | |
|---|
| 1818 | size = 16; |
|---|
| 1819 | while (1) { |
|---|
| 1820 | ptr= malloc(size); |
|---|
| 1821 | if (ptr) { |
|---|
| 1822 | free(ptr); |
|---|
| 1823 | size <<= 1; |
|---|
| 1824 | } else |
|---|
| 1825 | break; |
|---|
| 1826 | } |
|---|
| 1827 | |
|---|
| 1828 | l_size = size; |
|---|
| 1829 | size >>= 1; |
|---|
| 1830 | d=1024; |
|---|
| 1831 | while (d) { |
|---|
| 1832 | ptr = malloc(size); |
|---|
| 1833 | if (ptr) { |
|---|
| 1834 | free(ptr); |
|---|
| 1835 | d = l_size-size; |
|---|
| 1836 | if (d<0) d=-d; |
|---|
| 1837 | l_size = size; |
|---|
| 1838 | size += d>>1; |
|---|
| 1839 | } else { |
|---|
| 1840 | d = size-l_size; |
|---|
| 1841 | if (d<0) d=-d; |
|---|
| 1842 | l_size = size; |
|---|
| 1843 | size -= d>>1; |
|---|
| 1844 | } |
|---|
| 1845 | |
|---|
| 1846 | } |
|---|
| 1847 | |
|---|
| 1848 | sprintf(buf, lang_str(LANG_MSG_MEMORY_INFO_TEXT), size-1); |
|---|
| 1849 | gui_mbox_init(LANG_MSG_MEMORY_INFO_TITLE, (int)buf, MBOX_FUNC_RESTORE|MBOX_TEXT_CENTER, NULL); |
|---|
| 1850 | } |
|---|
| 1851 | |
|---|
| 1852 | //------------------------------------------------------------------- |
|---|
| 1853 | void gui_draw_reversi(int arg) { |
|---|
| 1854 | if ((mode_get()&MODE_MASK) != MODE_PLAY) { |
|---|
| 1855 | gui_mbox_init(LANG_MSG_INFO_TITLE, LANG_MSG_SWITCH_TO_PLAY_MODE, |
|---|
| 1856 | MBOX_FUNC_RESTORE|MBOX_TEXT_CENTER, NULL); |
|---|
| 1857 | return; |
|---|
| 1858 | } |
|---|
| 1859 | gui_mode = GUI_MODE_REVERSI; |
|---|
| 1860 | gui_reversi_init(); |
|---|
| 1861 | } |
|---|
| 1862 | |
|---|
| 1863 | //------------------------------------------------------------------- |
|---|
| 1864 | void gui_draw_sokoban(int arg) { |
|---|
| 1865 | if ((mode_get()&MODE_MASK) != MODE_PLAY) { |
|---|
| 1866 | gui_mbox_init(LANG_MSG_INFO_TITLE, LANG_MSG_SWITCH_TO_PLAY_MODE, |
|---|
| 1867 | MBOX_FUNC_RESTORE|MBOX_TEXT_CENTER, NULL); |
|---|
| 1868 | return; |
|---|
| 1869 | } |
|---|
| 1870 | gui_mode = GUI_MODE_SOKOBAN; |
|---|
| 1871 | gui_sokoban_init(); |
|---|
| 1872 | } |
|---|
| 1873 | |
|---|
| 1874 | //------------------------------------------------------------------- |
|---|
| 1875 | void gui_draw_debug(int arg) { |
|---|
| 1876 | // gui_debug_init(0x2510); |
|---|
| 1877 | // gui_debug_init(0x127E0); |
|---|
| 1878 | // gui_debug_init(0x7F5B8); |
|---|
| 1879 | // gui_debug_init(malloc(16)); |
|---|
| 1880 | gui_debug_init((void*)0xB054); |
|---|
| 1881 | } |
|---|
| 1882 | |
|---|
| 1883 | //------------------------------------------------------------------- |
|---|
| 1884 | void gui_draw_bench(int arg) { |
|---|
| 1885 | gui_mode = GUI_MODE_BENCH; |
|---|
| 1886 | gui_bench_init(); |
|---|
| 1887 | } |
|---|
| 1888 | |
|---|
| 1889 | //------------------------------------------------------------------- |
|---|
| 1890 | void gui_draw_splash() { |
|---|
| 1891 | coord w, h, x, y; |
|---|
| 1892 | static const char *text[] = { |
|---|
| 1893 | "CHDK Firmware '" HDK_VERSION ", #" BUILD_NUMBER "'" , |
|---|
| 1894 | "Build: " __DATE__ " " __TIME__ , |
|---|
| 1895 | "Camera: " PLATFORM " - " PLATFORMSUB }; |
|---|
| 1896 | int i, l; |
|---|
| 1897 | color cl = MAKE_COLOR((gui_splash_mode==MODE_REC)?0xDA:0xD9, COLOR_WHITE); |
|---|
| 1898 | |
|---|
| 1899 | gui_splash_mode = (mode_get()&MODE_MASK); |
|---|
| 1900 | |
|---|
| 1901 | h=sizeof(text)/sizeof(text[0])*FONT_HEIGHT+8; |
|---|
| 1902 | w=0; |
|---|
| 1903 | for (i=0; i<sizeof(text)/sizeof(text[0]); ++i) { |
|---|
| 1904 | l=strlen(text[i]); |
|---|
| 1905 | if (l>w) w=l; |
|---|
| 1906 | } |
|---|
| 1907 | w=w*FONT_WIDTH+10; |
|---|
| 1908 | |
|---|
| 1909 | x = (screen_width-w)>>1; y = (screen_height-h)>>1; |
|---|
| 1910 | draw_filled_rect(x, y, x+w, y+h, cl); |
|---|
| 1911 | for (i=0; i<sizeof(text)/sizeof(text[0]); ++i) { |
|---|
| 1912 | draw_string(x+((w-strlen(text[i])*FONT_WIDTH)>>1), y+i*FONT_HEIGHT+4, text[i], cl); |
|---|
| 1913 | } |
|---|
| 1914 | } |
|---|
| 1915 | |
|---|
| 1916 | //------------------------------------------------------------------- |
|---|
| 1917 | void gui_draw_fselect(int arg) { |
|---|
| 1918 | gui_fselect_init(LANG_STR_FILE_BROWSER, "A", NULL); |
|---|
| 1919 | } |
|---|
| 1920 | |
|---|
| 1921 | //------------------------------------------------------------------- |
|---|
| 1922 | static void gui_load_script_selected(const char *fn) { |
|---|
| 1923 | if (fn) |
|---|
| 1924 | script_load(fn); |
|---|
| 1925 | } |
|---|
| 1926 | void gui_load_script(int arg) { |
|---|
| 1927 | DIR *d; |
|---|
| 1928 | char *path="A/CHDK/SCRIPTS"; |
|---|
| 1929 | |
|---|
| 1930 | // if exists "A/CHDK/SCRIPTS" go into |
|---|
| 1931 | d=opendir(path); |
|---|
| 1932 | if (d) { |
|---|
| 1933 | closedir(d); |
|---|
| 1934 | } else { |
|---|
| 1935 | path="A"; |
|---|
| 1936 | } |
|---|
| 1937 | |
|---|
| 1938 | gui_fselect_init(LANG_STR_SELECT_SCRIPT_FILE, path, gui_load_script_selected); |
|---|
| 1939 | } |
|---|
| 1940 | |
|---|
| 1941 | //------------------------------------------------------------------- |
|---|
| 1942 | static void gui_grid_lines_load_selected(const char *fn) { |
|---|
| 1943 | if (fn) |
|---|
| 1944 | grid_lines_load(fn); |
|---|
| 1945 | } |
|---|
| 1946 | void gui_grid_lines_load(int arg) { |
|---|
| 1947 | DIR *d; |
|---|
| 1948 | char *path="A/CHDK/GRIDS"; |
|---|
| 1949 | |
|---|
| 1950 | // if exists "A/CHDK/GRIDS" go into |
|---|
| 1951 | d=opendir(path); |
|---|
| 1952 | if (d) { |
|---|
| 1953 | closedir(d); |
|---|
| 1954 | } else { |
|---|
| 1955 | path="A"; |
|---|
| 1956 | } |
|---|
| 1957 | |
|---|
| 1958 | gui_fselect_init(LANG_STR_SELECT_GRID_FILE, path, gui_grid_lines_load_selected); |
|---|
| 1959 | } |
|---|
| 1960 | |
|---|
| 1961 | //------------------------------------------------------------------- |
|---|
| 1962 | void gui_draw_osd_le(int arg) { |
|---|
| 1963 | gui_mode = GUI_MODE_OSD; |
|---|
| 1964 | gui_osd_init(); |
|---|
| 1965 | } |
|---|
| 1966 | |
|---|
| 1967 | //------------------------------------------------------------------- |
|---|
| 1968 | static void gui_draw_read_selected(const char *fn) { |
|---|
| 1969 | if (fn) { |
|---|
| 1970 | if (!rbf_load(conf.reader_rbf_file)) |
|---|
| 1971 | rbf_load_from_8x16(current_font); |
|---|
| 1972 | rbf_set_codepage(conf.reader_codepage); |
|---|
| 1973 | gui_mode = GUI_MODE_READ; |
|---|
| 1974 | gui_read_init(fn); |
|---|
| 1975 | } |
|---|
| 1976 | } |
|---|
| 1977 | void gui_draw_read(int arg) { |
|---|
| 1978 | DIR *d; |
|---|
| 1979 | char *path="A/CHDK/BOOKS"; |
|---|
| 1980 | |
|---|
| 1981 | // if exists "A/CHDK/BOOKS" go into |
|---|
| 1982 | d=opendir(path); |
|---|
| 1983 | if (d) { |
|---|
| 1984 | closedir(d); |
|---|
| 1985 | } else { |
|---|
| 1986 | path="A"; |
|---|
| 1987 | } |
|---|
| 1988 | gui_fselect_init(LANG_STR_SELECT_TEXT_FILE, path, gui_draw_read_selected); |
|---|
| 1989 | } |
|---|
| 1990 | |
|---|
| 1991 | //------------------------------------------------------------------- |
|---|
| 1992 | void gui_draw_read_last(int arg) { |
|---|
| 1993 | int fd; |
|---|
| 1994 | |
|---|
| 1995 | fd = open(conf.reader_file, O_RDONLY, 0777); |
|---|
| 1996 | if (fd >= 0) { |
|---|
| 1997 | close(fd); |
|---|
| 1998 | gui_draw_read_selected(conf.reader_file); |
|---|
| 1999 | } else { |
|---|
| 2000 | gui_draw_read(arg); |
|---|
| 2001 | } |
|---|
| 2002 | } |
|---|
| 2003 | |
|---|
| 2004 | //------------------------------------------------------------------- |
|---|
| 2005 | void gui_menuproc_mkbootdisk(int arg) { |
|---|
| 2006 | mark_filesystem_bootable(); |
|---|
| 2007 | } |
|---|
| 2008 | |
|---|
| 2009 | //------------------------------------------------------------------- |
|---|
| 2010 | void gui_draw_calendar(int arg) { |
|---|
| 2011 | gui_mode = GUI_MODE_CALENDAR; |
|---|
| 2012 | gui_calendar_init(); |
|---|
| 2013 | } |
|---|
| 2014 | |
|---|
| 2015 | //------------------------------------------------------------------- |
|---|
| 2016 | static void gui_draw_rbf_selected(const char *fn) { |
|---|
| 2017 | if (fn) { |
|---|
| 2018 | strcpy(conf.reader_rbf_file, fn); |
|---|
| 2019 | } |
|---|
| 2020 | } |
|---|
| 2021 | void gui_draw_load_rbf(int arg) { |
|---|
| 2022 | DIR *d; |
|---|
| 2023 | char *path="A/CHDK/FONTS"; |
|---|
| 2024 | |
|---|
| 2025 | // if exists "A/CHDK/FONTS" go into |
|---|
| 2026 | d=opendir(path); |
|---|
| 2027 | if (d) { |
|---|
| 2028 | closedir(d); |
|---|
| 2029 | } else { |
|---|
| 2030 | path="A"; |
|---|
| 2031 | } |
|---|
| 2032 | |
|---|
| 2033 | gui_fselect_init(LANG_STR_SELECT_FONT_FILE, path, gui_draw_rbf_selected); |
|---|
| 2034 | } |
|---|
| 2035 | |
|---|
| 2036 | //------------------------------------------------------------------- |
|---|
| 2037 | static void gui_draw_menu_rbf_selected(const char *fn) { |
|---|
| 2038 | if (fn) { |
|---|
| 2039 | strcpy(conf.menu_rbf_file, fn); |
|---|
| 2040 | if (!rbf_load(conf.menu_rbf_file)) |
|---|
| 2041 | rbf_load_from_8x16(current_font); |
|---|
| 2042 | rbf_set_codepage(FONT_CP_WIN); |
|---|
| 2043 | gui_menu_init(NULL); |
|---|
| 2044 | } |
|---|
| 2045 | } |
|---|
| 2046 | void gui_draw_load_menu_rbf(int arg) { |
|---|
| 2047 | DIR *d; |
|---|
| 2048 | char *path="A/CHDK/FONTS"; |
|---|
| 2049 | |
|---|
| 2050 | // if exists "A/CHDK/FONTS" go into |
|---|
| 2051 | d=opendir(path); |
|---|
| 2052 | if (d) { |
|---|
| 2053 | closedir(d); |
|---|
| 2054 | } else { |
|---|
| 2055 | path="A"; |
|---|
| 2056 | } |
|---|
| 2057 | |
|---|
| 2058 | gui_fselect_init(LANG_STR_SELECT_FONT_FILE, path, gui_draw_menu_rbf_selected); |
|---|
| 2059 | } |
|---|
| 2060 | |
|---|
| 2061 | //------------------------------------------------------------------- |
|---|
| 2062 | static void gui_draw_lang_selected(const char *fn) { |
|---|
| 2063 | if (fn) { |
|---|
| 2064 | strcpy(conf.lang_file, fn); |
|---|
| 2065 | lang_load_from_file(conf.lang_file); |
|---|
| 2066 | gui_menu_init(NULL); |
|---|
| 2067 | } |
|---|
| 2068 | } |
|---|
| 2069 | void gui_draw_load_lang(int arg) { |
|---|
| 2070 | DIR *d; |
|---|
| 2071 | char *path="A/CHDK/LANG"; |
|---|
| 2072 | |
|---|
| 2073 | // if exists "A/CHDK/LANG" go into |
|---|
| 2074 | d=opendir(path); |
|---|
| 2075 | if (d) { |
|---|
| 2076 | closedir(d); |
|---|
| 2077 | } else { |
|---|
| 2078 | path="A"; |
|---|
| 2079 | } |
|---|
| 2080 | |
|---|
| 2081 | gui_fselect_init(LANG_STR_SELECT_LANG_FILE, path, gui_draw_lang_selected); |
|---|
| 2082 | } |
|---|
| 2083 | |
|---|
| 2084 | int find_mnu(CMenu *curr_menu, int mnu, int count) |
|---|
| 2085 | { |
|---|
| 2086 | int gui_menu_curr_item; |
|---|
| 2087 | |
|---|
| 2088 | gui_menu_curr_item = 0; |
|---|
| 2089 | while(curr_menu->menu[gui_menu_curr_item].text) { |
|---|
| 2090 | if (curr_menu->menu[gui_menu_curr_item].text == mnu){ |
|---|
| 2091 | user_submenu_items[count] = curr_menu->menu[gui_menu_curr_item]; |
|---|
| 2092 | return 1; |
|---|
| 2093 | } |
|---|
| 2094 | if ((curr_menu->menu[gui_menu_curr_item].type & MENUITEM_MASK) == MENUITEM_SUBMENU) |
|---|
| 2095 | if (find_mnu((CMenu*)(curr_menu->menu[gui_menu_curr_item].value), mnu, count)) return 1; |
|---|
| 2096 | gui_menu_curr_item++; |
|---|
| 2097 | } |
|---|
| 2098 | return 0; |
|---|
| 2099 | } |
|---|
| 2100 | |
|---|
| 2101 | void user_menu_save() { |
|---|
| 2102 | int x; |
|---|
| 2103 | for (x=0; x<10; x++) { |
|---|
| 2104 | conf.user_menu_vars[x] = user_submenu_items[x].text; |
|---|
| 2105 | } |
|---|
| 2106 | } |
|---|
| 2107 | |
|---|
| 2108 | void user_menu_restore() { |
|---|
| 2109 | int x; |
|---|
| 2110 | for (x=0; x<10; x++) { |
|---|
| 2111 | find_mnu(&root_menu, conf.user_menu_vars[x], x); |
|---|
| 2112 | } |
|---|
| 2113 | } |
|---|