|
- /*
- ==============================================================================
-
- 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.
-
- ==============================================================================
- */
-
- 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";
-
- MemoryOutputStream result;
- int status = -1;
- FILE* stream = popen (command.toUTF8(), "r");
-
- if (stream != 0)
- {
- for (;;)
- {
- char buffer [1024];
- const int bytesRead = fread (buffer, 1, sizeof (buffer), stream);
-
- if (bytesRead <= 0)
- break;
-
- result.write (buffer, bytesRead);
- }
-
- status = pclose (stream);
- }
-
- if (status == 0)
- {
- StringArray tokens;
-
- if (selectMultipleFiles)
- tokens.addTokens (result.toUTF8(), separator, String::empty);
- else
- tokens.add (result.toUTF8());
-
- for (int i = 0; i < tokens.size(); i++)
- results.add (File (tokens[i]));
-
- return;
- }
-
- //xxx ain't got one!
- jassertfalse;
- }
|