diff options
| author | Cyrille Bagard <nocbos@gmail.com> | 2015-08-13 00:35:42 (GMT) | 
|---|---|---|
| committer | Cyrille Bagard <nocbos@gmail.com> | 2015-08-13 00:35:42 (GMT) | 
| commit | 50a657889a32a6df365bf9880a6f56bf3a0e828c (patch) | |
| tree | cf6218848a0119aafa4610baee73adcc1ef6c10b /src/gtkext/easygtk.c | |
| parent | 4c611d6f41d82603a5d37baf88b0bb213044eb60 (diff) | |
Improved the look of dock stations and saved screen space.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@571 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/gtkext/easygtk.c')
| -rw-r--r-- | src/gtkext/easygtk.c | 186 | 
1 files changed, 159 insertions, 27 deletions
| diff --git a/src/gtkext/easygtk.c b/src/gtkext/easygtk.c index fcbaa19..61e8953 100644 --- a/src/gtkext/easygtk.c +++ b/src/gtkext/easygtk.c @@ -28,6 +28,10 @@ +/* Termine la construction d'un composant 'GtkButton'. */ +static void _finish_button_with_img(GtkWidget *, GObject *, const char *, GtkWidget *, const char *); + +  /******************************************************************************  *                                                                             * @@ -399,6 +403,113 @@ GtkWidget *qck_create_button_with_img(GObject *object, const char *name, const c  /******************************************************************************  *                                                                             * +*  Paramètres  : button  = composant graphique dont la définition est à finir.* +*                object  = espace dédié à l'inscription de références.        * +*                name    = nom à donner au nouveau composant.                 * +*                picture = éventuelle image sous forme de composant GTK.      * +*                label   = contenu de l'étiquette éventuelle associée.        * +*                                                                             * +*  Description : Termine la construction d'un composant 'GtkButton'.          * +*                                                                             * +*  Retour      : -                                                            * +*                                                                             * +*  Remarques   : -                                                            * +*                                                                             * +******************************************************************************/ + +static void _finish_button_with_img(GtkWidget *button, GObject *object, const char *name, GtkWidget *picture, const char *label) +{ +    GtkWidget *caption;                     /* Etiquette à coller          */ +    GtkWidget *hbox;                        /* Séparation horizontale      */ + +    /* Création des éléments internes (2/2) */ + +    if (label != NULL) +    { +        caption = gtk_label_new_with_mnemonic(label); +        gtk_widget_show(caption); +    } + +    /* Mise en place */ + +    if (picture != NULL && label != NULL) +    { +        hbox = gtk_hbox_new(FALSE, 2); +        gtk_widget_show(hbox); +        gtk_container_add(GTK_CONTAINER(button), hbox); + +        gtk_box_pack_start(GTK_BOX(hbox), picture, FALSE, FALSE, 0); +        gtk_box_pack_start(GTK_BOX(hbox), caption, FALSE, FALSE, 0); + +    } + +    else if (picture != NULL) +        gtk_container_add(GTK_CONTAINER(button), picture); + +    else /*if (label != NULL)*/ +        gtk_container_add(GTK_CONTAINER(button), caption); + +    /* Interactions GTK... */ + +    if (G_IS_OBJECT(object) && name != NULL) +    { +        g_object_ref(G_OBJECT(button)); +        g_object_set_data_full(object, name, button, (GDestroyNotify)g_object_unref); +    } + +    gtk_widget_show(button); + +} + + +/****************************************************************************** +*                                                                             * +*  Paramètres  : object  = espace dédié à l'inscription de références.        * +*                name    = nom à donner au nouveau composant.                 * +*                image   = nom de l'image stockée dans GTK.                   * +*                size    = taille de l'image éventuelle à faire figurer.      * +*                label   = contenu de l'étiquette éventuelle associée.        * +*                handler = éventuelle fonction de sélection associée.         * +*                data    = données à transmettre avec l'événement si besoin.  * +*                                                                             * +*  Description : Crée et enregistre un composant 'GtkButton'.                 * +*                                                                             * +*  Retour      : Simple bouton mis en place.                                  * +*                                                                             * +*  Remarques   : -                                                            * +*                                                                             * +******************************************************************************/ + +GtkWidget *qck_create_button_with_named_img(GObject *object, const char *name, const char *image, GtkIconSize size, const char *label, GCallback handler, gpointer data) +{ +    GtkWidget *result;                      /* Résultat à renvoyer         */ +    GtkWidget *picture;                     /* Image de représentation     */ + +    result = gtk_button_new(); +    gtk_widget_set_can_default(result, TRUE); + +    /* Création des éléments internes (1/2) */ + +    if (image != NULL) +    { +        picture = gtk_image_new_from_icon_name(image, size); +        gtk_widget_show(picture); +    } +    else +        picture = NULL; + +    _finish_button_with_img(result, object, name, picture, label); + +    if (handler != NULL) +        g_signal_connect(result, "clicked", handler, data); + +	return result; + +} + + +/****************************************************************************** +*                                                                             *  *  Paramètres  : object  = espace dédié à l'inscription de références.        *  *                name    = nom à donner au nouveau composant.                 *  *                image   = nom de l'image stockée dans GTK.                   * @@ -418,13 +529,11 @@ GtkWidget *qck_create_button_with_css_img(GObject *object, const char *name, con  {      GtkWidget *result;                      /* Résultat à renvoyer         */      GtkWidget *picture;                     /* Image de représentation     */ -    GtkWidget *caption;                     /* Etiquette à coller          */ -    GtkWidget *hbox;                        /* Séparation horizontale      */      result = gtk_button_new();      gtk_widget_set_can_default(result, TRUE); -    /* Création des éléments internes */ +    /* Création des éléments internes (1/2) */      if (image != NULL)      { @@ -434,44 +543,59 @@ GtkWidget *qck_create_button_with_css_img(GObject *object, const char *name, con          gtk_widget_set_name(picture, image);      } +    else +        picture = NULL; -    if (label != NULL) -    { -        caption = gtk_label_new_with_mnemonic(label); -        gtk_widget_show(caption); -    } +    _finish_button_with_img(result, object, name, picture, label); -    /* Mise en place */ +    if (handler != NULL) +        g_signal_connect(result, "clicked", handler, data); -    if (image != NULL && label != NULL) -    { -        hbox = gtk_hbox_new(FALSE, 2); -        gtk_widget_show(hbox); -        gtk_container_add(GTK_CONTAINER(result), hbox); +	return result; -        gtk_box_pack_start(GTK_BOX(hbox), picture, FALSE, FALSE, 0); -        gtk_box_pack_start(GTK_BOX(hbox), caption, FALSE, FALSE, 0); +} -    } -    else if (image != NULL) -        gtk_container_add(GTK_CONTAINER(result), picture); +/****************************************************************************** +*                                                                             * +*  Paramètres  : object  = espace dédié à l'inscription de références.        * +*                name    = nom à donner au nouveau composant.                 * +*                image   = nom de l'image stockée dans GTK.                   * +*                size    = taille de l'image éventuelle à faire figurer.      * +*                label   = contenu de l'étiquette éventuelle associée.        * +*                handler = éventuelle fonction de sélection associée.         * +*                data    = données à transmettre avec l'événement si besoin.  * +*                                                                             * +*  Description : Crée et enregistre un composant 'GtkCheckButton'.            * +*                                                                             * +*  Retour      : Simple bouton mis en place.                                  * +*                                                                             * +*  Remarques   : -                                                            * +*                                                                             * +******************************************************************************/ + +GtkWidget *qck_create_toggle_button_with_named_img(GObject *object, const char *name, const char *image, GtkIconSize size, const char *label, GCallback handler, gpointer data) +{ +    GtkWidget *result;                      /* Résultat à renvoyer         */ +    GtkWidget *picture;                     /* Image de représentation     */ -    else /*if (label != NULL)*/ -        gtk_container_add(GTK_CONTAINER(result), caption); +    result = gtk_toggle_button_new(); +    gtk_widget_set_can_default(result, TRUE); -    /* Interactions GTK... */ +    /* Création des éléments internes (1/2) */ -    if (G_IS_OBJECT(object) && name != NULL) +    if (image != NULL)      { -        g_object_ref(G_OBJECT(result)); -        g_object_set_data_full(object, name, result, (GDestroyNotify)g_object_unref); +        picture = gtk_image_new_from_icon_name(image, size); +        gtk_widget_show(picture);      } +    else +        picture = NULL; -    gtk_widget_show(result); +    _finish_button_with_img(result, object, name, picture, label);      if (handler != NULL) -        g_signal_connect(result, "clicked", handler, data); +        g_signal_connect(result, "toggled", handler, data);  	return result; @@ -802,6 +926,14 @@ void add_accelerator_to_menu_item(GtkWidget *item, const char *accelerator, GtkA      gtk_accelerator_parse(accelerator, &key, &mods); + +    gboolean force_accel_activation(GtkWidget *widget, guint signal_id, gpointer data) +    { +        return TRUE; +    } + +    g_signal_connect(item, "can-activate-accel", force_accel_activation, NULL); +      gtk_widget_add_accelerator(item, "activate", group,                                 key, mods, GTK_ACCEL_VISIBLE); | 
