comparison gui/skin/skin.c @ 33054:ed66afc0b06c

Replace macros to check whether a command is allowed by functions. Additionally, add checks for commands 'window' and 'end'.
author ib
date Tue, 29 Mar 2011 10:21:39 +0000
parents f64d41dac10b
children 2be86f1db767
comparison
equal deleted inserted replaced
33053:f64d41dac10b 33054:ed66afc0b06c
58 va_end(ap); 58 va_end(ap);
59 59
60 gmp_msg(MSGT_GPLAYER, MSGL_ERR, MSGTR_SKIN_ERRORMESSAGE, linenumber, p); 60 gmp_msg(MSGT_GPLAYER, MSGL_ERR, MSGTR_SKIN_ERRORMESSAGE, linenumber, p);
61 } 61 }
62 62
63 #define CHECKDEFLIST(str) \ 63 static int section_cmd(char *cmd)
64 { \ 64 {
65 if (skin == NULL) \ 65 if (!skin) {
66 { \ 66 skin_error(MSGTR_SKIN_ERROR_SECTION, cmd);
67 skin_error(MSGTR_SKIN_ERROR_SECTION, str); \ 67 return 0;
68 return 1; \ 68 }
69 } \ 69
70 } 70 return 1;
71 71 }
72 #define CHECKWINLIST(str) \ 72
73 { \ 73 static int window_cmd(char *cmd)
74 if (!currWinName[0]) \ 74 {
75 { \ 75 if (!currWinName[0]) {
76 skin_error(MSGTR_SKIN_ERROR_WINDOW, str); \ 76 skin_error(MSGTR_SKIN_ERROR_WINDOW, cmd);
77 return 1; \ 77 return 0;
78 } \ 78 }
79 } 79
80 return 1;
81 }
80 82
81 #define CHECK(name) \ 83 #define CHECK(name) \
82 { \ 84 { \
83 if (!strcmp(currWinName, name)) \ 85 if (!strcmp(currWinName, name)) \
84 { \ 86 { \
157 } 159 }
158 #endif 160 #endif
159 161
160 (void)in; 162 (void)in;
161 163
164 if (!section_cmd("end"))
165 return 1;
166
162 mp_dbg(MSGT_GPLAYER, MSGL_DBG2, "[skin] %send (%s)\n", space, name); 167 mp_dbg(MSGT_GPLAYER, MSGL_DBG2, "[skin] %send (%s)\n", space, name);
163 168
164 if (currWinName[0]) { 169 if (currWinName[0]) {
165 currWinName[0] = 0; 170 currWinName[0] = 0;
166 currWin = NULL; 171 currWin = NULL;
173 } 178 }
174 179
175 // window=main|sub|playbar|menu 180 // window=main|sub|playbar|menu
176 static int cmd_window(char *in) 181 static int cmd_window(char *in)
177 { 182 {
178 CHECKDEFLIST("window"); 183 if (!section_cmd("window"))
184 return 1;
185
186 if (currWinName[0]) {
187 skin_error(MSGTR_SKIN_ERROR_IN_WINDOW, "window");
188 return 1;
189 }
179 190
180 av_strlcpy(currWinName, strlower(in), sizeof(currWinName)); 191 av_strlcpy(currWinName, strlower(in), sizeof(currWinName));
181 192
182 if (!strncmp(in, "main", 4)) { 193 if (!strncmp(in, "main", 4)) {
183 currWin = &appMPlayer.main; 194 currWin = &appMPlayer.main;
207 unsigned char fname[512]; 218 unsigned char fname[512];
208 unsigned char tmp[512]; 219 unsigned char tmp[512];
209 int x, y; 220 int x, y;
210 int sx = 0, sy = 0; 221 int sx = 0, sy = 0;
211 222
212 CHECKDEFLIST("base"); 223 if (!window_cmd("base"))
213 CHECKWINLIST("base"); 224 return 1;
214 225
215 cutItem(in, fname, ',', 0); 226 cutItem(in, fname, ',', 0);
216 x = cutItemToInt(in, ',', 1); 227 x = cutItemToInt(in, ',', 1);
217 y = cutItemToInt(in, ',', 2); 228 y = cutItemToInt(in, ',', 2);
218 sx = cutItemToInt(in, ',', 3); 229 sx = cutItemToInt(in, ',', 3);
324 } 335 }
325 336
326 // background=R,G,B 337 // background=R,G,B
327 static int cmd_background(char *in) 338 static int cmd_background(char *in)
328 { 339 {
329 CHECKDEFLIST("background"); 340 if (!window_cmd("background"))
330 CHECKWINLIST("background"); 341 return 1;
331 342
332 CHECK("menu"); 343 CHECK("menu");
333 CHECK("main"); 344 CHECK("main");
334 345
335 currWin->R = cutItemToInt(in, ',', 0); 346 currWin->R = cutItemToInt(in, ',', 0);
347 unsigned char fname[512]; 358 unsigned char fname[512];
348 unsigned char tmp[512]; 359 unsigned char tmp[512];
349 int x, y, sx, sy; 360 int x, y, sx, sy;
350 char msg[32]; 361 char msg[32];
351 362
352 CHECKDEFLIST("button"); 363 if (!window_cmd("button"))
353 CHECKWINLIST("button"); 364 return 1;
354 365
355 CHECK("sub"); 366 CHECK("sub");
356 CHECK("menu"); 367 CHECK("menu");
357 368
358 cutItem(in, fname, ',', 0); 369 cutItem(in, fname, ',', 0);
405 static int cmd_selected(char *in) 416 static int cmd_selected(char *in)
406 { 417 {
407 unsigned char fname[512]; 418 unsigned char fname[512];
408 unsigned char tmp[512]; 419 unsigned char tmp[512];
409 420
410 CHECKDEFLIST("selected"); 421 if (!window_cmd("selected"))
411 CHECKWINLIST("selected"); 422 return 1;
412 423
413 CHECK("main"); 424 CHECK("main");
414 CHECK("sub"); 425 CHECK("sub");
415 CHECK("playbar"); 426 CHECK("playbar");
416 427
438 static int cmd_menu(char *in) 449 static int cmd_menu(char *in)
439 { 450 {
440 int x, y, sx, sy, message; 451 int x, y, sx, sy, message;
441 unsigned char tmp[64]; 452 unsigned char tmp[64];
442 453
443 CHECKDEFLIST("menu"); 454 if (!window_cmd("menu"))
444 CHECKWINLIST("menu"); 455 return 1;
445 456
446 CHECK("main"); 457 CHECK("main");
447 CHECK("sub"); 458 CHECK("sub");
448 CHECK("playbar"); 459 CHECK("playbar");
449 460
480 unsigned char tmp[512]; 491 unsigned char tmp[512];
481 unsigned char pfname[512]; 492 unsigned char pfname[512];
482 unsigned char phfname[512]; 493 unsigned char phfname[512];
483 wItem *item; 494 wItem *item;
484 495
485 CHECKDEFLIST("hpotmeter"); 496 if (!window_cmd("h/v potmeter"))
486 CHECKWINLIST("hpotmeter"); 497 return 1;
487 498
488 CHECK("sub"); 499 CHECK("sub");
489 CHECK("menu"); 500 CHECK("menu");
490 501
491 cutItem(in, pfname, ',', 0); 502 cutItem(in, pfname, ',', 0);
565 int x, y, ph, sx, sy, message, d; 576 int x, y, ph, sx, sy, message, d;
566 unsigned char tmp[512]; 577 unsigned char tmp[512];
567 unsigned char phfname[512]; 578 unsigned char phfname[512];
568 wItem *item; 579 wItem *item;
569 580
570 CHECKDEFLIST("potmeter"); 581 if (!window_cmd("potmeter"))
571 CHECKWINLIST("potmeter"); 582 return 1;
572 583
573 CHECK("sub"); 584 CHECK("sub");
574 CHECK("menu"); 585 CHECK("menu");
575 586
576 cutItem(in, phfname, ',', 0); 587 cutItem(in, phfname, ',', 0);
617 static int cmd_font(char *in) 628 static int cmd_font(char *in)
618 { 629 {
619 char name[512]; 630 char name[512];
620 wItem *item; 631 wItem *item;
621 632
622 CHECKDEFLIST("font"); 633 if (!window_cmd("font"))
623 CHECKWINLIST("font"); 634 return 1;
624 635
625 CHECK("sub"); 636 CHECK("sub");
626 CHECK("menu"); 637 CHECK("menu");
627 638
628 cutItem(in, name, ',', 0); 639 cutItem(in, name, ',', 0);
661 char tmp[512]; 672 char tmp[512];
662 char sid[64]; 673 char sid[64];
663 int x, y, id; 674 int x, y, id;
664 wItem *item; 675 wItem *item;
665 676
666 CHECKDEFLIST("slabel"); 677 if (!window_cmd("slabel"))
667 CHECKWINLIST("slabel"); 678 return 1;
668 679
669 CHECK("sub"); 680 CHECK("sub");
670 CHECK("menu"); 681 CHECK("menu");
671 682
672 x = cutItemToInt(in, ',', 0); 683 x = cutItemToInt(in, ',', 0);
711 char tmp[512]; 722 char tmp[512];
712 char sid[64]; 723 char sid[64];
713 int x, y, sx, id, a; 724 int x, y, sx, id, a;
714 wItem *item; 725 wItem *item;
715 726
716 CHECKDEFLIST("dlabel"); 727 if (!window_cmd("dlabel"))
717 CHECKWINLIST("dlabel"); 728 return 1;
718 729
719 CHECK("sub"); 730 CHECK("sub");
720 CHECK("menu"); 731 CHECK("menu");
721 732
722 x = cutItemToInt(in, ',', 0); 733 x = cutItemToInt(in, ',', 0);
762 // decoration=enable|disable 773 // decoration=enable|disable
763 static int cmd_decoration(char *in) 774 static int cmd_decoration(char *in)
764 { 775 {
765 char tmp[512]; 776 char tmp[512];
766 777
767 CHECKDEFLIST("decoration"); 778 if (!window_cmd("decoration"))
768 CHECKWINLIST("decoration"); 779 return 1;
769 780
770 CHECK("sub"); 781 CHECK("sub");
771 CHECK("menu"); 782 CHECK("menu");
772 CHECK("playbar"); 783 CHECK("playbar");
773 784