void ChromeClient::runOpenPanel(Frame*, PassRefPtr<FileChooser> prpFileChooser) { RefPtr<FileChooser> chooser = prpFileChooser; GtkWidget* dialog = gtk_file_chooser_dialog_new(_("Upload File"), GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(platformPageClient()))), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), chooser->allowsMultipleFiles()); if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { if (gtk_file_chooser_get_select_multiple(GTK_FILE_CHOOSER(dialog))) { GSList* filenames = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(dialog)); Vector<String> names; for (GSList* item = filenames ; item ; item = item->next) { if (!item->data) continue; names.append(filenameToString(static_cast<char*>(item->data))); g_free(item->data); } g_slist_free(filenames); chooser->chooseFiles(names); } else { gchar* filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); if (filename) chooser->chooseFile(filenameToString(filename)); g_free(filename); } } gtk_widget_destroy(dialog); }
static String getExecutablePath() { CString executablePath = getCurrentExecutablePath(); if (!executablePath.isNull()) return directoryName(filenameToString(executablePath.data())); return String(); }
static bool stringByAdoptingFileSystemRepresentation(gchar* systemFilename, String& result) { if (!systemFilename) return false; result = filenameToString(systemFilename); g_free(systemFilename); return true; }
static String findWebKitProcess(const char* processName) { #if ENABLE(DEVELOPER_MODE) static const char* execDirectory = g_getenv("WEBKIT_EXEC_PATH"); if (execDirectory) { String processPath = pathByAppendingComponent(filenameToString(execDirectory), processName); if (fileExists(processPath)) return processPath; } static String executablePath = getExecutablePath(); if (!executablePath.isNull()) { String processPath = pathByAppendingComponent(executablePath, processName); if (fileExists(processPath)) return processPath; } #endif return pathByAppendingComponent(filenameToString(PKGLIBEXECDIR), processName); }
static String findWebKitProcess(const char* processName) { static const char* execDirectory = g_getenv("WEBKIT_EXEC_PATH"); if (execDirectory) { String processPath = pathByAppendingComponent(filenameToString(execDirectory), processName); if (fileExists(processPath)) return processPath; } static String executablePath = getExecutablePath(); if (!executablePath.isNull()) { String processPath = pathByAppendingComponent(executablePath, processName); if (fileExists(processPath)) return processPath; } // FIXME: Define and use LIBEXECDIR. return String(processName); }
void ChromeClient::runOpenPanel(Frame*, PassRefPtr<FileChooser> prpFileChooser) { // FIXME: Support multiple files. RefPtr<FileChooser> fileChooser = prpFileChooser; GtkWidget* dialog = gtk_file_chooser_dialog_new(_("Upload File"), GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(platformWindow()))), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { gchar* filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); if (filename) fileChooser->chooseFile(filenameToString(filename)); g_free(filename); } gtk_widget_destroy(dialog); }
Vector<String> listDirectory(const String& path, const String& filter) { Vector<String> entries; GUniquePtr<gchar> filename = unescapedFilename(path); if (!filename) return entries; GUniquePtr<GDir> dir(g_dir_open(filename.get(), 0, nullptr)); if (!dir) return entries; GUniquePtr<GPatternSpec> pspec(g_pattern_spec_new((filter.utf8()).data())); while (const char* name = g_dir_read_name(dir.get())) { if (!g_pattern_match_string(pspec.get(), name)) continue; GUniquePtr<gchar> entry(g_build_filename(filename.get(), name, nullptr)); entries.append(filenameToString(entry.get())); } return entries; }
String stringFromFileSystemRepresentation(const char* fileSystemRepresentation) { return filenameToString(fileSystemRepresentation); }
String homeDirectoryPath() { return filenameToString(g_get_home_dir()); }