summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2020-02-15 13:27:35 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2020-02-15 13:27:35 (GMT)
commitef90ffc686eb0dc1aa1567c6ceaff3843970a597 (patch)
treec26f7a17fd89f1558bc1775183d6b905d21bccd0
parent04b1ee00d25383f977f59703e4c0bc66ad1faa81 (diff)
Chosen the default view displayed after a binary loading.
-rw-r--r--plugins/pychrysalide/analysis/loaded.c47
-rw-r--r--src/analysis/binary.c28
-rw-r--r--src/analysis/loaded-int.h4
-rw-r--r--src/analysis/loaded.c26
-rw-r--r--src/analysis/loaded.h3
-rw-r--r--src/gui/editor.c2
6 files changed, 109 insertions, 1 deletions
diff --git a/plugins/pychrysalide/analysis/loaded.c b/plugins/pychrysalide/analysis/loaded.c
index a5486a6..4a762ef 100644
--- a/plugins/pychrysalide/analysis/loaded.c
+++ b/plugins/pychrysalide/analysis/loaded.c
@@ -54,6 +54,9 @@ static PyObject *py_loaded_content_detect_obfuscators(PyObject *, PyObject *);
/* Détermine le nombre de vues disponibles pour un contenu. */
static PyObject *py_loaded_content_count_views(PyObject *, PyObject *);
+/* Met en place la vue initiale pour un contenu chargé. */
+static PyObject *py_loaded_content_build_default_view(PyObject *, PyObject *);
+
/* Fournit le contenu représenté de l'élément chargé. */
static PyObject *py_loaded_content_get_content(PyObject *, void *);
@@ -264,6 +267,49 @@ static PyObject *py_loaded_content_count_views(PyObject *self, PyObject *args)
/******************************************************************************
* *
+* Paramètres : self = contenu chargé à manipuler. *
+* args = non utilisé ici. *
+* *
+* Description : Met en place la vue initiale pour un contenu chargé. *
+* *
+* Retour : Composant graphique nouveau. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static PyObject *py_loaded_content_build_default_view(PyObject *self, PyObject *args)
+{
+ PyObject *result; /* Instance à retourner */
+ GLoadedContent *content; /* Version GLib de l'élément */
+ GtkWidget *view; /* Composant GTK à transposer */
+
+#define LOADED_CONTENT_BUILD_DEFAULT_VIEW_METHOD PYTHON_METHOD_DEF \
+( \
+ build_default_view, "$self", \
+ METH_NOARGS, py_loaded_content, \
+ "Build a new widget for the default graphical view of the loaded content." \
+ "\n" \
+ "This method is aimed to only be called from the GUI internals." \
+ " It provides the first view displayed in the main Chrysalide window" \
+ " after a binary loading." \
+)
+
+ content = G_LOADED_CONTENT(pygobject_get(self));
+
+ view = g_loaded_content_build_default_view(content);
+
+ result = new_pygobject_widget(view);
+
+ g_object_unref(G_OBJECT(view));
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
* Paramètres : self = objet Python concerné par l'appel. *
* closure = non utilisé ici. *
* *
@@ -327,6 +373,7 @@ PyTypeObject *get_python_loaded_content_type(void)
METH_NOARGS,
"count_views($self, /)\n--\n\nCompute the quantity of available views."
},
+ LOADED_CONTENT_BUILD_DEFAULT_VIEW_METHOD,
{ NULL }
};
diff --git a/src/analysis/binary.c b/src/analysis/binary.c
index b3d6bba..e875679 100644
--- a/src/analysis/binary.c
+++ b/src/analysis/binary.c
@@ -183,6 +183,9 @@ static unsigned int g_loaded_binary_count_views(const GLoadedBinary *);
/* Fournit le nom d'une vue donnée d'un contenu chargé. */
static const char *g_loaded_binary_get_view_name(const GLoadedBinary *, unsigned int);
+/* Met en place la vue initiale pour un contenu binaire. */
+static GtkWidget *g_loaded_binary_build_default_view(GLoadedBinary *);
+
/* Met en place la vue demandée pour un contenu binaire. */
static GtkWidget *g_loaded_binary_build_view(GLoadedBinary *, unsigned int);
@@ -303,6 +306,7 @@ static void g_loaded_binary_interface_init(GLoadedContentInterface *iface)
iface->count_views = (count_loaded_views_fc)g_loaded_binary_count_views;
iface->get_view_name = (get_loaded_view_name_fc)g_loaded_binary_get_view_name;
+ iface->build_def_view = (build_loaded_def_view_fc)g_loaded_binary_build_default_view;
iface->build_view = (build_loaded_view_fc)g_loaded_binary_build_view;
iface->get_view_index = (get_loaded_view_index_fc)g_loaded_binary_get_view_index;
@@ -1918,6 +1922,30 @@ static const char *g_loaded_binary_get_view_name(const GLoadedBinary *binary, un
* Paramètres : binary = contenu chargé à consulter. *
* index = indice de la vue ciblée. *
* *
+* Description : Met en place la vue initiale pour un contenu binaire. *
+* *
+* Retour : Composant graphique nouveau. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static GtkWidget *g_loaded_binary_build_default_view(GLoadedBinary *binary)
+{
+ GtkWidget *result; /* Support à retourner */
+
+ result = g_loaded_binary_build_view(binary, BVW_BLOCK);
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : binary = contenu chargé à consulter. *
+* index = indice de la vue ciblée. *
+* *
* Description : Met en place la vue demandée pour un contenu binaire. *
* *
* Retour : Composant graphique nouveau. *
diff --git a/src/analysis/loaded-int.h b/src/analysis/loaded-int.h
index 6584822..0aacc3f 100644
--- a/src/analysis/loaded-int.h
+++ b/src/analysis/loaded-int.h
@@ -54,6 +54,9 @@ typedef unsigned int (* count_loaded_views_fc) (const GLoadedContent *);
/* Fournit le nom d'une vue donnée d'un contenu chargé. */
typedef const char * (* get_loaded_view_name_fc) (const GLoadedContent *, unsigned int);
+/* Met en place la vue initiale pour un contenu chargé. */
+typedef GtkWidget * (* build_loaded_def_view_fc) (GLoadedContent *);
+
/* Met en place la vue demandée pour un contenu chargé. */
typedef GtkWidget * (* build_loaded_view_fc) (GLoadedContent *, unsigned int);
@@ -83,6 +86,7 @@ struct _GLoadedContentIface
count_loaded_views_fc count_views; /* Compteur de vues */
get_loaded_view_name_fc get_view_name; /* Désignation d'une vue donnée*/
+ build_loaded_def_view_fc build_def_view;/* Mise en place initiale */
build_loaded_view_fc build_view; /* Mise en place de vues */
get_loaded_view_index_fc get_view_index;/* Récupération d'indice de vue*/
diff --git a/src/analysis/loaded.c b/src/analysis/loaded.c
index 2f8f3fb..79a311f 100644
--- a/src/analysis/loaded.c
+++ b/src/analysis/loaded.c
@@ -465,6 +465,32 @@ const char *g_loaded_content_get_view_name(const GLoadedContent *content, unsign
/******************************************************************************
* *
* Paramètres : content = contenu chargé à consulter. *
+* *
+* Description : Met en place la vue initiale pour un contenu chargé. *
+* *
+* Retour : Composant graphique nouveau. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+GtkWidget *g_loaded_content_build_default_view(GLoadedContent *content)
+{
+ GtkWidget *result; /* Support à retourner */
+ GLoadedContentIface *iface; /* Interface utilisée */
+
+ iface = G_LOADED_CONTENT_GET_IFACE(content);
+
+ result = iface->build_def_view(content);
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : content = contenu chargé à consulter. *
* index = indice de la vue ciblée. *
* *
* Description : Met en place la vue demandée pour un contenu chargé. *
diff --git a/src/analysis/loaded.h b/src/analysis/loaded.h
index c6c22b4..9df647b 100644
--- a/src/analysis/loaded.h
+++ b/src/analysis/loaded.h
@@ -93,6 +93,9 @@ unsigned int g_loaded_content_count_views(const GLoadedContent *);
/* Fournit le nom d'une vue donnée d'un contenu chargé. */
const char *g_loaded_content_get_view_name(const GLoadedContent *, unsigned int);
+/* Met en place la vue initiale pour un contenu chargé. */
+GtkWidget *g_loaded_content_build_default_view(GLoadedContent *);
+
/* Met en place la vue demandée pour un contenu chargé. */
GtkWidget *g_loaded_content_build_view(GLoadedContent *, unsigned int);
diff --git a/src/gui/editor.c b/src/gui/editor.c
index 69eb2a6..f45acbd 100644
--- a/src/gui/editor.c
+++ b/src/gui/editor.c
@@ -927,7 +927,7 @@ static void on_editor_loaded_content_added(GStudyProject *project, GLoadedConten
const char *lname; /* Description du binaire */
GPanelItem *panel; /* Nouveau panneau à integrer */
- selected = g_loaded_content_build_view(content, 0);
+ selected = g_loaded_content_build_default_view(content);
name = g_loaded_content_describe(content, false);
lname = g_loaded_content_describe(content, true);