mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-19 14:50:53 +01:00
Reworked methods related to project saving in order to optimize the "save all" feature.
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@1897 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
@@ -286,6 +286,36 @@ bool ProjectView::tryClosingDiagrams() {
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Ask the user to provide a file path in which the currently edited project will
|
||||||
|
be saved.
|
||||||
|
@param assign When true, assign the provided filepath to the project through
|
||||||
|
setFilePath(). Defaults to true.
|
||||||
|
@return the file path, or an empty string if none were provided
|
||||||
|
*/
|
||||||
|
QString ProjectView::askUserForFilePath(bool assign) {
|
||||||
|
// ask the user for a filepath in order to save the project
|
||||||
|
QString filepath = QFileDialog::getSaveFileName(
|
||||||
|
this,
|
||||||
|
tr("Enregistrer sous", "dialog title"),
|
||||||
|
project_ -> currentDir(),
|
||||||
|
tr("Sch\351ma QElectroTech (*.qet)", "filetypes allowed when saving a diagram file")
|
||||||
|
);
|
||||||
|
|
||||||
|
// if no filepath is provided, return an empty string
|
||||||
|
if (filepath.isEmpty()) return(filepath);
|
||||||
|
|
||||||
|
// if the name does not end with the .qet extension, append it
|
||||||
|
if (!filepath.endsWith(".qet", Qt::CaseInsensitive)) filepath += ".qet";
|
||||||
|
|
||||||
|
if (assign) {
|
||||||
|
// assign the provided filepath to the currently edited project
|
||||||
|
project_ -> setFilePath(filepath);
|
||||||
|
}
|
||||||
|
|
||||||
|
return(filepath);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Ajoute un nouveau schema au ProjectView
|
Ajoute un nouveau schema au ProjectView
|
||||||
*/
|
*/
|
||||||
@@ -555,25 +585,27 @@ bool ProjectView::save() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Enregistre tous les schemas du projet.
|
Save all diagrams in the project.
|
||||||
@see filePath()
|
@return False if something went wrong (no project, no filepath provided, write
|
||||||
@see setFilePath()
|
error), true otherwise.
|
||||||
@return true si l'enregistrement a reussi, false sinon
|
|
||||||
*/
|
*/
|
||||||
bool ProjectView::saveAll() {
|
bool ProjectView::saveAll() {
|
||||||
if (project_) {
|
if (project_) {
|
||||||
// on fait deja un appel a save
|
if (project_ -> filePath().isEmpty()) {
|
||||||
if (!save()) {
|
QString filepath = askUserForFilePath();
|
||||||
return(false);
|
if (filepath.isEmpty()) return(false);
|
||||||
} else {
|
}
|
||||||
// a ce stade, on suppose que l'on a un fichier, et que l'ecriture du schema en cours a reussi
|
|
||||||
// on enregistre les schemas
|
|
||||||
foreach (Diagram *diagram, project_ -> diagrams()) {
|
foreach (Diagram *diagram, project_ -> diagrams()) {
|
||||||
|
// Diagram::write() emits the written() signal, which is connected to
|
||||||
|
// QETProject::write() through QETProject::componentWritten(). We do not want
|
||||||
|
// to write the project immediately, so we block this signal.
|
||||||
|
diagram -> blockSignals(true);
|
||||||
diagram -> write();
|
diagram -> write();
|
||||||
|
diagram -> blockSignals(false);
|
||||||
}
|
}
|
||||||
|
bool writing = project_ -> write();
|
||||||
updateWindowTitle();
|
updateWindowTitle();
|
||||||
return(true);
|
return(writing);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return(false);
|
return(false);
|
||||||
}
|
}
|
||||||
@@ -655,23 +687,8 @@ int ProjectView::cleanProject() {
|
|||||||
@return true si l'enregistrement a reussi, false sinon
|
@return true si l'enregistrement a reussi, false sinon
|
||||||
*/
|
*/
|
||||||
bool ProjectView::saveAs() {
|
bool ProjectView::saveAs() {
|
||||||
// demande un nom de fichier a l'utilisateur pour enregistrer le projet
|
QString filepath = askUserForFilePath();
|
||||||
QString filepath = QFileDialog::getSaveFileName(
|
|
||||||
this,
|
|
||||||
tr("Enregistrer sous", "dialog title"),
|
|
||||||
project_ -> currentDir(),
|
|
||||||
tr("Sch\351ma QElectroTech (*.qet)", "filetypes allowed when saving a diagram file")
|
|
||||||
);
|
|
||||||
|
|
||||||
// si aucun nom n'est entre, renvoie faux.
|
|
||||||
if (filepath.isEmpty()) return(false);
|
if (filepath.isEmpty()) return(false);
|
||||||
|
|
||||||
// si le nom ne se termine pas par l'extension .qet, celle-ci est ajoutee
|
|
||||||
if (!filepath.endsWith(".qet", Qt::CaseInsensitive)) filepath += ".qet";
|
|
||||||
|
|
||||||
// le fichier est assigne au projet
|
|
||||||
project_ -> setFilePath(filepath);
|
|
||||||
|
|
||||||
return(save());
|
return(save());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -89,6 +89,7 @@ class ProjectView : public QWidget {
|
|||||||
bool tryClosing();
|
bool tryClosing();
|
||||||
bool tryClosingElementEditors();
|
bool tryClosingElementEditors();
|
||||||
bool tryClosingDiagrams();
|
bool tryClosingDiagrams();
|
||||||
|
QString askUserForFilePath(bool = true);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void tabChanged(int);
|
void tabChanged(int);
|
||||||
|
|||||||
Reference in New Issue
Block a user