diff options
Diffstat (limited to 'src/gtkext')
-rw-r--r-- | src/gtkext/gtkdockable-int.h | 16 | ||||
-rw-r--r-- | src/gtkext/gtkdockable.c | 49 | ||||
-rw-r--r-- | src/gtkext/gtkdockable.h | 10 | ||||
-rw-r--r-- | src/gtkext/gtkdockstation.c | 15 | ||||
-rw-r--r-- | src/gtkext/tiledgrid.c | 6 |
5 files changed, 65 insertions, 31 deletions
diff --git a/src/gtkext/gtkdockable-int.h b/src/gtkext/gtkdockable-int.h index 7390913..656e16c 100644 --- a/src/gtkext/gtkdockable-int.h +++ b/src/gtkext/gtkdockable-int.h @@ -32,20 +32,20 @@ -/* Indique si le composant représenté à du contenu à fouiller. */ -typedef bool (* can_dockable_search_fc) (const GtkDockable *); - /* Fournit le nom court du composant encapsulable. */ -typedef const char * (* get_dockable_name_fc) (const GtkDockable *); +typedef char * (* get_dockable_name_fc) (const GtkDockable *); /* Fournit le nom court du composant encapsulable. */ -typedef const char * (* get_dockable_desc_fc) (const GtkDockable *); +typedef char * (* get_dockable_desc_fc) (const GtkDockable *); + +/* Indique si le composant représenté à du contenu à fouiller. */ +typedef bool (* can_dockable_search_fc) (const GtkDockable *); /* Fournit le composant principal à encapsuler au besoin. */ typedef GtkWidget * (* get_dockable_widget_fc) (const GtkDockable *); /* Démarre l'actualisation du filtrage des paramètres. */ -typedef void (* update_filtered_data_fc) (GtkDockable *, char *); +typedef void (* update_filtered_data_fc) (GtkDockable *, const char *); /* Elément accepté dans les rassemblements (interface) */ @@ -53,10 +53,10 @@ struct _GtkDockableIface { GTypeInterface base_iface; /* A laisser en premier */ - can_dockable_search_fc can_search; /* Contenu fouillable ? */ - get_dockable_name_fc get_name; /* Nom pour titre */ get_dockable_desc_fc get_desc; /* Description humaine */ + can_dockable_search_fc can_search; /* Contenu fouillable ? */ + get_dockable_widget_fc get_widget; /* Composant à représenter */ update_filtered_data_fc update_filtered;/* Mise à jour du filtrage */ diff --git a/src/gtkext/gtkdockable.c b/src/gtkext/gtkdockable.c index c4291b7..26feb95 100644 --- a/src/gtkext/gtkdockable.c +++ b/src/gtkext/gtkdockable.c @@ -44,6 +44,9 @@ /* Procède à l'initialisation de l'interface de rassemblement. */ static void gtk_dockable_default_init(GtkDockableInterface *); +/* Applique un nouveau filtre sur un composant intégré. */ +static void gtk_dockable_update_filter(GtkDockable *, const char *); + /* ------------------------ FONCTIONS DE RECHERCHE INTEGREES ------------------------ */ @@ -151,13 +154,16 @@ static void gtk_dockable_default_init(GtkDockableInterface *iface) * * ******************************************************************************/ -const char *gtk_dockable_get_name(const GtkDockable *dockable) +char *gtk_dockable_get_name(const GtkDockable *dockable) { + char *result; /* Désignation à retourner */ GtkDockableIface *iface; /* Interface utilisée */ iface = GTK_DOCKABLE_GET_IFACE(dockable); - return iface->get_name(dockable); + result = iface->get_name(dockable); + + return result; } @@ -174,13 +180,16 @@ const char *gtk_dockable_get_name(const GtkDockable *dockable) * * ******************************************************************************/ -const char *gtk_dockable_get_desc(const GtkDockable *dockable) +char *gtk_dockable_get_desc(const GtkDockable *dockable) { + char *result; /* Description à retourner */ GtkDockableIface *iface; /* Interface utilisée */ iface = GTK_DOCKABLE_GET_IFACE(dockable); - return iface->get_desc(dockable); + result = iface->get_desc(dockable); + + return result; } @@ -191,7 +200,7 @@ const char *gtk_dockable_get_desc(const GtkDockable *dockable) * * * Description : Indique si le composant représenté à du contenu à fouiller. * * * -* Retour : - * +* Retour : Etat de la capacité. * * * * Remarques : - * * * @@ -234,7 +243,6 @@ GtkWidget *gtk_dockable_build_widget(GtkDockable *dockable) iface = GTK_DOCKABLE_GET_IFACE(dockable); widget = iface->get_widget(dockable); - g_object_ref(G_OBJECT(widget)); /* Encapsulation avec un panneau coulissant ? */ @@ -267,6 +275,30 @@ GtkWidget *gtk_dockable_build_widget(GtkDockable *dockable) /****************************************************************************** * * +* Paramètres : dockable = instance GTK dont l'interface est à manipuler. * +* filter = nouveau filtre à appliquer. * +* * +* Description : Applique un nouveau filtre sur un composant intégré. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +static void gtk_dockable_update_filter(GtkDockable *dockable, const char *filter) +{ + GtkDockableIface *iface; /* Interface utilisée */ + + iface = GTK_DOCKABLE_GET_IFACE(dockable); + + iface->update_filtered(dockable, filter); + +} + + +/****************************************************************************** +* * * Paramètres : dockable = instance GTK dont l'interface est à consulter. * * support = composant à partir duquel décrocher ou NULL. [OUT]* * * @@ -392,15 +424,14 @@ static GtkWidget *build_search_area(GtkDockable *dockable, GtkWidget **search) static void on_dockable_search_changed(GtkSearchEntry *entry, GtkDockable *dockable) { char *filter; /* Nouveau filtre à considérer */ - GtkDockableIface *iface; /* Interface utilisée */ filter = NULL; update_regex_on_search_entry_changed(entry, &filter); - iface = GTK_DOCKABLE_GET_IFACE(dockable); + gtk_dockable_update_filter(dockable, filter); - iface->update_filtered(dockable, filter); + free(filter); } diff --git a/src/gtkext/gtkdockable.h b/src/gtkext/gtkdockable.h index 9f98312..0e08070 100644 --- a/src/gtkext/gtkdockable.h +++ b/src/gtkext/gtkdockable.h @@ -49,14 +49,14 @@ typedef struct _GtkDockableIface GtkDockableIface; /* Détermine le type d'une interface pour rassemblement. */ GType gtk_dockable_get_type(void) G_GNUC_CONST; -/* Indique si le composant représenté à du contenu à fouiller. */ -bool gtk_dockable_can_search(const GtkDockable *); - /* Fournit le nom court du composant encapsulable. */ -const char *gtk_dockable_get_name(const GtkDockable *); +char *gtk_dockable_get_name(const GtkDockable *); /* Fournit le nom long du composant encapsulable. */ -const char *gtk_dockable_get_desc(const GtkDockable *); +char *gtk_dockable_get_desc(const GtkDockable *); + +/* Indique si le composant représenté à du contenu à fouiller. */ +bool gtk_dockable_can_search(const GtkDockable *); /* Fournit le composant graphique intégrable dans un ensemble. */ GtkWidget *gtk_dockable_build_widget(GtkDockable *); diff --git a/src/gtkext/gtkdockstation.c b/src/gtkext/gtkdockstation.c index 314467e..1757542 100644 --- a/src/gtkext/gtkdockstation.c +++ b/src/gtkext/gtkdockstation.c @@ -257,10 +257,9 @@ static gboolean gtk_dock_station_switch_panel(GtkNotebook *notebook, gpointer *p void gtk_dock_station_add_dockable(GtkDockStation *station, GtkDockable *dockable) { GtkWidget *widget; /* Composant GTK à intégrer */ - const char *caption; /* Nom à donner à l'onglet */ - const char *desc; /* Description à y associer */ + char *name; /* Nom à donner à l'onglet */ + char *desc; /* Description à y associer */ int max; /* Taille maximale des titres */ - char *str; /* Titre des prochaines fois */ GtkWidget *label; /* Etiquette d'onglet */ GtkNotebook *notebook; /* Autre version du composant */ @@ -280,7 +279,7 @@ void gtk_dock_station_add_dockable(GtkDockStation *station, GtkDockable *dockabl g_object_set_data(G_OBJECT(widget), "dockable", dockable); - caption = gtk_dockable_get_name(dockable); + name = gtk_dockable_get_name(dockable); desc = gtk_dockable_get_desc(dockable); /* Mise en place de la page */ @@ -288,9 +287,9 @@ void gtk_dock_station_add_dockable(GtkDockStation *station, GtkDockable *dockabl if (!g_generic_config_get_value(get_main_configuration(), MPK_ELLIPSIS_TAB, &max)) max = -1; - str = ellipsis(strdup(caption), max); - label = qck_create_label(NULL, NULL, str); - free(str); + name = ellipsis(name, max); + label = qck_create_label(NULL, NULL, name); + free(name); notebook = GTK_NOTEBOOK(station); @@ -302,6 +301,8 @@ void gtk_dock_station_add_dockable(GtkDockStation *station, GtkDockable *dockabl gtk_widget_set_tooltip_text(label, desc); + free(desc); + if (gtk_notebook_get_n_pages(notebook) > 1) g_signal_connect(notebook, "switch-page", G_CALLBACK(gtk_dock_station_switch_panel), station); diff --git a/src/gtkext/tiledgrid.c b/src/gtkext/tiledgrid.c index e04685c..5287352 100644 --- a/src/gtkext/tiledgrid.c +++ b/src/gtkext/tiledgrid.c @@ -885,14 +885,16 @@ void gtk_tiled_grid_set_default_main_panel(GtkTiledGrid *tgrid, GPanelItem *pane void gtk_tiled_grid_add(GtkTiledGrid *tgrid, GPanelItem *panel) { const char *path; /* Chemin d'accès */ + char *name; /* Nom à donner à l'onglet */ grid_tile_t *tile; /* Tuile d'accueil */ path = gtk_panel_item_get_path(panel); if (!is_valid_tile_path(path)) { - log_variadic_message(LMT_ERROR, _("Invalid path '%s' for panel '%s'"), - path, gtk_dockable_get_name(GTK_DOCKABLE(panel))); + name = gtk_dockable_get_name(GTK_DOCKABLE(panel)); + log_variadic_message(LMT_ERROR, _("Invalid path '%s' for panel '%s'"), path, name); + free(name); } else |