diff --git a/sources/projectview.cpp b/sources/projectview.cpp index c783b3db6..bf8b6983b 100644 --- a/sources/projectview.cpp +++ b/sources/projectview.cpp @@ -295,8 +295,9 @@ QETResult ProjectView::noProjectResult() const { } /** - Ajoute un nouveau schema au ProjectView -*/ + * @brief ProjectView::addNewDiagram + * Add new diagram to project view + */ void ProjectView::addNewDiagram() { if (project_ -> isReadOnly()) return; @@ -309,13 +310,20 @@ void ProjectView::addNewDiagram() { showDiagram(new_diagram_view); } +/** + * @brief ProjectView::addNewDiagramFolioList + * Add new diagram folio list to project + */ void ProjectView::addNewDiagramFolioList() { if (project_ -> isReadOnly()) return; - Diagram *new_diagram = project_ -> addNewDiagramFolioList(); - DiagramView *new_diagram_view = new DiagramView(new_diagram); - addDiagram(new_diagram_view, true); - showDiagram(new_diagram_view); + QList list = project_ -> addNewDiagramFolioList(); + int size = list.size(); + for (int i = 0; i < size; i++) { + DiagramView *new_diagram_view = new DiagramView(list.takeLast()); + addDiagram(new_diagram_view, true); + showDiagram(new_diagram_view); + } } /** @@ -352,8 +360,7 @@ void ProjectView::addDiagram(DiagramView *diagram, bool front) { emit(diagramAdded(diagram)); // move tab to front if wanted if (front) { - tabs_->moveTab(tabs_->count()-1, project_ -> getFolioSheetsQuantity()-1); - //diagram -> diagram() -> project() -> setFolioSheetsQuantity(true); + tabs_->moveTab(tabs_->count()-1, 0); } } diff --git a/sources/qetdiagrameditor.cpp b/sources/qetdiagrameditor.cpp index 3860e0839..bd3a92221 100644 --- a/sources/qetdiagrameditor.cpp +++ b/sources/qetdiagrameditor.cpp @@ -1698,15 +1698,13 @@ void QETDiagramEditor::addDiagramToProject() { } } +/** + * @brief QETDiagramEditor::addDiagramFolioListToProject + * Add new folio list to project + */ void QETDiagramEditor::addDiagramFolioListToProject() { - ProjectView *current_project = currentProject(); - if (current_project && current_project -> project() -> getFolioSheetsQuantity() == 0) { - - // The number of folio sheets depend on the number of diagrams in the project. - int diagram_qty = current_project -> diagrams().size(); - for (int i = 0; i <= diagram_qty/58; i++) + if (ProjectView *current_project = currentProject()) current_project -> addNewDiagramFolioList(); - } } /** diff --git a/sources/qetproject.cpp b/sources/qetproject.cpp index c55bf53e6..6905d94a9 100644 --- a/sources/qetproject.cpp +++ b/sources/qetproject.cpp @@ -914,29 +914,39 @@ Diagram *QETProject::addNewDiagram() { * Add new diagram folio list * @return the created diagram */ -Diagram *QETProject::addNewDiagramFolioList() { - // do nothing if project is read only - if (isReadOnly()) return(0); +QList QETProject::addNewDiagramFolioList() { + // do nothing if project is read only or folio sheet is alredy created + QList diagram_list; - //create new diagram - Diagram *diagram_folio_list = new DiagramFolioList(this); + if (!isReadOnly() && getFolioSheetsQuantity() == 0) { - // setup default properties - diagram_folio_list -> border_and_titleblock.importBorder(defaultBorderProperties()); - diagram_folio_list -> border_and_titleblock.importTitleBlock(defaultTitleBlockProperties()); - diagram_folio_list -> defaultConductorProperties = defaultConductorProperties(); + //reset the number of folio sheet + setFolioSheetsQuantity(0); - diagram_folio_list -> border_and_titleblock.setTitle(tr("Liste des Sch\351mas")); - // no need to display rows and columns - diagram_folio_list -> border_and_titleblock.displayRows(false); - diagram_folio_list -> border_and_titleblock.displayColumns(false); + int diagCount = diagrams().size(); + for (int i = 0; i <= diagCount/58; i++) { + //create new diagram + Diagram *diagram_folio_list = new DiagramFolioList(this); - addDiagram(diagram_folio_list); - setFolioSheetsQuantity( getFolioSheetsQuantity()+1 ); + // setup default properties + diagram_folio_list -> border_and_titleblock.importBorder(defaultBorderProperties()); + diagram_folio_list -> border_and_titleblock.importTitleBlock(defaultTitleBlockProperties()); + diagram_folio_list -> defaultConductorProperties = defaultConductorProperties(); - emit(diagramAdded(this, diagram_folio_list)); - return(diagram_folio_list); + diagram_folio_list -> border_and_titleblock.setTitle(tr("Liste des Sch\351mas")); + // no need to display rows and columns + diagram_folio_list -> border_and_titleblock.displayRows(false); + diagram_folio_list -> border_and_titleblock.displayColumns(false); + + addDiagram(diagram_folio_list); + setFolioSheetsQuantity( getFolioSheetsQuantity()+1 ); + emit(diagramAdded(this, diagram_folio_list)); + diagram_list << diagram_folio_list; + } + } + + return(diagram_list); } /** @@ -1027,7 +1037,6 @@ void QETProject::readProjectXml() { // la racine du document XML est sensee etre un element "project" if (root_elmt.tagName() == "project") { - // mode d'ouverture normal if (root_elmt.hasAttribute("version")) { bool conv_ok; @@ -1063,15 +1072,10 @@ void QETProject::readProjectXml() { // load the project-wide properties readProjectPropertiesXml(); - + // charge les proprietes par defaut pour les nouveaux schemas readDefaultPropertiesXml(); - // if there is an attribute for folioSheetQuantity, then set it accordingly. - // If not, then the value remains at the initial value of zero. - if (root_elmt.hasAttribute("folioSheetQuantity")) - addNewDiagramFolioList(); - // load the embedded titleblock templates readEmbeddedTemplatesXml(); @@ -1081,6 +1085,12 @@ void QETProject::readProjectXml() { // charge les schemas readDiagramsXml(); + // if there is an attribute for folioSheetQuantity, then set it accordingly. + // If not, then the value remains at the initial value of zero. + if (root_elmt.attribute("folioSheetQuantity","0").toInt()) { + addNewDiagramFolioList(); + } + state_ = Ok; } diff --git a/sources/qetproject.h b/sources/qetproject.h index b618caa84..8555f0122 100644 --- a/sources/qetproject.h +++ b/sources/qetproject.h @@ -145,7 +145,7 @@ class QETProject : public QObject { public slots: void componentWritten(); Diagram *addNewDiagram(); - Diagram *addNewDiagramFolioList(); + QList addNewDiagramFolioList(); void removeDiagram(Diagram *); void diagramOrderChanged(int, int); void setModified(bool);