Mercurial > mplayer.hg
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 |