summaryrefslogtreecommitdiff
path: root/src/gui/panel.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/panel.c')
-rw-r--r--src/gui/panel.c448
1 files changed, 306 insertions, 142 deletions
diff --git a/src/gui/panel.c b/src/gui/panel.c
index 18ecbb0..a509f40 100644
--- a/src/gui/panel.c
+++ b/src/gui/panel.c
@@ -31,20 +31,23 @@
#include "panel-int.h"
+#include "core/global.h"
+#include "core/items.h"
#include "../common/extstr.h"
#include "../core/params.h"
#include "../gtkext/gtkdockable-int.h"
#include "../gtkext/named.h"
+#include "../plugins/dt.h"
/* ------------------------- COEUR DES PANNEAUX D'AFFICHAGE ------------------------- */
-/* Initialise la classe des éléments réactifs de l'éditeur. */
+/* Initialise la classe des panneaux graphiques de l'éditeur. */
static void g_panel_item_class_init(GPanelItemClass *);
-/* Initialise une instance d'élément réactif pour l'éditeur. */
+/* Initialise une instance de panneau graphique pour l'éditeur. */
static void g_panel_item_init(GPanelItem *);
/* Procède à l'initialisation de l'interface d'incrustation. */
@@ -56,6 +59,9 @@ static void g_panel_item_dispose(GPanelItem *);
/* Procède à la libération totale de la mémoire. */
static void g_panel_item_finalize(GPanelItem *);
+/* Construit la chaîne d'accès à un élément de configuration. */
+static char *gtk_panel_item_class_build_configuration_key(const GPanelItemClass *, const char *);
+
/* Fournit le nom court du composant encapsulable. */
static char *gtk_panel_item_get_name(const GPanelItem *);
@@ -71,9 +77,6 @@ static GtkWidget *gtk_panel_item_get_widget(GPanelItem *);
/* Démarre l'actualisation du filtrage du contenu. */
static void gtk_panel_item_update_filtered(GPanelItem *, const char *);
-/* Construit la chaîne d'accès à un élément de configuration. */
-static char *gtk_panel_item_build_configuration_key(const GPanelItem *, const char *);
-
/* ---------------------- MECANISMES DE MISE A JOUR DE PANNEAU ---------------------- */
@@ -96,9 +99,9 @@ G_DEFINE_TYPE_WITH_CODE(GPanelItem, g_panel_item, G_TYPE_EDITOR_ITEM,
/******************************************************************************
* *
-* Paramètres : klass = classe à initialiser. *
+* Paramètres : class = classe à initialiser. *
* *
-* Description : Initialise la classe des éléments réactifs de l'éditeur. *
+* Description : Initialise la classe des panneaux graphiques de l'éditeur. *
* *
* Retour : - *
* *
@@ -106,21 +109,24 @@ G_DEFINE_TYPE_WITH_CODE(GPanelItem, g_panel_item, G_TYPE_EDITOR_ITEM,
* *
******************************************************************************/
-static void g_panel_item_class_init(GPanelItemClass *klass)
+static void g_panel_item_class_init(GPanelItemClass *class)
{
GObjectClass *object; /* Autre version de la classe */
GEditorItemClass *item; /* Encore une autre vision... */
- object = G_OBJECT_CLASS(klass);
+ object = G_OBJECT_CLASS(class);
object->dispose = (GObjectFinalizeFunc/* ! */)g_panel_item_dispose;
object->finalize = (GObjectFinalizeFunc)g_panel_item_finalize;
- item = G_EDITOR_ITEM_CLASS(klass);
+ item = G_EDITOR_ITEM_CLASS(class);
- item->get_key = (get_item_key_fc)gtk_panel_item_get_name;
item->get_widget = (get_item_widget_fc)gtk_panel_item_get_widget;
+ class->get_personality = gtk_panel_item_class_get_personality_singleton;
+ class->dock_at_startup = gtk_panel_item_class_return_true;
+ class->can_search = gtk_panel_item_class_return_false;
+
g_signal_new("dock-request",
G_TYPE_PANEL_ITEM,
G_SIGNAL_RUN_LAST,
@@ -137,8 +143,6 @@ static void g_panel_item_class_init(GPanelItemClass *klass)
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
- klass->can_search = false;
-
}
@@ -146,7 +150,7 @@ static void g_panel_item_class_init(GPanelItemClass *klass)
* *
* Paramètres : item = instance à initialiser. *
* *
-* Description : Initialise une instance d'élément réactif pour l'éditeur. *
+* Description : Initialise une instance de panneau graphique pour l'éditeur. *
* *
* Retour : - *
* *
@@ -156,9 +160,7 @@ static void g_panel_item_class_init(GPanelItemClass *klass)
static void g_panel_item_init(GPanelItem *item)
{
- DL_LIST_ITEM_INIT(&item->link);
-
- item->personality = PIP_INVALID;
+ item->docked = false;
item->widget = NULL;
item->cached_widget = NULL;
@@ -230,8 +232,6 @@ static void g_panel_item_dispose(GPanelItem *item)
static void g_panel_item_finalize(GPanelItem *item)
{
- free(item->path);
-
if (item->filter != NULL)
free(item->filter);
@@ -245,33 +245,44 @@ static void g_panel_item_finalize(GPanelItem *item)
/******************************************************************************
* *
-* Paramètres : personality = nature du panneau à mettre en place. *
-* widget = composant avec noms à présenter à l'affichage. *
-* startup = chargement au démarrage ? *
-* path = chemin vers la place idéale pour le futur panneau. *
+* Paramètres : class = classe à consulter. *
* *
-* Description : Crée un élément de panneau réactif. *
+* Description : Fournit une indication sur la personnalité du panneau. *
* *
-* Retour : Adresse de la structure mise en place. *
+* Retour : Identifiant lié à la nature du panneau. *
* *
* Remarques : - *
* *
******************************************************************************/
-GPanelItem *g_panel_item_new(PanelItemPersonality personality, GNamedWidget *widget, bool startup, const char *path)
+PanelItemPersonality gtk_panel_item_class_get_personality(const GPanelItemClass *class)
{
- GPanelItem *result; /* Structure à retourner */
+ PanelItemPersonality result; /* Personnalité à retourner */
+
+ result = class->get_personality(class);
+
+ return result;
- result = g_object_new(G_TYPE_PANEL_ITEM, NULL);
+}
- assert(personality > PIP_INVALID && personality < PIP_COUNT);
- result->personality = personality;
- result->widget = widget;
- g_object_ref(G_OBJECT(widget));
+/******************************************************************************
+* *
+* Paramètres : class = classe à consulter. *
+* *
+* Description : Fournit une indication sur la personnalité du panneau. *
+* *
+* Retour : Identifiant lié à la nature unique du panneau. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
- result->dock_at_startup = startup;
- result->path = strdup(path);
+PanelItemPersonality gtk_panel_item_class_get_personality_singleton(const GPanelItemClass *class)
+{
+ PanelItemPersonality result; /* Personnalité à retourner */
+
+ result = PIP_SINGLETON;
return result;
@@ -280,23 +291,37 @@ GPanelItem *g_panel_item_new(PanelItemPersonality personality, GNamedWidget *wid
/******************************************************************************
* *
-* Paramètres : item = instance de panneau à consulter. *
+* Paramètres : class = classe à consulter. *
* *
-* Description : Indique le composant graphique principal du panneau. *
+* Description : Fournit une indication d'accroche du panneau au démarrage. *
* *
-* Retour : Composant graphique avec nom constituant le panneau. *
+* Retour : true si le panneau doit être affiché de prime abord. *
* *
* Remarques : - *
* *
******************************************************************************/
-GNamedWidget *gtk_panel_item_get_named_widget(const GPanelItem *item)
+bool gtk_panel_item_class_dock_at_startup(const GPanelItemClass *class)
{
- GNamedWidget *result; /* Composant nommé à retourner */
+ bool result; /* Statut à retourner */
+ GGenConfig *config; /* Configuration courante */
+ char *key; /* Clef d'accès à un paramètre */
+#ifndef NDEBUG
+ bool status; /* Bilan de consultation */
+#endif
- result = item->widget;
+ config = get_main_configuration();
- g_object_ref(G_OBJECT(result));
+ key = gtk_panel_item_class_build_configuration_key(class, "dock_at_startup");
+
+#ifndef NDEBUG
+ status = g_generic_config_get_value(config, key, &result);
+ assert(status);
+#else
+ g_generic_config_get_value(config, key, &result);
+#endif
+
+ free(key);
return result;
@@ -305,21 +330,21 @@ GNamedWidget *gtk_panel_item_get_named_widget(const GPanelItem *item)
/******************************************************************************
* *
-* Paramètres : item = instance GTK dont l'interface est à consulter. *
+* Paramètres : class = classe associée à la consultation. *
* *
-* Description : Fournit le nom court du composant encapsulable. *
+* Description : Renvoie false lors d'une consultation de la classe. *
* *
-* Retour : Désignation humaine pour titre d'onglet ou de fenêtre. *
+* Retour : false. *
* *
* Remarques : - *
* *
******************************************************************************/
-static char *gtk_panel_item_get_name(const GPanelItem *item)
+bool gtk_panel_item_class_return_false(const GPanelItemClass *class)
{
- char *result; /* Désignation à retourner */
+ bool result; /* Statut à retourner */
- result = g_named_widget_get_name(G_NAMED_WIDGET(item->widget), false);
+ result = false;
return result;
@@ -328,21 +353,21 @@ static char *gtk_panel_item_get_name(const GPanelItem *item)
/******************************************************************************
* *
-* Paramètres : item = instance GTK dont l'interface est à consulter. *
+* Paramètres : class = classe associée à la consultation. *
* *
-* Description : Fournit le nom long du composant encapsulable. *
+* Description : Renvoie true lors d'une consultation de la classe. *
* *
-* Retour : Désignation humaine pour titre d'onglet ou de fenêtre. *
+* Retour : true. *
* *
* Remarques : - *
* *
******************************************************************************/
-static char *gtk_panel_item_get_desc(const GPanelItem *item)
+bool gtk_panel_item_class_return_true(const GPanelItemClass *class)
{
- char *result; /* Description à retourner */
+ bool result; /* Statut à retourner */
- result = g_named_widget_get_name(G_NAMED_WIDGET(item->widget), true);
+ result = true;
return result;
@@ -351,7 +376,7 @@ static char *gtk_panel_item_get_desc(const GPanelItem *item)
/******************************************************************************
* *
-* Paramètres : item = instance GTK dont l'interface est à consulter. *
+* Paramètres : class = classe à consulter. *
* *
* Description : Détermine si un panneau peut être filtré. *
* *
@@ -361,14 +386,11 @@ static char *gtk_panel_item_get_desc(const GPanelItem *item)
* *
******************************************************************************/
-static bool gtk_panel_item_can_search(const GPanelItem *item)
+bool gtk_panel_item_class_can_search(const GPanelItemClass *class)
{
- bool result; /* Indication à retourner */
- GPanelItemClass *class; /* Classe de l'élément visé */
+ bool result; /* Statut à retourner */
- class = G_PANEL_ITEM_GET_CLASS(item);
-
- result = class->can_search;
+ result = class->can_search(class);
return result;
@@ -377,26 +399,40 @@ static bool gtk_panel_item_can_search(const GPanelItem *item)
/******************************************************************************
* *
-* Paramètres : item = instance GTK dont l'interface est à consulter. *
+* Paramètres : class = classe à consulter. *
* *
-* Description : Fournit le composant graphique intégrable dans un ensemble. *
+* Description : Indique le chemin initial de la localisation d'un panneau. *
* *
-* Retour : Composant graphique prêt à emploi. *
+* Retour : Chemin fixé associé à la position initiale. *
* *
* Remarques : - *
* *
******************************************************************************/
-static GtkWidget *gtk_panel_item_get_widget(GPanelItem *item)
+char *gtk_panel_item_class_get_path(const GPanelItemClass *class)
{
- GtkWidget *result; /* Composant à retourner */
+ char *result; /* Emplacement à retourner */
+ GGenConfig *config; /* Configuration courante */
+ char *key; /* Clef d'accès à un paramètre */
+ const char *path; /* Nouveau chemin de placement */
+#ifndef NDEBUG
+ bool status; /* Statut de l'encapsulation */
+#endif
- if (item->cached_widget == NULL)
- item->cached_widget = g_named_widget_get_widget(G_NAMED_WIDGET(item->widget));
+ config = get_main_configuration();
- result = item->cached_widget;
+ key = gtk_panel_item_class_build_configuration_key(class, "path");
- g_object_ref(G_OBJECT(result));
+#ifndef NDEBUG
+ status = g_generic_config_get_value(config, key, &path);
+ assert(status);
+#else
+ g_generic_config_get_value(config, key, &path);
+#endif
+
+ free(key);
+
+ result = strdup(path);
return result;
@@ -405,33 +441,34 @@ static GtkWidget *gtk_panel_item_get_widget(GPanelItem *item)
/******************************************************************************
* *
-* Paramètres : item = instance GTK dont l'interface est à sollicitée. *
+* Paramètres : class = classe à consulter. *
* *
-* Description : Démarre l'actualisation du filtrage du contenu. *
+* Description : Indique la définition d'un éventuel raccourci clavier. *
* *
-* Retour : - *
+* Retour : Description d'un raccourci ou NULL si aucun de défini. *
* *
* Remarques : - *
* *
******************************************************************************/
-static void gtk_panel_item_update_filtered(GPanelItem *item, const char *filter)
+char *gtk_panel_item_class_get_key_bindings(const GPanelItemClass *class)
{
- assert(gtk_panel_item_can_search(item));
+ char *result; /* Emplacement à retourner */
- if (item->filter != NULL)
- free(item->filter);
+ if (class->get_bindings != NULL)
+ result = class->get_bindings(class);
- item->filter = (filter ? strdup(filter) : NULL);
+ else
+ result = NULL;
- G_PANEL_ITEM_GET_CLASS(item)->update_filtered(item);
+ return result;
}
/******************************************************************************
* *
-* Paramètres : item = instance GTK à consulter. *
+* Paramètres : class = classe du type de panneau à traiter. *
* attrib = élément de configuration à inclure dans le résultat.*
* *
* Description : Construit la chaîne d'accès à un élément de configuration. *
@@ -442,12 +479,12 @@ static void gtk_panel_item_update_filtered(GPanelItem *item, const char *filter)
* *
******************************************************************************/
-static char *gtk_panel_item_build_configuration_key(const GPanelItem *item, const char *attrib)
+static char *gtk_panel_item_class_build_configuration_key(const GPanelItemClass *class, const char *attrib)
{
char *result; /* Construction à renvoyer */
const char *name; /* Nom court du panneau */
- name = g_editor_item_get_key(G_EDITOR_ITEM(item));
+ name = g_editor_item_class_get_key(G_EDITOR_ITEM_CLASS(class));
asprintf(&result, "gui.panels.%s.%s", attrib, name);
@@ -462,10 +499,10 @@ static char *gtk_panel_item_build_configuration_key(const GPanelItem *item, cons
/******************************************************************************
* *
-* Paramètres : item = instance GTK à consulter. *
+* Paramètres : class = classe de panneau à consulter. *
* config = configuration à compléter. *
* *
-* Description : Met en place les bases de la configuration du panneau. *
+* Description : Met en place les bases de la configuration d'un panneau. *
* *
* Retour : Bilan de l'opération. *
* *
@@ -473,33 +510,42 @@ static char *gtk_panel_item_build_configuration_key(const GPanelItem *item, cons
* *
******************************************************************************/
-bool gtk_panel_item_setup_configuration(const GPanelItem *item, GGenConfig *config)
+bool gtk_panel_item_class_setup_configuration(const GPanelItemClass *class, GGenConfig *config)
{
bool result; /* Bilan à retourner */
char *key; /* Clef d'accès à un paramètre */
+ bool dock_at_startup; /* Affichage dès le départ ? */
GCfgParam *param; /* Paramètre chargé */
+ char *path; /* Localisation du panneau */
result = true;
- key = gtk_panel_item_build_configuration_key(item, "dock_at_startup");
+ key = gtk_panel_item_class_build_configuration_key(class, "dock_at_startup");
+
+ dock_at_startup = class->dock_at_startup(class);
- param = g_generic_config_create_param(config, key, CPT_BOOLEAN, item->dock_at_startup);
+ param = g_generic_config_create_param_if_not_exist(config, key, CPT_BOOLEAN, dock_at_startup);
+
+ free(key);
if (param == NULL)
{
result = false;
- goto gpisc_exit;
+ goto exit;
}
- free(key);
+ key = gtk_panel_item_class_build_configuration_key(class, "path");
+
+ path = class->get_path(class);
- key = gtk_panel_item_build_configuration_key(item, "path");
+ param = g_generic_config_create_param_if_not_exist(config, key, CPT_STRING, path);
- param = g_generic_config_create_param(config, key, CPT_STRING, item->path);
if (param == NULL)
result = false;
- gpisc_exit:
+ free(path);
+
+ exit:
free(key);
@@ -510,116 +556,160 @@ bool gtk_panel_item_setup_configuration(const GPanelItem *item, GGenConfig *conf
/******************************************************************************
* *
-* Paramètres : item = instance GTK à consulter. *
-* config = configuration à charger. *
+* Paramètres : type = type de panneau à mettre en place. *
+* path = emplacement d'affichage ou NULL. *
* *
-* Description : Charge un panneau sur les bases de la configuration fournie. *
+* Description : Crée un élément de panneau réactif. *
* *
-* Retour : true, par conformité avec browse_all_item_panels(). *
+* Retour : Adresse de la structure mise en place. *
* *
* Remarques : - *
* *
******************************************************************************/
-bool gtk_panel_item_apply_configuration(GPanelItem *item, GGenConfig *config)
+GPanelItem *g_panel_item_new(GType type, const char *path)
{
- char *key; /* Clef d'accès à un paramètre */
- const char *new_path; /* Nouveau chemin de placement */
- bool status; /* Statut de l'encapsulation */
+ GPanelItem *result; /* Structure à retourner */
+ GPanelItemClass *class; /* Classe associée au type */
+ PanelItemPersonality personality; /* Caractéristique de panneau */
+ GtkTiledGrid *grid; /* Composant d'affichage */
+
+ class = g_type_class_ref(type);
- key = gtk_panel_item_build_configuration_key(item, "path");
+ personality = gtk_panel_item_class_get_personality(class);
+ assert(path != NULL || personality == PIP_PERSISTENT_SINGLETON);
- if (g_generic_config_get_value(config, key, &new_path))
+ g_type_class_unref(class);
+
+ if (personality == PIP_PERSISTENT_SINGLETON || personality == PIP_SINGLETON)
{
- free(item->path);
+ result = G_PANEL_ITEM(find_editor_item_by_type(type));
- item->path = strdup(new_path);
+ if (result != NULL)
+ goto singleton;
}
- free(key);
+ result = create_object_from_type(type);
- key = gtk_panel_item_build_configuration_key(item, "dock_at_startup");
+ grid = get_tiled_grid();
- if (g_generic_config_get_value(config, key, &status))
+ g_signal_connect_swapped(result, "dock-request", G_CALLBACK(gtk_tiled_grid_add), grid);
+ g_signal_connect_swapped(result, "undock-request", G_CALLBACK(gtk_tiled_grid_remove), grid);
+
+ gtk_dockable_setup_dnd(GTK_DOCKABLE(result));
+
+ register_editor_item(G_EDITOR_ITEM(result));
+
+ singleton:
+
+ if (path != NULL)
{
- item->dock_at_startup = status;
+ if (path[0] != '\0')
+ gtk_panel_item_set_path(result, path);
- if (item->dock_at_startup)
- g_signal_emit_by_name(item, "dock-request");
+ g_panel_item_dock(result);
}
- free(key);
-
- return true;
+ return result;
}
/******************************************************************************
* *
-* Paramètres : item = instance GTK à consulter. *
+* Paramètres : item = instance de panneau à consulter. *
* *
-* Description : Fournit une indication sur la personnalité du panneau. *
+* Description : Indique le composant graphique principal du panneau. *
* *
-* Retour : Identifiant lié à la nature du panneau. *
+* Retour : Composant graphique avec nom constituant le panneau. *
* *
* Remarques : - *
* *
******************************************************************************/
-PanelItemPersonality gtk_panel_item_get_personality(const GPanelItem *item)
+GNamedWidget *gtk_panel_item_get_named_widget(const GPanelItem *item)
{
- return item->personality;
+ GNamedWidget *result; /* Composant nommé à retourner */
+
+ result = item->widget;
+
+ g_object_ref(G_OBJECT(result));
+
+ return result;
}
/******************************************************************************
* *
-* Paramètres : item = instance GTK à consulter. *
+* Paramètres : item = instance GTK dont l'interface est à consulter. *
* *
-* Description : Fournit le chemin d'accès à utiliser pour les encapsulations.*
+* Description : Fournit le nom court du composant encapsulable. *
* *
-* Retour : Chemin d'accès défini. *
+* Retour : Désignation humaine pour titre d'onglet ou de fenêtre. *
* *
* Remarques : - *
* *
******************************************************************************/
-const char *gtk_panel_item_get_path(const GPanelItem *item)
+static char *gtk_panel_item_get_name(const GPanelItem *item)
{
- return item->path;
+ char *result; /* Désignation à retourner */
+
+ result = g_named_widget_get_name(G_NAMED_WIDGET(item->widget), false);
+
+ return result;
}
+
/******************************************************************************
* *
-* Paramètres : item = instance GTK à consulter. *
-* path = nouvelle emplacement d'inclusion. *
+* Paramètres : item = instance GTK dont l'interface est à consulter. *
* *
-* Description : Définit le chemin d'accès à utiliser pour les encapsulations.*
+* Description : Fournit le nom long du composant encapsulable. *
* *
-* Retour : - *
+* Retour : Désignation humaine pour titre d'onglet ou de fenêtre. *
* *
* Remarques : - *
* *
******************************************************************************/
-void gtk_panel_item_set_path(GPanelItem *item, const char *path)
+static char *gtk_panel_item_get_desc(const GPanelItem *item)
{
- char *key; /* Clef d'accès à un paramètre */
+ char *result; /* Description à retourner */
- free(item->path);
+ result = g_named_widget_get_name(G_NAMED_WIDGET(item->widget), true);
- item->path = strdup(path);
+ return result;
- key = gtk_panel_item_build_configuration_key(item, "path");
+}
- g_generic_config_set_value(get_main_configuration(), key, item->path);
- free(key);
+/******************************************************************************
+* *
+* Paramètres : item = instance GTK dont l'interface est à consulter. *
+* *
+* Description : Détermine si un panneau peut être filtré. *
+* *
+* Retour : Bilan de la consultation. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static bool gtk_panel_item_can_search(const GPanelItem *item)
+{
+ bool result; /* Indication à retourner */
+ GPanelItemClass *class; /* Classe de l'élément visé */
+
+ class = G_PANEL_ITEM_GET_CLASS(item);
+
+ result = gtk_panel_item_class_can_search(class);
+
+ return result;
}
@@ -628,17 +718,81 @@ void gtk_panel_item_set_path(GPanelItem *item, const char *path)
* *
* Paramètres : item = instance GTK dont l'interface est à consulter. *
* *
-* Description : Indique la définition d'un éventuel raccourci clavier. *
+* Description : Fournit le composant graphique intégrable dans un ensemble. *
* *
-* Retour : Description d'un raccourci ou NULL si aucun de défini. *
+* Retour : Composant graphique prêt à emploi. *
* *
* Remarques : - *
* *
******************************************************************************/
-const char *gtk_panel_item_get_key_bindings(const GPanelItem *item)
+static GtkWidget *gtk_panel_item_get_widget(GPanelItem *item)
{
- return G_PANEL_ITEM_GET_CLASS(item)->bindings;
+ GtkWidget *result; /* Composant à retourner */
+
+ if (item->cached_widget == NULL)
+ item->cached_widget = g_named_widget_get_widget(G_NAMED_WIDGET(item->widget));
+
+ result = item->cached_widget;
+
+ g_object_ref(G_OBJECT(result));
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : item = instance GTK dont l'interface est à sollicitée. *
+* *
+* Description : Démarre l'actualisation du filtrage du contenu. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static void gtk_panel_item_update_filtered(GPanelItem *item, const char *filter)
+{
+ assert(gtk_panel_item_can_search(item));
+
+ if (item->filter != NULL)
+ free(item->filter);
+
+ item->filter = (filter ? strdup(filter) : NULL);
+
+ G_PANEL_ITEM_GET_CLASS(item)->update_filtered(item);
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : item = instance GTK à consulter. *
+* path = nouvelle emplacement d'inclusion. *
+* *
+* Description : Définit le chemin d'accès à utiliser pour les encapsulations.*
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+void gtk_panel_item_set_path(GPanelItem *item, const char *path)
+{
+ GGenConfig *config; /* Configuration courante */
+ char *key; /* Clef d'accès à un paramètre */
+
+ config = get_main_configuration();
+
+ key = gtk_panel_item_class_build_configuration_key(G_PANEL_ITEM_GET_CLASS(item), "path");
+
+ g_generic_config_set_value(config, key, path);
+
+ free(key);
}
@@ -680,16 +834,15 @@ void g_panel_item_dock(GPanelItem *item)
* *
******************************************************************************/
-void g_panel_item_set_dock_status(GPanelItem *item, bool status)
+void g_panel_item_set_dock_at_startup(GPanelItem *item, bool status)
{
char *key; /* Clef d'accès à un paramètre */
item->docked = status;
- item->dock_at_startup = status;
- key = gtk_panel_item_build_configuration_key(item, "dock_at_startup");
+ key = gtk_panel_item_class_build_configuration_key(G_PANEL_ITEM_GET_CLASS(item), "dock_at_startup");
- g_generic_config_set_value(get_main_configuration(), key, item->dock_at_startup);
+ g_generic_config_set_value(get_main_configuration(), key, status);
free(key);
@@ -710,7 +863,11 @@ void g_panel_item_set_dock_status(GPanelItem *item, bool status)
bool g_panel_item_is_docked(const GPanelItem *item)
{
- return item->docked;
+ bool result; /* Status à retourner */
+
+ result = item->docked;
+
+ return result;
}
@@ -729,6 +886,8 @@ bool g_panel_item_is_docked(const GPanelItem *item)
void g_panel_item_undock(GPanelItem *item)
{
+ PanelItemPersonality personality; /* Caractéristique de panneau */
+
assert(item->docked);
g_signal_emit_by_name(item, "undock-request");
@@ -736,6 +895,11 @@ void g_panel_item_undock(GPanelItem *item)
if (G_PANEL_ITEM_GET_CLASS(item)->ack_undock != NULL)
G_PANEL_ITEM_GET_CLASS(item)->ack_undock(item);
+ personality = gtk_panel_item_class_get_personality(G_PANEL_ITEM_GET_CLASS(item));
+
+ if (personality != PIP_PERSISTENT_SINGLETON)
+ unregister_editor_item(G_EDITOR_ITEM(item));
+
}