Logo Search packages:      
Sourcecode: qelectrotech version File versions  Download package

bool QETDiagramEditor::openAndAddProject ( const QString &  filepath,
bool  interactive = true 
)

Ouvre un projet depuis un fichier et l'ajoute a cet editeur

Parameters:
filepath Chemin du projet a ouvrir
interactive true pour afficher des messages a l'utilisateur, false sinon
Returns:
true si l'ouverture a reussi, false sinon

Definition at line 737 of file qetdiagrameditor.cpp.

References activateWidget(), addProject(), QETApp::diagramEditorForFile(), QETApp::projectsRecentFiles(), and viewForFile().

Referenced by openProject(), openRecentFile(), and QETDiagramEditor().

                                                                                  {
      if (filepath.isEmpty()) return(false);
      
      QFileInfo filepath_info(filepath);
      // verifie que le projet n'est pas deja ouvert dans un editeur
      QString my_filepath = filepath_info.canonicalFilePath();
      if (QETDiagramEditor *diagram_editor = QETApp::diagramEditorForFile(filepath)) {
            if (diagram_editor == this) {
                  if (ProjectView *project_view = viewForFile(filepath)) {
                        activateWidget(project_view);
                        show();
                        activateWindow();
                  }
                  return(false);
            } else {
                  // demande a l'autre editeur d'afficher le fichier
                  return(diagram_editor -> openAndAddProject(filepath));
            }
      }
      
      // verifie que le fichier est accessible en lecture
      if (!filepath_info.isReadable()) {
            if (interactive) {
                  QMessageBox::critical(
                        this,
                        tr("Impossible d'ouvrir le fichier"),
                        tr("Il semblerait que le fichier que vous essayez d'ouvrir ne "
                        "soit pas accessible en lecture. Il est donc impossible de "
                        "l'ouvrir. Veuillez v\351rifier les permissions du fichier.")
                  );
            }
            return(false);
      }
      
      // gere le fait que le fichier puisse etre en lecture seule
      if (!filepath_info.isWritable()) {
            if (interactive) {
                  QMessageBox::warning(
                        this,
                        tr("Ouverture du projet en lecture seule"),
                        tr("Il semblerait que le projet que vous essayez d'ouvrir ne "
                        "soit pas accessible en \351criture. Il sera donc ouvert en "
                        "lecture seule.")
                  );
            }
      }
      
      // cree le projet a partir du fichier
      QETProject *project = new QETProject(filepath);
      if (project -> state() != QETProject::Ok) {
            if (interactive) {
                  QMessageBox::warning(
                        this,
                        tr("\311chec de l'ouverture du projet", "message box title"),
                        QString(
                              tr(
                                    "Il semblerait que le fichier %1 ne soit pas un fichier"
                                    " projet QElectroTech. Il ne peut donc \352tre ouvert.",
                                    "message box content"
                              )
                        ).arg(filepath)
                  );
            }
            return(false);
      }
      
      // a ce stade, l'ouverture du fichier a reussi
      // on l'ajoute a la liste des fichiers recents
      QETApp::projectsRecentFiles() -> fileWasOpened(filepath);
      // ... et on l'ajoute dans l'application
      return(addProject(project));
}


Generated by  Doxygen 1.6.0   Back to index