You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/app-text/xournal/files/xournal-0.4.5_p20111022-gtk...

348 lines
11 KiB

https://sourceforge.net/tracker/?func=detail&aid=3249971&group_id=163434&atid=827735
When using GtkRecent for the management of recently used files, Xournal's recently used
files also appear in the shell. That's very convenient for the new document-centric shells
such as Gnome Shell and Unity.
Timo Kluck ( tkluck ) - 2011-03-27 10:40:08 PDT
=== modified file 'src/main.c'
--- src/main.c 2011-03-10 18:14:21 +0000
+++ src/main.c 2011-03-27 16:32:52 +0000
@@ -334,7 +334,6 @@
if (bgpdf.status != STATUS_NOT_INIT) shutdown_bgpdf();
- save_mru_list();
if (ui.auto_save_prefs) save_config_to_file();
return 0;
=== modified file 'src/xo-callbacks.c'
--- src/xo-callbacks.c 2011-03-10 18:14:21 +0000
+++ src/xo-callbacks.c 2011-03-27 16:32:52 +0000
@@ -3101,32 +3101,36 @@
void
-on_mru_activate (GtkMenuItem *menuitem,
+on_mru_activate (GtkRecentChooser *recentChooser,
gpointer user_data)
{
- int which;
gboolean success;
+ gchar *uri, *name;
GtkWidget *dialog;
end_text();
if (!ok_to_close()) return; // user aborted on save confirmation
- for (which = 0 ; which < MRU_SIZE; which++) {
- if (ui.mrumenu[which] == GTK_WIDGET(menuitem)) break;
- }
- if (which == MRU_SIZE || ui.mru[which] == NULL) return; // not found...
-
+ uri = gtk_recent_chooser_get_current_uri (recentChooser);
+ name = g_filename_from_uri (uri, NULL, NULL);
set_cursor_busy(TRUE);
- success = open_journal(ui.mru[which]);
+ success = open_journal(name);
set_cursor_busy(FALSE);
- if (success) return;
+ if (success) {
+ g_free(uri);
+ g_free(name);
+ return;
+ }
/* open failed */
dialog = gtk_message_dialog_new(GTK_WINDOW (winMain), GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Error opening file '%s'"), ui.mru[which]);
+ GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Error opening file '%s'"), name);
gtk_dialog_run(GTK_DIALOG(dialog));
gtk_widget_destroy(dialog);
- delete_mru_entry(which);
+
+ delete_mru_entry(name);
+ g_free(uri);
+ g_free(name);
}
=== modified file 'src/xo-callbacks.h'
--- src/xo-callbacks.h 2011-03-10 18:14:21 +0000
+++ src/xo-callbacks.h 2011-03-27 16:32:52 +0000
@@ -481,7 +481,7 @@
gpointer user_data);
void
-on_mru_activate (GtkMenuItem *menuitem,
+on_mru_activate (GtkRecentChooser *recentChooser,
gpointer user_data);
void
=== modified file 'src/xo-file.c'
--- src/xo-file.c 2011-03-10 18:14:21 +0000
+++ src/xo-file.c 2011-03-27 17:09:20 +0000
@@ -1211,99 +1211,53 @@
}
}
-// initialize the recent files list
+// initialize GtkRecentManager. Also backwards compatibility: import recent files into GtkRecentManager
void init_mru(void)
{
- int i;
+ GtkRecentFilter *recentFilter = gtk_recent_filter_new ();
+ gtk_recent_filter_add_application ( recentFilter, "xournal");
+ gtk_recent_chooser_add_filter (GTK_RECENT_CHOOSER (GET_COMPONENT("fileRecentFiles_menu")), recentFilter);
+
gsize lfptr;
- char s[5];
GIOChannel *f;
- gchar *str;
+ gchar *str, *uri;
GIOStatus status;
+ GtkRecentManager *recentManager = gtk_recent_manager_get_default ();
- g_strlcpy(s, "mru0", 5);
- for (s[3]='0', i=0; i<MRU_SIZE; s[3]++, i++) {
- ui.mrumenu[i] = GET_COMPONENT(s);
- ui.mru[i] = NULL;
- }
f = g_io_channel_new_file(ui.mrufile, "r", NULL);
if (f) status = G_IO_STATUS_NORMAL;
else status = G_IO_STATUS_ERROR;
- i = 0;
- while (status == G_IO_STATUS_NORMAL && i<MRU_SIZE) {
+ while (status == G_IO_STATUS_NORMAL) {
lfptr = 0;
status = g_io_channel_read_line(f, &str, NULL, &lfptr, NULL);
if (status == G_IO_STATUS_NORMAL && lfptr>0) {
str[lfptr] = 0;
- ui.mru[i] = str;
- i++;
+ uri = g_filename_to_uri (str, NULL, NULL);
+ gtk_recent_manager_add_item (recentManager, uri);
+ g_free(uri);
+ g_free(str);
}
}
if (f) {
g_io_channel_shutdown(f, FALSE, NULL);
g_io_channel_unref(f);
}
- update_mru_menu();
-}
-
-void update_mru_menu(void)
-{
- int i;
- gboolean anyone = FALSE;
- gchar *tmp;
- for (i=0; i<MRU_SIZE; i++) {
- if (ui.mru[i]!=NULL) {
- tmp = g_strdup_printf("_%d %s", i+1,
- g_strjoinv("__", g_strsplit_set(g_basename(ui.mru[i]),"_",-1)));
- gtk_label_set_text_with_mnemonic(GTK_LABEL(gtk_bin_get_child(GTK_BIN(ui.mrumenu[i]))),
- tmp);
- g_free(tmp);
- gtk_widget_show(ui.mrumenu[i]);
- anyone = TRUE;
- }
- else gtk_widget_hide(ui.mrumenu[i]);
- }
- gtk_widget_set_sensitive(GET_COMPONENT("fileRecentFiles"), anyone);
+ g_unlink (ui.mrufile);
}
void new_mru_entry(char *name)
{
- int i, j;
-
- for (i=0;i<MRU_SIZE;i++)
- if (ui.mru[i]!=NULL && !strcmp(ui.mru[i], name)) {
- g_free(ui.mru[i]);
- for (j=i+1; j<MRU_SIZE; j++) ui.mru[j-1] = ui.mru[j];
- ui.mru[MRU_SIZE-1]=NULL;
- }
- if (ui.mru[MRU_SIZE-1]!=NULL) g_free(ui.mru[MRU_SIZE-1]);
- for (j=MRU_SIZE-1; j>=1; j--) ui.mru[j] = ui.mru[j-1];
- ui.mru[0] = g_strdup(name);
- update_mru_menu();
-}
-
-void delete_mru_entry(int which)
-{
- int i;
-
- if (ui.mru[which]!=NULL) g_free(ui.mru[which]);
- for (i=which+1;i<MRU_SIZE;i++)
- ui.mru[i-1] = ui.mru[i];
- ui.mru[MRU_SIZE-1] = NULL;
- update_mru_menu();
-}
-
-void save_mru_list(void)
-{
- FILE *f;
- int i;
-
- f = fopen(ui.mrufile, "w");
- if (f==NULL) return;
- for (i=0; i<MRU_SIZE; i++)
- if (ui.mru[i]!=NULL) fprintf(f, "%s\n", ui.mru[i]);
- fclose(f);
+ gchar *uri = g_filename_to_uri (name, NULL, NULL);
+ gtk_recent_manager_add_item (gtk_recent_manager_get_default(), uri);
+ g_free(uri);
+}
+
+void delete_mru_entry(char *name)
+{
+ gchar *uri = g_filename_to_uri(name, NULL, NULL);
+ gtk_recent_manager_remove_item(gtk_recent_manager_get_default(), uri, NULL);
+ g_free(uri);
}
void init_config_default(void)
=== modified file 'src/xo-file.h'
--- src/xo-file.h 2011-03-10 18:14:21 +0000
+++ src/xo-file.h 2011-03-27 16:32:52 +0000
@@ -28,10 +28,8 @@
void bgpdf_update_bg(int pageno, struct BgPdfPage *bgpg);
void init_mru(void);
-void update_mru_menu(void);
void new_mru_entry(char *name);
-void delete_mru_entry(int which);
-void save_mru_list(void);
+void delete_mru_entry(char *name);
void init_config_default(void);
void load_config_from_file(void);
=== modified file 'src/xo-interface.c'
--- src/xo-interface.c 2011-03-10 18:14:21 +0000
+++ src/xo-interface.c 2011-03-27 17:09:20 +0000
@@ -43,14 +43,6 @@
GtkWidget *separator1;
GtkWidget *fileRecentFiles;
GtkWidget *fileRecentFiles_menu;
- GtkWidget *mru0;
- GtkWidget *mru1;
- GtkWidget *mru2;
- GtkWidget *mru3;
- GtkWidget *mru4;
- GtkWidget *mru5;
- GtkWidget *mru6;
- GtkWidget *mru7;
GtkWidget *separator22;
GtkWidget *filePrintOptions;
GtkWidget *image624;
@@ -397,41 +389,9 @@
gtk_widget_show (fileRecentFiles);
gtk_container_add (GTK_CONTAINER (menuFile_menu), fileRecentFiles);
- fileRecentFiles_menu = gtk_menu_new ();
+ fileRecentFiles_menu = gtk_recent_chooser_menu_new_for_manager (gtk_recent_manager_get_default ());
gtk_menu_item_set_submenu (GTK_MENU_ITEM (fileRecentFiles), fileRecentFiles_menu);
-
- mru0 = gtk_menu_item_new_with_mnemonic (_("0"));
- gtk_widget_show (mru0);
- gtk_container_add (GTK_CONTAINER (fileRecentFiles_menu), mru0);
-
- mru1 = gtk_menu_item_new_with_mnemonic (_("1"));
- gtk_widget_show (mru1);
- gtk_container_add (GTK_CONTAINER (fileRecentFiles_menu), mru1);
-
- mru2 = gtk_menu_item_new_with_mnemonic (_("2"));
- gtk_widget_show (mru2);
- gtk_container_add (GTK_CONTAINER (fileRecentFiles_menu), mru2);
-
- mru3 = gtk_menu_item_new_with_mnemonic (_("3"));
- gtk_widget_show (mru3);
- gtk_container_add (GTK_CONTAINER (fileRecentFiles_menu), mru3);
-
- mru4 = gtk_menu_item_new_with_mnemonic (_("4"));
- gtk_widget_show (mru4);
- gtk_container_add (GTK_CONTAINER (fileRecentFiles_menu), mru4);
-
- mru5 = gtk_menu_item_new_with_mnemonic (_("5"));
- gtk_widget_show (mru5);
- gtk_container_add (GTK_CONTAINER (fileRecentFiles_menu), mru5);
-
- mru6 = gtk_menu_item_new_with_mnemonic (_("6"));
- gtk_widget_show (mru6);
- gtk_container_add (GTK_CONTAINER (fileRecentFiles_menu), mru6);
-
- mru7 = gtk_menu_item_new_with_mnemonic (_("7"));
- gtk_widget_show (mru7);
- gtk_container_add (GTK_CONTAINER (fileRecentFiles_menu), mru7);
-
+
separator22 = gtk_separator_menu_item_new ();
gtk_widget_show (separator22);
gtk_container_add (GTK_CONTAINER (menuFile_menu), separator22);
@@ -1967,28 +1927,7 @@
g_signal_connect ((gpointer) fileSaveAs, "activate",
G_CALLBACK (on_fileSaveAs_activate),
NULL);
- g_signal_connect ((gpointer) mru0, "activate",
- G_CALLBACK (on_mru_activate),
- NULL);
- g_signal_connect ((gpointer) mru1, "activate",
- G_CALLBACK (on_mru_activate),
- NULL);
- g_signal_connect ((gpointer) mru2, "activate",
- G_CALLBACK (on_mru_activate),
- NULL);
- g_signal_connect ((gpointer) mru3, "activate",
- G_CALLBACK (on_mru_activate),
- NULL);
- g_signal_connect ((gpointer) mru4, "activate",
- G_CALLBACK (on_mru_activate),
- NULL);
- g_signal_connect ((gpointer) mru5, "activate",
- G_CALLBACK (on_mru_activate),
- NULL);
- g_signal_connect ((gpointer) mru6, "activate",
- G_CALLBACK (on_mru_activate),
- NULL);
- g_signal_connect ((gpointer) mru7, "activate",
+ g_signal_connect ((gpointer) fileRecentFiles_menu, "item-activated",
G_CALLBACK (on_mru_activate),
NULL);
g_signal_connect ((gpointer) filePrintOptions, "activate",
@@ -2520,14 +2459,6 @@
GLADE_HOOKUP_OBJECT (winMain, separator1, "separator1");
GLADE_HOOKUP_OBJECT (winMain, fileRecentFiles, "fileRecentFiles");
GLADE_HOOKUP_OBJECT (winMain, fileRecentFiles_menu, "fileRecentFiles_menu");
- GLADE_HOOKUP_OBJECT (winMain, mru0, "mru0");
- GLADE_HOOKUP_OBJECT (winMain, mru1, "mru1");
- GLADE_HOOKUP_OBJECT (winMain, mru2, "mru2");
- GLADE_HOOKUP_OBJECT (winMain, mru3, "mru3");
- GLADE_HOOKUP_OBJECT (winMain, mru4, "mru4");
- GLADE_HOOKUP_OBJECT (winMain, mru5, "mru5");
- GLADE_HOOKUP_OBJECT (winMain, mru6, "mru6");
- GLADE_HOOKUP_OBJECT (winMain, mru7, "mru7");
GLADE_HOOKUP_OBJECT (winMain, separator22, "separator22");
GLADE_HOOKUP_OBJECT (winMain, filePrintOptions, "filePrintOptions");
GLADE_HOOKUP_OBJECT (winMain, image624, "image624");
=== modified file 'src/xournal.h'
--- src/xournal.h 2011-03-10 18:14:21 +0000
+++ src/xournal.h 2011-03-27 16:32:52 +0000
@@ -257,8 +257,6 @@
GdkCursor *cursor;
gboolean progressive_bg; // update PDF bg's one at a time
char *mrufile, *configfile; // file names for MRU & config
- char *mru[MRU_SIZE]; // MRU data
- GtkWidget *mrumenu[MRU_SIZE];
gboolean bg_apply_all_pages;
int window_default_width, window_default_height, scrollbar_step_increment;
gboolean print_ruling; // print the paper ruling ?