Class Avogadro::QtGui::Molecule#

class Molecule : public QObject, public Molecule#

A QObject derived molecule object with signals/slots.

Unnamed Group

Index atomUniqueId(const AtomType &atom) const#

Get the unique ID of the atom, this will uniquely reference the atom as long as it exists.

Parameters:

atom – The atom to obtain the unique ID of.

Returns:

The unique identifier for the atom, MaxIndex if the atom is invalid or does not belong to this molecule.

Index atomUniqueId(Index atom) const#

Get the unique ID of the atom, this will uniquely reference the atom as long as it exists.

Parameters:

atom – The atom to obtain the unique ID of.

Returns:

The unique identifier for the atom, MaxIndex if the atom is invalid or does not belong to this molecule.

Unnamed Group

virtual bool removeBond(const AtomType &atom1, const AtomType &atom2) override#

Remove the specified bond.

Parameters:
  • atom1 – One atom in the bond.

  • atom2 – The other atom in the bond.

Returns:

True on success, false if the bond was not found. This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

virtual bool removeBond(Index atom1, Index atom2) override#

Remove the specified bond.

Parameters:
  • atom1 – One atom in the bond.

  • atom2 – The other atom in the bond.

Returns:

True on success, false if the bond was not found. This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Unnamed Group

Index bondUniqueId(const BondType &bond) const#

Get the unique ID of the bond, this will uniquely reference the bond as long as it exists.

Parameters:

bond – The bond to obtain the unique ID of.

Returns:

The unique identifier for the bond, MaxIndex if the bond is invalid or does not belong to this molecule.

Index bondUniqueId(Index bond) const#

Get the unique ID of the bond, this will uniquely reference the bond as long as it exists.

Parameters:

bond – The bond to obtain the unique ID of.

Returns:

The unique identifier for the bond, MaxIndex if the bond is invalid or does not belong to this molecule.

Public Types

enum MoleculeChange#

Enumeration of change types that can be given.

Values:

enumerator NoChange#

Useful for initializing MoleculeChange variables.

enumerator Atoms#

Object types that can be changed.

enumerator Bonds#
enumerator UnitCell#
enumerator Selection#
enumerator Layers#
enumerator Properties#
enumerator Added#

Operations that can affect the above types.

enumerator Removed#
enumerator Modified#
typedef Core::Molecule::AtomType AtomType#

Typedef for Atom class.

typedef PersistentAtom<Molecule> PersistentAtomType#

Typedef for PersistentAtom class.

typedef Core::Molecule::BondType BondType#

Typedef for Bond class.

typedef PersistentBond<Molecule> PersistentBondType#

Typedef for PersistentBond class.

Public Functions

Molecule(QObject *parent_ = nullptr)#
virtual ~Molecule() override#

Destroys the molecule object.

Molecule(const Molecule &other)#

copy constructor

Molecule(const Core::Molecule &other)#

copy constructor to copy data from base instance

Molecule &operator=(const Molecule &other)#

Assignment operator

Molecule &operator=(const Core::Molecule &other)#

Assignment operator to copy data from base instance

virtual AtomType addAtom(unsigned char atomicNumber) override#

Add an atom with atomicNumber to the molecule.

Returns:

The atom created.

virtual AtomType addAtom(unsigned char atomicNumber, Index uniqueId)#

Add an atom with atomicNumber and uniqueId to the molecule.

Returns:

The atom created. This can be invalid if the unique ID was already in use.

AtomType addAtom(unsigned char number, Vector3 position3d, Index uniqueId = MaxIndex)#
virtual bool removeAtom(Index index) override#

Remove the specified atom from the molecule.

Parameters:

index – The index of the atom to be removed.

Returns:

True on success, false if the atom was not found.

virtual bool removeAtom(const AtomType &atom) override#

Remove the specified atom from the molecule.

Parameters:

atom – The atom to be removed.

Returns:

True on success, false if the atom was not found. This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

AtomType atomByUniqueId(Index uniqueId)#

Get the atom referenced by the uniqueId, the isValid method should be queried to ensure the id still referenced a valid atom.

Parameters:

uniqueId – The unique identifier for the atom.

Returns:

An Atom object, check it is valid before using it.

inline Core::Array<Index> &atomUniqueIds()#
virtual BondType addBond(const AtomType &a, const AtomType &b, unsigned char bondOrder = 1) override#

Add a bond between the specified atoms.

Parameters:
  • a – The first atom in the bond.

  • b – The second atom in the bond.

  • bondOrder – The order of the bond.

Returns:

The bond created.

virtual BondType addBond(Index atomId1, Index atomId2, unsigned char bondOrder = 1) override#

Add a bond between the specified atoms.

Parameters:
  • atomId1 – The index of the first atom in the bond.

  • atomId2 – The index of the second atom in the bond.

  • bondOrder – The order of the bond.

Returns:

The bond created.

void addBonds(const Core::Array<std::pair<Index, Index>> &bonds, const Core::Array<unsigned char> &orders)#
virtual BondType addBond(const AtomType &a, const AtomType &b, unsigned char bondOrder, Index uniqueId)#

Add a bond between the specified atoms.

Parameters:
  • a – The first atom in the bond.

  • b – The second atom in the bond.

  • bondOrder – The order of the bond.

  • uniqueId – The unique ID to use for the bond.

Returns:

The bond created. This can be invalid if the unique ID was already in use.

virtual BondType addBond(Index atomId1, Index atomId2, unsigned char bondOrder, Index uniqueId)#

Add a bond between the specified atoms.

Parameters:
  • a – The index of the first atom in the bond.

  • b – The index of the second atom in the bond.

  • bondOrder – The order of the bond.

  • uniqueId – The unique ID to use for the bond.

Returns:

The bond created. This can be invalid if the unique ID was already in use.

virtual bool removeBond(Index index) override#

Remove the specified bond.

Parameters:

index – The index of the bond to be removed.

Returns:

True on success, false if the bond was not found.

virtual bool removeBond(const BondType &bond) override#

Remove the specified bond.

Parameters:

bond – The bond to be removed.

Returns:

True on success, false if the bond was not found. This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

BondType bondByUniqueId(Index uniqueId)#

Get the bond referenced by the uniqueId, the isValid method should be queried to ensure the id still referenced a valid bond.

Parameters:

uniqueId – The unique identifier for the bond.

Returns:

A Bond object, check it is valid before using it.

inline Core::Array<Index> &bondUniqueIds()#
Index findAtomUniqueId(Index index) const#
Index findBondUniqueId(Index index) const#
RWMolecule *undoMolecule()#
void swapBond(Index a, Index b)#
void swapAtom(Index a, Index b)#

Public Slots

void emitChanged(unsigned int change)#

Force the molecule to emit the changed() signal.

Parameters:

change – See changed().

Signals

void changed(unsigned int change)#

Indicates that the molecule has changed.

The change variable indicates what has changed, i.e. if change & Atoms == true then atoms were changed in some way, and if change & Removed == true then one or more atoms were removed.

Parameters:

change – Use the MoleculeChange enum to check what has changed.