Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef GCHEMPAINT_REACTION_STEP_H
00026 #define GCHEMPAINT_REACTION_STEP_H
00027
00028 #include <gcp/mechanism-step.h>
00029 #include <gccv/structs.h>
00030 #include <set>
00031
00033 namespace gcp {
00034
00035 class Molecule;
00036 class Reaction;
00037 class ReactionArrow;
00038
00039 extern gcu::TypeId ReactionStepType;
00040
00049 class ReactionStep: public MechanismStep
00050 {
00051 public:
00055 ReactionStep ();
00059 virtual ~ReactionStep ();
00060
00069 ReactionStep (Reaction *reaction, std::map<double, gcu::Object*>& Children, std::map<gcu::Object*, gccv::Rect> Objects) throw (std::invalid_argument);
00076 xmlNodePtr Save (xmlDocPtr xml) const;
00083 bool Load (xmlNodePtr node);
00088 double GetYAlign ();
00099 bool OnSignal (gcu::SignalId Signal, gcu::Object *Child);
00100
00106 void AddArrow (ReactionArrow *arrow) {m_Arrows.insert (arrow);}
00113 void RemoveArrow (ReactionArrow *arrow);
00114
00118 std::string Name ();
00125 void AddMolecule (Molecule *molecule, bool signal = true);
00126
00127 private:
00128 void CleanChildren ();
00129
00130 private:
00131 bool m_bLoading;
00132 std::set<ReactionArrow *> m_Arrows;
00133 };
00134
00135 }
00136
00137 #endif // GCHEMPAINT_REACTION_STEP_H