~ubuntu-branches/ubuntu/lucid/gtk2-engines-murrine/lucid

« back to all changes in this revision

Viewing changes to src/murrine_rc_style.c

  • Committer: Bazaar Package Importer
  • Author(s): Didier Roche, Didier Roche, Khashayar Naderehvandi
  • Date: 2009-03-18 21:48:08 UTC
  • mfrom: (1.1.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20090318214808-0n7qxpyukzd2ru8r
Tags: 0.90.2-0ubuntu1
[Didier Roche]
* New upstream release (LP: #344154)
  - High roundness values are now correctly limited.
  - Use focus_color in draw_entry if the theme uses it.
  - Removed shadows from GtkCombo and GtkComboBoxEntry.
  - Code polishing and bugfixing.
  - Fixed a crash when using focus_color.
  - Now focus_color and scrollbar_color accept symbolic colors.
* debian/control:
  - add Vcs-Bzr tag
  - bump libgtk2.0-dev to 2.12.0
  - update Homepage field
* Rewrite debian/watch to get murrine from its new location

[Khashayar Naderehvandi]
* debian/control: remove quilt dependency
* debian/rules: remove "patch: patch-stamp" and all patch related stuff

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/* Murrine theme engine
2
 
 * Copyright (C) 2007 Andrea Cimitan
 
2
 * Copyright (C) 2006-2007-2008-2009 Andrea Cimitan
3
3
 *
4
4
 * This library is free software; you can redistribute it and/or
5
5
 * modify it under the terms of the GNU Library General Public
38
38
        TOKEN_ANIMATION = G_TOKEN_LAST + 1,
39
39
        TOKEN_COLORIZE_SCROLLBAR,
40
40
        TOKEN_CONTRAST,
 
41
        TOKEN_FOCUS_COLOR,
41
42
        TOKEN_GLAZESTYLE,
 
43
        TOKEN_GLOW_SHADE,
 
44
        TOKEN_GLOWSTYLE,
42
45
        TOKEN_GRADIENT_SHADES,
43
46
        TOKEN_GRADIENTS,
44
 
        TOKEN_HIGHLIGHT_RATIO,
45
 
        TOKEN_LIGHTBORDER_RATIO,
 
47
        TOKEN_HIGHLIGHT_SHADE,
 
48
        TOKEN_LIGHTBORDER_SHADE,
46
49
        TOKEN_LIGHTBORDERSTYLE,
47
50
        TOKEN_LISTVIEWHEADERSTYLE,
48
51
        TOKEN_LISTVIEWSTYLE,
50
53
        TOKEN_MENUBARSTYLE,
51
54
        TOKEN_MENUITEMSTYLE,
52
55
        TOKEN_MENUSTYLE,
 
56
        TOKEN_PROFILE,
 
57
        TOKEN_PROGRESSBARSTYLE,
53
58
        TOKEN_RELIEFSTYLE,
54
59
        TOKEN_RGBA,
55
60
        TOKEN_ROUNDNESS,
57
62
        TOKEN_SCROLLBARSTYLE,
58
63
        TOKEN_SLIDERSTYLE,
59
64
        TOKEN_STEPPERSTYLE,
60
 
        TOKEN_STYLE,
61
65
        TOKEN_TOOLBARSTYLE,
62
66
 
63
67
        TOKEN_CANDIDO,
71
75
 
72
76
        /* stuff to ignore */
73
77
        TOKEN_HILIGHT_RATIO,
74
 
        TOKEN_SQUAREDSTYLE
 
78
        TOKEN_HIGHLIGHT_RATIO,
 
79
        TOKEN_LIGHTBORDER_RATIO,
 
80
        TOKEN_SQUAREDSTYLE,
 
81
        TOKEN_STYLE
75
82
};
76
83
 
77
84
static struct
84
91
        { "animation",           TOKEN_ANIMATION },
85
92
        { "colorize_scrollbar",  TOKEN_COLORIZE_SCROLLBAR },
86
93
        { "contrast",            TOKEN_CONTRAST },
 
94
        { "focus_color",         TOKEN_FOCUS_COLOR },
87
95
        { "glazestyle",          TOKEN_GLAZESTYLE },
 
96
        { "glow_shade",          TOKEN_GLOW_SHADE },
 
97
        { "glowstyle",           TOKEN_GLOWSTYLE },
88
98
        { "gradient_shades",     TOKEN_GRADIENT_SHADES },
89
99
        { "gradients",           TOKEN_GRADIENTS },
90
 
        { "highlight_ratio",     TOKEN_HIGHLIGHT_RATIO },
91
 
        { "lightborder_ratio",   TOKEN_LIGHTBORDER_RATIO },
 
100
        { "highlight_shade",     TOKEN_HIGHLIGHT_SHADE },
 
101
        { "lightborder_shade",   TOKEN_LIGHTBORDER_SHADE },
92
102
        { "lightborderstyle",    TOKEN_LIGHTBORDERSTYLE },
93
103
        { "listviewheaderstyle", TOKEN_LISTVIEWHEADERSTYLE },
94
104
        { "listviewstyle",       TOKEN_LISTVIEWSTYLE },
96
106
        { "menubarstyle",        TOKEN_MENUBARSTYLE },
97
107
        { "menuitemstyle",       TOKEN_MENUITEMSTYLE },
98
108
        { "menustyle",           TOKEN_MENUSTYLE },
 
109
        { "profile",             TOKEN_PROFILE },
 
110
        { "progressbarstyle",    TOKEN_PROGRESSBARSTYLE },
99
111
        { "reliefstyle",         TOKEN_RELIEFSTYLE },
100
112
        { "rgba",                TOKEN_RGBA },
101
113
        { "roundness",           TOKEN_ROUNDNESS },
103
115
        { "scrollbarstyle",      TOKEN_SCROLLBARSTYLE },
104
116
        { "sliderstyle",         TOKEN_SLIDERSTYLE },
105
117
        { "stepperstyle",        TOKEN_STEPPERSTYLE },
106
 
        { "style",               TOKEN_STYLE },
107
118
        { "toolbarstyle",        TOKEN_TOOLBARSTYLE },
108
119
 
109
120
        { "CANDIDO",             TOKEN_CANDIDO },
117
128
 
118
129
        /* stuff to ignore */
119
130
        { "hilight_ratio",       TOKEN_HILIGHT_RATIO },
120
 
        { "squaredstyle",        TOKEN_SQUAREDSTYLE }
 
131
        { "highlight_ratio",     TOKEN_HIGHLIGHT_RATIO },
 
132
        { "lightborder_ratio",   TOKEN_LIGHTBORDER_RATIO },
 
133
        { "squaredstyle",        TOKEN_SQUAREDSTYLE },
 
134
        { "style",               TOKEN_STYLE }
121
135
};
122
136
 
123
137
G_DEFINE_DYNAMIC_TYPE (MurrineRcStyle, murrine_rc_style, GTK_TYPE_RC_STYLE)
136
150
        murrine_rc->animation = FALSE;
137
151
        murrine_rc->colorize_scrollbar = TRUE;
138
152
        murrine_rc->contrast = 1.0;
 
153
        murrine_rc->has_focus_color = FALSE;
139
154
        murrine_rc->glazestyle = 1;
 
155
        murrine_rc->glow_shade = 1.0;
 
156
        murrine_rc->glowstyle = 0;
140
157
        murrine_rc->gradient_shades[0] = 1.1;
141
158
        murrine_rc->gradient_shades[1] = 1.0;
142
159
        murrine_rc->gradient_shades[2] = 1.0;
143
160
        murrine_rc->gradient_shades[3] = 1.1;
144
161
        murrine_rc->gradients = TRUE;
145
162
        murrine_rc->has_scrollbar_color = FALSE;
146
 
        murrine_rc->highlight_ratio = 1.1;
147
 
        murrine_rc->lightborder_ratio = 1.1;
 
163
        murrine_rc->highlight_shade = 1.1;
 
164
        murrine_rc->lightborder_shade = 1.1;
148
165
        murrine_rc->lightborderstyle = 0;
149
166
        murrine_rc->listviewheaderstyle = 1;
150
167
        murrine_rc->listviewstyle = 0;
152
169
        murrine_rc->menubarstyle = 0;
153
170
        murrine_rc->menuitemstyle = 1;
154
171
        murrine_rc->menustyle = 1;
 
172
        murrine_rc->progressbarstyle = 1;
155
173
        murrine_rc->reliefstyle = 2;
156
174
        murrine_rc->rgba = FALSE;
157
175
        murrine_rc->roundness = 1;
158
176
        murrine_rc->scrollbarstyle = 0;
159
177
        murrine_rc->sliderstyle = 0;
160
178
        murrine_rc->stepperstyle = 0;
161
 
        murrine_rc->style = MRN_STYLE_MURRINE;
 
179
        murrine_rc->profile = MRN_PROFILE_MURRINE;
162
180
        murrine_rc->toolbarstyle = 0;
163
181
}
164
182
 
225
243
static guint
226
244
theme_parse_color (GtkSettings  *settings,
227
245
                   GScanner     *scanner,
 
246
                   GtkRcStyle   *style,
228
247
                   GdkColor     *color)
229
248
{
230
249
        guint token;
236
255
        if (token != G_TOKEN_EQUAL_SIGN)
237
256
                return G_TOKEN_EQUAL_SIGN;
238
257
 
239
 
        return gtk_rc_parse_color (scanner, color);
 
258
        return gtk_rc_parse_color_full (scanner, style, color);
240
259
}
241
260
 
242
261
static guint
243
 
theme_parse_ratio (GtkSettings  *settings,
 
262
theme_parse_shade (GtkSettings  *settings,
244
263
                   GScanner     *scanner,
245
264
                   double       *ratio)
246
265
{
286
305
}
287
306
 
288
307
static guint
289
 
theme_parse_style (GtkSettings   *settings,
290
 
                   GScanner      *scanner,
291
 
                   MurrineStyles *style)
 
308
theme_parse_profile (GtkSettings     *settings,
 
309
                     GScanner        *scanner,
 
310
                     MurrineProfiles *profile)
292
311
{
293
312
        guint token;
294
313
 
295
 
        g_assert (MRN_NUM_STYLES == MRN_STYLE_CLEARLOOKS + 1); /* so that people don't forget ;-) */
 
314
        g_assert (MRN_NUM_PROFILES == MRN_PROFILE_CLEARLOOKS + 1); /* so that people don't forget ;-) */
296
315
 
297
 
        /* Skip 'style' */
 
316
        /* Skip 'profile' */
298
317
        token = g_scanner_get_next_token (scanner);
299
318
 
300
319
        token = g_scanner_get_next_token (scanner);
301
320
        if (token != G_TOKEN_EQUAL_SIGN)
302
 
           return G_TOKEN_EQUAL_SIGN;
 
321
                return G_TOKEN_EQUAL_SIGN;
303
322
 
304
323
        token = g_scanner_get_next_token (scanner);
305
324
 
306
325
        switch (token)
307
326
        {
308
327
                case TOKEN_MURRINE:
309
 
                   *style = MRN_STYLE_MURRINE;
310
 
                   break;
 
328
                        *profile = MRN_PROFILE_MURRINE;
 
329
                        break;
311
330
                case TOKEN_NODOKA:
312
 
                   *style = MRN_STYLE_NODOKA;
313
 
                   break;
 
331
                        *profile = MRN_PROFILE_NODOKA;
 
332
                        break;
314
333
                case TOKEN_MIST:
315
 
                   *style = MRN_STYLE_MIST;
316
 
                   break;
 
334
                        *profile = MRN_PROFILE_MIST;
 
335
                        break;
317
336
                case TOKEN_CANDIDO:
318
 
                   *style = MRN_STYLE_CANDIDO;
319
 
                   break;
 
337
                        *profile = MRN_PROFILE_CANDIDO;
 
338
                        break;
320
339
                case TOKEN_CLEARLOOKS:
321
 
                   *style = MRN_STYLE_CLEARLOOKS;
322
 
                   break;
 
340
                        *profile = MRN_PROFILE_CLEARLOOKS;
 
341
                        break;
323
342
                default:
324
 
                   return TOKEN_MURRINE;
 
343
                        return TOKEN_MURRINE;
325
344
        }
326
345
 
327
346
        return G_TOKEN_NONE;
329
348
 
330
349
static guint
331
350
theme_parse_gradient (GtkSettings  *settings,
332
 
                      GScanner     *scanner, 
 
351
                      GScanner     *scanner,
333
352
                      double       gradient_shades[4])
334
353
{
335
354
        guint               token;
457
476
                                murrine_style->flags |= MRN_FLAG_COLORIZE_SCROLLBAR;
458
477
                                break;
459
478
                        case TOKEN_CONTRAST:
460
 
                                token = theme_parse_ratio (settings, scanner, &murrine_style->contrast);
 
479
                                token = theme_parse_shade (settings, scanner, &murrine_style->contrast);
461
480
                                murrine_style->flags |= MRN_FLAG_CONTRAST;
462
481
                                break;
 
482
                        case TOKEN_FOCUS_COLOR:
 
483
                                token = theme_parse_color (settings, scanner, rc_style, &murrine_style->focus_color);
 
484
                                murrine_style->flags |= MRN_FLAG_FOCUS_COLOR;
 
485
                                murrine_style->has_focus_color = TRUE;
 
486
                                break;
463
487
                        case TOKEN_GLAZESTYLE:
464
488
                                token = theme_parse_int (settings, scanner, &murrine_style->glazestyle);
465
489
                                murrine_style->flags |= MRN_FLAG_GLAZESTYLE;
466
490
                                break;
 
491
                        case TOKEN_GLOW_SHADE:
 
492
                                token = theme_parse_shade (settings, scanner, &murrine_style->glow_shade);
 
493
                                murrine_style->flags |= MRN_FLAG_GLOW_SHADE;
 
494
                                break;
 
495
                        case TOKEN_GLOWSTYLE:
 
496
                                token = theme_parse_int (settings, scanner, &murrine_style->glowstyle);
 
497
                                murrine_style->flags |= MRN_FLAG_GLOWSTYLE;
 
498
                                break;
467
499
                        case TOKEN_GRADIENT_SHADES:
468
500
                                token = theme_parse_gradient (settings, scanner, murrine_style->gradient_shades);
469
501
                                murrine_style->flags |= MRN_FLAG_GRADIENT_SHADES;
472
504
                                token = theme_parse_boolean (settings, scanner, &murrine_style->gradients);
473
505
                                murrine_style->flags |= MRN_FLAG_GRADIENTS;
474
506
                                break;
475
 
                        case TOKEN_HIGHLIGHT_RATIO:
476
 
                                token = theme_parse_ratio (settings, scanner, &murrine_style->highlight_ratio);
477
 
                                murrine_style->flags |= MRN_FLAG_HIGHLIGHT_RATIO;
 
507
                        case TOKEN_HIGHLIGHT_SHADE:
 
508
                                token = theme_parse_shade (settings, scanner, &murrine_style->highlight_shade);
 
509
                                murrine_style->flags |= MRN_FLAG_HIGHLIGHT_SHADE;
478
510
                                break;
479
 
                        case TOKEN_LIGHTBORDER_RATIO:
480
 
                                token = theme_parse_ratio (settings, scanner, &murrine_style->lightborder_ratio);
481
 
                                murrine_style->flags |= MRN_FLAG_LIGHTBORDER_RATIO;
 
511
                        case TOKEN_LIGHTBORDER_SHADE:
 
512
                                token = theme_parse_shade (settings, scanner, &murrine_style->lightborder_shade);
 
513
                                murrine_style->flags |= MRN_FLAG_LIGHTBORDER_SHADE;
482
514
                                break;
483
515
                        case TOKEN_LIGHTBORDERSTYLE:
484
516
                                token = theme_parse_int (settings, scanner, &murrine_style->lightborderstyle);
508
540
                                token = theme_parse_int (settings, scanner, &murrine_style->menustyle);
509
541
                                murrine_style->flags |= MRN_FLAG_MENUSTYLE;
510
542
                                break;
 
543
                        case TOKEN_PROFILE:
 
544
                                token = theme_parse_profile (settings, scanner, &murrine_style->profile);
 
545
                                murrine_style->flags |= MRN_FLAG_PROFILE;
 
546
                                break;
 
547
                        case TOKEN_PROGRESSBARSTYLE:
 
548
                                token = theme_parse_int (settings, scanner, &murrine_style->progressbarstyle);
 
549
                                murrine_style->flags |= MRN_FLAG_PROGRESSBARSTYLE;
 
550
                                break;
511
551
                        case TOKEN_RELIEFSTYLE:
512
552
                                token = theme_parse_int (settings, scanner, &murrine_style->reliefstyle);
513
553
                                murrine_style->flags |= MRN_FLAG_RELIEFSTYLE;
521
561
                                murrine_style->flags |= MRN_FLAG_ROUNDNESS;
522
562
                                break;
523
563
                        case TOKEN_SCROLLBAR_COLOR:
524
 
                                token = theme_parse_color (settings, scanner, &murrine_style->scrollbar_color);
 
564
                                token = theme_parse_color (settings, scanner, rc_style, &murrine_style->scrollbar_color);
525
565
                                murrine_style->flags |= MRN_FLAG_SCROLLBAR_COLOR;
526
566
                                murrine_style->has_scrollbar_color = TRUE;
527
567
                                break;
537
577
                                token = theme_parse_int (settings, scanner, &murrine_style->stepperstyle);
538
578
                                murrine_style->flags |= MRN_FLAG_STEPPERSTYLE;
539
579
                                break;
540
 
                        case TOKEN_STYLE:
541
 
                                token = theme_parse_style (settings, scanner, &murrine_style->style);
542
 
                                murrine_style->flags |= MRN_FLAG_STYLE;
543
 
                                break;
544
580
                        case TOKEN_TOOLBARSTYLE:
545
581
                                token = theme_parse_int (settings, scanner, &murrine_style->toolbarstyle);
546
582
                                murrine_style->flags |= MRN_FLAG_TOOLBARSTYLE;
548
584
 
549
585
                        /* stuff to ignore */
550
586
                        case TOKEN_HILIGHT_RATIO:
551
 
                                g_scanner_warn (scanner, "Murrine configuration option \"hilight_ratio\" will be deprecated in future releases. Please update this theme to get rid of this warning.", "hilight_ratio");
 
587
                                g_scanner_warn (scanner, "Murrine configuration option \"hilight_ratio\" will be deprecated in future releases. Please use \"highlight_shade\" instead.", "hilight_ratio");
552
588
                                double hilight_ratio;
553
 
                                token = theme_parse_ratio (settings, scanner, &hilight_ratio);
554
 
                                murrine_style->highlight_ratio = hilight_ratio/0.909090;
555
 
                                murrine_style->flags |= MRN_FLAG_HIGHLIGHT_RATIO;
 
589
                                token = theme_parse_shade (settings, scanner, &hilight_ratio);
 
590
                                murrine_style->highlight_shade = hilight_ratio/0.909090;
 
591
                                murrine_style->flags |= MRN_FLAG_HIGHLIGHT_SHADE;
 
592
                                break;
 
593
                        case TOKEN_HIGHLIGHT_RATIO:
 
594
                                g_scanner_warn (scanner, "Murrine configuration option \"highlight_ratio\" will be deprecated in future releases. Please use \"highlight_shade\" instead.", "highlight_ratio");
 
595
                                token = theme_parse_shade (settings, scanner, &murrine_style->highlight_shade);
 
596
                                murrine_style->flags |= MRN_FLAG_HIGHLIGHT_SHADE;
 
597
                                break;
 
598
                        case TOKEN_LIGHTBORDER_RATIO:
 
599
                                g_scanner_warn (scanner, "Murrine configuration option \"lightborder_ratio\" will be deprecated in future releases. Please use \"lightborder_shade\" instead.", "lightborder_ratio");
 
600
                                token = theme_parse_shade (settings, scanner, &murrine_style->lightborder_shade);
 
601
                                murrine_style->flags |= MRN_FLAG_LIGHTBORDER_SHADE;
556
602
                                break;
557
603
                        case TOKEN_SQUAREDSTYLE:
558
604
                                token = murrine_gtk2_rc_parse_dummy (settings, scanner, "squaredstyle");
559
605
                                break;
 
606
                        case TOKEN_STYLE:
 
607
                                token = murrine_gtk2_rc_parse_dummy (settings, scanner, "style");
 
608
                                break;
560
609
 
561
610
                        default:
562
611
                                g_scanner_get_next_token(scanner);
600
649
                dest_w->colorize_scrollbar = src_w->colorize_scrollbar;
601
650
        if (flags & MRN_FLAG_CONTRAST)
602
651
                dest_w->contrast = src_w->contrast;
 
652
        if (flags & MRN_FLAG_FOCUS_COLOR)
 
653
        {
 
654
                dest_w->has_focus_color = TRUE;
 
655
                dest_w->focus_color = src_w->focus_color;
 
656
        }
603
657
        if (flags & MRN_FLAG_GLAZESTYLE)
604
658
                dest_w->glazestyle = src_w->glazestyle;
 
659
        if (flags & MRN_FLAG_GLOW_SHADE)
 
660
                dest_w->glow_shade = src_w->glow_shade;
 
661
        if (flags & MRN_FLAG_GLOWSTYLE)
 
662
                dest_w->glowstyle = src_w->glowstyle;
605
663
        if (flags & MRN_FLAG_GRADIENT_SHADES)
606
664
        {
607
665
                dest_w->gradient_shades[0] = src_w->gradient_shades[0];
611
669
        }
612
670
        if (flags & MRN_FLAG_GRADIENTS)
613
671
                dest_w->gradients = src_w->gradients;
614
 
        if (flags & MRN_FLAG_HIGHLIGHT_RATIO)
615
 
                dest_w->highlight_ratio = src_w->highlight_ratio;
616
 
        if (flags & MRN_FLAG_LIGHTBORDER_RATIO)
617
 
                dest_w->lightborder_ratio = src_w->lightborder_ratio;
 
672
        if (flags & MRN_FLAG_HIGHLIGHT_SHADE)
 
673
                dest_w->highlight_shade = src_w->highlight_shade;
 
674
        if (flags & MRN_FLAG_LIGHTBORDER_SHADE)
 
675
                dest_w->lightborder_shade = src_w->lightborder_shade;
618
676
        if (flags & MRN_FLAG_LIGHTBORDERSTYLE)
619
677
                dest_w->lightborderstyle = src_w->lightborderstyle;
620
678
        if (flags & MRN_FLAG_LISTVIEWHEADERSTYLE)
629
687
                dest_w->menuitemstyle = src_w->menuitemstyle;
630
688
        if (flags & MRN_FLAG_MENUSTYLE)
631
689
                dest_w->menustyle = src_w->menustyle;
 
690
        if (flags & MRN_FLAG_PROFILE)
 
691
                dest_w->profile = src_w->profile;
 
692
        if (flags & MRN_FLAG_PROGRESSBARSTYLE)
 
693
                dest_w->progressbarstyle = src_w->progressbarstyle;
632
694
        if (flags & MRN_FLAG_RELIEFSTYLE)
633
695
                dest_w->reliefstyle = src_w->reliefstyle;
634
696
        if (flags & MRN_FLAG_RGBA)
646
708
                dest_w->sliderstyle = src_w->sliderstyle;
647
709
        if (flags & MRN_FLAG_STEPPERSTYLE)
648
710
                dest_w->stepperstyle = src_w->stepperstyle;
649
 
        if (flags & MRN_FLAG_STYLE)
650
 
                dest_w->style = src_w->style;
651
711
        if (flags & MRN_FLAG_TOOLBARSTYLE)
652
712
                dest_w->toolbarstyle = src_w->toolbarstyle;
653
713