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