| 1 | #include "stdlib.h"
|
|---|
| 2 | #include "platform.h"
|
|---|
| 3 | #include "core.h"
|
|---|
| 4 | #include "keyboard.h"
|
|---|
| 5 | #include "conf.h"
|
|---|
| 6 | #include "camera.h"
|
|---|
| 7 | #include "ubasic.h"
|
|---|
| 8 | #include "font.h"
|
|---|
| 9 | #include "lang.h"
|
|---|
| 10 | #include "gui.h"
|
|---|
| 11 | #include "gui_lang.h"
|
|---|
| 12 | #include "gui_draw.h"
|
|---|
| 13 | #include "gui_menu.h"
|
|---|
| 14 | #include "gui_palette.h"
|
|---|
| 15 | #include "gui_mbox.h"
|
|---|
| 16 | #include "gui_mpopup.h"
|
|---|
| 17 | #include "gui_reversi.h"
|
|---|
| 18 | #include "gui_sokoban.h"
|
|---|
| 19 | #include "gui_debug.h"
|
|---|
| 20 | #include "gui_fselect.h"
|
|---|
| 21 | #include "gui_batt.h"
|
|---|
| 22 | #include "gui_space.h"
|
|---|
| 23 | #include "gui_osd.h"
|
|---|
| 24 | #include "gui_read.h"
|
|---|
| 25 | #include "gui_calendar.h"
|
|---|
| 26 | #include "gui_bench.h"
|
|---|
| 27 | #include "gui_grid.h"
|
|---|
| 28 | #include "histogram.h"
|
|---|
| 29 | #include "script.h"
|
|---|
| 30 | #include "motion_detector.h"
|
|---|
| 31 | #include "raw.h"
|
|---|
| 32 | #include "curves.h"
|
|---|
| 33 | #include "gui_logo.h"
|
|---|
| 34 | //-------------------------------------------------------------------
|
|---|
| 35 |
|
|---|
| 36 | #define OPTIONS_AUTOSAVE
|
|---|
| 37 | #define SPLASH_TIME 20
|
|---|
| 38 | int script_params_has_changed=0;
|
|---|
| 39 | //shortcuts
|
|---|
| 40 | //------------------------------------------------------------------
|
|---|
| 41 | // #define KEY_NONE (KEY_DUMMY+1)
|
|---|
| 42 |
|
|---|
| 43 | #if !CAM_HAS_ERASE_BUTTON
|
|---|
| 44 | //Alt mode
|
|---|
| 45 | #define SHORTCUT_TOGGLE_RAW KEY_DISPLAY
|
|---|
| 46 | #define SHORTCUT_MF_TOGGLE KEY_UP
|
|---|
| 47 | //Half press shoot button
|
|---|
| 48 | #define SHORTCUT_TOGGLE_HISTO KEY_DOWN
|
|---|
| 49 | #define SHORTCUT_TOGGLE_ZEBRA KEY_MENU
|
|---|
| 50 | #define SHORTCUT_TOGGLE_OSD KEY_RIGHT
|
|---|
| 51 | #define SHORTCUT_DISABLE_OVERRIDES KEY_LEFT
|
|---|
| 52 | //Alt mode & Manual mode
|
|---|
| 53 | #define SHORTCUT_SET_INFINITY KEY_DISPLAY
|
|---|
| 54 | #define SHORTCUT_SET_HYPERFOCAL KEY_DOWN
|
|---|
| 55 | // For models without ZOOM_LEVER (#if !CAM_HAS_ZOOM_LEVER)
|
|---|
| 56 | // SHORTCUT_SET_INFINITY is not used
|
|---|
| 57 | // KEY_DISPLAY is used for gui_subj_dist_override_koef_enum;
|
|---|
| 58 | // KEY_LEFT/KEY_RIGHT is used for gui_subj_dist_override_value_enum (because of no separate ZOOM_IN/OUT)
|
|---|
| 59 |
|
|---|
| 60 | #elif defined(CAMERA_g7)
|
|---|
| 61 | //Alt mode
|
|---|
| 62 | #define SHORTCUT_TOGGLE_RAW KEY_ERASE
|
|---|
| 63 | //Half press shoot button
|
|---|
| 64 | #define SHORTCUT_TOGGLE_HISTO KEY_DOWN
|
|---|
| 65 | #define SHORTCUT_TOGGLE_ZEBRA KEY_LEFT
|
|---|
| 66 | #define SHORTCUT_TOGGLE_OSD KEY_RIGHT
|
|---|
| 67 | #define SHORTCUT_DISABLE_OVERRIDES KEY_UP
|
|---|
| 68 | //Alt mode & Manual mode
|
|---|
| 69 | #define SHORTCUT_SET_INFINITY KEY_UP
|
|---|
| 70 | #define SHORTCUT_SET_HYPERFOCAL KEY_DOWN
|
|---|
| 71 |
|
|---|
| 72 | #elif defined(CAMERA_sx100is)
|
|---|
| 73 | //Alt mode
|
|---|
| 74 | #define SHORTCUT_TOGGLE_RAW KEY_ERASE
|
|---|
| 75 | //Half press shoot button
|
|---|
| 76 | #define SHORTCUT_TOGGLE_HISTO KEY_UP
|
|---|
| 77 | #define SHORTCUT_TOGGLE_ZEBRA KEY_DOWN
|
|---|
| 78 | #define SHORTCUT_TOGGLE_OSD KEY_RIGHT
|
|---|
| 79 | #define SHORTCUT_DISABLE_OVERRIDES KEY_LEFT
|
|---|
| 80 | //Alt mode & Manual mode
|
|---|
| 81 | #define SHORTCUT_SET_INFINITY KEY_UP
|
|---|
| 82 | #define SHORTCUT_SET_HYPERFOCAL KEY_DOWN
|
|---|
| 83 |
|
|---|
| 84 |
|
|---|
| 85 | #else
|
|---|
| 86 |
|
|---|
| 87 | //Alt mode
|
|---|
| 88 | #define SHORTCUT_TOGGLE_RAW KEY_ERASE
|
|---|
| 89 | //Half press shoot button
|
|---|
| 90 | #define SHORTCUT_TOGGLE_HISTO KEY_UP
|
|---|
| 91 | #define SHORTCUT_TOGGLE_ZEBRA KEY_LEFT
|
|---|
| 92 | #define SHORTCUT_TOGGLE_OSD KEY_RIGHT
|
|---|
| 93 | #define SHORTCUT_DISABLE_OVERRIDES KEY_DOWN
|
|---|
| 94 | //Alt mode & Manual mode
|
|---|
| 95 | #define SHORTCUT_SET_INFINITY KEY_UP
|
|---|
| 96 | #define SHORTCUT_SET_HYPERFOCAL KEY_DOWN
|
|---|
| 97 | #endif
|
|---|
| 98 |
|
|---|
| 99 |
|
|---|
| 100 | // forward declarations
|
|---|
| 101 | //-------------------------------------------------------------------
|
|---|
| 102 | extern void dump_memory();
|
|---|
| 103 |
|
|---|
| 104 | static void gui_draw_osd();
|
|---|
| 105 | static void gui_draw_splash();
|
|---|
| 106 | void user_menu_save();
|
|---|
| 107 | void user_menu_restore();
|
|---|
| 108 | // Menu procs
|
|---|
| 109 | //-------------------------------------------------------------------
|
|---|
| 110 | static void gui_show_build_info(int arg);
|
|---|
| 111 | static void gui_show_memory_info(int arg);
|
|---|
| 112 | static void gui_draw_palette(int arg);
|
|---|
| 113 | static void gui_draw_reversi(int arg);
|
|---|
| 114 | static void gui_draw_sokoban(int arg);
|
|---|
| 115 | static void gui_draw_debug(int arg);
|
|---|
| 116 | static void gui_draw_bench(int arg);
|
|---|
| 117 | static void gui_draw_fselect(int arg);
|
|---|
| 118 | static void gui_draw_osd_le(int arg);
|
|---|
| 119 | static void gui_load_script(int arg);
|
|---|
| 120 | static void gui_load_script_default(int arg);
|
|---|
| 121 | static void gui_draw_read(int arg);
|
|---|
| 122 | static void gui_draw_read_last(int arg);
|
|---|
| 123 | static void gui_draw_load_menu_rbf(int arg);
|
|---|
| 124 | static void gui_draw_load_symbol_rbf(int arg); //AKA
|
|---|
| 125 | static void gui_draw_load_rbf(int arg);
|
|---|
| 126 | static void gui_draw_calendar(int arg);
|
|---|
| 127 | static void gui_draw_load_lang(int arg);
|
|---|
| 128 | static void gui_menuproc_mkbootdisk(int arg);
|
|---|
| 129 | #ifndef OPTIONS_AUTOSAVE
|
|---|
| 130 | static void gui_menuproc_save(int arg);
|
|---|
| 131 | #endif
|
|---|
| 132 | static void gui_menuproc_reset(int arg);
|
|---|
| 133 | static void gui_grid_lines_load(int arg);
|
|---|
| 134 | static void gui_raw_develop(int arg);
|
|---|
| 135 | static void gui_menuproc_break_card(int arg);
|
|---|
| 136 | static void gui_menuproc_swap_patitons(int arg);
|
|---|
| 137 | static void gui_load_curve_selected(const char *fn);
|
|---|
| 138 | static void gui_load_curve(int arg);
|
|---|
| 139 | static const char* gui_histo_show_enum(int change, int arg);
|
|---|
| 140 | static const char* gui_histo_mode_enum(int change, int arg);
|
|---|
| 141 | static const char* gui_temp_mode_enum(int change, int arg);
|
|---|
| 142 | static const char* gui_histo_layout_enum(int change, int arg);
|
|---|
| 143 | static const char* gui_zebra_mode_enum(int change, int arg);
|
|---|
| 144 | static const char* gui_zebra_draw_osd_enum(int change, int arg);
|
|---|
| 145 | static const char* gui_font_enum(int change, int arg);
|
|---|
| 146 | static const char* gui_raw_prefix_enum(int change, int arg);
|
|---|
| 147 | static const char* gui_raw_ext_enum(int change, int arg);
|
|---|
| 148 | static const char* gui_sub_batch_prefix_enum(int change, int arg);
|
|---|
| 149 | static const char* gui_sub_batch_ext_enum(int change, int arg);
|
|---|
| 150 |
|
|---|
| 151 | static const char* gui_raw_nr_enum(int change, int arg);
|
|---|
| 152 | static const char* gui_autoiso_shutter_enum(int change, int arg);
|
|---|
| 153 | static const char* gui_reader_codepage_enum(int change, int arg);
|
|---|
| 154 | static const char* gui_zoom_value_enum(int change, int arg);
|
|---|
| 155 | static const char* gui_show_values_enum(int change, int arg);
|
|---|
| 156 | static const char* gui_dof_show_value_enum(int change, int arg);
|
|---|
| 157 | #if CAM_ADJUSTABLE_ALT_BUTTON
|
|---|
| 158 | static const char* gui_alt_mode_button_enum(int change, int arg);
|
|---|
| 159 | #endif
|
|---|
| 160 | static const char* gui_alt_power_enum(int change, int arg);
|
|---|
| 161 | static const char* gui_video_mode_enum(int change, int arg);
|
|---|
| 162 | static const char* gui_fast_ev_step(int change, int arg);
|
|---|
| 163 | static const char* gui_video_bitrate_enum(int change, int arg);
|
|---|
| 164 | static const char* gui_tv_bracket_values_enum(int change, int arg);
|
|---|
| 165 | static const char* gui_av_bracket_values_enum(int change, int arg);
|
|---|
| 166 | static const char* gui_iso_bracket_koef_enum(int change, int arg);
|
|---|
| 167 | static const char* gui_subj_dist_bracket_koef_enum(int change, int arg);
|
|---|
| 168 | static const char* gui_bracket_type_enum(int change, int arg);
|
|---|
| 169 | static const char* gui_av_override_enum(int change, int arg);
|
|---|
| 170 | static const char* gui_iso_override_koef_enum(int change, int arg);
|
|---|
| 171 | static const char* gui_tv_override_koef_enum(int change, int arg);
|
|---|
| 172 | static const char* gui_tv_override_value_enum(int change, int arg);
|
|---|
| 173 | static const char* gui_tv_enum_type_enum(int change, int arg);
|
|---|
| 174 | static const char* gui_subj_dist_override_value_enum(int change, int arg);
|
|---|
| 175 | static const char* gui_subj_dist_override_koef_enum(int change, int arg);
|
|---|
| 176 | static const char* gui_tv_exposure_order_enum(int change, int arg);
|
|---|
| 177 | static const char* gui_av_exposure_order_enum(int change, int arg);
|
|---|
| 178 | static const char* gui_iso_exposure_order_enum(int change, int arg);
|
|---|
| 179 | static const char* gui_nd_filter_state_enum(int change, int arg);
|
|---|
| 180 | //static const char* gui_tv_enum(int change, int arg);
|
|---|
| 181 | const char* gui_user_menu_show_enum(int change, int arg);
|
|---|
| 182 | static const char* gui_hide_osd_enum(int change, int arg);
|
|---|
| 183 | static const char* gui_show_clock_enum(int change, int arg);
|
|---|
| 184 | static const char* gui_clock_format_enum(int change, int arg);
|
|---|
| 185 | static const char* gui_clock_indicator_enum(int change, int arg);
|
|---|
| 186 | static const char* gui_clock_halfpress_enum(int change, int arg);
|
|---|
| 187 | static const char* gui_space_bar_enum(int change, int arg);
|
|---|
| 188 | static const char* gui_space_bar_size_enum(int change, int arg);
|
|---|
| 189 | static const char* gui_space_bar_width_enum(int change, int arg);
|
|---|
| 190 | static const char* gui_space_warn_type_enum(int change, int arg);
|
|---|
| 191 | static const char* gui_bad_pixel_enum(int change, int arg);
|
|---|
| 192 | static const char* gui_video_af_key_enum(int change, int arg);
|
|---|
| 193 | static const char* gui_show_movie_time(int change, int arg);
|
|---|
| 194 | static const char* gui_script_autostart_enum(int change, int arg);
|
|---|
| 195 | static const char* gui_script_param_set_enum(int change, int arg);
|
|---|
| 196 | static const char* gui_override_disable_enum(int change, int arg);
|
|---|
| 197 | static const char* gui_conf_curve_enum(int change, int arg);
|
|---|
| 198 | static const char* gui_debug_shortcut_enum(int change, int arg);
|
|---|
| 199 | static const char* gui_debug_display_enum(int change, int arg);
|
|---|
| 200 | static void gui_debug_shortcut(void);
|
|---|
| 201 |
|
|---|
| 202 | void rinit();
|
|---|
| 203 |
|
|---|
| 204 |
|
|---|
| 205 | // Menu callbacks
|
|---|
| 206 | //-------------------------------------------------------------------
|
|---|
| 207 | static void cb_step_25();
|
|---|
| 208 | static void cb_perc();
|
|---|
| 209 | static void cb_volts();
|
|---|
| 210 | static void cb_space_perc();
|
|---|
| 211 | static void cb_space_mb();
|
|---|
| 212 | static void cb_battery_menu_change(unsigned int item);
|
|---|
| 213 | static void cb_zebra_restore_screen();
|
|---|
| 214 | static void cb_zebra_restore_osd();
|
|---|
| 215 |
|
|---|
| 216 | static int debug_tasklist_start;
|
|---|
| 217 | static int debug_display_direction=1;
|
|---|
| 218 | // Menu definition
|
|---|
| 219 | //-------------------------------------------------------------------
|
|---|
| 220 | static CMenuItem remote_submenu_items[] = {
|
|---|
| 221 | {0x71,LANG_MENU_REMOTE_ENABLE, MENUITEM_BOOL, &conf.remote_enable},
|
|---|
| 222 | {0x0,LANG_MENU_SYNCHABLE_REMOTE, MENUITEM_SEPARATOR },
|
|---|
| 223 | {0x71,LANG_MENU_SYNCHABLE_REMOTE_ENABLE, MENUITEM_BOOL, &conf.ricoh_ca1_mode },
|
|---|
| 224 | {0x5c,LANG_MENU_SYNCH_ENABLE, MENUITEM_BOOL, &conf.synch_enable },
|
|---|
| 225 | {0x5c,LANG_MENU_SYNCH_DELAY_ENABLE, MENUITEM_BOOL, &conf.synch_delay_enable },
|
|---|
| 226 | {0x5c,LANG_MENU_SYNCH_DELAY_VALUE, MENUITEM_INT|MENUITEM_F_UNSIGNED, &conf.synch_delay_value },
|
|---|
| 227 | {0x5c,LANG_MENU_SYNCH_DELAY_COARSE_VALUE, MENUITEM_INT|MENUITEM_F_UNSIGNED, &conf.synch_delay_coarse_value },
|
|---|
| 228 | {0x5c,LANG_MENU_REMOTE_ZOOM_ENABLE, MENUITEM_BOOL, &conf.remote_zoom_enable },
|
|---|
| 229 | {0x5f,LANG_MENU_REMOTE_ZOOM_TIMEOUT, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.zoom_timeout, MENU_MINMAX(2,10)},
|
|---|
| 230 | {0x51,LANG_MENU_BACK, MENUITEM_UP },
|
|---|
| 231 | {0}
|
|---|
| 232 | };
|
|---|
| 233 | static CMenu remote_submenu = {0x86,LANG_MENU_REMOTE_PARAM_TITLE, NULL, remote_submenu_items };
|
|---|
| 234 |
|
|---|
| 235 | static CMenuItem script_submenu_items_top[] = {
|
|---|
| 236 | {0x35,LANG_MENU_SCRIPT_LOAD, MENUITEM_PROC, (int*)gui_load_script },
|
|---|
| 237 | {0x5f,LANG_MENU_SCRIPT_DELAY, MENUITEM_INT|MENUITEM_F_UNSIGNED, &conf.script_shoot_delay },
|
|---|
| 238 | // remote autostart
|
|---|
| 239 | {0x5f,LANG_MENU_SCRIPT_AUTOSTART, MENUITEM_ENUM, (int*)gui_script_autostart_enum },
|
|---|
| 240 |
|
|---|
| 241 | #if CAM_REMOTE
|
|---|
| 242 | {0x86,LANG_MENU_REMOTE_PARAM, MENUITEM_SUBMENU, (int*)&remote_submenu },
|
|---|
| 243 | //{0x71,LANG_MENU_SCRIPT_REMOTE_ENABLE, MENUITEM_BOOL, &conf.remote_enable},
|
|---|
| 244 | #endif
|
|---|
| 245 | {0x5d,LANG_MENU_SCRIPT_DEFAULT_VAL, MENUITEM_PROC, (int*)gui_load_script_default },
|
|---|
| 246 | {0x5e,LANG_MENU_SCRIPT_PARAM_SET, MENUITEM_ENUM, (int*)gui_script_param_set_enum },
|
|---|
| 247 | {0x5c,LANG_MENU_SCRIPT_PARAM_SAVE, MENUITEM_BOOL, &conf.script_param_save },
|
|---|
| 248 | {0x0,(int)script_title, MENUITEM_SEPARATOR },
|
|---|
| 249 | // {0x0,LANG_MENU_SCRIPT_CURRENT, MENUITEM_SEPARATOR },
|
|---|
| 250 | // {0x0,(int)script_title, MENUITEM_TEXT },
|
|---|
| 251 | // {0x0,LANG_MENU_SCRIPT_PARAMS, MENUITEM_SEPARATOR }
|
|---|
| 252 | };
|
|---|
| 253 |
|
|---|
| 254 | static CMenuItem script_submenu_items_bottom[] = {
|
|---|
| 255 | {0x51,LANG_MENU_BACK, MENUITEM_UP },
|
|---|
| 256 | {0}
|
|---|
| 257 | };
|
|---|
| 258 |
|
|---|
| 259 | static CMenuItem script_submenu_items[sizeof(script_submenu_items_top)/sizeof(script_submenu_items_top[0])+SCRIPT_NUM_PARAMS+
|
|---|
| 260 | sizeof(script_submenu_items_bottom)/sizeof(script_submenu_items_bottom[0])];
|
|---|
| 261 | static CMenu script_submenu = {0x27,LANG_MENU_SCRIPT_TITLE, NULL, script_submenu_items };
|
|---|
| 262 |
|
|---|
| 263 |
|
|---|
| 264 | static CMenuItem games_submenu_items[] = {
|
|---|
| 265 | {0x38,LANG_MENU_GAMES_REVERSI, MENUITEM_PROC, (int*)gui_draw_reversi },
|
|---|
| 266 | {0x38,LANG_MENU_GAMES_SOKOBAN, MENUITEM_PROC, (int*)gui_draw_sokoban },
|
|---|
| 267 | {0x51,LANG_MENU_BACK, MENUITEM_UP },
|
|---|
| 268 | {0}
|
|---|
| 269 | };
|
|---|
| 270 | static CMenu games_submenu = {0x38,LANG_MENU_GAMES_TITLE, NULL, games_submenu_items };
|
|---|
| 271 |
|
|---|
| 272 | static CMenuItem autoiso_submenu_items[] = {
|
|---|
| 273 | {0x5c,LANG_MENU_AUTOISO_ENABLED, MENUITEM_BOOL, &conf.autoiso_enable},
|
|---|
| 274 | {0x5f,LANG_MENU_AUTOISO_MIN_SHUTTER, MENUITEM_ENUM, (int*)gui_autoiso_shutter_enum },
|
|---|
| 275 | {0x5f,LANG_MENU_AUTOISO_USER_FACTOR, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.autoiso_user_factor, MENU_MINMAX(1, 8) },
|
|---|
| 276 | #if CAM_HAS_IS
|
|---|
| 277 | {0x5f,LANG_MENU_AUTOISO_IS_FACTOR, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.autoiso_is_factor, MENU_MINMAX(1, 8) },
|
|---|
| 278 | #endif
|
|---|
| 279 | {0x5f,LANG_MENU_AUTOISO_MAX_ISO_HI, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.autoiso_max_iso_hi, MENU_MINMAX(20, 160) },
|
|---|
| 280 | {0x5f,LANG_MENU_AUTOISO_MAX_ISO_AUTO, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.autoiso_max_iso_auto, MENU_MINMAX(10, 80) },
|
|---|
| 281 | {0x5f,LANG_MENU_AUTOISO_MIN_ISO, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.autoiso_min_iso, MENU_MINMAX(1, 20) },
|
|---|
| 282 | {0x51,LANG_MENU_BACK, MENUITEM_UP },
|
|---|
| 283 | {0}
|
|---|
| 284 | };
|
|---|
| 285 | static CMenu autoiso_submenu = {0x2d,LANG_MENU_AUTOISO_TITLE, NULL, autoiso_submenu_items };
|
|---|
| 286 |
|
|---|
| 287 |
|
|---|
| 288 | static CMenuItem reader_submenu_items[] = {
|
|---|
| 289 | {0x35,LANG_MENU_READ_OPEN_NEW, MENUITEM_PROC, (int*)gui_draw_read },
|
|---|
| 290 | {0x35,LANG_MENU_READ_OPEN_LAST, MENUITEM_PROC, (int*)gui_draw_read_last },
|
|---|
| 291 | {0x35,LANG_MENU_READ_SELECT_FONT, MENUITEM_PROC, (int*)gui_draw_load_rbf },
|
|---|
| 292 | {0x5f,LANG_MENU_READ_CODEPAGE, MENUITEM_ENUM, (int*)gui_reader_codepage_enum },
|
|---|
| 293 | {0x5c,LANG_MENU_READ_WORD_WRAP, MENUITEM_BOOL, &conf.reader_wrap_by_words },
|
|---|
| 294 | {0x5c,LANG_MENU_READ_AUTOSCROLL, MENUITEM_BOOL, &conf.reader_autoscroll },
|
|---|
| 295 | {0x5f,LANG_MENU_READ_AUTOSCROLL_DELAY, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.reader_autoscroll_delay, MENU_MINMAX(0, 60) },
|
|---|
| 296 | {0x51,LANG_MENU_BACK, MENUITEM_UP },
|
|---|
| 297 | {0}
|
|---|
| 298 | };
|
|---|
| 299 | static CMenu reader_submenu = {0x37,LANG_MENU_READ_TITLE, NULL, reader_submenu_items };
|
|---|
| 300 |
|
|---|
| 301 |
|
|---|
| 302 | static CMenuItem misc_submenu_items[] = {
|
|---|
| 303 | {0x35,LANG_MENU_MISC_FILE_BROWSER, MENUITEM_PROC, (int*)gui_draw_fselect },
|
|---|
| 304 | {0x36,LANG_MENU_MISC_CALENDAR, MENUITEM_PROC, (int*)gui_draw_calendar },
|
|---|
| 305 | {0x37,LANG_MENU_MISC_TEXT_READER, MENUITEM_SUBMENU, (int*)&reader_submenu },
|
|---|
| 306 | {0x38,LANG_MENU_MISC_GAMES, MENUITEM_SUBMENU, (int*)&games_submenu },
|
|---|
| 307 | #if CAM_SWIVEL_SCREEN
|
|---|
| 308 | {0x28,LANG_MENU_MISC_FLASHLIGHT, MENUITEM_BOOL, &conf.flashlight },
|
|---|
| 309 | #endif
|
|---|
| 310 | {0x5c,LANG_MENU_MISC_SHOW_SPLASH, MENUITEM_BOOL, &conf.splash_show },
|
|---|
| 311 | {0x5c,LANG_MENU_MISC_START_SOUND, MENUITEM_BOOL, &conf.start_sound },
|
|---|
| 312 | #if CAM_USE_ZOOM_FOR_MF
|
|---|
| 313 | {0x59,LANG_MENU_MISC_ZOOM_FOR_MF, MENUITEM_BOOL, &conf.use_zoom_mf },
|
|---|
| 314 | #endif
|
|---|
| 315 | #if CAM_ADJUSTABLE_ALT_BUTTON
|
|---|
| 316 | {0x22,LANG_MENU_MISC_ALT_BUTTON, MENUITEM_ENUM, (int*)gui_alt_mode_button_enum },
|
|---|
| 317 | #endif
|
|---|
| 318 | {0x5d,LANG_MENU_MISC_DISABLE_LCD_OFF, MENUITEM_ENUM, (int*)gui_alt_power_enum },
|
|---|
| 319 | {0x65,LANG_MENU_MISC_PALETTE, MENUITEM_PROC, (int*)gui_draw_palette },
|
|---|
| 320 | {0x80,LANG_MENU_MISC_BUILD_INFO, MENUITEM_PROC, (int*)gui_show_build_info },
|
|---|
| 321 | {0x80,LANG_MENU_MISC_MEMORY_INFO, MENUITEM_PROC, (int*)gui_show_memory_info },
|
|---|
| 322 | {0x51,LANG_MENU_BACK, MENUITEM_UP },
|
|---|
| 323 | {0},
|
|---|
| 324 | };
|
|---|
| 325 | static CMenu misc_submenu = {0x29,LANG_MENU_MISC_TITLE, NULL, misc_submenu_items };
|
|---|
| 326 |
|
|---|
| 327 |
|
|---|
| 328 | static CMenuItem debug_submenu_items[] = {
|
|---|
| 329 | {0x5c,LANG_MENU_DEBUG_DISPLAY, MENUITEM_ENUM, (int*)gui_debug_display_enum },
|
|---|
| 330 | {0x2a,LANG_MENU_DEBUG_PROPCASE_PAGE, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &debug_propcase_page, MENU_MINMAX(0, 128) },
|
|---|
| 331 | {0x2a,LANG_MENU_DEBUG_TASKLIST_START, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &debug_tasklist_start, MENU_MINMAX(0, 63) },
|
|---|
| 332 | {0x5c,LANG_MENU_DEBUG_SHOW_MISC_VALS, MENUITEM_BOOL, &debug_vals_show },
|
|---|
| 333 | {0x2a,LANG_MENU_DEBUG_MEMORY_BROWSER, MENUITEM_PROC, (int*)gui_draw_debug },
|
|---|
| 334 | {0x2a,LANG_MENU_DEBUG_BENCHMARK, MENUITEM_PROC, (int*)gui_draw_bench },
|
|---|
| 335 | {0x5c,LANG_MENU_DEBUG_SHORTCUT_ACTION, MENUITEM_ENUM, (int*)gui_debug_shortcut_enum },
|
|---|
| 336 | {0x33,LANG_MENU_DEBUG_MAKE_BOOTABLE, MENUITEM_PROC, (int*)gui_menuproc_mkbootdisk },
|
|---|
| 337 | #if CAM_MULTIPART
|
|---|
| 338 | {0x33,LANG_MENU_DEBUG_CREATE_MULTIPART , MENUITEM_PROC, (int*)gui_menuproc_break_card },
|
|---|
| 339 | {0x33,LANG_MENU_DEBUG_SWAP_PART, MENUITEM_PROC, (int*)gui_menuproc_swap_patitons },
|
|---|
| 340 | #endif
|
|---|
| 341 | {0x51,LANG_MENU_BACK, MENUITEM_UP },
|
|---|
| 342 | {0}
|
|---|
| 343 | };
|
|---|
| 344 | static CMenu debug_submenu = {0x2a,LANG_MENU_DEBUG_TITLE, NULL, debug_submenu_items };
|
|---|
| 345 |
|
|---|
| 346 |
|
|---|
| 347 | static int voltage_step;
|
|---|
| 348 | static CMenuItem battery_submenu_items[] = {
|
|---|
| 349 | {0x66,LANG_MENU_BATT_VOLT_MAX, MENUITEM_INT|MENUITEM_ARG_ADDR_INC, &conf.batt_volts_max, (int)&voltage_step },
|
|---|
| 350 | {0x67,LANG_MENU_BATT_VOLT_MIN, MENUITEM_INT|MENUITEM_ARG_ADDR_INC, &conf.batt_volts_min, (int)&voltage_step },
|
|---|
| 351 | {0x68,LANG_MENU_BATT_STEP_25, MENUITEM_BOOL|MENUITEM_ARG_CALLBACK, &conf.batt_step_25, (int)cb_step_25 },
|
|---|
| 352 | {0x0,(int)"", MENUITEM_SEPARATOR },
|
|---|
| 353 | {0x73,LANG_MENU_BATT_SHOW_PERCENT, MENUITEM_BOOL|MENUITEM_ARG_CALLBACK, &conf.batt_perc_show, (int)cb_perc },
|
|---|
| 354 | {0x73,LANG_MENU_BATT_SHOW_VOLTS, MENUITEM_BOOL|MENUITEM_ARG_CALLBACK, &conf.batt_volts_show, (int)cb_volts },
|
|---|
| 355 | {0x32,LANG_MENU_BATT_SHOW_ICON, MENUITEM_BOOL, &conf.batt_icon_show },
|
|---|
| 356 | {0x51,LANG_MENU_BACK, MENUITEM_UP },
|
|---|
| 357 | {0}
|
|---|
| 358 | };
|
|---|
| 359 | static CMenu battery_submenu = {0x32,LANG_MENU_BATT_TITLE, cb_battery_menu_change, battery_submenu_items };
|
|---|
| 360 |
|
|---|
| 361 | static CMenuItem space_submenu_items[] = {
|
|---|
| 362 | {0x5c,LANG_MENU_SPACE_SHOW_ICON, MENUITEM_BOOL, &conf.space_icon_show },
|
|---|
| 363 | {0x69,LANG_MENU_SPACE_SHOW_BAR, MENUITEM_ENUM, (int*)gui_space_bar_enum },
|
|---|
| 364 | {0x6a,LANG_MENU_SPACE_BAR_SIZE, MENUITEM_ENUM, (int*)gui_space_bar_size_enum },
|
|---|
| 365 | {0x6b,LANG_MENU_SPACE_BAR_WIDTH, MENUITEM_ENUM, (int*)gui_space_bar_width_enum },
|
|---|
| 366 | {0x5c,LANG_MENU_SPACE_SHOW_PERCENT, MENUITEM_BOOL|MENUITEM_ARG_CALLBACK, &conf.space_perc_show, (int)cb_space_perc },
|
|---|
| 367 | {0x5c,LANG_MENU_SPACE_SHOW_MB, MENUITEM_BOOL|MENUITEM_ARG_CALLBACK, &conf.space_mb_show, (int)cb_space_mb },
|
|---|
| 368 | {0x5f,LANG_MENU_SPACE_WARN_TYPE, MENUITEM_ENUM, (int*)gui_space_warn_type_enum },
|
|---|
| 369 | {0x58,LANG_MENU_SPACE_WARN_PERCENT, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.space_perc_warn, MENU_MINMAX(1, 99) },
|
|---|
| 370 | {0x58,LANG_MENU_SPACE_WARN_MB, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.space_mb_warn, MENU_MINMAX(1, 4000) },
|
|---|
| 371 | {0x51,LANG_MENU_BACK, MENUITEM_UP },
|
|---|
| 372 | {0}
|
|---|
| 373 | };
|
|---|
| 374 | static CMenu space_submenu = {0x33,LANG_MENU_OSD_SPACE_PARAMS_TITLE, NULL, space_submenu_items};
|
|---|
| 375 |
|
|---|
| 376 | static CMenuItem dof_submenu_items[] = {
|
|---|
| 377 | {0x5f,LANG_MENU_OSD_SHOW_DOF_CALC, MENUITEM_ENUM, (int*)gui_dof_show_value_enum },
|
|---|
| 378 | {0x5c,LANG_MENU_DOF_SUBJ_DIST_AS_NEAR_LIMIT, MENUITEM_BOOL, &conf.dof_subj_dist_as_near_limit},
|
|---|
| 379 | {0x5c,LANG_MENU_DOF_USE_EXIF_SUBJ_DIST, MENUITEM_BOOL, &conf.dof_use_exif_subj_dist},
|
|---|
| 380 | {0x5c,LANG_MENU_DOF_SUBJ_DIST_IN_MISC, MENUITEM_BOOL, &conf.dof_subj_dist_in_misc},
|
|---|
| 381 | {0x5c,LANG_MENU_DOF_NEAR_LIMIT_IN_MISC, MENUITEM_BOOL, &conf.dof_near_limit_in_misc},
|
|---|
| 382 | {0x5c,LANG_MENU_DOF_FAR_LIMIT_IN_MISC, MENUITEM_BOOL, &conf.dof_far_limit_in_misc},
|
|---|
| 383 | {0x5c,LANG_MENU_DOF_HYPERFOCAL_IN_MISC, MENUITEM_BOOL, &conf.dof_hyperfocal_in_misc},
|
|---|
| 384 | {0x5c,LANG_MENU_DOF_DEPTH_LIMIT_IN_MISC, MENUITEM_BOOL, &conf.dof_depth_in_misc},
|
|---|
| 385 | #if !CAM_DRYOS
|
|---|
| 386 | {0x5c,LANG_MENU_DOF_DIST_FROM_LENS, MENUITEM_BOOL, &conf.dof_dist_from_lens},
|
|---|
| 387 | #endif
|
|---|
| 388 | {0x51,LANG_MENU_BACK, MENUITEM_UP },
|
|---|
| 389 | {0}
|
|---|
| 390 | };
|
|---|
| 391 | static CMenu dof_submenu = {0x31,LANG_MENU_DOF_TITLE, /*cb_dof_menu_change*/ NULL, dof_submenu_items };
|
|---|
| 392 |
|
|---|
| 393 | static CMenuItem values_submenu_items[] = {
|
|---|
| 394 | {0x5f,LANG_MENU_OSD_SHOW_MISC_VALUES, MENUITEM_ENUM, (int*)gui_show_values_enum },
|
|---|
| 395 | // {0x43,LANG_MENU_VALUES_SHOW_IN_REVIEW, MENUITEM_BOOL, &conf.values_show_in_review},
|
|---|
| 396 | {0x5c,LANG_MENU_SHOW_VALUES_IN_VIDEO, MENUITEM_BOOL, &conf.show_values_in_video},
|
|---|
| 397 | {0x5c,LANG_MENU_VALUES_SHOW_ZOOM, MENUITEM_BOOL, &conf.values_show_zoom},
|
|---|
| 398 | {0x5f,LANG_MENU_OSD_ZOOM_VALUE, MENUITEM_ENUM, (int*)gui_zoom_value_enum },
|
|---|
| 399 | {0x60,LANG_MENU_OSD_ZOOM_SCALE, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.zoom_scale, MENU_MINMAX(0, 1000)},
|
|---|
| 400 | {0x62,LANG_MENU_VALUES_SHOW_REAL_APERTURE, MENUITEM_BOOL, &conf.values_show_real_aperture},
|
|---|
| 401 | {0x74,LANG_MENU_VALUES_SHOW_REAL_ISO, MENUITEM_BOOL, &conf.values_show_real_iso},
|
|---|
| 402 | {0x74,LANG_MENU_VALUES_SHOW_MARKET_ISO, MENUITEM_BOOL, &conf.values_show_market_iso},
|
|---|
| 403 | {0x2d,LANG_MENU_SHOW_ISO_ONLY_IN_AUTOISO_MODE, MENUITEM_BOOL, &conf.values_show_iso_only_in_autoiso_mode},
|
|---|
| 404 | {0x5c,LANG_MENU_VALUES_SHOW_EV_SETED, MENUITEM_BOOL, &conf.values_show_ev_seted},
|
|---|
| 405 | {0x5c,LANG_MENU_VALUES_SHOW_EV_MEASURED, MENUITEM_BOOL, &conf.values_show_ev_measured},
|
|---|
| 406 | {0x5c,LANG_MENU_VALUES_SHOW_BV_SETED, MENUITEM_BOOL, &conf.values_show_bv_seted},
|
|---|
| 407 | {0x5c,LANG_MENU_VALUES_SHOW_BV_MEASURED, MENUITEM_BOOL, &conf.values_show_bv_measured},
|
|---|
| 408 | {0x5c,LANG_MENU_VALUES_SHOW_OVEREXPOSURE, MENUITEM_BOOL, &conf.values_show_overexposure},
|
|---|
| 409 | {0x5c,LANG_MENU_SHOW_CANON_OVEREXPOSURE, MENUITEM_BOOL, &conf.values_show_canon_overexposure},
|
|---|
| 410 | {0x5c,LANG_MENU_VALUES_SHOW_LUMINANCE, MENUITEM_BOOL, &conf.values_show_luminance},
|
|---|
| 411 | {0x51,LANG_MENU_BACK, MENUITEM_UP },
|
|---|
| 412 | {0}
|
|---|
| 413 | };
|
|---|
| 414 | static CMenu values_submenu = {0x28,LANG_MENU_OSD_VALUES_TITLE, /*cb_values_menu_change*/ NULL, values_submenu_items };
|
|---|
| 415 |
|
|---|
| 416 | static CMenuItem clock_submenu_items[] = {
|
|---|
| 417 | {0x5f,LANG_MENU_OSD_SHOW_CLOCK, MENUITEM_ENUM, (int*)gui_show_clock_enum },
|
|---|
| 418 | {0x6d,LANG_MENU_OSD_CLOCK_FORMAT, MENUITEM_ENUM, (int*)gui_clock_format_enum },
|
|---|
| 419 | {0x6c,LANG_MENU_OSD_CLOCK_INDICATOR, MENUITEM_ENUM, (int*)gui_clock_indicator_enum },
|
|---|
| 420 | {0x6e,LANG_MENU_OSD_CLOCK_HALFPRESS, MENUITEM_ENUM, (int*)gui_clock_halfpress_enum },
|
|---|
| 421 | {0x51,LANG_MENU_BACK, MENUITEM_UP },
|
|---|
| 422 | {0}
|
|---|
| 423 | };
|
|---|
| 424 | static CMenu clock_submenu = {0x34,LANG_MENU_OSD_CLOCK_PARAMS_TITLE, NULL, clock_submenu_items };
|
|---|
| 425 |
|
|---|
| 426 |
|
|---|
| 427 | static CMenuItem video_submenu_items[] = {
|
|---|
| 428 | {0x23,LANG_MENU_VIDEO_MODE, MENUITEM_ENUM, (int*)gui_video_mode_enum},
|
|---|
| 429 | {0x5e,LANG_MENU_VIDEO_BITRATE, MENUITEM_ENUM, (int*)gui_video_bitrate_enum},
|
|---|
| 430 | {0x60,LANG_MENU_VIDEO_QUALITY, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.video_quality, MENU_MINMAX(1, 99)},
|
|---|
| 431 | {0x5c,LANG_MENU_CLEAR_VIDEO_VALUES, MENUITEM_BOOL, (int*)&conf.clear_video},
|
|---|
| 432 | {0x5c,LANG_MENU_FAST_SWITCH_VIDEO, MENUITEM_BOOL, &conf.fast_movie_control},
|
|---|
| 433 | {0x5c,LANG_MENU_FAST_SWITCH_QUALITY_VIDEO, MENUITEM_BOOL, &conf.fast_movie_quality_control},
|
|---|
| 434 | #if CAM_CAN_UNLOCK_OPTICAL_ZOOM_IN_VIDEO
|
|---|
| 435 | {0x5c,LANG_MENU_OPTICAL_ZOOM_IN_VIDEO, MENUITEM_BOOL, &conf.unlock_optical_zoom_for_video},
|
|---|
| 436 | #endif
|
|---|
| 437 | #if CAM_CAN_MUTE_MICROPHONE
|
|---|
| 438 | {0x83,LANG_MENU_MUTE_ON_ZOOM, MENUITEM_BOOL, &conf.mute_on_zoom},
|
|---|
| 439 | #endif
|
|---|
| 440 | #if CAM_AF_SCAN_DURING_VIDEO_RECORD
|
|---|
| 441 | {0x82,LANG_MENU_VIDEO_AF_KEY, MENUITEM_ENUM, (int*)gui_video_af_key_enum},
|
|---|
| 442 | #endif
|
|---|
| 443 | {0x5c,LANG_MENU_OSD_SHOW_VIDEO_TIME, MENUITEM_ENUM, (int*)gui_show_movie_time },
|
|---|
| 444 | {0x60,LANG_MENU_OSD_SHOW_VIDEO_REFRESH, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.show_movie_refresh, MENU_MINMAX(1, 20)},
|
|---|
| 445 | {0x51,LANG_MENU_BACK, MENUITEM_UP },
|
|---|
| 446 | {0}
|
|---|
| 447 | };
|
|---|
| 448 | static CMenu video_submenu = {0x23,LANG_MENU_VIDEO_PARAM_TITLE, NULL, video_submenu_items };
|
|---|
| 449 |
|
|---|
| 450 | static CMenuItem bracketing_in_continuous_submenu_items[] = {
|
|---|
| 451 | {0x63,LANG_MENU_TV_BRACKET_VALUE, MENUITEM_ENUM, (int*)gui_tv_bracket_values_enum },
|
|---|
| 452 | #if CAM_HAS_IRIS_DIAPHRAGM
|
|---|
| 453 | {0x62,LANG_MENU_AV_BRACKET_VALUE, MENUITEM_ENUM, (int*)gui_av_bracket_values_enum },
|
|---|
| 454 | #endif
|
|---|
| 455 | #if CAM_CAN_SD_OVERRIDE
|
|---|
| 456 | {0x5e,LANG_MENU_SUBJ_DIST_BRACKET_VALUE, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.subj_dist_bracket_value, MENU_MINMAX(0, 100)},
|
|---|
| 457 | {0x5f,LANG_MENU_SUBJ_DIST_BRACKET_KOEF, MENUITEM_ENUM, (int*)gui_subj_dist_bracket_koef_enum},
|
|---|
| 458 | #endif
|
|---|
| 459 | {0x74,LANG_MENU_ISO_BRACKET_VALUE, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.iso_bracket_value, MENU_MINMAX(0, 100)},
|
|---|
| 460 | {0x5f,LANG_MENU_ISO_BRACKET_KOEF, MENUITEM_ENUM, (int*)gui_iso_bracket_koef_enum},
|
|---|
| 461 | {0x60,LANG_MENU_BRACKET_TYPE, MENUITEM_ENUM, (int*)gui_bracket_type_enum },
|
|---|
| 462 | {0x5b,LANG_MENU_CLEAR_BRACKET_VALUES, MENUITEM_BOOL, (int*)&conf.clear_bracket},
|
|---|
| 463 | {0x51,LANG_MENU_BACK, MENUITEM_UP },
|
|---|
| 464 | {0}
|
|---|
| 465 | };
|
|---|
| 466 | static CMenu bracketing_in_continuous_submenu = {0x2c,LANG_MENU_BRACKET_IN_CONTINUOUS_TITLE, NULL, bracketing_in_continuous_submenu_items };
|
|---|
| 467 |
|
|---|
| 468 |
|
|---|
| 469 | static CMenuItem exposure_submenu_items[] = {
|
|---|
| 470 | {0x59,LANG_MENU_RECALC_EXPOSURE, MENUITEM_BOOL, &conf.recalc_exposure},
|
|---|
| 471 | {0x63,LANG_MENU_TV_EXPOSURE_ORDER, MENUITEM_ENUM, (int*)gui_tv_exposure_order_enum},
|
|---|
| 472 | {0x62,LANG_MENU_AV_EXPOSURE_ORDER, MENUITEM_ENUM, (int*)gui_av_exposure_order_enum},
|
|---|
| 473 | {0x74,LANG_MENU_ISO_EXPOSURE_ORDER, MENUITEM_ENUM, (int*)gui_iso_exposure_order_enum},
|
|---|
| 474 | {0x51,LANG_MENU_BACK, MENUITEM_UP },
|
|---|
| 475 | {0}
|
|---|
| 476 | };
|
|---|
| 477 | static CMenu exposure_submenu = {0x2a,LANG_MENU_EXPOSURE_TITLE, NULL, exposure_submenu_items };
|
|---|
| 478 |
|
|---|
| 479 | static CMenuItem operation_submenu_items[] = {
|
|---|
| 480 | {0x5c,LANG_MENU_OVERRIDE_DISABLE, MENUITEM_ENUM, (int*)gui_override_disable_enum},//&conf.override_disable },
|
|---|
| 481 | {0x5c,LANG_MENU_OVERRIDE_DISABLE_ALL, MENUITEM_BOOL, &conf.override_disable_all },
|
|---|
| 482 | {0x61,LANG_MENU_OVERRIDE_TV_VALUE, MENUITEM_ENUM, (int*)gui_tv_override_value_enum},
|
|---|
| 483 | {0x5f,LANG_MENU_OVERRIDE_TV_KOEF, MENUITEM_ENUM, (int*)gui_tv_override_koef_enum},
|
|---|
| 484 | {0x59,LANG_MENU_TV_ENUM_TYPE, MENUITEM_ENUM, (int*)gui_tv_enum_type_enum},
|
|---|
| 485 | #if CAM_HAS_IRIS_DIAPHRAGM
|
|---|
| 486 | {0x62,LANG_MENU_OVERRIDE_AV_VALUE, MENUITEM_ENUM, (int*)gui_av_override_enum },
|
|---|
| 487 | #endif
|
|---|
| 488 | #if CAM_HAS_ND_FILTER
|
|---|
| 489 | {0x62,LANG_MENU_OVERRIDE_ND_FILTER, MENUITEM_ENUM, (int*)gui_nd_filter_state_enum },
|
|---|
| 490 | #endif
|
|---|
| 491 | #if CAM_CAN_SD_OVERRIDE
|
|---|
| 492 | {0x5e,LANG_MENU_OVERRIDE_SUBJ_DIST_VALUE, MENUITEM_ENUM, (int*)gui_subj_dist_override_value_enum},
|
|---|
| 493 | {0x5f,LANG_MENU_OVERRIDE_SUBJ_DIST_KOEF, MENUITEM_ENUM, (int*)gui_subj_dist_override_koef_enum},
|
|---|
| 494 | #endif
|
|---|
| 495 | {0x74,LANG_MENU_OVERRIDE_ISO_VALUE, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.iso_override_value, MENU_MINMAX(0, 800)},
|
|---|
| 496 | {0x5f,LANG_MENU_OVERRIDE_ISO_KOEF, MENUITEM_ENUM, (int*)gui_iso_override_koef_enum},
|
|---|
| 497 | {0x2c,LANG_MENU_BRACKET_IN_CONTINUOUS, MENUITEM_SUBMENU, (int*)&bracketing_in_continuous_submenu },
|
|---|
| 498 | {0x2d,LANG_MENU_AUTOISO, MENUITEM_SUBMENU, (int*)&autoiso_submenu },
|
|---|
| 499 | //{LANG_MENU_EXPOSURE, MENUITEM_SUBMENU, (int*)&exposure_submenu },
|
|---|
| 500 | {0x5b,LANG_MENU_CLEAR_OVERRIDE_VALUES, MENUITEM_BOOL, (int*)&conf.clear_override},
|
|---|
| 501 | {0x5c,LANG_MENU_MISC_FAST_EV, MENUITEM_BOOL, &conf.fast_ev },
|
|---|
| 502 | {0x5f,LANG_MENU_MISC_FAST_EV_STEP, MENUITEM_ENUM, (int*)gui_fast_ev_step },
|
|---|
| 503 | {0x51,LANG_MENU_BACK, MENUITEM_UP },
|
|---|
| 504 | {0}
|
|---|
| 505 | };
|
|---|
| 506 | static CMenu operation_submenu = {0x21,LANG_MENU_OPERATION_PARAM_TITLE, NULL, operation_submenu_items };
|
|---|
| 507 |
|
|---|
| 508 | static CMenuItem edge_overlay_submenu_items[] = {
|
|---|
| 509 | {0x7f,LANG_MENU_EDGE_OVERLAY_ENABLE, MENUITEM_BOOL, &conf.edge_overlay_enable },
|
|---|
| 510 | {0x7f,LANG_MENU_EDGE_OVERLAY_TRESH, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.edge_overlay_thresh, MENU_MINMAX(0, 255)},
|
|---|
| 511 | {0x65,LANG_MENU_EDGE_OVERLAY_COLOR, MENUITEM_COLOR_FG, (int*)&conf.edge_overlay_color },
|
|---|
| 512 |
|
|---|
| 513 | {0x51,LANG_MENU_BACK, MENUITEM_UP },
|
|---|
| 514 | {0}
|
|---|
| 515 | };
|
|---|
| 516 | static CMenu edge_overlay_submenu = {0x7f,LANG_MENU_EDGE_OVERLAY_TITLE, NULL, edge_overlay_submenu_items };
|
|---|
| 517 |
|
|---|
| 518 | static CMenuItem grid_submenu_items[] = {
|
|---|
| 519 | {0x2f,LANG_MENU_SHOW_GRID, MENUITEM_BOOL, &conf.show_grid_lines },
|
|---|
| 520 | {0x35,LANG_MENU_GRID_LOAD, MENUITEM_PROC, (int*)gui_grid_lines_load },
|
|---|
| 521 | {0x0,LANG_MENU_GRID_CURRENT, MENUITEM_SEPARATOR },
|
|---|
| 522 | {0x0,(int)grid_title, MENUITEM_TEXT },
|
|---|
| 523 | {0x0,(int)"", MENUITEM_SEPARATOR },
|
|---|
| 524 | {0x5c,LANG_MENU_GRID_FORCE_COLOR, MENUITEM_BOOL, &conf.grid_force_color },
|
|---|
| 525 | {0x65,LANG_MENU_GRID_COLOR_LINE, MENUITEM_COLOR_FG, (int*)&conf.grid_color },
|
|---|
| 526 | {0x65,LANG_MENU_GRID_COLOR_FILL, MENUITEM_COLOR_BG, (int*)&conf.grid_color },
|
|---|
| 527 | {0x51,LANG_MENU_BACK, MENUITEM_UP },
|
|---|
| 528 | {0}
|
|---|
| 529 | };
|
|---|
| 530 | static CMenu grid_submenu = {0x2f,LANG_MENU_GRID_TITLE, NULL, grid_submenu_items };
|
|---|
| 531 |
|
|---|
| 532 | static CMenuItem visual_submenu_items[] = {
|
|---|
| 533 | {0x35,LANG_MENU_VIS_LANG, MENUITEM_PROC, (int*)gui_draw_load_lang },
|
|---|
| 534 | {0x5f,LANG_MENU_VIS_OSD_FONT, MENUITEM_ENUM, (int*)gui_font_enum },
|
|---|
| 535 | {0x35,LANG_MENU_VIS_MENU_FONT, MENUITEM_PROC, (int*)gui_draw_load_menu_rbf },
|
|---|
| 536 | {0x35,LANG_MENU_VIS_MENU_SYMBOL_FONT, MENUITEM_PROC, (int*)gui_draw_load_symbol_rbf }, //AKA
|
|---|
| 537 | {0x0,LANG_MENU_VIS_COLORS, MENUITEM_SEPARATOR },
|
|---|
| 538 | {0x65,LANG_MENU_VIS_OSD_TEXT, MENUITEM_COLOR_FG, (int*)&conf.osd_color },
|
|---|
| 539 | {0x65,LANG_MENU_VIS_OSD_BKG, MENUITEM_COLOR_BG, (int*)&conf.osd_color },
|
|---|
| 540 | {0x65,LANG_MENU_VIS_OSD_WARNING, MENUITEM_COLOR_FG, (int*)&conf.osd_color_warn },
|
|---|
| 541 | {0x65,LANG_MENU_VIS_OSD_WARNING_BKG, MENUITEM_COLOR_BG, (int*)&conf.osd_color_warn },
|
|---|
| 542 | {0x65,LANG_MENU_VIS_HISTO, MENUITEM_COLOR_FG, (int*)&conf.histo_color },
|
|---|
| 543 | {0x65,LANG_MENU_VIS_HISTO_BKG, MENUITEM_COLOR_BG, (int*)&conf.histo_color },
|
|---|
| 544 | {0x65,LANG_MENU_VIS_HISTO_BORDER, MENUITEM_COLOR_FG, (int*)&conf.histo_color2 },
|
|---|
| 545 | {0x65,LANG_MENU_VIS_HISTO_MARKERS, MENUITEM_COLOR_BG, (int*)&conf.histo_color2 },
|
|---|
| 546 | {0x65,LANG_MENU_VIS_ZEBRA_UNDER, MENUITEM_COLOR_BG, (int*)&conf.zebra_color },
|
|---|
| 547 | {0x65,LANG_MENU_VIS_ZEBRA_OVER, MENUITEM_COLOR_FG, (int*)&conf.zebra_color },
|
|---|
| 548 | {0x65,LANG_MENU_VIS_BATT_ICON, MENUITEM_COLOR_FG, (int*)&conf.batt_icon_color },
|
|---|
| 549 | {0x65,LANG_MENU_VIS_SPACE_ICON, MENUITEM_COLOR_FG, (int*)&conf.space_color },
|
|---|
| 550 | {0x65,LANG_MENU_VIS_SPACE_ICON_BKG, MENUITEM_COLOR_BG, (int*)&conf.space_color },
|
|---|
| 551 | {0x65,LANG_MENU_VIS_MENU_TEXT, MENUITEM_COLOR_FG, (int*)&conf.menu_color },
|
|---|
| 552 | {0x65,LANG_MENU_VIS_MENU_BKG, MENUITEM_COLOR_BG, (int*)&conf.menu_color },
|
|---|
| 553 | {0x65,LANG_MENU_VIS_MENU_TITLE_TEXT, MENUITEM_COLOR_FG, (int*)&conf.menu_title_color },
|
|---|
| 554 | {0x65,LANG_MENU_VIS_MENU_TITLE_BKG, MENUITEM_COLOR_BG, (int*)&conf.menu_title_color },
|
|---|
| 555 | {0x65,LANG_MENU_VIS_MENU_CURSOR_TEXT, MENUITEM_COLOR_FG, (int*)&conf.menu_cursor_color },
|
|---|
| 556 | {0x65,LANG_MENU_VIS_MENU_CURSOR_BKG, MENUITEM_COLOR_BG, (int*)&conf.menu_cursor_color },
|
|---|
| 557 | {0x65,LANG_MENU_VIS_MENU_SYMBOL_TEXT, MENUITEM_COLOR_FG, (int*)&conf.menu_symbol_color },
|
|---|
| 558 | {0x65,LANG_MENU_VIS_MENU_SYMBOL_BKG, MENUITEM_COLOR_BG, (int*)&conf.menu_symbol_color },
|
|---|
| 559 | {0x65,LANG_MENU_VIS_READER_TEXT, MENUITEM_COLOR_FG, (int*)&conf.reader_color },
|
|---|
| 560 | {0x65,LANG_MENU_VIS_READER_BKG, MENUITEM_COLOR_BG, (int*)&conf.reader_color },
|
|---|
| 561 | {0x65,LANG_MENU_VIS_OSD_OVERRIDE, MENUITEM_COLOR_FG, (int*)&conf.osd_color_override },
|
|---|
| 562 | {0x65,LANG_MENU_VIS_OSD_OVERRIDE_BKG, MENUITEM_COLOR_BG, (int*)&conf.osd_color_override },
|
|---|
| 563 | {0x51,LANG_MENU_BACK, MENUITEM_UP },
|
|---|
| 564 | {0}
|
|---|
| 565 | };
|
|---|
| 566 | static CMenu visual_submenu = {0x28,LANG_MENU_VIS_TITLE, NULL, visual_submenu_items };
|
|---|
| 567 |
|
|---|
| 568 | void blank_menu()
|
|---|
| 569 | {};
|
|---|
| 570 |
|
|---|
| 571 | static CMenuItem user_submenu_items[] = {
|
|---|
| 572 | {0x0,LANG_MENU_ITEM_BLANK, MENUITEM_PROC, (int*)blank_menu,0},
|
|---|
| 573 | {0x0,LANG_MENU_ITEM_BLANK, MENUITEM_PROC, (int*)blank_menu,0},
|
|---|
| 574 | {0x0,LANG_MENU_ITEM_BLANK, MENUITEM_PROC, (int*)blank_menu,0},
|
|---|
| 575 | {0x0,LANG_MENU_ITEM_BLANK, MENUITEM_PROC, (int*)blank_menu,0},
|
|---|
| 576 | {0x0,LANG_MENU_ITEM_BLANK, MENUITEM_PROC, (int*)blank_menu,0},
|
|---|
| 577 | {0x0,LANG_MENU_ITEM_BLANK, MENUITEM_PROC, (int*)blank_menu,0},
|
|---|
| 578 | {0x0,LANG_MENU_ITEM_BLANK, MENUITEM_PROC, (int*)blank_menu,0},
|
|---|
| 579 | {0x0,LANG_MENU_ITEM_BLANK, MENUITEM_PROC, (int*)blank_menu,0},
|
|---|
| 580 | {0x0,LANG_MENU_ITEM_BLANK, MENUITEM_PROC, (int*)blank_menu,0},
|
|---|
| 581 | {0x0,LANG_MENU_ITEM_BLANK, MENUITEM_PROC, (int*)blank_menu,0},
|
|---|
| 582 | {0x0,LANG_MENU_ITEM_BLANK, MENUITEM_PROC, (int*)blank_menu,0},
|
|---|
| 583 | {0x0,LANG_MENU_ITEM_BLANK, MENUITEM_PROC, (int*)blank_menu,0},
|
|---|
| 584 | {0x0,LANG_MENU_ITEM_BLANK, MENUITEM_PROC, (int*)blank_menu,0},
|
|---|
| 585 | {0x0,LANG_MENU_ITEM_BLANK, MENUITEM_PROC, (int*)blank_menu,0},
|
|---|
| 586 | {0x20,LANG_MENU_MAIN_TITLE, MENUITEM_PROC, (int*)rinit},
|
|---|
| 587 | {0}
|
|---|
| 588 | };
|
|---|
| 589 | static CMenu user_submenu = {0x2e,LANG_MENU_USER_MENU, NULL, user_submenu_items };
|
|---|
| 590 |
|
|---|
| 591 | static CMenuItem raw_state_submenu_items[] = {
|
|---|
| 592 | {0x5c,LANG_MENU_OSD_SHOW_RAW_STATE, MENUITEM_BOOL, &conf.show_raw_state },
|
|---|
| 593 | {0x5c,LANG_MENU_OSD_SHOW_REMAINING_RAW, MENUITEM_BOOL, &conf.show_remaining_raw },
|
|---|
| 594 | {0x60,LANG_MENU_OSD_RAW_TRESHOLD, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.remaining_raw_treshold, MENU_MINMAX(0, 200)},
|
|---|
| 595 | {0x51,LANG_MENU_BACK, MENUITEM_UP },
|
|---|
| 596 | {0}
|
|---|
| 597 | };
|
|---|
| 598 |
|
|---|
| 599 | static CMenu raw_state_submenu = {0x24,LANG_MENU_OSD_RAW_STATE_PARAMS_TITLE, NULL, raw_state_submenu_items };
|
|---|
| 600 |
|
|---|
| 601 |
|
|---|
| 602 | static CMenuItem osd_submenu_items[] = {
|
|---|
| 603 | {0x5c,LANG_MENU_OSD_SHOW, MENUITEM_BOOL, &conf.show_osd },
|
|---|
| 604 | {0x5c,LANG_MENU_OSD_HIDE_PLAYBACK, MENUITEM_ENUM, (int*)gui_hide_osd_enum },
|
|---|
| 605 | {0x81,LANG_MENU_VIS_MENU_CENTER, MENUITEM_BOOL, &conf.menu_center },
|
|---|
| 606 | {0x81,LANG_MENU_SELECT_FIRST_ENTRY, MENUITEM_BOOL, &conf.menu_select_first_entry },
|
|---|
| 607 | {0x64,LANG_MENU_VIS_SYMBOL, MENUITEM_BOOL, &conf.menu_symbol_enable },
|
|---|
| 608 | {0x2e,LANG_MENU_USER_MENU, MENUITEM_SUBMENU, (int*)&user_submenu},
|
|---|
| 609 | {0x5f,LANG_MENU_USER_MENU_ENABLE, MENUITEM_ENUM, (int*)gui_user_menu_show_enum },
|
|---|
| 610 | {0x5c,LANG_MENU_USER_MENU_AS_ROOT, MENUITEM_BOOL, &conf.user_menu_as_root },
|
|---|
| 611 | {0x5f,LANG_MENU_OSD_SHOW_STATES, MENUITEM_BOOL, &conf.show_state },
|
|---|
| 612 | {0x5f,LANG_MENU_OSD_SHOW_TEMP, MENUITEM_ENUM, (int*)gui_temp_mode_enum },
|
|---|
| 613 | {0x72,LANG_MENU_OSD_LAYOUT_EDITOR, MENUITEM_PROC, (int*)gui_draw_osd_le },
|
|---|
| 614 | {0x7f,LANG_MENU_EDGE_OVERLAY, MENUITEM_SUBMENU, (int*)&edge_overlay_submenu },
|
|---|
| 615 | {0x2f,LANG_MENU_OSD_GRID_PARAMS, MENUITEM_SUBMENU, (int*)&grid_submenu },
|
|---|
| 616 | {0x22,LANG_MENU_OSD_VALUES, MENUITEM_SUBMENU, (int*)&values_submenu },
|
|---|
| 617 | {0x31,LANG_MENU_OSD_DOF_CALC, MENUITEM_SUBMENU, (int*)&dof_submenu },
|
|---|
| 618 | {0x24,LANG_MENU_OSD_RAW_STATE_PARAMS, MENUITEM_SUBMENU, (int*)&raw_state_submenu },
|
|---|
| 619 | {0x32,LANG_MENU_OSD_BATT_PARAMS, MENUITEM_SUBMENU, (int*)&battery_submenu },
|
|---|
| 620 | {0x33,LANG_MENU_OSD_SPACE_PARAMS, MENUITEM_SUBMENU, (int*)&space_submenu },
|
|---|
| 621 | {0x34,LANG_MENU_OSD_CLOCK_PARAMS, MENUITEM_SUBMENU, (int*)&clock_submenu },
|
|---|
| 622 | {0x59,LANG_MENU_OSD_SHOW_IN_REVIEW, MENUITEM_BOOL, &conf.show_osd_in_review},
|
|---|
| 623 | #ifndef OPTIONS_AUTOSAVE
|
|---|
| 624 | {0x5c,LANG_MENU_MAIN_SAVE_OPTIONS, MENUITEM_PROC, (int*)gui_menuproc_save },
|
|---|
| 625 | #endif
|
|---|
| 626 | {0x51,LANG_MENU_BACK, MENUITEM_UP },
|
|---|
| 627 | {0}
|
|---|
| 628 | };
|
|---|
| 629 |
|
|---|
| 630 | static CMenu osd_submenu = {0x22,LANG_MENU_OSD_TITLE, NULL, osd_submenu_items };
|
|---|
| 631 |
|
|---|
| 632 | static CMenuItem histo_submenu_items[] = {
|
|---|
| 633 | {0x5f,LANG_MENU_HISTO_SHOW, MENUITEM_ENUM, (int*)gui_histo_show_enum },
|
|---|
| 634 | {0x6f,LANG_MENU_HISTO_LAYOUT, MENUITEM_ENUM, (int*)gui_histo_layout_enum },
|
|---|
| 635 | {0x5f,LANG_MENU_HISTO_MODE, MENUITEM_ENUM, (int*)gui_histo_mode_enum },
|
|---|
| 636 | {0x5c,LANG_MENU_HISTO_EXP, MENUITEM_BOOL, &conf.show_overexp },
|
|---|
| 637 | {0x70,LANG_MENU_HISTO_IGNORE_PEAKS, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.histo_ignore_boundary, MENU_MINMAX(0, 32)},
|
|---|
| 638 | {0x5c,LANG_MENU_HISTO_MAGNIFY, MENUITEM_BOOL, &conf.histo_auto_ajust },
|
|---|
| 639 | {0x5c,LANG_MENU_HISTO_SHOW_EV_GRID, MENUITEM_BOOL, &conf.histo_show_ev_grid },
|
|---|
| 640 | {0x51,LANG_MENU_BACK, MENUITEM_UP },
|
|---|
| 641 | {0}
|
|---|
| 642 | };
|
|---|
| 643 | static CMenu histo_submenu = {0x25,LANG_MENU_HISTO_TITLE, NULL, histo_submenu_items };
|
|---|
| 644 |
|
|---|
| 645 | static CMenuItem raw_exceptions_submenu_items[] = {
|
|---|
| 646 | #if defined(CAMERA_s2is) || defined(CAMERA_s3is) || defined(CAMERA_s5is)
|
|---|
| 647 | {0x5c,LANG_MENU_RAW_SAVE_IN_VIDEO, MENUITEM_BOOL, &conf.save_raw_in_video },
|
|---|
| 648 | #endif
|
|---|
| 649 | #if defined(CAMERA_s3is)
|
|---|
| 650 | {0x5c,LANG_MENU_RAW_SAVE_IN_SPORTS, MENUITEM_BOOL, &conf.save_raw_in_sports },
|
|---|
| 651 | #endif
|
|---|
| 652 | {0x5c,LANG_MENU_RAW_SAVE_IN_BURST, MENUITEM_BOOL, &conf.save_raw_in_burst },
|
|---|
| 653 | {0x5c,LANG_MENU_RAW_SAVE_IN_TIMER, MENUITEM_BOOL, &conf.save_raw_in_timer },
|
|---|
| 654 |
|
|---|
| 655 | #if CAM_PROPSET == 1
|
|---|
| 656 | {0x5c,LANG_MENU_RAW_SAVE_IN_EV_BRACKETING, MENUITEM_BOOL, &conf.save_raw_in_ev_bracketing },
|
|---|
| 657 | #endif
|
|---|
| 658 | {0x5c,LANG_MENU_RAW_WARN, MENUITEM_BOOL, &conf.raw_exceptions_warn },
|
|---|
| 659 | {0x51,LANG_MENU_BACK, MENUITEM_UP },
|
|---|
| 660 | {0}
|
|---|
| 661 | };
|
|---|
| 662 | static CMenu raw_exceptions_submenu = {0x59,LANG_MENU_OSD_RAW_EXCEPTIONS_PARAMS_TITLE, NULL, raw_exceptions_submenu_items };
|
|---|
| 663 |
|
|---|
| 664 |
|
|---|
| 665 | static CMenuItem raw_submenu_items[] = {
|
|---|
| 666 | {0x5c,LANG_MENU_RAW_SAVE, MENUITEM_BOOL, &conf.save_raw },
|
|---|
| 667 | {0x59,LANG_MENU_OSD_RAW_EXCEPTIONS_PARAMS, MENUITEM_SUBMENU, (int*)&raw_exceptions_submenu },
|
|---|
| 668 | {0x5f,LANG_MENU_RAW_NOISE_REDUCTION, MENUITEM_ENUM, (int*)gui_raw_nr_enum },
|
|---|
| 669 | {0x5c,LANG_MENU_RAW_FIRST_ONLY, MENUITEM_BOOL, &conf.raw_save_first_only },
|
|---|
| 670 | {0x5c,LANG_MENU_RAW_SAVE_IN_DIR, MENUITEM_BOOL, &conf.raw_in_dir },
|
|---|
| 671 | {0x5f,LANG_MENU_RAW_PREFIX, MENUITEM_ENUM, (int*)gui_raw_prefix_enum },
|
|---|
| 672 | {0x5f,LANG_MENU_RAW_EXTENSION, MENUITEM_ENUM, (int*)gui_raw_ext_enum },
|
|---|
| 673 | {0x5f,LANG_MENU_SUB_PREFIX, MENUITEM_ENUM, (int*)gui_sub_batch_prefix_enum },
|
|---|
| 674 | {0x5f,LANG_MENU_SUB_EXTENSION, MENUITEM_ENUM, (int*)gui_sub_batch_ext_enum },
|
|---|
| 675 | {0x60,LANG_MENU_SUB_IN_DARK_VALUE, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.sub_in_dark_value, MENU_MINMAX(0, 1023)},
|
|---|
| 676 | {0x60,LANG_MENU_SUB_OUT_DARK_VALUE, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.sub_out_dark_value, MENU_MINMAX(0, 1023)},
|
|---|
| 677 | {0x2a,LANG_MENU_RAW_DEVELOP, MENUITEM_PROC, (int*)gui_raw_develop },
|
|---|
| 678 | {0x5c,LANG_MENU_BAD_PIXEL_REMOVAL, MENUITEM_ENUM, (int*)gui_bad_pixel_enum },
|
|---|
| 679 | {0x51,LANG_MENU_BACK, MENUITEM_UP },
|
|---|
| 680 | {0}
|
|---|
| 681 | };
|
|---|
| 682 | static CMenu raw_submenu = {0x24,LANG_MENU_RAW_TITLE, NULL, raw_submenu_items };
|
|---|
| 683 |
|
|---|
| 684 |
|
|---|
| 685 | static CMenuItem zebra_submenu_items[] = {
|
|---|
| 686 | {0x5c,LANG_MENU_ZEBRA_DRAW, MENUITEM_BOOL, &conf.zebra_draw },
|
|---|
| 687 | {0x5f,LANG_MENU_ZEBRA_MODE, MENUITEM_ENUM, (int*)gui_zebra_mode_enum },
|
|---|
| 688 | {0x58,LANG_MENU_ZEBRA_UNDER, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.zebra_under, MENU_MINMAX(0, 32)},
|
|---|
| 689 | {0x57,LANG_MENU_ZEBRA_OVER, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.zebra_over, MENU_MINMAX(0, 32)},
|
|---|
| 690 | {0x28,LANG_MENU_ZEBRA_RESTORE_SCREEN, MENUITEM_BOOL|MENUITEM_ARG_CALLBACK, &conf.zebra_restore_screen, (int)cb_zebra_restore_screen },
|
|---|
| 691 | {0x5c,LANG_MENU_ZEBRA_RESTORE_OSD, MENUITEM_BOOL|MENUITEM_ARG_CALLBACK, &conf.zebra_restore_osd, (int)cb_zebra_restore_osd },
|
|---|
| 692 | {0x5f,LANG_MENU_ZEBRA_DRAW_OVER, MENUITEM_ENUM, (int*)gui_zebra_draw_osd_enum },
|
|---|
| 693 | {0x5c,LANG_MENU_ZEBRA_MULTICHANNEL, MENUITEM_BOOL, &conf.zebra_multichannel},
|
|---|
| 694 | {0x51,LANG_MENU_BACK, MENUITEM_UP },
|
|---|
| 695 | {0}
|
|---|
| 696 | };
|
|---|
| 697 | static CMenu zebra_submenu = {0x26,LANG_MENU_ZEBRA_TITLE, NULL, zebra_submenu_items };
|
|---|
| 698 |
|
|---|
| 699 | static CMenuItem curve_submenu_items[] = {
|
|---|
| 700 | {0x5f,LANG_MENU_CURVE_ENABLE, MENUITEM_ENUM, (int*)gui_conf_curve_enum },
|
|---|
| 701 | {0x35,LANG_MENU_CURVE_LOAD, MENUITEM_PROC, (int*)gui_load_curve },
|
|---|
| 702 | {0x51,LANG_MENU_BACK, MENUITEM_UP },
|
|---|
| 703 | {0}
|
|---|
| 704 | };
|
|---|
| 705 | static CMenu curve_submenu = {0x85,LANG_MENU_CURVE_PARAM_TITLE, NULL, curve_submenu_items };
|
|---|
| 706 |
|
|---|
| 707 | static CMenuItem root_menu_items[] = {
|
|---|
| 708 | {0x21,LANG_MENU_OPERATION_PARAM, MENUITEM_SUBMENU, (int*)&operation_submenu },
|
|---|
| 709 | {0x22,LANG_MENU_MAIN_OSD_PARAM, MENUITEM_SUBMENU, (int*)&osd_submenu },
|
|---|
| 710 | #if CAM_CHDK_HAS_EXT_VIDEO_MENU
|
|---|
| 711 | {0x23,LANG_MENU_VIDEO_PARAM, MENUITEM_SUBMENU, (int*)&video_submenu },
|
|---|
| 712 | #endif
|
|---|
| 713 | {0x24,LANG_MENU_MAIN_RAW_PARAM, MENUITEM_SUBMENU, (int*)&raw_submenu },
|
|---|
| 714 | {0x25,LANG_MENU_MAIN_HISTO_PARAM, MENUITEM_SUBMENU, (int*)&histo_submenu },
|
|---|
| 715 | {0x26,LANG_MENU_MAIN_ZEBRA_PARAM, MENUITEM_SUBMENU, (int*)&zebra_submenu },
|
|---|
| 716 | {0x27,LANG_MENU_MAIN_SCRIPT_PARAM, MENUITEM_SUBMENU, (int*)&script_submenu },
|
|---|
| 717 | {0x85,LANG_MENU_CURVE_PARAM, MENUITEM_SUBMENU, (int*)&curve_submenu },
|
|---|
| 718 | {0x86,LANG_MENU_REMOTE_PARAM, MENUITEM_SUBMENU, (int*)&remote_submenu },
|
|---|
| 719 | {0x28,LANG_MENU_MAIN_VISUAL_PARAM, MENUITEM_SUBMENU, (int*)&visual_submenu },
|
|---|
| 720 | {0x29,LANG_MENU_MAIN_MISC, MENUITEM_SUBMENU, (int*)&misc_submenu },
|
|---|
| 721 | {0x2a,LANG_MENU_MAIN_DEBUG, MENUITEM_SUBMENU, (int*)&debug_submenu },
|
|---|
| 722 | {0x2b,LANG_MENU_MAIN_RESET_OPTIONS, MENUITEM_PROC, (int*)gui_menuproc_reset },
|
|---|
| 723 | #ifndef OPTIONS_AUTOSAVE
|
|---|
| 724 | {0x33,LANG_MENU_MAIN_SAVE_OPTIONS, MENUITEM_PROC, (int*)gui_menuproc_save },
|
|---|
| 725 | #endif
|
|---|
| 726 | {0}
|
|---|
| 727 | };
|
|---|
| 728 |
|
|---|
| 729 | static CMenu root_menu = {0x20,LANG_MENU_MAIN_TITLE, NULL, root_menu_items };
|
|---|
| 730 |
|
|---|
| 731 | static int gui_user_menu_flag;
|
|---|
| 732 |
|
|---|
| 733 | void rinit(){
|
|---|
| 734 | gui_menu_init(&root_menu);
|
|---|
| 735 | draw_restore();
|
|---|
| 736 | gui_force_restore();
|
|---|
| 737 | }
|
|---|
| 738 |
|
|---|
| 739 | static CMenuItem blank_menu_item = {0x0,LANG_MENU_ITEM_BLANK, MENUITEM_PROC, (int*)blank_menu,0};
|
|---|
| 740 |
|
|---|
| 741 | void add_user_menu(CMenuItem curr_menu_item, int* gui_menu_add_item, int del) {
|
|---|
| 742 | if (*gui_menu_add_item<USER_MENU_ITEMS){
|
|---|
| 743 | if (del) {
|
|---|
| 744 | user_submenu_items[*gui_menu_add_item] = blank_menu_item;
|
|---|
| 745 | } else {
|
|---|
| 746 | user_submenu_items[*gui_menu_add_item] = curr_menu_item;
|
|---|
| 747 | *gui_menu_add_item += 1;
|
|---|
| 748 | }
|
|---|
| 749 | }
|
|---|
| 750 | }
|
|---|
| 751 |
|
|---|
| 752 | //-------------------------------------------------------------------
|
|---|
| 753 | void cb_step_25() {
|
|---|
| 754 | voltage_step = (conf.batt_step_25)?25:1;
|
|---|
| 755 | }
|
|---|
| 756 |
|
|---|
| 757 | void cb_perc() {
|
|---|
| 758 | conf.batt_volts_show=0;
|
|---|
| 759 | }
|
|---|
| 760 |
|
|---|
| 761 | void cb_volts() {
|
|---|
| 762 | conf.batt_perc_show=0;
|
|---|
| 763 | }
|
|---|
| 764 |
|
|---|
| 765 | void cb_space_perc() {
|
|---|
| 766 | conf.space_mb_show=0;
|
|---|
| 767 | }
|
|---|
| 768 |
|
|---|
| 769 | void cb_space_mb() {
|
|---|
| 770 | conf.space_perc_show=0;
|
|---|
| 771 | }
|
|---|
| 772 |
|
|---|
| 773 | void cb_battery_menu_change(unsigned int item) {
|
|---|
| 774 | switch (item) {
|
|---|
| 775 | case 0: //Voltage MAX
|
|---|
| 776 | if (conf.batt_volts_max<conf.batt_volts_min+25) {
|
|---|
| 777 | conf.batt_volts_min = conf.batt_volts_max-25;
|
|---|
| 778 | }
|
|---|
| 779 | break;
|
|---|
| 780 | case 1: //Voltage MIN
|
|---|
| 781 | if (conf.batt_volts_min>conf.batt_volts_max-25) {
|
|---|
| 782 | conf.batt_volts_max = conf.batt_volts_min+25;
|
|---|
| 783 | }
|
|---|
| 784 | break;
|
|---|
| 785 | default:
|
|---|
| 786 | break;
|
|---|
| 787 | }
|
|---|
| 788 | }
|
|---|
| 789 |
|
|---|
| 790 | void cb_zebra_restore_screen() {
|
|---|
| 791 | if (!conf.zebra_restore_screen)
|
|---|
| 792 | conf.zebra_restore_osd = 0;
|
|---|
| 793 | }
|
|---|
| 794 |
|
|---|
| 795 | void cb_zebra_restore_osd() {
|
|---|
| 796 | if (conf.zebra_restore_osd)
|
|---|
| 797 | conf.zebra_restore_screen = 1;
|
|---|
| 798 | }
|
|---|
| 799 |
|
|---|
| 800 | //-------------------------------------------------------------------
|
|---|
| 801 | const char* gui_conf_curve_enum(int change, int arg) {
|
|---|
| 802 | static const char* modes[]={ "None", "Custom", "+1EV", "+2EV", "Auto DR" };
|
|---|
| 803 |
|
|---|
| 804 | conf.curve_enable+=change;
|
|---|
| 805 | if (conf.curve_enable<0)
|
|---|
| 806 | conf.curve_enable=(sizeof(modes)/sizeof(modes[0]))-1;
|
|---|
| 807 | else if (conf.curve_enable>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 808 | conf.curve_enable=0;
|
|---|
| 809 |
|
|---|
| 810 | return modes[conf.curve_enable];
|
|---|
| 811 | }
|
|---|
| 812 |
|
|---|
| 813 | //-------------------------------------------------------------------
|
|---|
| 814 | const char* gui_script_autostart_enum(int change, int arg) {
|
|---|
| 815 | static const char* modes[]={ "Off", "On", "Once"};
|
|---|
| 816 |
|
|---|
| 817 | conf.script_startup+=change;
|
|---|
| 818 | if (conf.script_startup<0)
|
|---|
| 819 | conf.script_startup=(sizeof(modes)/sizeof(modes[0]))-1;
|
|---|
| 820 | else if (conf.script_startup>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 821 | conf.script_startup=0;
|
|---|
| 822 |
|
|---|
| 823 | return modes[conf.script_startup];
|
|---|
| 824 | }
|
|---|
| 825 |
|
|---|
| 826 | //-------------------------------------------------------------------
|
|---|
| 827 | const char* gui_script_param_set_enum(int change, int arg) {
|
|---|
| 828 | static const char* modes[]={ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };
|
|---|
| 829 |
|
|---|
| 830 | if (change != 0)
|
|---|
| 831 | {
|
|---|
| 832 | if (conf.script_param_save)
|
|---|
| 833 | {
|
|---|
| 834 | save_params_values(0);
|
|---|
| 835 | }
|
|---|
| 836 | conf.script_param_set += change;
|
|---|
| 837 | if (conf.script_param_set < 0) conf.script_param_set = (sizeof(modes)/sizeof(modes[0]))-1; else
|
|---|
| 838 | if (conf.script_param_set >= (sizeof(modes)/sizeof(modes[0]))) conf.script_param_set=0;
|
|---|
| 839 |
|
|---|
| 840 | if (!load_params_values(conf.script_file, 1, 0)) script_load(conf.script_file, 0);
|
|---|
| 841 | gui_update_script_submenu();
|
|---|
| 842 | }
|
|---|
| 843 |
|
|---|
| 844 | return modes[conf.script_param_set];
|
|---|
| 845 | }
|
|---|
| 846 |
|
|---|
| 847 |
|
|---|
| 848 | //-------------------------------------------------------------------
|
|---|
| 849 | const char* gui_override_disable_enum(int change, int arg) {
|
|---|
| 850 | static const char* modes[]={ "Off", "On", "Disabled"};
|
|---|
| 851 |
|
|---|
| 852 | conf.override_disable+=change;
|
|---|
| 853 | if (conf.override_disable<0)
|
|---|
| 854 | conf.override_disable=(sizeof(modes)/sizeof(modes[0]))-1;
|
|---|
| 855 | else if (conf.override_disable>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 856 | conf.override_disable=0;
|
|---|
| 857 |
|
|---|
| 858 | return modes[conf.override_disable];
|
|---|
| 859 | }
|
|---|
| 860 |
|
|---|
| 861 | //-------------------------------------------------------------------
|
|---|
| 862 | const char* gui_histo_mode_enum(int change, int arg) {
|
|---|
| 863 | static const char* modes[]={ "Linear", "Log" };
|
|---|
| 864 |
|
|---|
| 865 | conf.histo_mode+=change;
|
|---|
| 866 | if (conf.histo_mode<0)
|
|---|
| 867 | conf.histo_mode=(sizeof(modes)/sizeof(modes[0]))-1;
|
|---|
| 868 | else if (conf.histo_mode>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 869 | conf.histo_mode=0;
|
|---|
| 870 |
|
|---|
| 871 | histogram_set_mode(conf.histo_mode);
|
|---|
| 872 |
|
|---|
| 873 | return modes[conf.histo_mode];
|
|---|
| 874 | }
|
|---|
| 875 |
|
|---|
| 876 | //-------------------------------------------------------------------
|
|---|
| 877 | const char* gui_temp_mode_enum(int change, int arg) {
|
|---|
| 878 | static const char* modes[]={ "Off", "Optical","CCD","Battery","all" };
|
|---|
| 879 |
|
|---|
| 880 | conf.show_temp+=change;
|
|---|
| 881 | if (conf.show_temp<0)
|
|---|
| 882 | conf.show_temp=(sizeof(modes)/sizeof(modes[0]))-1;
|
|---|
| 883 | else if (conf.show_temp>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 884 | conf.show_temp=0;
|
|---|
| 885 |
|
|---|
| 886 | return modes[conf.show_temp];
|
|---|
| 887 | }
|
|---|
| 888 |
|
|---|
| 889 | //-------------------------------------------------------------------
|
|---|
| 890 | const char* gui_histo_layout_enum(int change, int arg) {
|
|---|
| 891 | static const char* modes[]={ "RGB", "Y", "RGB Y", "R G B", "RGB all", "Y all", "Blend", "Blend Y"};
|
|---|
| 892 |
|
|---|
| 893 | conf.histo_layout+=change;
|
|---|
| 894 | if (conf.histo_layout<0)
|
|---|
| 895 | conf.histo_layout=(sizeof(modes)/sizeof(modes[0]))-1;
|
|---|
| 896 | else if (conf.histo_layout>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 897 | conf.histo_layout=0;
|
|---|
| 898 |
|
|---|
| 899 | if (conf.histo_layout==OSD_HISTO_LAYOUT_Y || conf.histo_layout==OSD_HISTO_LAYOUT_Y_argb) {
|
|---|
| 900 | histogram_set_main(HISTO_Y);
|
|---|
| 901 | } else {
|
|---|
| 902 | histogram_set_main(HISTO_RGB);
|
|---|
| 903 | }
|
|---|
| 904 |
|
|---|
| 905 | return modes[conf.histo_layout];
|
|---|
| 906 | }
|
|---|
| 907 |
|
|---|
| 908 | //-------------------------------------------------------------------
|
|---|
| 909 | const char* gui_font_enum(int change, int arg) {
|
|---|
| 910 | static const char* fonts[]={ "Win1250", "Win1251", "Win1252", "Win1254", "Win1257"};
|
|---|
| 911 |
|
|---|
| 912 | conf.font_cp+=change;
|
|---|
| 913 | if (conf.font_cp<0)
|
|---|
| 914 | conf.font_cp=(sizeof(fonts)/sizeof(fonts[0]))-1;
|
|---|
| 915 | else if (conf.font_cp>=(sizeof(fonts)/sizeof(fonts[0])))
|
|---|
| 916 | conf.font_cp=0;
|
|---|
| 917 |
|
|---|
| 918 | if (change != 0) {
|
|---|
| 919 | font_set(conf.font_cp);
|
|---|
| 920 | if (!rbf_load(conf.menu_rbf_file))
|
|---|
| 921 | rbf_load_from_8x16(current_font);
|
|---|
| 922 | rbf_set_codepage(FONT_CP_WIN);
|
|---|
| 923 | gui_menu_init(NULL);
|
|---|
| 924 | }
|
|---|
| 925 |
|
|---|
| 926 | return fonts[conf.font_cp];
|
|---|
| 927 | }
|
|---|
| 928 |
|
|---|
| 929 | //-------------------------------------------------------------------
|
|---|
| 930 | const char* gui_raw_prefix_enum(int change, int arg) {
|
|---|
| 931 | conf.raw_prefix+=change;
|
|---|
| 932 | if (conf.raw_prefix<0)
|
|---|
| 933 | conf.raw_prefix=NUM_IMG_PREFIXES-1;
|
|---|
| 934 | else if (conf.raw_prefix>=NUM_IMG_PREFIXES)
|
|---|
| 935 | conf.raw_prefix=0;
|
|---|
| 936 |
|
|---|
| 937 | return img_prefixes[conf.raw_prefix];
|
|---|
| 938 | }
|
|---|
| 939 |
|
|---|
| 940 | //-------------------------------------------------------------------
|
|---|
| 941 | const char* gui_raw_ext_enum(int change, int arg) {
|
|---|
| 942 | conf.raw_ext+=change;
|
|---|
| 943 | if (conf.raw_ext<0)
|
|---|
| 944 | conf.raw_ext=NUM_IMG_EXTS-1;
|
|---|
| 945 | else if (conf.raw_ext>=NUM_IMG_EXTS)
|
|---|
| 946 | conf.raw_ext=0;
|
|---|
| 947 |
|
|---|
| 948 | return img_exts[conf.raw_ext];
|
|---|
| 949 | }
|
|---|
| 950 |
|
|---|
| 951 | //-------------------------------------------------------------------
|
|---|
| 952 | const char* gui_sub_batch_prefix_enum(int change, int arg) {
|
|---|
| 953 | conf.sub_batch_prefix+=change;
|
|---|
| 954 | if (conf.sub_batch_prefix<0)
|
|---|
| 955 | conf.sub_batch_prefix=NUM_IMG_PREFIXES-1;
|
|---|
| 956 | else if (conf.sub_batch_prefix>=NUM_IMG_PREFIXES)
|
|---|
| 957 | conf.sub_batch_prefix=0;
|
|---|
| 958 |
|
|---|
| 959 | return img_prefixes[conf.sub_batch_prefix];
|
|---|
| 960 | }
|
|---|
| 961 |
|
|---|
| 962 | //-------------------------------------------------------------------
|
|---|
| 963 | const char* gui_sub_batch_ext_enum(int change, int arg) {
|
|---|
| 964 | conf.sub_batch_ext+=change;
|
|---|
| 965 | if (conf.sub_batch_ext<0)
|
|---|
| 966 | conf.sub_batch_ext=NUM_IMG_EXTS-1;
|
|---|
| 967 | else if (conf.sub_batch_ext>=NUM_IMG_EXTS)
|
|---|
| 968 | conf.sub_batch_ext=0;
|
|---|
| 969 |
|
|---|
| 970 | return img_exts[conf.sub_batch_ext];
|
|---|
| 971 | }
|
|---|
| 972 |
|
|---|
| 973 | //-------------------------------------------------------------------
|
|---|
| 974 | const char* gui_raw_nr_enum(int change, int arg) {
|
|---|
| 975 | static const char* modes[]={ "Auto", "Off", "On"};
|
|---|
| 976 |
|
|---|
| 977 | conf.raw_nr+=change;
|
|---|
| 978 | if (conf.raw_nr<0)
|
|---|
| 979 | conf.raw_nr=(sizeof(modes)/sizeof(modes[0]))-1;
|
|---|
| 980 | else if (conf.raw_nr>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 981 | conf.raw_nr=0;
|
|---|
| 982 |
|
|---|
| 983 | return modes[conf.raw_nr];
|
|---|
| 984 | }
|
|---|
| 985 |
|
|---|
| 986 | //-------------------------------------------------------------------
|
|---|
| 987 | const char* gui_reader_codepage_enum(int change, int arg) {
|
|---|
| 988 | static const char* cps[]={ "Win1251", "DOS"};
|
|---|
| 989 |
|
|---|
| 990 | conf.reader_codepage+=change;
|
|---|
| 991 | if (conf.reader_codepage<0)
|
|---|
| 992 | conf.reader_codepage=(sizeof(cps)/sizeof(cps[0]))-1;
|
|---|
| 993 | else if (conf.reader_codepage>=(sizeof(cps)/sizeof(cps[0])))
|
|---|
| 994 | conf.reader_codepage=0;
|
|---|
| 995 |
|
|---|
| 996 | return cps[conf.reader_codepage];
|
|---|
| 997 | }
|
|---|
| 998 |
|
|---|
| 999 | //-------------------------------------------------------------------
|
|---|
| 1000 | const char* gui_autoiso_shutter_enum(int change, int arg) {
|
|---|
| 1001 | static const char* shutter[]={ "Auto", "1/8s", "1/15s", "1/30s", "1/60s", "1/125s", "1/250s", "1/500s", "1/1000s"};
|
|---|
| 1002 |
|
|---|
| 1003 | conf.autoiso_shutter+=change;
|
|---|
| 1004 | if (conf.autoiso_shutter<0)
|
|---|
| 1005 | conf.autoiso_shutter=(sizeof(shutter)/sizeof(shutter[0]))-1;
|
|---|
| 1006 | else if (conf.autoiso_shutter>=(sizeof(shutter)/sizeof(shutter[0])))
|
|---|
| 1007 | conf.autoiso_shutter=0;
|
|---|
| 1008 |
|
|---|
| 1009 | return shutter[conf.autoiso_shutter];
|
|---|
| 1010 | }
|
|---|
| 1011 |
|
|---|
| 1012 | //-------------------------------------------------------------------
|
|---|
| 1013 | const char* gui_zebra_mode_enum(int change, int arg) {
|
|---|
| 1014 | static const char* modes[]={ "Blink 1", "Blink 2", "Blink 3", "Solid", "Zebra 1", "Zebra 2" };
|
|---|
| 1015 |
|
|---|
| 1016 | conf.zebra_mode+=change;
|
|---|
| 1017 | if (conf.zebra_mode<0)
|
|---|
| 1018 | conf.zebra_mode=(sizeof(modes)/sizeof(modes[0]))-1;
|
|---|
| 1019 | else if (conf.zebra_mode>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1020 | conf.zebra_mode=0;
|
|---|
| 1021 |
|
|---|
| 1022 | return modes[conf.zebra_mode];
|
|---|
| 1023 | }
|
|---|
| 1024 |
|
|---|
| 1025 | //-------------------------------------------------------------------
|
|---|
| 1026 | const char* gui_zebra_draw_osd_enum(int change, int arg) {
|
|---|
| 1027 | static const char* modes[]={ "Nothing", "Histo", "OSD" };
|
|---|
| 1028 |
|
|---|
| 1029 | conf.zebra_draw_osd+=change;
|
|---|
| 1030 | if (conf.zebra_draw_osd<0)
|
|---|
| 1031 | conf.zebra_draw_osd=(sizeof(modes)/sizeof(modes[0]))-1;
|
|---|
| 1032 | else if (conf.zebra_draw_osd>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1033 | conf.zebra_draw_osd=0;
|
|---|
| 1034 |
|
|---|
| 1035 | return modes[conf.zebra_draw_osd];
|
|---|
| 1036 | }
|
|---|
| 1037 |
|
|---|
| 1038 | //-------------------------------------------------------------------
|
|---|
| 1039 | const char* gui_zoom_value_enum(int change, int arg) {
|
|---|
| 1040 | static const char* modes[]={ "X", "FL", "EFL" };
|
|---|
| 1041 |
|
|---|
| 1042 | conf.zoom_value+=change;
|
|---|
| 1043 | if (conf.zoom_value<0)
|
|---|
| 1044 | conf.zoom_value=(sizeof(modes)/sizeof(modes[0]))-1;
|
|---|
| 1045 | else if (conf.zoom_value>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1046 | conf.zoom_value=0;
|
|---|
| 1047 |
|
|---|
| 1048 | return modes[conf.zoom_value];
|
|---|
| 1049 | }
|
|---|
| 1050 |
|
|---|
| 1051 | const char* gui_show_values_enum(int change, int arg) {
|
|---|
| 1052 | static const char* modes[]={ "Don't", "Always", "Shoot" };
|
|---|
| 1053 |
|
|---|
| 1054 | conf.show_values+=change;
|
|---|
| 1055 | if (conf.show_values<0)
|
|---|
| 1056 | conf.show_values=(sizeof(modes)/sizeof(modes[0]))-1;
|
|---|
| 1057 | else if (conf.show_values>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1058 | conf.show_values=0;
|
|---|
| 1059 |
|
|---|
| 1060 | return modes[conf.show_values];
|
|---|
| 1061 | }
|
|---|
| 1062 |
|
|---|
| 1063 | const char* gui_nd_filter_state_enum(int change, int arg) {
|
|---|
| 1064 | static const char* modes[]={ "Off", "In", "Out" };
|
|---|
| 1065 |
|
|---|
| 1066 | conf.nd_filter_state+=change;
|
|---|
| 1067 | if (conf.nd_filter_state<0)
|
|---|
| 1068 | conf.nd_filter_state=(sizeof(modes)/sizeof(modes[0]))-1;
|
|---|
| 1069 | else if (conf.nd_filter_state>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1070 | conf.nd_filter_state=0;
|
|---|
| 1071 |
|
|---|
| 1072 | return modes[conf.nd_filter_state];
|
|---|
| 1073 | }
|
|---|
| 1074 |
|
|---|
| 1075 |
|
|---|
| 1076 |
|
|---|
| 1077 | const char* gui_dof_show_value_enum(int change, int arg) {
|
|---|
| 1078 | static const char* modes[]={ "Don't", "Separate", "In Misc" };
|
|---|
| 1079 |
|
|---|
| 1080 | conf.show_dof+=change;
|
|---|
| 1081 | if (conf.show_dof<0)
|
|---|
| 1082 | conf.show_dof=(sizeof(modes)/sizeof(modes[0]))-1;
|
|---|
| 1083 | else if (conf.show_dof>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1084 | conf.show_dof=0;
|
|---|
| 1085 |
|
|---|
| 1086 | return modes[conf.show_dof];
|
|---|
| 1087 | }
|
|---|
| 1088 |
|
|---|
| 1089 |
|
|---|
| 1090 | const char* gui_histo_show_enum(int change, int arg) {
|
|---|
| 1091 | static const char* modes[]={ "Don't", "Always", "Shoot" };
|
|---|
| 1092 |
|
|---|
| 1093 | conf.show_histo+=change;
|
|---|
| 1094 | if (conf.show_histo<0)
|
|---|
| 1095 | conf.show_histo=(sizeof(modes)/sizeof(modes[0]))-1;
|
|---|
| 1096 | else if (conf.show_histo>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1097 | conf.show_histo=0;
|
|---|
| 1098 |
|
|---|
| 1099 | return modes[conf.show_histo];
|
|---|
| 1100 | }
|
|---|
| 1101 |
|
|---|
| 1102 | const char* gui_show_clock_enum(int change, int arg) {
|
|---|
| 1103 | static const char* modes[]={ "Don't", "Normal", "Seconds"};
|
|---|
| 1104 |
|
|---|
| 1105 | conf.show_clock+=change;
|
|---|
| 1106 | if (conf.show_clock<0)
|
|---|
| 1107 | conf.show_clock=(sizeof(modes)/sizeof(modes[0]))-1;
|
|---|
| 1108 | else if (conf.show_clock>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1109 | conf.show_clock=0;
|
|---|
| 1110 |
|
|---|
| 1111 | return modes[conf.show_clock];
|
|---|
| 1112 | }
|
|---|
| 1113 |
|
|---|
| 1114 | const char* gui_hide_osd_enum(int change, int arg) {
|
|---|
| 1115 | static const char* modes[]={ "Don't", "In Playback", "On Disp Press", "both"};
|
|---|
| 1116 |
|
|---|
| 1117 | conf.hide_osd+=change;
|
|---|
| 1118 | if (conf.hide_osd<0)
|
|---|
| 1119 | conf.hide_osd=(sizeof(modes)/sizeof(modes[0]))-1;
|
|---|
| 1120 | else if (conf.hide_osd>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1121 | conf.hide_osd=0;
|
|---|
| 1122 |
|
|---|
| 1123 | return modes[conf.hide_osd];
|
|---|
| 1124 | }
|
|---|
| 1125 |
|
|---|
| 1126 | const char* gui_clock_format_enum(int change, int arg) {
|
|---|
| 1127 | static const char* modes[]={ "24h", "12h"};
|
|---|
| 1128 |
|
|---|
| 1129 | conf.clock_format+=change;
|
|---|
| 1130 | if (conf.clock_format<0)
|
|---|
| 1131 | conf.clock_format=(sizeof(modes)/sizeof(modes[0]))-1;
|
|---|
| 1132 | else if (conf.clock_format>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1133 | conf.clock_format=0;
|
|---|
| 1134 |
|
|---|
| 1135 | return modes[conf.clock_format];
|
|---|
| 1136 | }
|
|---|
| 1137 |
|
|---|
| 1138 | const char* gui_clock_indicator_enum(int change, int arg) {
|
|---|
| 1139 | static const char* modes[]={ "PM", "P","."};
|
|---|
| 1140 |
|
|---|
| 1141 | conf.clock_indicator+=change;
|
|---|
| 1142 | if (conf.clock_indicator<0)
|
|---|
| 1143 | conf.clock_indicator=(sizeof(modes)/sizeof(modes[0]))-1;
|
|---|
| 1144 | else if (conf.clock_indicator>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1145 | conf.clock_indicator=0;
|
|---|
| 1146 |
|
|---|
| 1147 | return modes[conf.clock_indicator];
|
|---|
| 1148 | }
|
|---|
| 1149 |
|
|---|
| 1150 | const char* gui_clock_halfpress_enum(int change, int arg) {
|
|---|
| 1151 | static const char* modes[]={ "Full", "Seconds","Don't"};
|
|---|
| 1152 |
|
|---|
| 1153 | conf.clock_halfpress+=change;
|
|---|
| 1154 | if (conf.clock_halfpress<0)
|
|---|
| 1155 | conf.clock_halfpress=(sizeof(modes)/sizeof(modes[0]))-1;
|
|---|
| 1156 | else if (conf.clock_halfpress>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1157 | conf.clock_halfpress=0;
|
|---|
| 1158 |
|
|---|
| 1159 | return modes[conf.clock_halfpress];
|
|---|
| 1160 | }
|
|---|
| 1161 |
|
|---|
| 1162 | const char* gui_space_bar_enum(int change, int arg) {
|
|---|
| 1163 | static const char* modes[]={ "Don't", "Horizontal", "Vertical"};
|
|---|
| 1164 |
|
|---|
| 1165 | conf.space_bar_show+=change;
|
|---|
| 1166 | if (conf.space_bar_show<0)
|
|---|
| 1167 | conf.space_bar_show=(sizeof(modes)/sizeof(modes[0]))-1;
|
|---|
| 1168 | else if (conf.space_bar_show>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1169 | conf.space_bar_show=0;
|
|---|
| 1170 |
|
|---|
| 1171 | return modes[conf.space_bar_show];
|
|---|
| 1172 | }
|
|---|
| 1173 |
|
|---|
| 1174 | const char* gui_space_bar_size_enum(int change, int arg) {
|
|---|
| 1175 | static const char* modes[]={ "1/4", "1/2", "1"};
|
|---|
| 1176 |
|
|---|
| 1177 | conf.space_bar_size+=change;
|
|---|
| 1178 | if (conf.space_bar_size<0)
|
|---|
| 1179 | conf.space_bar_size=(sizeof(modes)/sizeof(modes[0]))-1;
|
|---|
| 1180 | else if (conf.space_bar_size>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1181 | conf.space_bar_size=0;
|
|---|
| 1182 |
|
|---|
| 1183 | return modes[conf.space_bar_size];
|
|---|
| 1184 | }
|
|---|
| 1185 |
|
|---|
| 1186 | const char* gui_space_bar_width_enum(int change, int arg) {
|
|---|
| 1187 | static const char* modes[]={ "1", "2", "3","4","5","6","7","8","9","10"};
|
|---|
| 1188 |
|
|---|
| 1189 | conf.space_bar_width+=change;
|
|---|
| 1190 | if (conf.space_bar_width<0)
|
|---|
| 1191 | conf.space_bar_width=(sizeof(modes)/sizeof(modes[0]))-1;
|
|---|
| 1192 | else if (conf.space_bar_width>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1193 | conf.space_bar_width=0;
|
|---|
| 1194 |
|
|---|
| 1195 | return modes[conf.space_bar_width];
|
|---|
| 1196 | }
|
|---|
| 1197 |
|
|---|
| 1198 | const char* gui_space_warn_type_enum(int change, int arg) {
|
|---|
| 1199 | static const char* modes[]={ "Percent", "MB", "Don't"};
|
|---|
| 1200 |
|
|---|
| 1201 | conf.space_warn_type+=change;
|
|---|
| 1202 | if (conf.space_warn_type<0)
|
|---|
| 1203 | conf.space_warn_type=(sizeof(modes)/sizeof(modes[0]))-1;
|
|---|
| 1204 | else if (conf.space_warn_type>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1205 | conf.space_warn_type=0;
|
|---|
| 1206 |
|
|---|
| 1207 | return modes[conf.space_warn_type];
|
|---|
| 1208 | }
|
|---|
| 1209 |
|
|---|
| 1210 | const char* gui_show_movie_time(int change, int arg) {
|
|---|
| 1211 | static const char* modes[]={ "Don't", "hh:mm:ss", "KB/s","both"};
|
|---|
| 1212 |
|
|---|
| 1213 | conf.show_movie_time+=change;
|
|---|
| 1214 | if (conf.show_movie_time<0)
|
|---|
| 1215 | conf.show_movie_time=(sizeof(modes)/sizeof(modes[0]))-1;
|
|---|
| 1216 | else if (conf.show_movie_time>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1217 | conf.show_movie_time=0;
|
|---|
| 1218 |
|
|---|
| 1219 | return modes[conf.show_movie_time];
|
|---|
| 1220 | }
|
|---|
| 1221 |
|
|---|
| 1222 | //-------------------------------------------------------------------
|
|---|
| 1223 | #if CAM_ADJUSTABLE_ALT_BUTTON
|
|---|
| 1224 | const char* gui_alt_mode_button_enum(int change, int arg) {
|
|---|
| 1225 | #if defined(CAMERA_s2is) || defined(CAMERA_s3is) || defined(CAMERA_s5is)
|
|---|
| 1226 | static const char* names[]={ "Shrtcut", "Flash", "Timer", "ISO", "Video" };
|
|---|
| 1227 | static const int keys[]={ KEY_PRINT, KEY_FLASH, KEY_TIMER, KEY_ISO, KEY_VIDEO };
|
|---|
| 1228 | #elif defined(CAMERA_g7)
|
|---|
| 1229 | static const char* names[]={ "Print", "FE"};
|
|---|
| 1230 | static const int keys[]={ KEY_PRINT, KEY_MICROPHONE };
|
|---|
| 1231 | #elif defined(CAMERA_a650)
|
|---|
| 1232 | static const char* names[]={ "Print", "ISO"};
|
|---|
| 1233 | static const int keys[]={ KEY_PRINT, KEY_ISO };
|
|---|
| 1234 | #elif defined(CAMERA_sx100is)
|
|---|
| 1235 | static const char* names[]={ "Print", "Face"};
|
|---|
| 1236 | static const int keys[]={ KEY_PRINT, KEY_FACE };
|
|---|
| 1237 | #else
|
|---|
| 1238 | #error camera alt-buttons not defined
|
|---|
| 1239 | #endif
|
|---|
| 1240 | int i;
|
|---|
| 1241 |
|
|---|
| 1242 | for (i=0; i<sizeof(names)/sizeof(names[0]); ++i) {
|
|---|
| 1243 | if (conf.alt_mode_button==keys[i]) {
|
|---|
| 1244 | break;
|
|---|
| 1245 | }
|
|---|
| 1246 | }
|
|---|
| 1247 |
|
|---|
| 1248 | i+=change;
|
|---|
| 1249 | if (i<0)
|
|---|
| 1250 | i=(sizeof(names)/sizeof(names[0]))-1;
|
|---|
| 1251 | else if (i>=(sizeof(names)/sizeof(names[0])))
|
|---|
| 1252 | i=0;
|
|---|
| 1253 |
|
|---|
| 1254 | conf.alt_mode_button = keys[i];
|
|---|
| 1255 | kbd_set_alt_mode_key_mask(conf.alt_mode_button);
|
|---|
| 1256 | return names[i];
|
|---|
| 1257 | }
|
|---|
| 1258 | #endif
|
|---|
| 1259 |
|
|---|
| 1260 | //-------------------------------------------------------------------
|
|---|
| 1261 | const char* gui_alt_power_enum(int change, int arg) {
|
|---|
| 1262 | static const char* modes[]={ "No", "Alt", "Script" };
|
|---|
| 1263 |
|
|---|
| 1264 | conf.alt_prevent_shutdown+=change;
|
|---|
| 1265 | if (conf.alt_prevent_shutdown<0)
|
|---|
| 1266 | conf.alt_prevent_shutdown=(sizeof(modes)/sizeof(modes[0]))-1;
|
|---|
| 1267 | else if (conf.alt_prevent_shutdown>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1268 | conf.alt_prevent_shutdown=0;
|
|---|
| 1269 |
|
|---|
| 1270 | return modes[conf.alt_prevent_shutdown];
|
|---|
| 1271 | }
|
|---|
| 1272 | const char* gui_fast_ev_step(int change, int arg) {
|
|---|
| 1273 | static const char* modes[]={"1/6 Ev","1/3 Ev","1/2 Ev", "2/3 Ev","5/6 Ev","1 Ev","1 1/6 Ev","1 1/3 Ev","1 1/2 Ev", "1 2/3 Ev","1 5/6 Ev","2 Ev","2 1/6 Ev","2 1/3 Ev","2 1/2 Ev", "2 2/3 Ev","2 5/6 Ev","3 Ev","3 1/6 Ev","3 1/3 Ev","3 1/2 Ev", "3 2/3 Ev","3 5/6 Ev","4 Ev"};
|
|---|
| 1274 | conf.fast_ev_step+=change;
|
|---|
| 1275 | if (conf.fast_ev_step<0)
|
|---|
| 1276 | conf.fast_ev_step=(sizeof(modes)/sizeof(modes[0]))-1;
|
|---|
| 1277 | else if (conf.fast_ev_step>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1278 | conf.fast_ev_step=0;
|
|---|
| 1279 | return modes[conf.fast_ev_step];
|
|---|
| 1280 | }
|
|---|
| 1281 | const char* gui_video_mode_enum(int change, int arg) {
|
|---|
| 1282 | static const char* modes[]={ "Bitrate", "Quality"};
|
|---|
| 1283 |
|
|---|
| 1284 | conf.video_mode+=change;
|
|---|
| 1285 | if (conf.video_mode<0)
|
|---|
| 1286 | conf.video_mode=(sizeof(modes)/sizeof(modes[0]))-1;
|
|---|
| 1287 | else if (conf.video_mode>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1288 | conf.video_mode=0;
|
|---|
| 1289 |
|
|---|
| 1290 | return modes[conf.video_mode];
|
|---|
| 1291 | }
|
|---|
| 1292 |
|
|---|
| 1293 | //-------------------------------------------------------------------
|
|---|
| 1294 | const char* gui_video_bitrate_enum(int change, int arg) {
|
|---|
| 1295 | conf.video_bitrate+=change;
|
|---|
| 1296 | if (conf.video_bitrate<0)
|
|---|
| 1297 | conf.video_bitrate=VIDEO_BITRATE_STEPS-1;
|
|---|
| 1298 | else if (conf.video_bitrate>=VIDEO_BITRATE_STEPS)
|
|---|
| 1299 | conf.video_bitrate=0;
|
|---|
| 1300 |
|
|---|
| 1301 | shooting_video_bitrate_change(conf.video_bitrate);
|
|---|
| 1302 |
|
|---|
| 1303 | return video_bitrate_strings[conf.video_bitrate];
|
|---|
| 1304 | }
|
|---|
| 1305 |
|
|---|
| 1306 |
|
|---|
| 1307 | //-------------------------------------------------------------------
|
|---|
| 1308 | const char* gui_tv_bracket_values_enum(int change, int arg) {
|
|---|
| 1309 | static const char* modes[]={ "Off", "1/3 Ev","2/3 Ev", "1 Ev", "1 1/3Ev", "1 2/3Ev", "2 Ev", "2 1/3Ev", "2 2/3Ev", "3 Ev", "3 1/3Ev", "3 2/3Ev", "4 Ev"};
|
|---|
| 1310 |
|
|---|
| 1311 | conf.tv_bracket_value+=change;
|
|---|
| 1312 | if (conf.tv_bracket_value<0)
|
|---|
| 1313 | conf.tv_bracket_value=sizeof(modes)/sizeof(modes[0])-1;
|
|---|
| 1314 | else if (conf.tv_bracket_value>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1315 | conf.tv_bracket_value=0;
|
|---|
| 1316 |
|
|---|
| 1317 | return modes[conf.tv_bracket_value];
|
|---|
| 1318 | }
|
|---|
| 1319 |
|
|---|
| 1320 | const char* gui_av_bracket_values_enum(int change, int arg) {
|
|---|
| 1321 | static const char* modes[]={ "Off", "1/3 Ev","2/3 Ev", "1 Ev", "1 1/3Ev", "1 2/3Ev", "2 Ev", "2 1/3Ev", "2 2/3Ev", "3 Ev", "3 1/3Ev", "3 2/3Ev", "4 Ev"};
|
|---|
| 1322 |
|
|---|
| 1323 | conf.av_bracket_value+=change;
|
|---|
| 1324 | if (conf.av_bracket_value<0)
|
|---|
| 1325 | conf.av_bracket_value=sizeof(modes)/sizeof(modes[0])-1;
|
|---|
| 1326 | else if (conf.av_bracket_value>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1327 | conf.av_bracket_value=0;
|
|---|
| 1328 |
|
|---|
| 1329 | return modes[conf.av_bracket_value];
|
|---|
| 1330 | }
|
|---|
| 1331 |
|
|---|
| 1332 | const char* gui_subj_dist_bracket_koef_enum(int change, int arg) {
|
|---|
| 1333 | static const char* modes[]={"Off", "1", "10","100","1000"};
|
|---|
| 1334 |
|
|---|
| 1335 | conf.subj_dist_bracket_koef+=change;
|
|---|
| 1336 | if (conf.subj_dist_bracket_koef<0)
|
|---|
| 1337 | conf.subj_dist_bracket_koef=sizeof(modes)/sizeof(modes[0])-1;
|
|---|
| 1338 | else if (conf.subj_dist_bracket_koef>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1339 | conf.subj_dist_bracket_koef=0;
|
|---|
| 1340 |
|
|---|
| 1341 | return modes[conf.subj_dist_bracket_koef];
|
|---|
| 1342 | }
|
|---|
| 1343 |
|
|---|
| 1344 | const char* gui_iso_bracket_koef_enum(int change, int arg) {
|
|---|
| 1345 | static const char* modes[]={ "Off","1", "10","100"};
|
|---|
| 1346 |
|
|---|
| 1347 | conf.iso_bracket_koef+=change;
|
|---|
| 1348 | if (conf.iso_bracket_koef<0)
|
|---|
| 1349 | conf.iso_bracket_koef=sizeof(modes)/sizeof(modes[0])-1;
|
|---|
| 1350 | else if (conf.iso_bracket_koef>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1351 | conf.iso_bracket_koef=0;
|
|---|
| 1352 |
|
|---|
| 1353 | return modes[conf.iso_bracket_koef];
|
|---|
| 1354 | }
|
|---|
| 1355 |
|
|---|
| 1356 | const char* gui_bracket_type_enum(int change, int arg) {
|
|---|
| 1357 | static const char* modes[]={ "+/-", "-","+"};
|
|---|
| 1358 |
|
|---|
| 1359 | conf.bracket_type+=change;
|
|---|
| 1360 | if (conf.bracket_type<0)
|
|---|
| 1361 | conf.bracket_type=0;
|
|---|
| 1362 | else if (conf.bracket_type>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1363 | conf.bracket_type=sizeof(modes)/sizeof(modes[0])-1;
|
|---|
| 1364 |
|
|---|
| 1365 | return modes[conf.bracket_type];
|
|---|
| 1366 | }
|
|---|
| 1367 |
|
|---|
| 1368 | const char* gui_tv_override_koef_enum(int change, int arg) {
|
|---|
| 1369 | static const char* modes[]={"Off", "1/100K", "1/10000", "1/1000","1/100","1/10", "1","10","100"};
|
|---|
| 1370 |
|
|---|
| 1371 | conf.tv_override_koef+=change;
|
|---|
| 1372 | if (conf.tv_enum_type) {
|
|---|
| 1373 | if (conf.tv_override_koef<0) conf.tv_override_koef=6;
|
|---|
| 1374 | else if (conf.tv_override_koef>6) conf.tv_override_koef=0;
|
|---|
| 1375 | else if (conf.tv_override_koef==1) conf.tv_override_koef=6;
|
|---|
| 1376 | else if (conf.tv_override_koef==5) conf.tv_override_koef=0;
|
|---|
| 1377 | else if (conf.tv_override_koef!=0 && conf.tv_override_koef!=6) conf.tv_override_koef=6;
|
|---|
| 1378 | }
|
|---|
| 1379 | else {
|
|---|
| 1380 | if (conf.tv_override_koef<0)
|
|---|
| 1381 | conf.tv_override_koef=sizeof(modes)/sizeof(modes[0])-1;
|
|---|
| 1382 | else if (conf.tv_override_koef>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1383 | conf.tv_override_koef=0;
|
|---|
| 1384 | }
|
|---|
| 1385 |
|
|---|
| 1386 | return modes[conf.tv_override_koef];
|
|---|
| 1387 | }
|
|---|
| 1388 |
|
|---|
| 1389 | const char* gui_tv_override_value_enum(int change, int arg) {
|
|---|
| 1390 | 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"};
|
|---|
| 1391 | static char *buf;
|
|---|
| 1392 |
|
|---|
| 1393 | conf.tv_override_value+=change;
|
|---|
| 1394 | if (conf.tv_enum_type) {
|
|---|
| 1395 | if (conf.tv_override_value<0) {
|
|---|
| 1396 | conf.tv_override_value=sizeof(modes)/sizeof(modes[0])-1;
|
|---|
| 1397 | }
|
|---|
| 1398 | else if (conf.tv_override_value>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1399 | conf.tv_override_value=0;
|
|---|
| 1400 | return modes[conf.tv_override_value];
|
|---|
| 1401 | }
|
|---|
| 1402 | else
|
|---|
| 1403 | {
|
|---|
| 1404 | if (conf.tv_override_value<0) {
|
|---|
| 1405 | conf.tv_override_value=100;
|
|---|
| 1406 | }
|
|---|
| 1407 | else if (conf.tv_override_value>100) conf.tv_override_value=0;
|
|---|
| 1408 | if(!buf) buf=malloc(4);
|
|---|
| 1409 | if(!buf) return "";
|
|---|
| 1410 | sprintf(buf, "%d", conf.tv_override_value);
|
|---|
| 1411 | return buf;
|
|---|
| 1412 | }
|
|---|
| 1413 | }
|
|---|
| 1414 |
|
|---|
| 1415 | const char* gui_tv_enum_type_enum(int change, int arg) {
|
|---|
| 1416 | static const char* modes[]={"Factor", "Ev Step"};
|
|---|
| 1417 |
|
|---|
| 1418 | conf.tv_enum_type+=change;
|
|---|
| 1419 | if (conf.tv_enum_type<0)
|
|---|
| 1420 | conf.tv_enum_type=sizeof(modes)/sizeof(modes[0])-1;
|
|---|
| 1421 | else if (conf.tv_enum_type>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1422 | conf.tv_enum_type=0;
|
|---|
| 1423 | if (change) {
|
|---|
| 1424 | conf.tv_override_koef=6;
|
|---|
| 1425 | if (conf.tv_enum_type)
|
|---|
| 1426 | conf.tv_override_value=18;
|
|---|
| 1427 | else conf.tv_override_value=1;
|
|---|
| 1428 | }
|
|---|
| 1429 | return modes[conf.tv_enum_type];
|
|---|
| 1430 | }
|
|---|
| 1431 |
|
|---|
| 1432 |
|
|---|
| 1433 | const char* gui_iso_override_koef_enum(int change, int arg) {
|
|---|
| 1434 | static const char* modes[]={ "Off","1", "10","100"};
|
|---|
| 1435 |
|
|---|
| 1436 | conf.iso_override_koef+=change;
|
|---|
| 1437 | if (conf.iso_override_koef<0)
|
|---|
| 1438 | conf.iso_override_koef=0;
|
|---|
| 1439 | else if (conf.iso_override_koef>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1440 | conf.iso_override_koef=sizeof(modes)/sizeof(modes[0])-1;
|
|---|
| 1441 |
|
|---|
| 1442 | return modes[conf.iso_override_koef];
|
|---|
| 1443 | }
|
|---|
| 1444 |
|
|---|
| 1445 | const char* gui_subj_dist_override_value_enum(int change, int arg) {
|
|---|
| 1446 | static const int koef[] = {0, 1,10,100,1000};
|
|---|
| 1447 | static char buf[8];
|
|---|
| 1448 | conf.subj_dist_override_value+=(change*koef[conf.subj_dist_override_koef]);
|
|---|
| 1449 | if (conf.subj_dist_override_value<0)
|
|---|
| 1450 | conf.subj_dist_override_value=MAX_DIST;
|
|---|
| 1451 | else if (conf.subj_dist_override_value>MAX_DIST)
|
|---|
| 1452 | conf.subj_dist_override_value=0;
|
|---|
| 1453 | sprintf(buf, "%d", (int)conf.subj_dist_override_value);
|
|---|
| 1454 | return buf;
|
|---|
| 1455 | }
|
|---|
| 1456 |
|
|---|
| 1457 |
|
|---|
| 1458 | const char* gui_subj_dist_override_koef_enum(int change, int arg) {
|
|---|
| 1459 | static const char* modes[]={ "Off","1", "10","100","1000"};
|
|---|
| 1460 |
|
|---|
| 1461 | conf.subj_dist_override_koef+=change;
|
|---|
| 1462 | if (conf.subj_dist_override_koef<0) conf.subj_dist_override_koef=0;
|
|---|
| 1463 | else if (conf.subj_dist_override_koef>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1464 | conf.subj_dist_override_koef=sizeof(modes)/sizeof(modes[0])-1;
|
|---|
| 1465 |
|
|---|
| 1466 | return modes[conf.subj_dist_override_koef];
|
|---|
| 1467 | }
|
|---|
| 1468 |
|
|---|
| 1469 | /*
|
|---|
| 1470 | const char* gui_tv_exposure_order_enum(int change, int arg) {
|
|---|
| 1471 | static const char* modes[]={ "Off", "1","2", "3"};
|
|---|
| 1472 |
|
|---|
| 1473 | conf.tv_exposure_order+=change;
|
|---|
| 1474 | if (conf.tv_exposure_order<0)
|
|---|
| 1475 | conf.tv_exposure_order=0;
|
|---|
| 1476 | else if (conf.tv_exposure_order>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1477 | conf.tv_exposure_order=sizeof(modes)/sizeof(modes[0])-1;
|
|---|
| 1478 | if((conf.tv_exposure_order>0) && (conf.av_exposure_order==conf.tv_exposure_order))
|
|---|
| 1479 | {
|
|---|
| 1480 | conf.av_exposure_order=0;
|
|---|
| 1481 | }
|
|---|
| 1482 | if((conf.tv_exposure_order>0) && (conf.iso_exposure_order==conf.tv_exposure_order))
|
|---|
| 1483 | {
|
|---|
| 1484 | conf.iso_exposure_order=0;
|
|---|
| 1485 | }
|
|---|
| 1486 |
|
|---|
| 1487 | return modes[conf.tv_exposure_order];
|
|---|
| 1488 | }
|
|---|
| 1489 |
|
|---|
| 1490 | const char* gui_av_exposure_order_enum(int change, int arg) {
|
|---|
| 1491 | static const char* modes[]={ "Off", "1","2", "3"};
|
|---|
| 1492 |
|
|---|
| 1493 | conf.av_exposure_order+=change;
|
|---|
| 1494 | if (conf.av_exposure_order<0)
|
|---|
| 1495 | conf.av_exposure_order=0;
|
|---|
| 1496 | else if (conf.av_exposure_order>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1497 | conf.av_exposure_order=sizeof(modes)/sizeof(modes[0])-1;
|
|---|
| 1498 | if((conf.av_exposure_order>0) && (conf.tv_exposure_order==conf.av_exposure_order))
|
|---|
| 1499 | {
|
|---|
| 1500 | conf.tv_exposure_order=0;
|
|---|
| 1501 | }
|
|---|
| 1502 | if((conf.av_exposure_order>0) && (conf.iso_exposure_order==conf.av_exposure_order))
|
|---|
| 1503 | {
|
|---|
| 1504 | conf.iso_exposure_order=0;
|
|---|
| 1505 | }
|
|---|
| 1506 | return modes[conf.av_exposure_order];
|
|---|
| 1507 | }
|
|---|
| 1508 |
|
|---|
| 1509 | const char* gui_iso_exposure_order_enum(int change, int arg) {
|
|---|
| 1510 | static const char* modes[]={ "Off", "1","2", "3"};
|
|---|
| 1511 |
|
|---|
| 1512 | conf.iso_exposure_order+=change;
|
|---|
| 1513 | if (conf.iso_exposure_order<0)
|
|---|
| 1514 | conf.iso_exposure_order=0;
|
|---|
| 1515 | else if (conf.iso_exposure_order>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1516 | conf.iso_exposure_order=sizeof(modes)/sizeof(modes[0])-1;
|
|---|
| 1517 | if((conf.iso_exposure_order>0) && (conf.tv_exposure_order==conf.iso_exposure_order))
|
|---|
| 1518 | {
|
|---|
| 1519 | conf.tv_exposure_order=0;
|
|---|
| 1520 | }
|
|---|
| 1521 | if((conf.iso_exposure_order>0) && (conf.av_exposure_order==conf.iso_exposure_order))
|
|---|
| 1522 | {
|
|---|
| 1523 | conf.av_exposure_order=0;
|
|---|
| 1524 | }
|
|---|
| 1525 |
|
|---|
| 1526 | return modes[conf.iso_exposure_order];
|
|---|
| 1527 | }
|
|---|
| 1528 | */
|
|---|
| 1529 | const char* gui_av_override_enum(int change, int arg) {
|
|---|
| 1530 | static char buf[8];
|
|---|
| 1531 | short prop_id;
|
|---|
| 1532 | conf.av_override_value+=change;
|
|---|
| 1533 | if (conf.av_override_value<0) conf.av_override_value=shooting_get_aperture_sizes_table_size()+6;
|
|---|
| 1534 | else if (conf.av_override_value>shooting_get_aperture_sizes_table_size()+6) conf.av_override_value=0;
|
|---|
| 1535 | if (conf.av_override_value == 0) return "Off";
|
|---|
| 1536 | else {
|
|---|
| 1537 | short prop_id=shooting_get_aperture_from_av96(shooting_get_av96_override_value());
|
|---|
| 1538 | sprintf(buf, "%d.%02d", (int)prop_id/100, (int)prop_id%100 );
|
|---|
| 1539 | return buf;
|
|---|
| 1540 | }
|
|---|
| 1541 | }
|
|---|
| 1542 |
|
|---|
| 1543 | const char* gui_user_menu_show_enum(int change, int arg) {
|
|---|
| 1544 | static const char* modes[]={ "Off", "On","On Direct", "Edit" };
|
|---|
| 1545 |
|
|---|
| 1546 | if (conf.user_menu_enable == 3) user_menu_save();
|
|---|
| 1547 |
|
|---|
| 1548 | conf.user_menu_enable+=change;
|
|---|
| 1549 | if (conf.user_menu_enable<0)
|
|---|
| 1550 | conf.user_menu_enable=(sizeof(modes)/sizeof(modes[0]))-1;
|
|---|
| 1551 | else if (conf.user_menu_enable>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1552 | conf.user_menu_enable=0;
|
|---|
| 1553 |
|
|---|
| 1554 | return modes[conf.user_menu_enable];
|
|---|
| 1555 | }
|
|---|
| 1556 |
|
|---|
| 1557 | const char* gui_video_af_key_enum(int change, int arg){
|
|---|
| 1558 | static const char* names[]={ "", "Shutter", "Set"};
|
|---|
| 1559 | static const int keys[]={0, KEY_SHOOT_HALF, KEY_SET };
|
|---|
| 1560 | int i;
|
|---|
| 1561 |
|
|---|
| 1562 | for (i=0; i<sizeof(names)/sizeof(names[0]); ++i) {
|
|---|
| 1563 | if (conf.video_af_key==keys[i]) {
|
|---|
| 1564 | break;
|
|---|
| 1565 | }
|
|---|
| 1566 | }
|
|---|
| 1567 |
|
|---|
| 1568 | i+=change;
|
|---|
| 1569 | if (i<0)
|
|---|
| 1570 | i=(sizeof(names)/sizeof(names[0]))-1;
|
|---|
| 1571 | else if (i>=(sizeof(names)/sizeof(names[0])))
|
|---|
| 1572 | i=0;
|
|---|
| 1573 |
|
|---|
| 1574 | conf.video_af_key = keys[i];
|
|---|
| 1575 | return names[i];
|
|---|
| 1576 | }
|
|---|
| 1577 |
|
|---|
| 1578 | const char* gui_bad_pixel_enum(int change, int arg) {
|
|---|
| 1579 | int modes[]={LANG_MENU_BAD_PIXEL_OFF, LANG_MENU_BAD_PIXEL_INTERPOLATION, LANG_MENU_BAD_PIXEL_RAW_CONVERTER};
|
|---|
| 1580 | conf.bad_pixel_removal+=change;
|
|---|
| 1581 | if (conf.bad_pixel_removal<0)
|
|---|
| 1582 | conf.bad_pixel_removal=(sizeof(modes)/sizeof(modes[0]))-1;
|
|---|
| 1583 | else if (conf.bad_pixel_removal>=(sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1584 | conf.bad_pixel_removal=0;
|
|---|
| 1585 |
|
|---|
| 1586 | return lang_str(modes[conf.bad_pixel_removal]);
|
|---|
| 1587 | }
|
|---|
| 1588 |
|
|---|
| 1589 | //-------------------------------------------------------------------
|
|---|
| 1590 | void gui_update_script_submenu() {
|
|---|
| 1591 | register int p=0, i;
|
|---|
| 1592 |
|
|---|
| 1593 | for (i=0; i<sizeof(script_submenu_items_top)/sizeof(script_submenu_items_top[0]); ++p, ++i) {
|
|---|
| 1594 | script_submenu_items[p]=script_submenu_items_top[i];
|
|---|
| 1595 | }
|
|---|
| 1596 | for (i=0; i<SCRIPT_NUM_PARAMS; ++i) {
|
|---|
| 1597 | if (script_param_order[i]) {
|
|---|
| 1598 | script_submenu_items[p].symbol=0x0;
|
|---|
| 1599 | script_submenu_items[p].text=(int)script_params[script_param_order[i]-1];
|
|---|
| 1600 | script_submenu_items[p].type=MENUITEM_INT;
|
|---|
| 1601 | script_submenu_items[p].value=&conf.ubasic_vars[script_param_order[i]-1];
|
|---|
| 1602 | ++p;
|
|---|
| 1603 | }
|
|---|
| 1604 | }
|
|---|
| 1605 | for (i=0; i<sizeof(script_submenu_items_bottom)/sizeof(script_submenu_items_bottom[0]); ++p, ++i) {
|
|---|
| 1606 | script_submenu_items[p]=script_submenu_items_bottom[i];
|
|---|
| 1607 | }
|
|---|
| 1608 | }
|
|---|
| 1609 |
|
|---|
| 1610 | //-------------------------------------------------------------------
|
|---|
| 1611 |
|
|---|
| 1612 | void raw_fselect_cb(const char * filename){
|
|---|
| 1613 | struct stat st;
|
|---|
| 1614 | if (!filename) return;
|
|---|
| 1615 | stat((char*)filename,&st);
|
|---|
| 1616 | if (st.st_size!=hook_raw_size()) return;
|
|---|
| 1617 | gui_mbox_init((int)"", LANG_RAW_DEVELOP_MESSAGE, MBOX_BTN_OK|MBOX_TEXT_CENTER, NULL);
|
|---|
| 1618 | raw_prepare_develop((char*)filename);
|
|---|
| 1619 | }
|
|---|
| 1620 |
|
|---|
| 1621 | //-------------------------------------------------------------------
|
|---|
| 1622 | void gui_raw_develop(int arg){
|
|---|
| 1623 | int m=mode_get();
|
|---|
| 1624 | gui_fselect_init(LANG_RAW_DEVELOP_SELECT_FILE, "A/DCIM", raw_fselect_cb);
|
|---|
| 1625 | }
|
|---|
| 1626 |
|
|---|
| 1627 | //-------------------------------------------------------------------
|
|---|
| 1628 | #define TASKLIST_MAX_LINES 12 // probably as much as will fit on screen
|
|---|
| 1629 | #define TASKLIST_NUM_TASKS 64 // should be enough ?
|
|---|
| 1630 | static void gui_debug_draw_tasklist(void) {
|
|---|
| 1631 | #ifndef CAM_DRYOS
|
|---|
| 1632 | int tasklist[TASKLIST_NUM_TASKS]; // max number of tasks we will look at
|
|---|
| 1633 | char buf[40]; // a single line of the list
|
|---|
| 1634 | int n_tasks,n_show_tasks,show_start;
|
|---|
| 1635 | const char *name;
|
|---|
| 1636 | int i;
|
|---|
| 1637 | n_tasks = task_id_list_get(tasklist,sizeof(tasklist)/sizeof(tasklist[0]));
|
|---|
| 1638 | show_start = debug_tasklist_start;
|
|---|
| 1639 | n_show_tasks = n_tasks - show_start;
|
|---|
| 1640 | // auto adjust to show the last N tasks
|
|---|
| 1641 | if(n_show_tasks < TASKLIST_MAX_LINES) {
|
|---|
| 1642 | show_start = n_tasks - TASKLIST_MAX_LINES;
|
|---|
| 1643 | if(show_start<0)
|
|---|
| 1644 | show_start = 0;
|
|---|
| 1645 | n_show_tasks = n_tasks - show_start;
|
|---|
| 1646 | }
|
|---|
| 1647 | else if( n_show_tasks > TASKLIST_MAX_LINES ) {
|
|---|
| 1648 | n_show_tasks = TASKLIST_MAX_LINES;
|
|---|
| 1649 | }
|
|---|
| 1650 | sprintf(buf,"%d-%d of %d tasks %c",show_start,show_start+n_show_tasks,n_tasks,debug_display_direction > 0?'+':'-');
|
|---|
| 1651 | draw_string(64,0,buf, conf.osd_color);
|
|---|
| 1652 | for( i = 0; i < n_show_tasks; i++ ) {
|
|---|
| 1653 | // TODO get full task info
|
|---|
| 1654 | name = task_name(tasklist[show_start+i]);
|
|---|
| 1655 | if ( !name || !*name ) {
|
|---|
| 1656 | name = "(unknown)";
|
|---|
| 1657 | }
|
|---|
| 1658 | sprintf(buf,"%10s %8X",name,tasklist[show_start+i]);
|
|---|
| 1659 | draw_string(64,16+16*i,buf, conf.osd_color);
|
|---|
| 1660 | }
|
|---|
| 1661 | #endif //CAM_DRYOS
|
|---|
| 1662 | }
|
|---|
| 1663 |
|
|---|
| 1664 | #define DEBUG_DISPLAY_NONE 0
|
|---|
| 1665 | #define DEBUG_DISPLAY_PROPS 1
|
|---|
| 1666 | #define DEBUG_DISPLAY_PARAMS 2
|
|---|
| 1667 | #define DEBUG_DISPLAY_TASKS 3
|
|---|
| 1668 | static const char * gui_debug_shortcut_enum(int change, int arg) {
|
|---|
| 1669 | static const char* modes[]={ "None", "Dmp RAM", "Page"};
|
|---|
| 1670 |
|
|---|
| 1671 | conf.debug_shortcut_action += change;
|
|---|
| 1672 | if (conf.debug_shortcut_action < 0)
|
|---|
| 1673 | conf.debug_shortcut_action = sizeof(modes)/sizeof(modes[0])-1;
|
|---|
| 1674 | else if (conf.debug_shortcut_action >= (sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1675 | conf.debug_shortcut_action = 0;
|
|---|
| 1676 |
|
|---|
| 1677 | return modes[conf.debug_shortcut_action];
|
|---|
| 1678 | }
|
|---|
| 1679 |
|
|---|
| 1680 | static const char * gui_debug_display_enum(int change, int arg) {
|
|---|
| 1681 | static const char* modes[]={ "None", "Props", "Params", "Tasks"};
|
|---|
| 1682 |
|
|---|
| 1683 | conf.debug_display += change;
|
|---|
| 1684 | if (conf.debug_display < 0)
|
|---|
| 1685 | conf.debug_display=sizeof(modes)/sizeof(modes[0])-1;
|
|---|
| 1686 | else if (conf.debug_display >= (sizeof(modes)/sizeof(modes[0])))
|
|---|
| 1687 | conf.debug_display = 0;
|
|---|
| 1688 |
|
|---|
| 1689 | return modes[conf.debug_display];
|
|---|
| 1690 | }
|
|---|
| 1691 |
|
|---|
| 1692 | static void gui_debug_shortcut(void) {
|
|---|
| 1693 | static int lastcall = -1;
|
|---|
| 1694 | int t=get_tick_count();
|
|---|
| 1695 | if ( lastcall != -1) {
|
|---|
| 1696 | if (t-lastcall <= 400)
|
|---|
| 1697 | debug_display_direction = -debug_display_direction;
|
|---|
| 1698 | }
|
|---|
| 1699 | lastcall=t;
|
|---|
| 1700 | switch(conf.debug_shortcut_action) {
|
|---|
| 1701 | case 1:
|
|---|
| 1702 | dump_memory();
|
|---|
| 1703 | break;
|
|---|
| 1704 | case 2:
|
|---|
| 1705 | if(conf.debug_display == DEBUG_DISPLAY_TASKS) {
|
|---|
| 1706 | debug_tasklist_start += debug_display_direction*(TASKLIST_MAX_LINES-2); // a little intentional overlap
|
|---|
| 1707 | if(debug_tasklist_start >= TASKLIST_NUM_TASKS || debug_tasklist_start < 0)
|
|---|
| 1708 | debug_tasklist_start = 0;
|
|---|
| 1709 | }
|
|---|
| 1710 | else if (conf.debug_display == DEBUG_DISPLAY_PROPS || conf.debug_display == DEBUG_DISPLAY_PARAMS) {
|
|---|
| 1711 | debug_propcase_page += debug_display_direction*1;
|
|---|
| 1712 | if(debug_propcase_page > 128 || debug_propcase_page < 0)
|
|---|
| 1713 | debug_propcase_page = 0;
|
|---|
| 1714 | }
|
|---|
| 1715 | break;
|
|---|
| 1716 | }
|
|---|
| 1717 | }
|
|---|
| 1718 |
|
|---|
| 1719 | //-------------------------------------------------------------------
|
|---|
| 1720 |
|
|---|
| 1721 | #if CAM_MULTIPART
|
|---|
| 1722 | void card_break_proc(unsigned int btn){
|
|---|
| 1723 | if (btn==MBOX_BTN_YES) create_partitions();
|
|---|
| 1724 | }
|
|---|
| 1725 |
|
|---|
| 1726 |
|
|---|
| 1727 | static void gui_menuproc_break_card(int arg){
|
|---|
| 1728 | gui_mbox_init(LANG_WARNING, LANG_PARTITIONS_CREATE_WARNING, MBOX_BTN_YES_NO|MBOX_DEF_BTN2|MBOX_TEXT_CENTER, card_break_proc);
|
|---|
| 1729 | }
|
|---|
| 1730 |
|
|---|
| 1731 |
|
|---|
| 1732 | static void gui_menuproc_swap_patitons(int arg){
|
|---|
| 1733 | if (get_part_count()<2) gui_mbox_init(LANG_ERROR, LANG_ONLY_ONE_PARTITION, MBOX_BTN_OK|MBOX_TEXT_CENTER, NULL);
|
|---|
| 1734 | else swap_partitions();
|
|---|
| 1735 | }
|
|---|
| 1736 | #endif
|
|---|
| 1737 |
|
|---|
| 1738 | //-------------------------------------------------------------------
|
|---|
| 1739 | static volatile enum Gui_Mode gui_mode;
|
|---|
| 1740 | static volatile int gui_restore;
|
|---|
| 1741 | static volatile int gui_in_redraw;
|
|---|
| 1742 | static int gui_splash, gui_splash_mode;
|
|---|
| 1743 | static char osd_buf[32];
|
|---|
| 1744 | #ifdef OPTIONS_AUTOSAVE
|
|---|
| 1745 | static Conf old_conf;
|
|---|
| 1746 | #endif
|
|---|
| 1747 |
|
|---|
| 1748 | //-------------------------------------------------------------------
|
|---|
| 1749 | void gui_init()
|
|---|
| 1750 | {
|
|---|
| 1751 |
|
|---|
| 1752 | gui_mode = GUI_MODE_NONE;
|
|---|
| 1753 | gui_restore = 0;
|
|---|
| 1754 | gui_in_redraw = 0;
|
|---|
| 1755 | if (conf.start_sound>0)
|
|---|
| 1756 | {
|
|---|
| 1757 | play_sound(4);
|
|---|
| 1758 | }
|
|---|
| 1759 | gui_splash = (conf.splash_show)?SPLASH_TIME:0;
|
|---|
| 1760 | user_menu_restore();
|
|---|
| 1761 | gui_lang_init();
|
|---|
| 1762 | draw_init();
|
|---|
| 1763 |
|
|---|
| 1764 | exposition_thresh = screen_size/500;
|
|---|
| 1765 | voltage_step = (conf.batt_step_25)?25:1;
|
|---|
| 1766 | load_bad_pixels_list("A/CHDK/badpixel");
|
|---|
| 1767 | load_bad_pixels_list("A/CHDK/badpixel.txt");
|
|---|
| 1768 | curve_load(conf.curve_file); // load curve upon init
|
|---|
| 1769 | drcurve_load("A/CHDK/SYSCURVES.CVF"); // load system L curves
|
|---|
| 1770 | }
|
|---|
| 1771 |
|
|---|
| 1772 | //-------------------------------------------------------------------
|
|---|
| 1773 | static void gui_load_curve_selected(const char *fn) {
|
|---|
| 1774 | if (fn)
|
|---|
| 1775 | curve_load(fn);
|
|---|
| 1776 | }
|
|---|
| 1777 |
|
|---|
| 1778 | //-------------------------------------------------------------------
|
|---|
| 1779 | void gui_load_curve(int arg) {
|
|---|
| 1780 | DIR *d;
|
|---|
| 1781 | char *path = CURVE_DIR;
|
|---|
| 1782 |
|
|---|
| 1783 | // if exists CURVE_DIR go into
|
|---|
| 1784 | d=opendir(path);
|
|---|
| 1785 | if (d) {
|
|---|
| 1786 | closedir(d);
|
|---|
| 1787 | } else {
|
|---|
| 1788 | path="A";
|
|---|
| 1789 | }
|
|---|
| 1790 |
|
|---|
| 1791 | gui_fselect_init(LANG_STR_SELECT_CURVE_FILE, path, gui_load_curve_selected);
|
|---|
| 1792 | }
|
|---|
| 1793 |
|
|---|
| 1794 | //-------------------------------------------------------------------
|
|---|
| 1795 | enum Gui_Mode gui_get_mode() {
|
|---|
| 1796 | return gui_mode;
|
|---|
| 1797 | }
|
|---|
| 1798 |
|
|---|
| 1799 | //-------------------------------------------------------------------
|
|---|
| 1800 | void gui_set_mode(enum Gui_Mode mode) {
|
|---|
| 1801 | gui_mode = mode;
|
|---|
| 1802 | }
|
|---|
| 1803 |
|
|---|
| 1804 | //-------------------------------------------------------------------
|
|---|
| 1805 | void gui_force_restore() {
|
|---|
| 1806 | gui_restore = gui_in_redraw;
|
|---|
| 1807 | }
|
|---|
| 1808 |
|
|---|
| 1809 | //-------------------------------------------------------------------
|
|---|
| 1810 | void gui_redraw()
|
|---|
| 1811 | {
|
|---|
| 1812 | enum Gui_Mode gui_mode_old;
|
|---|
| 1813 | static int show_script_console=0;
|
|---|
| 1814 | if (gui_splash) {
|
|---|
| 1815 | if (gui_splash>(SPLASH_TIME-4)) {
|
|---|
| 1816 | gui_draw_splash();
|
|---|
| 1817 | conf.show_osd = 0;
|
|---|
| 1818 | } else if (gui_splash==1 && (mode_get()&MODE_MASK) == gui_splash_mode && (gui_mode==GUI_MODE_NONE || gui_mode==GUI_MODE_ALT)) {
|
|---|
| 1819 | draw_restore();
|
|---|
| 1820 | conf.show_osd = 1;
|
|---|
| 1821 | }
|
|---|
| 1822 | --gui_splash;
|
|---|
| 1823 | }
|
|---|
| 1824 |
|
|---|
| 1825 | gui_in_redraw = 1;
|
|---|
| 1826 | gui_mode_old = gui_mode;
|
|---|
| 1827 |
|
|---|
| 1828 | switch (gui_mode) {
|
|---|
| 1829 | case GUI_MODE_MENU:
|
|---|
| 1830 | gui_menu_draw();
|
|---|
| 1831 | // draw_txt_string(20, 14, "<CNF>", MAKE_COLOR(COLOR_ALT_BG, COLOR_FG));
|
|---|
| 1832 | break;
|
|---|
| 1833 | case GUI_MODE_ALT:
|
|---|
| 1834 | gui_draw_osd();
|
|---|
| 1835 | draw_txt_string(20, 14, "<ALT>", MAKE_COLOR(COLOR_ALT_BG, COLOR_FG));
|
|---|
| 1836 | if ((mode_get()&MODE_MASK) == MODE_REC) {
|
|---|
| 1837 | draw_txt_string(0, 14, script_title, MAKE_COLOR(COLOR_ALT_BG, COLOR_FG));
|
|---|
| 1838 | if (state_kbd_script_run) show_script_console=5;
|
|---|
| 1839 | if (show_script_console) {
|
|---|
| 1840 | --show_script_console;
|
|---|
| 1841 | md_draw_grid();
|
|---|
| 1842 | script_console_draw();
|
|---|
| 1843 | }
|
|---|
| 1844 | }
|
|---|
| 1845 | break;
|
|---|
| 1846 | case GUI_MODE_NONE:
|
|---|
| 1847 | gui_draw_osd();
|
|---|
| 1848 | break;
|
|---|
| 1849 | case GUI_MODE_PALETTE:
|
|---|
| 1850 | gui_palette_draw();
|
|---|
| 1851 | break;
|
|---|
| 1852 | case GUI_MODE_MBOX:
|
|---|
| 1853 | gui_mbox_draw();
|
|---|
| 1854 | break;
|
|---|
| 1855 | case GUI_MODE_REVERSI:
|
|---|
| 1856 | gui_reversi_draw();
|
|---|
| 1857 | break;
|
|---|
| 1858 | case GUI_MODE_SOKOBAN:
|
|---|
| 1859 | gui_sokoban_draw();
|
|---|
| 1860 | break;
|
|---|
| 1861 | case GUI_MODE_DEBUG:
|
|---|
| 1862 | gui_debug_draw();
|
|---|
| 1863 | break;
|
|---|
| 1864 | case GUI_MODE_FSELECT:
|
|---|
| 1865 | gui_fselect_draw();
|
|---|
| 1866 | break;
|
|---|
| 1867 | case GUI_MODE_READ:
|
|---|
| 1868 | gui_read_draw();
|
|---|
| 1869 | break;
|
|---|
| 1870 | case GUI_MODE_OSD:
|
|---|
| 1871 | gui_osd_draw();
|
|---|
| 1872 | // draw_txt_string(20, 14, "<OSD>", MAKE_COLOR(COLOR_ALT_BG, COLOR_FG));
|
|---|
| 1873 | break;
|
|---|
| 1874 | case GUI_MODE_CALENDAR:
|
|---|
| 1875 | gui_calendar_draw();
|
|---|
| 1876 | break;
|
|---|
| 1877 | case GUI_MODE_BENCH:
|
|---|
| 1878 | gui_bench_draw();
|
|---|
| 1879 | break;
|
|---|
| 1880 | case GUI_MODE_MPOPUP:
|
|---|
| 1881 | gui_mpopup_draw();
|
|---|
| 1882 | break;
|
|---|
| 1883 | default:
|
|---|
| 1884 | break;
|
|---|
| 1885 | }
|
|---|
| 1886 |
|
|---|
| 1887 | gui_in_redraw = 0;
|
|---|
| 1888 | 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) {
|
|---|
| 1889 | gui_restore = 0;
|
|---|
| 1890 | if (gui_mode != GUI_MODE_REVERSI && gui_mode != GUI_MODE_SOKOBAN)
|
|---|
| 1891 | draw_restore();
|
|---|
| 1892 | }
|
|---|
| 1893 | }
|
|---|
| 1894 |
|
|---|
| 1895 | #ifdef OPTIONS_AUTOSAVE
|
|---|
| 1896 | //-------------------------------------------------------------------
|
|---|
| 1897 | static inline void conf_store_old_settings() {
|
|---|
| 1898 | old_conf=conf;
|
|---|
| 1899 | }
|
|---|
| 1900 |
|
|---|
| 1901 | //-------------------------------------------------------------------
|
|---|
| 1902 | static inline int conf_save_new_settings_if_changed() {
|
|---|
| 1903 | if (memcmp(&old_conf, &conf, sizeof(Conf)) != 0) {
|
|---|
| 1904 | user_menu_save();
|
|---|
| 1905 | conf_save();
|
|---|
| 1906 | conf_store_old_settings();
|
|---|
| 1907 | return 1;
|
|---|
| 1908 | }
|
|---|
| 1909 | return 0;
|
|---|
| 1910 | }
|
|---|
| 1911 | #endif
|
|---|
| 1912 |
|
|---|
| 1913 |
|
|---|
| 1914 | //-------------------------------------------------------------------
|
|---|
| 1915 | void gui_kbd_process()
|
|---|
| 1916 | {
|
|---|
| 1917 | int clicked_key;
|
|---|
| 1918 |
|
|---|
| 1919 | if (kbd_is_key_clicked(KEY_MENU)){
|
|---|
| 1920 | switch (gui_mode) {
|
|---|
| 1921 | case GUI_MODE_ALT:
|
|---|
| 1922 | if (conf.user_menu_as_root && (conf.user_menu_enable != 0)) {
|
|---|
| 1923 | if (kbd_is_key_pressed(KEY_SHOOT_HALF))
|
|---|
| 1924 | gui_menu_init(&root_menu);
|
|---|
| 1925 | else
|
|---|
| 1926 | gui_menu_init(&user_submenu);
|
|---|
| 1927 | }
|
|---|
| 1928 | else {
|
|---|
| 1929 | if ((conf.user_menu_enable != 0) && kbd_is_key_pressed(KEY_SHOOT_HALF))
|
|---|
| 1930 | gui_menu_init(&user_submenu);
|
|---|
| 1931 | else
|
|---|
| 1932 | gui_menu_init(&root_menu);
|
|---|
| 1933 | }
|
|---|
| 1934 | gui_mode = GUI_MODE_MENU;
|
|---|
| 1935 | draw_restore();
|
|---|
| 1936 | break;
|
|---|
| 1937 | case GUI_MODE_MENU:
|
|---|
| 1938 | #ifdef OPTIONS_AUTOSAVE
|
|---|
| 1939 | conf_save_new_settings_if_changed();
|
|---|
| 1940 | #endif
|
|---|
| 1941 | if (gui_user_menu_flag) {
|
|---|
| 1942 | gui_mode = GUI_MODE_MENU;
|
|---|
| 1943 | gui_user_menu_flag = 0;
|
|---|
| 1944 | gui_menu_init(&root_menu);
|
|---|
| 1945 | }
|
|---|
| 1946 | else
|
|---|
| 1947 | gui_mode = GUI_MODE_ALT;
|
|---|
| 1948 | draw_restore();
|
|---|
| 1949 | break;
|
|---|
| 1950 | case GUI_MODE_PALETTE:
|
|---|
| 1951 | case GUI_MODE_REVERSI:
|
|---|
| 1952 | case GUI_MODE_SOKOBAN:
|
|---|
| 1953 | case GUI_MODE_DEBUG:
|
|---|
| 1954 | case GUI_MODE_OSD:
|
|---|
| 1955 | case GUI_MODE_CALENDAR:
|
|---|
| 1956 | case GUI_MODE_BENCH:
|
|---|
| 1957 | draw_restore();
|
|---|
| 1958 | gui_mode = GUI_MODE_MENU;
|
|---|
| 1959 | break;
|
|---|
| 1960 | case GUI_MODE_FSELECT:
|
|---|
| 1961 | gui_fselect_kbd_process();
|
|---|
| 1962 | break;
|
|---|
| 1963 | case GUI_MODE_READ:
|
|---|
| 1964 | gui_read_kbd_process();
|
|---|
| 1965 | draw_restore();
|
|---|
| 1966 | gui_mode = GUI_MODE_MENU;
|
|---|
| 1967 | break;
|
|---|
| 1968 | default:
|
|---|
| 1969 | break;
|
|---|
| 1970 | }
|
|---|
| 1971 | return;
|
|---|
| 1972 | }
|
|---|
| 1973 |
|
|---|
| 1974 | switch (gui_mode) {
|
|---|
| 1975 | case GUI_MODE_ALT:
|
|---|
| 1976 | if (kbd_is_key_clicked(SHORTCUT_TOGGLE_RAW)) {
|
|---|
| 1977 | if (conf.debug_shortcut_action > 0) gui_debug_shortcut();
|
|---|
| 1978 | #if !CAM_HAS_ERASE_BUTTON && CAM_CAN_SD_OVERRIDE
|
|---|
| 1979 | else if (!shooting_get_common_focus_mode())
|
|---|
| 1980 | #else
|
|---|
| 1981 | else
|
|---|
| 1982 | #endif
|
|---|
| 1983 | {conf.save_raw = !conf.save_raw;
|
|---|
| 1984 | draw_restore();
|
|---|
| 1985 | }
|
|---|
| 1986 | #if !CAM_HAS_ERASE_BUTTON && CAM_CAN_SD_OVERRIDE
|
|---|
| 1987 | else {
|
|---|
| 1988 | #if CAM_HAS_ZOOM_LEVER
|
|---|
| 1989 | conf.subj_dist_override_value=MAX_DIST;
|
|---|
| 1990 | shooting_set_focus(shooting_get_subject_distance_override_value(), SET_NOW);
|
|---|
| 1991 | #else
|
|---|
| 1992 | if (conf.subj_dist_override_koef==4)
|
|---|
| 1993 | gui_subj_dist_override_koef_enum(-3,0);
|
|---|
| 1994 | else
|
|---|
| 1995 | gui_subj_dist_override_koef_enum(1,0);
|
|---|
| 1996 | #endif
|
|---|
| 1997 | }
|
|---|
| 1998 | #endif
|
|---|
| 1999 | } else if (kbd_is_key_clicked(KEY_SET)) {
|
|---|
| 2000 | gui_menu_init(&script_submenu);
|
|---|
| 2001 | gui_mode = GUI_MODE_MENU;
|
|---|
| 2002 | draw_restore();
|
|---|
| 2003 | } else {
|
|---|
| 2004 | #if !CAM_HAS_MANUAL_FOCUS && CAM_CAN_SD_OVERRIDE
|
|---|
| 2005 | if (kbd_is_key_clicked(SHORTCUT_MF_TOGGLE)) {
|
|---|
| 2006 | if (conf.subj_dist_override_koef>0)
|
|---|
| 2007 | conf.subj_dist_override_koef=0;
|
|---|
| 2008 | else conf.subj_dist_override_koef=1;
|
|---|
| 2009 | draw_restore();
|
|---|
| 2010 | }
|
|---|
| 2011 | else if (shooting_get_common_focus_mode())
|
|---|
| 2012 | #elif CAM_CAN_SD_OVERRIDE
|
|---|
| 2013 | if (shooting_get_common_focus_mode())
|
|---|
| 2014 | #endif
|
|---|
| 2015 |
|
|---|
| 2016 | #if CAM_CAN_SD_OVERRIDE
|
|---|
| 2017 | {
|
|---|
| 2018 | #if CAM_HAS_ZOOM_LEVER
|
|---|
| 2019 | if (kbd_is_key_clicked(KEY_RIGHT)) {
|
|---|
| 2020 | gui_subj_dist_override_koef_enum(1,0);
|
|---|
| 2021 | #if !CAM_HAS_MANUAL_FOCUS
|
|---|
| 2022 | if (conf.subj_dist_override_koef==0) conf.subj_dist_override_koef=1;
|
|---|
| 2023 | #endif
|
|---|
| 2024 | shooting_set_focus(shooting_get_subject_distance_override_value(), SET_NOW);
|
|---|
| 2025 | }
|
|---|
| 2026 | else if (kbd_is_key_clicked(KEY_LEFT))
|
|---|
| 2027 | {
|
|---|
| 2028 | gui_subj_dist_override_koef_enum(-1,0);
|
|---|
| 2029 | #if !CAM_HAS_MANUAL_FOCUS
|
|---|
| 2030 | if (conf.subj_dist_override_koef==0) conf.subj_dist_override_koef=1;
|
|---|
| 2031 | #endif
|
|---|
| 2032 | shooting_set_focus(shooting_get_subject_distance_override_value(), SET_NOW);
|
|---|
| 2033 | }
|
|---|
| 2034 | else if (kbd_is_key_clicked(SHORTCUT_SET_INFINITY))
|
|---|
| 2035 | {
|
|---|
| 2036 | conf.subj_dist_override_value=MAX_DIST;
|
|---|
| 2037 | shooting_set_focus(shooting_get_subject_distance_override_value(), SET_NOW);
|
|---|
| 2038 | }
|
|---|
| 2039 | else
|
|---|
| 2040 | #endif
|
|---|
| 2041 | if (kbd_is_key_clicked(SHORTCUT_SET_HYPERFOCAL))
|
|---|
| 2042 | {
|
|---|
| 2043 | int m=mode_get()&MODE_SHOOTING_MASK;
|
|---|
| 2044 | if ((m==MODE_M) || (m==MODE_AV))
|
|---|
| 2045 | 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()));
|
|---|
| 2046 | else conf.subj_dist_override_value=(int)shooting_get_hyperfocal_distance();
|
|---|
| 2047 | shooting_set_focus(shooting_get_subject_distance_override_value(), SET_NOW);
|
|---|
| 2048 | }
|
|---|
| 2049 | else
|
|---|
| 2050 | switch (kbd_get_autoclicked_key()) {
|
|---|
| 2051 | #if CAM_HAS_ZOOM_LEVER
|
|---|
| 2052 | case KEY_ZOOM_IN:
|
|---|
| 2053 | #else
|
|---|
| 2054 | case KEY_RIGHT:
|
|---|
| 2055 | #endif
|
|---|
| 2056 | gui_subj_dist_override_value_enum(1,0);
|
|---|
| 2057 | shooting_set_focus(shooting_get_subject_distance_override_value(),SET_NOW);
|
|---|
| 2058 | break;
|
|---|
| 2059 | #if CAM_HAS_ZOOM_LEVER
|
|---|
| 2060 | case KEY_ZOOM_OUT:
|
|---|
| 2061 | #else
|
|---|
| 2062 | case KEY_LEFT:
|
|---|
| 2063 | #endif
|
|---|
| 2064 | gui_subj_dist_override_value_enum(-1,0);
|
|---|
| 2065 | shooting_set_focus(shooting_get_subject_distance_override_value(), SET_NOW);
|
|---|
| 2066 | break;
|
|---|
| 2067 | }
|
|---|
| 2068 | }
|
|---|
| 2069 | #endif
|
|---|
| 2070 | }
|
|---|
| 2071 | break;
|
|---|
| 2072 | case GUI_MODE_MENU:
|
|---|
| 2073 | gui_menu_kbd_process();
|
|---|
| 2074 | break;
|
|---|
| 2075 | case GUI_MODE_PALETTE:
|
|---|
| 2076 | gui_palette_kbd_process();
|
|---|
| 2077 | break;
|
|---|
| 2078 | case GUI_MODE_MBOX:
|
|---|
| 2079 | gui_mbox_kbd_process();
|
|---|
| 2080 | break;
|
|---|
| 2081 | case GUI_MODE_REVERSI:
|
|---|
| 2082 | gui_reversi_kbd_process();
|
|---|
| 2083 | break;
|
|---|
| 2084 | case GUI_MODE_SOKOBAN:
|
|---|
| 2085 | gui_sokoban_kbd_process();
|
|---|
| 2086 | break;
|
|---|
| 2087 | case GUI_MODE_DEBUG:
|
|---|
| 2088 | gui_debug_kbd_process();
|
|---|
| 2089 | break;
|
|---|
| 2090 | case GUI_MODE_FSELECT:
|
|---|
| 2091 | gui_fselect_kbd_process();
|
|---|
| 2092 | break;
|
|---|
| 2093 | case GUI_MODE_READ:
|
|---|
| 2094 | gui_read_kbd_process();
|
|---|
| 2095 | break;
|
|---|
| 2096 | case GUI_MODE_OSD:
|
|---|
| 2097 | gui_osd_kbd_process();
|
|---|
| 2098 | break;
|
|---|
| 2099 | case GUI_MODE_CALENDAR:
|
|---|
| 2100 | gui_calendar_kbd_process();
|
|---|
| 2101 | break;
|
|---|
| 2102 | case GUI_MODE_BENCH:
|
|---|
| 2103 | gui_bench_kbd_process();
|
|---|
| 2104 | break;
|
|---|
| 2105 | case GUI_MODE_MPOPUP:
|
|---|
| 2106 | gui_mpopup_kbd_process();
|
|---|
| 2107 | break;
|
|---|
| 2108 | default:
|
|---|
| 2109 | break;
|
|---|
| 2110 | }
|
|---|
| 2111 | }
|
|---|
| 2112 |
|
|---|
| 2113 | //-------------------------------------------------------------------
|
|---|
| 2114 | void gui_kbd_enter()
|
|---|
| 2115 | {
|
|---|
| 2116 | // XXX set custom palette
|
|---|
| 2117 | #ifdef OPTIONS_AUTOSAVE
|
|---|
| 2118 | conf_store_old_settings();
|
|---|
| 2119 | #endif
|
|---|
| 2120 | if ((conf.alt_prevent_shutdown == ALT_PREVENT_SHUTDOWN_ALT && !state_kbd_script_run)
|
|---|
| 2121 | || conf.alt_prevent_shutdown == ALT_PREVENT_SHUTDOWN_ALT_SCRIPT) {
|
|---|
| 2122 | disable_shutdown();
|
|---|
| 2123 | }
|
|---|
| 2124 | gui_mode = GUI_MODE_ALT;
|
|---|
| 2125 |
|
|---|
| 2126 | gui_user_menu_flag = 0;
|
|---|
| 2127 | if (conf.user_menu_enable == 2) {
|
|---|
| 2128 | gui_menu_init(&user_submenu);
|
|---|
| 2129 | gui_mode = GUI_MODE_MENU;
|
|---|
| 2130 | draw_restore();
|
|---|
| 2131 | gui_user_menu_flag = 1;
|
|---|
| 2132 | }
|
|---|
| 2133 |
|
|---|
| 2134 | }
|
|---|
| 2135 |
|
|---|
| 2136 | //-------------------------------------------------------------------
|
|---|
| 2137 | void gui_kbd_leave()
|
|---|
| 2138 | {
|
|---|
| 2139 | // XXX restore palette
|
|---|
| 2140 | #ifdef OPTIONS_AUTOSAVE
|
|---|
| 2141 | conf_save_new_settings_if_changed();
|
|---|
| 2142 | #endif
|
|---|
| 2143 | ubasic_error = 0;
|
|---|
| 2144 | draw_restore();
|
|---|
| 2145 | if (gui_mode == GUI_MODE_READ && !rbf_load(conf.menu_rbf_file))
|
|---|
| 2146 | rbf_load_from_8x16(current_font);
|
|---|
| 2147 | rbf_set_codepage(FONT_CP_WIN);
|
|---|
| 2148 | enable_shutdown();
|
|---|
| 2149 | gui_mode = GUI_MODE_NONE;
|
|---|
| 2150 | }
|
|---|
| 2151 | //-------------------------------------------------------------------
|
|---|
| 2152 |
|
|---|
| 2153 | void other_kbd_process(){
|
|---|
| 2154 | int key;
|
|---|
| 2155 | #if CAM_AF_SCAN_DURING_VIDEO_RECORD
|
|---|
| 2156 |
|
|---|
| 2157 | if (movie_status==VIDEO_RECORD_IN_PROGRESS) {
|
|---|
| 2158 | if (kbd_is_key_clicked(conf.video_af_key)) MakeAFScan();
|
|---|
| 2159 | }
|
|---|
| 2160 |
|
|---|
| 2161 | #endif
|
|---|
| 2162 |
|
|---|
| 2163 | #if CAM_CAN_UNLOCK_OPTICAL_ZOOM_IN_VIDEO
|
|---|
| 2164 | // return from digital to optical zoom in video
|
|---|
| 2165 | #if CAM_HAS_ZOOM_LEVER
|
|---|
| 2166 | key=KEY_ZOOM_OUT;
|
|---|
| 2167 | #else
|
|---|
| 2168 | key=KEY_DOWN;
|
|---|
| 2169 | #endif
|
|---|
| 2170 | if (conf.unlock_optical_zoom_for_video && (movie_status==VIDEO_RECORD_IN_PROGRESS) && kbd_is_key_clicked(key)){
|
|---|
| 2171 | short x;
|
|---|
| 2172 | get_property_case(PROPCASE_DIGITAL_ZOOM_STATE, &x, sizeof(x));
|
|---|
| 2173 | if (x) {
|
|---|
| 2174 | get_property_case(PROPCASE_DIGITAL_ZOOM_POSITION, &x, sizeof(x));
|
|---|
| 2175 | if (x==0) zoom_status=ZOOM_OPTICAL_MEDIUM;
|
|---|
| 2176 | }
|
|---|
| 2177 | }
|
|---|
| 2178 | #endif
|
|---|
| 2179 |
|
|---|
| 2180 | #if CAM_EV_IN_VIDEO |
|---|
| 2181 | if ((movie_status==VIDEO_RECORD_IN_PROGRESS) && !kbd_is_key_pressed(KEY_SHOOT_HALF)){ |
|---|
| 2182 | #if CAM_HAS_ERASE_BUTTON |
|---|
| 2183 | if (kbd_is_key_clicked(KEY_ERASE)){ |
|---|
| 2184 | #else |
|---|
| 2185 | if (kbd_is_key_clicked(KEY_DISPLAY)){ |
|---|
| 2186 | #endif |
|---|
| 2187 | set_ev_video_avail(!get_ev_video_avail()); |
|---|
| 2188 | } |
|---|
| 2189 | if (get_ev_video_avail()) { |
|---|
| 2190 | if (kbd_is_key_clicked(KEY_LEFT)) { |
|---|
| 2191 | set_ev_video(get_ev_video()-1); |
|---|
| 2192 | } |
|---|
| 2193 | if (kbd_is_key_clicked(KEY_RIGHT)){ |
|---|
| 2194 | set_ev_video(get_ev_video()+1); |
|---|
| 2195 | } |
|---|
| 2196 | } |
|---|
| 2197 | } |
|---|
| 2198 | #endif |
|---|
| 2199 | } |
|---|
| 2200 |
|
|---|
| 2201 | //-------------------------------------------------------------------
|
|---|
| 2202 | extern long physw_status[3];
|
|---|
| 2203 | extern long GetPropertyCase(long opt_id, void *buf, long bufsize);
|
|---|
| 2204 | //extern int xxxx, eeee;
|
|---|
| 2205 | //-------------------------------------------------------------------
|
|---|
| 2206 | void gui_draw_osd() {
|
|---|
| 2207 | unsigned int m, n = 0, mode_photo, mode_video;
|
|---|
| 2208 | coord x;
|
|---|
| 2209 | #if CAM_SWIVEL_SCREEN
|
|---|
| 2210 | static int flashlight = 0;
|
|---|
| 2211 | #endif
|
|---|
| 2212 | static int zebra = 0, zebra_init = 0, pressed = 0;
|
|---|
| 2213 | static int half_disp_press_old=0;
|
|---|
| 2214 | int half_disp_press;
|
|---|
| 2215 |
|
|---|
| 2216 | m = mode_get();
|
|---|
| 2217 |
|
|---|
| 2218 | #if CAM_SWIVEL_SCREEN
|
|---|
| 2219 | if (conf.flashlight && (m&MODE_SCREEN_OPENED) && (m&MODE_SCREEN_ROTATED) && (gui_mode==GUI_MODE_NONE /* || gui_mode==GUI_MODE_ALT */)) {
|
|---|
| 2220 | draw_filled_rect(0, 0, screen_width-1, screen_height-1, MAKE_COLOR(COLOR_WHITE, COLOR_WHITE));
|
|---|
| 2221 | flashlight = 1;
|
|---|
| 2222 | }
|
|---|
| 2223 | if (flashlight) {
|
|---|
| 2224 | if ((!((m&MODE_SCREEN_OPENED) && (m&MODE_SCREEN_ROTATED))) || (gui_mode!=GUI_MODE_NONE /* && gui_mode!=GUI_MODE_ALT */)) {
|
|---|
| 2225 | flashlight = 0;
|
|---|
| 2226 | draw_restore();
|
|---|
| 2227 | }
|
|---|
| 2228 | return;
|
|---|
| 2229 | }
|
|---|
| 2230 | #endif
|
|---|
| 2231 |
|
|---|
| 2232 | if (kbd_is_key_pressed(KEY_SHOOT_HALF)) {
|
|---|
| 2233 | if (kbd_is_key_pressed(SHORTCUT_TOGGLE_ZEBRA)) {
|
|---|
| 2234 | if (!pressed) {
|
|---|
| 2235 | conf.zebra_draw = !conf.zebra_draw;
|
|---|
| 2236 | if (zebra && !conf.zebra_draw) {
|
|---|
| 2237 | zebra = 0;
|
|---|
| 2238 | draw_restore();
|
|---|
| 2239 | }
|
|---|
| 2240 | pressed = 1;
|
|---|
| 2241 | }
|
|---|
| 2242 | }
|
|---|
| 2243 | else if (kbd_is_key_pressed(SHORTCUT_TOGGLE_HISTO)) {
|
|---|
| 2244 | if (!pressed) {
|
|---|
| 2245 | if (++conf.show_histo>SHOW_HALF) conf.show_histo=0;
|
|---|
| 2246 | if (!conf.show_histo) {
|
|---|
| 2247 | draw_restore();
|
|---|
| 2248 | }
|
|---|
| 2249 | pressed = 1;
|
|---|
| 2250 | }
|
|---|
| 2251 | } else if (kbd_is_key_pressed(SHORTCUT_TOGGLE_OSD)) {
|
|---|
| 2252 | if (!pressed) {
|
|---|
| 2253 | conf.show_osd = !conf.show_osd;
|
|---|
| 2254 | if (!conf.show_osd) {
|
|---|
| 2255 | draw_restore();
|
|---|
| 2256 | }
|
|---|
| 2257 | pressed = 1;
|
|---|
| 2258 | }
|
|---|
| 2259 | } else if (kbd_is_key_pressed(SHORTCUT_DISABLE_OVERRIDES)) {
|
|---|
| 2260 | if (!pressed) {
|
|---|
| 2261 | if (conf.override_disable < 2) conf.override_disable = !conf.override_disable;
|
|---|
| 2262 | if (!conf.show_osd) {
|
|---|
| 2263 | draw_restore();
|
|---|
| 2264 | }
|
|---|
| 2265 | pressed = 1;
|
|---|
| 2266 | }
|
|---|
| 2267 | } else {
|
|---|
| 2268 | pressed = 0;
|
|---|
| 2269 | }
|
|---|
| 2270 | } else {
|
|---|
| 2271 | pressed = 0;
|
|---|
| 2272 | }
|
|---|
| 2273 |
|
|---|
| 2274 | // TODO some of the ifs below should probably use this
|
|---|
| 2275 | mode_video = MODE_IS_VIDEO(m);
|
|---|
| 2276 |
|
|---|
| 2277 | mode_photo = (m&MODE_MASK) == MODE_PLAY ||
|
|---|
| 2278 | !( mode_video ||
|
|---|
| 2279 | (m&MODE_SHOOTING_MASK)==MODE_STITCH);
|
|---|
| 2280 |
|
|---|
| 2281 | half_disp_press=mode_photo && kbd_is_key_pressed(KEY_SHOOT_HALF) && kbd_is_key_pressed(KEY_DISPLAY);
|
|---|
| 2282 | if (half_disp_press && ! half_disp_press_old) draw_restore();
|
|---|
| 2283 | half_disp_press_old=half_disp_press;
|
|---|
| 2284 | if (half_disp_press) return;
|
|---|
| 2285 |
|
|---|
| 2286 | if (conf.zebra_draw && gui_mode==GUI_MODE_NONE && kbd_is_key_pressed(KEY_SHOOT_HALF) && mode_photo) {
|
|---|
| 2287 | if (!zebra_init) {
|
|---|
| 2288 | zebra_init = 1;
|
|---|
| 2289 | gui_osd_zebra_init();
|
|---|
| 2290 | }
|
|---|
| 2291 | zebra = gui_osd_draw_zebra();
|
|---|
| 2292 | }
|
|---|
| 2293 | if (zebra_init && !kbd_is_key_pressed(KEY_SHOOT_HALF)) {
|
|---|
| 2294 | zebra_init = 0;
|
|---|
| 2295 | }
|
|---|
| 2296 | if (zebra) {
|
|---|
| 2297 | if (!kbd_is_key_pressed(KEY_SHOOT_HALF)) {
|
|---|
| 2298 | zebra = 0;
|
|---|
| 2299 | draw_restore();
|
|---|
| 2300 | }
|
|---|
| 2301 | return;
|
|---|
| 2302 | }
|
|---|
| 2303 | #if !CAM_SHOW_OSD_IN_SHOOT_MENU
|
|---|
| 2304 | if (!(conf.show_osd && (canon_menu_active==(int)&canon_menu_active-4) && (canon_shoot_menu_active==0))) return;
|
|---|
| 2305 | #else
|
|---|
| 2306 | if (!(conf.show_osd && (canon_menu_active==(int)&canon_menu_active-4) /*&& (canon_shoot_menu_active==0)*/ )) return;
|
|---|
| 2307 | #endif
|
|---|
| 2308 |
|
|---|
| 2309 |
|
|---|
| 2310 | if ((gui_mode==GUI_MODE_NONE || gui_mode==GUI_MODE_ALT) && (
|
|---|
| 2311 | (kbd_is_key_pressed(KEY_SHOOT_HALF) && ((conf.show_histo==SHOW_HALF)/* || (m&MODE_MASK) == MODE_PLAY*/)) ||
|
|---|
| 2312 | ((conf.show_histo==SHOW_ALWAYS) && !((m&MODE_MASK) == MODE_PLAY) && (recreview_hold==0))
|
|---|
| 2313 | ) &&
|
|---|
| 2314 | (mode_photo || (m&MODE_SHOOTING_MASK)==MODE_STITCH)) {
|
|---|
| 2315 | gui_osd_draw_histo();
|
|---|
| 2316 | }
|
|---|
| 2317 |
|
|---|
| 2318 | if ((m&MODE_MASK) == MODE_REC && (recreview_hold==0 || conf.show_osd_in_review) ) {
|
|---|
| 2319 | // m &= MODE_SHOOTING_MASK;
|
|---|
| 2320 | // if (m==MODE_SCN_WATER || m==MODE_SCN_NIGHT || m==MODE_SCN_CHILD || m==MODE_SCN_PARTY || m==MODE_STITCH ||
|
|---|
| 2321 | // m==MODE_SCN_GRASS || m==MODE_SCN_SNOW || m==MODE_SCN_BEACH || m==MODE_SCN_FIREWORK || m==MODE_VIDEO)
|
|---|
| 2322 | // ++n;
|
|---|
| 2323 |
|
|---|
| 2324 | if (conf.show_grid_lines) {
|
|---|
| 2325 | gui_grid_draw_osd(1);
|
|---|
| 2326 | }
|
|---|
| 2327 | 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 || movie_status > 1) && conf.show_values_in_video) )) {
|
|---|
| 2328 |
|
|---|
| 2329 | if (conf.show_dof!=DOF_DONT_SHOW) gui_osd_calc_dof();
|
|---|
| 2330 |
|
|---|
| 2331 | if (conf.show_dof==DOF_SHOW_IN_DOF) gui_osd_draw_dof();
|
|---|
| 2332 |
|
|---|
| 2333 | 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();
|
|---|
| 2334 | }
|
|---|
| 2335 | if (conf.show_state) gui_osd_draw_state();
|
|---|
| 2336 | if (conf.save_raw && conf.show_raw_state && !mode_video && (!kbd_is_key_pressed(KEY_SHOOT_HALF))) gui_osd_draw_raw_info();
|
|---|
| 2337 |
|
|---|
| 2338 | if ((conf.show_values==SHOW_ALWAYS && mode_photo) || ((mode_video || movie_status > 1)&& conf.show_values_in_video) || ((kbd_is_key_pressed(KEY_SHOOT_HALF) || (recreview_hold==1)) && (conf.show_values==SHOW_HALF)))
|
|---|
| 2339 | gui_osd_draw_values(1);
|
|---|
| 2340 | else if (shooting_get_common_focus_mode() && mode_photo && conf.show_values && !(conf.show_dof==DOF_SHOW_IN_DOF) )
|
|---|
| 2341 | gui_osd_draw_values(2);
|
|---|
| 2342 | else if (conf.show_values==SHOW_HALF)
|
|---|
| 2343 | gui_osd_draw_values(0);
|
|---|
| 2344 | }
|
|---|
| 2345 |
|
|---|
| 2346 |
|
|---|
| 2347 | if ((recreview_hold==0) && (!kbd_is_key_pressed(KEY_SHOOT_HALF) && ( ((m&MODE_MASK) == MODE_REC) || (!((m&MODE_MASK) == MODE_REC) && !((conf.hide_osd == 1) || (conf.hide_osd == 3)) )) && !(((conf.hide_osd == 2) || (conf.hide_osd == 3))&& (shooting_get_prop(PROPCASE_DISPLAY_MODE) == 1)))) {
|
|---|
| 2348 | gui_batt_draw_osd();
|
|---|
| 2349 | gui_space_draw_osd();
|
|---|
| 2350 | }
|
|---|
| 2351 |
|
|---|
| 2352 | if ((conf.show_clock) && (recreview_hold==0) && ((!kbd_is_key_pressed(KEY_SHOOT_HALF) && ( ((m&MODE_MASK) == MODE_REC) || (!((m&MODE_MASK) == MODE_REC) && !((conf.hide_osd == 1) || (conf.hide_osd == 3)) )) && !(((conf.hide_osd == 2) || (conf.hide_osd == 3))&& (shooting_get_prop(PROPCASE_DISPLAY_MODE) == 1)))|| (conf.clock_halfpress==0) )) {
|
|---|
| 2353 | gui_osd_draw_clock();
|
|---|
| 2354 | }
|
|---|
| 2355 |
|
|---|
| 2356 | else if ((conf.show_clock) && (recreview_hold==0) && kbd_is_key_pressed(KEY_SHOOT_HALF) && conf.clock_halfpress==1) {
|
|---|
| 2357 | gui_osd_draw_seconds();
|
|---|
| 2358 | }
|
|---|
| 2359 |
|
|---|
| 2360 | if ((conf.show_temp>0) && (recreview_hold==0) && ((!kbd_is_key_pressed(KEY_SHOOT_HALF) && ( ((m&MODE_MASK) == MODE_REC) || (!((m&MODE_MASK) == MODE_REC) && !((conf.hide_osd == 1) || (conf.hide_osd == 3)) )) && !(((conf.hide_osd == 2) || (conf.hide_osd == 3))&& (shooting_get_prop(PROPCASE_DISPLAY_MODE) == 1)) )|| (conf.clock_halfpress==0) )) {
|
|---|
| 2361 | gui_osd_draw_temp();
|
|---|
| 2362 | }
|
|---|
| 2363 | if (conf.show_movie_time > 0 && (mode_video || movie_status > 1))
|
|---|
| 2364 | {
|
|---|
| 2365 | gui_osd_draw_movie_time_left();
|
|---|
| 2366 | }
|
|---|
| 2367 |
|
|---|
| 2368 | if ((conf.fast_ev) && (recreview_hold==0) && ((mode_get()&MODE_SHOOTING_MASK) != MODE_VIDEO_STD) && ((!kbd_is_key_pressed(KEY_SHOOT_HALF) && ( ((m&MODE_MASK) == MODE_REC) || (!((m&MODE_MASK) == MODE_REC) && !((conf.hide_osd == 1) || (conf.hide_osd == 3)) )) && !(((conf.hide_osd == 2) || (conf.hide_osd == 3))&& (shooting_get_prop(PROPCASE_DISPLAY_MODE) == 1))) )) {
|
|---|
| 2369 | gui_osd_draw_ev();
|
|---|
| 2370 | }
|
|---|
| 2371 | #if CAM_DRAW_EXPOSITION
|
|---|
| 2372 | 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) {
|
|---|
| 2373 | strcpy(osd_buf,shooting_get_tv_str());
|
|---|
| 2374 | strcat(osd_buf,"\" F");
|
|---|
| 2375 | strcat(osd_buf,shooting_get_av_str());
|
|---|
| 2376 | draw_txt_string(22-strlen(osd_buf)/2, 14, osd_buf, conf.osd_color);
|
|---|
| 2377 | }
|
|---|
| 2378 | #endif
|
|---|
| 2379 |
|
|---|
| 2380 | #if CAM_EV_IN_VIDEO |
|---|
| 2381 | if (movie_status==VIDEO_RECORD_IN_PROGRESS) gui_osd_draw_ev_video(get_ev_video_avail()); |
|---|
| 2382 | #endif |
|---|
| 2383 | |
|---|
| 2384 | if (debug_vals_show) {
|
|---|
| 2385 | // long v=get_file_counter();
|
|---|
| 2386 | // sprintf(osd_buf, "1:%03d-%04d ", (v>>18)&0x3FF, (v>>4)&0x3FFF);
|
|---|
| 2387 | // sprintf(osd_buf, "1:%d, %08X ", xxxx, eeee);
|
|---|
| 2388 | sprintf(osd_buf, "1:%8x ", physw_status[0]);
|
|---|
| 2389 | draw_txt_string(28, 10, osd_buf, conf.osd_color);
|
|---|
| 2390 |
|
|---|
| 2391 | sprintf(osd_buf, "2:%8x ", physw_status[1]);
|
|---|
| 2392 |
|
|---|
| 2393 | draw_txt_string(28, 11, osd_buf, conf.osd_color);
|
|---|
| 2394 |
|
|---|
| 2395 | sprintf(osd_buf, "3:%8x ", physw_status[2]);
|
|---|
| 2396 |
|
|---|
| 2397 | draw_txt_string(28, 12, osd_buf, conf.osd_color);
|
|---|
| 2398 |
|
|---|
| 2399 | // sprintf(osd_buf, "4:%8x ", vid_get_viewport_fb_d());
|
|---|
| 2400 | sprintf(osd_buf, "4:%8x ", get_usb_power(1));
|
|---|
| 2401 | draw_txt_string(28, 13, osd_buf, conf.osd_color);
|
|---|
| 2402 | }
|
|---|
| 2403 |
|
|---|
| 2404 | {
|
|---|
| 2405 | static char sbuf[100];
|
|---|
| 2406 | int r,i, p, len;
|
|---|
| 2407 | if (conf.debug_display == DEBUG_DISPLAY_PROPS){
|
|---|
| 2408 |
|
|---|
| 2409 | for (i=0;i<10;i++){
|
|---|
| 2410 | r = 0;
|
|---|
| 2411 | p = debug_propcase_page*10+i;
|
|---|
| 2412 | get_property_case(p, &r, 4);
|
|---|
| 2413 | sprintf(sbuf, "%3d: %d ", p, r);sbuf[20]=0;
|
|---|
| 2414 | draw_string(64,16+16*i,sbuf, conf.osd_color);
|
|---|
| 2415 | }
|
|---|
| 2416 | }
|
|---|
| 2417 |
|
|---|
| 2418 | if (conf.debug_display == DEBUG_DISPLAY_PARAMS){
|
|---|
| 2419 | extern long* FlashParamsTable[];
|
|---|
| 2420 | char s[30];
|
|---|
| 2421 | int count;
|
|---|
| 2422 |
|
|---|
| 2423 | for (i=0;i<10;i++){
|
|---|
| 2424 | r = 0;
|
|---|
| 2425 | p = debug_propcase_page*10+i;
|
|---|
| 2426 | if (p>=get_flash_params_count()) sprintf(sbuf, "%3d: This parameter does not exists", p);
|
|---|
| 2427 | else {
|
|---|
| 2428 | len=FlashParamsTable[p][1]>>16;
|
|---|
| 2429 | if ((len==1)||(len==2)||(len==4)){
|
|---|
| 2430 | get_parameter_data(p, &r, len);
|
|---|
| 2431 | sprintf(sbuf, "%3d: %30d :%2d ", p, r,len);
|
|---|
| 2432 | }
|
|---|
| 2433 | else {
|
|---|
| 2434 | if (len>=sizeof(s)) count=sizeof(s)-1; else count=len;
|
|---|
| 2435 | get_parameter_data(p, &s, count);
|
|---|
| 2436 | s[count]=0;
|
|---|
| 2437 | sprintf(sbuf, "%3d: %30s :%2d ", p, s,len);
|
|---|
| 2438 | }
|
|---|
| 2439 | }
|
|---|
| 2440 | draw_string(16,16+16*i,sbuf, conf.osd_color);
|
|---|
| 2441 | }
|
|---|
| 2442 | }
|
|---|
| 2443 | }
|
|---|
| 2444 |
|
|---|
| 2445 | if(conf.debug_display == DEBUG_DISPLAY_TASKS) {
|
|---|
| 2446 | gui_debug_draw_tasklist();
|
|---|
| 2447 | }
|
|---|
| 2448 |
|
|---|
| 2449 | if (ubasic_error){
|
|---|
| 2450 | const char *msg;
|
|---|
| 2451 | if (ubasic_error >= UBASIC_E_ENDMARK) {
|
|---|
| 2452 | msg = ubasic_errstrings[UBASIC_E_UNKNOWN_ERROR];
|
|---|
| 2453 | } else {
|
|---|
| 2454 | msg = ubasic_errstrings[ubasic_error];
|
|---|
| 2455 | }
|
|---|
| 2456 | sprintf(osd_buf, "uBASIC:%d %s ", ubasic_linenumber(), msg);
|
|---|
| 2457 | draw_txt_string(0, 0, osd_buf, MAKE_COLOR(COLOR_RED, COLOR_YELLOW));
|
|---|
| 2458 | }
|
|---|
| 2459 | }
|
|---|
| 2460 |
|
|---|
| 2461 | #ifndef OPTIONS_AUTOSAVE
|
|---|
| 2462 | //-------------------------------------------------------------------
|
|---|
| 2463 | void gui_menuproc_save(int arg)
|
|---|
| 2464 | {
|
|---|
| 2465 | conf_save();
|
|---|
| 2466 | }
|
|---|
| 2467 | #endif
|
|---|
| 2468 |
|
|---|
| 2469 | //-------------------------------------------------------------------
|
|---|
| 2470 | static void gui_menuproc_reset_selected(unsigned int btn) {
|
|---|
| 2471 | if (btn==MBOX_BTN_YES)
|
|---|
| 2472 | conf_load_defaults();
|
|---|
| 2473 | }
|
|---|
| 2474 |
|
|---|
| 2475 | void gui_menuproc_reset(int arg)
|
|---|
| 2476 | {
|
|---|
| 2477 | gui_mbox_init(LANG_MSG_RESET_OPTIONS_TITLE,
|
|---|
| 2478 | LANG_MSG_RESET_OPTIONS_TEXT,
|
|---|
| 2479 | MBOX_FUNC_RESTORE|MBOX_TEXT_CENTER|MBOX_BTN_YES_NO|MBOX_DEF_BTN2, gui_menuproc_reset_selected);
|
|---|
| 2480 | }
|
|---|
| 2481 |
|
|---|
| 2482 | //-------------------------------------------------------------------
|
|---|
| 2483 | void gui_draw_palette(int arg) {
|
|---|
| 2484 | draw_restore();
|
|---|
| 2485 | gui_palette_init(PALETTE_MODE_DEFAULT, 0x00, NULL);
|
|---|
| 2486 | gui_mode = GUI_MODE_PALETTE;
|
|---|
| 2487 | }
|
|---|
| 2488 |
|
|---|
| 2489 | //-------------------------------------------------------------------
|
|---|
| 2490 | void gui_show_build_info(int arg) {
|
|---|
| 2491 | static char buf[192];
|
|---|
| 2492 |
|
|---|
| 2493 | sprintf(buf, lang_str(LANG_MSG_BUILD_INFO_TEXT), HDK_VERSION, BUILD_NUMBER, __DATE__, __TIME__, PLATFORM, PLATFORMSUB);
|
|---|
| 2494 | gui_mbox_init(LANG_MSG_BUILD_INFO_TITLE, (int)buf, MBOX_FUNC_RESTORE|MBOX_TEXT_LEFT, NULL);
|
|---|
| 2495 | }
|
|---|
| 2496 |
|
|---|
| 2497 | //-------------------------------------------------------------------
|
|---|
| 2498 | void gui_show_memory_info(int arg) {
|
|---|
| 2499 | static char buf[64];
|
|---|
| 2500 | int size, l_size, d;
|
|---|
| 2501 | char* ptr;
|
|---|
| 2502 |
|
|---|
| 2503 | size = 16;
|
|---|
| 2504 | while (1) {
|
|---|
| 2505 | ptr= malloc(size);
|
|---|
| 2506 | if (ptr) {
|
|---|
| 2507 | free(ptr);
|
|---|
| 2508 | size <<= 1;
|
|---|
| 2509 | } else
|
|---|
| 2510 | break;
|
|---|
| 2511 | }
|
|---|
| 2512 |
|
|---|
| 2513 | l_size = size;
|
|---|
| 2514 | size >>= 1;
|
|---|
| 2515 | d=1024;
|
|---|
| 2516 | while (d) {
|
|---|
| 2517 | ptr = malloc(size);
|
|---|
| 2518 | if (ptr) {
|
|---|
| 2519 | free(ptr);
|
|---|
| 2520 | d = l_size-size;
|
|---|
| 2521 | if (d<0) d=-d;
|
|---|
| 2522 | l_size = size;
|
|---|
| 2523 | size += d>>1;
|
|---|
| 2524 | } else {
|
|---|
| 2525 | d = size-l_size;
|
|---|
| 2526 | if (d<0) d=-d;
|
|---|
| 2527 | l_size = size;
|
|---|
| 2528 | size -= d>>1;
|
|---|
| 2529 | }
|
|---|
| 2530 |
|
|---|
| 2531 | }
|
|---|
| 2532 |
|
|---|
| 2533 | sprintf(buf, lang_str(LANG_MSG_MEMORY_INFO_TEXT), size-1);
|
|---|
| 2534 | gui_mbox_init(LANG_MSG_MEMORY_INFO_TITLE, (int)buf, MBOX_FUNC_RESTORE|MBOX_TEXT_CENTER, NULL);
|
|---|
| 2535 | }
|
|---|
| 2536 |
|
|---|
| 2537 | //-------------------------------------------------------------------
|
|---|
| 2538 | void gui_draw_reversi(int arg) {
|
|---|
| 2539 | if ((mode_get()&MODE_MASK) != MODE_PLAY) {
|
|---|
| 2540 | gui_mbox_init(LANG_MSG_INFO_TITLE, LANG_MSG_SWITCH_TO_PLAY_MODE,
|
|---|
| 2541 | MBOX_FUNC_RESTORE|MBOX_TEXT_CENTER, NULL);
|
|---|
| 2542 | return;
|
|---|
| 2543 | }
|
|---|
| 2544 | gui_mode = GUI_MODE_REVERSI;
|
|---|
| 2545 | gui_reversi_init();
|
|---|
| 2546 | }
|
|---|
| 2547 |
|
|---|
| 2548 | //-------------------------------------------------------------------
|
|---|
| 2549 | void gui_draw_sokoban(int arg) {
|
|---|
| 2550 | if ((mode_get()&MODE_MASK) != MODE_PLAY) {
|
|---|
| 2551 | gui_mbox_init(LANG_MSG_INFO_TITLE, LANG_MSG_SWITCH_TO_PLAY_MODE,
|
|---|
| 2552 | MBOX_FUNC_RESTORE|MBOX_TEXT_CENTER, NULL);
|
|---|
| 2553 | return;
|
|---|
| 2554 | }
|
|---|
| 2555 | gui_mode = GUI_MODE_SOKOBAN;
|
|---|
| 2556 | gui_sokoban_init();
|
|---|
| 2557 | }
|
|---|
| 2558 |
|
|---|
| 2559 | //-------------------------------------------------------------------
|
|---|
| 2560 | void gui_draw_debug(int arg) {
|
|---|
| 2561 | // gui_debug_init(0x2510);
|
|---|
| 2562 | // gui_debug_init(0x127E0);
|
|---|
| 2563 | // gui_debug_init(0x7F5B8);
|
|---|
| 2564 | // gui_debug_init(malloc(16));
|
|---|
| 2565 | gui_debug_init((void*)conf.mem_view_addr_init);
|
|---|
| 2566 | }
|
|---|
| 2567 |
|
|---|
| 2568 | //-------------------------------------------------------------------
|
|---|
| 2569 | void gui_draw_bench(int arg) {
|
|---|
| 2570 | gui_mode = GUI_MODE_BENCH;
|
|---|
| 2571 | gui_bench_init();
|
|---|
| 2572 | }
|
|---|
| 2573 |
|
|---|
| 2574 | //-------------------------------------------------------------------
|
|---|
| 2575 | void gui_draw_splash() {
|
|---|
| 2576 | coord w, h, x, y;
|
|---|
| 2577 | static const char *text[] = {
|
|---|
| 2578 | "CHDK Firmware '" HDK_VERSION " " BUILD_NUMBER "'" ,
|
|---|
| 2579 | "Build: " __DATE__ " " __TIME__ ,
|
|---|
| 2580 | "Camera: " PLATFORM " - " PLATFORMSUB };
|
|---|
| 2581 | int i, l;
|
|---|
| 2582 | // color cl = MAKE_COLOR((gui_splash_mode==MODE_REC)?0xDA:0xD9, COLOR_WHITE);
|
|---|
| 2583 | color cl = MAKE_COLOR(COLOR_RED, COLOR_WHITE);
|
|---|
| 2584 |
|
|---|
| 2585 |
|
|---|
| 2586 | gui_splash_mode = (mode_get()&MODE_MASK);
|
|---|
| 2587 |
|
|---|
| 2588 | h=sizeof(text)/sizeof(text[0])*FONT_HEIGHT+8;
|
|---|
| 2589 | w=0;
|
|---|
| 2590 | for (i=0; i<sizeof(text)/sizeof(text[0]); ++i) {
|
|---|
| 2591 | l=strlen(text[i]);
|
|---|
| 2592 | if (l>w) w=l;
|
|---|
| 2593 | }
|
|---|
| 2594 | w=w*FONT_WIDTH+10;
|
|---|
| 2595 |
|
|---|
| 2596 | x = (screen_width-w)>>1; y = ((screen_height-h)>>1) + 20;
|
|---|
| 2597 | draw_filled_round_rect(x, y, x+w, y+h, MAKE_COLOR(COLOR_RED, COLOR_RED));
|
|---|
| 2598 | for (i=0; i<sizeof(text)/sizeof(text[0]); ++i) {
|
|---|
| 2599 | draw_string(x+((w-strlen(text[i])*FONT_WIDTH)>>1), y+i*FONT_HEIGHT+4, text[i], cl);
|
|---|
| 2600 | }
|
|---|
| 2601 | int pos;
|
|---|
| 2602 | int mx=0;
|
|---|
| 2603 | int my=0;
|
|---|
| 2604 | int offset_x = (screen_width-150)>>1;
|
|---|
| 2605 | int offset_y = ((screen_height-84)>>1) - 42;
|
|---|
| 2606 | const color color_lookup[8] = {0xFF, 0x2E, 0x22, 0x3D, 0x1F, 0x21, 0x00, 0x11};
|
|---|
| 2607 |
|
|---|
| 2608 | for(pos=0; pos<HEADER_DATA_LEN; pos++){
|
|---|
| 2609 | char data = header_data[pos];
|
|---|
| 2610 | color c = color_lookup[(data>>5) & 0x07];
|
|---|
| 2611 | for(i=0; i<(data&0x1F)+1; i++){
|
|---|
| 2612 | if (c!=0x00){
|
|---|
| 2613 | draw_pixel(offset_x+mx,offset_y+my,c);
|
|---|
| 2614 | }
|
|---|
| 2615 | if (mx==149){
|
|---|
| 2616 | mx=0;
|
|---|
| 2617 | my++;
|
|---|
| 2618 | }else{
|
|---|
| 2619 | mx++;
|
|---|
| 2620 | }
|
|---|
| 2621 |
|
|---|
| 2622 | }
|
|---|
| 2623 | }
|
|---|
| 2624 | }
|
|---|
| 2625 |
|
|---|
| 2626 | //-------------------------------------------------------------------
|
|---|
| 2627 | void gui_draw_fselect(int arg) {
|
|---|
| 2628 | gui_fselect_init(LANG_STR_FILE_BROWSER, "A", NULL);
|
|---|
| 2629 | }
|
|---|
| 2630 |
|
|---|
| 2631 | //-------------------------------------------------------------------
|
|---|
| 2632 | static void gui_load_script_selected(const char *fn) {
|
|---|
| 2633 | if (fn)
|
|---|
| 2634 | script_load(fn, 1);
|
|---|
| 2635 | }
|
|---|
| 2636 | void gui_load_script(int arg) {
|
|---|
| 2637 | DIR *d;
|
|---|
| 2638 | char *path="A/CHDK/SCRIPTS";
|
|---|
| 2639 |
|
|---|
| 2640 | // if exists "A/CHDK/SCRIPTS" go into
|
|---|
| 2641 | d=opendir(path);
|
|---|
| 2642 | if (d) {
|
|---|
| 2643 | closedir(d);
|
|---|
| 2644 | } else {
|
|---|
| 2645 | path="A";
|
|---|
| 2646 | }
|
|---|
| 2647 |
|
|---|
| 2648 | gui_fselect_init(LANG_STR_SELECT_SCRIPT_FILE, path, gui_load_script_selected);
|
|---|
| 2649 | }
|
|---|
| 2650 |
|
|---|
| 2651 | void gui_load_script_default(int arg) {
|
|---|
| 2652 | script_load(conf.script_file, 0);
|
|---|
| 2653 | if (conf.script_param_save)
|
|---|
| 2654 | {
|
|---|
| 2655 | save_params_values(1);
|
|---|
| 2656 | }}
|
|---|
| 2657 |
|
|---|
| 2658 |
|
|---|
| 2659 | //-------------------------------------------------------------------
|
|---|
| 2660 | static void gui_grid_lines_load_selected(const char *fn) {
|
|---|
| 2661 | if (fn)
|
|---|
| 2662 | grid_lines_load(fn);
|
|---|
| 2663 | }
|
|---|
| 2664 | void gui_grid_lines_load(int arg) {
|
|---|
| 2665 | DIR *d;
|
|---|
| 2666 | char *path="A/CHDK/GRIDS";
|
|---|
| 2667 |
|
|---|
| 2668 | // if exists "A/CHDK/GRIDS" go into
|
|---|
| 2669 | d=opendir(path);
|
|---|
| 2670 | if (d) {
|
|---|
| 2671 | closedir(d);
|
|---|
| 2672 | } else {
|
|---|
| 2673 | path="A";
|
|---|
| 2674 | }
|
|---|
| 2675 |
|
|---|
| 2676 | gui_fselect_init(LANG_STR_SELECT_GRID_FILE, path, gui_grid_lines_load_selected);
|
|---|
| 2677 | }
|
|---|
| 2678 |
|
|---|
| 2679 | //-------------------------------------------------------------------
|
|---|
| 2680 | void gui_draw_osd_le(int arg) {
|
|---|
| 2681 | gui_mode = GUI_MODE_OSD;
|
|---|
| 2682 | gui_osd_init();
|
|---|
| 2683 | }
|
|---|
| 2684 |
|
|---|
| 2685 | //-------------------------------------------------------------------
|
|---|
| 2686 | static void gui_draw_read_selected(const char *fn) {
|
|---|
| 2687 | if (fn) {
|
|---|
| 2688 | if (!rbf_load(conf.reader_rbf_file))
|
|---|
| 2689 | rbf_load_from_8x16(current_font);
|
|---|
| 2690 | rbf_set_codepage(conf.reader_codepage);
|
|---|
| 2691 | gui_mode = GUI_MODE_READ;
|
|---|
| 2692 | gui_read_init(fn);
|
|---|
| 2693 | }
|
|---|
| 2694 | }
|
|---|
| 2695 | void gui_draw_read(int arg) {
|
|---|
| 2696 | DIR *d;
|
|---|
| 2697 | char *path="A/CHDK/BOOKS";
|
|---|
| 2698 |
|
|---|
| 2699 | // if exists "A/CHDK/BOOKS" go into
|
|---|
| 2700 | d=opendir(path);
|
|---|
| 2701 | if (d) {
|
|---|
| 2702 | closedir(d);
|
|---|
| 2703 | } else {
|
|---|
| 2704 | path="A";
|
|---|
| 2705 | }
|
|---|
| 2706 | gui_fselect_init(LANG_STR_SELECT_TEXT_FILE, path, gui_draw_read_selected);
|
|---|
| 2707 | }
|
|---|
| 2708 |
|
|---|
| 2709 | //-------------------------------------------------------------------
|
|---|
| 2710 | void gui_draw_read_last(int arg) {
|
|---|
| 2711 | int fd;
|
|---|
| 2712 |
|
|---|
| 2713 | fd = open(conf.reader_file, O_RDONLY, 0777);
|
|---|
| 2714 | if (fd >= 0) {
|
|---|
| 2715 | close(fd);
|
|---|
| 2716 | gui_draw_read_selected(conf.reader_file);
|
|---|
| 2717 | } else {
|
|---|
| 2718 | gui_draw_read(arg);
|
|---|
| 2719 | }
|
|---|
| 2720 | }
|
|---|
| 2721 |
|
|---|
| 2722 | //-------------------------------------------------------------------
|
|---|
| 2723 | void gui_menuproc_mkbootdisk(int arg) {
|
|---|
| 2724 | mark_filesystem_bootable();
|
|---|
| 2725 | }
|
|---|
| 2726 |
|
|---|
| 2727 | //-------------------------------------------------------------------
|
|---|
| 2728 | void gui_draw_calendar(int arg) {
|
|---|
| 2729 | gui_mode = GUI_MODE_CALENDAR;
|
|---|
| 2730 | gui_calendar_init();
|
|---|
| 2731 | }
|
|---|
| 2732 |
|
|---|
| 2733 | //-------------------------------------------------------------------
|
|---|
| 2734 | static void gui_draw_rbf_selected(const char *fn) {
|
|---|
| 2735 | if (fn) {
|
|---|
| 2736 | strcpy(conf.reader_rbf_file, fn);
|
|---|
| 2737 | }
|
|---|
| 2738 | }
|
|---|
| 2739 | void gui_draw_load_rbf(int arg) {
|
|---|
| 2740 | DIR *d;
|
|---|
| 2741 | char *path="A/CHDK/FONTS";
|
|---|
| 2742 |
|
|---|
| 2743 | // if exists "A/CHDK/FONTS" go into
|
|---|
| 2744 | d=opendir(path);
|
|---|
| 2745 | if (d) {
|
|---|
| 2746 | closedir(d);
|
|---|
| 2747 | } else {
|
|---|
| 2748 | path="A";
|
|---|
| 2749 | }
|
|---|
| 2750 |
|
|---|
| 2751 | gui_fselect_init(LANG_STR_SELECT_FONT_FILE, path, gui_draw_rbf_selected);
|
|---|
| 2752 | }
|
|---|
| 2753 |
|
|---|
| 2754 | //-------------------------------------------------------------------
|
|---|
| 2755 | static void gui_draw_menu_rbf_selected(const char *fn) {
|
|---|
| 2756 | if (fn) {
|
|---|
| 2757 | strcpy(conf.menu_rbf_file, fn);
|
|---|
| 2758 | if (!rbf_load(conf.menu_rbf_file))
|
|---|
| 2759 | rbf_load_from_8x16(current_font);
|
|---|
| 2760 | rbf_set_codepage(FONT_CP_WIN);
|
|---|
| 2761 | gui_menu_init(NULL);
|
|---|
| 2762 | }
|
|---|
| 2763 | }
|
|---|
| 2764 | void gui_draw_load_menu_rbf(int arg) {
|
|---|
| 2765 | DIR *d;
|
|---|
| 2766 | char *path="A/CHDK/FONTS";
|
|---|
| 2767 |
|
|---|
| 2768 | // if exists "A/CHDK/FONTS" go into
|
|---|
| 2769 | d=opendir(path);
|
|---|
| 2770 | if (d) {
|
|---|
| 2771 | closedir(d);
|
|---|
| 2772 | } else {
|
|---|
| 2773 | path="A";
|
|---|
| 2774 | }
|
|---|
| 2775 |
|
|---|
| 2776 | gui_fselect_init(LANG_STR_SELECT_FONT_FILE, path, gui_draw_menu_rbf_selected);
|
|---|
| 2777 | }
|
|---|
| 2778 |
|
|---|
| 2779 | //-------------------------------------------------------------------
|
|---|
| 2780 | static void gui_draw_symbol_rbf_selected(const char *fn) {
|
|---|
| 2781 | if (fn) {
|
|---|
| 2782 | strcpy(conf.menu_symbol_rbf_file, fn);
|
|---|
| 2783 | rbf_load_symbol(conf.menu_symbol_rbf_file);
|
|---|
| 2784 | /* if (!rbf_load(conf.menu_rbf_file))
|
|---|
| 2785 | rbf_load_from_8x16(current_font);
|
|---|
| 2786 | rbf_set_codepage(FONT_CP_WIN);*/
|
|---|
| 2787 | gui_menu_init(NULL);
|
|---|
| 2788 | }
|
|---|
| 2789 | }
|
|---|
| 2790 | void gui_draw_load_symbol_rbf(int arg) {
|
|---|
| 2791 | DIR *d;
|
|---|
| 2792 | char *path="A/CHDK/SYMBOLS";
|
|---|
| 2793 |
|
|---|
| 2794 | // if exists "A/CHDK/FONTS" go into
|
|---|
| 2795 | d=opendir(path);
|
|---|
| 2796 | if (d) {
|
|---|
| 2797 | closedir(d);
|
|---|
| 2798 | } else {
|
|---|
| 2799 | path="A";
|
|---|
| 2800 | }
|
|---|
| 2801 |
|
|---|
| 2802 | gui_fselect_init(LANG_STR_SELECT_SYMBOL_FILE, path, gui_draw_symbol_rbf_selected);
|
|---|
| 2803 | }
|
|---|
| 2804 |
|
|---|
| 2805 | //-------------------------------------------------------------------
|
|---|
| 2806 | static void gui_draw_lang_selected(const char *fn) {
|
|---|
| 2807 | if (fn) {
|
|---|
| 2808 | strcpy(conf.lang_file, fn);
|
|---|
| 2809 | lang_load_from_file(conf.lang_file);
|
|---|
| 2810 | gui_menu_init(NULL);
|
|---|
| 2811 | }
|
|---|
| 2812 | }
|
|---|
| 2813 | void gui_draw_load_lang(int arg) {
|
|---|
| 2814 | DIR *d;
|
|---|
| 2815 | char *path="A/CHDK/LANG";
|
|---|
| 2816 |
|
|---|
| 2817 | // if exists "A/CHDK/LANG" go into
|
|---|
| 2818 | d=opendir(path);
|
|---|
| 2819 | if (d) {
|
|---|
| 2820 | closedir(d);
|
|---|
| 2821 | } else {
|
|---|
| 2822 | path="A";
|
|---|
| 2823 | }
|
|---|
| 2824 |
|
|---|
| 2825 | gui_fselect_init(LANG_STR_SELECT_LANG_FILE, path, gui_draw_lang_selected);
|
|---|
| 2826 | }
|
|---|
| 2827 |
|
|---|
| 2828 | int find_mnu(CMenu *curr_menu, int mnu, int count)
|
|---|
| 2829 | {
|
|---|
| 2830 | int gui_menu_curr_item;
|
|---|
| 2831 |
|
|---|
| 2832 | gui_menu_curr_item = 0;
|
|---|
| 2833 | while(curr_menu->menu[gui_menu_curr_item].text) {
|
|---|
| 2834 | if (curr_menu->menu[gui_menu_curr_item].text == mnu){
|
|---|
| 2835 | user_submenu_items[count] = curr_menu->menu[gui_menu_curr_item];
|
|---|
| 2836 | return 1;
|
|---|
| 2837 | }
|
|---|
| 2838 | if ((curr_menu->menu[gui_menu_curr_item].type & MENUITEM_MASK) == MENUITEM_SUBMENU)
|
|---|
| 2839 | if (curr_menu->menu[gui_menu_curr_item].text != LANG_MENU_USER_MENU)
|
|---|
| 2840 | if (find_mnu((CMenu*)(curr_menu->menu[gui_menu_curr_item].value), mnu, count)) return 1;
|
|---|
| 2841 | gui_menu_curr_item++;
|
|---|
| 2842 | }
|
|---|
| 2843 | return 0;
|
|---|
| 2844 | }
|
|---|
| 2845 |
|
|---|
| 2846 | void user_menu_save() {
|
|---|
| 2847 | int x;
|
|---|
| 2848 | for (x=0; x<USER_MENU_ITEMS; x++) {
|
|---|
| 2849 | conf.user_menu_vars[x] = user_submenu_items[x].text;
|
|---|
| 2850 | }
|
|---|
| 2851 | }
|
|---|
| 2852 |
|
|---|
| 2853 | void user_menu_restore() {
|
|---|
| 2854 | int x;
|
|---|
| 2855 | for (x=0; x<USER_MENU_ITEMS; x++) {
|
|---|
| 2856 | find_mnu(&root_menu, conf.user_menu_vars[x], x);
|
|---|
| 2857 | }
|
|---|
| 2858 | }
|
|---|