summaryrefslogtreecommitdiff
path: root/src/gui/menus/project.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2017-12-26 23:52:44 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2017-12-26 23:52:44 (GMT)
commit2c28d59fb3671c0fdd1987784076d4968c58b651 (patch)
treea301f6cd9c1fd9f92191fba7fe7b59a7e3a01b5a /src/gui/menus/project.c
parent67b4887317b7394d63b543aa48cb368406374103 (diff)
Created the GLoadedContent interface to load all kinds of content.
Diffstat (limited to 'src/gui/menus/project.c')
-rw-r--r--src/gui/menus/project.c41
1 files changed, 24 insertions, 17 deletions
diff --git a/src/gui/menus/project.c b/src/gui/menus/project.c
index c46c017..5d027a0 100644
--- a/src/gui/menus/project.c
+++ b/src/gui/menus/project.c
@@ -46,8 +46,8 @@ static void mcb_project_add_shellcode(GtkMenuItem *, GMenuBar *);
/* Affiche la boîte d'ajout d'un binaire au projet courant. */
static void mcb_project_add_binary_file(GtkMenuItem *, GMenuBar *);
-/* Retire un binaire du projet indiqué. */
-static void mcb_project_remove_binary(GtkMenuItem *, GStudyProject *);
+/* Retire un contenu du projet indiqué. */
+static void mcb_project_remove_content(GtkMenuItem *, GStudyProject *);
@@ -122,8 +122,8 @@ void update_menu_project_for_project(GtkWidget *widget, GStudyProject *project,
GtkWidget *menubar; /* Support pour éléments */
GList *list; /* Liste des éléments en place */
GList *iter; /* Boucle de parcours #1 */
- size_t count; /* Nombre de binaires attachés */
- GLoadedBinary **binaries; /* Liste de ces binaires */
+ size_t count; /* Nombre de contenus attachés */
+ GLoadedContent **contents; /* Liste de ces contenus */
size_t i; /* Boucle de parcours #2 */
const char *desc; /* Description à afficher */
GtkWidget *submenuitem; /* Sous-menu à ajouter */
@@ -142,23 +142,26 @@ void update_menu_project_for_project(GtkWidget *widget, GStudyProject *project,
/* Ajout des entrées */
- binaries = g_study_project_get_binaries(project, &count);
+ contents = g_study_project_get_contents(project, &count);
for (i = 0; i < count; i++)
{
- desc = g_loaded_binary_get_name(binaries[i], true);
+ desc = g_loaded_content_describe(contents[i], true);
submenuitem = qck_create_menu_item(NULL, NULL, desc,
- G_CALLBACK(mcb_project_remove_binary), project);
- g_object_set_data(G_OBJECT(submenuitem), "binary", binaries[i]);
+ G_CALLBACK(mcb_project_remove_content), project);
+ g_object_set_data_full(G_OBJECT(submenuitem), "content", contents[i], g_object_unref);
gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
- g_object_unref(G_OBJECT(binaries[i]));
+ /**
+ * Note : l'appel à g_object_unref() est réalisé lorsque la référence
+ * est retirée du menu.
+ */
}
- if (binaries != NULL)
- free(binaries);
+ if (contents != NULL)
+ free(contents);
gtk_widget_set_sensitive(menuitem, count > 0);
@@ -304,7 +307,7 @@ static void mcb_project_add_binary_file(GtkMenuItem *menuitem, GMenuBar *bar)
* Paramètres : menuitem = élément de menu sélectionné. *
* project = projet d'appartenance du binaire à traiter. *
* *
-* Description : Retire un binaire du projet indiqué. *
+* Description : Retire un contenu du projet indiqué. *
* *
* Retour : - *
* *
@@ -312,13 +315,17 @@ static void mcb_project_add_binary_file(GtkMenuItem *menuitem, GMenuBar *bar)
* *
******************************************************************************/
-static void mcb_project_remove_binary(GtkMenuItem *menuitem, GStudyProject *project)
+static void mcb_project_remove_content(GtkMenuItem *menuitem, GStudyProject *project)
{
- GLoadedBinary *binary; /* Binaire à retirer */
+ GObject *ref; /* Espace de référencement */
+ GLoadedContent *content; /* Contenu à retirer */
- binary = G_LOADED_BINARY(g_object_get_data(G_OBJECT(menuitem), "binary"));
+ ref = G_OBJECT(menuitem);
- g_study_project_detach_binary(project, binary);
- g_object_unref(G_OBJECT(binary));
+ content = G_LOADED_CONTENT(g_object_get_data(ref, "content"));
+
+ g_study_project_detach_content(project, content);
+
+ g_object_set_data(ref, "content", NULL);
}