diff options
Diffstat (limited to 'src/gtkext')
-rw-r--r-- | src/gtkext/easygtk.c | 125 | ||||
-rw-r--r-- | src/gtkext/easygtk.h | 11 | ||||
-rw-r--r-- | src/gtkext/support.c | 65 | ||||
-rw-r--r-- | src/gtkext/support.h | 6 |
4 files changed, 207 insertions, 0 deletions
diff --git a/src/gtkext/easygtk.c b/src/gtkext/easygtk.c index 5d44723..c14042c 100644 --- a/src/gtkext/easygtk.c +++ b/src/gtkext/easygtk.c @@ -24,6 +24,9 @@ #include "easygtk.h" +#include "support.h" + + /****************************************************************************** @@ -608,3 +611,125 @@ GtkWidget *qck_create_menu_separator(void) return result; } + + + + + + + + + + +/****************************************************************************** +* * +* Paramètres : object = espace dédié à l'inscription de références. * +* name = nom à donner au nouveau composant. * +* filename = nom du fichier d'image à charger. * +* 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 'GtkToolButton'. * +* * +* Retour : Simple élément de barre d'outils mis en place. * +* * +* Remarques : - * +* * +******************************************************************************/ + +GtkWidget *qck_create_tool_button(GObject *object, const char *name, const char *filename, GCallback handler, gpointer data) +{ + GtkWidget *result; /* Résultat à renvoyer */ + GtkWidget *image; /* Image de représentation */ + + image = get_image_from_file(filename); + result = GTK_WIDGET(gtk_tool_button_new(image, NULL)); + + if (G_IS_OBJECT(object) && name != NULL) + { + gtk_widget_ref(result); + g_object_set_data_full(object, name, result, (GtkDestroyNotify)g_object_unref); + } + + gtk_widget_show(result); + + 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. * +* filename = nom du fichier d'image à charger. * +* 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 'GtkToggleToolButton'. * +* * +* Retour : Simple élément de barre d'outils mis en place. * +* * +* Remarques : - * +* * +******************************************************************************/ + +GtkWidget *qck_create_toggle_tool_button(GObject *object, const char *name, const char *filename, GCallback handler, gpointer data) +{ + GtkWidget *result; /* Résultat à renvoyer */ + GtkWidget *image; /* Image de représentation */ + + result = GTK_WIDGET(gtk_toggle_tool_button_new()); + + image = get_image_from_file(filename); + gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(result), image); + + if (G_IS_OBJECT(object) && name != NULL) + { + gtk_widget_ref(result); + g_object_set_data_full(object, name, result, (GtkDestroyNotify)g_object_unref); + } + + gtk_widget_show(result); + + if (handler != NULL) + g_signal_connect(result, "toggled", handler, data); + + return result; + +} + + +/****************************************************************************** +* * +* Paramètres : object = espace dédié à l'inscription de références. * +* name = nom à donner au nouveau composant. * +* * +* Description : Crée et enregistre un composant 'GtkSeparatorToolItem'. * +* * +* Retour : Simple élément de barre d'outils mis en place. * +* * +* Remarques : - * +* * +******************************************************************************/ + +GtkWidget *qck_create_tool_separator(GObject *object, const char *name) +{ + GtkWidget *result; /* Résultat à renvoyer */ + + result = GTK_WIDGET(gtk_separator_tool_item_new()); + + if (G_IS_OBJECT(object) && name != NULL) + { + gtk_widget_ref(result); + g_object_set_data_full(object, name, result, (GtkDestroyNotify)g_object_unref); + } + + gtk_widget_show(result); + + return result; + +} diff --git a/src/gtkext/easygtk.h b/src/gtkext/easygtk.h index d7ed830..1dae530 100644 --- a/src/gtkext/easygtk.h +++ b/src/gtkext/easygtk.h @@ -83,4 +83,15 @@ GtkWidget *qck_create_menu_separator(void); +/* Crée et enregistre un composant 'GtkToolButton'. */ +GtkWidget *qck_create_tool_button(GObject *, const char *, const char *, GCallback, gpointer); + +/* Crée et enregistre un composant 'GtkToggleToolButton'. */ +GtkWidget *qck_create_toggle_tool_button(GObject *, const char *, const char *, GCallback, gpointer); + +/* Crée et enregistre un composant 'GtkSeparatorToolItem'. */ +GtkWidget *qck_create_tool_separator(GObject *, const char *); + + + #endif /* _EASYGTK_H */ diff --git a/src/gtkext/support.c b/src/gtkext/support.c index 67e7605..4eab7fe 100644 --- a/src/gtkext/support.c +++ b/src/gtkext/support.c @@ -90,3 +90,68 @@ gchar *find_pixmap_file(const char *filename) return result; } + + +/****************************************************************************** +* * +* Paramètres : filename = nom de fichier seul comme indice. * +* * +* Description : Construit une image à partir d'un nom de fichier. * +* * +* Retour : Elément mis en place ou NULL en cas d'erreur. * +* * +* Remarques : - * +* * +******************************************************************************/ + +GtkWidget *get_image_from_file(const char *filename) +{ + GtkWidget *result; /* Instance à retourner */ + gchar *fullname; /* Chemin d'accès complet */ + + fullname = find_pixmap_file(filename); + + if (fullname != NULL) + { + result = gtk_image_new_from_file(fullname); + g_free(fullname); + + gtk_widget_show(result); + + } + else result = NULL; + + return result; + +} + + +/****************************************************************************** +* * +* Paramètres : filename = nom de fichier seul comme indice. * +* * +* Description : Construit un tampon d'image à partir d'un nom de fichier. * +* * +* Retour : Elément mis en place ou NULL en cas d'erreur. * +* * +* Remarques : - * +* * +******************************************************************************/ + +GdkPixbuf *get_pixbuf_from_file(const char *filename) +{ + GdkPixbuf *result; /* Instance à retourner */ + gchar *fullname; /* Chemin d'accès complet */ + + fullname = find_pixmap_file(filename); + + if (fullname != NULL) + { + result = gdk_pixbuf_new_from_file(fullname, NULL); + g_free(fullname); + } + else result = NULL; + + return result; + +} diff --git a/src/gtkext/support.h b/src/gtkext/support.h index 8664750..1dcb3e7 100644 --- a/src/gtkext/support.h +++ b/src/gtkext/support.h @@ -36,6 +36,12 @@ void add_pixmap_directory(const char *); /* Trouve le chemin d'accès complet à un fichier donné. */ gchar *find_pixmap_file(const char *); +/* Construit une image à partir d'un nom de fichier. */ +GtkWidget *get_image_from_file(const char *); + +/* Construit un tampon d'image à partir d'un nom de fichier. */ +GdkPixbuf *get_pixbuf_from_file(const char *); + #endif /* _GTKEXT_SUPPORT_H */ |