summaryrefslogtreecommitdiff
path: root/src/gui/panels/welcome.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/panels/welcome.c')
-rw-r--r--src/gui/panels/welcome.c376
1 files changed, 33 insertions, 343 deletions
diff --git a/src/gui/panels/welcome.c b/src/gui/panels/welcome.c
index 3cd349f..6fd1304 100644
--- a/src/gui/panels/welcome.c
+++ b/src/gui/panels/welcome.c
@@ -48,16 +48,10 @@ static void gtk_welcome_panel_class_init(GtkWelcomePanelClass *);
static void gtk_welcome_panel_init(GtkWelcomePanel *);
/* Supprime toutes les références externes. */
-static void gtk_welcome_panel_dispose(GtkWelcomePanel *);
+static void gtk_welcome_panel_dispose(GObject *);
/* Procède à la libération totale de la mémoire. */
-static void gtk_welcome_panel_finalize(GtkWelcomePanel *);
-
-/* Intègre une définition de panneau enregistrée. */
-static bool gtk_welcome_panel_add_launcher(GPanelItem *, GListStore *);
-
-/* Prépare un composant pour représenter une définition. */
-static GtkWidget *gtk_welcome_panel_create_launcher_widget(GPanelItem *, gpointer);
+static void gtk_welcome_panel_finalize(GObject *);
/* Réagit à un changement de sélection de la liste de panneaux. */
static void gtk_welcome_panel_on_selected_rows_changed(GtkListBox *, GtkWelcomePanel *);
@@ -78,32 +72,6 @@ static void gtk_welcome_panel_on_next_hint_clicked(GtkButton *, GtkWelcomePanel
-/* ---------------------- MANIPULATIONS D'UN PANNEAU GRAPHIQUE ---------------------- */
-
-
-/* Initialise la classe des panneaux graphiques pour binaires. */
-static void g_welcome_panel_class_init(GWelcomePanelClass *);
-
-/* Initialise une instance de panneau graphique pour binaire. */
-static void g_welcome_panel_init(GWelcomePanel *);
-
-/* Supprime toutes les références externes. */
-static void g_welcome_panel_dispose(GWelcomePanel *);
-
-/* Procède à la libération totale de la mémoire. */
-static void g_welcome_panel_finalize(GWelcomePanel *);
-
-
-
-/* --------------------- IMPLEMENTATION DES FONCTIONS DE CLASSE --------------------- */
-
-
-/* Fournit une indication sur la personnalité du panneau. */
-static PanelItemPersonality g_welcome_panel_get_personality(const GWelcomePanel *);
-
-/* Fournit un composant représentant un panneau graphique. */
-static GtkTiledPanel *g_welcome_panel_get_panel(GWelcomePanel *, GtkWidget *);
-
/* ---------------------------------------------------------------------------------- */
@@ -134,8 +102,8 @@ static void gtk_welcome_panel_class_init(GtkWelcomePanelClass *class)
object = G_OBJECT_CLASS(class);
- object->dispose = (GObjectFinalizeFunc/* ! */)gtk_welcome_panel_dispose;
- object->finalize = (GObjectFinalizeFunc)gtk_welcome_panel_finalize;
+ object->dispose = gtk_welcome_panel_dispose;
+ object->finalize = gtk_welcome_panel_finalize;
widget = GTK_WIDGET_CLASS(class);
@@ -169,13 +137,16 @@ static void gtk_welcome_panel_init(GtkWelcomePanel *panel)
{
GBytes *bytes; /* Données brutes de ressource */
const gchar *data; /* Données brutes natives */
+ int min; /* Taille à gauche minimale */
+ GtkConstraintLayout *layout; /* Disposition fixant la taille*/
+ GtkConstraint *constraint; /* Contrainte à considérer */
gtk_widget_init_template(GTK_WIDGET(panel));
- panel->store = g_list_store_new(G_TYPE_PANEL_ITEM);
-
panel->other_child = NULL;
+ /* Chargement des astuces */
+
bytes = g_resources_lookup_data("/re/chrysalide/framework/gui/panels/welcome-hints.txt",
G_RESOURCE_LOOKUP_FLAGS_NONE, NULL);
assert(bytes != NULL);
@@ -191,105 +162,9 @@ static void gtk_welcome_panel_init(GtkWelcomePanel *panel)
panel->cur_hint = 0;
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : panel = instance d'objet GLib à traiter. *
-* *
-* Description : Supprime toutes les références externes. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void gtk_welcome_panel_dispose(GtkWelcomePanel *panel)
-{
- gtk_widget_dispose_template(GTK_WIDGET(panel), GTK_TYPE_WELCOME_PANEL);
-
- g_clear_object(&panel->other_child);
-
- G_OBJECT_CLASS(gtk_welcome_panel_parent_class)->dispose(G_OBJECT(panel));
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : panel = instance d'objet GLib à traiter. *
-* *
-* Description : Procède à la libération totale de la mémoire. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void gtk_welcome_panel_finalize(GtkWelcomePanel *panel)
-{
- G_OBJECT_CLASS(gtk_welcome_panel_parent_class)->finalize(G_OBJECT(panel));
-
- g_strfreev(panel->raw_hints);
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : - *
-* *
-* Description : Crée une nouvelle instance de panneau d'accueil. *
-* *
-* Retour : Composant GTK mis en place. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-GtkTiledPanel *gtk_welcome_panel_new(void)
-{
- GtkTiledPanel *result; /* Instance à retourner */
-
- result = g_object_new(GTK_TYPE_WELCOME_PANEL, NULL);
-
- if (!gtk_welcome_panel_create(GTK_WELCOME_PANEL(result)))
- g_clear_object(&result);
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : panel = panneau d'accueil à initialiser. *
-* *
-* Description : Met en place un nouveau panneau d'accueil. *
-* *
-* Retour : Bilan de l'opération. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-bool gtk_welcome_panel_create(GtkWelcomePanel *panel)
-{
- bool result; /* Bilan à retourner */
- int min; /* Taille à gauche minimale */
- GtkConstraintLayout *layout; /* Disposition fixant la taille*/
- GtkConstraint *constraint; /* Contrainte à considérer */
-
/* Constitution de la liste des démarreurs */
- result = browse_all_item_panels(true, (handle_panel_item_fc)gtk_welcome_panel_add_launcher, panel->store);
-
- gtk_list_box_bind_model(panel->list, G_LIST_MODEL(panel->store),
- (GtkListBoxCreateWidgetFunc)gtk_welcome_panel_create_launcher_widget,
- NULL, NULL);
+ populate_framework_panel_launcher_list(panel->list);
/* Dimensionnement de la zone d'astuces */
@@ -327,57 +202,57 @@ bool gtk_welcome_panel_create(GtkWelcomePanel *panel)
gtk_label_set_markup(panel->hints, panel->raw_hints[panel->cur_hint]);
- return result;
-
}
/******************************************************************************
* *
-* Paramètres : item = définition de panneau à intégrer. *
-* store = liste à compléter. *
+* Paramètres : object = instance d'objet GLib à traiter. *
* *
-* Description : Intègre une définition de panneau enregistrée. *
+* Description : Supprime toutes les références externes. *
* *
-* Retour : true pour un parcours complet de la liste des définitions. *
+* Retour : - *
* *
* Remarques : - *
* *
******************************************************************************/
-static bool gtk_welcome_panel_add_launcher(GPanelItem *item, GListStore *store)
+static void gtk_welcome_panel_dispose(GObject *object)
{
- bool result; /* Poursuite du parcours */
+ GtkWelcomePanel *panel; /* Version spécialisée */
- result = true;
+ gtk_widget_dispose_template(GTK_WIDGET(object), GTK_TYPE_WELCOME_PANEL);
- g_list_store_append(store, G_OBJECT(item));
+ panel = GTK_WELCOME_PANEL(object);
- return result;
+ g_clear_object(&panel->other_child);
+
+ G_OBJECT_CLASS(gtk_welcome_panel_parent_class)->dispose(object);
}
/******************************************************************************
* *
-* Paramètres : item = définition de panneau à consulter. *
-* unused = adresse non utilisée ici. *
+* Paramètres : object = instance d'objet GLib à traiter. *
* *
-* Description : Prépare un composant pour représenter une définition. *
+* Description : Procède à la libération totale de la mémoire. *
* *
-* Retour : Composant de représentation de définition de panneau. *
+* Retour : - *
* *
* Remarques : - *
* *
******************************************************************************/
-static GtkWidget *gtk_welcome_panel_create_launcher_widget(GPanelItem *item, gpointer unused)
+static void gtk_welcome_panel_finalize(GObject *object)
{
- GtkWidget *result; /* Composant GTK à retourner */
+ GtkWelcomePanel *panel; /* Version spécialisée */
- result = g_panel_item_get_launcher(item);
+ panel = GTK_WELCOME_PANEL(object);
- return result;
+ g_strfreev(panel->raw_hints);
+
+ G_OBJECT_CLASS(gtk_welcome_panel_parent_class)->finalize(object);
}
@@ -398,8 +273,6 @@ static GtkWidget *gtk_welcome_panel_create_launcher_widget(GPanelItem *item, gpo
static void gtk_welcome_panel_on_selected_rows_changed(GtkListBox *box, GtkWelcomePanel *panel)
{
GtkListBoxRow *row; /* Ligne sélectionnée */
- int selected; /* Indice de sélection */
- GPanelItem *item; /* Elément correspondant */
GtkWidget *new; /* Nouvelles propriétés */
row = gtk_list_box_get_selected_row(box);
@@ -414,7 +287,7 @@ static void gtk_welcome_panel_on_selected_rows_changed(GtkListBox *box, GtkWelco
gtk_stack_set_visible_child(panel->properties, panel->def_child);
gtk_stack_remove(panel->properties, panel->other_child);
- g_clear_object(&panel->other_child);
+ panel->other_child = NULL;
}
@@ -423,24 +296,16 @@ static void gtk_welcome_panel_on_selected_rows_changed(GtkListBox *box, GtkWelco
*/
else
{
- selected = gtk_list_box_row_get_index(row);
- item = g_list_model_get_item(G_LIST_MODEL(panel->store), selected);
-
- new = g_panel_item_get_properties(item);
-
- if (new == panel->other_child)
- unref_object(new);
+ new = get_framework_panel_parameters(row);
+ assert(new != NULL);
- else
+ if (new != panel->other_child)
{
gtk_stack_add_child(panel->properties, new);
gtk_stack_set_visible_child(panel->properties, new);
if (panel->other_child != NULL)
- {
gtk_stack_remove(panel->properties, panel->other_child);
- g_clear_object(&panel->other_child);
- }
panel->other_child = new;
@@ -513,178 +378,3 @@ static void gtk_welcome_panel_on_next_hint_clicked(GtkButton *button, GtkWelcome
-
-/* ---------------------------------------------------------------------------------- */
-/* MANIPULATIONS D'UN PANNEAU GRAPHIQUE */
-/* ---------------------------------------------------------------------------------- */
-
-
-/* Indique le type défini pour une manipulation de panneau de bienvenue. */
-G_DEFINE_TYPE(GWelcomePanel, g_welcome_panel, G_TYPE_PANEL_ITEM);
-
-
-/******************************************************************************
-* *
-* Paramètres : class = classe à initialiser. *
-* *
-* Description : Initialise la classe des panneaux graphiques pour binaires. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void g_welcome_panel_class_init(GWelcomePanelClass *class)
-{
- GObjectClass *object; /* Autre version de la classe */
- GPanelItemClass *panel; /* Encore une autre vision... */
-
- object = G_OBJECT_CLASS(class);
-
- object->dispose = (GObjectFinalizeFunc/* ! */)g_welcome_panel_dispose;
- object->finalize = (GObjectFinalizeFunc)g_welcome_panel_finalize;
-
- panel = G_PANEL_ITEM_CLASS(class);
-
- panel->get_personality = (get_panel_item_personality_cb)g_welcome_panel_get_personality;
- panel->get_panel = (get_panel_item_panel_cb)g_welcome_panel_get_panel;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : panel = instance à initialiser. *
-* *
-* Description : Initialise une instance de panneau graphique pour binaire. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void g_welcome_panel_init(GWelcomePanel *panel)
-{
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : panel = instance d'objet GLib à traiter. *
-* *
-* Description : Supprime toutes les références externes. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void g_welcome_panel_dispose(GWelcomePanel *panel)
-{
- G_OBJECT_CLASS(g_welcome_panel_parent_class)->dispose(G_OBJECT(panel));
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : panel = instance d'objet GLib à traiter. *
-* *
-* Description : Procède à la libération totale de la mémoire. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void g_welcome_panel_finalize(GWelcomePanel *panel)
-{
- G_OBJECT_CLASS(g_welcome_panel_parent_class)->finalize(G_OBJECT(panel));
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : - *
-* *
-* Description : Constitue une définition de manipulation de panneau. *
-* *
-* Retour : Définition de propriétés mise en place. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-GPanelItem *g_welcome_panel_new(void)
-{
- GPanelItem *result; /* Structure à retourner */
-
- result = g_object_new(G_TYPE_WELCOME_PANEL, NULL);
-
- return result;
-
-}
-
-
-
-/* ---------------------------------------------------------------------------------- */
-/* IMPLEMENTATION DES FONCTIONS DE CLASSE */
-/* ---------------------------------------------------------------------------------- */
-
-
-/******************************************************************************
-* *
-* Paramètres : panel = définition de panneau à consulter. *
-* *
-* Description : Fournit une indication sur la personnalité du panneau. *
-* *
-* Retour : Identifiant lié à la nature du panneau. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static PanelItemPersonality g_welcome_panel_get_personality(const GWelcomePanel *panel)
-{
- PanelItemPersonality result; /* Personnalité à retourner */
-
- result = PIP_MAIN_PANEL | PIP_SINGLETON;
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : panel = définition de panneau à manipuler. *
-* props = éventuels éléments graphiques de paramétrages. *
-* *
-* Description : Fournit un composant représentant un panneau graphique. *
-* *
-* Retour : Composant GTK (déjà ?) mis en place. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static GtkTiledPanel *g_welcome_panel_get_panel(GWelcomePanel *panel, GtkWidget *props)
-{
- GtkTiledPanel *result; /* Composant à retourner */
-
- /**
- * Il n'existe pas de composants de paramètrage pour ce panneau.
- */
- assert(props == NULL);
-
- result = gtk_welcome_panel_new();
-
- return result;
-
-}