[Gtk+2.24] gtk install style property parser
Salut,
Comment dois-je concevoir mon widget, pour pouvoir utiliser une feuille de style comme suit ?
Code:
1 2 3
| style "my_widget_border" {
MyWidget::border = 1px solid red
} |
Ou encore:
Code:
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
} |
Ou même de combiner les deux:
Code:
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:
Code:
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;
} |
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:
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
); |
Code:
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
} |
Comment utiliser/retrouver la propriété "border" de mon widget dans cette dernière ? Ou comment dois-je m'y prendre ?
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é) ...