Changeset 1719 for trunk/core/gui.c


Ignore:
Timestamp:
03/10/12 04:23:15 (15 months ago)
Author:
philmoz
Message:

Merged revision(s) 1712-1713 from branches/release-1_0:

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/core/gui.c

    r1693 r1719  
    124124#endif 
    125125 
     126#if CAM_HAS_ZOOM_LEVER 
     127    #define SHORTCUT_SD_SUB KEY_ZOOM_OUT 
     128    #define SHORTCUT_SD_ADD KEY_ZOOM_IN 
     129#endif 
    126130 
    127131// forward declarations 
     
    135139static void gui_draw_osd(); 
    136140 
     141#ifdef CAM_HAS_GPS 
     142int exit_gpx_record=1; 
     143int exit_gps_kompass=1; 
     144int exit_gps_navi=1; 
     145int exit_gps_data=1; 
     146 
     147extern void init_gpx_record_task(); 
     148extern void init_gps_kompass_task(); 
     149extern void init_gps_trackback_task(); 
     150extern void gps_record(int arg); 
     151extern void gps_get_data(); 
     152extern void write_timezone(); 
     153extern void write_home(); 
     154extern void gps_navigate_home(); 
     155 
     156 
     157static void gpx_start_stop(int arg); 
     158static void show_kompass(int arg); 
     159static void show_navi(int arg); 
     160 
     161static void mark_timezone(int arg); 
     162static void mark_home(int arg); 
     163static void navigate_home(int arg); 
     164 
     165extern int _CreateTask (const char *name, int prio, int stack_size /*?*/,void *entry, long parm /*?*/); 
     166 
     167#endif 
    137168static void gui_draw_splash(char* logo, int logo_size); 
    138169 
     
    190221#endif 
    191222 
     223#if CAM_REMOTE 
     224    static const char* gui_show_usb_info_enum(int change, int arg); 
     225#endif 
    192226void rinit(); 
    193227 
    194228// Menu callbacks 
    195229//------------------------------------------------------------------- 
     230void cb_autoiso_menu_change(unsigned int item); // Used from conf loader 
    196231static void cb_step_25(); 
    197232static void cb_perc(); 
     
    288323static CMenuItem autoiso_submenu_items[] = { 
    289324    MENU_ITEM   (0x5c,LANG_MENU_AUTOISO_ENABLED,            MENUITEM_BOOL,                                      &conf.autoiso_enable,       0 ), 
    290     MENU_ENUM2  (0x5f,LANG_MENU_AUTOISO_MIN_SHUTTER,            &conf.autoiso_shutter, gui_autoiso_shutter_modes ), 
     325    MENU_ENUM2  (0x5f,LANG_MENU_AUTOISO_MIN_SHUTTER,            &conf.autoiso_shutter_enum, gui_autoiso_shutter_modes ), 
    291326    MENU_ITEM   (0x5f,LANG_MENU_AUTOISO_USER_FACTOR,        MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.autoiso_user_factor,      MENU_MINMAX(1, 8) ), 
    292327 
     
    294329    MENU_ITEM   (0x5f,LANG_MENU_AUTOISO_IS_FACTOR,          MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.autoiso_is_factor,        MENU_MINMAX(1, 8) ), 
    295330#endif 
    296     MENU_ITEM(0x5f,LANG_MENU_AUTOISO_MAX_ISO_HI,      MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.autoiso_max_iso_hi, MENU_MINMAX(20, 160) ), 
    297     MENU_ITEM(0x5f,LANG_MENU_AUTOISO_MAX_ISO_AUTO, MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.autoiso_max_iso_auto, MENU_MINMAX(10, 80) ), 
    298     MENU_ITEM(0x5f,LANG_MENU_AUTOISO_MIN_ISO,           MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.autoiso_min_iso, MENU_MINMAX(1, 20) ), 
    299  
     331 
     332    MENU_ITEM   (0x5f,LANG_MENU_AUTOISO_MIN_ISO,            MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.autoiso_min_iso,          MENU_MINMAX(1, 20) ), 
     333    MENU_ITEM   (0x5f,LANG_MENU_AUTOISO_MAX_ISO_AUTO,           MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.autoiso_max_iso_auto,         MENU_MINMAX(10, 80) ), 
     334 
     335        //@tsv 
     336    MENU_ENUM2  (0x5f,LANG_MENU_AUTOISO_MIN_SHUTTER2,           &conf.autoiso2_shutter_enum, gui_autoiso2_shutter_modes ), 
     337    MENU_ITEM   (0x5f,LANG_MENU_AUTOISO_MAX_ISO2,                       MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.autoiso2_max_iso_auto,        MENU_MINMAX(10, 100) ), 
     338 
     339#if !defined(CAMERA_sx230hs) 
     340    MENU_ITEM   (0x5f,LANG_MENU_AUTOISO_MAX_ISO_HI,         MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.autoiso_max_iso_hi,               MENU_MINMAX(20, 160) ), 
     341#endif 
     342 
     343    MENU_ENUM2  (0x5f,LANG_MENU_AUTOISO_OVEREXP_EV,             &conf.overexp_ev_enum, gui_overexp_ev_modes ), 
     344    MENU_ITEM   (0x57,LANG_MENU_ZEBRA_OVER,                     MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.autoiso2_over,                        MENU_MINMAX(0, 32) ), 
     345    MENU_ITEM   (0x5f,LANG_MENU_AUTOISO_OVEREXP_THRES,          MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX, &conf.overexp_threshold,            MENU_MINMAX(1, 20) ), 
    300346 
    301347    MENU_ITEM   (0x51,LANG_MENU_BACK,                       MENUITEM_UP,    0,                                                              0 ), 
    302348    {0} 
    303349}; 
    304 static CMenu autoiso_submenu = {0x2d,LANG_MENU_AUTOISO_TITLE, NULL, autoiso_submenu_items }; 
     350//static CMenu autoiso_submenu = {0x2d,LANG_MENU_AUTOISO_TITLE, NULL, autoiso_submenu_items }; 
     351static CMenu autoiso_submenu = {0x2d,LANG_MENU_AUTOISO_TITLE, cb_autoiso_menu_change, autoiso_submenu_items }; 
    305352 
    306353 
     
    334381}; 
    335382static CMenu debug_submenu = {0x2a,LANG_MENU_DEBUG_TITLE, NULL, debug_submenu_items }; 
     383#endif 
     384#ifdef CAM_HAS_GPS 
     385 
     386static CMenuItem gps_logging_items[] = { 
     387    MENU_ITEM   (0x2a,LANG_MENU_GPS_TRACK_TIME,                         MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,     &conf.gps_track_time,           MENU_MINMAX(1, 60) ), 
     388    MENU_ITEM   (0x0 ,(int)"",                              MENUITEM_SEPARATOR,                                                                 0,                                                      0 ), 
     389    MENU_ITEM   (0x2a,LANG_MENU_GPS_TRACK_SYMBOL,                       MENUITEM_BOOL,                                                                          &conf.gps_track_symbol,         0 ), 
     390    MENU_ITEM   (0x0 ,(int)"",                              MENUITEM_SEPARATOR,                                                                 0,                                                      0 ), 
     391    MENU_ITEM   (0x2a,LANG_MENU_GPS_REC_PLAY_SET_1,                     MENUITEM_BOOL,                                                                  &conf.gps_rec_play_set_1,       0 ), 
     392    MENU_ITEM   (0x2a,LANG_MENU_GPS_REC_PLAY_TIME_1,            MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,     &conf.gps_rec_play_time_1,      MENU_MINMAX(1, 60) ), 
     393    MENU_ITEM   (0x2a,LANG_MENU_GPS_PLAY_DARK_SET_1,            MENUITEM_BOOL,                                                                  &conf.gps_play_dark_set_1,      0 ), 
     394    MENU_ITEM   (0x2a,LANG_MENU_GPS_PLAY_DARK_TIME_1,           MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,     &conf.gps_play_dark_time_1,     MENU_MINMAX(1, 60) ), 
     395    MENU_ITEM   (0x0 ,(int)"",                              MENUITEM_SEPARATOR,                                                                 0,                                                      0 ), 
     396    MENU_ITEM   (0x51,LANG_MENU_BACK,                       MENUITEM_UP,                                                        0,                                                      0 ), 
     397    {0} 
     398}; 
     399static CMenu gps_logging_submenu = {0x86,LANG_MENU_GPS_LOGGING, NULL, gps_logging_items }; 
     400 
     401static CMenuItem gps_tagging_items[] = { 
     402    MENU_ITEM   (0x5c,LANG_MENU_GPS_WAYPOINT_SAVE,          MENUITEM_BOOL,                      &conf.gps_waypoint_save,                        0 ), 
     403    MENU_ITEM   (0x0 ,(int)"",                              MENUITEM_SEPARATOR,                                                                 0,                                                      0 ), 
     404    MENU_ITEM   (0x2a,LANG_MENU_GPS_WAIT_FOR_SIGNAL,            MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,     &conf.gps_wait_for_signal,      MENU_MINMAX(1, 599) ), 
     405    MENU_ITEM   (0x2a,LANG_MENU_GPS_WAIT_FOR_SIGNAL_TIME,       MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,     &conf.gps_wait_for_signal_time, MENU_MINMAX(1, 60) ), 
     406    MENU_ITEM   (0x0 ,(int)"",                              MENUITEM_SEPARATOR,                                                                 0,                                                      0 ), 
     407    MENU_ITEM   (0x2a,LANG_MENU_GPS_REC_PLAY_SET,                       MENUITEM_BOOL,                                                                  &conf.gps_rec_play_set,         0 ), 
     408    MENU_ITEM   (0x2a,LANG_MENU_GPS_REC_PLAY_TIME,                      MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,     &conf.gps_rec_play_time,        MENU_MINMAX(1, 60) ), 
     409    MENU_ITEM   (0x2a,LANG_MENU_GPS_PLAY_DARK_SET,                      MENUITEM_BOOL,                                                                  &conf.gps_play_dark_set,        0 ), 
     410    MENU_ITEM   (0x2a,LANG_MENU_GPS_PLAY_DARK_TIME,                     MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,     &conf.gps_play_dark_time,       MENU_MINMAX(1, 60) ), 
     411    MENU_ITEM   (0x0 ,(int)"",                              MENUITEM_SEPARATOR,                                                                 0,                                                      0 ), 
     412    MENU_ITEM   (0x5c,LANG_MENU_GPS_COUNTDOWN,                  MENUITEM_BOOL,                                                                  &conf.gps_countdown     ,               0 ), 
     413//    MENU_ITEM (0x5c,LANG_MENU_GPS_COUNTDOWN_BLINK,            MENUITEM_BOOL,                                                                  &conf.gps_countdown_blink,      0 ), 
     414    MENU_ITEM   (0x0 ,(int)"",                              MENUITEM_SEPARATOR,                                                                 0,                                                      0 ), 
     415    MENU_ITEM   (0x51,LANG_MENU_BACK,                       MENUITEM_UP,                                                        0,                                                      0 ), 
     416    {0} 
     417}; 
     418static CMenu gps_tagging_submenu = {0x86,LANG_MENU_GPS_TAGGING, NULL, gps_tagging_items }; 
     419 
     420 
     421static CMenuItem gps_navigation_items[] = { 
     422    MENU_ITEM   (0x2a,LANG_MENU_GPS_KOMPASS_SMOOTH,                     MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,     &conf.gps_kompass_smooth,       MENU_MINMAX(1, 40) ), 
     423    MENU_ITEM   (0x2a,LANG_MENU_GPS_KOMPASS_TIME,                       MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,     &conf.gps_kompass_time,         MENU_MINMAX(1, 60) ), 
     424    MENU_ITEM   (0x2a,LANG_MENU_GPS_NAVI_TIME,                          MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,     &conf.gps_navi_time,            MENU_MINMAX(1, 60) ), 
     425    MENU_ITEM   (0x0 ,(int)"",                              MENUITEM_SEPARATOR,                                                                 0,                                                      0 ), 
     426    MENU_ITEM   (0x2a,LANG_MENU_GPS_MARK_HOME,              MENUITEM_PROC,                      (int*)mark_home,                                        0 ), 
     427    MENU_ITEM   (0x0 ,(int)"",                              MENUITEM_SEPARATOR,                                                                 0,                                                      0 ), 
     428    MENU_ITEM   (0x51,LANG_MENU_BACK,                       MENUITEM_UP,                                                        0,                                                      0 ), 
     429    {0} 
     430}; 
     431static CMenu gps_navigation_submenu = {0x86,LANG_MENU_GPS_NAVIGATION, NULL, gps_navigation_items }; 
     432 
     433 
     434static const char* gui_gps_sat_fix[] =                  { "immer", "2D", "3D", "2D/3D" }; 
     435static CMenuItem gps_values_items[] = { 
     436    MENU_ITEM   (0x2a,LANG_MENU_GPS_BATT,                                       MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,     &conf.gps_batt,                         MENU_MINMAX(0, 99) ), 
     437    MENU_ITEM   (0x2a,LANG_MENU_GPS_BATT_WARNING,                       MENUITEM_BOOL,                                                                          &conf.gps_batt_warn,            0 ), 
     438    MENU_ITEM   (0x2a,LANG_MENU_GPS_BEEP_WARNING,                       MENUITEM_BOOL,                                                                          &conf.gps_beep_warn,            0 ), 
     439    MENU_ITEM   (0x0 ,(int)"",                              MENUITEM_SEPARATOR,                                                                 0,                                                      0 ), 
     440    MENU_ENUM2  (0x69,LANG_MENU_GPS_2D_3D_FIX,                          &conf.gps_2D_3D_fix,                                                            gui_gps_sat_fix ), 
     441    MENU_ITEM   (0x0 ,(int)"",                              MENUITEM_SEPARATOR,                                                                 0,                                                      0 ), 
     442    MENU_ITEM   (0x2a,LANG_MENU_GPS_SYMBOL_SHOW,                        MENUITEM_BOOL,                                                                          &conf.gps_show_symbol,          0 ), 
     443    MENU_ITEM   (0x0 ,(int)"",                              MENUITEM_SEPARATOR,                                                                 0,                                                      0 ), 
     444    MENU_ITEM   (0x2a,LANG_MENU_GPS_TEST_TIMEZONE,                      MENUITEM_BOOL,                                                                          &conf.gps_test_timezone,        0 ), 
     445    MENU_ITEM   (0x2a,LANG_MENU_GPS_MARK_TIMEZONE,          MENUITEM_PROC,                      (int*)mark_timezone,                            0 ), 
     446    MENU_ITEM   (0x0 ,(int)"",                              MENUITEM_SEPARATOR,                         0,                                                                      0 ), 
     447    MENU_ITEM   (0x51,LANG_MENU_BACK,                       MENUITEM_UP,                                                        0,                                                      0 ), 
     448    {0} 
     449}; 
     450static CMenu gps_values_submenu = {0x86,LANG_MENU_GPS_VALUES, NULL, gps_values_items }; 
     451 
     452 
     453static CMenuItem gps_submenu_items[] = { 
     454    MENU_ITEM   (0x2a,LANG_MENU_GPS_ON_OFF,                                     MENUITEM_BOOL,                                  &conf.gps_on_off,                                       0 ), 
     455    MENU_ITEM   (0x0 ,(int)"",                              MENUITEM_SEPARATOR,                         0,                                                                      0 ), 
     456    MENU_ITEM   (0x2a,LANG_MENU_GPS_KOMPASS_SHOW,           MENUITEM_PROC,                              (int*)show_kompass,                                     0 ), 
     457    MENU_ITEM   (0x2a,LANG_MENU_GPS_NAVI_SHOW,              MENUITEM_PROC,                      (int*)show_navi,                                        0 ), 
     458    MENU_ITEM   (0x2a,LANG_MENU_GPS_NAVI_HOME,              MENUITEM_PROC,                      (int*)navigate_home,                            0 ), 
     459    MENU_ITEM   (0x2a,LANG_MENU_GPS_TRACK_START,            MENUITEM_PROC,                      (int*)gpx_start_stop,                           0 ), 
     460    MENU_ITEM   (0x0 ,(int)"",                              MENUITEM_SEPARATOR,                         0,                                                                      0 ), 
     461    MENU_ITEM   (0x2a,LANG_MENU_GPS_VALUES,                     MENUITEM_SUBMENU,               &gps_values_submenu,                    0 ), 
     462    MENU_ITEM   (0x2a,LANG_MENU_GPS_LOGGING,                    MENUITEM_SUBMENU,               &gps_logging_submenu,                   0 ), 
     463    MENU_ITEM   (0x2a,LANG_MENU_GPS_TAGGING,                    MENUITEM_SUBMENU,               &gps_tagging_submenu,                   0 ), 
     464    MENU_ITEM   (0x2a,LANG_MENU_GPS_NAVIGATION,                 MENUITEM_SUBMENU,               &gps_navigation_submenu,            0 ), 
     465    MENU_ITEM   (0x0 ,(int)"",                              MENUITEM_SEPARATOR,                         0,                                                                      0 ), 
     466    MENU_ITEM   (0x51,LANG_MENU_BACK,                       MENUITEM_UP,                                        0,                                  0 ), 
     467    {0} 
     468}; 
     469static CMenu gps_submenu = {0x2a,LANG_MENU_GPS, NULL, gps_submenu_items }; 
     470 
    336471#endif 
    337472 
     
    406541    MENU_ITEM   (0x5c,LANG_MENU_SPACE_SHOW_PERCENT,         MENUITEM_BOOL|MENUITEM_ARG_CALLBACK, &conf.space_perc_show, (int)cb_space_perc ), 
    407542    MENU_ITEM   (0x5c,LANG_MENU_SPACE_SHOW_MB,              MENUITEM_BOOL|MENUITEM_ARG_CALLBACK, &conf.space_mb_show,   (int)cb_space_mb ), 
     543#if CAM_MULTIPART 
     544    MENU_ITEM   (0x5c,LANG_MENU_SHOW_PARTITION_NR,          MENUITEM_BOOL,          &conf.show_partition_nr, 0 ), 
     545#endif 
    408546    MENU_ENUM2  (0x5f,LANG_MENU_SPACE_WARN_TYPE,            &conf.space_warn_type,  gui_space_warn_type_modes ), 
    409547    MENU_ITEM   (0x58,LANG_MENU_SPACE_WARN_PERCENT,         MENUITEM_INT|MENUITEM_F_UNSIGNED|MENUITEM_F_MINMAX,   &conf.space_perc_warn,    MENU_MINMAX(1, 99) ), 
     
    424562    MENU_ITEM   (0x5c,LANG_MENU_DOF_HYPERFOCAL_IN_MISC,     MENUITEM_BOOL,      &conf.dof_hyperfocal_in_misc,       0 ), 
    425563    MENU_ITEM   (0x5c,LANG_MENU_DOF_DEPTH_LIMIT_IN_MISC,    MENUITEM_BOOL,      &conf.dof_depth_in_misc,            0 ), 
    426 #if !CAM_DRYOS 
    427       MENU_ITEM(0x5c,LANG_MENU_DOF_DIST_FROM_LENS,           MENUITEM_BOOL,      &conf.dof_dist_from_lens, 0), 
    428 #endif 
    429564    MENU_ITEM   (0x51,LANG_MENU_BACK,                       MENUITEM_UP,        0,                                  0 ), 
    430565    {0} 
     
    601736    //MENU_ITEM(0x65,LANG_MENU_VIS_ZEBRA_UNDER,         MENUITEM_COLOR_BG,  &conf.zebra_color, 0 ),         // moved to zebra menu 
    602737    //MENU_ITEM(0x65,LANG_MENU_VIS_ZEBRA_OVER,          MENUITEM_COLOR_FG,  &conf.zebra_color, 0 ),         // moved to zebra menu 
    603     MENU_ITEM(0x65,LANG_MENU_VIS_BATT_ICON,           MENUITEM_COLOR_FG,  &conf.batt_icon_color, 0 ), 
     738    //MENU_ITEM(0x65,LANG_MENU_VIS_BATT_ICON,           MENUITEM_COLOR_FG,  &conf.batt_icon_color, 0 ), 
    604739    MENU_ITEM(0x65,LANG_MENU_VIS_SPACE_ICON,          MENUITEM_COLOR_FG,  &conf.space_color, 0 ), 
    605740    MENU_ITEM(0x65,LANG_MENU_VIS_SPACE_ICON_BKG,      MENUITEM_COLOR_BG,  &conf.space_color, 0 ), 
     
    772907#ifndef OPTIONS_AUTOSAVE 
    773908    MENU_ITEM   (0x33,LANG_MENU_MAIN_SAVE_OPTIONS,          MENUITEM_PROC,      gui_menuproc_save,  0 ), 
    774  
     909#endif 
     910#ifdef CAM_HAS_GPS 
     911    MENU_ITEM   (0x2a,LANG_MENU_GPS,                        MENUITEM_SUBMENU,   &gps_submenu,           0 ), 
    775912#endif 
    776913    {0} 
     
    780917 
    781918static int gui_user_menu_flag; 
     919 
     920static char buf[256]; 
     921 
     922//------------------------------------------------------------------- 
     923#ifdef CAM_HAS_GPS 
     924 
     925void gpx_start_stop(int arg) { 
     926    int i = 0; 
     927    while( gps_submenu_items[i].value != (int*)gpx_start_stop ) i++;    //find entry 
     928    if( gps_submenu_items[i].text == LANG_MENU_GPS_TRACK_START ) {  //toggle text 
     929        gps_submenu_items[i].text = LANG_MENU_GPS_TRACK_STOP; 
     930                exit_gpx_record = 0; 
     931                init_gpx_record_task(); 
     932 
     933    } else { 
     934        gps_submenu_items[i].text = LANG_MENU_GPS_TRACK_START; 
     935                exit_gpx_record = 1; 
     936    } 
     937} 
     938 
     939void show_kompass(int arg){ 
     940    int i = 0; 
     941    while( gps_submenu_items[i].value != (int*)show_kompass ) i++;    //find entry 
     942    if( gps_submenu_items[i].text == LANG_MENU_GPS_KOMPASS_SHOW ) {  //toggle text 
     943        gps_submenu_items[i].text = LANG_MENU_GPS_KOMPASS_HIDE; 
     944                exit_gps_kompass = 0; 
     945                init_gps_kompass_task(); 
     946 
     947    } else { 
     948        gps_submenu_items[i].text = LANG_MENU_GPS_KOMPASS_SHOW; 
     949                exit_gps_kompass = 1; 
     950    } 
     951} 
     952 
     953void show_navi(int arg){ 
     954    int i = 0; 
     955    while( gps_submenu_items[i].value != (int*)show_navi ) i++;    //find entry 
     956    if( gps_submenu_items[i].text == LANG_MENU_GPS_NAVI_SHOW ) {  //toggle text 
     957        gps_submenu_items[i].text = LANG_MENU_GPS_NAVI_HIDE; 
     958                exit_gpx_record = 0; 
     959                exit_gps_navi = 0; 
     960                exit_gps_kompass = 0; 
     961                init_gps_trackback_task(); 
     962 
     963    } else { 
     964        gps_submenu_items[i].text = LANG_MENU_GPS_NAVI_SHOW; 
     965                exit_gps_navi = 1; 
     966                exit_gps_kompass = 1; 
     967                exit_gpx_record = 1; 
     968    } 
     969} 
     970 
     971void navigate_home(int arg){ 
     972        int i = 0; 
     973    while( gps_submenu_items[i].value != (int*)navigate_home ) i++;    //find entry 
     974    if( gps_submenu_items[i].text == LANG_MENU_GPS_NAVI_HOME ) {  //toggle text 
     975        gps_submenu_items[i].text = LANG_MENU_GPS_NAVI_HOME_END; 
     976                exit_gpx_record = 0; 
     977                exit_gps_navi = 0; 
     978                exit_gps_kompass = 0; 
     979                gps_navigate_home(); 
     980 
     981    } else { 
     982        gps_submenu_items[i].text = LANG_MENU_GPS_NAVI_HOME; 
     983                exit_gps_navi = 1; 
     984                exit_gps_kompass = 1; 
     985                exit_gpx_record = 1; 
     986    } 
     987} 
     988 
     989void mark_timezone(int arg){ 
     990write_timezone(); 
     991} 
     992 
     993void mark_home(int arg){ 
     994write_home(); 
     995} 
     996 
     997#endif 
    782998 
    783999//------------------------------------------------------------------- 
     
    8401056#endif 
    8411057 
     1058void cb_autoiso_menu_change(unsigned int item) 
     1059{ 
     1060    conf.autoiso_min_shutter_numerator = shutter1_values[conf.autoiso_shutter_enum]; 
     1061    conf.autoiso2_min_shutter_numerator =  shutter2_values[conf.autoiso2_shutter_enum]; 
     1062 
     1063    conf.autoiso_max_iso_auto_real=0;   // set invalid value of real autoiso as flag 'need recalc' 
     1064} 
     1065 
    8421066/* 
    8431067common code for "enum" menu items that just take a list of string values and don't require any special setters 
     
    8651089} 
    8661090 
     1091//------------------------------------------------------------------- 
     1092#if CAM_REMOTE 
     1093    const char* gui_show_usb_info_enum(int change, int arg) { 
     1094        static const char* modes[]={ "Off", "Icon", "Text"}; 
     1095 
     1096        gui_enum_value_change(&conf.usb_info_enable,change,sizeof(modes)/sizeof(modes[0])); 
     1097 
     1098        return modes[conf.usb_info_enable]; 
     1099    } 
     1100#endif 
     1101//------------------------------------------------------------------- 
    8671102#ifdef OPT_SCRIPTING 
    8681103//------------------------------------------------------------------- 
     
    10241259// Equivalent to ALT 
    10251260    static const char* modes[]={ "Never", "Alt", "Script", "Always" }; 
    1026         gui_enum_value_change(&conf.alt_prevent_shutdown,change,sizeof(modes)/sizeof(modes[0])); 
    1027  
    1028         conf_update_prevent_shutdown(); 
    1029  
     1261 
     1262    gui_enum_value_change(&conf.alt_prevent_shutdown,change,sizeof(modes)/sizeof(modes[0])); 
     1263         
    10301264    return modes[conf.alt_prevent_shutdown]; 
    10311265} 
     
    10451279 
    10461280//------------------------------------------------------------------- 
     1281const char* gui_tv_bracket_values_enum(int change, int arg) { 
     1282    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"}; 
     1283 
     1284    return gui_change_simple_enum(&conf.tv_bracket_value,change,modes,sizeof(modes)/sizeof(modes[0])); 
     1285} 
     1286 
    10471287const char* gui_tv_override_koef_enum(int change, int arg) { 
    10481288    static const char* modes[]={"Off", "1/100K", "1/10000", "1/1000","1/100","1/10", "1","10","100"}; 
     
    10681308    "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"}; 
    10691309    */ 
    1070     static char buf[4]; 
    10711310 
    10721311    // XXX This array above is redundant with platform/generic/shooting.c, this should be avoided! 
     
    11251364        strcpy(buf,"Inf."); 
    11261365    else 
    1127         sprintf(buf, "%d", (int)conf.subj_dist_override_value); 
     1366        sprintf(buf, "%d", shooting_get_subject_distance_override_value()); 
    11281367    return buf;  
    11291368} 
     
    11501389const char* gui_av_override_enum(int change, int arg) 
    11511390{ 
    1152     static char buf[8]; 
    1153  
    1154     conf.av_override_value += change; 
    1155  
     1391    conf.av_override_value+=change; 
    11561392    if (conf.av_override_value<0) conf.av_override_value=shooting_get_aperture_sizes_table_size()+6; 
    11571393    else if (conf.av_override_value>shooting_get_aperture_sizes_table_size()+6) conf.av_override_value=0; 
     
    11691405#if ZOOM_OVERRIDE 
    11701406    const char* gui_zoom_override_enum(int change, int arg) { 
    1171         static char buf[3]; 
    11721407        conf.zoom_override_value+=change; 
    11731408        if (conf.zoom_override_value<0) conf.zoom_override_value=zoom_points-1; 
     
    12451480//------------------------------------------------------------------- 
    12461481#ifdef OPT_DEBUGGING 
     1482    #define TASKLIST_MAX_LINES 12 // probably as much as will fit on screen 
     1483    #define TASKLIST_NUM_TASKS 64 // should be enough ? 
     1484    static void gui_debug_draw_tasklist(void) { 
     1485    #ifndef CAM_DRYOS 
     1486        int tasklist[TASKLIST_NUM_TASKS]; // max number of tasks we will look at 
     1487        int n_tasks,n_show_tasks,show_start; 
     1488        const char *name; 
     1489        int i; 
     1490        n_tasks = task_id_list_get(tasklist,sizeof(tasklist)/sizeof(tasklist[0])); 
     1491        show_start = debug_tasklist_start; 
     1492        n_show_tasks = n_tasks - show_start; 
     1493        // auto adjust to show the last N tasks 
     1494        if(n_show_tasks < TASKLIST_MAX_LINES) { 
     1495            show_start = n_tasks - TASKLIST_MAX_LINES; 
     1496            if(show_start<0) 
     1497                show_start = 0; 
     1498             n_show_tasks = n_tasks - show_start; 
     1499        } 
     1500        else if( n_show_tasks > TASKLIST_MAX_LINES ) { 
     1501            n_show_tasks = TASKLIST_MAX_LINES; 
     1502        } 
     1503        sprintf(buf,"%d-%d of %d tasks %c",show_start,show_start+n_show_tasks,n_tasks,debug_display_direction > 0?'+':'-'); 
     1504        draw_string(64,0,buf, conf.osd_color); 
     1505        for( i = 0;  i < n_show_tasks; i++ ) { 
     1506            // TODO get full task info 
     1507            name = task_name(tasklist[show_start+i]); 
     1508            if ( !name || !*name ) { 
     1509                name = "(unknown)"; 
     1510            } 
     1511            sprintf(buf,"%10s %8X",name,tasklist[show_start+i]); 
     1512            draw_string(64,16+16*i,buf, conf.osd_color); 
     1513        } 
     1514    #endif //CAM_DRYOS 
     1515    } 
     1516 
     1517    #define DEBUG_DISPLAY_NONE 0 
     1518    #define DEBUG_DISPLAY_PROPS 1 
     1519    #define DEBUG_DISPLAY_PARAMS 2 
    12471520#ifndef CAM_DRYOS 
    1248 #define TASKLIST_MAX_LINES 12 // probably as much as will fit on screen 
    1249 #define TASKLIST_NUM_TASKS 64 // should be enough ? 
    1250 static void gui_debug_draw_tasklist(void) { 
    1251     int tasklist[TASKLIST_NUM_TASKS]; // max number of tasks we will look at 
    1252     char buf[40]; // a single line of the list 
    1253     int n_tasks,n_show_tasks,show_start; 
    1254     const char *name; 
    1255     int i; 
    1256     n_tasks = task_id_list_get(tasklist,sizeof(tasklist)/sizeof(tasklist[0])); 
    1257     show_start = debug_tasklist_start; 
    1258     n_show_tasks = n_tasks - show_start; 
    1259     // auto adjust to show the last N tasks 
    1260     if(n_show_tasks < TASKLIST_MAX_LINES) { 
    1261         show_start = n_tasks - TASKLIST_MAX_LINES; 
    1262         if(show_start<0) 
    1263             show_start = 0; 
    1264          n_show_tasks = n_tasks - show_start; 
    1265     } 
    1266     else if( n_show_tasks > TASKLIST_MAX_LINES ) { 
    1267         n_show_tasks = TASKLIST_MAX_LINES; 
    1268     } 
    1269     sprintf(buf,"%d-%d of %d tasks %c",show_start,show_start+n_show_tasks,n_tasks,debug_display_direction > 0?'+':'-'); 
    1270     draw_string(64,0,buf, conf.osd_color); 
    1271     for( i = 0;  i < n_show_tasks; i++ ) { 
    1272         // TODO get full task info 
    1273         name = task_name(tasklist[show_start+i]); 
    1274         if ( !name || !*name ) { 
    1275             name = "(unknown)"; 
    1276         } 
    1277         sprintf(buf,"%10s %8X",name,tasklist[show_start+i]); 
    1278         draw_string(64,16+16*i,buf, conf.osd_color); 
    1279     } 
    1280 } 
    1281 #endif //CAM_DRYOS 
    1282  
    1283 #define DEBUG_DISPLAY_NONE 0 
    1284 #define DEBUG_DISPLAY_PROPS 1 
    1285 #define DEBUG_DISPLAY_PARAMS 2 
     1521    #define DEBUG_DISPLAY_TASKS 3 
     1522#endif 
     1523 
     1524    static void gui_debug_shortcut(void) { 
     1525        static int lastcall = -1; 
     1526        int t=get_tick_count(); 
     1527        if ( lastcall != -1) { 
     1528            if (t-lastcall <= 400) 
     1529                debug_display_direction = -debug_display_direction; 
     1530        } 
     1531        lastcall=t; 
     1532        switch(conf.debug_shortcut_action) { 
     1533            case 1: 
     1534                dump_memory(); 
     1535            break; 
     1536            case 2: 
    12861537#ifndef CAM_DRYOS 
    1287 #define DEBUG_DISPLAY_TASKS 3 
    1288 #endif 
    1289  
    1290 static void gui_debug_shortcut(void) { 
    1291     static int lastcall = -1; 
    1292     int t=get_tick_count(); 
    1293     if ( lastcall != -1) { 
    1294         if (t-lastcall <= 400) 
    1295             debug_display_direction = -debug_display_direction; 
    1296     } 
    1297     lastcall=t; 
    1298     switch(conf.debug_shortcut_action) { 
    1299         case 1: 
    1300             dump_memory(); 
    1301         break; 
    1302         case 2: 
    1303 #ifndef CAM_DRYOS 
    1304             if(conf.debug_display == DEBUG_DISPLAY_TASKS) { 
    1305                 debug_tasklist_start += debug_display_direction*(TASKLIST_MAX_LINES-2); // a little intentional overlap 
    1306                 if(debug_tasklist_start >= TASKLIST_NUM_TASKS || debug_tasklist_start < 0) 
    1307                     debug_tasklist_start = 0; 
    1308             } 
    1309             else 
    1310 #endif 
    1311             if (conf.debug_display == DEBUG_DISPLAY_PROPS || conf.debug_display == DEBUG_DISPLAY_PARAMS) { 
    1312                 conf.debug_propcase_page += debug_display_direction*1; 
    1313                 if(conf.debug_propcase_page > 128 || conf.debug_propcase_page < 0) 
    1314                     conf.debug_propcase_page = 0; 
    1315             } 
    1316         break; 
    1317         case 3: 
    1318             gui_compare_props(1); 
    1319         break; 
    1320     } 
    1321 } 
     1538                if(conf.debug_display == DEBUG_DISPLAY_TASKS) { 
     1539                    debug_tasklist_start += debug_display_direction*(TASKLIST_MAX_LINES-2); // a little intentional overlap 
     1540                    if(debug_tasklist_start >= TASKLIST_NUM_TASKS || debug_tasklist_start < 0) 
     1541                        debug_tasklist_start = 0; 
     1542                } 
     1543                else  
     1544#endif 
     1545                if (conf.debug_display == DEBUG_DISPLAY_PROPS || conf.debug_display == DEBUG_DISPLAY_PARAMS) { 
     1546                    conf.debug_propcase_page += debug_display_direction*1; 
     1547                    if(conf.debug_propcase_page > 128 || conf.debug_propcase_page < 0)  
     1548                        conf.debug_propcase_page = 0; 
     1549                } 
     1550            break; 
     1551            case 3: 
     1552                gui_compare_props(1); 
     1553            break; 
     1554        } 
     1555    } 
    13221556 
    13231557#endif 
     
    13751609static volatile int gui_in_redraw; 
    13761610static int gui_splash, gui_splash_mode; 
    1377 static char osd_buf[32]; 
    13781611 
    13791612//------------------------------------------------------------------- 
     
    13881621    } 
    13891622    gui_splash = (conf.splash_show)?SPLASH_TIME:0; 
    1390     user_menu_restore(); 
    1391     gui_lang_init(); 
    13921623    draw_init(); 
    13931624 
     
    14531684    static int logo_size; 
    14541685    if (gui_splash) { 
    1455                 static int need_logo=1; // don't use logo ptr, since we don't want to keep re-trying 
    1456                 if(need_logo) { 
    1457                 const char *logo_name="A/CHDK/DATA/logo.dat"; 
     1686        static int need_logo=1; // don't use logo ptr, since we don't want to keep re-trying 
     1687        if(need_logo) { 
     1688#if defined(VER_CHDK) 
     1689            const char *logo_name="A/CHDK/DATA/logo.dat"; 
     1690#else   // CHDK-DE 
     1691            const char *logo_name="A/CHDK/DATA/logo_de.dat"; 
     1692#endif 
    14581693            FILE *fd; 
    14591694            struct stat st; 
    14601695            need_logo=0; 
    14611696            if (stat(logo_name,&st) == 0) { 
    1462                                 logo_size=st.st_size; 
    1463                                 logo=malloc(logo_size); 
    1464                                 if(logo) { 
    1465                                         fd = fopen(logo_name, "rb"); 
    1466                                         if(fd){ 
    1467                                                 fread(logo,1,logo_size,fd); 
    1468                                                 fclose(fd); 
    1469                                         } 
    1470                                         else { 
    1471                                                 free(logo); 
    1472                                                 logo=NULL; 
    1473                                         } 
    1474                 } 
    1475                         } 
    1476                 } 
     1697                logo_size=st.st_size; 
     1698                logo=malloc(logo_size); 
     1699                if(logo) { 
     1700                    fd = fopen(logo_name, "rb"); 
     1701                    if(fd){ 
     1702                        fread(logo,1,logo_size,fd); 
     1703                        fclose(fd); 
     1704                    } 
     1705                    else { 
     1706                        free(logo); 
     1707                        logo=NULL; 
     1708                        need_logo=1; 
     1709                    } 
     1710                } 
     1711            } 
     1712        } 
    14771713        if (gui_splash>(SPLASH_TIME-4)) { 
    14781714            gui_draw_splash(logo,logo_size); 
     
    14831719        } 
    14841720        --gui_splash; 
    1485                 if(!gui_splash) { 
    1486                         free(logo); 
    1487                 } 
     1721        if(!gui_splash) { 
     1722            free(logo); 
     1723            logo=NULL; 
     1724            need_logo=1; 
     1725        } 
    14881726    } 
    14891727} 
     
    15211759 
    15221760#ifdef CAM_DISP_ALT_TEXT 
    1523     draw_txt_string(20, 14, "<ALT>", MAKE_COLOR(COLOR_RED, COLOR_WHITE)); 
     1761    draw_string(((CAM_SCREEN_WIDTH/2)-(FONT_WIDTH*5/2)), (CAM_SCREEN_HEIGHT-FONT_HEIGHT), "<ALT>", MAKE_COLOR(COLOR_RED, COLOR_WHITE)); 
    15241762#endif 
    15251763 
     
    19592197    if (conf.debug_misc_vals_show) { 
    19602198        // show value of Memory Address selected with Memory Browser 
    1961         sprintf(osd_buf, "MEM: %#8x", (void*) (*(int*)conf.mem_view_addr_init));    // show value in Hexadecimal integer 
    1962         //sprintf(osd_buf, "MEM: %8u", (void*) (*(int*)conf.mem_view_addr_init));    // show value in Decimal integer 
    1963         draw_txt_string(28,  9, osd_buf, conf.osd_color); 
     2199        sprintf(buf, "MEM: %#8x", (void*) (*(int*)conf.mem_view_addr_init));    // show value in Hexadecimal integer 
     2200        //sprintf(buf, "MEM: %8u", (void*) (*(int*)conf.mem_view_addr_init));    // show value in Decimal integer 
     2201        draw_txt_string(28,  9, buf, conf.osd_color); 
    19642202 
    19652203        // show Autofocus status (if AF is working) 
    19662204        extern volatile long focus_busy; 
    1967         sprintf(osd_buf, "FB:  %8u", focus_busy); 
    1968         draw_txt_string(28, 10, osd_buf, conf.osd_color); 
     2205        sprintf(buf, "FB:  %8u", focus_busy); 
     2206        draw_txt_string(28, 10, buf, conf.osd_color); 
    19692207 
    19702208        // show Zoom status (if Lens is moving) 
    19712209        extern volatile long zoom_busy; 
    1972         sprintf(osd_buf, "ZB:  %8u", zoom_busy); 
    1973         draw_txt_string(28, 11, osd_buf, conf.osd_color); 
     2210        sprintf(buf, "ZB:  %8u", zoom_busy); 
     2211        draw_txt_string(28, 11, buf, conf.osd_color); 
    19742212 
    19752213        // show USB-Power status to debug remote / sync 
    1976         sprintf(osd_buf, "USB: %8u", get_usb_power(1)); 
    1977         draw_txt_string(28, 12, osd_buf, conf.osd_color); 
     2214        sprintf(buf, "USB: %8u", get_usb_power(1)); 
     2215        draw_txt_string(28, 12, buf, conf.osd_color); 
    19782216 
    19792217        /* 
    19802218        // some cameras missing zoom_status 
    1981         sprintf(osd_buf, "ZS:  %#8x", zoom_status); 
    1982         draw_txt_string(28, 13, osd_buf, conf.osd_color); 
     2219        sprintf(buf, "ZS:  %#8x", zoom_status); 
     2220        draw_txt_string(28, 13, buf, conf.osd_color); 
    19832221        */ 
    19842222 
    19852223        /* 
    1986         sprintf(osd_buf, "VP:  %#8x", vid_get_viewport_fb_d()); 
    1987         draw_txt_string(28, 14, osd_buf, conf.osd_color); 
     2224        sprintf(buf, "VP:  %#8x", vid_get_viewport_fb_d()); 
     2225        draw_txt_string(28, 14, buf, conf.osd_color); 
    19882226        */ 
    19892227 
     
    19912229        // debug keymap, KEYS_MASKx, SD_READONLY_FLAG, USB_MASK 
    19922230        extern long physw_status[3]; 
    1993         sprintf(osd_buf, "PS1: %#8x", physw_status[0]); 
    1994         draw_txt_string(28, 10, osd_buf, conf.osd_color); 
    1995  
    1996         sprintf(osd_buf, "PS2: %#8x", physw_status[1]); 
    1997         draw_txt_string(28, 11, osd_buf, conf.osd_color); 
    1998  
    1999         sprintf(osd_buf, "PS3: %#8x", physw_status[2]); 
    2000         draw_txt_string(28, 12, osd_buf, conf.osd_color); 
     2231        sprintf(buf, "PS1: %#8x", physw_status[0]); 
     2232        draw_txt_string(28, 10, buf, conf.osd_color); 
     2233 
     2234        sprintf(buf, "PS2: %#8x", physw_status[1]); 
     2235        draw_txt_string(28, 11, buf, conf.osd_color); 
     2236 
     2237        sprintf(buf, "PS3: %#8x", physw_status[2]); 
     2238        draw_txt_string(28, 12, buf, conf.osd_color); 
    20012239        */ 
    20022240 
    20032241        /* 
    20042242        long v=get_file_counter(); 
    2005         sprintf(osd_buf, "1:%03d-%04d", (v>>18)&0x3FF, (v>>4)&0x3FFF); 
    2006         sprintf(osd_buf, "1:%d, %08X", xxxx, eeee); 
     2243        sprintf(buf, "1:%03d-%04d", (v>>18)&0x3FF, (v>>4)&0x3FFF); 
     2244        sprintf(buf, "1:%d, %08X", xxxx, eeee); 
    20072245        */ 
    20082246    } 
    20092247    { 
    2010         static char sbuf[100]; 
    20112248        int r,i, p, len; 
    20122249        if (conf.debug_display == DEBUG_DISPLAY_PROPS){ 
     
    20162253                p = conf.debug_propcase_page*10+i; 
    20172254                get_property_case(p, &r, 4); 
    2018                 sprintf(sbuf, "%3d: %d              ", p, r); 
    2019                 sbuf[20]=0; 
    2020                 draw_string(64,16+16*i,sbuf, conf.osd_color); 
     2255                sprintf(buf, "%3d: %d              ", p, r); 
     2256                buf[20]=0; 
     2257                draw_string(64,16+16*i,buf, conf.osd_color); 
    20212258            } 
    20222259        } 
     
    20312268                p = conf.debug_propcase_page*10+i; 
    20322269                if (p>=get_flash_params_count()) { 
    2033                     sprintf(sbuf, "%3d: This parameter does not exists", p); 
     2270                    sprintf(buf, "%3d: This parameter does not exists", p); 
    20342271                } else  { 
    20352272                    len=FlashParamsTable[p][1]>>16; 
    20362273                    if ((len==1)||(len==2)||(len==4)){ 
    2037                         get_parameter_data(p, &r, len); 
    2038                         sprintf(sbuf, "%3d: %30d :%2d ", p, r,len); 
     2274                        get_parameter_data(p, &r, len);  
     2275                        sprintf(buf, "%3d: %30d :%2d ", p, r,len); 
    20392276                    } 
    20402277                    else { 
     
    20422279                        get_parameter_data(p, &s, count); 
    20432280                        s[count]=0; 
    2044                         sprintf(sbuf, "%3d: %30s :%2d ", p, s,len); 
     2281                        sprintf(buf, "%3d: %30s :%2d ", p, s,len); 
    20452282                    } 
    20462283                } 
    2047                 draw_string(16,16+16*i,sbuf, conf.osd_color); 
     2284                draw_string(16,16+16*i,buf, conf.osd_color); 
    20482285            } 
    20492286        } 
     
    21732410                 pressed = 1; 
    21742411             } 
    2175         } else { 
     2412        } 
     2413#if !CAM_HAS_MANUAL_FOCUS && CAM_HAS_ZOOM_LEVER && CAM_CAN_SD_OVERRIDE 
     2414        // Todo, check for AF and if its running, don't override 
     2415                else if (kbd_is_key_pressed(SHORTCUT_SD_SUB)) { 
     2416            if (!pressed) { 
     2417                            if (!(conf.override_disable==1) && shooting_can_focus() && shooting_get_common_focus_mode()) { 
     2418                                gui_subj_dist_override_value_enum(-1,0); 
     2419                                shooting_set_focus(shooting_get_subject_distance_override_value(),SET_NOW); 
     2420                //pressed = 1; 
     2421                            } 
     2422            } 
     2423        } else if (kbd_is_key_pressed(SHORTCUT_SD_ADD)) { 
     2424            if (!pressed) { 
     2425                            if (!(conf.override_disable==1) && shooting_can_focus() && shooting_get_common_focus_mode()) { 
     2426                                gui_subj_dist_override_value_enum(1,0); 
     2427                                shooting_set_focus(shooting_get_subject_distance_override_value(),SET_NOW); 
     2428                //pressed = 1; 
     2429                            } 
     2430            } 
     2431        } 
     2432#endif 
     2433                else { 
    21762434            pressed = 0; 
    21772435        } 
     
    22132471     
    22142472    if ((gui_get_mode()==GUI_MODE_NONE || gui_get_mode()==GUI_MODE_ALT) && ( 
    2215      (kbd_is_key_pressed(KEY_SHOOT_HALF) && ((conf.show_histo==SHOW_HALF)/* || (m&MODE_MASK) == MODE_PLAY*/)) || 
    2216      ((conf.show_histo==SHOW_ALWAYS)  &&  !((m&MODE_MASK) == MODE_PLAY) && (recreview_hold==0)) 
    2217     ) && 
     2473     (kbd_is_key_pressed(KEY_SHOOT_HALF) && ((conf.show_histo==SHOW_HALF)/* || (m&MODE_MASK) == MODE_PLAY*/)) ||  
     2474     ((conf.show_histo==SHOW_ALWAYS)  &&  /* !((m&MODE_MASK) == MODE_PLAY) && */ (recreview_hold==0)) 
     2475    ) &&  
    22182476    (mode_photo || (m&MODE_SHOOTING_MASK)==MODE_STITCH)) { 
    22192477        gui_osd_draw_histo(); 
     
    22492507        gui_usb_draw_osd(); 
    22502508        if(conf.show_temp>0) gui_osd_draw_temp(); 
     2509#ifdef CAM_HAS_GPS 
     2510        if (((int)conf.gps_on_off ==1) && (exit_gps_data==1)) 
     2511                { 
     2512                        _CreateTask("GPSDATA", 0x19, 0x400, gps_get_data, 0); 
     2513                        exit_gps_data=0; 
     2514                } 
     2515#endif 
    22512516        if (conf.fast_ev && !mode_video && (m&MODE_MASK) == MODE_REC ) gui_osd_draw_ev(); 
    22522517    } 
     
    22622527#if CAM_DRAW_EXPOSITION 
    22632528    if (gui_get_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) { 
    2264      strcpy(osd_buf,shooting_get_tv_str()); 
    2265      strcat(osd_buf,"\"  F"); 
    2266      strcat(osd_buf,shooting_get_av_str()); 
    2267      draw_txt_string(22-strlen(osd_buf)/2, 14, osd_buf, conf.osd_color); 
     2529     strcpy(buf,shooting_get_tv_str()); 
     2530     strcat(buf,"\"  F"); 
     2531     strcat(buf,shooting_get_av_str()); 
     2532     draw_txt_string(22-strlen(buf)/2, 14, buf, conf.osd_color); 
    22682533    } 
    22692534#endif 
     
    22812546            msg = ubasic_errstrings[UBASIC_E_UNKNOWN_ERROR]; 
    22822547        } else { 
    2283             msg = ubasic_errstrings[ubasic_error]; 
    2284         } 
    2285         sprintf(osd_buf, "uBASIC:%d %s ", ubasic_linenumber(), msg); 
    2286         draw_txt_string(0, 0, osd_buf, MAKE_COLOR(COLOR_RED, COLOR_YELLOW)); 
     2548        msg = ubasic_errstrings[ubasic_error]; 
     2549    } 
     2550    sprintf(buf, "uBASIC:%d %s ", ubasic_linenumber(), msg); 
     2551    draw_txt_string(0, 0, buf, MAKE_COLOR(COLOR_RED, COLOR_YELLOW)); 
    22872552    } 
    22882553#endif 
     
    23122577//------------------------------------------------------------------- 
    23132578void gui_show_build_info(int arg) { 
    2314     static char buf[192]; 
    23152579    static char comp[64]; 
    23162580 
     
    23232587    sprintf(comp, "UNKNOWN" ); 
    23242588#endif 
    2325     sprintf(buf, lang_str(LANG_MSG_BUILD_INFO_TEXT), HDK_VERSION, BUILD_NUMBER, __DATE__, __TIME__, PLATFORM, PLATFORMSUB, comp); 
    2326 gui_mbox_init(LANG_MSG_BUILD_INFO_TITLE, (int)buf, MBOX_FUNC_RESTORE|MBOX_TEXT_LEFT, NULL); 
     2589    sprintf(buf, lang_str(LANG_MSG_BUILD_INFO_TEXT), HDK_VERSION, BUILD_NUMBER, BUILD_SVNREV, __DATE__, __TIME__, PLATFORM, PLATFORMSUB, comp); 
     2590    gui_mbox_init(LANG_MSG_BUILD_INFO_TITLE, (int)buf, MBOX_FUNC_RESTORE|MBOX_TEXT_LEFT, NULL); 
    23272591} 
    23282592 
    23292593//------------------------------------------------------------------- 
    23302594void gui_show_memory_info(int arg) { 
    2331     static char buf[96];    // buffer size was 64, size increased for none english language 
    2332  
    23332595    sprintf(buf, lang_str(LANG_MSG_MEMORY_INFO_TEXT), core_get_free_memory(), MEMISOSIZE, &_start, &_end); 
    23342596    gui_mbox_init(LANG_MSG_MEMORY_INFO_TITLE, (int)buf, MBOX_FUNC_RESTORE|MBOX_TEXT_CENTER, NULL); 
     
    23412603 
    23422604//------------------------------------------------------------------- 
     2605#if defined(VER_CHDK) 
     2606#define LOGO_WIDTH  149 
     2607#define LOGO_HEIGHT 84 
     2608#else 
     2609#define LOGO_WIDTH  169 
     2610#define LOGO_HEIGHT 74 
     2611#endif 
     2612 
    23432613void gui_draw_splash(char* logo, int logo_size) { 
    23442614    coord w, h, x, y; 
    23452615    static const char *text[] = { 
    2346         "CHDK Firmware '" HDK_VERSION " " BUILD_NUMBER "'" , 
     2616        "CHDK Version '" HDK_VERSION " " BUILD_NUMBER "-" BUILD_SVNREV "'" ,  
    23472617        "Build: " __DATE__ " " __TIME__ , 
    23482618        "Camera: " PLATFORM " - " PLATFORMSUB }; 
     
    23692639      int mx=0; 
    23702640      int my=0; 
    2371       int offset_x = (camera_screen.width-150)>>1; 
    2372       int offset_y = ((camera_screen.height-84)>>1) - 42; 
     2641      int offset_x = (CAM_SCREEN_WIDTH-LOGO_WIDTH)>>1; 
     2642      int offset_y = ((CAM_SCREEN_HEIGHT-LOGO_HEIGHT)>>1) - 42; 
    23732643      const color color_lookup[8] = {COLOR_BLACK, 
    23742644                                    COLOR_SPLASH_RED/*0x2E redish*/, 
     
    23862656                  draw_pixel(offset_x+mx,offset_y+my,c); 
    23872657              } 
    2388               if (mx==149){ 
     2658              if (mx==LOGO_WIDTH){ 
    23892659                  mx=0; 
    23902660                  my++; 
    23912661              }else{ 
    23922662                  mx++; 
    2393               } 
     2663              }      
    23942664          } 
    23952665      } 
Note: See TracChangeset for help on using the changeset viewer.