pspp-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Pspp-cvs] pspp/src/ui/gui psppire.c syntax-editor.c synta...


From: John Darrington
Subject: [Pspp-cvs] pspp/src/ui/gui psppire.c syntax-editor.c synta...
Date: Sat, 23 Dec 2006 23:05:59 +0000

CVSROOT:        /sources/pspp
Module name:    pspp
Changes by:     John Darrington <jmd>   06/12/23 23:05:59

Modified files:
        src/ui/gui     : psppire.c syntax-editor.c syntax-editor.glade 
                         syntax-editor.h 

Log message:
        Enabled remaining items in syntax editor's Run menu.
        Removed global variable 'the_lexer'.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/pspp/src/ui/gui/psppire.c?cvsroot=pspp&r1=1.26&r2=1.27
http://cvs.savannah.gnu.org/viewcvs/pspp/src/ui/gui/syntax-editor.c?cvsroot=pspp&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/pspp/src/ui/gui/syntax-editor.glade?cvsroot=pspp&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/pspp/src/ui/gui/syntax-editor.h?cvsroot=pspp&r1=1.2&r2=1.3

Patches:
Index: psppire.c
===================================================================
RCS file: /sources/pspp/pspp/src/ui/gui/psppire.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -b -r1.26 -r1.27
--- psppire.c   23 Dec 2006 09:03:45 -0000      1.26
+++ psppire.c   23 Dec 2006 23:05:59 -0000      1.27
@@ -78,7 +78,6 @@
 void create_icon_factory (void);
 
 struct source_stream *the_source_stream ;
-struct lexer *the_lexer;
 struct dataset * the_dataset = NULL;
 
 
@@ -130,8 +129,6 @@
                          fn_getenv_default ("STAT_INCLUDE_PATH", include_path)
                          );
 
-  the_lexer = lex_create (the_source_stream);
-
   the_dataset = create_dataset (factory);
 
   message_dialog_init (the_source_stream);

Index: syntax-editor.c
===================================================================
RCS file: /sources/pspp/pspp/src/ui/gui/syntax-editor.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- syntax-editor.c     23 Dec 2006 09:03:45 -0000      1.5
+++ syntax-editor.c     23 Dec 2006 23:05:59 -0000      1.6
@@ -33,13 +33,13 @@
 
 #include "window-manager.h"
 
+#include <language/lexer/lexer.h>
 #include <language/command.h>
 #include <data/procedure.h>
 #include "syntax-editor.h"
 #include "syntax-editor-source.h"
 
 extern struct source_stream *the_source_stream ;
-extern struct lexer *the_lexer;
 extern struct dataset *the_dataset;
 
 static gboolean save_editor_to_file (struct syntax_editor *se,
@@ -196,19 +196,14 @@
 }
 
 static void
-on_run_all (GtkMenuItem *menuitem, gpointer user_data)
+execute_syntax (const struct syntax_editor *se, GtkTextIter start,
+               GtkTextIter stop)
 {
-  GtkTextIter begin, end;
-  struct syntax_editor *se = user_data;
-
-  gtk_text_buffer_get_iter_at_line (se->buffer, &begin, 0);
-  gtk_text_buffer_get_iter_at_line (se->buffer, &end, -1);
-
   getl_append_source (the_source_stream,
-                     create_syntax_editor_source (se, begin, end));
+                     create_syntax_editor_source (se, start, stop));
   for (;;)
     {
-      int result = cmd_parse (the_lexer, the_dataset,
+      int result = cmd_parse (se->lexer, the_dataset,
                              proc_has_source (the_dataset)
                              ? CMD_STATE_DATA : CMD_STATE_INITIAL);
 
@@ -217,6 +212,87 @@
     }
 }
 
+/* Parse and execute all the text in the buffer */
+static void
+on_run_all (GtkMenuItem *menuitem, gpointer user_data)
+{
+  GtkTextIter begin, end;
+  struct syntax_editor *se = user_data;
+
+  gtk_text_buffer_get_iter_at_line (se->buffer, &begin, 0);
+  gtk_text_buffer_get_iter_at_line (se->buffer, &end, -1);
+
+
+  execute_syntax (se, begin, end);
+}
+
+/* Parse and execute the currently selected text */
+static void
+on_run_selection (GtkMenuItem *menuitem, gpointer user_data)
+{
+  GtkTextIter begin, end;
+  struct syntax_editor *se = user_data;
+
+  if ( gtk_text_buffer_get_selection_bounds (se->buffer, &begin, &end) )
+    execute_syntax (se, begin, end);
+}
+
+
+/* Parse and execute the current line */
+static void
+on_run_current_line (GtkMenuItem *menuitem, gpointer user_data)
+{
+  GtkTextIter begin, end;
+  GtkTextIter here;
+  gint line;
+
+  struct syntax_editor *se = user_data;
+
+  /* Get the current line */
+  gtk_text_buffer_get_iter_at_mark (se->buffer,
+                                   &here,
+                                   gtk_text_buffer_get_insert (se->buffer)
+                                   );
+
+  line = gtk_text_iter_get_line (&here) ;
+
+  /* Now set begin and end to the start of this line, and start of
+     following line respectively */
+  gtk_text_buffer_get_iter_at_line (se->buffer, &begin, line);
+  gtk_text_buffer_get_iter_at_line (se->buffer, &end, line + 1);
+
+  execute_syntax (se, begin, end);
+}
+
+
+
+/* Parse and execute the from the current line, to the end of the
+   buffer */
+static void
+on_run_to_end (GtkMenuItem *menuitem, gpointer user_data)
+{
+  GtkTextIter begin, end;
+  GtkTextIter here;
+  gint line;
+
+  struct syntax_editor *se = user_data;
+
+  /* Get the current line */
+  gtk_text_buffer_get_iter_at_mark (se->buffer,
+                                   &here,
+                                   gtk_text_buffer_get_insert (se->buffer)
+                                   );
+
+  line = gtk_text_iter_get_line (&here) ;
+
+  /* Now set begin and end to the start of this line, and end of buffer
+     respectively */
+  gtk_text_buffer_get_iter_at_line (se->buffer, &begin, line);
+  gtk_text_buffer_get_iter_at_line (se->buffer, &end, -1);
+
+  execute_syntax (se, begin, end);
+}
+
 
 
 
@@ -241,64 +317,84 @@
   e->window = get_widget_assert (xml, "syntax_editor");
   text_view = get_widget_assert (xml, "syntax_text_view");
   se->buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(text_view));
+  se->lexer = lex_create (the_source_stream);
 
   g_signal_connect (get_widget_assert (xml,"file_new_syntax"),
                    "activate",
-                   G_CALLBACK(new_syntax_window),
+                   G_CALLBACK (new_syntax_window),
                    e->window);
 
   g_signal_connect (get_widget_assert (xml,"file_open_syntax"),
                    "activate",
-                   G_CALLBACK(open_syntax_window),
+                   G_CALLBACK (open_syntax_window),
                    e->window);
 
   g_signal_connect (get_widget_assert (xml,"file_new_data"),
                    "activate",
-                   G_CALLBACK(new_data_window),
+                   G_CALLBACK (new_data_window),
                    e->window);
 
   g_signal_connect (get_widget_assert (xml,"file_open_data"),
                    "activate",
-                   G_CALLBACK(open_data_window),
+                   G_CALLBACK (open_data_window),
                    e->window);
 
 
   g_signal_connect (get_widget_assert (xml,"help_about"),
                    "activate",
-                   G_CALLBACK(about_new),
+                   G_CALLBACK (about_new),
                    e->window);
 
 
 #if 0
 
-  g_signal_connect (get_widget_assert (xml,"file_quit"),
-                   "activate",
-                   G_CALLBACK(on_quit),
-                   se);
-
   g_signal_connect (get_widget_assert (xml,"file_save"),
                    "activate",
-                   G_CALLBACK(on_syntax_save),
+                   G_CALLBACK (on_syntax_save),
                    se);
 
   g_signal_connect (get_widget_assert (xml,"file_save_as"),
                    "activate",
-                   G_CALLBACK(on_syntax_save_as),
+                   G_CALLBACK (on_syntax_save_as),
                    se);
 
 #endif
 
+  g_signal_connect (get_widget_assert (xml,"file_quit"),
+                   "activate",
+                   G_CALLBACK (on_quit),
+                   se);
+
+
   g_signal_connect (get_widget_assert (xml,"run_all"),
                    "activate",
-                   G_CALLBACK(on_run_all),
+                   G_CALLBACK (on_run_all),
+                   se);
+
+
+  g_signal_connect (get_widget_assert (xml,"run_selection"),
+                   "activate",
+                   G_CALLBACK (on_run_selection),
+                   se);
+
+  g_signal_connect (get_widget_assert (xml,"run_current_line"),
+                   "activate",
+                   G_CALLBACK (on_run_current_line),
                    se);
 
 
+  g_signal_connect (get_widget_assert (xml,"run_to_end"),
+                   "activate",
+                   G_CALLBACK (on_run_to_end),
+                   se);
+
 
   g_object_unref (xml);
 
   g_signal_connect (e->window, "delete-event",
-                   G_CALLBACK(on_delete), se);
+                   G_CALLBACK (on_delete), se);
+
+
 
   return se;
 }
@@ -431,8 +527,3 @@
   gtk_widget_destroy (dialog);
 }
 
-
-
-
-
-

Index: syntax-editor.glade
===================================================================
RCS file: /sources/pspp/pspp/src/ui/gui/syntax-editor.glade,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- syntax-editor.glade 23 Dec 2006 09:03:45 -0000      1.1
+++ syntax-editor.glade 23 Dec 2006 23:05:59 -0000      1.2
@@ -201,7 +201,6 @@
                  <child>
                    <widget class="GtkMenuItem" id="run_selection">
                      <property name="visible">True</property>
-                     <property name="sensitive">False</property>
                      <property name="label" 
translatable="yes">Selection</property>
                      <property name="use_underline">True</property>
                    </widget>
@@ -210,7 +209,6 @@
                  <child>
                    <widget class="GtkMenuItem" id="run_current_line">
                      <property name="visible">True</property>
-                     <property name="sensitive">False</property>
                      <property name="label" translatable="yes">Current 
Line</property>
                      <property name="use_underline">True</property>
                    </widget>
@@ -219,7 +217,6 @@
                  <child>
                    <widget class="GtkMenuItem" id="run_to_end">
                      <property name="visible">True</property>
-                     <property name="sensitive">False</property>
                      <property name="label" translatable="yes">To 
End</property>
                      <property name="use_underline">True</property>
                    </widget>

Index: syntax-editor.h
===================================================================
RCS file: /sources/pspp/pspp/src/ui/gui/syntax-editor.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- syntax-editor.h     23 Dec 2006 09:03:45 -0000      1.2
+++ syntax-editor.h     23 Dec 2006 23:05:59 -0000      1.3
@@ -25,10 +25,13 @@
 
 #include "window-manager.h"
 
+struct lexer;
+
 struct syntax_editor
 {
   struct editor_window parent;
   GtkTextBuffer *buffer;  /* The buffer which contains the text */
+  struct lexer *lexer;    /* Lexer to parse syntax */
 };
 
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]