IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec C & C++ Discussion :

[Gtk+2.24] gtk install style property parser


Sujet :

GTK+ avec C & C++

  1. #1
    Membre chevronné Avatar de Gaulouis
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2015
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2015
    Messages : 252
    Par défaut [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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    style "my_widget_border" {
      MyWidget::border = 1px solid red
    }
    Ou encore:
    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
    }
    Ou même de combiner les deux:
    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:
    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;
    }
    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
      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 : 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
    }
    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é) ...

  2. #2
    Membre chevronné Avatar de Gaulouis
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2015
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2015
    Messages : 252
    Par défaut
    Voilà comment j'ai procédé pour l'utilisation des raccourcit des propriété css:

    Dans l'instance de mon widget je crée un membre MyStyleBorder *border;

    Puis dans les fonctions gtk_widget_style_set, gtk_widget_allocation j'hydrate/peuple/update ma structure MyStyleBorder grâce à la fonction gtk_widget_style_get.

    Enfin, dans la fonction gtk_widget_expose, je n'ai plus qu'a utiliser les donnée dans my_widget->border;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [GTK] Ajouter/utiliser GTK dans Visual C++ 6.0
    Par kiroukou dans le forum MFC
    Réponses: 7
    Dernier message: 29/03/2006, 23h04
  2. Probleme GTK ? - checking for gtk-config
    Par bonano dans le forum GTK+
    Réponses: 1
    Dernier message: 20/02/2006, 19h50
  3. [GTK]problème avec GTK+ sur DEV-C++
    Par afrikha dans le forum Dev-C++
    Réponses: 7
    Dernier message: 01/10/2005, 14h13
  4. [GTK]PB Librairie GTK+ sous dev-c++
    Par wozzy dans le forum Dev-C++
    Réponses: 15
    Dernier message: 05/11/2002, 14h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo