+
+ PsppireSyntaxWindowClass *class
+ = PSPPIRE_SYNTAX_WINDOW_CLASS (G_OBJECT_GET_CLASS (window));
+
+ GtkClipboard *clip_selection = gtk_widget_get_clipboard (GTK_WIDGET (window), GDK_SELECTION_CLIPBOARD);
+ GtkClipboard *clip_primary = gtk_widget_get_clipboard (GTK_WIDGET (window), GDK_SELECTION_PRIMARY);
+
+ window->print_settings = NULL;
+
+ window->undo_menuitem = g_simple_action_new ("undo", NULL);
+ window->redo_menuitem = g_simple_action_new ("redo", NULL);
+
+ g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (window->undo_menuitem));
+ g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (window->redo_menuitem));
+
+
+ if (class->lan)
+ window->buffer = gtk_source_buffer_new_with_language (class->lan);
+ else
+ window->buffer = gtk_source_buffer_new (NULL);
+
+ gtk_text_view_set_buffer (GTK_TEXT_VIEW (text_view), GTK_TEXT_BUFFER (window->buffer));
+
+ g_object_set (window->buffer,
+ "highlight-matching-brackets", TRUE,
+ NULL);
+
+ g_object_set (text_view,
+ "show-line-numbers", TRUE,
+ "show-line-marks", TRUE,
+ "auto-indent", TRUE,
+ "indent-width", 4,
+ "highlight-current-line", TRUE,
+ NULL);
+
+ window->encoding = NULL;
+
+ window->cliptext = NULL;
+ window->dispose_has_run = FALSE;
+
+
+ window->edit_delete = g_simple_action_new ("delete", NULL);
+ g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (window->edit_delete));
+
+ window->edit_copy = g_simple_action_new ("copy", NULL);
+ g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (window->edit_copy));
+
+ window->edit_cut = g_simple_action_new ("cut", NULL);
+ g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (window->edit_cut));
+
+ window->edit_paste = g_simple_action_new ("paste", NULL);
+ g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (window->edit_paste));
+
+
+ window->buffer = GTK_SOURCE_BUFFER (gtk_text_view_get_buffer (GTK_TEXT_VIEW (text_view)));
+
+ window->sb = get_widget_assert (xml, "statusbar2");
+ window->text_context = gtk_statusbar_get_context_id (GTK_STATUSBAR (window->sb), "Text Context");
+
+ g_signal_connect (window->buffer, "changed",
+ G_CALLBACK (on_text_changed), window);
+
+ g_signal_connect (window->buffer, "modified-changed",
+ G_CALLBACK (on_modified_changed), window);
+
+
+ {
+ GSimpleAction *print = g_simple_action_new ("print", NULL);
+
+ g_signal_connect_swapped (print, "activate",
+ G_CALLBACK (psppire_syntax_window_print), window);
+
+ g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (print));
+ }
+
+ g_signal_connect_swapped (window->undo_menuitem,
+ "activate",
+ G_CALLBACK (undo_last_edit),
+ window);
+
+ g_signal_connect_swapped (window->redo_menuitem,
+ "activate",
+ G_CALLBACK (redo_last_edit),
+ window);
+
+ undo_redo_update (window);
+
+
+ window->sel_handler = g_signal_connect_swapped (clip_primary, "owner-change",
+ G_CALLBACK (selection_changed), window);
+
+ window->ps_handler = g_signal_connect (clip_selection, "owner-change",
+ G_CALLBACK (set_paste_sensitivity), window);