X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-syntax-window.c;h=a786db8040c5bcb2ec7e18df1772fd4eb536c63f;hb=7bc7a451768f00702e65a25d4a9bdd0b567f82ac;hp=56a39b8526ccc4bb0fc9a994a75e3ce4279c7755;hpb=c9e28aa922c35b8764925fe824794886b8f17a86;p=pspp diff --git a/src/ui/gui/psppire-syntax-window.c b/src/ui/gui/psppire-syntax-window.c index 56a39b8526..a786db8040 100644 --- a/src/ui/gui/psppire-syntax-window.c +++ b/src/ui/gui/psppire-syntax-window.c @@ -18,16 +18,15 @@ #include #include -#include #include "helper.h" #include #include - #include "psppire-syntax-window.h" -#include "data-editor.h" +#include "psppire-data-window.h" +#include "psppire-window-register.h" #include "about.h" #include "psppire-syntax-window.h" #include "syntax-editor-source.h" @@ -37,14 +36,11 @@ #define _(msgid) gettext (msgid) #define N_(msgid) msgid - - static void psppire_syntax_window_base_finalize (PsppireSyntaxWindowClass *, gpointer); static void psppire_syntax_window_base_init (PsppireSyntaxWindowClass *class); static void psppire_syntax_window_class_init (PsppireSyntaxWindowClass *class); static void psppire_syntax_window_init (PsppireSyntaxWindow *syntax_editor); - GType psppire_syntax_window_get_type (void) { @@ -73,26 +69,20 @@ psppire_syntax_window_get_type (void) return psppire_syntax_window_type; } +static GObjectClass *parent_class ; static void psppire_syntax_window_finalize (GObject *object) { - g_debug ("%s %p", __FUNCTION__, object); - - GObjectClass *class = G_OBJECT_GET_CLASS (object); - - GObjectClass *parent_class = g_type_class_peek_parent (class); - - if (G_OBJECT_CLASS (parent_class)->finalize) (*G_OBJECT_CLASS (parent_class)->finalize) (object); - } static void psppire_syntax_window_class_init (PsppireSyntaxWindowClass *class) { + parent_class = g_type_class_peek_parent (class); } @@ -114,10 +104,12 @@ psppire_syntax_window_base_finalize (PsppireSyntaxWindowClass *class, static void -editor_execute_syntax (const PsppireSyntaxWindow *se, GtkTextIter start, - GtkTextIter stop) +editor_execute_syntax (const PsppireSyntaxWindow *sw, GtkTextIter start, + GtkTextIter stop) { - execute_syntax (create_syntax_editor_source (se->buffer, start, stop)); + PsppireWindow *win = PSPPIRE_WINDOW (sw); + const gchar *name = psppire_window_get_filename (win); + execute_syntax (create_syntax_editor_source (sw->buffer, start, stop, name)); } @@ -254,8 +246,11 @@ save_editor_to_file (PsppireSyntaxWindow *se, if ( result ) { + gchar *msg = g_strdup_printf (_("Saved file \"%s\""), filename); + gtk_statusbar_push (GTK_STATUSBAR (se->sb), se->text_context, msg); psppire_window_set_filename (PSPPIRE_WINDOW (se), filename); gtk_text_buffer_set_modified (buffer, FALSE); + g_free (msg); } return result; @@ -267,7 +262,6 @@ save_editor_to_file (PsppireSyntaxWindow *se, static void save_if_modified (PsppireSyntaxWindow *se) { - if ( TRUE == gtk_text_buffer_get_modified (se->buffer)) { gint response; @@ -288,14 +282,15 @@ save_if_modified (PsppireSyntaxWindow *se) gtk_dialog_add_button (GTK_DIALOG (dialog), GTK_STOCK_YES, GTK_RESPONSE_ACCEPT); + gtk_dialog_add_button (GTK_DIALOG (dialog), GTK_STOCK_NO, GTK_RESPONSE_REJECT); + gtk_dialog_add_button (GTK_DIALOG (dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL); - response = gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); @@ -478,108 +473,122 @@ open_syntax_window (GtkMenuItem *menuitem, gpointer parent) } +static void +on_text_changed (GtkTextBuffer *buffer, PsppireSyntaxWindow *window) +{ + gtk_statusbar_pop (GTK_STATUSBAR (window->sb), window->text_context); +} + extern struct source_stream *the_source_stream ; static void psppire_syntax_window_init (PsppireSyntaxWindow *window) { - GladeXML *xml = XML_NEW ("syntax-editor.glade"); + GtkBuilder *xml = builder_new ("syntax-editor.ui"); GtkWidget *box = gtk_vbox_new (FALSE, 0); - + GtkWidget *menubar = get_widget_assert (xml, "menubar2"); GtkWidget *sw = get_widget_assert (xml, "scrolledwindow8"); - GtkWidget *sb = get_widget_assert (xml, "statusbar2"); + GtkWidget *text_view = get_widget_assert (xml, "syntax_text_view"); window->buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text_view)); window->lexer = lex_create (the_source_stream); - connect_help (xml); + 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); + + // connect_help (xml); gtk_container_add (GTK_CONTAINER (window), box); g_object_ref (menubar); - gtk_widget_unparent (menubar); g_object_ref (sw); - gtk_widget_unparent (sw); - g_object_ref (sb); - gtk_widget_unparent (sb); + g_object_ref (window->sb); gtk_box_pack_start (GTK_BOX (box), menubar, FALSE, TRUE, 0); gtk_box_pack_start (GTK_BOX (box), sw, TRUE, TRUE, 0); - gtk_box_pack_start (GTK_BOX (box), sb, FALSE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (box), window->sb, FALSE, TRUE, 0); gtk_widget_show_all (box); - g_signal_connect (get_widget_assert (xml,"file_new_syntax"), + g_signal_connect (get_object_assert (xml,"file_new_syntax"), "activate", G_CALLBACK (create_syntax_window), NULL); - g_signal_connect (get_widget_assert (xml,"file_open_syntax"), + g_signal_connect (get_object_assert (xml,"file_open_syntax"), "activate", G_CALLBACK (open_syntax_window), window); - - g_signal_connect (get_widget_assert (xml,"file_new_data"), +#if 0 + g_signal_connect (get_object_assert (xml,"file_new_data"), "activate", - G_CALLBACK (new_data_window), + G_CALLBACK (create_data_window), window); +#endif - g_signal_connect (get_widget_assert (xml,"help_about"), + g_signal_connect (get_object_assert (xml,"help_about"), "activate", G_CALLBACK (about_new), window); - g_signal_connect (get_widget_assert (xml,"help_reference"), + g_signal_connect (get_object_assert (xml,"help_reference"), "activate", G_CALLBACK (reference_manual), NULL); - g_signal_connect (get_widget_assert (xml, "file_save"), + g_signal_connect (get_object_assert (xml, "file_save"), "activate", G_CALLBACK (on_syntax_save), window); - g_signal_connect (get_widget_assert (xml, "file_save_as"), + g_signal_connect (get_object_assert (xml, "file_save_as"), "activate", G_CALLBACK (on_syntax_save_as), window); - g_signal_connect (get_widget_assert (xml,"file_quit"), + g_signal_connect (get_object_assert (xml,"file_quit"), "activate", G_CALLBACK (on_quit), window); - g_signal_connect (get_widget_assert (xml,"run_all"), + g_signal_connect (get_object_assert (xml,"run_all"), "activate", G_CALLBACK (on_run_all), window); - g_signal_connect (get_widget_assert (xml,"run_selection"), + g_signal_connect (get_object_assert (xml,"run_selection"), "activate", G_CALLBACK (on_run_selection), window); - g_signal_connect (get_widget_assert (xml,"run_current_line"), + g_signal_connect (get_object_assert (xml,"run_current_line"), "activate", G_CALLBACK (on_run_current_line), window); - g_signal_connect (get_widget_assert (xml,"run_to_end"), + g_signal_connect (get_object_assert (xml,"run_to_end"), "activate", G_CALLBACK (on_run_to_end), window); - g_signal_connect (get_widget_assert (xml,"windows_minimise_all"), + g_signal_connect (get_object_assert (xml,"windows_minimise_all"), "activate", - G_CALLBACK (psppire_window_minimise_all), - NULL); + G_CALLBACK (psppire_window_minimise_all), NULL); + + GtkUIManager *uim = GTK_UI_MANAGER (get_object_assert (xml, "uimanager1")); + + PSPPIRE_WINDOW (window)->menu = + GTK_MENU_SHELL (gtk_ui_manager_get_widget (uim,"/ui/menubar2/windows/windows_minimise_all")->parent); + g_object_unref (xml); @@ -593,6 +602,7 @@ psppire_syntax_window_new (void) { return GTK_WIDGET (g_object_new (psppire_syntax_window_get_type (), "usage", PSPPIRE_WINDOW_USAGE_SYNTAX, + "filename", "Syntax", NULL)); }