Hi,
I am trying to add "recent files" feature to a GTK project. I get the file name correctly but afterwards things do not go on as expected. It the following code , I am working to get first file name so that later I take more and show it File menu , Recent opened files. See:
Code:
// Global variables for making implementation easy for now:
GtkRecentManager recent_files;
GList gl[21];
Code:
// in main() I have:
/* set up GTK */
gtk_init (&argc, &argv);
#include "gtk/xboard.h"
recent_files=*gtk_recent_manager_new();
gtk_recent_manager_set_limit(&recent_files,9);
Code:
// After opening a file with GTK_FILE_CHOOSER :
// some code
filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
// some code
gboolean added= gtk_recent_manager_add_item (&recent_files, filename); // file uri
added ? DisplayMessage("Recent ADDED","") : DisplayError("Recent Not Added",1);
show_message_dialog(filename); // This shows correct filename
show_message_dialog("XB1");
gl[0]=*gtk_recent_manager_get_items(&recent_files);
show_message_dialog("XB2");
GtkRecentInfo *info=&gl[0]; // cast (GtkRecentInfo *)
if(info == NULL)
show_message_dialog("NULL info");
const gchar * recent_file_name=gtk_recent_info_get_uri(info);
show_message_dialog(recent_file_name); // shows garbage
DisplayNote("Load finished");
gtk_recent_info_unref (info);
// some code
Code:
// Show dialog function:
void show_message_dialog(const char * const message)
{
GtkWidget* dialog = gtk_message_dialog_new (mainwindow,
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_CLOSE,
"Message: %s",
message);
/* Destroy the dialog when the user responds to it (e.g. clicks a button) */
g_signal_connect_swapped (dialog, "response",
G_CALLBACK (gtk_widget_destroy),
dialog);
gtk_widget_show_all (dialog);
return;
}
Can you help me overcome this ? A GTK 2 link is here:
GtkRecentManager