Author: benny
Date: 2006-11-04 17:24:15 +0000 (Sat, 04 Nov 2006)
New Revision: 23669

Modified:
   mousepad/trunk/AUTHORS
   mousepad/trunk/ChangeLog
   mousepad/trunk/src/callback.c
   mousepad/trunk/src/callback.h
   mousepad/trunk/src/file.c
   mousepad/trunk/src/menu.c
Log:
2006-11-04      Benedikt Meurer <[EMAIL PROTECTED]>

        * AUTHORS, src/callback.{c,h}, src/file.c, src/menu.c: Merge the
          support for the new recently-used database, using the GtkRecent
          functionality, available in GTK+ 2.10 and later, instead of the
          planned libfrap module.




Modified: mousepad/trunk/AUTHORS
===================================================================
--- mousepad/trunk/AUTHORS      2006-11-04 16:22:40 UTC (rev 23668)
+++ mousepad/trunk/AUTHORS      2006-11-04 17:24:15 UTC (rev 23669)
@@ -1,2 +1,3 @@
 Erik Harrison <[EMAIL PROTECTED]>
+Benedikt Meurer <[EMAIL PROTECTED]>
 Tarot Osuji <[EMAIL PROTECTED]>

Modified: mousepad/trunk/ChangeLog
===================================================================
--- mousepad/trunk/ChangeLog    2006-11-04 16:22:40 UTC (rev 23668)
+++ mousepad/trunk/ChangeLog    2006-11-04 17:24:15 UTC (rev 23669)
@@ -1,5 +1,12 @@
 2006-11-04     Benedikt Meurer <[EMAIL PROTECTED]>
 
+       * AUTHORS, src/callback.{c,h}, src/file.c, src/menu.c: Merge the
+         support for the new recently-used database, using the GtkRecent
+         functionality, available in GTK+ 2.10 and later, instead of the
+         planned libfrap module.
+
+2006-11-04     Benedikt Meurer <[EMAIL PROTECTED]>
+
        * src/selector.c(create_file_chooser): Apply patch from Nick Schermer
          <[EMAIL PROTECTED]> to set default response in the open/save file 
dialogs
          so hitting enter opens/saves the file. Bug #2249.

Modified: mousepad/trunk/src/callback.c
===================================================================
--- mousepad/trunk/src/callback.c       2006-11-04 16:22:40 UTC (rev 23668)
+++ mousepad/trunk/src/callback.c       2006-11-04 17:24:15 UTC (rev 23669)
@@ -2,6 +2,7 @@
  *  callback.c
  *  This file is part of Mousepad
  *
+ *  Copyright (C) 2006 Benedikt Meurer <[EMAIL PROTECTED]>
  *  Copyright (C) 2005 Erik Harrison
  *  Copyright (C) 2004 Tarot Osuji
  *
@@ -110,6 +111,34 @@
        }
 }
 
+#if GTK_CHECK_VERSION(2,10,0)
+void cb_file_open_recent(StructData *sd, GtkRecentChooser *chooser)
+{
+  FileInfo *fi;
+  gchar *uri;
+
+  uri = gtk_recent_chooser_get_current_uri(chooser);
+  if (G_LIKELY(uri != NULL)) {
+    fi = g_new0(FileInfo, 1);
+    fi->lineend = sd->fi->lineend;
+    fi->charset = g_strdup(sd->fi->charset);
+    fi->manual_charset = g_strdup(sd->fi->manual_charset);
+    fi->filename = g_filename_from_uri(uri, NULL, NULL);
+    if (G_LIKELY(fi->filename != NULL)) {
+                       if (file_open_real(sd->mainwin->textview, fi)) {
+                               g_free(fi);
+                       } else {
+                               g_free(sd->fi);
+                               sd->fi = fi;
+                               set_main_window_title(sd);
+                               undo_init(sd->mainwin->textview, 
sd->mainwin->textbuffer, sd->mainwin->menubar);
+                       }
+    }
+    g_free(uri);
+  }
+}
+#endif
+
 gint cb_file_save(StructData *sd)
 {
        if (sd->fi->filename == NULL)

Modified: mousepad/trunk/src/callback.h
===================================================================
--- mousepad/trunk/src/callback.h       2006-11-04 16:22:40 UTC (rev 23668)
+++ mousepad/trunk/src/callback.h       2006-11-04 17:24:15 UTC (rev 23669)
@@ -2,6 +2,7 @@
  *  callback.h
  *  This file is part of Mousepad
  *
+ *  Copyright (C) 2006 Benedikt Meurer <[EMAIL PROTECTED]>
  *  Copyright (C) 2005 Erik Harrison
  *  Copyright (C) 2004 Tarot Osuji
  *
@@ -26,6 +27,9 @@
 void cb_file_new(StructData *sd);
 void cb_file_new_window(StructData *sd);
 void cb_file_open(StructData *sd);
+#if GTK_CHECK_VERSION(2,10,0)
+void cb_file_open_recent(StructData *sd, GtkRecentChooser *chooser);
+#endif
 gint cb_file_save(StructData *sd);
 gint cb_file_save_as(StructData *sd);
 gint cb_file_print(StructData *sd);

Modified: mousepad/trunk/src/file.c
===================================================================
--- mousepad/trunk/src/file.c   2006-11-04 16:22:40 UTC (rev 23668)
+++ mousepad/trunk/src/file.c   2006-11-04 17:24:15 UTC (rev 23669)
@@ -1,7 +1,8 @@
 /*
  *  file.c
- *  This file is part of Leafpad
+ *  This file is part of Mousepad
  *
+ *  Copyright (C) 2006 Benedikt Meurer <[EMAIL PROTECTED]>
  *  Copyright (C) 2004 Tarot Osuji
  *
  *  This program is free software; you can redistribute it and/or modify
@@ -36,6 +37,10 @@
        const gchar *charset;
        gchar *str = NULL;
        GtkTextIter iter;
+#if GTK_CHECK_VERSION(2,10,0)
+  GtkRecentData recent_data;
+  gchar *uri;
+#endif
        
        GtkTextBuffer *textbuffer = 
gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview));
        
@@ -115,6 +120,25 @@
        g_free(str);
        undo_unblock_signal(textbuffer);
        
+#if GTK_CHECK_VERSION(2,10,0)
+  /* generate the recently-used data */
+  recent_data.display_name = NULL;
+  recent_data.description = NULL;
+  recent_data.mime_type = "text/plain";
+  recent_data.app_name = "Mousepad Text Editor";
+  recent_data.app_exec = "mousepad %f";
+  recent_data.groups = NULL;
+  recent_data.is_private = FALSE;
+
+  /* add the file to the recently-used database */
+  uri = g_filename_to_uri(fi->filename, NULL, NULL);
+  if (G_LIKELY(uri != NULL))
+    {
+      gtk_recent_manager_add_full(gtk_recent_manager_get_default(), uri, 
&recent_data);
+      g_free(uri);
+    }
+#endif
+
        return 0;
 }
 

Modified: mousepad/trunk/src/menu.c
===================================================================
--- mousepad/trunk/src/menu.c   2006-11-04 16:22:40 UTC (rev 23668)
+++ mousepad/trunk/src/menu.c   2006-11-04 17:24:15 UTC (rev 23669)
@@ -2,6 +2,7 @@
  *  menu.c
  *  This file is part of Mousepad
  *
+ *  Copyright (C) 2006 Benedikt Meurer <[EMAIL PROTECTED]>
  *  Copyright (C) 2005 Erik Harrison
  *  Copyright (C) 2004 Tarot Osuji
  *
@@ -67,10 +68,18 @@
 #endif
        { N_("/File/_Open..."), "<control>O",
                G_CALLBACK(cb_file_open), 0, "<StockItem>", GTK_STOCK_OPEN },
+#if GTK_CHECK_VERSION(2,10,0)
+  { N_("/File/Open _Recent"), NULL,
+    NULL, 0, "<Item>", NULL, },
+#endif
+       { "/File/---", NULL,
+               NULL, 0, "<Separator>" },
        { N_("/File/_Save"), "<control>S",
                G_CALLBACK(cb_file_save), 0, "<StockItem>", GTK_STOCK_SAVE },
        { N_("/File/Save _As..."), NULL,
                G_CALLBACK(cb_file_save_as), 0, "<StockItem>", 
GTK_STOCK_SAVE_AS },
+       { "/File/---", NULL,
+               NULL, 0, "<Separator>" },
        { N_("/File/_Print..."), "<control>P",
                G_CALLBACK(cb_file_print), 0, "<StockItem>", GTK_STOCK_PRINT },
        { "/File/---", NULL,
@@ -135,6 +144,11 @@
 {
        GtkAccelGroup *accel_group;
        GtkItemFactory *ifactory;
+#if GTK_CHECK_VERSION(2,10,0)
+  GtkRecentFilter *recent_filter;
+  GtkWidget *recent_menu_item;
+  GtkWidget *recent_menu;
+#endif
        
        accel_group = gtk_accel_group_new();
        ifactory = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>", 
accel_group);
@@ -186,6 +200,21 @@
                gtk_item_factory_get_widget(ifactory, "<main>/Options/Auto 
Indent"),
                FALSE);
        gtk_item_factory_delete_item(ifactory, "/File/New Window"); */
+
+#if GTK_CHECK_VERSION(2,10,0)
+  /* add the recent chooser menu */
+  recent_menu = gtk_recent_chooser_menu_new();
+  recent_filter = gtk_recent_filter_new();
+  gtk_recent_filter_add_application(recent_filter, "Mousepad Text Editor");
+  gtk_recent_chooser_add_filter(GTK_RECENT_CHOOSER(recent_menu), 
recent_filter);
+  gtk_recent_chooser_set_local_only(GTK_RECENT_CHOOSER(recent_menu), TRUE);
+  gtk_recent_chooser_set_limit(GTK_RECENT_CHOOSER(recent_menu), 10);
+  gtk_recent_chooser_set_show_tips(GTK_RECENT_CHOOSER(recent_menu), TRUE);
+  g_signal_connect_swapped(G_OBJECT(recent_menu), "item-activated", 
G_CALLBACK(cb_file_open_recent), sd);
+
+  recent_menu_item = gtk_item_factory_get_widget(ifactory, "/File/Open 
Recent");
+  gtk_menu_item_set_submenu(GTK_MENU_ITEM(recent_menu_item), recent_menu);
+#endif
        
        return gtk_item_factory_get_widget(ifactory, "<main>");
 }

_______________________________________________
Xfce4-commits mailing list
Xfce4-commits@xfce.org
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to