summaryrefslogtreecommitdiff
path: root/src/editor.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2009-09-24 22:15:43 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2009-09-24 22:15:43 (GMT)
commit8271ddd8f450f1ae9629f5d39e786bc323eba31c (patch)
tree726db1b41738003f1d15512dfc210505fce0344a /src/editor.c
parentf7c1c34cb54b239586bf431b1749759baee9493e (diff)
Managed properly projects (close, reload, aso.).
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@118 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/editor.c')
-rw-r--r--src/editor.c42
1 files changed, 21 insertions, 21 deletions
diff --git a/src/editor.c b/src/editor.c
index 942e6f4..5cdd4df 100644
--- a/src/editor.c
+++ b/src/editor.c
@@ -86,7 +86,7 @@ void mcb_file_save_project_as(GtkMenuItem *, gpointer);
/* Charge un projet récent et met à jour la liste. */
-void mcb_open_recent_project(GtkMenuItem *, gpointer);
+void mcb_open_recent_project(GtkMenuItem *, GObject *);
/* Réagit avec le menu "Affichage -> Vue xxx". */
void mcb_view_change_support(GtkRadioMenuItem *, GObject *);
@@ -137,7 +137,7 @@ void update_debug_menu_items(GObject *, gboolean);
/* Réagit au changement d'onglet d'un panneau quelconque. */
-static void on_dock_item_switch(GtkDockPanel *, GtkDockItem *, GObject *);
+static void on_dock_item_switch(GtkDockPanel *, GDockItem *, GObject *);
/* Met en concordance les menus avec l'édition courante. */
static void refresh_editor_menus(GObject *, GOpenidaBinary *, GtkBinView *);
@@ -192,7 +192,7 @@ GtkWidget *create_editor(void)
GtkWidget *dpanel; /* Support de panneaux */
- GtkDockItem *ditem; /* Panneau avec ses infos. */
+ GDockItem *ditem; /* Panneau avec ses infos. */
#if 0
@@ -400,7 +400,7 @@ GtkWidget *create_editor(void)
//gtk_paned_pack1 (GTK_PANED (hpaned1), scrolledwindow2, FALSE, TRUE);
- ditem = gtk_dock_item_new(_("Binary code"), scrolledwindow2);
+ ditem = g_dock_item_new(_("Binary code"), scrolledwindow2);
gtk_dock_panel_add_item(dpanel, ditem);
@@ -455,7 +455,7 @@ GtkWidget *create_editor(void)
place_all_panels_in_editor(dpanel);
- ditem = gtk_dock_item_new(_("Registers"), get_panel(PNT_REGISTERS));
+ ditem = g_dock_item_new(_("Registers"), get_panel(PNT_REGISTERS));
gtk_dock_panel_add_item(dpanel, ditem);
@@ -472,17 +472,17 @@ GtkWidget *create_editor(void)
gtk_paned_pack2(GTK_PANED(vpaned1), dpanel, FALSE, FALSE);
- ditem = gtk_dock_item_new(_("Messages"), get_panel(PNT_LOG));
+ ditem = g_dock_item_new(_("Messages"), get_panel(PNT_LOG));
gtk_dock_panel_add_item(dpanel, ditem);
- ditem = gtk_dock_item_new(_("Strings"), get_panel(PNT_STRINGS));
+ ditem = g_dock_item_new(_("Strings"), get_panel(PNT_STRINGS));
gtk_dock_panel_add_item(dpanel, ditem);
panel = build_shell_panel(G_OBJECT(result));
- ditem = gtk_dock_item_new(_("Shell"), panel);
+ ditem = g_dock_item_new(_("Shell"), panel);
gtk_dock_panel_add_item(dpanel, ditem);
@@ -555,6 +555,8 @@ GtkWidget *create_editor(void)
void destroy_editor(GtkWidget *widget, gpointer data)
{
+ close_openida_project(get_current_openida_project());
+
gtk_main_quit();
}
@@ -716,7 +718,7 @@ void mcb_file_save_project_as(GtkMenuItem *menuitem, gpointer data)
/******************************************************************************
* *
* Paramètres : menuitem = élément de menu sélectionné. *
-* data = adresse de l'espace de référencement global. *
+* ref = adresse de l'espace de référencement global. *
* *
* Description : Charge un projet récent et met à jour la liste. *
* *
@@ -726,17 +728,20 @@ void mcb_file_save_project_as(GtkMenuItem *menuitem, gpointer data)
* *
******************************************************************************/
-void mcb_open_recent_project(GtkMenuItem *menuitem, gpointer data)
+void mcb_open_recent_project(GtkMenuItem *menuitem, GObject *ref)
{
const gchar *caption; /* Etiquette du menu */
openida_project *project; /* Nouveau projet chargé */
caption = gtk_label_get_text(GTK_LABEL(gtk_bin_get_child(GTK_BIN(menuitem))));
- project = NULL/*load_openida_project_from_xml(caption)*/;
+ project = g_openida_project_new_from_xml(ref, caption);
if (project != NULL)
{
+ push_openida_project_into_recent_list(project);
+ load_recent_openida_projects_list(ref, G_CALLBACK(mcb_open_recent_project));
+
set_current_openida_project(project);
/* TODO ... */
@@ -767,9 +772,7 @@ void mcb_view_change_support(GtkRadioMenuItem *menuitem, GObject *ref)
GOpenidaBinary *binary; /* Edition courante */
GtkBinView *binview; /* Afficheur effectif de code */
GtkWidget *panel; /* Nouveau support à utiliser */
- GtkDockPanel *dpanel; /* Support de panneaux */
- char *title; /* Titre associé au binaire */
- GtkDockItem *ditem; /* Panneau avec ses infos. */
+ GDockItem *ditem; /* Panneau avec ses infos. */
/* On ne traite qu'une seule fois ! */
if (!gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem))) return;
@@ -787,12 +790,9 @@ void mcb_view_change_support(GtkRadioMenuItem *menuitem, GObject *ref)
g_object_set_data(ref, "binview", binview);
- dpanel = GTK_DOCK_PANEL(g_object_get_data(ref, "binpanel"));
-
- title = g_openida_binary_to_string(binary);
- ditem = gtk_dock_panel_item_from_name(dpanel, strrchr(title, '/') + 1);
+ ditem = gtk_dock_panel_get_item_from_binary(get_current_openida_project(), binary);
- gtk_dock_item_set_panel(ditem, panel);
+ g_dock_item_set_panel(ditem, panel);
notify_panels_of_view_change(binview, true);
@@ -1255,12 +1255,12 @@ void update_debug_menu_items(GObject *ref, gboolean stopped)
* *
******************************************************************************/
-static void on_dock_item_switch(GtkDockPanel *panel, GtkDockItem *item, GObject *ref)
+static void on_dock_item_switch(GtkDockPanel *panel, GDockItem *item, GObject *ref)
{
GtkWidget *widget; /* Support réel à traiter */
GOpenidaBinary *binary; /* Binaire en cours d'édition */
- widget = gtk_dock_item_get_panel(item);
+ widget = g_dock_item_get_panel(item);
if (GTK_IS_SCROLLED_WINDOW(widget))
widget = gtk_bin_get_child(GTK_BIN(widget));