|
- /*
- ==============================================================================
-
- This file is part of the JUCE library - "Jules' Utility Class Extensions"
- Copyright 2004-11 by Raw Material Software Ltd.
-
- ------------------------------------------------------------------------------
-
- JUCE can be redistributed and/or modified under the terms of the GNU General
- Public License (Version 2), as published by the Free Software Foundation.
- A copy of the license is included in the JUCE distribution, or can be found
- online at www.gnu.org/licenses.
-
- JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
- A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
- ------------------------------------------------------------------------------
-
- To release a closed-source product which uses JUCE, commercial licenses are
- available: visit www.rawmaterialsoftware.com/juce for more information.
-
- ==============================================================================
- */
-
- bool FileChooser::isPlatformDialogAvailable()
- {
- ChildProcess child;
- const bool ok = child.start ("which zenity")
- && child.readAllProcessOutput().trim().isNotEmpty();
-
- child.waitForProcessToFinish (60 * 1000);
- return ok;
- }
-
- void FileChooser::showPlatformDialog (Array<File>& results,
- const String& title,
- const File& file,
- const String& filters,
- bool isDirectory,
- bool selectsFiles,
- bool isSave,
- bool warnAboutOverwritingExistingFiles,
- bool selectMultipleFiles,
- FilePreviewComponent* previewComponent)
- {
- const String separator (":");
- String command ("zenity --file-selection");
-
- if (title.isNotEmpty()) command << " --title=\"" << title << "\"";
- if (file != File::nonexistent) command << " --filename=\"" << file.getFullPathName () << "\"";
- if (isDirectory) command << " --directory";
- if (isSave) command << " --save";
- if (selectMultipleFiles) command << " --multiple --separator=" << separator;
-
- command << " 2>&1";
-
- ChildProcess child;
- if (child.start (command))
- {
- const String result (child.readAllProcessOutput());
- StringArray tokens;
-
- if (selectMultipleFiles)
- tokens.addTokens (result, separator, "\"");
- else
- tokens.add (result);
-
- for (int i = 0; i < tokens.size(); i++)
- results.add (File (tokens[i]));
-
- child.waitForProcessToFinish (60 * 1000);
- }
- }
|