gint check_text_modification(void) { gchar *basename, *str; gint res; if (gtk_text_buffer_get_modified(pub->mw->buffer)) { basename = get_file_basename(pub->fi->filename, FALSE); str = g_strdup_printf(_("Save changes to '%s'?"), basename); g_free(basename); res = run_dialog_message_question(pub->mw->window, str); g_free(str); switch (res) { case GTK_RESPONSE_NO: return 0; case GTK_RESPONSE_YES: if (!on_file_save()) return 0; } return -1; } return 0; }
static void cb_key_press_event(GtkWidget *view, GdkEventKey *event) { //g_print("key-release-event: 0x%X\n", event->keyval); if (event->keyval < 0x1000 || event->keyval == GDK_Escape) { switch (event->keyval) { case GDK_f: case GDK_F: case GDK_v: case GDK_V: if (event->state & GDK_CONTROL_MASK) on_file_open(); else gdk_beep(); break; case GDK_d: case GDK_D: if (event->state & GDK_CONTROL_MASK) gdk_beep(); else on_file_open(); break; case GDK_s: case GDK_S: if (GTK_WIDGET_IS_SENSITIVE(gtk_item_factory_get_widget( gtk_item_factory_from_widget(pub->mw->menubar), "/File/Save") )) on_file_save(); break; case GDK_w: case GDK_W: if (event->state & GDK_CONTROL_MASK) on_file_save_as(); else gdk_beep(); break; case GDK_k: case GDK_K: if (event->state & GDK_CONTROL_MASK) gdk_beep(); else on_file_close(); break; case GDK_c: case GDK_C: if (event->state & GDK_CONTROL_MASK) on_file_quit(); else gdk_beep(); break; case GDK_u: case GDK_U: if (event->state & GDK_CONTROL_MASK) gdk_beep(); else on_edit_undo(); break; case GDK_h: case GDK_H: if (event->state & GDK_CONTROL_MASK) gdk_beep(); else on_edit_select_all(); break; default: gdk_beep(); } gtk_main_quit(); } }