static gchar * show_dialog(GtkWindow* parent, GtkFileChooserAction action) { GtkWidget * dialog; GtkFileFilter * filter; gchar * uri = NULL; filter = gtk_file_filter_new(); gtk_file_filter_add_pattern(filter, "*.snsg"); dialog = hildon_file_chooser_dialog_new_with_properties(GTK_WINDOW(parent), "action", action, "local-only", FALSE, "filter", filter, NULL); hildon_file_chooser_dialog_set_extension(HILDON_FILE_CHOOSER_DIALOG(dialog), "snsg"); #if defined(MAEMO) { gchar * games_dir = g_strdup_printf("%s/.games", g_getenv("MYDOCSDIR")); gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), games_dir); g_free(games_dir); } #endif gtk_widget_show_all(GTK_WIDGET(dialog)); if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK) { uri = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(dialog)); } gtk_widget_destroy(dialog); return uri; }
/** * Callback to select a certificate */ void select_cert(HildonButton *button, gpointer user_data) { GtkWidget *selector = hildon_file_chooser_dialog_new (GTK_WINDOW (user_data), GTK_FILE_CHOOSER_ACTION_OPEN); GtkWidget *nocert = hildon_button_new (HILDON_SIZE_FINGER_HEIGHT | HILDON_SIZE_AUTO_WIDTH, HILDON_BUTTON_ARRANGEMENT_VERTICAL); hildon_button_set_text (HILDON_BUTTON (nocert), "No certificate", "Use system-wide CA certificates"); hildon_button_set_alignment (HILDON_BUTTON (nocert), 0, 0.5, 1, 1); g_signal_connect (nocert, "clicked", G_CALLBACK (no_certificate), selector); hildon_file_chooser_dialog_add_extra (HILDON_FILE_CHOOSER_DIALOG (selector), nocert); gtk_widget_show_all (selector); switch (gtk_dialog_run (GTK_DIALOG (selector))) { case GTK_RESPONSE_OK: { gchar *file = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (selector)); hildon_button_set_value (button, file); g_free(file); break; } case GTK_RESPONSE_REJECT: { hildon_button_set_value (button, "None"); break; } default: break; } gtk_widget_destroy (selector); }
ZLGtkOpenFileDialog::ZLGtkOpenFileDialog(const std::string &title, const std::string &directoryPath, const std::string &filePath, const Filter &filter) { myDialog = HILDON_FILE_CHOOSER_DIALOG(hildon_file_chooser_dialog_new( 0, GTK_FILE_CHOOSER_ACTION_OPEN )); /* myDialog = GTK_DIALOG(gtk_file_chooser_dialog_new( title.c_str(), 0, GTK_FILE_CHOOSER_ACTION_OPEN, gtkString(ZLDialogManager::buttonName(ZLDialogManager::CANCEL_BUTTON)).c_str(), GTK_RESPONSE_CANCEL, gtkString(ZLDialogManager::buttonName(ZLDialogManager::OK_BUTTON)).c_str(), GTK_RESPONSE_ACCEPT, 0 )); */ GtkFileChooser *chooser = GTK_FILE_CHOOSER(myDialog); gtk_file_chooser_set_current_folder(chooser, directoryPath.c_str()); gtk_file_chooser_set_filename(chooser, filePath.c_str()); GtkFileFilter *gtkFilter = gtk_file_filter_new(); gtk_file_filter_add_custom(gtkFilter, (GtkFileFilterFlags)(GTK_FILE_FILTER_FILENAME | GTK_FILE_FILTER_MIME_TYPE), filterHandler, (void*)&filter, 0); gtk_file_chooser_set_filter(chooser, gtkFilter); }