Quick links: Tutorial - Examples - Files - Symbols.
Classes: Hierarchy - Index - List - Members.
Namespaces: Index - base - cs - display.

Classes | Public Types | Public Member Functions | Static Public Attributes | Protected Types | Protected Member Functions | Protected Attributes | List of all members
cogitantdisplay::Editor Class Reference

Éditeur de l'objet contenu dans le Panel. More...

#include "cogitant/display/editor.h"

Inheritance diagram for cogitantdisplay::Editor:
cogitantdisplay::PanelEventHandler cogitantdisplay::EditorGraph

Classes

class  Command
 Commandes devant être exécutées par l'éditeur. More...
 

Public Types

enum  CommandType {
  SELECT_ADD, SELECT_CLEAR, SELECT_REMOVE, SELECT_ALL,
  MOVE_BEGIN, MOVE_MOVE, MOVE_END, MOVE_CANCEL,
  EDIT, ERASE, UNLINK_ALL, UNLINK,
  LINK, NEWELEMENT_BEGIN, NEWELEMENT_END, SELECT_MODE,
  COPY, CUT, PASTE_BEGIN, PASTE_END,
  OPEN, SAVE, SAVE_AS, NEW,
  CLOSE, VERIFY, VERIFY_CLEAR, UNDO,
  REDO, UNKNOWN
}
 Type de commande. More...
 
typedef unsigned char ProducerState
 État d'un producteur de commande. More...
 

Public Member Functions

 Editor (Panel *panel, std::string const &nf, DialogHandler *pdh, Clipboard *clipboard=NULL)
 Constructeur. More...
 
virtual ~Editor ()
 Destructeur. More...
 
bool onMouseButton (int button, Point const &p, bool down, Panel::KbdState ks)
 Réponse à l'évènement clic-souris. More...
 
bool onMouseMove (Point const &p)
 Réponse à l'évènement déplacement curseur souris. More...
 
bool onKey (Panel::KbdState ks, Panel::KbdKey kk)
 Réponse à l'évènement appui touche. More...
 
bool onCommandEvent (Command const &cmd)
 Gestion des évènements en provenance du menu ou de la barre d'icones. More...
 
virtual bool canExec (Command const &command) const
 L'éditeur peut-il exécuter la commande ? Par défaut cette méthode retoure toujours faux: l'éditeur ne permet l'exécution d'aucune commande. More...
 
virtual void exec (Command const &command, Clipping &cl)
 Exécution de la commande. More...
 
void addCommandProducer (EditorCommandProducer *pc)
 Ajout d'un producteur de commandes. More...
 
void addListener (EditorListener *l)
 Ajout d'un gestionnaire d'évènements. More...
 
virtual void refresh ()
 Rafraichissement de tous les EditorCommandProducer. More...
 
virtual ProducerState producerState (Command const &cmd) const
 État du producteur de commande. More...
 
virtual std::string producerIconName (Command const &cmd) const
 Accès au nom de l'image correspondant à l'icône du producteur de commande. More...
 
virtual char const ** producerXpm (Command const &cmd) const
 Accès au XPM de l'image correspondant à l'icône du producteur de commande. More...
 
virtual std::string producerToolTip (Command const &cmd) const
 Accès à la chaine de description d'une commande. More...
 
virtual void defaultProducersToolbar (std::vector< Command > &dpt) const
 Commandes des producteurs d'une barre d'outils par défaut de l'éditeur. More...
 
std::list< EditorCommandProducer * > const & producers () const
 Les producteurs de commande. More...
 
DisplayHandler const * displayHandler () const
 Accès raccourci au gestionnaire d'affichage. More...
 
DrawHandler const * drawHandler () const
 Accès raccourci au gestionnaire de dessin. More...
 
LayoutHandler const * layoutHandler () const
 Accès raccourci au gestionnaire de mise en forme. More...
 
Context const * context () const
 Accès raccourci au contexte. More...
 
Contextcontext ()
 Accès raccourci au contexte. More...
 
Drawingdrawing ()
 Accès raccourci au dessin. More...
 
Drawing const * drawing () const
 Accès raccourci au dessin. More...
 
DialogHandlerdialogHandler ()
 Accès au gestionnaire de boites de dialogue de propriétés. More...
 
Panelpanel ()
 Accès au Panel. More...
 
Panel const * panel () const
 Accès au Panel. More...
 
bool readOnly () const
 Accès à l'état de lecture seule. More...
 
bool needsSave () const
 Retourne vrai ssi le graphe a été modifié depuis la dernière sauvegarde. More...
 
bool canClose () const
 Retourne vrai ssi l'éditeur peut être fermé immédiatement. More...
 
void addClipping (Drawing::Element const &el, Clipping &cl, bool linked=false)
 Ajout au clipping de la zone correspondant à l'élément. More...
 
void setPropertyBefore (cogitant::Property::Type tp, Drawing::Element const &el, Clipping *cl)
 Traitements à effectuer avant modification d'une propriété d'un élément. More...
 
void setPropertyAfter (cogitant::Property::Type tp, Drawing::Element const &el, Clipping *cl)
 Traitements à effectuer après modification d'une propriété d'un élément. More...
 
virtual void setFileName (std::string const &fn)
 Modification du nom de fichier associé au dessin édité. More...
 
virtual void setReadOnly (bool ro)
 Modification de l'état de lecture seule. More...
 
virtual void setNeedsSave (bool ns=true)
 Signalement d'une modification du dessin. More...
 
virtual void setPanelResize (bool pr=true)
 Choix du redimensionnement automatique du Panel. More...
 
- Public Member Functions inherited from cogitantdisplay::PanelEventHandler
 PanelEventHandler (Panel *panel)
 Constructeur. More...
 
virtual ~PanelEventHandler ()
 Destructeur. More...
 
virtual void setPanel (Panel *panel)
 Sélection du Panel. More...
 
Panelpanel ()
 Accès au Panel. More...
 

Static Public Attributes

static const ProducerState PRODUCER_VISIBLE
 Le producteur est visible. More...
 
static const ProducerState PRODUCER_ENABLED
 Le producteur peut être sélectionné par l'utilisateur. More...
 
static const ProducerState PRODUCER_TOGGLE
 Le producteur a deux états sélectionné / non sélectionné. More...
 
static const ProducerState PRODUCER_SELECTED
 Le producteur est dans l'état "sélectionné". More...
 

Protected Types

enum  Mode {
  MODE_SELECT, MODE_MOVE_FIRST, MODE_MOVE, MODE_NEWELEMENT,
  MODE_PASTE
}
 Mode de l'éditeur. More...
 

Protected Member Functions

virtual bool under (Point const &p, Drawing::Element &el, bool selectableonly) const
 Quel est l'objet situé sous le point. More...
 
bool execIfPossible (Command const &command, Clipping &cl)
 Un simple raccourci. More...
 
virtual void setMode (Mode m, unsigned int submode=0)
 Passage dans un nouveau mode. More...
 
Mode mode () const
 Accès au mode.
 
unsigned int subMode () const
 Accès au sous-mode. More...
 
virtual unsigned int undoMax () const
 Nombre maximum d'annulations possibles. More...
 
virtual unsigned int undoSize () const
 Nombre actuel d'annulations possibles. More...
 
virtual void undoMemo (Command const &cmd)
 Stockage du dessin actuel dans l'historique. More...
 
virtual void undoApply (unsigned int h)
 Modifie le dessin courant qui est remplacé par le dessin stocké dans l'historique. More...
 
virtual unsigned int undoPos () const
 Position actuelle dans l'historique. More...
 
virtual void undoClear ()
 Vider l'historique. More...
 
virtual void clearSelect (Clipping &cl)
 Vider la sélection. More...
 
virtual void addSelect (Drawing::Element const &el, Clipping &cl)
 Ajout à la sélection. More...
 
virtual void removeSelect (Drawing::Element const &el, Clipping &cl)
 Retrait de la sélection. More...
 
virtual void childrenSelect (Drawing::Element const &el, Clipping &cl)
 Ajout de des fils d'un élément à la sélection. More...
 
bool isSelected (Drawing::Element const &el)
 L'objet est-il sélectionné. More...
 
virtual void beginMove (Point const &p, Clipping &cl)
 Début du mouvement. More...
 
virtual void endMove (Clipping &cl)
 Fin du mouvement. More...
 
virtual void cancelMove (Clipping &cl)
 Annulation du mouvement. More...
 
virtual void move (Clipping &cl, Coord dx, Coord dy)
 Mouvement. More...
 
virtual void selectMode ()
 Retour au mode de sélection d'objet. More...
 
virtual bool edit (Clipping &cl)
 Édition des objets de la sélection. More...
 
virtual void erase (Clipping &cl)
 Suppression des objets de la sélection. More...
 
virtual void copy ()
 Copie des objets de la sélection dans le presse-papiers. More...
 
virtual void cut (Clipping &cl)
 Coupe les objets de la sélection. More...
 
virtual void pasteBegin ()
 Passage en mode coller. More...
 
virtual void pasteEnd (Point const &p, Clipping &cl)
 Coller. More...
 
virtual void unlinkAll (Clipping &cl)
 Suppression de tous les liens liés aux objets de la sélection. More...
 
virtual void unlink (Drawing::Element const &ellink, bool end, Clipping &cl)
 Suppression d'un lien. More...
 
virtual void link (Drawing::Element const &ellink, Drawing::Element const &newlinked, bool end, Clipping &cl)
 Ajout d'un lien. More...
 
virtual void newElementBegin (unsigned int objecttype)
 Passage en mode création d'objet. More...
 
virtual void newElement (unsigned int objecttype, Point const &p, Clipping &cl)
 Création d'un objet. More...
 
virtual void newElementEnd (unsigned int objecttype, Point const &p, Clipping &cl)
 Création d'un objet et appel éventuel à l'édition des propriétés. More...
 
virtual bool save ()
 Sauvegarde du dessin en cours d'édition. More...
 
virtual bool saveAs ()
 Sauvegarde du dessin en cours d'édition avec demande du nom de fichier. More...
 
virtual bool saveFile ()
 Sauvegarde du dessin en cours d'édition, sans interactions avec l'utilisateur. More...
 
virtual bool open (Clipping &cl)
 Chargement d'un nouveau dessin dans le dessin en cours d'édition. More...
 
virtual bool newDrawing (Clipping &cl)
 Suppression du dessin courant et création d'un nouveau. More...
 
virtual bool close (Clipping &cl)
 Demande à l'utilisateur si il désire sauver les dernières modifications du dessin en cours. More...
 
virtual bool verify (unsigned int verif, Clipping &cl)
 Vérification du dessin en cours d'édition. More...
 
virtual void verifyClear (Clipping &cl)
 Effacement des erreurs signalées. More...
 
virtual void undo (Clipping &cl)
 Annulation de la dernière action. More...
 
virtual void redo (Clipping &cl)
 Annulation de la dernière annulation. More...
 
virtual void setClipboard (Drawing &d)
 Fixe le contenu du presse-papiers au dessin passé en paramètre. More...
 
virtual void initNewElements (std::list< Drawing::Element > const &ne, Point const &cp, Clipping &cl)
 Initialise les coordonnées graphiques de nouveaux objets. More...
 

Protected Attributes

std::string m_filename
 Nom du fichier ayant servi à charger le document courant.
 
std::list< Drawing::Elementm_select
 Éléments sélectionnés.
 
Point m_moveorig
 Coordonnées du point origine du déplacement.
 
std::list< Pointm_selectpos
 Coordonnées des éléments de la sélection avant le mouvement.
 
std::list< Drawing::Elementm_selectlink
 Liens des arêtes avant le mouvement.
 
DialogHandlerm_propdialhandler
 Gestionnaire d'édition de propriétés.
 
bool m_editafternew
 Affichage de la boîte d'édition des propriétés juste après la création d'un élément. More...
 
bool m_selectafternew
 Retour au mode sélection après création d'un nouvel élément. More...
 
bool m_panelresize
 Redimensionnement automatique des ascenseurs dans le Panel d'affichage. More...
 
Clipboardm_clipboard
 Presse-papiers utilisé par l'éditeur.
 
- Protected Attributes inherited from cogitantdisplay::PanelEventHandler
Panelm_panel
 Panel géré par le gestionnaire d'évènements.
 

Detailed Description

Éditeur de l'objet contenu dans le Panel.

Un objet éditeur récupère les évènements (c'est une sorte de EventHandler) produits par le Panel représentant le dessin (Drawing) et utilise ces évènements pour permettre une modification du dessin. Plus précisément, les méthodes onMouseButton(), onMouseMove() et onKey() sont redéfinies et appellent la méthode de modification (exec()), qui peut être redéfinie dans les sous classes.
La gestion de l'historique doit être implémentée dans les sous classes d'Editor. En effet, Editor ne fournit que les fonctions de base de gestion de l'historique, mais ne se charge pas de mémoriser l'objet édité (puisque Editor ne connait pas le type d'objets édités). Dans les sous-classes, il est donc nécessaire de redéfinir les méthodes undoMemo() et undoApply() afin que l'annulation de commande devienne disponible.

Examples:
wxdisplay.cpp.

Member Typedef Documentation

◆ ProducerState

État d'un producteur de commande.

Les variables de ce type peuvent être utilisées en association avec les constantes PRODUCER_xxx.

See also
Editor::producerState().

Member Enumeration Documentation

◆ CommandType

Type de commande.

Enumerator
SELECT_ADD 

Ajout à la sélection.

SELECT_CLEAR 

Vider la sélection.

SELECT_REMOVE 

Retrait de la sélection.

SELECT_ALL 

Ajout de tout à la sélection.

MOVE_BEGIN 

Début de déplacement de la sélection.

MOVE_MOVE 

Déplacement de la sélection.

MOVE_END 

Fin du déplacement de la sélection.

MOVE_CANCEL 

Annulation du déplacement de la sélection (et retour à la position initiale).

EDIT 

Édition de la sélection.

ERASE 

Suppression de la sélection.

UNLINK_ALL 

Détachement de tous les liens liés aux objets de la sélection.

UNLINK 

Détachement d'un lien (n'agit pas sur la sélection).

Le paramètre booléen de la commande représente si l'origine du lien (false) ou l'extrémité (true) est en cause et le paramètre m_element1 contient le lien.

LINK 

Création d'un lien (n'agit pas sur la sélection).

Le paramètre booléen de la commande représente si l'origine du lien (false) ou l'extrémité (true) est en cause. Le paramètre m_element1 est l'arête, et m_element2 l'objet à lier.

NEWELEMENT_BEGIN 

Création d'un élément (passage en mode création).

Après l'exécution de la commande l'éditeur passe en mode création (d'un objet donné) : un clic provoquera la création d'un objet à l'endroit sélectionné. Évidemment, différents types d'objets peuvent être crées, et repérés par les arguments de la commande.

NEWELEMENT_END 

Création d'un élément.

Commande correspondant à un clic alors que l'éditeur était en mode de création.

SELECT_MODE 

Sortie du mode création (ou coller pp) sans création et retour au mode sélection.

COPY 

Copie de la sélection dans le presse papier.

CUT 

Couper dans le presse papier.

L'exécution de cette commande est équivalente à COPY suivi de ERASE.

PASTE_BEGIN 

Passage en mode coller.

Après l'exécution de cette commande, l'éditeur passe en mode coller : un clic provoquera un collage du presse papier à l'endroit sélectionné.

PASTE_END 

Collage du presse papier.

OPEN 

Chargement d'un nouveau dessin.

SAVE 

Sauvegarde du dessin dans le nom courant.

SAVE_AS 

Sauvegarde dans un nouveau nom.

NEW 

Effacement du dessin courant, et création d'un nouveau.

CLOSE 

Fermeture du dessin courant.

Cette commande ne fait qu'appeler la méthode close(). Si rien d'autre n'est fait, le dessin reste affiché à l'écran, car la destruction de la fenêtre est dependante de l'application qui utilise l'Editor.

VERIFY 

Vérification du dessin en cours d'édition.

m_c1 décrit les vérifications qui doivent être effectuées. Si m_c1 vaut 0, toutes les vérifications sont effectuées. Dans le cas de la vérification d'un graphe conceptuel, le paramètre m_c1 de la commande contient une combinaison des bits suivants : 1 Vérification des arêtes pendantes, 2 Vérification de la conformité, 4 Vérification des signatures.

VERIFY_CLEAR 

Effacement de tous les objets en erreur (signalés par une vérification).

UNDO 

Annulation de la dernière modification.

REDO 

Annulation de la dernière annulation.

UNKNOWN 

Commande inconnue.

◆ Mode

Mode de l'éditeur.

Enumerator
MODE_SELECT 

Mode par défaut: sélection de déplacement d'éléments.

MODE_MOVE_FIRST 

Déplacement demandé.

Des objets sont sélectionnés et le bouton de la souris est enfoncé, le déplacement commencera donc dès que la souris sera bougée.

MODE_MOVE 

Déplacement en cours.

MODE_NEWELEMENT 

Création d'objet.

MODE_PASTE 

Collage du presse papier.

Constructor & Destructor Documentation

◆ Editor()

cogitantdisplay::Editor::Editor ( Panel panel,
std::string const &  nf,
DialogHandler pdh,
Clipboard clipboard = NULL 
)

Constructeur.

Parameters
panelPanel géré.
nfNom du fichier affiché dans le panel ou chaîne vide si le dessin est nouveau est ne correspond à aucun fichier.
pdhGestionnaire de boîtes de dialogue et d'édition de propriétés. Si NULL est passé, l'édition de propriétés est désactivée, sinon, ce gestionnaire est utilisé.
clipboardPresse-papiers utilisé par l'éditeur. Si NULL est passé (par défaut), un presse-papiers interne (Clipboard_Simple) à l'éditeur est créé (et détruit par le destructeur de l'éditeur). Sinon, le presse-papiers externe, passé en paramètre est utilisé par l'éditeur.

◆ ~Editor()

virtual cogitantdisplay::Editor::~Editor ( )
virtual

Destructeur.

Member Function Documentation

◆ addClipping()

void cogitantdisplay::Editor::addClipping ( Drawing::Element const &  el,
Clipping cl,
bool  linked = false 
)

Ajout au clipping de la zone correspondant à l'élément.

◆ addCommandProducer()

void cogitantdisplay::Editor::addCommandProducer ( EditorCommandProducer pc)

Ajout d'un producteur de commandes.

Parameters
pcLe producteur de commandes ajouté. Attention: les Editor::CommandProducer sont automatiquement détruits quand l'éditeur est détruit.

◆ addListener()

void cogitantdisplay::Editor::addListener ( EditorListener l)

Ajout d'un gestionnaire d'évènements.

Parameters
lLe gestionnaire à ajouter. Attention: les Editor::Listener sont automatiquement détruits quand l'éditeur est détruit.

◆ addSelect()

virtual void cogitantdisplay::Editor::addSelect ( Drawing::Element const &  el,
Clipping cl 
)
protectedvirtual

Ajout à la sélection.

◆ beginMove()

virtual void cogitantdisplay::Editor::beginMove ( Point const &  p,
Clipping cl 
)
protectedvirtual

Début du mouvement.

◆ cancelMove()

virtual void cogitantdisplay::Editor::cancelMove ( Clipping cl)
protectedvirtual

Annulation du mouvement.

◆ canClose()

bool cogitantdisplay::Editor::canClose ( ) const
inline

Retourne vrai ssi l'éditeur peut être fermé immédiatement.

Cette méthode doit être appelée après un appel à onCommandEvent(Command(CLOSE)) pour savoir si l'utilisateur accepte la fermeture (éventuellement après sauvegarde) de l'éditeur ou pas.

◆ canExec()

virtual bool cogitantdisplay::Editor::canExec ( Command const &  command) const
virtual

L'éditeur peut-il exécuter la commande ? Par défaut cette méthode retoure toujours faux: l'éditeur ne permet l'exécution d'aucune commande.

Il est donc nécessaire de définir une sous classe permettant d'exécuter certaines (ou toutes les) commandes.

Reimplemented in cogitantdisplay::EditorGraph.

◆ childrenSelect()

virtual void cogitantdisplay::Editor::childrenSelect ( Drawing::Element const &  el,
Clipping cl 
)
protectedvirtual

Ajout de des fils d'un élément à la sélection.

La sélection est vidée, et les éléments fils de el sont ajoutés.

◆ clearSelect()

virtual void cogitantdisplay::Editor::clearSelect ( Clipping cl)
protectedvirtual

Vider la sélection.

◆ close()

virtual bool cogitantdisplay::Editor::close ( Clipping cl)
protectedvirtual

Demande à l'utilisateur si il désire sauver les dernières modifications du dessin en cours.

Dans plusieurs occasions (fermeture de l'éditeur, chargement d'un nouveau dessin, création d'un nouveau dessin), il est nécessaire de demander à l'utilisateur si il désire sauvegarder les dernières modifications au dessin en cours d'édition. Cette méthode se charge de faire apparaître une boîte de dialogue de confirmation de sauvegarde si le dessin a besoin d'être sauvegardé.

Parameters
clle clipping qui doit être dessiné. En effet, la méthode close vide la sélection, il est donc nécessaire de prévoir un redessin si la sélection est idée et que l'utilisateur décide tout de même de continuer à éditer ce graphe.
Returns
true si le dessin en cours peut être supprimé, ou false si l'utilisateur choisit de ne pas fermer le dessin en cours.

◆ context() [1/2]

Context const* cogitantdisplay::Editor::context ( ) const
inline

Accès raccourci au contexte.

◆ context() [2/2]

Context* cogitantdisplay::Editor::context ( )
inline

Accès raccourci au contexte.

◆ copy()

virtual void cogitantdisplay::Editor::copy ( )
protectedvirtual

Copie des objets de la sélection dans le presse-papiers.

Par défaut, n'effectue aucun traitement, puisque le format est inconnu.

Reimplemented in cogitantdisplay::EditorGraph.

◆ cut()

virtual void cogitantdisplay::Editor::cut ( Clipping cl)
protectedvirtual

Coupe les objets de la sélection.

Par défaut, est équivalent à un appel à copy() suivi de erase().

◆ defaultProducersToolbar()

virtual void cogitantdisplay::Editor::defaultProducersToolbar ( std::vector< Command > &  dpt) const
virtual

Commandes des producteurs d'une barre d'outils par défaut de l'éditeur.

Cette méthode remplit le vector passé en paramètre avec les commandes des producteurs de commande qui doivent affichés par défaut dans une barre d'outils de l'éditeur.

Reimplemented in cogitantdisplay::EditorGraph.

◆ dialogHandler()

DialogHandler* cogitantdisplay::Editor::dialogHandler ( )
inline

Accès au gestionnaire de boites de dialogue de propriétés.

◆ displayHandler()

DisplayHandler const* cogitantdisplay::Editor::displayHandler ( ) const
inline

Accès raccourci au gestionnaire d'affichage.

◆ drawHandler()

DrawHandler const* cogitantdisplay::Editor::drawHandler ( ) const
inline

Accès raccourci au gestionnaire de dessin.

◆ drawing() [1/2]

Drawing* cogitantdisplay::Editor::drawing ( )
inline

Accès raccourci au dessin.

◆ drawing() [2/2]

Drawing const* cogitantdisplay::Editor::drawing ( ) const
inline

Accès raccourci au dessin.

◆ edit()

virtual bool cogitantdisplay::Editor::edit ( Clipping cl)
protectedvirtual

Édition des objets de la sélection.

Par défaut, appelle le gestionnaire de boîte de dialogue de propriétés.

Returns
true si l'utilisateur a confirmé et false s'il a annulé.

◆ endMove()

virtual void cogitantdisplay::Editor::endMove ( Clipping cl)
protectedvirtual

Fin du mouvement.

◆ erase()

virtual void cogitantdisplay::Editor::erase ( Clipping cl)
protectedvirtual

Suppression des objets de la sélection.

Par défaut, n'effectue aucun traitement, la méthode doit donc être redéfinie dans les sous-classes.

Reimplemented in cogitantdisplay::EditorGraph.

◆ exec()

virtual void cogitantdisplay::Editor::exec ( Command const &  command,
Clipping cl 
)
virtual

Exécution de la commande.

Cette méthode constitue le gestionnaire de commandes : à partir d'une commande (générée par les méthodes onMouseButton(), onMouseMove() et onKey() (appelées directement par le Panel suite aux évènements correspondants)), la "bonne" méthode est appelée pour gérer l'évènement en question : beginMove(), endMove(), etc. Il est évidemment possible de redéfinir cette méthode pour définir une nouvelle gestion des commandes (nouvelles méthodes de gestion.).

◆ execIfPossible()

bool cogitantdisplay::Editor::execIfPossible ( Command const &  command,
Clipping cl 
)
protected

Un simple raccourci.

pour if canExec() exec();

◆ initNewElements()

virtual void cogitantdisplay::Editor::initNewElements ( std::list< Drawing::Element > const &  ne,
Point const &  cp,
Clipping cl 
)
protectedvirtual

Initialise les coordonnées graphiques de nouveaux objets.

Cette méthode peut être utilisée lors de la création d'un nouvel objet ou lors d'un coller.

Parameters
neles nouveaux éléments à initialiser. Ces éléments doivent avoir été ajoutés au dessin courant. À noter que la sélection est réinitialisée pour ne contenir que les éléments de cette liste après l'appel à cette méthode. Attention : tous les nouveaux éléments doivent avoir le même parent (mais ces éléments peuvent avoir pour fils des éléments venant d'être ajoutés, dans ce cas, les fils ne doivent pas être présents dans la liste).
cppoint (coordonnées absolues) où les nouveaux objets ont été ajoutés (ce point doit être dans la zone graphique du parent des nouveaux éléments).
clcette méthode modifie le clipping passé pour rajouter la zone nécessaire au dessin des nouveaux éléments.

◆ isSelected()

bool cogitantdisplay::Editor::isSelected ( Drawing::Element const &  el)
protected

L'objet est-il sélectionné.

◆ layoutHandler()

LayoutHandler const* cogitantdisplay::Editor::layoutHandler ( ) const
inline

Accès raccourci au gestionnaire de mise en forme.

◆ link()

virtual void cogitantdisplay::Editor::link ( Drawing::Element const &  ellink,
Drawing::Element const &  newlinked,
bool  end,
Clipping cl 
)
protectedvirtual

Ajout d'un lien.

Par défaut, le seul traitement effectué est la suppression des propriétés cogitant::Property::DISPLAY_POS_X et cogitant::Property::DISPLAY_POS_Y de l'arête. La méthode doit donc être redéfinie dans les sous-classes.

Parameters
ellinkÉlément lien.
newlinkedÉlément à lier au lien.
endextrémité (true) ou origine (false).
cl(D/R) la méthode ajoute à ce clipping la zone nécessaire au rafraichissement.

Reimplemented in cogitantdisplay::EditorGraph.

◆ move()

virtual void cogitantdisplay::Editor::move ( Clipping cl,
Coord  dx,
Coord  dy 
)
protectedvirtual

Mouvement.

◆ needsSave()

bool cogitantdisplay::Editor::needsSave ( ) const
inline

Retourne vrai ssi le graphe a été modifié depuis la dernière sauvegarde.

◆ newDrawing()

virtual bool cogitantdisplay::Editor::newDrawing ( Clipping cl)
protectedvirtual

Suppression du dessin courant et création d'un nouveau.

Par défaut, cette méthode ne modifie pas le dessin courant, et doit être redéfinie dans les sous-classes pour effectuer réellement le traitement. Cette méthode se charge par contre de demander à l'utilisateur si il désire réellement supprimer le dessin.

Parameters
clle clipping qui doit être redessiné.
Returns
true ssi l'utilisateur confirme la suppression du dessin courant.

Reimplemented in cogitantdisplay::EditorGraph.

◆ newElement()

virtual void cogitantdisplay::Editor::newElement ( unsigned int  objecttype,
Point const &  p,
Clipping cl 
)
protectedvirtual

Création d'un objet.

Cette méthode doit effectivement créer un objet, c'est donc celle-ci (parmi les méthodes newElementxxx()) qui doit être redéfinie dans les sous-classes pour créer effectivement l'objet. Après appel à newElement(), la sélection doit contenir exactement l'(les) élément(s) créé(s) (pour l'edition).

Parameters
objecttypetype d'objet à créer (dépend de la sous-classe d'Editor).
ppoint où le nouvel objet doit être créé.
clclipping à modifier pour repérer le nouvel objet.

Reimplemented in cogitantdisplay::EditorGraph.

◆ newElementBegin()

virtual void cogitantdisplay::Editor::newElementBegin ( unsigned int  objecttype)
protectedvirtual

Passage en mode création d'objet.

Par défaut, aucun traitement n'est effectué dans cette méthode, si ce n'est le changement de mode. Ceci devrait d'ailleurs être le traitement par défaut, un nouvel objet n'étant crée que quand la méthode newElement() est appelée.

Parameters
objecttypetype d'objet à créer. objecttype est utilisé pour passer dans le mode de création d'objet, et plus particulièrement pour le sous-mode.

◆ newElementEnd()

virtual void cogitantdisplay::Editor::newElementEnd ( unsigned int  objecttype,
Point const &  p,
Clipping cl 
)
protectedvirtual

Création d'un objet et appel éventuel à l'édition des propriétés.

Cette méthode se comporte comme newElement() (qu'elle appelle d'ailleurs), mais ne devrait pas être redéfinie (au contraire de newElement()) car elle est équivalente à appeler newElement() puis l'édition des propriétés de l'objet créé (et la suppression de cet objet si l'utilisateur annule la boîte de propriétés).

◆ onCommandEvent()

bool cogitantdisplay::Editor::onCommandEvent ( Command const &  cmd)

Gestion des évènements en provenance du menu ou de la barre d'icones.

Cette méthode permet l'exécution de commandes "directement", et s'occupe de redessiner la zone de dessin si nécessaire. Elle ne doit donc pas être appelée à partir des autres méthodes onXxx(), mais doit être appelée (plutot que execIfPossible() ou exec()) pour exécuter l'action et redessiner le Panel d'affichage.

Parameters
cmdcommande à exécuter sur le dessin.
See also
Editor::CommandProducer.

◆ onKey()

bool cogitantdisplay::Editor::onKey ( Panel::KbdState  ks,
Panel::KbdKey  kk 
)
virtual

Réponse à l'évènement appui touche.

Reimplemented from cogitantdisplay::PanelEventHandler.

Reimplemented in cogitantdisplay::EditorGraph.

◆ onMouseButton()

bool cogitantdisplay::Editor::onMouseButton ( int  button,
Point const &  p,
bool  down,
Panel::KbdState  ks 
)
virtual

Réponse à l'évènement clic-souris.

Reimplemented from cogitantdisplay::PanelEventHandler.

◆ onMouseMove()

bool cogitantdisplay::Editor::onMouseMove ( Point const &  p)
virtual

Réponse à l'évènement déplacement curseur souris.

Reimplemented from cogitantdisplay::PanelEventHandler.

◆ open()

virtual bool cogitantdisplay::Editor::open ( Clipping cl)
protectedvirtual

Chargement d'un nouveau dessin dans le dessin en cours d'édition.

Par défaut, cette méthode ne fait qu'afficher un message d'avertissement dans le cas où le dessin en cours d'éditoin n'a pas été sauvé. La méthode doit être redéfinie dans les sous classes, afin de fournir un mécanisme de chargement, depandant du type de dessin manipulé.

Parameters
clle clipping qui doit être redessiné.
Returns
true ssi l'utilisateur confirme le chargement d'un nouveau dessin qui écrase le dessin courant.

Reimplemented in cogitantdisplay::EditorGraph.

◆ panel() [1/2]

Panel* cogitantdisplay::Editor::panel ( )
inline

Accès au Panel.

◆ panel() [2/2]

Panel const* cogitantdisplay::Editor::panel ( ) const
inline

Accès au Panel.

◆ pasteBegin()

virtual void cogitantdisplay::Editor::pasteBegin ( )
protectedvirtual

Passage en mode coller.

Par défaut, auncun traitement n'est effectué dans cette méthode, sice n'est le changement de mode. Ceci devrait être le traitement par défaut, le "coller", n'étant fait que quand paseEnd() est appelée.

◆ pasteEnd()

virtual void cogitantdisplay::Editor::pasteEnd ( Point const &  p,
Clipping cl 
)
protectedvirtual

Coller.

Cette méthode doit effectivement coller le contenu du presse-papiers. Par défaut, cette méthode ne fait rien, et doit être redéfinie dans les sous-classes.

Parameters
ppoint où le presse-papiers doit être collé.
clclipping à modifier pour repérer les nouveaux objets.

Reimplemented in cogitantdisplay::EditorGraph.

◆ producerIconName()

virtual std::string cogitantdisplay::Editor::producerIconName ( Command const &  cmd) const
virtual

Accès au nom de l'image correspondant à l'icône du producteur de commande.

Parameters
cmdcommande générée par le producteur de commande.

Reimplemented in cogitantdisplay::EditorGraph.

◆ producers()

std::list<EditorCommandProducer *> const& cogitantdisplay::Editor::producers ( ) const

Les producteurs de commande.

◆ producerState()

virtual ProducerState cogitantdisplay::Editor::producerState ( Command const &  cmd) const
virtual

État du producteur de commande.

Parameters
cmdcommande du producteur.
Returns
une combinaison de bits représentant l'état.
  • Le bit 0 (PRODUCER_VISIBLE) repère si le producteur doit être montré (1: montré, 0: caché).
  • Le bit 1 (PRODUCTER_ENABLED) repère si le producteur doit être sélectionnable (1: sélectionnable, 0: grisé).
  • Le bit 2 (PRODUCER_TOGGLE) repère si le producteur doit être un widget à 2 états ("toggle") (1: toggle, 0: normal).
  • Le bit 3 (PRODUCER_SELECTED) repère, dans le cas d'un widget à deux états, si le widget doit être sélectionné ou pas (1: sélectionné, 0: non sélectionné).

◆ producerToolTip()

virtual std::string cogitantdisplay::Editor::producerToolTip ( Command const &  cmd) const
virtual

Accès à la chaine de description d'une commande.

Parameters
cmdcommande générée par le producteur de commande.
Returns
chaîne qui est habituellement utilisée pour le "tooltip" du bouton correspondant au producteur.

Reimplemented in cogitantdisplay::EditorGraph.

◆ producerXpm()

virtual char const** cogitantdisplay::Editor::producerXpm ( Command const &  cmd) const
virtual

Accès au XPM de l'image correspondant à l'icône du producteur de commande.

Parameters
cmdcommande générée par le producteur de commande.

Reimplemented in cogitantdisplay::EditorGraph.

◆ readOnly()

bool cogitantdisplay::Editor::readOnly ( ) const
inline

Accès à l'état de lecture seule.

◆ redo()

virtual void cogitantdisplay::Editor::redo ( Clipping cl)
protectedvirtual

Annulation de la dernière annulation.

◆ refresh()

virtual void cogitantdisplay::Editor::refresh ( )
virtual

Rafraichissement de tous les EditorCommandProducer.

◆ removeSelect()

virtual void cogitantdisplay::Editor::removeSelect ( Drawing::Element const &  el,
Clipping cl 
)
protectedvirtual

Retrait de la sélection.

◆ save()

virtual bool cogitantdisplay::Editor::save ( )
protectedvirtual

Sauvegarde du dessin en cours d'édition.

Habituellement, il n'est pas nécessaire de redéfinir cette méthode, car elle se contente d'appeler saveAs() si le nom du fichier est inconu et saveFile() si le nom est connu.

Returns
true ssi la sauvegarde a été effectuée.

◆ saveAs()

virtual bool cogitantdisplay::Editor::saveAs ( )
protectedvirtual

Sauvegarde du dessin en cours d'édition avec demande du nom de fichier.

Les noms des formats étant inconnus, par défaut, cette méthode affiche un sélecteur de fichier permettant de choisir un fichier avec n'importe quelle extension, et appelle saveFile() sur le fichier choisi. Il est donc nécessaire de redéfinir cette méthode pour offrir un sélecteur de fichier permettant de choisir parmi les formats disponibles, en fonction du type de dessin édité.

Returns
true ssi la sauvegarde a été effectuée.

Reimplemented in cogitantdisplay::EditorGraph.

◆ saveFile()

virtual bool cogitantdisplay::Editor::saveFile ( )
protectedvirtual

Sauvegarde du dessin en cours d'édition, sans interactions avec l'utilisateur.

Cette méthode se contente de sauvegarder le dessin en cours d'édition. Quand elle est appelée (par save() ou saveAs(), le nom du dessin est fixé). C'est donc dans cette méthode (et non dans save() ou saveAs() que la sauvegarde doit être effecuée, les deux autres méthodes se contentant d'appeler celle-ci. Par défaut, cette méthode ne fait que modifier l'état de m_needssaver, mais n'effectue pas de réelle sauvegarde, car la sauvegarde dépend du type de dessin édité.

Returns
true ssi la sauvegarde a été effectuée.

Reimplemented in cogitantdisplay::EditorGraph.

◆ selectMode()

virtual void cogitantdisplay::Editor::selectMode ( )
protectedvirtual

Retour au mode de sélection d'objet.

Cette méthode ne fait qu'un appel à setMode(), et il ne devrait pas être nécessaire de la redéfinir.

◆ setClipboard()

virtual void cogitantdisplay::Editor::setClipboard ( Drawing d)
protectedvirtual

Fixe le contenu du presse-papiers au dessin passé en paramètre.

Pour l'instant, cette méthode ne fait que préparer le dessin pour être mis dans le presse-papiers (void DisplayHandler::runLayoutCrop()). Cette méthode devrait ajouter au presse-papiers les formats "standards" (i.e. communs à tous les éditeurs), comme le format graphique bitmap ou vectoriel.

◆ setFileName()

virtual void cogitantdisplay::Editor::setFileName ( std::string const &  fn)
virtual

Modification du nom de fichier associé au dessin édité.

Parameters
fnnom du fichier.

◆ setMode()

virtual void cogitantdisplay::Editor::setMode ( Mode  m,
unsigned int  submode = 0 
)
protectedvirtual

Passage dans un nouveau mode.

Parameters
mnouveau mode.
submode"sous-mode", représente le type d'objet à créer quand le mode est MODE_newElement.

◆ setNeedsSave()

virtual void cogitantdisplay::Editor::setNeedsSave ( bool  ns = true)
virtual

Signalement d'une modification du dessin.

Parameters
nstrue si le dessin est modifié depuis sa dernière sauvegarde, false sinon.

◆ setPanelResize()

virtual void cogitantdisplay::Editor::setPanelResize ( bool  pr = true)
virtual

Choix du redimensionnement automatique du Panel.

◆ setPropertyAfter()

void cogitantdisplay::Editor::setPropertyAfter ( cogitant::Property::Type  tp,
Drawing::Element const &  el,
Clipping cl 
)

Traitements à effectuer après modification d'une propriété d'un élément.

Cette méthode est appelée après une modification d'une propriété d'un élément. Par défaut, le seul traitement effectué par cette méthode est un calcul de la taille des éléments de la sélection (avec mise à jour des tailles des parents) si la propriété est de certains type connus.

◆ setPropertyBefore()

void cogitantdisplay::Editor::setPropertyBefore ( cogitant::Property::Type  tp,
Drawing::Element const &  el,
Clipping cl 
)

Traitements à effectuer avant modification d'une propriété d'un élément.

Cette méthode est appelée avant une modification d'une propriété d'un élément. Par défaut, aucun traitement n'est effectué par cette méthode, mais il est possible, dans une sous-classe d'Editor d'effectuer des traitements particuliers préparant les éléments à la modification et ajoutant des zones au Clipping.

◆ setReadOnly()

virtual void cogitantdisplay::Editor::setReadOnly ( bool  ro)
virtual

Modification de l'état de lecture seule.

Parameters
rotrue pour passer le dessin en lecture seule, false pour autoriser les modifications.

◆ subMode()

unsigned int cogitantdisplay::Editor::subMode ( ) const
inlineprotected

Accès au sous-mode.

Dépend du type d'éditeur.

◆ under()

virtual bool cogitantdisplay::Editor::under ( Point const &  p,
Drawing::Element el,
bool  selectableonly 
) const
protectedvirtual

Quel est l'objet situé sous le point.

Parameters
ppoint.
el(sortie) élément situé à ces coordonnées.
selectableonlysi vrai, retourne obligatoirement un élément sélectionnable (Drawing::isSelectable()).
Returns
true ssi un élément est situé à ces coordonnées.

◆ undo()

virtual void cogitantdisplay::Editor::undo ( Clipping cl)
protectedvirtual

Annulation de la dernière action.

◆ undoApply()

virtual void cogitantdisplay::Editor::undoApply ( unsigned int  h)
protectedvirtual

Modifie le dessin courant qui est remplacé par le dessin stocké dans l'historique.

Cette méthode doit être redéfinie dans les sous-classes d'Editor afin de modifier effectivement l'objet en cours d'édition et le remplacer par l'entrée de l'historique.

Reimplemented in cogitantdisplay::EditorGraph.

◆ undoClear()

virtual void cogitantdisplay::Editor::undoClear ( )
protectedvirtual

Vider l'historique.

Reimplemented in cogitantdisplay::EditorGraph.

◆ undoMax()

virtual unsigned int cogitantdisplay::Editor::undoMax ( ) const
protectedvirtual

Nombre maximum d'annulations possibles.

◆ undoMemo()

virtual void cogitantdisplay::Editor::undoMemo ( Command const &  cmd)
protectedvirtual

Stockage du dessin actuel dans l'historique.

Parameters
cmdla commande qui provoque la modification de l'objet en cours d'édition. Cette méthode doit être redéfinie dans les sous-classes (par défaut, elle ne fait rien), afin de mémoriser soit la commande, soit l'objet en cours d'édition.

Reimplemented in cogitantdisplay::EditorGraph.

◆ undoPos()

virtual unsigned int cogitantdisplay::Editor::undoPos ( ) const
protectedvirtual

Position actuelle dans l'historique.

Reimplemented in cogitantdisplay::EditorGraph.

◆ undoSize()

virtual unsigned int cogitantdisplay::Editor::undoSize ( ) const
protectedvirtual

Nombre actuel d'annulations possibles.

Reimplemented in cogitantdisplay::EditorGraph.

◆ unlink()

virtual void cogitantdisplay::Editor::unlink ( Drawing::Element const &  ellink,
bool  end,
Clipping cl 
)
protectedvirtual

Suppression d'un lien.

Par défaut, n'effectue aucun traitement, la méthode doit donc être redéfinie dans les sous-classes.

Parameters
ellinkÉlément lien.
endextrémité (true) ou origine (false).
cl(D/R) ajoute à ce clipping la zone devant être redessinée pour montrer la suppression du lien.

Reimplemented in cogitantdisplay::EditorGraph.

◆ unlinkAll()

virtual void cogitantdisplay::Editor::unlinkAll ( Clipping cl)
protectedvirtual

Suppression de tous les liens liés aux objets de la sélection.

Par défaut, gènère les commandes UNLINK pour tous les objets liés aux objets de la sélection.

◆ verify()

virtual bool cogitantdisplay::Editor::verify ( unsigned int  verif,
Clipping cl 
)
protectedvirtual

Vérification du dessin en cours d'édition.

Par défaut aucun élément de dessin n'est mis en erreur. Cette méthode est donc équivalente à verifyClear(), et doit donc être redéfinie dans les sous-classes pour vérifier que le dessin construit respecte bien les rêgles choisies.

Parameters
verifDifférentes vérifications peuvent être effectuées selon le type de dessin, et ce paramètre peut donc être utilisé par les sous-classes d'Editor pour lancer les différentes vérifications. Si 0 est passé en paramètre, toutes les vérifications sont exécutées.
clCe clipping est modifié pour contenir les zones des objets en erreur.
Returns
true si le dessin en cours ne comporte aucune erreur (parmi les vérifications effectuées) et false sinon.

Reimplemented in cogitantdisplay::EditorGraph.

◆ verifyClear()

virtual void cogitantdisplay::Editor::verifyClear ( Clipping cl)
protectedvirtual

Effacement des erreurs signalées.

Par défaut, cette opération se contente de supprimer les propriétés cogitant::Property::DISPLAY_ERROR de tous les éléments du dessin en cours d'édition.

Parameters
clCe clipping est modifié pour contenir les zones des objets qui étaient en erreur, et qui doivent donc être réaffichés.

Member Data Documentation

◆ m_editafternew

bool cogitantdisplay::Editor::m_editafternew
protected

Affichage de la boîte d'édition des propriétés juste après la création d'un élément.

Faux par défaut.

◆ m_panelresize

bool cogitantdisplay::Editor::m_panelresize
protected

Redimensionnement automatique des ascenseurs dans le Panel d'affichage.

Faux par défaut.

◆ m_selectafternew

bool cogitantdisplay::Editor::m_selectafternew
protected

Retour au mode sélection après création d'un nouvel élément.

Faux par défaut.

◆ PRODUCER_ENABLED

const ProducerState cogitantdisplay::Editor::PRODUCER_ENABLED
static

Le producteur peut être sélectionné par l'utilisateur.

◆ PRODUCER_SELECTED

const ProducerState cogitantdisplay::Editor::PRODUCER_SELECTED
static

Le producteur est dans l'état "sélectionné".

◆ PRODUCER_TOGGLE

const ProducerState cogitantdisplay::Editor::PRODUCER_TOGGLE
static

Le producteur a deux états sélectionné / non sélectionné.

◆ PRODUCER_VISIBLE

const ProducerState cogitantdisplay::Editor::PRODUCER_VISIBLE
static

Le producteur est visible.