Changeset 1900
- Timestamp:
- 06/06/12 00:55:04 (13 months ago)
- Location:
- trunk
- Files:
-
- 5 edited
-
core/gui.c (modified) (1 diff)
-
core/gui_menu.h (modified) (1 diff)
-
core/script.c (modified) (11 diffs)
-
include/script.h (modified) (1 diff)
-
lib/ubasic/tokenizer.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/core/gui.c
r1890 r1900 1345 1345 script_submenu_items[p].type=MENUITEM_INT; 1346 1346 script_submenu_items[p].value=&conf.script_vars[script_param_order[i]-1]; 1347 if (script_range_values[script_param_order[i]-1] != 0) 1348 { 1349 if (script_range_values[script_param_order[i]-1] == MENU_MINMAX(0,1)) 1350 { 1351 script_submenu_items[p].type = MENUITEM_BOOL; 1352 } 1353 else 1354 { 1355 script_submenu_items[p].type |= MENUITEM_F_MINMAX; 1356 script_submenu_items[p].arg = script_range_values[script_param_order[i]-1]; 1357 } 1358 } 1347 1359 ++p; 1348 1360 } -
trunk/core/gui_menu.h
r1874 r1900 33 33 #define MENUITEM_ARG_CALLBACK 0x0300 34 34 35 #define MENU_MINMAX(min, max) (((max)<<16)|(min ))35 #define MENU_MINMAX(min, max) (((max)<<16)|(min&0xFFFF)) 36 36 37 37 //------------------------------------------------------------------- -
trunk/core/script.c
r1890 r1900 5 5 #include "gui.h" 6 6 #include "gui_draw.h" 7 #include "gui_menu.h" 7 8 #include "conf.h" 8 9 #include "script.h" … … 106 107 int script_param_order[SCRIPT_NUM_PARAMS]; // Ordered as_in_script list of variables ( [idx] = id_of_var ) 107 108 // to display in same order in script 109 int script_range_values[SCRIPT_NUM_PARAMS]; // Min/Max values for param validation 108 110 static char script_params_update[SCRIPT_NUM_PARAMS]; // Flag is such parameter exist 109 111 static int script_loaded_params[SCRIPT_NUM_PARAMS]; // Copy of original values of parameters … … 113 115 114 116 //------------------------------------------------------------------- 117 118 const char* skip_whitespace(const char* p) { while (*p==' ' || *p=='\t') p++; return p; } // Skip past whitespace 119 const char* skip_token(const char* p) { while (*p!=' ' && *p!='\t') p++; return p; } // Skip to next whitespace 120 121 //------------------------------------------------------------------- 115 122 static void process_title(const char *title) { 116 123 register const char *ptr = title; 117 124 register int i=0; 118 125 119 while (ptr[0]==' ' || ptr[0]=='\t') ++ptr; // whitespaces126 ptr = skip_whitespace(ptr); 120 127 while (i<(sizeof(script_title)-1) && ptr[i] && ptr[i]!='\r' && ptr[i]!='\n') { 121 128 script_title[i]=ptr[i]; … … 138 145 register int n, i=0; 139 146 140 while (ptr[0]==' ' || ptr[0]=='\t') ++ptr; // whitespaces147 ptr = skip_whitespace(ptr); 141 148 if (ptr[0] && (ptr[0]>='a' && ptr[0]<='a'+SCRIPT_NUM_PARAMS) && (ptr[1]==' ' || ptr[1]=='\t')) { 142 149 n=ptr[0]-'a'; 143 ptr+=2; 144 while (ptr[0]==' ' || ptr[0]=='\t') ++ptr; // whitespaces 150 ptr = skip_whitespace(ptr+2); 145 151 script_params_update[n] = 1; 146 152 while (i<(sizeof(script_params[0])-1) && ptr[i] && ptr[i]!='\r' && ptr[i]!='\n') { … … 169 175 register int n; 170 176 171 while (ptr[0]==' ' || ptr[0]=='\t') ++ptr; // whitespaces177 ptr = skip_whitespace(ptr); 172 178 if (ptr[0] && (ptr[0]>='a' && ptr[0]<='a'+SCRIPT_NUM_PARAMS) && (ptr[1]==' ' || ptr[1]=='\t')) { 173 179 n=ptr[0]-'a'; 174 ptr +=2;180 ptr = skip_whitespace(ptr+2); 175 181 if (!update || script_params_update[n]) 176 182 { 177 183 conf.script_vars[n] = strtol(ptr, NULL, 0); 178 184 script_loaded_params[n] = conf.script_vars[n]; 185 } 186 } // ??? else produce error message 187 } 188 189 //------------------------------------------------------------------- 190 // Process one entry "@range VAR MIN MAX" 191 // param = ptr right after descriptor (should point to var) 192 // update = 0 - get 193 // 1 - only if updated 194 //------------------------------------------------------------------- 195 static void process_range(const char *param, char update) { 196 register const char *ptr = param; 197 register int n; 198 199 ptr = skip_whitespace(ptr); 200 if (ptr[0] && (ptr[0]>='a' && ptr[0]<='a'+SCRIPT_NUM_PARAMS) && (ptr[1]==' ' || ptr[1]=='\t')) { 201 n=ptr[0]-'a'; 202 ptr = skip_whitespace(ptr+2); 203 if (!update || script_params_update[n]) 204 { 205 short min = strtol(ptr,NULL,0); 206 ptr = skip_whitespace(skip_token(ptr)); 207 short max = strtol(ptr,NULL,0); 208 script_range_values[n] = MENU_MINMAX(min,max); 179 209 } 180 210 } // ??? else produce error message … … 201 231 script_params[i][0]=0; 202 232 script_param_order[i]=0; 233 script_range_values[i] = 0; 203 234 } 204 235 205 236 while (ptr[0]) { 206 while (ptr[0]==' ' || ptr[0]=='\t') ++ptr; // whitespaces237 ptr = skip_whitespace(ptr); 207 238 if (ptr[0]=='@') { 208 239 if (strncmp("@title", ptr, 6)==0) { … … 219 250 ptr+=8; 220 251 process_default(ptr, 0); 252 } else if (update_vars && strncmp("@range", ptr, 6)==0) { 253 ptr+=6; 254 process_range(ptr, 0); 221 255 } 222 256 } … … 329 363 ptr+=8; 330 364 process_default(ptr, 1); 365 } else if (strncmp("@range", ptr, 6)==0) { 366 ptr+=6; 367 process_range(ptr, 1); 331 368 } 332 369 } … … 353 390 { 354 391 int i, n, fd, changed=0; 355 char *buf ,*p;392 char *buf; 356 393 for(i = 0; i < SCRIPT_NUM_PARAMS; i++) 357 394 { … … 375 412 376 413 // max possible params * (param description + some extra for @default etc) 377 buf=umalloc( SCRIPT_NUM_PARAMS*(28 + 20));414 buf=umalloc(256); 378 415 if(!buf) 379 416 return; … … 385 422 } 386 423 buf[0] = 0; 387 p=buf;388 424 for(n = 0; n < SCRIPT_NUM_PARAMS; ++n) 389 425 { 390 426 if (script_params[n][0] != 0) 391 427 { 392 p+=sprintf(p,"@param %c %s\n@default %c %d\n",'a'+n,script_params[n],'a'+n,conf.script_vars[n]); 393 } 394 } 395 write(fd, buf, strlen(buf)); 428 sprintf(buf,"@param %c %s\n@default %c %d\n",'a'+n,script_params[n],'a'+n,conf.script_vars[n]); 429 if (script_range_values[n] != 0) 430 sprintf(buf+strlen(buf),"@range %c %d %d\n",'a'+n,(short)(script_range_values[n]&0xFFFF),(short)(script_range_values[n]>>16)); 431 write(fd, buf, strlen(buf)); 432 } 433 } 396 434 close(fd); 397 435 ufree(buf); -
trunk/include/script.h
r1719 r1900 19 19 extern char script_title[36]; 20 20 extern char script_params[SCRIPT_NUM_PARAMS][28]; 21 extern int script_range_values[SCRIPT_NUM_PARAMS]; 21 22 extern int script_param_order[SCRIPT_NUM_PARAMS]; 22 23 -
trunk/lib/ubasic/tokenizer.c
r1719 r1900 202 202 {"@param", TOKENIZER_REM}, 203 203 {"@default", TOKENIZER_REM}, 204 {"@range", TOKENIZER_REM}, 204 205 205 206 {"md_detect_motion", TOKENIZER_MD_DETECT_MOTION},
Note: See TracChangeset
for help on using the changeset viewer.