Traductions de cette page:

Documentation diverse et en vrac

Hiérarchie des classes de l'API des ElementsCollectionItem

Pour information, cette hiérarchie de classe permet d'accéder et de manipuler de manière abstraite des collections, catégories et éléments, que ceux-ci soient stockés sur un système de fichiers (classes d'implémentation File*) ou dans un projet (classes d'implémentation Xml*)

  • ElementsCollectionItem [pure virtual]
    • ElementsCollection [pure virtual]
      • FileElementsCollection
      • XmlElementsCollection
    • ElementsCategory [pure virtual]
      • FileElementsCategory
      • XmlElementsCategory
    • ElementDefinition [pure virtual]
      • FileElementDefinition
      • XmlElementDefinition

Contrôles effectués lors des déplacements / copies dans l'API des ElementsCollectionItem

Contrôle ElementsCollection ElementsCategory ElementDefinition
copy move copy move copy move
Handler provided ? [ok] [ok] [ok] [ok] [ok] [ok]
Dst != src ? [ok] [no] [ok] [ok] [no] [no]
Src is writable ? [no] [no] [no] [ok] [no] [ok]
Dst is readable ? [ok] [no] [ok] [ok] [ok] [ok]
Dst is writeable ? [ok] [no] [ok] [ok] [ok] [ok]
Dst already exists ? [ok] [no] [ok] [ok] [ok] [ok]
Already existing dst is writable ? [ok] [no] [ok] [ok] [ok] [ok]
Creation/deletion error ? [ok] [no] [ok] [ok] [ok] [ok]

Légende

[ok] Vérification effectuée
[no] Vérification non effectuée car non pertinente

Exemple : on n'a pas besoin de pouvoir modifier l'item source lors d'une copie.

À noter que certains de ces contrôles sont redondés dans l'interface utilisateur, plus exactement dans le panel d'éléments. Celui-ci n'autorise que les drag'n drop à priori possibles au regard des permissions sur les items et de leur type. Ces contrôles peuvent être désactivés via les variables ENABLE_PANEL_WIDGET_DND_CHECKS (elementspanelwidget.cpp:37) et ENABLE_PANEL_DND_CHECKS (elementspanel.cpp:35).

Embarquement des éléments dans les projets

Lorsqu'un élément (ou une catégorie) est ajouté à la collection embarquée d'un projet, il ne peut être référencé que par rapport à un projet donné, en tant qu'élément embarqué ; on a alors le couple de données suivant :

  • un chemin en embed://category1/category2/category3/element.elmt
  • un pointeur QETProject * pour savoir à quel projet se rapporte embed://

Ces données sont ce que retient un objet ElementsLocation pour désigner un élément sans ambiguïté. Les projets ouverts dans l'application étant numérotés et accessibles par leur numéro (on parle de “project id”), un élément peut également être désigné par une simple chaîne de caractères de la forme project<id>+embed://category1/category2/category3/element.elmt

Passage de projectx+embed:// à embed:// :

  • effectué via la méthode ElementsLocation::fromString() : elementslocation.cpp, ligne 160

Passages de embed:// à projectx+embed:// :

  • lors de l'enregistrement d'un fichier (méthode Diagram::fromXml) : diagram.cpp, ligne 440
QString type_id = e.attribute("type");
ElementsLocation element_location = ElementsLocation(type_id);
if (type_id.startsWith("embed://")) element_location.setProject(project_);

Lorsque le schéma est lu, si un élément se déclare de type embed://, alors l'ElementsLocation construit pour localiser l'élément en question se voit lié au projet auquel appartient ce schéma.

  • lors de l'appel à la méthode toString() d'un ElementsLocation : elementslocation.cpp, ligne 143
/**
	@return Une chaine de caracteres representant l'emplacement
*/
QString ElementsLocation::toString() const {
	QString result;
	if (project_) {
		int project_id = QETApp::projectId(project_);
		if (project_id != -1) {
			result += "project" + QString().setNum(project_id) + "+";
		}
	}
	result += path_;
	return(result);
}

Codes d'erreur lors du chargement d'un élément

Le chargement de l'élément … a échoué avec le code d'erreur….

  • 1 : Le fichier n'existe pas
  • 2 : Le fichier n'a pu être ouvert
  • 3 : Le fichier n'est pas un document XML
  • 4 : Le document XML n'a pas une “définition” comme racine
  • 5 : Les attributs de la définition ne sont pas présents et / ou valides
  • 6 : La définition est vide
  • 7 : L'analyse d'un élément XML décrivant une partie du dessin de l'élément a échoue
  • 8 : Aucune partie du dessin n'a pu être chargée
 
doc/vrac.txt · Dernière modification: 16/05/2009 11:33 (modification externe)
 
Sauf mention contraire, le contenu de ce wiki est placé sous la licence suivante :WTFPL
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki