GtkSelectionData: only access using functions
[pspp] / src / ui / gui / psppire-syntax-window.c
index b5cf0d3345d27cc45474bcc24e3cbe53c6562c0c..2402b341c117d0c831c47755aef8f97a0c6ebb47 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPPIRE - a graphical user interface for PSPP.
-   Copyright (C) 2008, 2009, 2010, 2011  Free Software Foundation
+   Copyright (C) 2008, 2009, 2010, 2011, 2012  Free Software Foundation
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -24,7 +24,6 @@
 #include <gtksourceview/gtksourcelanguagemanager.h>
 #include <gtksourceview/gtksourceprintcompositor.h>
 
-
 #include "language/lexer/lexer.h"
 #include "libpspp/encoding-guesser.h"
 #include "libpspp/i18n.h"
 #include "ui/gui/executor.h"
 #include "ui/gui/help-menu.h"
 #include "ui/gui/helper.h"
+#include "ui/gui/builder-wrapper.h"
 #include "ui/gui/psppire-data-window.h"
 #include "ui/gui/psppire-encoding-selector.h"
-#include "ui/gui/psppire-syntax-window.h"
+#include "ui/gui/psppire-lex-reader.h"
 #include "ui/gui/psppire-syntax-window.h"
 #include "ui/gui/psppire-window-register.h"
 #include "ui/gui/psppire.h"
-#include "ui/gui/psppire.h"
 
 #include "gl/localcharset.h"
 #include "gl/xalloc.h"
@@ -251,10 +250,7 @@ editor_execute_syntax (const PsppireSyntaxWindow *sw, GtkTextIter start,
                       GtkTextIter stop)
 {
   PsppireWindow *win = PSPPIRE_WINDOW (sw);
-  struct lex_reader *reader;
-  gchar *text = gtk_text_buffer_get_text (GTK_TEXT_BUFFER (sw->buffer), &start, &stop, FALSE);
-  reader = lex_reader_for_string (text);
-  g_free (text);
+  struct lex_reader *reader = lex_reader_for_gtk_text_buffer (GTK_TEXT_BUFFER (sw->buffer), start, stop);
 
   lex_reader_set_file_name (reader, psppire_window_get_filename (win));
 
@@ -300,7 +296,7 @@ clipboard_get_cb (GtkClipboard     *clipboard,
   PsppireSyntaxWindow *sw = data;
   g_assert (info == SELECT_FMT_TEXT);
 
-  gtk_selection_data_set (selection_data, selection_data->target,
+  gtk_selection_data_set (selection_data, gtk_selection_data_get_target (selection_data),
                          8,
                          (const guchar *) sw->cliptext, strlen (sw->cliptext));
 
@@ -380,20 +376,17 @@ contents_received_callback (GtkClipboard *clipboard,
                            GtkSelectionData *sd,
                            gpointer data)
 {
-  gchar *c;
   PsppireSyntaxWindow *syntax_window = data;
 
-  if ( sd->length < 0 )
+  if ( gtk_selection_data_get_length (sd) < 0 )
     return;
 
-  if ( sd->type != gdk_atom_intern ("UTF8_STRING", FALSE))
+  if ( gtk_selection_data_get_data_type (sd) != gdk_atom_intern ("UTF8_STRING", FALSE))
     return;
 
-  c = (gchar *) sd->data;
-
   gtk_text_buffer_insert_at_cursor (GTK_TEXT_BUFFER (syntax_window->buffer),
-                                   (gchar *) sd->data,
-                                   sd->length);
+                                   (gchar *) gtk_selection_data_get_data (sd),
+                                   gtk_selection_data_get_length (sd));
 
 }
 
@@ -600,6 +593,8 @@ syntax_pick_filename (PsppireWindow *window)
                                 GTK_STOCK_SAVE,   GTK_RESPONSE_ACCEPT,
                                 NULL);
 
+  g_object_set (dialog, "local-only", FALSE, NULL);
+
   filter = gtk_file_filter_new ();
   gtk_file_filter_set_name (filter, _("Syntax Files (*.sps) "));
   gtk_file_filter_add_pattern (filter, "*.sps");
@@ -674,7 +669,7 @@ load_and_show_syntax_window (GtkWidget *se, const gchar *filename)
   gboolean ok;
 
   gtk_source_buffer_begin_not_undoable_action (PSPPIRE_SYNTAX_WINDOW (se)->buffer);
-  ok = psppire_window_load (PSPPIRE_WINDOW (se), filename);
+  ok = psppire_window_load (PSPPIRE_WINDOW (se), filename, NULL);
   gtk_source_buffer_end_not_undoable_action (PSPPIRE_SYNTAX_WINDOW (se)->buffer);
 
   if (ok )
@@ -897,11 +892,11 @@ psppire_syntax_window_init (PsppireSyntaxWindow *window)
 
   {
   GtkUIManager *uim = GTK_UI_MANAGER (get_object_assert (xml, "uimanager1", GTK_TYPE_UI_MANAGER));
+  GtkWidget *w = gtk_ui_manager_get_widget (uim,"/ui/menubar/windows/windows_minimise_all");
 
   merge_help_menu (uim);
 
-  PSPPIRE_WINDOW (window)->menu =
-    GTK_MENU_SHELL (gtk_ui_manager_get_widget (uim,"/ui/menubar/windows/windows_minimise_all")->parent);
+  PSPPIRE_WINDOW (window)->menu = GTK_MENU_SHELL (gtk_widget_get_parent (w));
   }
 
   g_object_unref (xml);
@@ -935,7 +930,7 @@ error_dialog (GtkWindow *w, const gchar *filename,  GError *err)
 
   g_free (fn);
 
-  g_object_set (dialog, "icon-name", "psppicon", NULL);
+  g_object_set (dialog, "icon-name", "pspp", NULL);
 
   gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
                                            "%s", err->message);
@@ -949,7 +944,7 @@ error_dialog (GtkWindow *w, const gchar *filename,  GError *err)
   Loads the buffer from the file called FILENAME
 */
 gboolean
-syntax_load (PsppireWindow *window, const gchar *filename)
+syntax_load (PsppireWindow *window, const gchar *filename, gpointer not_used)
 {
   GError *err = NULL;
   gchar *text_locale = NULL;