/* OpenIDA - Outil d'analyse de fichiers binaires * project.h - prototypes pour la gestion d'un groupe de fichiers binaires * * Copyright (C) 2008 Cyrille Bagard * * This file is part of OpenIDA. * * OpenIDA is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * OpenIDA is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Foobar. If not, see . */ #ifndef _PROJECT_H #define _PROJECT_H #include #include "analysis/binary.h" #include "gtkext/gtkbinview.h" /* Type de représentations */ typedef enum _BinaryView { BVW_BLOCK, /* Version basique */ BVW_GRAPH, /* Affichage en graphqie */ BVW_COUNT } BinaryView; /* Propriétés d'un ensemble de fichiers ouverts */ typedef struct openida_project openida_project; #define set_current_openida_project(prj) _get_current_openida_project(prj) #define get_current_openida_project() _get_current_openida_project(NULL) /* Fournit l'adresse du projet courant. */ openida_project *_get_current_openida_project(openida_project *); /* Crée un projet vide. */ openida_project *create_empty_openida_project(GObject *); /* Crée un projet à partir du contenu XML d'un fichier. */ openida_project *g_openida_project_new_from_xml(GObject *, const char *); /* Procède à l'enregistrement d'un projet donné. */ bool g_openida_project_save(openida_project *, const char *); /* Ferme un projet et libère la mémoire associée. */ void close_openida_project(openida_project *); /* Indique si un projet a tous les éléments pour être sauvé. */ bool has_storing_filename(const openida_project *); /* Attache un fichier donné à un projet donné. */ void attach_binary_to_openida_project(openida_project *, GOpenidaBinary *); /* Détache un fichier donné à un projet donné. */ void detach_binary_to_openida_project(openida_project *, GOpenidaBinary *); /* Fournit un support d'affichage donné pour un binaire chargé. */ GtkWidget *get_view_for_openida_project_binary(const openida_project *, const GOpenidaBinary *, BinaryView, GtkBinView **); /* Fournit l'ensemble des binaires associés à un projet. */ const GOpenidaBinary **get_openida_project_binaries(const openida_project *, size_t *); /* ---------------------- PARTIE GRAPHIQUE DES [DE]CHARGEMENTS ---------------------- */ /* Place un projet au sommet de la pile des projets récents. */ void push_openida_project_into_recent_list(const openida_project *); /* Retire un projet de la pile des projets récents. */ void pop_openida_project_from_recent_list(const openida_project *); /* Met en place les menus rechargeant les projets récents. */ void load_recent_openida_projects_list(GObject *, GCallback); /* Met en place un projet à l'écran. */ void display_openida_project(const openida_project *, GObject *); #endif /* _PROJECT_H */