Merge pull request #8054 from ctrlaltdavid/20957

fix model export continued
This commit is contained in:
Brad Hefta-Gaub 2016-06-14 10:57:25 -07:00 committed by GitHub
commit 1c391e626f
5 changed files with 49 additions and 6 deletions

View file

@ -82,6 +82,12 @@ ModalWindow {
// Clear selection when click on external frame.
frameClicked.connect(function() { d.clearSelection(); });
if (selectDirectory) {
currentSelection.text = d.capitalizeDrive(helper.urlToPath(initialFolder));
}
fileTableView.forceActiveFocus();
}
Item {
@ -703,7 +709,6 @@ ModalWindow {
if (!helper.urlIsWritable(selection)) {
desktop.messageBox({
icon: OriginalDialogs.StandardIcon.Warning,
buttons: OriginalDialogs.StandardButton.Yes | OriginalDialogs.StandardButton.No,
text: "Unable to write to location " + selection
})
return;

View file

@ -65,7 +65,10 @@ Preference {
verticalCenter: dataTextField.verticalCenter
}
onClicked: {
var browser = fileBrowserBuilder.createObject(desktop, { selectDirectory: true, folder: fileDialogHelper.pathToUrl(preference.value) });
var browser = fileBrowserBuilder.createObject(desktop, {
selectDirectory: true,
dir: fileDialogHelper.pathToUrl(preference.value)
});
browser.selectedFile.connect(function(fileUrl){
console.log(fileUrl);
dataTextField.text = fileDialogHelper.urlToPath(fileUrl);

View file

@ -14,6 +14,8 @@
#include <QMessageBox>
#include <QScriptValue>
#include <SettingHandle.h>
#include "Application.h"
#include "DomainHandler.h"
#include "MainWindow.h"
@ -23,6 +25,10 @@
#include "WindowScriptingInterface.h"
static const QString DESKTOP_LOCATION = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);
static const QString LAST_BROWSE_LOCATION_SETTING = "LastBrowseLocation";
WindowScriptingInterface::WindowScriptingInterface() {
const DomainHandler& domainHandler = DependencyManager::get<NodeList>()->getDomainHandler();
connect(&domainHandler, &DomainHandler::connectedToDomain, this, &WindowScriptingInterface::domainChanged);
@ -101,6 +107,14 @@ QString fixupPathForMac(const QString& directory) {
return path;
}
QString WindowScriptingInterface::getPreviousBrowseLocation() const {
return Setting::Handle<QString>(LAST_BROWSE_LOCATION_SETTING, DESKTOP_LOCATION).get();
}
void WindowScriptingInterface::setPreviousBrowseLocation(const QString& location) {
Setting::Handle<QVariant>(LAST_BROWSE_LOCATION_SETTING).set(location);
}
/// Display an open file dialog. If `directory` is an invalid file or directory the browser will start at the current
/// working directory.
/// \param const QString& title title of the window
@ -108,8 +122,17 @@ QString fixupPathForMac(const QString& directory) {
/// \param const QString& nameFilter filter to filter filenames by - see `QFileDialog`
/// \return QScriptValue file path as a string if one was selected, otherwise `QScriptValue::NullValue`
QScriptValue WindowScriptingInterface::browse(const QString& title, const QString& directory, const QString& nameFilter) {
QString path = fixupPathForMac(directory);
QString path = directory;
if (path.isEmpty()) {
path = getPreviousBrowseLocation();
}
#ifndef Q_OS_WIN
path = fixupPathForMac(directory);
#endif
QString result = OffscreenUi::getOpenFileName(nullptr, title, path, nameFilter);
if (!result.isEmpty()) {
setPreviousBrowseLocation(QFileInfo(result).absolutePath());
}
return result.isEmpty() ? QScriptValue::NullValue : QScriptValue(result);
}
@ -120,8 +143,17 @@ QScriptValue WindowScriptingInterface::browse(const QString& title, const QStrin
/// \param const QString& nameFilter filter to filter filenames by - see `QFileDialog`
/// \return QScriptValue file path as a string if one was selected, otherwise `QScriptValue::NullValue`
QScriptValue WindowScriptingInterface::save(const QString& title, const QString& directory, const QString& nameFilter) {
QString path = fixupPathForMac(directory);
QString path = directory;
if (path.isEmpty()) {
path = getPreviousBrowseLocation();
}
#ifndef Q_OS_WIN
path = fixupPathForMac(directory);
#endif
QString result = OffscreenUi::getSaveFileName(nullptr, title, path, nameFilter);
if (!result.isEmpty()) {
setPreviousBrowseLocation(QFileInfo(result).absolutePath());
}
return result.isEmpty() ? QScriptValue::NullValue : QScriptValue(result);
}

View file

@ -49,6 +49,10 @@ signals:
private slots:
WebWindowClass* doCreateWebWindow(const QString& title, const QString& url, int width, int height);
private:
QString getPreviousBrowseLocation() const;
void setPreviousBrowseLocation(const QString& location);
};
#endif // hifi_WindowScriptingInterface_h

View file

@ -1221,8 +1221,7 @@ function handeMenuEvent(menuItem) {
if (!selectionManager.hasSelection()) {
Window.alert("No entities have been selected.");
} else {
var filename = "entities__" + Window.location.hostname + ".svo.json";
filename = Window.save("Select Where to Save", filename, "*.json")
var filename = Window.save("Select Where to Save", "", "*.json")
if (filename) {
var success = Clipboard.exportEntities(filename, selectionManager.selections);
if (!success) {