Introduced project-wide properties, i.e. key/value pairs defined at the project scope available in all child diagrams.

git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@1892 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
xavier
2012-07-01 21:54:07 +00:00
parent 317d149c89
commit d5efc331a1
6 changed files with 78 additions and 11 deletions

View File

@@ -417,6 +417,11 @@ QDomDocument QETProject::toXml() {
project_root.appendChild(titleblocktemplates_elmt);
}
// project-wide properties
QDomElement project_properties = xml_doc.createElement("properties");
writeProjectPropertiesXml(project_properties);
project_root.appendChild(project_properties);
// proprietes pour les nouveaux schemas
QDomElement new_diagrams_properties = xml_doc.createElement("newdiagrams");
writeDefaultPropertiesXml(new_diagrams_properties);
@@ -900,6 +905,9 @@ void QETProject::readProjectXml() {
state_ = ProjectParsingFailed;
}
// load the project-wide properties
readProjectPropertiesXml();
// charge les proprietes par defaut pour les nouveaux schemas
readDefaultPropertiesXml();
@@ -979,6 +987,22 @@ void QETProject::readElementsCollectionXml() {
connect(collection_, SIGNAL(written()), this, SLOT(componentWritten()));
}
/**
Load project properties from the XML description of the project
*/
void QETProject::readProjectPropertiesXml() {
foreach (QDomElement e, QET::findInDomElement(document_root_.documentElement(), "properties")) {
project_properties_.fromXml(e);
}
}
/**
Export project properties under the \a xml_element XML element.
*/
void QETProject::writeProjectPropertiesXml(QDomElement &xml_element) {
project_properties_.toXml(xml_element);
}
/**
Charge les proprietes par defaut des nouveaux schemas depuis la description
XML du projet :
@@ -1139,6 +1163,21 @@ bool QETProject::diagramsWereModified() {
return(!(diagrams_[0] -> undoStack().isClean()));
}
/**
@return the project-wide properties made available to child diagrams.
*/
DiagramContext QETProject::projectProperties() {
return(project_properties_);
}
/**
Use \a context as project-wide properties made available to child diagrams.
*/
void QETProject::setProjectProperties(const DiagramContext &context) {
project_properties_ = context;
updateDiagramsFolioData();
}
/**
Cette methode sert a reperer un projet vide, c-a-d un projet identique a ce
que l'on obtient en faisant Fichier > Nouveau.
@@ -1166,7 +1205,7 @@ bool QETProject::projectWasModified() {
void QETProject::updateDiagramsFolioData() {
int total_folio = diagrams_.count();
for (int i = 0 ; i < total_folio ; ++ i) {
diagrams_[i] -> border_and_titleblock.setFolioData(i + 1, total_folio);
diagrams_[i] -> border_and_titleblock.setFolioData(i + 1, total_folio, project_properties_);
}
}