Salut,
Comment dois-je concevoir mon widget, pour pouvoir utiliser une feuille de style comme suit ?
Ou encore:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 style "my_widget_border" { MyWidget::border = 1px solid red }
Ou même de combiner les deux:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 style "my_widget_border" { MyWidget::border-top-color = red MyWidget::border-bottom-color = red MyWidget::border-style = solid MyWidget::border-width = 1px 0 1px 0 }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 style "my_widget_border" { MyWidget::border = 1px solid red MyWidget::border-width = 1px 0 1px 0 }
J'ai crée mon parser et mes structure:
J'appel gtk_widget_class_install_style_property_parser pour chaque propriété (border, border-style, border-color, ..., border-top, ..., border-top-style, border-top-color, ...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 MyStyleBorder { struct { MyStyleColor top; MyStyleColor right; MyStyleColor bottom; MyStyleColor left; } color; struct { MyStyleLine top; MyStyleLine right; MyStyleLine bottom; MyStyleLine left; } style; struct { MyStyleWidth top; MyStyleWidth right; MyStyleWidth bottom; MyStyleWidth left; } width; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 gtk_widget_class_install_style_property_parser(widget_class, g_param_spec_boxed("border-bottom-color", "Border bottom color", "Display a border", MY_TYPE_STYLE_COLOR, G_PARAM_WRITABLE|G_PARAM_READABLE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB ), my_rc_parser_border_bottom_color );Comment utiliser/retrouver la propriété "border" de mon widget dans cette dernière ? Ou comment dois-je m'y prendre ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 gboolean my_rc_parser_border_bottom_color(const GParamSpec *pspec, const GString *rc_string, GValue *property_value) { // ? ? ? gtk_widget_style_get(widget, "border", &border) réalise une copie de MyStyleBorder (qui est un boxed) et non pas sa référence }
PS: Je m'interdit les static: "par-ce que" (c'est tout...). En attendant une éventuelle réponse de votre part, je vais éviter les propriétés raccourcit (C'est peut être ça la clé) ...
Partager