| [a2ab15] | 1 | /* | 
|---|
|  | 2 | * CommandLineWindow.cpp | 
|---|
|  | 3 | * | 
|---|
|  | 4 | *  Created on: May 8, 2010 | 
|---|
|  | 5 | *      Author: heber | 
|---|
|  | 6 | */ | 
|---|
|  | 7 |  | 
|---|
| [112b09] | 8 | #include "Helpers/MemDebug.hpp" | 
|---|
|  | 9 |  | 
|---|
| [a2ab15] | 10 | #include <boost/bind.hpp> | 
|---|
|  | 11 |  | 
|---|
| [5079a0] | 12 | #include "CommandLineUI/CommandLineWindow.hpp" | 
|---|
|  | 13 | #include "CommandLineUI/CommandLineStatusIndicator.hpp" | 
|---|
| [a2ab15] | 14 |  | 
|---|
| [4380af] | 15 | #include "Actions/ActionRegistry.hpp" | 
|---|
| [104524] | 16 | #include "Actions/AnalysisAction/MolecularVolumeAction.hpp" | 
|---|
| [97ebf8] | 17 | #include "Actions/AnalysisAction/PairCorrelationAction.hpp" | 
|---|
| [104524] | 18 | #include "Actions/AnalysisAction/PrincipalAxisSystemAction.hpp" | 
|---|
| [97ebf8] | 19 | #include "Actions/AtomAction/AddAction.hpp" | 
|---|
|  | 20 | #include "Actions/AtomAction/ChangeElementAction.hpp" | 
|---|
|  | 21 | #include "Actions/AtomAction/RemoveAction.hpp" | 
|---|
|  | 22 | #include "Actions/CmdAction/BondLengthTableAction.hpp" | 
|---|
|  | 23 | #include "Actions/CmdAction/ElementDbAction.hpp" | 
|---|
|  | 24 | #include "Actions/CmdAction/FastParsingAction.hpp" | 
|---|
| [d893f79] | 25 | #include "Actions/CmdAction/HelpAction.hpp" | 
|---|
| [97ebf8] | 26 | #include "Actions/CmdAction/VerboseAction.hpp" | 
|---|
| [50dfda] | 27 | #include "Actions/CmdAction/VersionAction.hpp" | 
|---|
| [97ebf8] | 28 | #include "Actions/FragmentationAction/DepthFirstSearchAction.hpp" | 
|---|
|  | 29 | #include "Actions/FragmentationAction/SubgraphDissectionAction.hpp" | 
|---|
| [e4b5de] | 30 | #include "Actions/FragmentationAction/FragmentationAction.hpp" | 
|---|
| [97ebf8] | 31 | #include "Actions/MoleculeAction/BondFileAction.hpp" | 
|---|
|  | 32 | #include "Actions/MoleculeAction/ChangeNameAction.hpp" | 
|---|
|  | 33 | #include "Actions/MoleculeAction/FillWithMoleculeAction.hpp" | 
|---|
|  | 34 | #include "Actions/MoleculeAction/LinearInterpolationofTrajectoriesAction.hpp" | 
|---|
|  | 35 | #include "Actions/MoleculeAction/SaveAdjacencyAction.hpp" | 
|---|
|  | 36 | #include "Actions/MoleculeAction/SaveBondsAction.hpp" | 
|---|
|  | 37 | #include "Actions/MoleculeAction/SaveTemperatureAction.hpp" | 
|---|
| [77b2d7] | 38 | #include "Actions/MoleculeAction/TranslateAction.hpp" | 
|---|
| [97ebf8] | 39 | #include "Actions/MoleculeAction/VerletIntegrationAction.hpp" | 
|---|
| [d893f79] | 40 | #include "Actions/ParserAction/LoadXyzAction.hpp" | 
|---|
|  | 41 | #include "Actions/ParserAction/SaveXyzAction.hpp" | 
|---|
| [97ebf8] | 42 | #include "Actions/TesselationAction/ConvexEnvelopeAction.hpp" | 
|---|
|  | 43 | #include "Actions/TesselationAction/NonConvexEnvelopeAction.hpp" | 
|---|
|  | 44 | #include "Actions/WorldAction/AddEmptyBoundaryAction.hpp" | 
|---|
|  | 45 | #include "Actions/WorldAction/BoundInBoxAction.hpp" | 
|---|
|  | 46 | #include "Actions/WorldAction/CenterInBoxAction.hpp" | 
|---|
|  | 47 | #include "Actions/WorldAction/CenterOnEdgeAction.hpp" | 
|---|
|  | 48 | #include "Actions/WorldAction/ChangeBoxAction.hpp" | 
|---|
|  | 49 | #include "Actions/WorldAction/RemoveSphereOfAtomsAction.hpp" | 
|---|
|  | 50 | #include "Actions/WorldAction/RepeatBoxAction.hpp" | 
|---|
|  | 51 | #include "Actions/WorldAction/ScaleBoxAction.hpp" | 
|---|
|  | 52 | #include "Actions/WorldAction/SetDefaultNameAction.hpp" | 
|---|
|  | 53 | #include "Actions/WorldAction/SetGaussianBasisAction.hpp" | 
|---|
| [4380af] | 54 | #include "CommandLineParser.hpp" | 
|---|
| [d893f79] | 55 |  | 
|---|
| [a2ab15] | 56 | #include <iostream> | 
|---|
|  | 57 |  | 
|---|
|  | 58 | using namespace std; | 
|---|
|  | 59 |  | 
|---|
|  | 60 | // TODO: see what code can be moved to a base class for Graphic and CommandLine Windows | 
|---|
| [d893f79] | 61 | CommandLineWindow::CommandLineWindow() | 
|---|
| [a2ab15] | 62 | { | 
|---|
| [d893f79] | 63 | // create and register all command line callable actions | 
|---|
| [97ebf8] | 64 | populateAnalysisActions(); | 
|---|
| [50dfda] | 65 | populateAtomActions(); | 
|---|
|  | 66 | populateCmdActions(); | 
|---|
|  | 67 | populateFragmentationActions(); | 
|---|
|  | 68 | populateMoleculeActions(); | 
|---|
| [d893f79] | 69 | populateParserActions(); | 
|---|
| [50dfda] | 70 | populateTesselationActions(); | 
|---|
| [97ebf8] | 71 | populateWorldActions(); | 
|---|
| [a2ab15] | 72 |  | 
|---|
|  | 73 | // Add status indicators etc... | 
|---|
|  | 74 | statusIndicator = new CommandLineStatusIndicator(); | 
|---|
|  | 75 | } | 
|---|
|  | 76 |  | 
|---|
|  | 77 | CommandLineWindow::~CommandLineWindow() | 
|---|
|  | 78 | { | 
|---|
|  | 79 | delete statusIndicator; | 
|---|
|  | 80 | } | 
|---|
|  | 81 |  | 
|---|
|  | 82 | void CommandLineWindow::display() { | 
|---|
| [4380af] | 83 | // go through all possible actions | 
|---|
| [7e6b00] | 84 | for (std::list<std::string>::iterator CommandRunner = CommandLineParser::getInstance().SequenceOfActions.begin(); CommandRunner != CommandLineParser::getInstance().SequenceOfActions.end(); ++CommandRunner) { | 
|---|
|  | 85 | cout << "Checking presence of " << *CommandRunner << endl; | 
|---|
|  | 86 | if (ActionRegistry::getInstance().isActionByNamePresent(*CommandRunner)) | 
|---|
|  | 87 | ActionRegistry::getInstance().getActionByName(*CommandRunner)->call(); | 
|---|
| [4380af] | 88 | } | 
|---|
| [a2ab15] | 89 | } | 
|---|
| [d893f79] | 90 |  | 
|---|
| [97ebf8] | 91 | void CommandLineWindow::populateAnalysisActions() | 
|---|
|  | 92 | { | 
|---|
| [104524] | 93 | new AnalysisMolecularVolumeAction(); | 
|---|
| [97ebf8] | 94 | new AnalysisPairCorrelationAction(); | 
|---|
| [104524] | 95 | new AnalysisPrincipalAxisSystemAction(); | 
|---|
| [97ebf8] | 96 | } | 
|---|
|  | 97 |  | 
|---|
| [50dfda] | 98 | void CommandLineWindow::populateAtomActions() | 
|---|
|  | 99 | { | 
|---|
| [97ebf8] | 100 | new AtomAddAction(); | 
|---|
|  | 101 | new AtomChangeElementAction(); | 
|---|
|  | 102 | new AtomRemoveAction(); | 
|---|
| [50dfda] | 103 | } | 
|---|
|  | 104 |  | 
|---|
|  | 105 | void CommandLineWindow::populateCmdActions() | 
|---|
| [d893f79] | 106 | { | 
|---|
| [97ebf8] | 107 | new CommandLineBondLengthTableAction(); | 
|---|
|  | 108 | new CommandLineElementDbAction(); | 
|---|
|  | 109 | new CommandLineFastParsingAction(); | 
|---|
| [e3ecc1a] | 110 | new CommandLineHelpAction(); | 
|---|
| [97ebf8] | 111 | new CommandLineVerboseAction(); | 
|---|
| [50dfda] | 112 | new CommandLineVersionAction(); | 
|---|
|  | 113 | } | 
|---|
|  | 114 |  | 
|---|
|  | 115 | void CommandLineWindow::populateFragmentationActions() | 
|---|
|  | 116 | { | 
|---|
| [97ebf8] | 117 | new FragmentationDepthFirstSearchAction(); | 
|---|
| [e4b5de] | 118 | new FragmentationFragmentationAction(); | 
|---|
|  | 119 | new FragmentationSubgraphDissectionAction(); | 
|---|
| [50dfda] | 120 | } | 
|---|
|  | 121 |  | 
|---|
|  | 122 | void CommandLineWindow::populateMoleculeActions() | 
|---|
|  | 123 | { | 
|---|
| [97ebf8] | 124 | new MoleculeBondFileAction(); | 
|---|
|  | 125 | new MoleculeChangeNameAction(); | 
|---|
|  | 126 | new MoleculeFillWithMoleculeAction(); | 
|---|
|  | 127 | new MoleculeLinearInterpolationofTrajectoriesAction(); | 
|---|
|  | 128 | new MoleculeSaveAdjacencyAction(); | 
|---|
|  | 129 | new MoleculeSaveBondsAction(); | 
|---|
|  | 130 | new MoleculeSaveTemperatureAction(); | 
|---|
| [77b2d7] | 131 | new MoleculeTranslateAction(); | 
|---|
| [97ebf8] | 132 | new MoleculeVerletIntegrationAction(); | 
|---|
| [50dfda] | 133 | } | 
|---|
|  | 134 |  | 
|---|
|  | 135 | void CommandLineWindow::populateParserActions() | 
|---|
|  | 136 | { | 
|---|
| [d893f79] | 137 | new ParserLoadXyzAction(); | 
|---|
|  | 138 | new ParserSaveXyzAction(); | 
|---|
|  | 139 | } | 
|---|
|  | 140 |  | 
|---|
| [50dfda] | 141 | void CommandLineWindow::populateTesselationActions() | 
|---|
|  | 142 | { | 
|---|
| [97ebf8] | 143 | new TesselationConvexEnvelopeAction(); | 
|---|
|  | 144 | new TesselationNonConvexEnvelopeAction(); | 
|---|
| [50dfda] | 145 | } | 
|---|
|  | 146 |  | 
|---|
| [97ebf8] | 147 | void CommandLineWindow::populateWorldActions() | 
|---|
|  | 148 | { | 
|---|
|  | 149 | new WorldAddEmptyBoundaryAction(); | 
|---|
|  | 150 | new WorldBoundInBoxAction(); | 
|---|
|  | 151 | new WorldCenterInBoxAction(); | 
|---|
|  | 152 | new WorldCenterOnEdgeAction(); | 
|---|
|  | 153 | new WorldChangeBoxAction(); | 
|---|
|  | 154 | new WorldRemoveSphereOfAtomsAction(); | 
|---|
|  | 155 | new WorldRepeatBoxAction(); | 
|---|
|  | 156 | new WorldScaleBoxAction(); | 
|---|
|  | 157 | new WorldSetDefaultNameAction(); | 
|---|
|  | 158 | new WorldSetGaussianBasisAction(); | 
|---|
|  | 159 | } | 
|---|