Fixed buglet in file open action.
authorJohn Darrington <john@darrington.wattle.id.au>
Thu, 25 Jan 2007 08:18:57 +0000 (08:18 +0000)
committerJohn Darrington <john@darrington.wattle.id.au>
Thu, 25 Jan 2007 08:18:57 +0000 (08:18 +0000)
src/ui/gui/data-editor.c
src/ui/gui/data-editor.h
src/ui/gui/window-manager.c
src/ui/gui/window-manager.h

index 9aa6501be01a9d54b15746b9adf3415beb008543..07588770146b130d9ac1bea33fe61c11f3465b72 100644 (file)
@@ -828,7 +828,7 @@ weight_cases_dialog (GObject *o, gpointer data)
 \f
 static void data_save_as_dialog (GtkAction *, struct data_editor *de);
 static void new_file (GtkAction *, struct editor_window *de);
-static void open_data_dialog (GtkAction *, struct editor_window *de);
+static void open_data_dialog (GtkAction *, struct data_editor *de);
 static void data_save (GtkAction *action, struct data_editor *e);
 
 
@@ -1033,11 +1033,13 @@ new_file (GtkAction *action, struct editor_window *de)
 /* Callback for the data_open action.
    Prompts for a filename and opens it */
 static void
-open_data_dialog (GtkAction *action, struct editor_window *de)
+open_data_dialog (GtkAction *action, struct data_editor *de)
 {
+  struct editor_window *e = (struct editor_window *) de;
+
   GtkWidget *dialog =
     gtk_file_chooser_dialog_new (_("Open"),
-                                GTK_WINDOW (de->window),
+                                GTK_WINDOW (e->window),
                                 GTK_FILE_CHOOSER_ACTION_OPEN,
                                 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                                 GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
@@ -1065,16 +1067,15 @@ open_data_dialog (GtkAction *action, struct editor_window *de)
     case GTK_RESPONSE_ACCEPT:
       {
        struct getl_interface *sss;
-       gchar *file_name =
+       g_free (de->file_name);
+       de->file_name =
          gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
 
-       sss = create_syntax_string_source ("GET FILE='%s'.", file_name);
+       sss = create_syntax_string_source ("GET FILE='%s'.", de->file_name);
 
        execute_syntax (sss);
 
-       window_set_name_from_filename (de, file_name);
-
-       g_free (file_name);
+       window_set_name_from_filename (e, de->file_name);
       }
       break;
     default:
index 71bfd0e67a291a28adc2ed5eabd0f8f6ec93898c..67302fa9d5cb82ee199320e6978ee4ccafac8c75 100644 (file)
@@ -39,6 +39,10 @@ struct data_editor
   GladeXML *xml;
 
   gboolean save_as_portable;
+
+  /* Name of the file this data is associated with (ie, was loaded from or
+     has been  saved to), in "filename encoding",  or NULL, if it's not
+     associated with any file */
   gchar *file_name;
 };
 
index f25a97ab85ab0127107e7deba02770796777aee1..2978d7ae8f5c585619c81207084249edcd4743c0 100644 (file)
@@ -123,11 +123,12 @@ set_window_name (struct editor_window *e,
   gchar *title ;
   g_free (e->name);
 
+  e->name = NULL;
 
   if ( name )
     {
-      e->name = g_strdup (name);
-      return ;
+      e->name =  g_strdup (name);
+      return;
     }
 
   switch (e->type )
@@ -150,6 +151,8 @@ set_window_name (struct editor_window *e,
 }
 
 
+/* Set the name of this window based on FILENAME.
+   FILENAME is in "filename encoding" */
 void
 window_set_name_from_filename (struct editor_window *e,
                               const gchar *filename)
index 994cdbe21e7c7988befc5d7467af39fbd0878801..ba0abced435848a43eac661b62e13da9fbfe0e38 100644 (file)
@@ -13,7 +13,7 @@ enum window_type
 struct editor_window
  {
   GtkWindow *window;      /* The top level window of the editor */
-  gchar *name;            /* The name of this editor */
+  gchar *name;            /* The name of this editor (UTF-8) */
   enum window_type type;
  } ;
 
@@ -22,6 +22,8 @@ struct editor_window * window_create (enum window_type type,
 
 const gchar * window_name (const struct editor_window *);
 
+/* Set the name of this window based on FILENAME.
+   FILENAME is in "filename encoding" */
 void window_set_name_from_filename (struct editor_window *e,
                                    const gchar *filename);