The Gnome Chemistry Utils 0.13.3
|
#include <gcu/object.h>
Public Member Functions | |
Object (TypeId Id=OtherType) | |
virtual | ~Object () |
TypeId | GetType () const |
void | SetId (gchar const *Id) |
char const * | GetId () const |
virtual void | AddChild (Object *object) |
Object * | GetMolecule () const |
Object * | GetReaction () const |
Object * | GetGroup () const |
Document * | GetDocument () const |
Application * | GetApplication () const |
Object * | GetParentOfType (TypeId Id) const |
Object * | GetChild (const gchar *Id) const |
Object * | GetFirstChild (std::map< std::string, Object * >::iterator &i) |
Object * | GetNextChild (std::map< std::string, Object * >::iterator &i) |
Object * | GetDescendant (const char *Id) const |
Object * | GetParent () const |
void | SetParent (Object *Parent) |
virtual xmlNodePtr | Save (xmlDocPtr xml) const |
virtual bool | Load (xmlNodePtr node) |
virtual bool | GetCoords (double *x, double *y, double *z=NULL) const |
virtual void | Move (double x, double y, double z=0.) |
virtual void | Transform2D (Matrix2D &m, double x, double y) |
bool | SaveChildren (xmlDocPtr xml, xmlNodePtr node) const |
void | SaveId (xmlNodePtr node) const |
xmlNodePtr | GetNodeByProp (xmlNodePtr node, char const *Property, char const *Id) |
xmlNodePtr | GetNextNodeByProp (xmlNodePtr node, char const *Property, char const *Id) |
xmlNodePtr | GetNodeByName (xmlNodePtr node, char const *Name) |
xmlNodePtr | GetNextNodeByName (xmlNodePtr node, char const *Name) |
bool | HasChildren () const |
unsigned | GetChildrenNumber () const |
virtual Object * | GetAtomAt (double x, double y, double z=0.) |
virtual bool | Build (std::set< Object * > const &Children) throw (std::invalid_argument) |
virtual double | GetYAlign () |
virtual bool | BuildContextualMenu (UIManager *uim, Object *object, double x, double y) |
void | EmitSignal (SignalId Signal) |
virtual bool | OnSignal (SignalId Signal, Object *Child) |
void | Lock (bool state=true) |
bool | IsLocked () |
Object * | GetFirstLink (std::set< Object * >::iterator &i) |
Object * | GetNextLink (std::set< Object * >::iterator &i) |
void | Link (Object *object) |
void | Unlink (Object *object) |
virtual void | OnUnlink (Object *object) |
void | GetPossibleAncestorTypes (std::set< TypeId > &types) const |
virtual bool | SetProperty (unsigned property, char const *value) |
virtual std::string | GetProperty (unsigned property) const |
virtual void | OnLoaded () |
void | SetDirty (bool dirty=true) |
virtual void | Clear () |
virtual std::string | Name () |
std::string | Identity () |
virtual char const * | HasPropertiesDialog () const |
virtual bool | CanSelect () const |
virtual void | NotifyEmpty () |
void | ShowPropertiesDialog () |
bool | GetDirty (void) const |
Static Public Member Functions | |
static TypeId | AddType (std::string TypeName, Object *(*CreateFunc)(), TypeId id=OtherType) |
static void | AddAlias (TypeId id, std::string TypeName) |
static Object * | CreateObject (const std::string &TypeName, Object *parent=NULL) |
static TypeId | GetTypeId (const std::string &Name) |
static std::string | GetTypeName (TypeId Id) |
static void | AddMenuCallback (TypeId Id, BuildMenuCb cb) |
static void | AddRule (TypeId type1, RuleId rule, TypeId type2) |
static void | AddRule (const std::string &type1, RuleId rule, const std::string &type2) |
static const std::set< TypeId > & | GetRules (TypeId type, RuleId rule) |
static const std::set< TypeId > & | GetRules (const std::string &type, RuleId rule) |
static void | SetCreationLabel (TypeId Id, std::string Label) |
static const std::string & | GetCreationLabel (TypeId Id) |
static const std::string & | GetCreationLabel (const std::string &TypeName) |
static SignalId | CreateNewSignalId () |
Protected Member Functions | |
virtual Dialog * | BuildPropertiesDialog () |
This is the base class for most other objects in the gcu namespace.
gcu::Object::Object | ( | TypeId | Id = OtherType | ) |
Used to create an object of type Id. Should only be called from the constructor of a derived class.
virtual gcu::Object::~Object | ( | ) | [virtual] |
The standard destructor of Object instances. Automatically called when the object is destroyed.
static void gcu::Object::AddAlias | ( | TypeId | id, |
std::string | TypeName | ||
) | [static] |
id | the Id of an existing type. |
TypeName | a new name for the type. |
This method is used to add an alternative name to an existing type.
virtual void gcu::Object::AddChild | ( | Object * | object | ) | [virtual] |
object | the Object instance to add as a child. |
Each Object instance maintains a list of its children. If object has already a parent, it will be removed from its parent children list. The new parent Object must have a Document ancestor to ensure that Ids are unique.
Reimplemented in gcu::Molecule, and gcp::Molecule.
static void gcu::Object::AddMenuCallback | ( | TypeId | Id, |
BuildMenuCb | cb | ||
) | [static] |
Id | the TypeId of the Object derived class |
cb | the BuildMenuCb callback to call when building the menu. |
adds a callback for modifying the contextual menu of objects of type Id.
This method is deprecated, use Application::AddMenuCallback() instead.
static void gcu::Object::AddRule | ( | const std::string & | type1, |
RuleId | rule, | ||
const std::string & | type2 | ||
) | [static] |
type1 | the name of the first class in the rule |
rule | the new rule value |
type2 | the name of the second class in the rule |
This method is deprecated, use Application::AddRule() instead.
Adds a rule.
type1 | the TypeId of the first class in the rule |
rule | the new rule value |
type2 | the TypeId of the second class in the rule |
This method is deprecated, use Application::AddRule() instead.
Adds a rule.
static TypeId gcu::Object::AddType | ( | std::string | TypeName, |
Object *(*)() | CreateFunc, | ||
TypeId | id = OtherType |
||
) | [static] |
TypeName | the name of the new type. |
CreateFunc | a pointer to a function returning a pointer to a new object of the new type. |
id | the Id of the type to create if a standard one or OtherType for a new type. In this last case, this parameter can be omitted. |
This method is used to register a new type derived from Object.
This method is deprecated, use Application::AddType() instead.
virtual bool gcu::Object::Build | ( | std::set< Object * > const & | Children | ) | throw (std::invalid_argument) [virtual] |
Children | the list of objects used as children to build the object |
This method is called to build a parent object from its children. The object must already exist.
virtual bool gcu::Object::BuildContextualMenu | ( | UIManager * | uim, |
Object * | object, | ||
double | x, | ||
double | y | ||
) | [virtual] |
uim | the UIManager to populate. |
object | the Object on which occured the mouse click. |
x | x coordinate of the mouse click. |
y | y coordinate of the mouse click. |
This method is called to build a contextual menu for the object. It is called by Object::ShowContextualMenu, so it should not be necessary to call it directly. It should be overriden by derived classes when a contextual menu is needed. Typically, each class adds a submenu and calls the same method for its parent. Default implementation calls registered BuildMenuCb callbacks and the parent's method. Derived classes should call Object::BuildContextualMenu before returning.
Reimplemented in gcp::Mesomery, gcp::Molecule, gcp::Reactant, gcp::ReactionArrow, and gcp::Reaction.
virtual Dialog* gcu::Object::BuildPropertiesDialog | ( | ) | [protected, virtual] |
virtual bool gcu::Object::CanSelect | ( | ) | const [inline, virtual] |
Reimplemented in gcp::MechanismArrow.
virtual void gcu::Object::Clear | ( | ) | [virtual] |
Deletes all children. Derived classes might override this method if needed.
Reimplemented in gcu::Chem3dDoc, gcu::Molecule, gcp::Document, and gcp::Molecule.
static SignalId gcu::Object::CreateNewSignalId | ( | ) | [static] |
static Object* gcu::Object::CreateObject | ( | const std::string & | TypeName, |
Object * | parent = NULL |
||
) | [static] |
TypeName | the name of the new type. |
parent | the parent of the newly created object or NULL. if NULL, the parameter can be omitted. |
Used to create an object of type name TypeName. The Object::AddType method must have been called with the same TypeName parameter. if parent is given and not NULL, the new Object will be a child of parent. It will also be given a default Id.
This method is deprecated, use Application::CreateObject() instead.
void gcu::Object::EmitSignal | ( | SignalId | Signal | ) |
Signal | the appropriate SignalId |
Sends a signal to the object parent. The signal may be propagated to the ancestors (see Object::OnSignal ()).
Application* gcu::Object::GetApplication | ( | ) | const |
Used to get the Application owning the Object.
virtual Object* gcu::Object::GetAtomAt | ( | double | x, |
double | y, | ||
double | z = 0. |
||
) | [virtual] |
x | the x coordinate |
y | the y coordinate |
z | the z coordinate |
Reimplemented in gcp::Bond, gcp::Fragment, and gcp::Molecule.
Object* gcu::Object::GetChild | ( | const gchar * | Id | ) | const |
Id | the Id of the child searched. |
To search the Object in lower shells of the tree, use the Object::GetDescendant method.
unsigned gcu::Object::GetChildrenNumber | ( | ) | const [inline] |
virtual bool gcu::Object::GetCoords | ( | double * | x, |
double * | y, | ||
double * | z = NULL |
||
) | const [virtual] |
x | a pointer to the double value which will receive the x coordinate of the Object. |
y | a pointer to the double value which will receive the y coordinate of the Object. |
z | a pointer to the double value which will receive the z coordinate of the Object or NULL for 2D representations. |
Retrieves the coordinates of this Object if relevant.
Reimplemented in gcu::Atom, gcp::Arrow, gcp::Fragment, gcp::ReactionOperator, and gcp::Text.
static const std::string& gcu::Object::GetCreationLabel | ( | TypeId | Id | ) | [static] |
Id | the TypeId of a class |
This method is deprecated, use Application::GetCreationLabel() instead.
static const std::string& gcu::Object::GetCreationLabel | ( | const std::string & | TypeName | ) | [static] |
TypeName | the name of a class |
This method is deprecated, use Application::GetCreationLabel() instead.
Object* gcu::Object::GetDescendant | ( | const char * | Id | ) | const |
gcu::Object::GetDirty | ( | void | ) | const [inline] |
Document* gcu::Object::GetDocument | ( | ) | const |
i | a C++ std::map iterator. |
Use this function to retrieve the first child of the object and initialize the iterator.
i | a C++ std::set<Object*> iterator. |
Use this function to retrieve the first object linked to the object and initialize the iterator. Links can be used when the relation between the objects is not a parent to child one.
Object* gcu::Object::GetGroup | ( | ) | const |
char const* gcu::Object::GetId | ( | ) | const [inline] |
Definition at line 185 of file object.h.
Referenced by gcp::Molecule::GetAlignmentId().
Object* gcu::Object::GetMolecule | ( | ) | const |
Used to get the Molecule in the Object instances ancestors. Overloaded methods should call the base class Object::AddChild.
i | a C++ std::map iterator initialized by Object::GetFirstChild. |
Use this method to iterate through the list of the Object children.
i | a C++ std::set<Object*> iterator initialized by Object::GetFirstLink. |
Use this method to iterate through the list of Object instances linked to the object.
xmlNodePtr gcu::Object::GetNextNodeByName | ( | xmlNodePtr | node, |
char const * | Name | ||
) |
node | the xmlNodePtr returned by Object::GetNodeByName or the last call to Object::GetNextNodeByName. |
Name | the name of the xmlNode searched. |
Helper method used to iterate through a list of xmlNodePtr searching for nodes whose name is Name. Generally, the iteration is initialized by a call to Object::GetNodeByName.
xmlNodePtr gcu::Object::GetNextNodeByProp | ( | xmlNodePtr | node, |
char const * | Property, | ||
char const * | Id | ||
) |
node | the xmlNodePtr returned by Object::GetNodeByProp or the last call to Object::GetNextNodeByProp. |
Property | the name of the property used in the search. |
Id | the value to match to the property. |
Helper method used to iterate through a list of xmlNodePtr searching for a special value of a property. Generally, the iteration is initialized by a call to Object::GetNodeByProp.
xmlNodePtr gcu::Object::GetNodeByName | ( | xmlNodePtr | node, |
char const * | Name | ||
) |
node | the node where the search is to be done. |
Name | the name of the xmlNode searched. |
Helper method used in conjunction with Object::GetNextNodeByProp to search xmlNode instances of name Name in the children of node.
xmlNodePtr gcu::Object::GetNodeByProp | ( | xmlNodePtr | node, |
char const * | Property, | ||
char const * | Id | ||
) |
node | the node where the search is to be done. |
Property | the name of the property used in the search. |
Id | the value to match to the property. |
Helper method used in conjunction with Object::GetNextNodeByProp to search xmlNode instances having a property Property whose value is Id in the children of node.
Object* gcu::Object::GetParent | ( | ) | const [inline] |
Id | the type of the ancestor searched. |
Used to get the first ancestor of type Id in the Object instances ancestors. GetDocument, GetMolecule and GetReaction are special cases of this method.
void gcu::Object::GetPossibleAncestorTypes | ( | std::set< TypeId > & | types | ) | const |
types | the list of TypeId values to fill |
Fills types with all valid ancestor types for the object as defined by rules created with AddRule
virtual std::string gcu::Object::GetProperty | ( | unsigned | property | ) | const [virtual] |
property | the property id as defined in objprops.h |
Used when saving to get properties from various objects. All classes supporting the mechanism must overload this method.
Reimplemented in gcu::Atom, gcu::Bond, gcp::Bond, gcp::Document, gcp::TextObject, gcr::Atom, and gcr::Document.
Object* gcu::Object::GetReaction | ( | ) | const |
static const std::set<TypeId>& gcu::Object::GetRules | ( | const std::string & | type, |
RuleId | rule | ||
) | [static] |
type | the name of a class |
rule | a RuleId value |
This method is deprecated, use Application::GetRules() instead.
type | the TypeId of a class |
rule | a RuleId value |
This method is deprecated, use Application::GetRules() instead.
TypeId gcu::Object::GetType | ( | void | ) | const [inline] |
Reimplemented in gcp::Bond.
static TypeId gcu::Object::GetTypeId | ( | const std::string & | Name | ) | [static] |
Name | the name of the Object derived class |
static std::string gcu::Object::GetTypeName | ( | TypeId | Id | ) | [static] |
Id | the TypeId of the Object derived class |
virtual double gcu::Object::GetYAlign | ( | ) | [virtual] |
Used to retrieve the y coordinate for alignment. The default implementation returns 0.0 and every derived class for which alignment has a meaning should implement this method.
Reimplemented in gcp::Arrow, gcp::Atom, gcp::Bond, gcp::Document, gcp::Fragment, gcp::MechanismStep, gcp::Mesomer, gcp::Mesomery, gcp::Molecule, gcp::Reactant, gcp::ReactionOperator, gcp::ReactionStep, gcp::Reaction, and gcp::Text.
bool gcu::Object::HasChildren | ( | ) | const [inline] |
virtual char const* gcu::Object::HasPropertiesDialog | ( | ) | const [virtual] |
std::string gcu::Object::Identity | ( | ) |
bool gcu::Object::IsLocked | ( | ) | [inline] |
void gcu::Object::Link | ( | Object * | object | ) |
object | the object to link. |
Adds a link to object.
virtual bool gcu::Object::Load | ( | xmlNodePtr | node | ) | [virtual] |
node | a pointer to the xmlNode containing the serialized object. |
Used to load an Object in memory. The Object must already exist.
Example:
std::string str = (const char*)node->name; Object* pObject = Object::CreateObject(str, this); if (pObject) { if (!pObject->Load(node)) delete Object; } else cerr << "Warning: unknown object: " << str << endl;
Reimplemented in gcu::Atom, gcu::Bond, gcp::Arrow, gcp::Atom, gcp::Document, gcp::Electron, gcp::FragmentAtom, gcp::FragmentResidue, gcp::Fragment, gcp::MechanismArrow, gcp::MechanismStep, gcp::Mesomer, gcp::MesomeryArrow, gcp::Mesomery, gcp::Molecule, gcp::Reactant, gcp::ReactionArrow, gcp::ReactionProp, gcp::ReactionStep, gcp::Reaction, gcp::TextObject, gcp::Text, and gcr::Bond.
void gcu::Object::Lock | ( | bool | state = true | ) |
state | whether to block signals or not |
Blocks signals if State is true and unblocs if state is false.
Since 0.4.2
virtual void gcu::Object::Move | ( | double | x, |
double | y, | ||
double | z = 0. |
||
) | [virtual] |
x | the x component of the transation vector. |
y | the y component of the transation vector. |
z | the z component of the transation vector. |
Used to move an object. This virtual method should most often be overrided by Object derived classes for which it makes sense. The base Object class has no coordinates and the default method only loads its id and children.
Reimplemented in gcu::Atom, gcu::Bond, gcp::Arrow, gcp::Atom, gcp::Bond, gcp::Fragment, gcp::ReactionArrow, gcp::ReactionOperator, gcp::TextObject, and gcr::Bond.
virtual std::string gcu::Object::Name | ( | ) | [virtual] |
Reimplemented in gcu::Atom, gcu::Bond, gcu::Chain, gcu::Cycle, gcu::Document, gcu::Molecule, gcp::Arrow, gcp::Electron, gcp::Fragment, gcp::MechanismArrow, gcp::MechanismStep, gcp::Mesomer, gcp::MesomeryArrow, gcp::Mesomery, gcp::Reactant, gcp::ReactionArrow, gcp::ReactionOperator, gcp::ReactionProp, gcp::ReactionStep, gcp::Reaction, and gcp::Text.
virtual void gcu::Object::NotifyEmpty | ( | ) | [inline, virtual] |
Called by Object::Destructor() when the parent becomes empty. Default implementation does nothing.
Reimplemented in gcp::MechanismStep.
virtual void gcu::Object::OnLoaded | ( | ) | [virtual] |
This method should be called when an object has been fully loaded. The default method doesn't do anything.
Reimplemented in gcu::Bond, gcp::Bond, gcp::MechanismArrow, gcp::Molecule, gcp::ReactionArrow, and gcp::ReactionStep.
Signal | the appropriate SignalId |
Child | the child which emitted the signal or NULL |
This function is called by the framework when a signal has been emitted for the object. It should not be called by a program; call Object::EmitSignal instead.
Reimplemented in gcp::Document, gcp::Electron, gcp::MechanismStep, gcp::Mesomer, gcp::Mesomery, gcp::Molecule, gcp::Reactant, gcp::ReactionArrow, gcp::ReactionProp, gcp::ReactionStep, and gcp::Reaction.
virtual void gcu::Object::OnUnlink | ( | Object * | object | ) | [virtual] |
object | the object just unlinked by Object::Unlink. |
Virtual method called when an object has been unlinked. Programs should not call it directly, but should call Object::OnUnlink instead.
virtual xmlNodePtr gcu::Object::Save | ( | xmlDocPtr | xml | ) | const [virtual] |
xml | the xmlDoc used to save the document. |
Used to save the Object to the xmlDoc. Each serializable Object should implement this virtual method.
Reimplemented in gcu::Atom, gcu::Bond, gcp::Atom, gcp::Electron, gcp::FragmentAtom, gcp::FragmentResidue, gcp::Fragment, gcp::MechanismArrow, gcp::MechanismStep, gcp::MesomeryArrow, gcp::Molecule, gcp::Reactant, gcp::ReactionArrow, gcp::ReactionStep, and gcp::Text.
bool gcu::Object::SaveChildren | ( | xmlDocPtr | xml, |
xmlNodePtr | node | ||
) | const |
xml | the xmlDoc used to save the document. |
node | the node representing the Object. |
This method calls Object::Save fo each child of the Object instance and add the xmlNode returned to the children of node. It might be called from the Save method of objects having serializable children.
void gcu::Object::SaveId | ( | xmlNodePtr | node | ) | const |
node | the node representing the Object. |
This helper method saves the Id of the node as a property of the xmlNode.
static void gcu::Object::SetCreationLabel | ( | TypeId | Id, |
std::string | Label | ||
) | [static] |
Id | the TypeId of a class |
Label | the string to display in a contextual menu |
Used to give a label for contextual menus used when the creation of an instance of the class seems possible.
This method is deprecated, use Application::SetCreationLabel() instead.
void gcu::Object::SetDirty | ( | bool | dirty = true | ) |
dirty | should be true if the object needs some update, false otherwise. For a document, it means that the document has been changed. |
Reimplemented in gcp::Document.
void gcu::Object::SetId | ( | gchar const * | Id | ) |
Id | the id of the Object instance. |
Every object must have an Id, since searches in the document tree uses it.
void gcu::Object::SetParent | ( | Object * | Parent | ) |
virtual bool gcu::Object::SetProperty | ( | unsigned | property, |
char const * | value | ||
) | [virtual] |
property | the property id as defined in objprops.h |
value | the property value as a string |
Used when loading to set properties to various objects. If the method returns false, the property should be set again later. This might happen if an atom does not exists when one of its bonds is loaded. All classes supporting the mechanism must overload this method.
Reimplemented in gcu::Atom, gcu::Bond, gcp::Arrow, gcp::Atom, gcp::Bond, gcp::Document, gcp::Fragment, gcp::ReactionArrow, gcp::Text, gcr::Atom, and gcr::Document.
void gcu::Object::ShowPropertiesDialog | ( | ) |
Exposes the gcu::Dialog related to the object properties if it exists.
virtual void gcu::Object::Transform2D | ( | Matrix2D & | m, |
double | x, | ||
double | y | ||
) | [virtual] |
m | the Matrix2D of the transformation. |
x | the x component of the center of the transformation. |
y | the y component of the center of the transformation. |
Used to move and/or transform an object. This virtual method must be overrided by Object derived classes for which it makes sense. The base Object class has no coordinates and the default method calls the corresponding method for every child.
Reimplemented in gcu::Atom, gcu::Bond, gcp::Arrow, gcp::Atom, gcp::Bond, gcp::Electron, gcp::Fragment, gcp::MechanismArrow, gcp::Mesomery, gcp::Molecule, gcp::Reaction, and gcp::Text.
void gcu::Object::Unlink | ( | Object * | object | ) |
object | the object to unlink. |
Unlinks object and calls Object::OnUnlink.