diff options
| -rw-r--r-- | src/gui/panels/binary.c | 30 | ||||
| -rw-r--r-- | src/gui/panels/binary.h | 5 | ||||
| -rw-r--r-- | src/gui/window.c | 24 | ||||
| -rw-r--r-- | src/gui/window.h | 4 | 
4 files changed, 47 insertions, 16 deletions
diff --git a/src/gui/panels/binary.c b/src/gui/panels/binary.c index 88b19d2..aba0c7f 100644 --- a/src/gui/panels/binary.c +++ b/src/gui/panels/binary.c @@ -26,6 +26,7 @@  #include "binary-int.h" +#include "../window.h"  #include "../../analysis/contents/file.h"  #include "../../gtkext/helpers.h"  #include "../../gtkext/hexview.h" @@ -35,10 +36,10 @@  /* ------------------------- COEUR D'UN PANNEAU D'AFFICHAGE ------------------------- */ -/* Initialise la classe des panneaux d'accueil par défaut. */ +/* Initialise la classe des panneaux pour binaires. */  static void gtk_binary_panel_class_init(GtkBinaryPanelClass *); -/* Initialise une instance de panneau d'accueil par défaut. */ +/* Initialise une instance de panneau pour binaire. */  static void gtk_binary_panel_init(GtkBinaryPanel *);  /* Supprime toutes les références externes. */ @@ -86,7 +87,7 @@ static GtkWidget *g_binary_panel_get_launcher(GBinaryPanel *);  static GtkWidget *g_binary_panel_get_properties(GBinaryPanel *);  /* Ouvre une boîte de dialogue pour récupérer un fichier. */ -static void g_binary_panel_on_new_file_entry_icon_release(GtkEntry *, GtkEntryIconPosition, gpointer); +static void g_binary_panel_on_new_file_entry_icon_release(GtkEntry *, GtkEntryIconPosition, GBinaryPanel *);  /* Fournit un composant représentant un panneau graphique. */  static GtkTiledPanel *g_binary_panel_get_panel(GBinaryPanel *, GtkWidget *); @@ -106,7 +107,7 @@ G_DEFINE_TYPE(GtkBinaryPanel, gtk_binary_panel, GTK_TYPE_TILED_PANEL);  *                                                                             *  *  Paramètres  : class = classe à initialiser.                                *  *                                                                             * -*  Description : Initialise la classe des panneaux d'accueil par défaut.      * +*  Description : Initialise la classe des panneaux pour binaires.             *  *                                                                             *  *  Retour      : -                                                            *  *                                                                             * @@ -137,7 +138,7 @@ static void gtk_binary_panel_class_init(GtkBinaryPanelClass *class)  *                                                                             *  *  Paramètres  : panel = instance à initialiser.                              *  *                                                                             * -*  Description : Initialise une instance de panneau d'accueil par défaut.     * +*  Description : Initialise une instance de panneau pour binaire.             *  *                                                                             *  *  Retour      : -                                                            *  *                                                                             * @@ -196,7 +197,7 @@ static void gtk_binary_panel_finalize(GtkBinaryPanel *panel)  *                                                                             *  *  Paramètres  : content = contenu brut à exposer.                            *  *                                                                             * -*  Description : Crée une nouvelle instance de panneau d'accueil.             * +*  Description : Crée une nouvelle instance de panneau pour binaire.          *  *                                                                             *  *  Retour      : Composant GTK mis en place.                                  *  *                                                                             * @@ -439,6 +440,7 @@ static GtkWidget *g_binary_panel_get_properties(GBinaryPanel *panel)      builder = gtk_builder_new();      gtk_builder_set_scope(builder, scope); +    gtk_builder_set_current_object(builder, G_OBJECT(panel));  #ifndef NDEBUG      status = gtk_builder_add_from_resource(builder, "/re/chrysalide/framework/gui/panels/binary-props.ui", NULL); @@ -460,9 +462,9 @@ static GtkWidget *g_binary_panel_get_properties(GBinaryPanel *panel)  /******************************************************************************  *                                                                             * -*  Paramètres  : entry = -*                icon_pos = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx -*                panel = définition de panneau à manipuler.                   * +*  Paramètres  : entry    = zone de saisie concernée par l'appel.             * +*                icon_pos = position de l'icone incrustée dans la zone.       * +*                panel    = définition de panneau à manipuler.                *  *                                                                             *  *  Description : Ouvre une boîte de dialogue pour récupérer un fichier.       *  *                                                                             * @@ -472,14 +474,16 @@ static GtkWidget *g_binary_panel_get_properties(GBinaryPanel *panel)  *                                                                             *  ******************************************************************************/ -static void g_binary_panel_on_new_file_entry_icon_release(GtkEntry *entry, GtkEntryIconPosition icon_pos, gpointer user_data) +static void g_binary_panel_on_new_file_entry_icon_release(GtkEntry *entry, GtkEntryIconPosition icon_pos, GBinaryPanel *panel)  { +    GtkRoot *root;                          /* Racine du composant         */ +    GtkTiledPanel *tiled;                   /* Panneau d'affichage complet */ +    root = gtk_widget_get_root(GTK_WIDGET(entry)); -    printf("open...\n"); - - +    tiled = g_binary_panel_get_panel(panel, NULL); +    gtk_framework_window_add(GTK_FRAMEWORK_WINDOW(root), tiled);  } diff --git a/src/gui/panels/binary.h b/src/gui/panels/binary.h index bcf8707..b459294 100644 --- a/src/gui/panels/binary.h +++ b/src/gui/panels/binary.h @@ -30,6 +30,7 @@  #include "../panel.h" +#include "../../analysis/content.h"  #include "../../glibext/helpers.h"  #include "../../gtkext/panel.h" @@ -43,8 +44,8 @@  DECLARE_GTYPE(GtkBinaryPanel, gtk_binary_panel, GTK, BINARY_PANEL); -/* Crée une nouvelle instance de panneau d'accueil. */ -GtkTiledPanel *gtk_binary_panel_new(void); +/* Crée une nouvelle instance de panneau pour binaire. */ +GtkTiledPanel *gtk_binary_panel_new_for_content(GBinContent *); diff --git a/src/gui/window.c b/src/gui/window.c index 24716ed..432a8a1 100644 --- a/src/gui/window.c +++ b/src/gui/window.c @@ -207,7 +207,7 @@ bool gtk_framework_window_create(GtkFrameworkWindow *window, GtkApplication *app      item = find_item_panel_by_type(G_TYPE_WELCOME_PANEL);      panel = g_panel_item_get_panel(item); -    gtk_stack_add_child(window->grid, GTK_WIDGET(panel)); +    gtk_framework_window_add(window, panel);      unref_object(item); @@ -236,3 +236,25 @@ bool gtk_framework_window_create(GtkFrameworkWindow *window, GtkApplication *app      return result;  } + + +/****************************************************************************** +*                                                                             * +*  Paramètres  : window = instance de fenêtre principale à remplir.           * +*                panel  = nouveau panneau à afficher.                         * +*                                                                             * +*  Description : Ajoute un panneau à la fenêtre principale de Chrysalide.     * +*                                                                             * +*  Retour      : -                                                            * +*                                                                             * +*  Remarques   : -                                                            * +*                                                                             * +******************************************************************************/ + +void gtk_framework_window_add(GtkFrameworkWindow *window, /* __steal */GtkTiledPanel *panel) +{ +    gtk_stack_add_child(window->grid, GTK_WIDGET(panel)); + +    gtk_stack_set_visible_child(window->grid, GTK_WIDGET(panel)); + +} diff --git a/src/gui/window.h b/src/gui/window.h index 4e73a76..56c56ec 100644 --- a/src/gui/window.h +++ b/src/gui/window.h @@ -29,6 +29,7 @@  #include "../glibext/helpers.h" +#include "../gtkext/panel.h" @@ -46,6 +47,9 @@ DECLARE_GTYPE(GtkFrameworkWindow, gtk_framework_window, GTK, FRAMEWORK_WINDOW);  /* Crée une nouvelle application principale pour Chrysalide. */  GtkApplicationWindow *gtk_framework_window_new(GtkApplication *); +/* Ajoute un panneau à la fenêtre principale de Chrysalide. */ +void gtk_framework_window_add(GtkFrameworkWindow *, GtkTiledPanel *); +  #endif  /* _GUI_WINDOW_H */  | 
