const gchar *filename,
GError **err);
+/* Append ".sps" to FILENAME if necessary.
+ The returned result must be freed when no longer required.
+ */
+static gchar *
+append_suffix (const gchar *filename)
+{
+ if ( ! g_str_has_suffix (filename, ".sps" ) &&
+ ! g_str_has_suffix (filename, ".SPS" ) )
+ {
+ return g_strdup_printf ("%s.sps", filename);
+ }
+
+ return strdup (filename);
+}
+
/* If the buffer's modified flag is set, then save it, and close the window.
Otherwise just close the window.
*/
{
gint response;
GtkWidget *dialog =
- gtk_message_dialog_new (GTK_WINDOW(e->window),
+ gtk_message_dialog_new (GTK_WINDOW (e->window),
GTK_DIALOG_MODAL,
GTK_MESSAGE_QUESTION,
GTK_BUTTONS_NONE,
_("Save contents of syntax editor to %s?"),
- e->name ? e->name : _("Untitled")
+ e->name
);
- gtk_dialog_add_button (GTK_DIALOG(dialog),
+ gtk_dialog_add_button (GTK_DIALOG (dialog),
GTK_STOCK_YES,
GTK_RESPONSE_ACCEPT);
- gtk_dialog_add_button (GTK_DIALOG(dialog),
+ gtk_dialog_add_button (GTK_DIALOG (dialog),
GTK_STOCK_NO,
GTK_RESPONSE_REJECT);
- gtk_dialog_add_button (GTK_DIALOG(dialog),
+ gtk_dialog_add_button (GTK_DIALOG (dialog),
GTK_STOCK_CANCEL,
GTK_RESPONSE_CANCEL);
- response = gtk_dialog_run (GTK_DIALOG(dialog));
+ response = gtk_dialog_run (GTK_DIALOG (dialog));
gtk_widget_destroy (dialog);
{
GError *err = NULL;
- if ( ! save_editor_to_file (se, e->name ? e->name : _("Untitled"),
- &err) )
+ if ( ! save_editor_to_file (se, e->name, &err) )
{
msg (ME, err->message);
g_error_free (err);
/* Callback for the File->SaveAs menuitem */
static void
-on_syntax_save_as (GtkMenuItem *menuitem,
- gpointer user_data)
+on_syntax_save_as (GtkMenuItem *menuitem, gpointer user_data)
{
GtkFileFilter *filter;
gint response;
GtkWidget *dialog =
gtk_file_chooser_dialog_new (_("Save Syntax"),
- GTK_WINDOW(e->window),
+ GTK_WINDOW (e->window),
GTK_FILE_CHOOSER_ACTION_SAVE,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
gtk_file_filter_set_name (filter, _("Syntax Files (*.sps) "));
gtk_file_filter_add_pattern (filter, "*.sps");
gtk_file_filter_add_pattern (filter, "*.SPS");
- gtk_file_chooser_add_filter (GTK_FILE_CHOOSER(dialog), filter);
+ gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
filter = gtk_file_filter_new ();
gtk_file_filter_set_name (filter, _("All Files"));
gtk_file_filter_add_pattern (filter, "*");
gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
- gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER(dialog),
+ gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog),
TRUE);
response = gtk_dialog_run (GTK_DIALOG (dialog));
}
/* Callback for the File->Save menuitem */
-void
-on_syntax_save (GtkMenuItem *menuitem,
- gpointer user_data)
+static void
+on_syntax_save (GtkMenuItem *menuitem, gpointer user_data)
{
struct syntax_editor *se = user_data;
struct editor_window *e = user_data;
on_syntax_save_as (menuitem, user_data);
else
{
- GError *err;
+ GError *err = NULL;
save_editor_to_file (se, e->name, &err);
- msg (ME, err->message);
- g_error_free (err);
+ if ( err )
+ {
+ msg (ME, err->message);
+ g_error_free (err);
+ }
}
}
struct syntax_editor *se ;
struct editor_window *e;
+ connect_help (xml);
+
se = g_malloc (sizeof (*se));
e = (struct editor_window *)se;
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->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"),
e->window);
-#if 0
-
- g_signal_connect (get_widget_assert (xml,"file_save"),
+ g_signal_connect (get_widget_assert (xml, "file_save"),
"activate",
G_CALLBACK (on_syntax_save),
se);
- g_signal_connect (get_widget_assert (xml,"file_save_as"),
+ g_signal_connect (get_widget_assert (xml, "file_save_as"),
"activate",
G_CALLBACK (on_syntax_save_as),
se);
-#endif
g_signal_connect (get_widget_assert (xml,"file_quit"),
"activate",
GtkTextIter start, stop;
gchar *text;
+ gchar *suffixedname;
gchar *glibfilename;
g_assert (filename);
- glibfilename = g_filename_from_utf8 (filename, -1, 0, 0, err);
+ suffixedname = append_suffix (filename);
+
+ glibfilename = g_filename_from_utf8 (suffixedname, -1, 0, 0, err);
+
+ g_free ( suffixedname);
if ( ! glibfilename )
return FALSE;
GtkWidget *dialog =
gtk_file_chooser_dialog_new (_("Open Syntax"),
- GTK_WINDOW(parent),
+ GTK_WINDOW (parent),
GTK_FILE_CHOOSER_ACTION_OPEN,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
gtk_file_filter_set_name (filter, _("Syntax Files (*.sps) "));
gtk_file_filter_add_pattern (filter, "*.sps");
gtk_file_filter_add_pattern (filter, "*.SPS");
- gtk_file_chooser_add_filter (GTK_FILE_CHOOSER(dialog), filter);
+ gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter);
filter = gtk_file_filter_new ();
gtk_file_filter_set_name (filter, _("All Files"));