#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)
-{
- static GType psppire_syntax_window_type = 0;
-
- if (!psppire_syntax_window_type)
- {
- static const GTypeInfo psppire_syntax_window_info =
- {
- sizeof (PsppireSyntaxWindowClass),
- (GBaseInitFunc) (void (*)(void)) psppire_syntax_window_base_init,
- (GBaseFinalizeFunc) (void (*)(void)) psppire_syntax_window_base_finalize,
- (GClassInitFunc) (void (*)(void)) psppire_syntax_window_class_init,
- (GClassFinalizeFunc) NULL,
- NULL,
- sizeof (PsppireSyntaxWindow),
- 0,
- (GInstanceInitFunc) (void (*)(void)) psppire_syntax_window_init,
- NULL /* value_table */
- };
-
- static const GInterfaceInfo window_interface_info =
- {
- (GInterfaceInitFunc) (void (*)(void)) psppire_syntax_window_iface_init,
- NULL,
- NULL
- };
-
- psppire_syntax_window_type =
- g_type_register_static (PSPPIRE_TYPE_WINDOW, "PsppireSyntaxWindow",
- &psppire_syntax_window_info, 0);
-
- g_type_add_interface_static (psppire_syntax_window_type,
- PSPPIRE_TYPE_WINDOW_MODEL,
- &window_interface_info);
- }
-
- return psppire_syntax_window_type;
-}
+G_DEFINE_TYPE_WITH_CODE (PsppireSyntaxWindow, psppire_syntax_window, PSPPIRE_TYPE_WINDOW,
+ G_IMPLEMENT_INTERFACE (PSPPIRE_TYPE_WINDOW_MODEL, psppire_syntax_window_iface_init))
static GObjectClass *parent_class ;
static void
psppire_syntax_window_dispose (GObject *obj)
{
- PsppireSyntaxWindow *sw = (PsppireSyntaxWindow *)obj;
+ PsppireSyntaxWindow *sw = PSPPIRE_SYNTAX_WINDOW (obj);
GtkClipboard *clip_selection;
GtkClipboard *clip_primary;
{
GParamSpec *encoding_spec;
GObjectClass *gobject_class = G_OBJECT_CLASS (class);
+ gobject_class->finalize = psppire_syntax_window_finalize;
GtkSourceLanguageManager *lm = gtk_source_language_manager_get_default ();
}
-static void
-psppire_syntax_window_base_init (PsppireSyntaxWindowClass *class)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (class);
- object_class->finalize = psppire_syntax_window_finalize;
-}
-
-
-
-static void
-psppire_syntax_window_base_finalize (PsppireSyntaxWindowClass *class,
- gpointer class_data)
-{
-}
-
-
static void
editor_execute_syntax (const PsppireSyntaxWindow *sw, GtkTextIter start,
GtkTextIter stop)
{
PsppireWindow *win = PSPPIRE_WINDOW (sw);
- struct lex_reader *reader = lex_reader_for_gtk_text_buffer (GTK_TEXT_BUFFER (sw->buffer), start, stop);
+ struct lex_reader *reader = lex_reader_for_gtk_text_buffer (
+ GTK_TEXT_BUFFER (sw->buffer), start, stop, sw->syntax_mode);
- lex_reader_set_file_name (reader, psppire_window_get_filename (win));
+ const gchar *filename = psppire_window_get_filename (win);
+ /* TRANSLATORS: This is part of a filename. Please avoid whitespace. */
+ gchar *untitled = xasprintf ("%s.sps", _("Untitled"));
+ lex_reader_set_file_name (reader, filename ? filename : untitled);
+ free (untitled);
execute_syntax (psppire_default_data_window (), reader);
}
sw->cliptext = NULL;
}
+static gchar tn1[] = "UTF8_STRING";
+static gchar tn2[] = "STRING";
+static gchar tn3[] = "TEXT";
+static gchar tn4[] = "COMPOUND_TEXT";
+static gchar tn5[] = "text/plain;charset=utf-8";
+static gchar tn6[] = "text/plain";
static const GtkTargetEntry targets[] = {
- { "UTF8_STRING", 0, SELECT_FMT_TEXT },
- { "STRING", 0, SELECT_FMT_TEXT },
- { "TEXT", 0, SELECT_FMT_TEXT },
- { "COMPOUND_TEXT", 0, SELECT_FMT_TEXT },
- { "text/plain;charset=utf-8", 0, SELECT_FMT_TEXT },
- { "text/plain", 0, SELECT_FMT_TEXT },
+ { tn1, 0, SELECT_FMT_TEXT },
+ { tn2, 0, SELECT_FMT_TEXT },
+ { tn3, 0, SELECT_FMT_TEXT },
+ { tn4, 0, SELECT_FMT_TEXT },
+ { tn5, 0, SELECT_FMT_TEXT },
+ { tn6, 0, SELECT_FMT_TEXT }
};
-
/*
Store a clip containing the currently selected text.
Returns true iff something was set.
+static void
+on_syntax (GAction *action, GVariant *param, PsppireSyntaxWindow *sw)
+{
+ g_action_change_state (action, param);
+ GVariant *new_state = g_action_get_state (action);
+
+ const gchar *what = g_variant_get_string (new_state, NULL);
+ if (0 == g_strcmp0 (what, "auto"))
+ sw->syntax_mode = SEG_MODE_AUTO;
+ else if (0 == g_strcmp0 (what, "interactive"))
+ sw->syntax_mode = SEG_MODE_INTERACTIVE;
+ else if (0 == g_strcmp0 (what, "batch"))
+ sw->syntax_mode = SEG_MODE_BATCH;
+ else
+ g_warn_if_reached ();
+}
+
+
/* Append ".sps" to FILENAME if necessary.
The returned result must be freed when no longer required.
*/
NULL);
window->encoding = NULL;
+ window->syntax_mode = SEG_MODE_AUTO;
window->cliptext = NULL;
window->dispose_has_run = FALSE;
g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (run_to_end));
}
+ {
+ GSimpleAction *act_syntax = g_simple_action_new_stateful ("syntax", G_VARIANT_TYPE_STRING,
+ g_variant_new_string ("auto"));
+ g_signal_connect (act_syntax, "activate", G_CALLBACK (on_syntax), window);
+ g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (act_syntax));
+ }
+
gtk_menu_shell_append (GTK_MENU_SHELL (menubar),
create_windows_menu (GTK_WINDOW (window)));