gchar *
MainView::openFileDialog (const gchar *lastFolder)
{
GtkWidget *openDialog = gtk_file_chooser_dialog_new (_("Open PDF
File"),
GTK_WINDOW (m_MainWindow),
GTK_FILE_CHOOSER_ACTION_OPEN,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
NULL);
gtk_dialog_set_alternative_button_order (GTK_DIALOG (openDialog),
GTK_RESPONSE_ACCEPT, GTK_RESPONSE_CANCEL, -1);
// Select the last used folder as the initial folder, if any.
if ( NULL != lastFolder )
{
gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER
(openDialog),
lastFolder);
}
// Add the file type filters.
{
GtkFileFilter *pdfFilter = gtk_file_filter_new ();
gtk_file_filter_set_name (pdfFilter,
_("Portable Document Format (PDF)
Files"));
gtk_file_filter_add_mime_type (pdfFilter, "application/pdf");
gtk_file_filter_add_pattern (pdfFilter, "*.pdf");
gtk_file_filter_add_pattern (pdfFilter, "*.PDF");
gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (openDialog),
pdfFilter);
// Set this filter as the default.
gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (openDialog),
pdfFilter);
}
{
GtkFileFilter *anyFilter = gtk_file_filter_new ();
gtk_file_filter_set_name (anyFilter, _("All Files"));
gtk_file_filter_add_pattern (anyFilter, "*");
gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (openDialog),
anyFilter);
}
if ( GTK_RESPONSE_ACCEPT == gtk_dialog_run (GTK_DIALOG
(openDialog)) )
{
gchar *fileName = gtk_file_chooser_get_filename (
GTK_FILE_CHOOSER (openDialog));
gtk_widget_destroy (openDialog);
return fileName;
}
gtk_widget_destroy (openDialog);
return NULL;
}