/* Create a file selection dialog box window that belongs to a top-level window. */ GtkWidget * file_selection_new(const gchar *title, GtkWindow *parent, file_selection_action_t action) { GtkWidget *win; GtkFileChooserAction gtk_action; #ifdef _WIN32 char *u3devicedocumentpath; #endif const gchar *ok_button_text; switch (action) { case FILE_SELECTION_OPEN: gtk_action = GTK_FILE_CHOOSER_ACTION_OPEN; ok_button_text = GTK_STOCK_OPEN; break; case FILE_SELECTION_READ_BROWSE: gtk_action = GTK_FILE_CHOOSER_ACTION_OPEN; ok_button_text = GTK_STOCK_OK; break; case FILE_SELECTION_SAVE: gtk_action = GTK_FILE_CHOOSER_ACTION_SAVE; ok_button_text = WIRESHARK_STOCK_SAVE; break; case FILE_SELECTION_WRITE_BROWSE: gtk_action = GTK_FILE_CHOOSER_ACTION_SAVE; ok_button_text = GTK_STOCK_OK; break; case FILE_SELECTION_CREATE_FOLDER: gtk_action = GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER; ok_button_text = GTK_STOCK_OK; break; default: g_assert_not_reached(); gtk_action = (GtkFileChooserAction)-1; ok_button_text = NULL; break; } win = gtk_file_chooser_dialog_new(title, parent, gtk_action, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, ok_button_text, GTK_RESPONSE_ACCEPT, NULL); gtk_dialog_set_alternative_button_order(GTK_DIALOG(win), GTK_RESPONSE_ACCEPT, GTK_RESPONSE_CANCEL, -1); if (action == FILE_SELECTION_SAVE) gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(win), TRUE); /* If we've opened a file before, start out by showing the files in the directory in which that file resided. */ if (last_open_dir) file_selection_set_current_folder(win, last_open_dir); #ifdef _WIN32 else { u3devicedocumentpath = getenv_utf8("U3_DEVICE_DOCUMENT_PATH"); if(u3devicedocumentpath != NULL) file_selection_set_current_folder(win, u3devicedocumentpath); } #endif return win; }
/* Create a file selection dialog box window that belongs to Wireshark's main window. */ GtkWidget * file_selection_new(const gchar *title, file_selection_action_t action) { GtkWidget *win; GtkFileChooserAction gtk_action; #ifdef _WIN32 char *u3devicedocumentpath; #endif const gchar *ok_button_text; switch (action) { case FILE_SELECTION_OPEN: gtk_action = GTK_FILE_CHOOSER_ACTION_OPEN; ok_button_text = GTK_STOCK_OPEN; break; case FILE_SELECTION_READ_BROWSE: gtk_action = GTK_FILE_CHOOSER_ACTION_OPEN; ok_button_text = GTK_STOCK_OK; break; case FILE_SELECTION_SAVE: gtk_action = GTK_FILE_CHOOSER_ACTION_SAVE; ok_button_text = GTK_STOCK_SAVE; break; case FILE_SELECTION_WRITE_BROWSE: gtk_action = GTK_FILE_CHOOSER_ACTION_SAVE; ok_button_text = GTK_STOCK_OK; break; case FILE_SELECTION_CREATE_FOLDER: gtk_action = GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER; ok_button_text = GTK_STOCK_OK; break; default: g_assert_not_reached(); gtk_action = -1; ok_button_text = NULL; break; } win = gtk_file_chooser_dialog_new(title, GTK_WINDOW(top_level), gtk_action, #ifndef _WIN32 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, ok_button_text, GTK_RESPONSE_ACCEPT, #else ok_button_text, GTK_RESPONSE_ACCEPT, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, #endif NULL); /* If we've opened a file before, start out by showing the files in the directory in which that file resided. */ if (last_open_dir) file_selection_set_current_folder(win, last_open_dir); #ifdef _WIN32 else { u3devicedocumentpath = getenv_utf8("U3_DEVICE_DOCUMENT_PATH"); if(u3devicedocumentpath != NULL) file_selection_set_current_folder(win, u3devicedocumentpath); } #endif return win; }