diff --git a/conductor.h b/conductor.h index 49bc2cf2c..a53ce81cf 100644 --- a/conductor.h +++ b/conductor.h @@ -50,6 +50,10 @@ class Conductor : public QGraphicsPathItem { // methodes public: + /** + permet de caster un QGraphicsItem en Conductor avec qgraphicsitem_cast + @return le type de QGraphicsItem + */ virtual int type() const { return Type; } void destroy(); /// @return true si ce conducteur est detruit diff --git a/configpages.h b/configpages.h index 591a96774..4ae694a6a 100644 --- a/configpages.h +++ b/configpages.h @@ -28,10 +28,18 @@ class ConfigPage : public QWidget { Q_OBJECT public: + /** + Constructeur + @param parent QWidget parent + */ ConfigPage(QWidget *parent) : QWidget(parent) {}; + /// Destructeur virtual ~ConfigPage() {}; + /// Applique la configuration saisie par l'utilisateur dans la page de configuration virtual void applyConf() = 0; + /// @return le titre de la page de configuration virtual QString title() const = 0; + /// @return l'icone de la page de configuration virtual QIcon icon() const = 0; }; diff --git a/diagramtextitem.cpp b/diagramtextitem.cpp index 2e49ca21e..3c6630503 100644 --- a/diagramtextitem.cpp +++ b/diagramtextitem.cpp @@ -104,6 +104,10 @@ QDomElement DiagramTextItem::toXml(QDomDocument &document) const { return(result); } +/** + Gere les double-clics sur ce champ de texte. + @param event un QGraphicsSceneMouseEvent decrivant le double-clic +*/ void DiagramTextItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) { if (flags() & QGraphicsItem::ItemIsMovable && !(textInteractionFlags() & Qt::TextEditable)) { // rend le champ de texte editable diff --git a/diagramview.cpp b/diagramview.cpp index b2a139dea..d9c530118 100644 --- a/diagramview.cpp +++ b/diagramview.cpp @@ -858,6 +858,10 @@ bool DiagramView::event(QEvent *e) { return(QGraphicsView::event(e)); } +/** + Passe le DiagramView en mode "ajout de texte". Un clic cree alors un + nouveau champ de texte. +*/ void DiagramView::addText() { is_adding_text = true; } diff --git a/diagramview.h b/diagramview.h index 948daa832..2c599e74e 100644 --- a/diagramview.h +++ b/diagramview.h @@ -59,6 +59,7 @@ class DiagramView : public QGraphicsView { void removeColumn(); void expand(); void shrink(); + /// @return Le schema visualise par ce DiagramView Diagram *diagram() { return(scene); } QETDiagramEditor *diagramEditor() const; bool hasSelectedItems(); diff --git a/editor/customelementgraphicpart.h b/editor/customelementgraphicpart.h index 966dbf7d9..5608292cc 100644 --- a/editor/customelementgraphicpart.h +++ b/editor/customelementgraphicpart.h @@ -36,6 +36,10 @@ class CustomElementGraphicPart : public CustomElementPart { // constructeurs, destructeur public: + /** + Constructeur + @param editor Editeur d'element auquel cette partie est rattachee + */ CustomElementGraphicPart(QETElementEditor *editor) : CustomElementPart(editor), _linestyle(NormalStyle), @@ -47,6 +51,7 @@ class CustomElementGraphicPart : public CustomElementPart { style_editor = new StyleEditor(elementEditor(), this); }; + /// Destructeur virtual ~CustomElementGraphicPart() { delete style_editor; }; diff --git a/editor/customelementpart.h b/editor/customelementpart.h index 30b34e7d8..269fafbd9 100644 --- a/editor/customelementpart.h +++ b/editor/customelementpart.h @@ -34,7 +34,12 @@ class ElementScene; class CustomElementPart { // constructeurs, destructeur public: + /** + Constructeur + @param editor Editeur d'element auquel cette partie est rattachee + */ CustomElementPart(QETElementEditor *editor) : element_editor(editor) {} + /// Destructeur virtual ~CustomElementPart() {} private: @@ -46,15 +51,37 @@ class CustomElementPart { // methodes public: + /** + Charge la partie depuis un element XML sense le decrire + */ virtual void fromXml(const QDomElement &) = 0; + /** + Enregistre la partie dans un document XML + */ virtual const QDomElement toXml(QDomDocument &) const = 0; + /// @return un widget suppose decrire et/ou permettre de modifier la partie virtual QWidget *elementInformations() = 0; + /** + Permet de modifier une des proprietes de la partie + */ virtual void setProperty(const QString &, const QVariant &) = 0; + /** + Permet de lire une des proprietes de la partie + */ virtual QVariant property(const QString &) = 0; + /** + @return true si la partie n'est pas pertinente, false sinon + Typiquement, une partie non pertinente n'est pas conservee lors de + l'enregistrement de l'element. + */ virtual bool isUseless() const = 0; + /// @return un pointeur vers l'editeur d'element parent virtual QETElementEditor *elementEditor() const; + /// @return un pointeur vers la scene d'edition parente virtual ElementScene *elementScene() const; + /// @return la pile d'annulations a utiliser virtual QUndoStack &undoStack() const; + /// @return le nom de la partie virtual QString name() const = 0; }; #endif diff --git a/editor/partarc.h b/editor/partarc.h index aea7a1aa5..168e882de 100644 --- a/editor/partarc.h +++ b/editor/partarc.h @@ -42,6 +42,10 @@ class PartArc : public QGraphicsEllipseItem, public CustomElementGraphicPart { // methodes public: enum { Type = UserType + 1101 }; + /** + permet de caster un QGraphicsItem en PartArc avec qgraphicsitem_cast + @return le type de QGraphicsItem + */ virtual int type() const { return Type; } virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget * = 0); virtual QString name() const { return(QObject::tr("arc")); } diff --git a/editor/partcircle.h b/editor/partcircle.h index fdc779456..34aab8b1f 100644 --- a/editor/partcircle.h +++ b/editor/partcircle.h @@ -40,6 +40,10 @@ class PartCircle : public QGraphicsEllipseItem, public CustomElementGraphicPart // methodes public: enum { Type = UserType + 1102 }; + /** + permet de caster un QGraphicsItem en PartCircle avec qgraphicsitem_cast + @return le type de QGraphicsItem + */ virtual int type() const { return Type; } virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget * = 0); virtual QString name() const { return(QObject::tr("cercle")); } diff --git a/editor/partellipse.h b/editor/partellipse.h index 94a17bfe0..35e660112 100644 --- a/editor/partellipse.h +++ b/editor/partellipse.h @@ -40,6 +40,10 @@ class PartEllipse : public QGraphicsEllipseItem, public CustomElementGraphicPart // methodes public: enum { Type = UserType + 1103 }; + /** + permet de caster un QGraphicsItem en PartEllipse avec qgraphicsitem_cast + @return le type de QGraphicsItem + */ virtual int type() const { return Type; } virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget * = 0); virtual QString name() const { return(QObject::tr("ellipse")); } diff --git a/editor/partline.h b/editor/partline.h index 8b315ed58..05f588d37 100644 --- a/editor/partline.h +++ b/editor/partline.h @@ -40,6 +40,10 @@ class PartLine : public QGraphicsLineItem, public CustomElementGraphicPart { // methodes public: enum { Type = UserType + 1104 }; + /** + permet de caster un QGraphicsItem en PartLine avec qgraphicsitem_cast + @return le type de QGraphicsItem + */ virtual int type() const { return Type; } virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget * = 0); virtual QString name() const { return(QObject::tr("ligne")); } diff --git a/editor/partpolygon.h b/editor/partpolygon.h index fed60d192..02dc1aef7 100644 --- a/editor/partpolygon.h +++ b/editor/partpolygon.h @@ -53,6 +53,10 @@ class PartPolygon : public QGraphicsPolygonItem, public CustomElementGraphicPart // methodes public: enum { Type = UserType + 1105 }; + /** + permet de caster un QGraphicsItem en PartPolygon avec qgraphicsitem_cast + @return le type de QGraphicsItem + */ virtual int type() const { return Type; } virtual QString name() const { return(QObject::tr("polygone")); } void fromXml(const QDomElement &); diff --git a/editor/partterminal.h b/editor/partterminal.h index 96c0ed00d..10eb1f976 100644 --- a/editor/partterminal.h +++ b/editor/partterminal.h @@ -43,6 +43,10 @@ class PartTerminal : public CustomElementPart, public QGraphicsItem { // methodes public: enum { Type = UserType + 1106 }; + /** + permet de caster un QGraphicsItem en PartTerminal avec qgraphicsitem_cast + @return le type de QGraphicsItem + */ virtual int type() const { return Type; } virtual QString name() const { return(QObject::tr("borne")); } virtual void fromXml(const QDomElement &); diff --git a/editor/parttext.h b/editor/parttext.h index 4dbd9aa78..5053f225b 100644 --- a/editor/parttext.h +++ b/editor/parttext.h @@ -39,6 +39,10 @@ class PartText : public QGraphicsTextItem, public CustomElementPart { // methodes public: enum { Type = UserType + 1107 }; + /** + permet de caster un QGraphicsItem en PartText avec qgraphicsitem_cast + @return le type de QGraphicsItem + */ virtual int type() const { return Type; } virtual QString name() const { return(QObject::tr("texte")); } void fromXml(const QDomElement &); diff --git a/editor/parttextfield.h b/editor/parttextfield.h index 3ad145626..a2c2e9fb5 100644 --- a/editor/parttextfield.h +++ b/editor/parttextfield.h @@ -43,6 +43,10 @@ class PartTextField : public QGraphicsTextItem, public CustomElementPart { // methodes public: enum { Type = UserType + 1108 }; + /** + permet de caster un QGraphicsItem en PartTextField avec qgraphicsitem_cast + @return le type de QGraphicsItem + */ virtual int type() const { return Type; } virtual QString name() const { return(QObject::tr("champ de texte")); } void fromXml(const QDomElement &); diff --git a/editor/qetelementeditor.cpp b/editor/qetelementeditor.cpp index e0fed3209..8411adf72 100644 --- a/editor/qetelementeditor.cpp +++ b/editor/qetelementeditor.cpp @@ -23,6 +23,10 @@ #include "newelementwizard.h" #include "elementitemeditor.h" +/** + Constructeur + @param parent QWidget parent +*/ QETElementEditor::QETElementEditor(QWidget *parent) : QMainWindow(parent), read_only(false), @@ -47,9 +51,13 @@ QETElementEditor::QETElementEditor(QWidget *parent) : show(); } +/// Destructeur QETElementEditor::~QETElementEditor() { } +/** + Met en place les actions +*/ void QETElementEditor::setupActions() { new_element = new QAction(QIcon(":/ico/new.png"), tr("&Nouveau"), this); open = new QAction(QIcon(":/ico/open.png"), tr("&Ouvrir"), this); @@ -184,6 +192,9 @@ void QETElementEditor::setupActions() { connect(&(ce_scene -> undoStack()), SIGNAL(cleanChanged(bool)), this, SLOT(slot_updateTitle())); } +/** + Met en place les menus. +*/ void QETElementEditor::setupMenus() { file_menu = new QMenu(tr("Fichier"), this); edit_menu = new QMenu(tr("\311dition"), this); @@ -240,6 +251,9 @@ void QETElementEditor::setupMenus() { */ } +/** + Met a jour les menus +*/ void QETElementEditor::slot_updateMenus() { bool selected_items = !ce_scene -> selectedItems().isEmpty(); edit_delete -> setEnabled(selected_items); @@ -250,6 +264,9 @@ void QETElementEditor::slot_updateMenus() { save -> setEnabled(!ce_scene -> undoStack().isClean()); } +/** + Met a jour le titre de la fenetre +*/ void QETElementEditor::slot_updateTitle() { QString title = min_title; title += " - " + ce_scene -> names().name() + " "; @@ -260,6 +277,9 @@ void QETElementEditor::slot_updateTitle() { setWindowTitle(title); } +/** + Met en place l'interface +*/ void QETElementEditor::setupInterface() { // editeur ce_scene = new ElementScene(this, this); @@ -316,20 +336,36 @@ void QETElementEditor::setupInterface() { statusBar() -> showMessage(tr("\311diteur d'\351l\351ments")); } +/** + Passe l'editeur d'element en mode selection : le pointeur deplace les + elements selectionnes et il est possible d'utiliser un rectangle de selection. +*/ void QETElementEditor::slot_setRubberBandToView() { ce_view -> setDragMode(QGraphicsView::RubberBandDrag); } +/** + Passe l'editeur d'element en mode immobile (utilise pour la lecture seule) +*/ void QETElementEditor::slot_setNoDragToView() { ce_view -> setDragMode(QGraphicsView::NoDrag); } +/** + Passe l'editeur en mode normal +*/ void QETElementEditor::slot_setNormalMode() { if (!move -> isChecked()) move -> setChecked(true); ce_view -> setDragMode(QGraphicsView::RubberBandDrag); ce_scene -> slot_move(); } +/** + Met a jour la zone d'information et d'edition. + Si plusieurs parties sont selectionnees, seul leur nombre est affiche. + Sinon, le widget d'edition de la partie est insere. + @see CustomElementPart::elementInformations() +*/ void QETElementEditor::slot_updateInformations() { QList selected_qgis = ce_scene -> selectedItems(); QList selected_parts; @@ -363,6 +399,10 @@ void QETElementEditor::slot_updateInformations() { } } +/** + Affiche le code XML correspondant a l'element dans son etat actuel dans + une boite de dialogue. +*/ void QETElementEditor::xmlPreview() { QMessageBox::information( this, @@ -371,6 +411,10 @@ void QETElementEditor::xmlPreview() { ); } +/** + Charge un fichier + @param filepath Chemin du fichier a charger +*/ void QETElementEditor::fromFile(const QString &filepath) { bool state = true; QString error_message; @@ -424,6 +468,12 @@ void QETElementEditor::fromFile(const QString &filepath) { setFileName(filepath); } + +/** + Enregistre l'element vers un fichier + @param fn Chemin du fichier a enregistrer + @return true en cas de reussite, false sinon +*/ bool QETElementEditor::toFile(const QString &fn) { QFile file(fn); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { @@ -469,11 +519,17 @@ bool QETElementEditor::isReadOnly() const { return(read_only); } +/** + Lance l'assistant de creation d'un nouvel element. +*/ void QETElementEditor::slot_new() { NewElementWizard new_element_wizard; new_element_wizard.exec(); } +/** + Ouvre un fichier +*/ void QETElementEditor::slot_open() { // demande un nom de fichier a ouvrir a l'utilisateur QString user_filename = QFileDialog::getOpenFileName( @@ -513,6 +569,12 @@ void QETElementEditor::slot_reload() { fromFile(_filename); } +/** + Enregistre l'element en cours d'edition. + Si le nom du fichier en cours n'est pas connu, cette methode equivaut a + l'action "Enregistrer sous" + @see slot_saveAs() +*/ bool QETElementEditor::slot_save() { // si on ne connait pas le nom du fichier en cours, enregistrer revient a enregistrer sous if (_filename.isEmpty()) return(slot_saveAs()); @@ -522,6 +584,9 @@ bool QETElementEditor::slot_save() { return(result_save); } +/** + Demande un nom de fichier a l'utilisateur et enregistre l'element +*/ bool QETElementEditor::slot_saveAs() { // demande un nom de fichier a l'utilisateur pour enregistrer l'element QString fn = QFileDialog::getSaveFileName( @@ -545,6 +610,12 @@ bool QETElementEditor::slot_saveAs() { return(result_save); } +/** + @return true si l'element peut etre ferme. + Un element peut etre ferme s'il ne comporte aucune modification. + Si l'element comporte des modifications, la question est posee a + l'utilisateur. +*/ bool QETElementEditor::canClose() { if (ce_scene -> undoStack().isClean()) return(true); // demande d'abord a l'utilisateur s'il veut enregistrer l'element en cours diff --git a/element.h b/element.h index 37837f7b8..f6a881242 100644 --- a/element.h +++ b/element.h @@ -48,16 +48,30 @@ class Element : public QGraphicsItem { // methodes public: + /** + permet de caster un QGraphicsItem en Element avec qgraphicsitem_cast + @return le type de QGraphicsItem + */ virtual int type() const { return Type; } // methodes virtuelles pures a definir dans les classes enfants + /// @return la liste des bornes de cet element virtual QList terminals() const = 0; + /// @return la liste des conducteurs relies a cet element virtual QList conductors() const = 0; + /// @return le nombre de bornes actuel de cet element virtual int nbTerminals() const = 0; + /// @return le nombre de bornes minimum de cet element virtual int nbTerminalsMin() const = 0; + /// @return le nombre de bornes maximum de cet element virtual int nbTerminalsMax() const = 0; + /** + Dessine l'element + */ virtual void paint(QPainter *, const QStyleOptionGraphicsItem *) = 0; + /// @return L'ID du type de l'element virtual QString typeId() const = 0; + /// @return Le nom de l'element virtual QString nom() const = 0; Diagram *diagram() const; diff --git a/elementscategoryeditor.h b/elementscategoryeditor.h index a891be074..50cfee892 100644 --- a/elementscategoryeditor.h +++ b/elementscategoryeditor.h @@ -29,7 +29,6 @@ class ElementsCategoryEditor : public QDialog { // constructeurs, destructeur public: - ElementsCategoryEditor(QWidget * = 0); ElementsCategoryEditor(const QString &, bool = true, QWidget * = 0); virtual ~ElementsCategoryEditor(); diff --git a/elementtextitem.h b/elementtextitem.h index a1ff9c3de..9970d8067 100644 --- a/elementtextitem.h +++ b/elementtextitem.h @@ -42,6 +42,7 @@ class ElementTextItem : public DiagramTextItem { // methodes public: virtual int type() const { return Type; } + /// @return le rectangle delimitant le champ de texte virtual QRectF boundingRect() const { return(QGraphicsTextItem::boundingRect().adjusted(0.0, -1.1, 0.0, 0.0)); } bool followParentRotations() const; void setFollowParentRotations(bool); diff --git a/terminal.h b/terminal.h index ec95d0589..cc6fe4c62 100644 --- a/terminal.h +++ b/terminal.h @@ -43,7 +43,7 @@ class Terminal : public QGraphicsItem { // methodes public: /** - permet de caster un QGraphicsItem en Borne avec qgraphicsitem_cast + permet de caster un QGraphicsItem en Terminal avec qgraphicsitem_cast @return le type de QGraphicsItem */ virtual int type() const { return Type; }