void add_script_to_user_menu( char * fname , char * title ) { int i ; /* * Insert script info at end of existing entries */ for(i = 1; i < USER_MENU_ITEMS + 1; i++) { if(!user_submenu_items[i].text) // insert script title & full filename in next available spot { strcpy(conf.user_menu_script_file[i-1], fname) ; strcpy(conf.user_menu_script_title[i-1], title) ; user_submenu_items[i].symbol = 0x35; user_submenu_items[i].opt_len = 0 ; user_submenu_items[i].type = MENUITEM_PROC; user_submenu_items[i].text = (int) conf.user_menu_script_title[i-1]; user_submenu_items[i].value = (int *) gui_load_user_menu_script ; user_submenu_items[i].arg = (int) conf.user_menu_script_file[i-1] ; char buf[200]; sprintf(buf,lang_str(LANG_USER_MENU_ITEM_ADDED), lang_str(user_submenu_items[i].text)); gui_mbox_init(LANG_MENU_USER_MENU, (int)buf, MBOX_BTN_OK|MBOX_TEXT_CENTER, NULL); return; } } gui_mbox_init(LANG_MENU_USER_MENU, LANG_USER_MENU_FULL, MBOX_BTN_OK|MBOX_TEXT_CENTER, NULL); }
static void add_extern_to_user_menu(const char* fname, char* title, char sym, short type, int* func) { int i; /* * Insert script/module info at end of existing entries */ CMenuItem *items = (CMenuItem*)user_submenu.menu; gui_menu_erase_and_redraw(); for(i = 1; i < USER_MENU_ITEMS + 1; i++) { if (!items[i].text) // insert script/module title & full filename in next available spot { if (conf.user_menu_vars.items[i-1].script_file == 0) conf.user_menu_vars.items[i-1].script_file = malloc(CONF_STR_LEN); strcpy(conf.user_menu_vars.items[i-1].script_file, fname); if (conf.user_menu_vars.items[i-1].script_title == 0) conf.user_menu_vars.items[i-1].script_title = malloc(CONF_STR_LEN); strcpy(conf.user_menu_vars.items[i-1].script_title, title); items[i].symbol = sym; items[i].opt_len = 0; items[i].type = type; items[i].text = (int) conf.user_menu_vars.items[i-1].script_title; items[i].value = func; items[i].arg = (int) conf.user_menu_vars.items[i-1].script_file; sprintf(msgbuf,lang_str(LANG_USER_MENU_ITEM_ADDED), lang_str(items[i].text)); gui_mbox_init(LANG_MENU_USER_MENU, (int)msgbuf, MBOX_BTN_OK|MBOX_TEXT_CENTER|MBOX_FUNC_RESTORE, NULL); camera_info.state.user_menu_has_changed = 1; return; } } gui_mbox_init(LANG_MENU_USER_MENU, LANG_USER_MENU_FULL, MBOX_BTN_OK|MBOX_TEXT_CENTER, NULL); }
static void del_usermenu() { if (inUserMenu(gui_menu_curr_item)) { mod_menu_item = curr_menu->menu[gui_menu_curr_item]; sprintf(msgbuf, lang_str(LANG_USER_MENU_DEL), lang_str(mod_menu_item.text)); gui_mbox_init(LANG_INFORMATION, (int)msgbuf, MBOX_BTN_YES_NO|MBOX_DEF_BTN1|MBOX_TEXT_CENTER, del_usermenu_item); } }
//------------------------------------------------------------------- void gui_calendar_draw() { int x, y; static char str[32]; int w, d, i; static struct tm *ttm; if (need_redraw == 2) gui_calendar_initial_draw(); ttm = get_localtime(); sprintf(str, " %2u %s %04u %2u:%02u:%02u ", ttm->tm_mday, lang_str(months[ttm->tm_mon]), 1900+ttm->tm_year, ttm->tm_hour, ttm->tm_min, ttm->tm_sec); draw_string(camera_screen.disp_left+FONT_WIDTH*8, 0, str, MAKE_COLOR(COLOR_BLACK, COLOR_WHITE)); if (need_redraw) { need_redraw = 0; i = strlen(lang_str(months[cal_month])); x = cal_x + (cal_w-FONT_WIDTH*2-FONT_WIDTH*4-FONT_WIDTH*2-i*FONT_WIDTH)/2; y = cal_y + 4; draw_rectangle(cal_x+FONT_WIDTH, y, cal_x+cal_w-FONT_WIDTH-FONT_WIDTH*4-FONT_WIDTH, y+FONT_HEIGHT, MAKE_COLOR(BG_COLOR(TITLE_COLOR), BG_COLOR(TITLE_COLOR)), RECT_BORDER0|DRAW_FILLED); draw_string(x+FONT_WIDTH, y, lang_str(months[cal_month]), TITLE_COLOR); sprintf(str, "%04d", cal_year); draw_string(cal_x+cal_w-FONT_WIDTH*2-FONT_WIDTH*4, y, str, TITLE_COLOR); d = calendar_days_in_month(cal_month+1, cal_year); w = calendar_day_of_week(1, cal_month+1, cal_year); y += FONT_HEIGHT+4+4; y += FONT_HEIGHT+4; for (x=0; x<w; ++x) { draw_string(cal_x+x*FONT_WIDTH*4, y, " ", (x<5)?CALENDAR_COLOR:WEEKEND_COLOR); } for (i=1; i<=d; ++i) { sprintf(str, " %2d ", i); draw_string(cal_x+x*FONT_WIDTH*4, y, str, (x<5)?CALENDAR_COLOR:WEEKEND_COLOR); if (++x>6) { x=0; y += FONT_HEIGHT+4; } } for (; y<cal_y+cal_h; y += FONT_HEIGHT+4, x=0) { for (; x<7; ++x) { draw_string(cal_x+x*FONT_WIDTH*4, y, " ", (x<5)?CALENDAR_COLOR:WEEKEND_COLOR); } } } }
int fselect_sort(const void* v1, const void* v2) { const CMenuItem *i1=v1, *i2=v2; if (i1->type == MENUITEM_SUBMENU ) { if (i2->type != MENUITEM_SUBMENU ) return -1; return strcmp( lang_str(i1->text), lang_str(i2->text) ); } else { if (i2->type == MENUITEM_SUBMENU ) return 1; return strcmp( lang_str(i1->text), lang_str(i2->text) ); } }
//------------------------------------------------------------------- static void gui_calendar_initial_draw() { int x, i; draw_rectangle(camera_screen.disp_left, 0, camera_screen.disp_right, camera_screen.height-1, MAKE_COLOR(COLOR_BLACK, COLOR_BLACK), RECT_BORDER0|DRAW_FILLED); draw_string(camera_screen.disp_left+FONT_WIDTH, 0, lang_str(LANG_CALENDAR_TODAY), MAKE_COLOR(COLOR_BLACK, COLOR_WHITE)); draw_rectangle(cal_x-3, cal_y-3, cal_x+cal_w+2, cal_y+cal_h+2, CALENDAR_COLOR, RECT_BORDER1); draw_rectangle(cal_x-1, cal_y-1, cal_x+cal_w, cal_y+FONT_HEIGHT+8, TITLE_COLOR, RECT_BORDER1|DRAW_FILLED); draw_rectangle(cal_x-1, cal_y+FONT_HEIGHT+8, cal_x+cal_w, cal_y+cal_h, CALENDAR_COLOR, RECT_BORDER1|DRAW_FILLED); draw_rectangle(cal_x+cal_w-FONT_WIDTH*4*2, cal_y+FONT_HEIGHT+8+1, cal_x+cal_w-1, cal_y+cal_h-1, MAKE_COLOR(BG_COLOR(WEEKEND_COLOR), BG_COLOR(WEEKEND_COLOR)), RECT_BORDER0|DRAW_FILLED); for (x=cal_x+FONT_WIDTH/2, i=0; i<7; x+=FONT_WIDTH*4, ++i) { draw_string(x, cal_y+4+FONT_HEIGHT+4+4, lang_str(days[i]), (i<5)?CALENDAR_COLOR:WEEKEND_COLOR); } }
//------------------------------------------------------------------- static void gui_bench_draw_results(int pos, int value) { if (value!=-1) { if (value) sprintf(buf, "%7d Kb/s ", value/1024); else sprintf(buf, lang_str(LANG_BENCH_CALCULATING)); draw_txt_string(18, pos, buf, MAKE_COLOR(SCREEN_COLOR, COLOR_WHITE)); } }
//------------------------------------------------------------------- static void gui_bench_draw_results(int pos, int value) { if (value!=-1) { if (value) sprintf(buf, "%7d Kb/s ", value/1024); else sprintf(buf, lang_str(LANG_BENCH_CALCULATING)); draw_string(18*FONT_WIDTH, pos*FONT_HEIGHT, buf, MAKE_COLOR(COLOR_BLACK, COLOR_WHITE)); } }
//------------------------------------------------------------------- void add_user_menu_item(CMenuItem curr_menu_item, int* cur_memnu_item_indx) { int i; /* * Insert new Item at end of existing entries */ for(i = 1; i < USER_MENU_ITEMS + 1; i++) { if(!user_submenu_items[i].text) { user_submenu_items[i] = curr_menu_item; char buf[200]; sprintf(buf,lang_str(LANG_USER_MENU_ITEM_ADDED), lang_str(curr_menu_item.text)); gui_mbox_init(LANG_MENU_USER_MENU, (int)buf, MBOX_BTN_OK|MBOX_TEXT_CENTER, NULL); return; } } gui_mbox_init(LANG_MENU_USER_MENU, LANG_USER_MENU_FULL, MBOX_BTN_OK|MBOX_TEXT_CENTER, NULL); }
void script_start( int autostart ) { int i; shot_histogram_set(0); if (autostart) auto_started = 1; else auto_started = 0; delay_target_ticks = 0; kbd_int_stack_ptr = 0; kbd_last_clicked = 0; /*if (!autostart)*/ kbd_key_release_all(); script_console_clear(); script_print_screen_init(); if (conf.script_param_save) { save_params_values(0); } if( autostart ) script_console_add_line("***Autostart***"); else script_console_add_line(lang_str(LANG_CONSOLE_TEXT_STARTED)); if( is_lua() ) { if( !lua_script_start(state_ubasic_script) ) { script_print_screen_end(); wait_and_end(); return; } for (i=0; i<SCRIPT_NUM_PARAMS; ++i) { if( script_params[i][0] ) { char var = 'a'+i; lua_pushlstring( L, &var, 1 ); lua_pushnumber( L, conf.ubasic_vars[i] ); lua_settable( L, LUA_GLOBALSINDEX ); } } state_lua_kbd_first_call_to_resume = 1; } else { ubasic_init(state_ubasic_script); for (i=0; i<SCRIPT_NUM_PARAMS; ++i) { ubasic_set_variable(i, conf.ubasic_vars[i]); } } state_kbd_script_run = 1; if (conf.alt_prevent_shutdown != ALT_PREVENT_SHUTDOWN_ALT_SCRIPT) { enable_shutdown(); } }
void script_console_add_line(long str_id) { const char* str = lang_str(str_id); console_add_line(str); if (print_screen_p && (print_screen_d >= 0)) { char nl = '\n'; // TODO this should be uncached memory write(print_screen_d, str, strlen(str) ); write(print_screen_d, &nl, 1); } }
char* ago_time(time_t t, IRC_User *u) { int years,months,days,hours,minutes,seconds; t = irc_CurrentTime -t; years = t/(12*30*24*3600); t %= 12*30*24*3600; months = t/(30*24*3600); t %= 30*24*3600; days = t/(24*3600); t %= 24*3600; hours = t/3600; t %= 3600; minutes = t/60; t %= 60; seconds = t; if(years) return lang_str(u, AGO_TIME_Y, years, months, days); else if(months) return lang_str(u, AGO_TIME_M, months, days, hours); if(days) return lang_str(u, AGO_TIME_D, days, hours, minutes); else return lang_str(u,AGO_TIME, hours, minutes, seconds); }
//------------------------------------------------------------------- static int parse_module( char* content, int size ) { struct flat_hdr* flat = (struct flat_hdr*)content; memset( &minfo, 0, sizeof(minfo) ); modulename[0]=0; //strncpy ( modulename, "no name", sizeof(modulename) ); if ( size < sizeof (struct flat_hdr) ) return 0; char b[5]; memcpy(b,flat->magic,4); b[4]=0; if ( strncmp( flat->magic, FLAT_MAGIC_NUMBER, sizeof(flat->magic) ) ) return 0; if ( flat->rev != FLAT_VERSION ) return 0; if ( flat->_module_info > (size - sizeof(struct ModuleInfo)) ) return 0; memcpy( &minfo, content+flat->_module_info, sizeof(struct ModuleInfo) ); if ( minfo.magicnum != MODULEINFO_V1_MAGICNUM || minfo.sizeof_struct!=sizeof(struct ModuleInfo) ) return 0; if ( minfo.moduleName < 0 ) { strncpy( modulename, lang_str(-minfo.moduleName), sizeof(modulename)); } else if ( minfo.moduleName >= flat->entry ) { strncpy( modulename, (content+minfo.moduleName), sizeof(modulename)); } return 1; }
//------------------------------------------------------------------- void gui_bench_draw() { switch (bench_to_draw) { case 1: draw_filled_rect(0, 0, camera_screen.width-1, camera_screen.height-1, MAKE_COLOR(SCREEN_COLOR, SCREEN_COLOR)); draw_txt_string(1, 0, lang_str(LANG_BENCH_TITLE), MAKE_COLOR(SCREEN_COLOR, COLOR_WHITE)); draw_txt_string(1, 2, lang_str(LANG_BENCH_SCREEN), MAKE_COLOR(SCREEN_COLOR, COLOR_WHITE)); draw_txt_string(3, 3, lang_str(LANG_BENCH_WRITE), MAKE_COLOR(SCREEN_COLOR, COLOR_WHITE)); draw_txt_string(3, 4, lang_str(LANG_BENCH_READ), MAKE_COLOR(SCREEN_COLOR, COLOR_WHITE)); draw_txt_string(1, 6, lang_str(LANG_BENCH_MEMORY), MAKE_COLOR(SCREEN_COLOR, COLOR_WHITE)); draw_txt_string(3, 7, lang_str(LANG_BENCH_WRITE), MAKE_COLOR(SCREEN_COLOR, COLOR_WHITE)); draw_txt_string(3, 8, lang_str(LANG_BENCH_READ), MAKE_COLOR(SCREEN_COLOR, COLOR_WHITE)); draw_txt_string(1, 10, lang_str(LANG_BENCH_FLASH_CARD), MAKE_COLOR(SCREEN_COLOR, COLOR_WHITE)); draw_txt_string(3, 11, lang_str(LANG_BENCH_WRITE_RAW), MAKE_COLOR(SCREEN_COLOR, COLOR_WHITE)); draw_txt_string(3, 12, lang_str(LANG_BENCH_WRITE_MEM), MAKE_COLOR(SCREEN_COLOR, COLOR_WHITE)); draw_txt_string(3, 13, lang_str(LANG_BENCH_WRITE_64K), MAKE_COLOR(SCREEN_COLOR, COLOR_WHITE)); draw_txt_string(3, 14, lang_str(LANG_BENCH_READ_64K), MAKE_COLOR(SCREEN_COLOR, COLOR_WHITE)); /* no break here */ case 2: gui_bench_draw_results_screen(3, bench.screen_output_bps, camera_screen.buffer_size); gui_bench_draw_results_screen(4, bench.screen_input_bps, camera_screen.width * vid_get_viewport_height() * 3); gui_bench_draw_results(7, bench.memory_write_bps); gui_bench_draw_results(8, bench.memory_read_bps); gui_bench_draw_results(11, bench.disk_write_raw_bps); gui_bench_draw_results(12, bench.disk_write_mem_bps); gui_bench_draw_results(13, bench.disk_write_buf_bps); gui_bench_draw_results(14, bench.disk_read_buf_bps); bench_to_draw = 0; break; default: bench_to_draw = 0; break; } }
//------------------------------------------------------------------- void gui_bench_draw() { switch (bench_to_draw) { case 1: draw_rectangle(camera_screen.disp_left, 0, camera_screen.disp_right, camera_screen.height-1, MAKE_COLOR(COLOR_BLACK, COLOR_BLACK), RECT_BORDER0|DRAW_FILLED); draw_string(1*FONT_WIDTH, 0*FONT_HEIGHT, lang_str(LANG_BENCH_TITLE), MAKE_COLOR(COLOR_BLACK, COLOR_WHITE)); draw_string(1*FONT_WIDTH, 2*FONT_HEIGHT, lang_str(LANG_BENCH_SCREEN), MAKE_COLOR(COLOR_BLACK, COLOR_WHITE)); draw_string(3*FONT_WIDTH, 3*FONT_HEIGHT, lang_str(LANG_BENCH_WRITE), MAKE_COLOR(COLOR_BLACK, COLOR_WHITE)); draw_string(3*FONT_WIDTH, 4*FONT_HEIGHT, lang_str(LANG_BENCH_READ), MAKE_COLOR(COLOR_BLACK, COLOR_WHITE)); draw_string(1*FONT_WIDTH, 6*FONT_HEIGHT, lang_str(LANG_BENCH_MEMORY), MAKE_COLOR(COLOR_BLACK, COLOR_WHITE)); draw_string(3*FONT_WIDTH, 7*FONT_HEIGHT, lang_str(LANG_BENCH_WRITE), MAKE_COLOR(COLOR_BLACK, COLOR_WHITE)); draw_string(3*FONT_WIDTH, 8*FONT_HEIGHT, lang_str(LANG_BENCH_READ), MAKE_COLOR(COLOR_BLACK, COLOR_WHITE)); draw_string(1*FONT_WIDTH, 10*FONT_HEIGHT, lang_str(LANG_BENCH_FLASH_CARD), MAKE_COLOR(COLOR_BLACK, COLOR_WHITE)); draw_string(3*FONT_WIDTH, 11*FONT_HEIGHT, lang_str(LANG_BENCH_WRITE_RAW), MAKE_COLOR(COLOR_BLACK, COLOR_WHITE)); draw_string(3*FONT_WIDTH, 12*FONT_HEIGHT, lang_str(LANG_BENCH_WRITE_MEM), MAKE_COLOR(COLOR_BLACK, COLOR_WHITE)); draw_string(3*FONT_WIDTH, 13*FONT_HEIGHT, lang_str(LANG_BENCH_WRITE_64K), MAKE_COLOR(COLOR_BLACK, COLOR_WHITE)); draw_string(3*FONT_WIDTH, 14*FONT_HEIGHT, lang_str(LANG_BENCH_READ_64K), MAKE_COLOR(COLOR_BLACK, COLOR_WHITE)); /* no break here */ case 2: gui_bench_draw_results_screen(3, bench.screen_output_bps, camera_screen.buffer_size); gui_bench_draw_results_screen(4, bench.screen_input_bps, camera_screen.width * vid_get_viewport_height() * 3); gui_bench_draw_results(7, bench.memory_write_bps); gui_bench_draw_results(8, bench.memory_read_bps); gui_bench_draw_results(11, bench.disk_write_raw_bps); gui_bench_draw_results(12, bench.disk_write_mem_bps); gui_bench_draw_results(13, bench.disk_write_buf_bps); gui_bench_draw_results(14, bench.disk_read_buf_bps); bench_to_draw = 0; break; default: bench_to_draw = 0; break; } }
static void module_run_error(int err, char *name) { char buf[100]; sprintf(buf, lang_str(err), name); gui_mbox_init(LANG_ERROR, (int)buf, MBOX_BTN_OK|MBOX_TEXT_CENTER, NULL); }
static void gui_osd_draw_movie_time_left() { static int card_used, init_space, elapsed, avg_use, time_left; static long init_time; static int record_running = 0; static int init = 0; static unsigned int skipcalls = 1; unsigned int hour=0, min=0, sec=0; twoColors col = user_color(conf.osd_color); if ((conf.show_movie_time > 0) && (camera_info.state.mode_video || is_video_recording()) && !camera_info.state.mode_play) { #if CAM_CHDK_HAS_EXT_VIDEO_MENU if (camera_info.state.mode_video || is_video_recording()) { // if manual adjust, show the field item to be adjusted // if any value overriden, show the override value #if !CAM_VIDEO_QUALITY_ONLY if ((conf.video_mode == 0 && conf.fast_movie_quality_control==1) || conf.video_bitrate != VIDEO_DEFAULT_BITRATE) { // gui_print_osd_state_string_chr("Bitrate: ",video_bitrate_strings[conf.video_bitrate]); sprintf(osd_buf, "Bit:%5s",gui_video_bitrate_enum(0,0)); draw_osd_string(conf.mode_video_pos, 0, 2*FONT_HEIGHT, osd_buf, col, conf.mode_video_scale); } #endif if ((conf.video_mode == 1 && conf.fast_movie_quality_control==1) || conf.video_quality != VIDEO_DEFAULT_QUALITY) { // gui_print_osd_state_string_int("Quality: ",conf.video_quality); sprintf(osd_buf, "Qual:%2i",conf.video_quality); draw_osd_string(conf.mode_video_pos, 0, 3*FONT_HEIGHT, osd_buf, col, conf.mode_video_scale); } // everything else is for when recording if (!is_video_recording()) { record_running = 0; init = 0; return; } } #endif if (movie_reset == 1) { init = 0; movie_reset = 0; } if (is_video_recording()) record_running = 1; else { record_running = 0; init = 0; } if (record_running == 1 && init == 0) { init = 1; init_space = GetFreeCardSpaceKb(); init_time = get_tick_count(); } if (init == 1) { card_used = init_space - GetFreeCardSpaceKb(); elapsed = (int) ( get_tick_count() - init_time ) / 1000; avg_use = card_used / elapsed; // running average Kb/sec time_left = (GetFreeCardSpaceKb() / avg_use); hour = time_left / 3600; min = (time_left % 3600) / 60; sec = (time_left % 3600) % 60; if (elapsed < 1) { sprintf(osd_buf, "Calc..."); draw_osd_string(conf.mode_video_pos, 0, 0, osd_buf, col, conf.mode_video_scale); } if (--skipcalls ==0) { if (elapsed > 1) { int time_yofst = 0; if (conf.show_movie_time == 3) { // Both lines displayed so offset time value below bit rate time_yofst = FONT_HEIGHT; } if (conf.show_movie_time & 2) { sprintf(osd_buf, "%04d KB/s", avg_use); draw_osd_string(conf.mode_video_pos, 0, 0, osd_buf, col, conf.mode_video_scale); } if (conf.show_movie_time & 1) { sprintf(osd_buf, "-%02d:%02d:%02d", hour, min, sec); draw_osd_string(conf.mode_video_pos, 0, time_yofst, osd_buf, col, conf.mode_video_scale); } #if CAM_CHDK_HAS_EXT_VIDEO_TIME if( (int)conf.ext_video_time == 1 ) { draw_txt_string(0, 13, lang_str(LANG_WARN_VIDEO_EXT_TIME), user_color(conf.osd_color_warn)); } #endif } skipcalls = conf.show_movie_refresh*5; } } } }
void process_script() { long t; int Lres; // process stack operations if (kbd_int_stack_ptr){ switch (KBD_STACK_PREV(1)){ case SCRIPT_MOTION_DETECTOR: if(md_detect_motion()==0){ kbd_int_stack_ptr-=1; if (L) { // We need to recover the motion detector's // result from ubasic variable 0 and push // it onto the thread's stack. -- AUJ lua_pushnumber( Lt, ubasic_get_variable(0) ); } } return; case SCRIPT_PRESS: kbd_key_press(KBD_STACK_PREV(2)); kbd_int_stack_ptr-=2; // pop op. return; case SCRIPT_RELEASE: kbd_key_release(KBD_STACK_PREV(2)); kbd_int_stack_ptr-=2; // pop op. return; case SCRIPT_SLEEP: t = get_tick_count(); // FIXME take care if overflow occurs if (delay_target_ticks == 0){ /* setup timer */ delay_target_ticks = t+KBD_STACK_PREV(2); } else { if (delay_target_ticks <= t){ delay_target_ticks = 0; kbd_int_stack_ptr-=2; // pop sleep op. } } return; case SCRIPT_PR_WAIT_SAVE: state_shooting_progress = SHOOTING_PROGRESS_NONE; state_expos_recalculated = 0; histogram_stop(); kbd_int_stack_ptr-=1; // pop op. return; case SCRIPT_WAIT_SAVE:{ if (state_shooting_progress == SHOOTING_PROGRESS_DONE) kbd_int_stack_ptr-=1; // pop op. return; } case SCRIPT_WAIT_FLASH:{ if (shooting_is_flash_ready()) kbd_int_stack_ptr-=1; // pop op. return; } case SCRIPT_WAIT_EXPHIST:{ if (state_expos_recalculated) { kbd_int_stack_ptr-=1; // pop op. state_expos_under = under_exposed; state_expos_over = over_exposed; } return; } case SCRIPT_PR_WAIT_EXPHIST: { if (shooting_in_progress() || mvideo) { state_expos_recalculated = 0; histogram_restart(); kbd_int_stack_ptr-=1; // pop op. } return; } case SCRIPT_WAIT_CLICK: { t = get_tick_count(); if (delay_target_ticks == 0){ /* setup timer */ delay_target_ticks = t+((KBD_STACK_PREV(2))?KBD_STACK_PREV(2):86400000); } else { kbd_last_clicked = kbd_get_clicked_key(); if (kbd_last_clicked || delay_target_ticks <= t) { if (!kbd_last_clicked) kbd_last_clicked=0xFFFF; delay_target_ticks = 0; kbd_int_stack_ptr-=2; // pop op. } } return; } default: /*finished();*/ script_end(); } } if (state_kbd_script_run != 3) { if( L ) { int top; if (state_lua_kbd_first_call_to_resume) { state_lua_kbd_first_call_to_resume = 0; top = 0; } else { top = lua_gettop(Lt); } Lres = lua_resume( Lt, top ); if (Lres != LUA_YIELD && Lres != 0) { script_console_add_line( lua_tostring( Lt, -1 ) ); wait_and_end(); return; } if (Lres != LUA_YIELD) { script_console_add_line(lang_str(LANG_CONSOLE_TEXT_FINISHED)); script_end(); } } else { ubasic_run(); if (ubasic_finished()) { script_console_add_line(lang_str(LANG_CONSOLE_TEXT_FINISHED)); script_end(); } } } }
long kbd_process() { /* Alternative keyboard mode stated/exited by pressing print key. * While running Alt. mode shoot key will start a script execution. */ static int nCER=0; // ------ modif by Masuji SUTO (start) -------------- unsigned int mmode; unsigned int nCrzpos,i; unsigned int drmode = 0; if(conf.ricoh_ca1_mode && conf.remote_enable) { drmode = shooting_get_drive_mode(); mmode = mode_get(); mplay = (mmode&MODE_MASK)==MODE_PLAY; // mvideo= ((mmode&MODE_SHOOTING_MASK)==MODE_VIDEO_STD || (mmode&MODE_SHOOTING_MASK)==MODE_VIDEO_SPEED || (mmode&MODE_SHOOTING_MASK)==MODE_VIDEO_COMPACT ||(mmode&MODE_SHOOTING_MASK)==MODE_VIDEO_MY_COLORS || (mmode&MODE_SHOOTING_MASK)==MODE_VIDEO_COLOR_ACCENT); mvideo=MODE_IS_VIDEO(mmode); } // deals with alt-mode switch and delay emulation if (key_pressed) { if (kbd_is_key_pressed(conf.alt_mode_button) || ((key_pressed >= CAM_EMUL_KEYPRESS_DELAY) && (key_pressed < CAM_EMUL_KEYPRESS_DELAY+CAM_EMUL_KEYPRESS_DURATION))) { if (key_pressed <= CAM_EMUL_KEYPRESS_DELAY+CAM_EMUL_KEYPRESS_DURATION) key_pressed++; if (key_pressed == CAM_EMUL_KEYPRESS_DELAY) kbd_key_press(conf.alt_mode_button); else if (key_pressed == +CAM_EMUL_KEYPRESS_DELAY+CAM_EMUL_KEYPRESS_DURATION) kbd_key_release(conf.alt_mode_button); return 1; } else if (kbd_get_pressed_key() == 0) { if (key_pressed != 100 && (key_pressed < CAM_EMUL_KEYPRESS_DELAY)) { kbd_blocked = 1-kbd_blocked; if (kbd_blocked) gui_kbd_enter(); else gui_kbd_leave(); } key_pressed = 0; return 1; } return 1; } // auto iso shift if (kbd_is_key_pressed(KEY_SHOOT_HALF) && kbd_is_key_pressed(conf.alt_mode_button)) return 0; if (kbd_is_key_pressed(conf.alt_mode_button)) { if (conf.ricoh_ca1_mode && conf.remote_enable) conf.synch_enable=1; key_pressed = 1; kbd_key_release_all(); return 1; } // deals with the rest if (kbd_blocked && nRmt==0) { /*------------------- Alex scriptless remote additions start --------------------*/ if (remoteShooting) { if (remoteHalfShutter) { if (get_usb_power(1)) { if (remoteClickTimer < REMOTE_MAX_CLICK_LENGTH) { remoteHalfShutter=0; remoteFullShutter=1; kbd_key_press(KEY_SHOOT_FULL); } return 1; } else { --remoteClickTimer; if ( remoteClickTimer == 0 ) { kbd_key_release_all(); remoteHalfShutter=0; remoteShooting=0; kbd_blocked=0; return 0; } } } if (remoteFullShutter) { if (get_usb_power(1)) { return 1; } else { kbd_key_release_all(); remoteFullShutter=0; remoteShooting=0; kbd_blocked=0; return 0; } } } /*-------------------- Alex scriptless remote additions end ---------------------*/ if (kbd_is_key_pressed(KEY_SHOOT_FULL)) { key_pressed = 100; if (!state_kbd_script_run) { script_start(0); } else if (state_kbd_script_run == 2 || state_kbd_script_run == 3) { script_console_add_line(lang_str(LANG_CONSOLE_TEXT_INTERRUPTED)); script_end(); } else if (L) { state_kbd_script_run = 2; lua_getglobal(Lt, "restore"); if (lua_isfunction(Lt, -1)) { if (lua_pcall( Lt, 0, 0, 0 )) { script_console_add_line( lua_tostring( Lt, -1 ) ); } } script_console_add_line(lang_str(LANG_CONSOLE_TEXT_INTERRUPTED)); script_end(); } else { state_kbd_script_run = 2; if (jump_label("restore") == 0) { script_console_add_line(lang_str(LANG_CONSOLE_TEXT_INTERRUPTED)); script_end(); } } } if (state_kbd_script_run) process_script(); else gui_kbd_process(); } else { #ifndef SYNCHABLE_REMOTE_NOT_ENABLED if(conf.ricoh_ca1_mode && conf.remote_enable) { // ------ add by Masuji SUTO (start) -------------- if(nWt>0) {nWt--;return 1;} #if defined(CAMERA_ixus960) if(nFirst==1){ if(nSW==0){ nSW=1; nWt=10; kbd_key_release_all(); kbd_key_press(KEY_SHOOT_HALF); soft_half_press = 1; set_key_press(1); return 1; } else if(nSW==1){ nSW=2; nWt=10; kbd_key_release(KEY_SHOOT_HALF); soft_half_press = 0; set_key_press(1); return 1; } else if(nSW==2){ set_key_press(0); nWt=10; nSW=0; nFirst=0; return 1; } } #endif if (kbd_is_key_pressed(KEY_SHOOT_FULL)) conf.synch_enable=0; if (kbd_is_key_pressed(KEY_SHOOT_HALF) && nTxzoom>0) { nCount2=0; nTxzoom=0; nReczoom=0; nTxvideo=0; debug_led(0); } if (mplay && (kbd_is_key_pressed(KEY_LEFT) || kbd_is_key_pressed(KEY_RIGHT))){ nPlyname=KEY_LEFT; if(kbd_is_key_pressed(KEY_RIGHT)) nPlyname=KEY_RIGHT; } if (kbd_is_key_pressed(KEY_VIDEO)){ nCount2=0; nTxzoom=0; nReczoom=0; nTxvideo++; if(nTxvideo<50){ kbd_key_release_all(); debug_led(1); } else { debug_led(0); return 0; } return 1; } else if(nTxvideo>49) nTxvideo=0; if (kbd_is_key_pressed(KEY_ZOOM_IN) || kbd_is_key_pressed(KEY_ZOOM_OUT)){ nCount2=0; nTxvideo=0; if(kbd_is_key_pressed(KEY_ZOOM_IN)) { if(nTxzname==KEY_ZOOM_IN) nTxzoom++; else nTxzoom=1; nTxzname=KEY_ZOOM_IN; } else { if(nTxzname==KEY_ZOOM_OUT) nTxzoom++; else nTxzoom=1; nTxzname=KEY_ZOOM_OUT; } if(nTxzoom<50){ kbd_key_release_all(); debug_led(1); } else { debug_led(0); return 0; } return 1; } if(!get_usb_power(1) && nSW<100 && nCount==0 && nTxzoom>0) { nCount2++; if(nCount2>conf.zoom_timeout*100){ if(nTxzoom>0){ nTxzoom=0; nReczoom=0; debug_led(0); } nCount2=0; } return 1; } if(get_usb_power(1) && nSW<100 && nCount==0) {nCount2=0;kbd_key_release_all();conf.synch_enable=1;} if(get_usb_power(1) && nSW<100 && nCount==0) {kbd_key_release_all();conf.synch_enable=1;} if(get_usb_power(1) && nSW<100 && nCount<6){ nCount++; return 1; } if(nCount>0 && nSW<100){ if(mplay) { if(get_usb_power(1)) return 1; kbd_key_release_all(); kbd_key_press(nPlyname); set_key_press(1); nCount=0; nCa=2; nSW=101; nWt=5; return 1; } if(nTxvideo>49) nTxvideo=0; if(nCount<5) nCa=1; //for Richo remote switch CA-1 else nCa=2; //for hand made remote switch nCount=0; // debug_led(1); nSW=109; } // ------------------------------------------------------------- hand made switch -------------- if(nCa==2){ if(nSW==101){ kbd_key_release_all(); set_key_press(0); nWt=50; nSW=0; nCa=0; return 1; } if(nSW==109){ // nSW=110; nCER=0; if(nTxzoom>0 && conf.remote_zoom_enable){ if(nTxzoom<100){ nIntzpos=lens_get_zoom_point(); for(i=0;i<ZSTEP_TABLE_SIZE;i++){ if(nIntzpos<=nTxtbl[i]){ if(i>0){ if(abs(nTxtbl[i]-nIntzpos)<=abs(nTxtbl[i-1]-nIntzpos)) nTxtblcr=i; else nTxtblcr=i-1; } else nTxtblcr=i; i=ZSTEP_TABLE_SIZE; } } if(nTxzname==KEY_ZOOM_IN){ nTxtblcr++; if(nTxtblcr>(ZSTEP_TABLE_SIZE-1)) nTxtblcr=(ZSTEP_TABLE_SIZE-1); } else{ nTxtblcr--; if(nTxtblcr<0) nTxtblcr=0; } nSW=108; return 1; } nTxzoom=0; nReczoom=0; } if(nTxvideo>0 && conf.remote_zoom_enable) {nSW=121;return 1;} nSW=110; nWt=2; kbd_key_release_all(); kbd_key_press(KEY_SHOOT_HALF); // key_pressed = 1; // kbd_blocked = 1; // nRmt=1; soft_half_press = 1; set_key_press(1); return 1; } if(nTxzoom>0 && nSW==108 && conf.remote_zoom_enable){ nCrzpos=lens_get_zoom_point(); if(nIntzpos!=nCrzpos) {nReczoom=0;} if(nIntzpos==nCrzpos && nCER>50){ if(!get_usb_power(1)){ kbd_key_release_all(); set_key_press(0); nTxzoom=1; nSW=0; nCount=0; nWt=10; nReczoom=1; return 1; } } if(nReczoom==0 && ((nTxzname==KEY_ZOOM_IN && nCrzpos>=nTxtbl[nTxtblcr]) || (nTxzname==KEY_ZOOM_OUT && nCrzpos<=nTxtbl[nTxtblcr]))){ if(get_usb_power(1)){ i=1; if(nTxzname==KEY_ZOOM_IN){ nTxtblcr++; if(nTxtblcr>(ZSTEP_TABLE_SIZE-1)){ nTxtblcr=(ZSTEP_TABLE_SIZE-1); nTxzname=KEY_ZOOM_OUT; } } else{ nTxtblcr--; if(nTxtblcr<0){ nTxtblcr=0; nTxzname=KEY_ZOOM_IN; } } if(i==1) return 1; } kbd_key_release_all(); set_key_press(0); nTxzoom=1; // lens_set_zoom_speed(25); nSW=120; nWt=5; return 1; } kbd_key_release_all(); kbd_key_press(nTxzname); set_key_press(1); nCER++; return 1; } if(nTxvideo>0 && nSW==121){ if(!get_usb_power(1)) { nWt=10; kbd_key_press(KEY_VIDEO); set_key_press(1); nSW=122; } return 1; } if(nTxvideo>0 && nSW==122){ nWt=10; kbd_key_release(KEY_VIDEO); set_key_press(1); nSW=123; return 1; } if(nTxvideo>0 && nSW==123){ set_key_press(0); nWt=50; nSW=0; nCa=0; nTxvideo=0; debug_led(0); return 1; } if(nSW==110){ if (shooting_in_progress() || mvideo || nCER>100) { state_expos_recalculated = 0; histogram_restart(); nCER=0; nSW=111; } else {nCER++;return 1;} } if(nSW==111){ if (state_expos_recalculated || nCER>100) { state_expos_under = under_exposed; state_expos_over = over_exposed; nCER=0; nSW=112; //presynch(); } else {nCER++;return 1;} } if(nSW==112){ if (shooting_is_flash_ready() || nCER>10){ nCER=0; nSW=113; } else {nCER++;return 1;} } if(nSW==113){ if(get_usb_power(1) && !mvideo) nSW=114; else if(!get_usb_power(1) && mvideo) nSW=114; else return 1; } if(nTxzoom>0 && nSW==120 && conf.remote_zoom_enable){ nCrzpos=lens_get_zoom_point(); if((nTxzname==KEY_ZOOM_IN && nCrzpos<=nTxtbl[nTxtblcr]) || (nTxzname==KEY_ZOOM_OUT && nCrzpos>=nTxtbl[nTxtblcr])){ kbd_key_release_all(); set_key_press(0); nTxzoom=1; lens_set_zoom_speed(100); nSW=0; nCount=0; nWt=10; return 1; } lens_set_zoom_speed(5); kbd_key_release_all(); if(nTxzname==KEY_ZOOM_IN) kbd_key_press(KEY_ZOOM_OUT); else kbd_key_press(KEY_ZOOM_IN); set_key_press(1); return 1; } if(nSW==114){ nSW=115; nWt=2; shutter_int=0; kbd_key_press(KEY_SHOOT_FULL); set_key_press(1); // kbd_blocked = 1; // nRmt=1; nCount=0; return 1; } if(nSW==115){ // debug_led(0); if(drmode==1 && shutter_int==0){ return 1; } nSW=116; nWt=2; kbd_key_release(KEY_SHOOT_FULL); set_key_press(1); soft_half_press = 0; // kbd_blocked = 1; // nRmt=1; return 1; } if(!get_usb_power(1) && nSW==116) { set_key_press(0); // kbd_blocked = 0; // key_pressed = 0; nWt=50; nSW=0; // nRmt=0; nCa=0; //postsynch(); return 1; } } // ------------------------------------------------------------- Ricoh remote switch CA-1 -------------- if(nCa==1){ if(get_usb_power(1) && nSW>108 && nSW<120){ nCount++; } if(nSW==109){ // nSW=110; nCER=0; if(nTxzoom>0 && conf.remote_zoom_enable){ if(nTxzoom<100){ nIntzpos=lens_get_zoom_point(); for(i=0;i<ZSTEP_TABLE_SIZE;i++){ if(nIntzpos<=nTxtbl[i]){ if(i>0){ if(abs(nTxtbl[i]-nIntzpos)<=abs(nTxtbl[i-1]-nIntzpos)) nTxtblcr=i; else nTxtblcr=i-1; } else nTxtblcr=i; i=ZSTEP_TABLE_SIZE; } } if(nTxzname==KEY_ZOOM_IN){ nTxtblcr++; if(nTxtblcr>(ZSTEP_TABLE_SIZE-1)) nTxtblcr=(ZSTEP_TABLE_SIZE-1); } else{ nTxtblcr--; if(nTxtblcr<0) nTxtblcr=0; } nSW=113; return 1; } nTxzoom=0; nReczoom=0; } if(nTxvideo>0 && conf.remote_zoom_enable) {nSW=121;return 1;} nSW=110; nWt=2; kbd_key_release_all(); kbd_key_press(KEY_SHOOT_HALF); // debug_led(1); soft_half_press = 1; set_key_press(1); // key_pressed = 1; // kbd_blocked = 1; // nRmt=1; return 1; } if(nTxvideo>0 && nSW==121){ if(get_usb_power(1)) { nWt=10; kbd_key_press(KEY_VIDEO); set_key_press(1); nSW=122; } return 1; } if(nTxvideo>0 && nSW==122){ nWt=10; kbd_key_release(KEY_VIDEO); set_key_press(1); nSW=123; return 1; } if(nTxvideo>0 && nSW==123){ set_key_press(0); nWt=100; nCount=0; nSW=0; nCa=0; nTxvideo=0; debug_led(0); return 1; } if(nSW==110){ if (shooting_in_progress() || mvideo || nCER>100) { // debug_led(0); state_expos_recalculated = 0; histogram_restart(); nCER=0; nSW=111; } else {nCER++;return 1;} } if(nSW==111){ if (state_expos_recalculated || nCER>100) { state_expos_under = under_exposed; state_expos_over = over_exposed; nCER=0; nSW=112; //presynch(); } else {nCER++;return 1;} } if(nSW==112){ if (shooting_is_flash_ready() || nCER>10){ nCER=0; nSW=113; } else {nCER++;return 1;} } if(nTxzoom>0 && nSW==114 && conf.remote_zoom_enable){ nCrzpos=lens_get_zoom_point(); if(nIntzpos!=nCrzpos) {nReczoom=0;} if(nIntzpos==nCrzpos && nCER>50){ if(nCount>0){ kbd_key_release_all(); set_key_press(0); nTxzoom=1; nSW=0; nCount=0; nWt=10; nReczoom=1; return 1; } } if(nReczoom==0 && ((nTxzname==KEY_ZOOM_IN && nCrzpos>=nTxtbl[nTxtblcr]) || (nTxzname==KEY_ZOOM_OUT && nCrzpos<=nTxtbl[nTxtblcr]))){ if(nCount==0){ i=1; if(nTxzname==KEY_ZOOM_IN){ nTxtblcr++; if(nTxtblcr>(ZSTEP_TABLE_SIZE-1)){ nTxtblcr=(ZSTEP_TABLE_SIZE-1); nTxzname=KEY_ZOOM_OUT; } } else{ nTxtblcr--; if(nTxtblcr<0){ nTxtblcr=0; nTxzname=KEY_ZOOM_IN; } } if(i==1) return 1; } kbd_key_release_all(); set_key_press(0); nTxzoom=1; // lens_set_zoom_speed(25); nSW=115; nWt=5; return 1; } kbd_key_release_all(); kbd_key_press(nTxzname); set_key_press(1); nCER++; return 1; } if(nTxzoom>0 && nSW==115 && conf.remote_zoom_enable){ if(nCount==0) return 1; nCrzpos=lens_get_zoom_point(); if((nTxzname==KEY_ZOOM_IN && nCrzpos<=nTxtbl[nTxtblcr]) || (nTxzname==KEY_ZOOM_OUT && nCrzpos>=nTxtbl[nTxtblcr])){ kbd_key_release_all(); set_key_press(0); nTxzoom=1; lens_set_zoom_speed(100); nSW=0; nCount=0; nWt=10; return 1; } lens_set_zoom_speed(5); kbd_key_release_all(); if(nTxzname==KEY_ZOOM_IN) kbd_key_press(KEY_ZOOM_OUT); else kbd_key_press(KEY_ZOOM_IN); set_key_press(1); return 1; } if(get_usb_power(1)){ return 1; } if(nCount>0 && nSW==113){ if(nCount<9){ if(nTxzoom>0 && conf.remote_zoom_enable){ kbd_key_release_all(); set_key_press(0); nTxzoom=0; nReczoom=0; nSW=0; nCa=0; nCount=0; nWt=10; // lens_set_zoom_speed(100); debug_led(0); return 1; } nSW=125; nWt=10; kbd_key_release(KEY_SHOOT_HALF); soft_half_press = 0; set_key_press(1); // kbd_blocked = 1; // nRmt=1; nCount=0; return 1; } else{ if(nTxzoom>0 && conf.remote_zoom_enable){ nCount=0; nSW=114; return 1; } nSW=124; nWt=2; shutter_int=0; // debug_led(0); kbd_key_press(KEY_SHOOT_FULL); set_key_press(1); // kbd_blocked = 1; // nRmt=1; nCount=0; return 1; } } if(nSW==124){ // debug_led(0); if(drmode==1 && shutter_int==0){ return 1; } nSW=125; nWt=2; kbd_key_release(KEY_SHOOT_FULL); soft_half_press = 0; set_key_press(1); // kbd_blocked = 1; // nRmt=1; return 1; } if(!get_usb_power(1) && nSW==125) { set_key_press(0); // kbd_blocked = 0; // key_pressed = 0; nWt=50; nSW=0; // nRmt=0; nCa=0; //postsynch(); return 1; } } // ------ add by Masuji SUTO (end) -------------- } // ricoh_ca1_mode #endif /*------------------- Alex scriptless remote additions start --------------------*/ if (conf.remote_enable && !conf.ricoh_ca1_mode && key_pressed != 2 && get_usb_power(1)) { remoteShooting = 1; kbd_blocked = 1; kbd_key_release_all(); remoteClickTimer = REMOTE_MAX_CLICK_LENGTH; if (shooting_get_focus_mode()) { remoteFullShutter = 1; kbd_key_press(KEY_SHOOT_FULL); } else { remoteHalfShutter = 1; kbd_key_press(KEY_SHOOT_HALF); } return 1; } /*-------------------- Alex scriptless remote additions end ---------------------*/ #ifdef CAM_USE_ZOOM_FOR_MF if (conf.use_zoom_mf && kbd_use_zoom_as_mf()) { return 1; } #endif if ((conf.fast_ev || conf.fast_movie_control || conf.fast_movie_quality_control) && kbd_use_up_down_left_right_as_fast_switch()) { return 1; } other_kbd_process(); // processed other keys in not <alt> mode } return kbd_blocked; }
/* s = service the command was sent to u = user the command was sent from */ void cs_show(IRC_User *s, IRC_User *u) { MYSQL_RES* res; MYSQL_ROW row; u_int32_t source_snid; int rowc = 0; CHECK_IF_IDENTIFIED_NICK if(NeedsAuth && !IsAuthenticated(u)) send_lang(u, s, NEEDS_AUTH_NICK); else { /* List channels you are founder at */ res = sql_query("SELECT name FROM chanserv WHERE founder=%d", source_snid); row = sql_next_row(res); if(row) { send_lang(u, s, SHOW_FOUNDER_HEADER); do { ++rowc; send_lang(u, s, SHOW_ITEM_X, row[0]); } while((row = sql_next_row(res))); send_lang(u, s, SHOW_TAIL_X, rowc); } else send_lang(u, s, SHOW_FOUNDER_EMPTY); sql_free(res); rowc = 0; /* List channels you are successor at */ res = sql_query("SELECT name FROM chanserv WHERE successor=%d", source_snid); row = sql_next_row(res); if(row) { send_lang(u, s, SHOW_SUCCESSOR_HEADER); do { ++rowc; send_lang(u, s, SHOW_ITEM_X, row[0]); } while((row = sql_next_row(res))); send_lang(u, s, SHOW_TAIL_X, rowc); } sql_free(res); rowc = 0; /* List channels you are successor at */ res = sql_query("SELECT r.name, c.name, cr.message, cr.flags " "FROM cs_role r, chanserv c, cs_role_users cr " "WHERE cr.snid=%d AND r.rid=cr.rid AND c.scid=cr.scid", source_snid); row = sql_next_row(res); if(row) { send_lang(u, s, SHOW_ROLES_HEADER); do { char flagstr[64]; u_int32_t flags = atoi(row[3]); if(flags & CRF_REJECTED) snprintf(flagstr, sizeof(flagstr), " %s", lang_str(u, REJECTED_ROLE)); else if(flags & CRF_PENDING) snprintf(flagstr, sizeof(flagstr), " %s", lang_str(u, PENDING_ROLE)); else flagstr[0] = '\0'; ++rowc; if(row[2]) send_lang(u, s, SHOW_ROLES_ITEM_X_X_X_X, row[0], row[1], flagstr, row[2]); else send_lang(u, s, SHOW_ROLES_ITEM_X_X_X, row[0], row[1], flagstr); } while((row = sql_next_row(res))); send_lang(u, s, SHOW_ROLES_TAIL_X, rowc); } sql_free(res); } }