Index: src/Actions/MapOfActions.cpp
===================================================================
--- src/Actions/MapOfActions.cpp	(revision 31fb1df09428e7671debb5867061ee049cbbd546)
+++ src/Actions/MapOfActions.cpp	(revision a7a087b4161e29ab90bf567b4c104f88cc4a1336)
@@ -76,7 +76,9 @@
 #include "Actions/SelectionAction/AllAtomsOfMoleculeAction.hpp"
 #include "Actions/SelectionAction/AllMoleculesAction.hpp"
+#include "Actions/SelectionAction/AtomByElementAction.hpp"
 #include "Actions/SelectionAction/AtomByIdAction.hpp"
 #include "Actions/SelectionAction/ClearAllAtomsAction.hpp"
 #include "Actions/SelectionAction/ClearAllMoleculesAction.hpp"
+#include "Actions/SelectionAction/MoleculeByFormulaAction.hpp"
 #include "Actions/SelectionAction/MoleculeByIdAction.hpp"
 #include "Actions/SelectionAction/MoleculeOfAtomAction.hpp"
@@ -86,5 +88,7 @@
 #include "Actions/SelectionAction/NotAllAtomsOfMoleculeAction.hpp"
 #include "Actions/SelectionAction/NotAllMoleculesAction.hpp"
+#include "Actions/SelectionAction/NotAtomByElementAction.hpp"
 #include "Actions/SelectionAction/NotAtomByIdAction.hpp"
+#include "Actions/SelectionAction/NotMoleculeByFormulaAction.hpp"
 #include "Actions/SelectionAction/NotMoleculeByIdAction.hpp"
 #include "Actions/SelectionAction/NotMoleculeOfAtomAction.hpp"
@@ -231,8 +235,10 @@
   DescriptionMap["select-all-atoms"] = "select all atoms";
   DescriptionMap["select-all-molecules"] = "select all molecules";
+  DescriptionMap["select-atom-by-element"] = "select an atom by element";
   DescriptionMap["select-atom-by-id"] = "select an atom by index";
   DescriptionMap["select-atoms-inside-cuboid"] = "select all atoms inside a cuboid";
   DescriptionMap["select-atoms-inside-sphere"] = "select all atoms inside a sphere";
   DescriptionMap["select-molecule-by-id"] = "select a molecule by index";
+  DescriptionMap["select-molecule-by-formula"] = "select a molecule by chemical formula";
   DescriptionMap["select-molecule-of-atom"] = "select a molecule to which a given atom belongs";
   DescriptionMap["select-molecules-atoms"] = "select all atoms of a molecule";
@@ -246,7 +252,9 @@
   DescriptionMap["unselect-all-atoms"] = "unselect all atoms";
   DescriptionMap["unselect-all-molecules"] = "unselect all molecules";
+  DescriptionMap["unselect-atom-by-element"] = "unselect an atom by element";
   DescriptionMap["unselect-atom-by-id"] = "unselect an atom by index";
   DescriptionMap["unselect-atoms-inside-cuboid"] = "unselect all atoms inside a cuboid";
   DescriptionMap["unselect-atoms-inside-sphere"] = "unselect all atoms inside a sphere";
+  DescriptionMap["unselect-molecule-by-formula"] = "unselect a molecule by chemical formula";
   DescriptionMap["unselect-molecule-by-id"] = "unselect a molecule by index";
   DescriptionMap["unselect-molecule-of-atom"] = "unselect a molecule to which a given atom belongs";
@@ -361,7 +369,9 @@
   TypeMap["select-all-atoms"] = &typeid(void);
   TypeMap["select-all-molecules"] = &typeid(void);
+  TypeMap["select-atom-by-element"] = &typeid(const element);
   TypeMap["select-atom-by-id"] = &typeid(atom);
   TypeMap["select-atoms-inside-cuboid"] = &typeid(VectorValue);
   TypeMap["select-atoms-inside-sphere"] = &typeid(double);
+  TypeMap["select-molecule-by-formula"] = &typeid(std::string);
   TypeMap["select-molecule-by-id"] = &typeid(molecule);
   TypeMap["select-molecule-of-atom"] = &typeid(atom);
@@ -376,7 +386,9 @@
   TypeMap["unselect-all-atoms"] = &typeid(void);
   TypeMap["unselect-all-molecules"] = &typeid(void);
+  TypeMap["unselect-atom-by-element"] = &typeid(const element);
   TypeMap["unselect-atom-by-id"] = &typeid(atom);
   TypeMap["unselect-atoms-inside-cuboid"] = &typeid(VectorValue);
   TypeMap["unselect-atoms-inside-sphere"] = &typeid(double);
+  TypeMap["unselect-molecule-by-formula"] = &typeid(std::string);
   TypeMap["unselect-molecule-by-id"] = &typeid(molecule);
   TypeMap["unselect-molecule-of-atom"] = &typeid(atom);
@@ -487,15 +499,19 @@
   MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "select-all-atoms") );
   MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "select-all-molecules") );
+  MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "select-atom-by-element") );
   MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "select-atom-by-id") );
   MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "select-atoms-inside-cuboid") );
   MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "select-atoms-inside-sphere") );
   MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "select-molecule-by-id") );
+  MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "select-molecule-by-formula") );
   MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "select-molecule-of-atom") );
   MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "select-molecules-atoms") );
   MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "unselect-all-atoms") );
   MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "unselect-all-molecules") );
+  MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "unselect-atom-by-element") );
   MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "unselect-atom-by-id") );
   MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "unselect-atoms-inside-cuboid") );
   MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "unselect-atoms-inside-sphere") );
+  MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "unselect-molecule-by-formula") );
   MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "unselect-molecule-by-id") );
   MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "unselect-molecule-of-atom") );
@@ -560,8 +576,10 @@
   generic.insert("select-all-atoms");
   generic.insert("select-all-molecules");
+  generic.insert("select-atom-by-element");
   generic.insert("select-atom-by-id");
   generic.insert("select-atoms-inside-cuboid");
   generic.insert("select-atoms-inside-sphere");
   generic.insert("select-molecule-by-id");
+  generic.insert("select-molecule-by-formula");
   generic.insert("select-molecule-of-atom");
   generic.insert("select-molecules-atoms");
@@ -575,7 +593,9 @@
   generic.insert("unselect-all-atoms");
   generic.insert("unselect-all-molecules");
+  generic.insert("unselect-atom-by-element");
   generic.insert("unselect-atom-by-id");
   generic.insert("unselect-atoms-inside-cuboid");
   generic.insert("unselect-atoms-inside-sphere");
+  generic.insert("unselect-molecule-by-formula");
   generic.insert("unselect-molecule-by-id");
   generic.insert("unselect-molecule-of-atom");
@@ -910,6 +930,8 @@
   new SelectionAllAtomsOfMoleculeAction();
   new SelectionAllMoleculesAction();
+  new SelectionAtomByElementAction();
   new SelectionAtomByIdAction();
   new SelectionMoleculeByIdAction();
+  new SelectionMoleculeByFormulaAction();
   new SelectionMoleculeOfAtomAction();
   new SelectionNotAllAtomsAction();
@@ -918,5 +940,7 @@
   new SelectionNotAllAtomsOfMoleculeAction();
   new SelectionNotAllMoleculesAction();
+  new SelectionNotAtomByElementAction();
   new SelectionNotAtomByIdAction();
+  new SelectionNotMoleculeByFormulaAction();
   new SelectionNotMoleculeByIdAction();
   new SelectionNotMoleculeOfAtomAction();
