Changeset 2024
- Timestamp:
- 07/30/12 12:00:06 (11 months ago)
- Location:
- branches/tsvstar-uitest
- Files:
-
- 1 added
- 9 edited
-
core/gui.c (modified) (2 diffs)
-
core/module_wrappers.c (modified) (1 diff)
-
core/script.c (modified) (19 diffs)
-
include/conf.h (modified) (1 diff)
-
include/lang.h (modified) (2 diffs)
-
include/script.h (modified) (1 diff)
-
include/stdlib_unified.h (modified) (1 diff)
-
lib/lang/Makefile (modified) (1 diff)
-
lib/lang/fileutil.c (added)
-
lib/lang/lang.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/tsvstar-uitest/core/gui.c
r2007 r2024 797 797 strcpy( tgt, str ); 798 798 799 // repl ce extension799 // replace extension 800 800 str = strrchr( tgt, '.' ); 801 801 if ( !str ) { str = tgt+strlen(tgt); } 802 802 strcpy( str, ext ); 803 804 805 803 } 806 804 … … 824 822 copy_fname_w_new_ext( helpfile_name, conf.lang_file, ".hlp"); 825 823 824 if ( is_file_exists( helpfile_name) > 0 ) 825 if ( module_run("txtread.flt", 0, sizeof(argv)/sizeof(argv[0]), argv, UNLOAD_IF_ERR) == 0 ) 826 return 1; 827 } 828 829 // if not success, try to load "_base_language_.hlp" 830 copy_fname_w_new_ext( helpfile_name, gui_lang_source_filename, ".hlp"); 831 if ( is_file_exists( helpfile_name) > 0 ) 832 if ( module_run("txtread.flt", 0, sizeof(argv)/sizeof(argv[0]), argv, UNLOAD_IF_ERR) == 0 ) 833 return 1; 834 835 //if not success, try to load "english.hlp" 836 argv[0] = (unsigned int)"A/CHDK/HELP/ENGLISH.HLP"; 837 if ( is_file_exists( (const char*)argv[0] ) >0 ) { 826 838 if ( module_run("txtread.flt", 0, sizeof(argv)/sizeof(argv[0]), argv, UNLOAD_IF_ERR) == 0 ) 827 839 return 1; 828 840 } 829 830 // if not success, try to load "_base_language_.hlp"831 copy_fname_w_new_ext( helpfile_name, gui_lang_source_filename, ".hlp");832 if ( module_run("txtread.flt", 0, sizeof(argv)/sizeof(argv[0]), argv, UNLOAD_IF_ERR) == 0 )833 return 1;834 835 //if not success, try to load "english.hlp"836 argv[0] = (unsigned int)"A/CHDK/HELP/ENGLISH.HLP";837 if ( module_run("txtread.flt", 0, sizeof(argv)/sizeof(argv[0]), argv, UNLOAD_IF_ERR) == 0 )838 return 1;839 841 840 842 return 0; -
branches/tsvstar-uitest/core/module_wrappers.c
r1975 r2024 28 28 29 29 if ( pStat==0 ) return 1; 30 31 // sanity check. canon firmware hangup if start not from 'A/' 32 if ( !name || (name[0] | 0x20)!='a' || name[1]!='/' ) return 1; 33 30 34 memset( pStat, 0, sizeof(struct STD_stat)); 31 35 rv = stat( name, &st ); -
branches/tsvstar-uitest/core/script.c
r2007 r2024 1 // TODO:2 // check how _set function works and improve it3 // temporary script runing4 // script_params_update -> mean is such value listed in valuelist5 // script_named_strings[n]/script_named_count[n] -> this is for enum6 7 1 #include "stdlib.h" 8 2 #include "keyboard.h" … … 27 21 #endif 28 22 23 // Requested filename 24 enum FilenameMakeModeEnum 25 { MAKE_PARAMSETNUM_FILENAME, // "DATA/scriptname.cfg" -> cfg_name 26 MAKE_PARAM_FILENAME }; // "DATA/scriptname_%d" -> cfg_param_name 27 29 28 //------------------------------------------------------------------- 30 29 31 30 long kbd_last_clicked; 32 31 const char *script_source_str=NULL; // ptr to content of script 33 char cfg_name[100] = "\0"; // buffer to make string "DATAPATH/scriptname.cfg"34 char cfg_ set_name[100] = "\0"; // buffer to make string "DATAPATH/scriptname_PARAMSET"32 char cfg_name[100] = "\0"; // buffer to make cfg files name (paramsetnum, param_names) 33 char cfg_param_name[100] = "\0"; // buffer to make cfg param files name (params, state_before_tmprun) 35 34 36 35 static const char *lua_script_default = … … 131 130 const char* skip_whitespace(const char* p) { while (*p==' ' || *p=='\t') p++; return p; } // Skip past whitespace 132 131 const char* skip_token(const char* p) { while (*p && *p!='\r' && *p!='\n' && *p!=' ' && *p!='\t') p++; return p; } // Skip past current token value 133 const char* skip_toeol(const char* p) { while (*p !='\r' && *p!='\n') p++; return p; } // Skip to end of line132 const char* skip_toeol(const char* p) { while (*p && *p!='\r' && *p!='\n') p++; return p; } // Skip to end of line 134 133 135 134 //======================================================= … … 365 364 366 365 //------------------------------------------------------------------- 367 // PURPOSE: Create filename of paramset 368 // PARAMETERS: fn - full path of script 369 // param_set - >=0 = num of paramset, <0 = made .cfg 370 // RESULT: name at cfg_set_name or cfg_name (depending on param_set) 371 //------------------------------------------------------------------- 372 void set_params_values_name(const char *fn, int param_set) 373 { 374 int shift; 375 register char *ptr = (param_set >= 0 ? cfg_set_name : cfg_name); 376 const char *name; 377 378 if (fn == NULL || fn[0] == 0) { ptr[0] = 0; return; } 379 380 strncpy(ptr, SCRIPT_DATA_PATH, 100); ptr[99]=0; 381 shift = strlen(SCRIPT_DATA_PATH); 382 name = strrchr(fn, '/'); 383 if (name) name++; else name=fn; 384 strncpy(ptr+shift, name, 100-shift); ptr[99]=0; 385 shift = strlen(ptr); if (shift >= 100) shift=99; 386 387 if (param_set >= 0) 388 sprintf(ptr+shift-3, "_%d\0", param_set); 389 else 390 strcpy(ptr+shift-3, "cfg\0"); 366 // PURPOSE: Create cfg filename in buffer. 367 // PARAMETERS: mode - what exact kind of cfg file name required 368 // fn - full path of script (optional. have no matter for some modes) 369 // paramset - target paramset (optional) 370 // RESULT: name at cfg_param_name or cfg_name (depending on mode) 371 //------------------------------------------------------------------- 372 void make_param_filename( enum FilenameMakeModeEnum mode, const char* fn, int paramset ) 373 { 374 char extbuf[5]; 375 char* tgt_buf; 376 char* base_path; 377 char* name = 0; 378 379 // find name of script 380 if (fn && fn[0] ) 381 { 382 name = strrchr( fn, '/' ); 383 if (name) name++; else name=(char*)fn; 384 } 385 386 // prepare base data to make 387 switch ( mode ) { 388 case MAKE_PARAMSETNUM_FILENAME: 389 tgt_buf = cfg_name; 390 base_path = SCRIPT_DATA_PATH; 391 strcpy(extbuf,".set"); 392 break; 393 case MAKE_PARAM_FILENAME: 394 tgt_buf = cfg_param_name; 395 base_path = SCRIPT_DATA_PATH; 396 sprintf(extbuf,"_%d",paramset); 397 break; 398 default: // unknown mode 399 return; 400 } 401 402 // make path 403 strcpy(tgt_buf, base_path); 404 405 // add script filename 406 char* tgt_name=tgt_buf+strlen(tgt_buf); 407 strncpy( tgt_name, name, 12 ); 408 tgt_name[12] = 0; 409 410 // find where extension start and replace it 411 char* ext = strrchr(tgt_name, '.'); 412 if (!ext) ext=tgt_name+strlen(tgt_name); 413 strcpy ( ext, extbuf ); 391 414 } 392 415 … … 399 422 if (fn == NULL || fn[0] == 0) return; 400 423 401 set_params_values_name(fn, -1);424 make_param_filename( MAKE_PARAMSETNUM_FILENAME, fn, 0); 402 425 if ( !load_int_value_file( cfg_name, &conf.script_param_set ) ) 403 426 conf.script_param_set = 0; 404 set_params_values_name(fn, conf.script_param_set);427 make_param_filename( MAKE_PARAM_FILENAME, fn, conf.script_param_set); 405 428 } 406 429 … … 414 437 int load_params_values(const char *fn, int paramset) 415 438 { 439 if ( paramset>=0 ) { 416 440 // skip if internal script used 417 441 if (fn == NULL || fn[0] == 0) return 0; 418 442 419 if ( paramset>=0 ) 420 set_params_values_name(fn, paramset); 443 conf.script_param_set = paramset; 444 make_param_filename( MAKE_PARAM_FILENAME, fn, paramset ); 445 } 421 446 422 447 int size; 423 char* buf = load_file( cfg_set_name, &size);448 char* buf = load_file( cfg_param_name, &size); 424 449 if(!buf) 425 450 return 0; 426 451 427 script_apply_param_string(buf,0); 452 int i; 453 char *ptr; 454 for(i = 0; i < SCRIPT_NUM_PARAMS; ++i) script_params_update[i]=0; 455 ptr = buf; 456 457 while (ptr[0]) 458 { 459 while (ptr[0]==' ' || ptr[0]=='\t') ++ptr; // whitespaces 460 if (ptr[0]=='@') 461 { 462 if (strncmp("@param", ptr, 6) == 0) 463 { 464 ptr+=6; 465 process_param(ptr, 1); 466 } else if (strncmp("@default", ptr, 8)==0) { 467 ptr+=8; 468 process_default(ptr, 1); 469 } else if (strncmp("@range", ptr, 6)==0) { 470 ptr+=6; 471 process_range(ptr, 1); 472 } else if (strncmp("@values", ptr, 7)==0) { 473 ptr+=7; 474 process_values(ptr, 0); 475 } 476 /* // this will reqruired to temporary scripts infrastructure 477 // only in data files (never in script) 478 // not implemented yet 479 else if (strncmp("@load_script", ptr, 12)==0) { 1;} 480 else if (strncmp("@load_paramset", ptr, 14)==0) { 1;} 481 */ 482 } 483 while (ptr[0] && ptr[0]!='\n') ++ptr; // unless end of line 484 if (ptr[0]) ++ptr; 485 } 486 428 487 ufree(buf); 429 488 430 489 return 1; 490 } 491 492 493 //------------------------------------------------------------------- 494 // PURPOSE: Auxilary function. 495 // Actually save param file 496 // PARAMETERS: fn = name of target file (actually always cfg_param_name) 497 // script_file = name if need to restore path 498 // paramset = num of paramset, if it should be restored 499 //------------------------------------------------------------------- 500 static void do_save_param_file( char* fn, char* script_file, int paramset ) 501 { 502 int i,n, fd; 503 char *buf; 504 505 buf=umalloc(250); 506 if( buf ) 507 { 508 fd = open(fn, O_WRONLY|O_CREAT, 0777); 509 if (fd >=0) 510 { 511 ///// OLD FORMAT OF DATA FILE//// 512 513 // store filename and current paramset 514 if (script_file) { 515 sprintf( buf, "@script_file %s\n", script_file ); 516 write( fd, buf, strlen(buf) ); 517 } 518 if ( paramset >0 ) { 519 sprintf( buf, "@load_paramset %d\n", paramset ); 520 write( fd, buf, strlen(buf) ); 521 } 522 523 for(n = 0; n < SCRIPT_NUM_PARAMS; ++n) 524 { 525 if (script_params[n][0] != 0) 526 { 527 sprintf(buf,"@param %c %s\n@default %c %d\n",'a'+n,script_params[n],'a'+n,conf.script_vars[n]); 528 if (script_range_values[n] != 0) 529 sprintf(buf+strlen(buf),"@range %c %d %d\n",'a'+n,(short)(script_range_values[n]&0xFFFF),(short)(script_range_values[n]>>16)); 530 if (script_named_counts[n] != 0) 531 { 532 sprintf(buf+strlen(buf),"@values %c",'a'+n); 533 for (i=0; i<script_named_counts[n]; i++) 534 sprintf(buf+strlen(buf)," %s",script_named_values[n][i]); 535 strcat(buf,"\n"); 536 } 537 write(fd, buf, strlen(buf)); 538 } 539 } 540 541 close(fd); 542 } 543 544 ufree(buf); 545 } 431 546 } 432 547 … … 445 560 void save_params_values( int enforce ) 446 561 { 447 int i, fd, changed=0; 448 char *buf; 562 int i, changed=0; 449 563 450 564 // Check is anything changed since last time … … 457 571 if (!enforce && !changed) return; 458 572 573 // Write paramsetnum file 459 574 if (cfg_name[0] == 0) 460 set_params_values_name(conf.script_file, -1); 461 462 // Write paramsetnum file 463 575 make_param_filename( MAKE_PARAMSETNUM_FILENAME, conf.script_file, 0); 464 576 save_int_value_file( cfg_name, conf.script_param_set ); 465 577 466 578 // Write parameters file 467 579 468 set_params_values_name(conf.script_file, conf.script_param_set); 469 470 buf=umalloc(50); 471 if( buf ) 472 { 473 fd = open(cfg_set_name, O_WRONLY|O_CREAT, 0777); 474 if (fd >=0) 475 { 476 for(i = 0; i < SCRIPT_NUM_PARAMS; ++i) 477 { 478 if (script_params[i][0] != 0) 479 { 480 sprintf( buf, ",%c=%d", ('a'+i), conf.script_vars[i] ); 481 write( fd, buf, strlen(buf) ); 482 } 483 } 484 close(fd); 485 } 486 487 ufree(buf); 488 } 580 make_param_filename( MAKE_PARAM_FILENAME, conf.script_file, conf.script_param_set); 581 do_save_param_file( cfg_param_name, 0, -1); 489 582 } 490 583 … … 498 591 // allow_paramset_load = 1-apply paramset load if exists, 0-ignore it 499 592 //-------------------------------------------------------------------------- 500 void script_apply_param _string( char* param_str, int allow_load_paramset )593 void script_apply_paramstr( char* param_str, int allow_load_paramset ) 501 594 { 502 595 int n; … … 509 602 if (*ptr>='0' && *ptr<='9' ) { 510 603 load_params_values( conf.script_file, (*ptr-'0') ); 511 set_params_values_name( conf.script_file, conf.script_param_set);604 make_param_filename( MAKE_PARAM_FILENAME, conf.script_file, conf.script_param_set); 512 605 } 513 606 } 514 607 608 // main list parsing 515 609 for( ; *ptr; ptr++ ) { 516 610 … … 590 684 } 591 685 592 593 686 fn = conf.script_file; 594 595 687 596 688 switch ( saved_params ) 597 689 { 598 /* This is obsolete - use reset_to_default_values() 599 case 0: 690 case SCRIPT_LOAD_DEFAULT_VALUES: 600 691 // reset to default 601 692 script_scan( fn, 1 ); 602 693 break; 603 */604 694 605 695 case SCRIPT_LOAD_LAST_PARAMSET: // load last paramset ( if script was changed ) … … 702 792 // needs to finish. So keep the script marked as running, but don't 703 793 // call any more scripting functions. 704 state_kbd_script_run = 3;794 state_kbd_script_run = SCRIPT_STATE_PENDING; 705 795 } 706 796 … … 708 798 { // Note: This function is called from an action stack for AS_SCRIPT_RUN. 709 799 710 if (state_kbd_script_run != 3) {800 if (state_kbd_script_run != SCRIPT_STATE_PENDING) { 711 801 #ifdef OPT_LUA 712 802 if( L ) { … … 819 909 #endif 820 910 default: 821 if (!action_stack_standard(p) && !state_kbd_script_run)911 if (!action_stack_standard(p) && state_kbd_script_run==SCRIPT_STATE_INACTIVE ) 822 912 { 823 913 /*finished();*/ … … 859 949 if (kbd_is_key_clicked(KEY_SHOOT_FULL)) 860 950 { 861 if (state_kbd_script_run == 2 || state_kbd_script_run == 3)951 if (state_kbd_script_run == SCRIPT_STATE_INTERRUPTED || state_kbd_script_run == SCRIPT_STATE_PENDING ) 862 952 interrupt_script(); 863 953 #ifdef OPT_LUA 864 954 else if (L) 865 955 { 866 state_kbd_script_run = 2;956 state_kbd_script_run = SCRIPT_STATE_INTERRUPTED; 867 957 lua_run_restore(); 868 958 interrupt_script(); … … 872 962 else 873 963 { 874 state_kbd_script_run = 2;964 state_kbd_script_run = SCRIPT_STATE_INTERRUPTED; 875 965 if (jump_label("restore") == 0) 876 966 interrupt_script(); … … 930 1020 shot_histogram_set(0); 931 1021 kbd_key_release_all(); 932 state_kbd_script_run = 0;1022 state_kbd_script_run = SCRIPT_STATE_INACTIVE; 933 1023 934 1024 conf_update_prevent_shutdown(); … … 1003 1093 } 1004 1094 1005 state_kbd_script_run = 1;1095 state_kbd_script_run = SCRIPT_STATE_RAN; 1006 1096 1007 1097 conf_update_prevent_shutdown(); … … 1016 1106 { 1017 1107 if (!lua_script_start(script,1)) return -1; 1018 state_kbd_script_run = 1;1108 state_kbd_script_run = SCRIPT_STATE_RAN; 1019 1109 kbd_set_block(1); 1020 1110 auto_started = 0; -
branches/tsvstar-uitest/include/conf.h
r1999 r2024 400 400 extern void user_menu_restore(); 401 401 402 // Current stage of script processing 402 403 extern int state_kbd_script_run; 404 405 enum { SCRIPT_STATE_INACTIVE=0, // 0 - script is inactive now 406 SCRIPT_STATE_RAN, // 1 - script works now 407 SCRIPT_STATE_INTERRUPTED, // 2 - shutter button was pressed. wait for second press 408 SCRIPT_STATE_PENDING }; // 3 - final housekeep processing 409 410 403 411 extern int state_shooting_progress; 404 412 extern int state_save_raw_nth_only; -
branches/tsvstar-uitest/include/lang.h
r2007 r2024 8 8 extern void lang_map_preparsed_from_mem( char* gui_lang_default, int num ); 9 9 10 extern char* lang_str(int str); 11 extern unsigned lang_strhash31(int langid); 12 13 //------------------------------------------------------------------- 14 15 // fileutil.c functions 16 10 17 typedef int (*callback_process_file)(char* buf, int size); 11 18 extern int load_from_file(const char *filename, callback_process_file callback) ; … … 13 20 extern char* load_file_to_cached( const char* name, int* rv_size ); 14 21 15 int load_int_value_file( char* filename, int* value_p );16 void save_int_value_file( char* filename, int value );22 extern int load_int_value_file( char* filename, int* value_p ); 23 extern void save_int_value_file( char* filename, int value ); 17 24 18 extern char* lang_str(int str); 19 extern unsigned lang_strhash31(int langid); 25 extern int is_file_exists(const char* fn); // 0-not exist, otherwise exist (=-1 mean empty, =1 mean nonempty) 20 26 21 27 //------------------------------------------------------------------- 28 29 22 30 #endif -
branches/tsvstar-uitest/include/script.h
r2007 r2024 28 28 29 29 //------------------------------------------------------------------- 30 enum ScriptLoad_Mode_ { SCRIPT_LOAD_LAST_PARAMSET = 1, SCRIPT_UPDATE_PARAMS }; 30 enum ScriptLoad_Mode_ { SCRIPT_LOAD_DEFAULT_VALUES = 0, 31 SCRIPT_LOAD_LAST_PARAMSET, 32 SCRIPT_UPDATE_PARAMS }; 31 33 32 34 extern void script_load(const char *fn, enum ScriptLoad_Mode_ saved_params); 33 extern void script_apply_param _string( char* param_str, int allow_paramset_load);35 extern void script_apply_paramstr( char* param_str, int allow_load_paramset ); 34 36 extern int load_params_values(const char *fn, int paramset ); 35 37 extern void save_params_values(int enforce); 36 void script_reset_to_default_params_values();38 extern void script_reset_to_default_params_values(); 37 39 38 40 extern void script_console_add_line(const char *str); -
branches/tsvstar-uitest/include/stdlib_unified.h
r1975 r2024 1 1 #ifndef STDLIB_UNIFIED_H 2 #define STDLIB_UNIFIED H2 #define STDLIB_UNIFIED_H 3 3 4 4 // This is header of unified wrapper platform-dependend io functions -
branches/tsvstar-uitest/lib/lang/Makefile
r1975 r2024 5 5 CFLAGS+=$(CTHUMB) 6 6 7 OBJS = lang.o 7 OBJS = lang.o fileutil.o 8 8 9 9 all: liblang.a -
branches/tsvstar-uitest/lib/lang/lang.c
r2007 r2024 123 123 } 124 124 125 // PURPOSE:126 // Universal file loader: alloc space and load file127 // RETURN:128 // pointer to loaded file (0 if fail) and loaded size129 // into rv_size (-1 if file not exists)130 //-------------------------------------------------------------------131 char* load_file( const char* name, int* rv_size )132 {133 int fd;134 int size = -1;135 char* buf;136 137 if ( strlen(name) ) {138 struct stat st;139 if ( stat(name,&st) == 0 )140 size = st.st_size;141 }142 143 if ( rv_size )144 *rv_size = size;145 146 if ( size<=0 )147 return 0;148 149 fd = open( name, O_RDONLY, 0777 );150 if ( fd <=0 )151 return 0;152 153 buf = umalloc(size+1);154 if ( buf==0 ) {155 close(fd);156 return 0;157 }158 159 size = read(fd, buf, size );160 buf[size+1]=0;161 close(fd);162 163 if ( rv_size )164 *rv_size = size;165 return buf;166 }167 168 169 // Completely same as load_file but place result to cached memory170 //-------------------------------------------------------------------171 char* load_file_to_cached( const char* name, int* rv_size )172 {173 int size;174 175 char* buf = load_file( name, &size );176 if ( rv_size ) *rv_size = size;177 178 if ( !buf )179 return 0;180 181 char* buf_cached = malloc( size+1 );182 if ( !buf_cached )183 {184 if (rv_size) *rv_size=-1;185 ufree(buf);186 return 0;187 }188 189 memcpy( buf_cached, buf, size+1 );190 ufree(buf);191 192 return buf_cached;193 }194 195 // PURPOSE:196 // Universal file processor197 // Load file, process by callback, unalloc/close file198 // RETURN:199 // Transfer return value from callback200 // NOTE:201 // Call callback even if fail to load/malloc (size=-1 if no file, size=0 if empty)202 //-------------------------------------------------------------------203 int load_from_file(const char *filename, callback_process_file callback)204 {205 int size;206 207 char *buf = load_file( filename, &size);208 209 size = callback( buf, size );210 211 if ( buf )212 ufree(buf);213 214 return size;215 }216 217 125 //------------------------------------------------------------------- 218 126 void lang_load_from_file(const char *filename) { … … 245 153 return hash; 246 154 } 247 248 //============================================249 // DIFFERENT UTILITY FUNCTIONS250 //============================================251 252 //-------------------------------------------------------------------253 254 // load content to *value_p if file exist and contain number255 // return: 0-file_not_exist_or_failed (value is not changed), 1-ok256 257 int load_int_value_file( char* filename, int* value_p )258 {259 int tmp;260 char *buf;261 262 buf=load_file( filename, &tmp );263 if ( !buf )264 return 0;265 266 *value_p = strtol(buf, NULL, 10 /*dec*/);267 ufree(buf);268 269 return 1;270 }271 272 //-------------------------------------------------------------------273 274 // save integer "value" to text file with name "filename"275 276 void save_int_value_file( char* filename, int value )277 {278 char* buf = umalloc(20);279 if ( !buf )280 return;281 282 sprintf(buf,"%d", value);283 284 int fd = open( filename, O_WRONLY|O_CREAT, 0777);285 if (fd>=0)286 {287 write(fd, buf, strlen(buf));288 close(fd);289 }290 ufree(buf);291 }
Note: See TracChangeset
for help on using the changeset viewer.