| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- /**
- * Copyright (c) 2011-2018 by Andrew Mustun. All rights reserved.
- *
- * This file is part of the QCAD project.
- *
- * QCAD is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * QCAD 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.
- *
- * You should have received a copy of the GNU General Public License
- * along with QCAD.
- */
-
- include("scripts/File/File.js");
- include("scripts/File/AutoSave/AutoSave.js");
- /**
- * This action handles all user interaction to save the current drawing. If the current
- * drawing has no file name (has never been saved before), action SaveAs is triggered
- * instead.
- */
- function Save(guiAction) {
- File.call(this, guiAction);
- }
- Save.prototype = new File();
- Save.includeBasePath = includeBasePath;
- Save.prototype.beginEvent = function() {
- File.prototype.beginEvent.call(this);
- var fileName = this.getDocument().getFileName();
- var fileVersion = this.getDocument().getFileVersion();
- // not yet saved or
- // loaded a backup file or
- // save failed:
- // launch save as instead:
- if (fileName === "" || new QFileInfo(fileName).completeBaseName().startsWith("~") ||
- !this.save(fileName, fileVersion, false)) {
- include(Save.includeBasePath + "/../SaveAs/SaveAs.js");
- var saveAsAction = new SaveAs();
- this.getDocumentInterface().queueAction(saveAsAction);
- this.terminate();
- return;
- }
- this.terminate();
- };
- Save.prototype.save = function(fileName, fileVersion, overwriteWarning) {
- if (isNull(overwriteWarning)) {
- overwriteWarning = true;
- }
- var appWin = EAction.getMainWindow();
- var di = EAction.getDocumentInterface();
- var buttons, ret;
- // var editingWorkingSet = di.getDocument().isEditingWorkingSet();
- // if (editingWorkingSet) {
- // buttons = new QMessageBox.StandardButtons(QMessageBox.Yes, QMessageBox.Cancel);
- // ret = QMessageBox.warning(
- // appWin,
- // qsTr("Block editing in progress"),
- // qsTr("A block is currently exploded and being edited. Please save the block before saving your drawing.") + " " +
- // qsTr("Saving will save the block contents exploded.") + " " +
- // qsTr("Save anyway?"), buttons);
- // if (ret===QMessageBox.Cancel) {
- // return true;
- // }
- // }
- fileVersion = isNull(fileVersion) ? "" : fileVersion;
- fileName = di.getCorrectedFileName(fileName, fileVersion);
- var saveAs = false;
- if (overwriteWarning) {
- if (new QFileInfo(fileName).exists()) {
- buttons = makeQMessageBoxStandardButtons(QMessageBox.Yes, QMessageBox.No);
- ret = QMessageBox.warning(
- appWin,
- qsTr("Overwrite File?"),
- qsTr("The file \"%1\" already exists. Do you wish to overwrite it?").arg(fileName), buttons);
- if (ret!=QMessageBox.Yes) {
- saveAs = true;
- }
- }
- }
- var colorWarning = RSettings.getBoolValue("SaveAs/ColorWarning", true);
- var noFullColor = !File.isRecommendedVersion(fileVersion);
- if (!saveAs && noFullColor) {
- if (colorWarning) {
- // dxflib has no full color support:
- if (!fileVersion.contains("dxflib")) {
- buttons = makeQMessageBoxStandardButtons(QMessageBox.Yes, QMessageBox.No);
- ret = QMessageBox.warning(
- appWin,
- qsTr("File Format Version Not Recommended"),
- qsTr("The file format version you are using is not recommended: \"%1\".").arg(fileVersion) + "\n"
- + qsTr("Custom properties will not be saved.") + "\n"
- + qsTr("All black entities and layers will be saved as white.") + "\n"
- + qsTr("All custom colors will be adjusted to the nearest fixed color.") + " " + qsTr("Proceed?"), buttons);
- if (ret!=QMessageBox.Yes) {
- saveAs = true;
- }
- }
- }
- }
- if (saveAs) {
- include("scripts/File/SaveAs/SaveAs.js");
- var saveAsAction = new SaveAs();
- this.getDocumentInterface().queueAction(saveAsAction);
- this.terminate();
- return true;
- }
- appWin.setProgressText(qsTr("Saving..."));
- if (noFullColor) {
- EAction.handleUserWarning(qsTr("Saving to file format version \"%1\".").arg(fileVersion));
- EAction.handleUserWarning(qsTr("Black entities and layers are saved as white."));
- EAction.handleUserWarning(qsTr("Custom colors are adjusted to the nearest fixed color."));
- }
- var bakFileName = AutoSave.getAutoSaveFileNameCurrent();
- if (!di.exportFile(fileName, fileVersion)) {
- var text = qsTr("File %1 has not been saved.").arg(fileName);
- appWin.handleUserWarning(text, true);
- appWin.setProgressText();
- return false;
- }
- AutoSave.cleanUp(bakFileName);
- // file name might have been changed by filter (extension added):
- var doc = di.getDocument();
- fileName = doc.getFileName();
- fileVersion = doc.getFileVersion()
- var mdiChild = EAction.getMdiChild();
- if (!isNull(mdiChild)) {
- var title = new QFileInfo(fileName).fileName();
- title = title.replace(/&/g, "&&");
- mdiChild.setWindowTitle(addDirtyFlag(title));
- }
- RSettings.addRecentFile(fileName);
- appWin.handleUserMessage(qsTr("Saved file:") + " " + fileName);
- if (fileVersion.length!==0) {
- appWin.handleUserMessage(qsTr("Format:") + " " + fileVersion);
- }
- var tabBar = appWin.getTabBar();
- if (!isNull(tabBar)) {
- tabBar.setTabToolTip(tabBar.currentIndex, fileName);
- }
- appWin.setProgressText();
- return true;
- };
|