summaryrefslogtreecommitdiff
path: root/src/gui/panels
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2024-07-24 22:04:04 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2024-07-24 22:04:04 (GMT)
commit39ead30e3bcb19925946e9e3d752486d6cc1d0cb (patch)
treef189fa8f301916619aebdcbeac7217928c6ae481 /src/gui/panels
parent1596de25f349ca065422074327e208cfca7d8d3f (diff)
Display new panels inside the main window when needed.
Diffstat (limited to 'src/gui/panels')
-rw-r--r--src/gui/panels/binary.c30
-rw-r--r--src/gui/panels/binary.h5
2 files changed, 20 insertions, 15 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 *);