Changes in / [7f1b51:b73545]


Ignore:
Files:
2 added
11 deleted
75 edited

Legend:

Unmodified
Added
Removed
  • src/Actions/Action.cpp

    r7f1b51 rb73545  
    127127
    128128Dialog * Action::createDialog(){
    129   Dialog *dialog = UIFactory::getInstance().makeDialog(Traits.getName());
     129  Dialog *dialog = UIFactory::getInstance().makeDialog();
    130130  return fillDialog(dialog);
    131131}
  • src/Actions/ActionQueue.cpp

    r7f1b51 rb73545  
    5555using namespace MoleCuilder;
    5656
    57 const Action* ActionQueue::_lastchangedaction = NULL;
    58 
    5957ActionQueue::ActionQueue() :
    60     Observable("ActionQueue"),
    6158    AR(new ActionRegistry()),
    6259    history(new ActionHistory),
     
    6966    run_thread_isIdle(true)
    7067#endif
    71 {
    72   // channels of observable
    73   Channels *OurChannel = new Channels;
    74   NotificationChannels.insert( std::make_pair(static_cast<Observable *>(this), OurChannel) );
    75   // add instance for each notification type
    76   for (size_t type = 0; type < NotificationType_MAX; ++type)
    77     OurChannel->addChannel(type);
    78 }
     68{}
    7969
    8070ActionQueue::~ActionQueue()
     
    9888void ActionQueue::queueAction(const Action * const _action, enum Action::QueryOptions state)
    9989{
    100   OBSERVE;
    101   NOTIFY(ActionQueued);
    10290  Action *newaction = _action->clone(state);
    10391  newaction->prepare(state);
     
    130118  mtx_queue.unlock();
    131119#endif
    132   _lastchangedaction = newaction;
    133120}
    134121
  • src/Actions/ActionQueue.hpp

    r7f1b51 rb73545  
    1616#include "CodePatterns/Singleton.hpp"
    1717
    18 #include "CodePatterns/Observer/Channels.hpp"
    19 #include "CodePatterns/Observer/Observable.hpp"
    2018
    2119#ifdef HAVE_ACTION_THREAD
     
    4038class ActionRegistry;
    4139class ActionTrait;
    42 
    43 namespace Queuedetail {
    44   template <class T> const T* lastChanged()
    45   {
    46     ASSERT(0, "Queuedetail::lastChanged() - only specializations may be used.");
    47     return NULL;
    48   }
    49 }
    5040
    5141/** This class combines the whole handling of Actions into a single class.
     
    5444 * automatically queued and placed into a History after execution.
    5545 */
    56 class ActionQueue : public Singleton<ActionQueue>, public Observable
     46class ActionQueue : public Singleton<ActionQueue>
    5747{
    5848  friend class Singleton<ActionQueue>;
     
    6151  typedef std::vector< Action * > ActionQueue_t;
    6252
    63   //!> channels for this observable
    64   enum NotificationType {
    65     ActionQueued,  // new action was queued
    66     NotificationType_MAX  // denotes the maximum of available notification types
    67   };
    68 
    69   //>! access to last changed element (atom or molecule)
    70   template <class T> const T* lastChanged() const
    71   { return Queuedetail::lastChanged<T>(); }
    72 
    7353  /** Queues the Action with \a name to be called.
    7454   *
     
    242222  ~ActionQueue();
    243223
    244 private:
    245   friend const Action *Queuedetail::lastChanged<Action>();
    246   static const Action *_lastchangedaction;
    247 
    248224  //!> ActionRegistry to spawn new actions
    249225  ActionRegistry *AR;
     
    284260  ActionStatusList StatusList;
    285261};
    286 namespace Queuedetail {
    287   template <>       inline  const Action* lastChanged<Action>() { return ActionQueue::_lastchangedaction; }
    288 }
    289262
    290263};
  • src/Actions/Action_impl_pre.hpp

    r7f1b51 rb73545  
    111111)
    112112#endif
    113 #ifdef paramdescriptions
    114 BOOST_PP_ASSERT_MSG(BOOST_PP_EQUAL(MAXPARAMTYPES, BOOST_PP_SEQ_SIZE(paramdescriptions)),\
    115   ERROR: There are not the same number of "paramtokens" and "paramdescriptions" in: __FILE__ \
    116 )
    117 #endif
    118113
    119114#ifdef statetypes
     
    148143  ,\
    149144  BOOST_PP_SEQ_ELEM(n, paramtokens)\
    150   ,\
    151   BOOST_PP_SEQ_ELEM(n, paramdescriptions)\
     145  , Traits.getDescription()\
    152146  );
    153147
  • src/Actions/CommandAction/BondLengthTableAction.def

    r7f1b51 rb73545  
    1010#include "Graph/BondGraph.hpp"
    1111
    12 #include "Parameters/Validators/Ops_Validator.hpp"
    1312#include "Parameters/Validators/Specific/FilePresentValidator.hpp"
    14 #include "Parameters/Validators/Specific/FileSuffixValidator.hpp"
    1513
    1614// i.e. there is an integer with variable name Z that can be found in
     
    2321#define paramreferences (BondGraphFileName)
    2422#define paramvalids \
    25 (FilePresentValidator() && (FileSuffixValidator("dat") || FileSuffixValidator("db")))
     23(FilePresentValidator())
    2624
    2725#define statetypes (std::string)
  • src/Actions/CommandAction/ElementDbAction.def

    r7f1b51 rb73545  
    99#include <sstream>
    1010
    11 #include "Parameters/Validators/Ops_Validator.hpp"
    1211#include "Parameters/Validators/Specific/FilePresentValidator.hpp"
    1312
  • src/Actions/CommandAction/LoadSessionAction.def

    r7f1b51 rb73545  
    99#include <boost/filesystem/path.hpp>
    1010
    11 #include "Parameters/Validators/Ops_Validator.hpp"
    1211#include "Parameters/Validators/Specific/FilePresentValidator.hpp"
    13 #include "Parameters/Validators/Specific/FileSuffixValidator.hpp"
    1412
    1513// i.e. there is an integer with variable name Z that can be found in
     
    2220#define paramreferences (filename)
    2321#define paramvalids \
    24 (FilePresentValidator() && FileSuffixValidator("py"))
     22(FilePresentValidator())
    2523
    2624#undef statetypes
  • src/Actions/CommandAction/StoreSessionAction.def

    r7f1b51 rb73545  
    1111
    1212#include "Parameters/Validators/DummyValidator.hpp"
    13 #include "Parameters/Validators/Ops_Validator.hpp"
    14 #include "Parameters/Validators/Specific/FileSuffixValidator.hpp"
    1513#include "Parameters/Validators/Specific/SessionTypeValidator.hpp"
    1614
     
    2422#define paramreferences (filename)(sessiontype)
    2523#define paramvalids \
    26 (FileSuffixValidator("py") || FileSuffixValidator("sh") || FileSuffixValidator("bat")) \
     24(DummyValidator< boost::filesystem::path >()) \
    2725(SessionTypeValidator())
    2826
  • src/Actions/FragmentationAction/ClearFragmentationResultsAction.def

    r7f1b51 rb73545  
    77
    88// all includes and forward declarations necessary for non-integral types below
     9#include <boost/filesystem/path.hpp>
     10#include <vector>
     11
     12#include "Parameters/Validators/RangeValidator.hpp"
     13#include "Parameters/Validators/Ops_Validator.hpp"
     14#include "Parameters/Validators/STLVectorValidator.hpp"
     15#include "Parameters/Validators/Specific/ParserFileValidator.hpp"
     16#include "Parameters/Validators/Specific/FilePresentValidator.hpp"
    917
    1018// i.e. there is an integer with variable name Z that can be found in
  • src/Actions/FragmentationAction/MolecularDynamicsAction.cpp

    r7f1b51 rb73545  
    6565  actions.addAction(AR.getActionByName(std::string("output")));
    6666  actions.addAction(AR.getActionByName(std::string("clear-fragment-results")));
    67   actions.addAction(AR.getActionByName(std::string("destroy-adjacency")));
    68   actions.addAction(AR.getActionByName(std::string("create-adjacency")));
    69   actions.addAction(AR.getActionByName(std::string("update-molecules")));
    7067  actions.addAction(AR.getActionByName(std::string("fragment-molecule")));
    7168  actions.addAction(AR.getActionByName(std::string("fragment-automation")));
     
    9491        "FragmentationMolecularDynamicsAction::performCall() - output not found in ActionSequence.");
    9592  }
    96   // don't recreate bond graph if not desired
    97   if (params.DontCreateGraphEachStep.get()) {
    98 #ifndef NDEBUG
    99     bool status = true;
    100     status &=
    101 #endif
    102         removeAction(std::string("destroy-adjacency"));
    103 
    104 #ifndef NDEBUG
    105     status &=
    106 #endif
    107         removeAction(std::string("create-adjacency"));
    108 
    109 #ifndef NDEBUG
    110     status &=
    111 #endif
    112         removeAction(std::string("update-molecules"));
    113     ASSERT( status,
    114         "FragmentationStructuralOptimizationAction::performCall() - at least one graph action not found in ActionSequence.");
    115   }
    11693  // and call
    11794  ActionState::ptr state(MakroAction::performCall());
  • src/Actions/FragmentationAction/MolecularDynamicsAction.def

    r7f1b51 rb73545  
    1212// ValueStorage by the token "Z" -> first column: int, Z, "Z"
    1313// "undefine" if no parameters are required, use (NOPARAM_DEFAULT) for each (undefined) default value
    14 #define paramtypes (unsigned int)(bool)(bool)
    15 #define paramtokens ("steps")("output-every-step")("keep-bondgraph")
    16 #define paramdescriptions ("numer of MD steps to perform")("whether World should be written after every step, useful if integration might hang")("whether the bond graph should be kept the same during each step and not updated")
    17 #define paramdefaults (NOPARAM_DEFAULT)(PARAM_DEFAULT("0"))(PARAM_DEFAULT("0"))
    18 #define paramreferences (steps)(DoOutput)(DontCreateGraphEachStep)
     14#define paramtypes (unsigned int)(bool)
     15#define paramtokens ("steps")("output-every-step")
     16#define paramdescriptions ("numer of MD steps to perform")("whether World should be written after every step, useful if integration might hang")
     17#define paramdefaults (NOPARAM_DEFAULT)(PARAM_DEFAULT("0"))
     18#define paramreferences (steps)(DoOutput)
    1919#define paramvalids \
    2020(NotZeroValidator< unsigned int >()) \
    21 (DummyValidator<bool>()) \
    2221(DummyValidator<bool>())
    2322
  • src/Actions/FragmentationAction/StructuralOptimizationAction.cpp

    r7f1b51 rb73545  
    6262  // present. If not, we still copy the position cleanly into a new step where then
    6363  // forces are set according to summed fragmentary contributions. This is much cleaner.
    64   actions.addAction(AR.getActionByName(std::string("destroy-adjacency")));
    65   actions.addAction(AR.getActionByName(std::string("create-adjacency")));
    66   actions.addAction(AR.getActionByName(std::string("update-molecules")));
    6764  actions.addAction(AR.getActionByName(std::string("fragment-molecule")));
    6865  actions.addAction(AR.getActionByName(std::string("fragment-automation")));
     
    9491        "FragmentationStructuralOptimizationAction::performCall() - output not found in ActionSequence.");
    9592  }
    96   // don't recreate bond graph if not desired
    97   if (params.DontCreateGraphEachStep.get()) {
    98 #ifndef NDEBUG
    99     bool status = true;
    100     status &=
    101 #endif
    102         removeAction(std::string("destroy-adjacency"));
    103 
    104 #ifndef NDEBUG
    105     status &=
    106 #endif
    107         removeAction(std::string("create-adjacency"));
    108 
    109 #ifndef NDEBUG
    110     status &=
    111 #endif
    112         removeAction(std::string("update-molecules"));
    113     ASSERT( status,
    114         "FragmentationStructuralOptimizationAction::performCall() - at least one graph action not found in ActionSequence.");
    115   }
    11693  // and call
    11794  ActionState::ptr state(MakroAction::performCall());
  • src/Actions/FragmentationAction/StructuralOptimizationAction.def

    r7f1b51 rb73545  
    1212// ValueStorage by the token "Z" -> first column: int, Z, "Z"
    1313// "undefine" if no parameters are required, use (NOPARAM_DEFAULT) for each (undefined) default value
    14 #define paramtypes (unsigned int)(bool)(bool)
    15 #define paramtokens ("steps")("output-every-step")("keep-bondgraph")
    16 #define paramdescriptions ("numer of MD steps to perform")("whether we should update the timestep in each descent step sp as to visualize the minimisation")("whether the bond graph should be kept the same during each step and not updated")
    17 #define paramdefaults (NOPARAM_DEFAULT)(PARAM_DEFAULT("0"))(PARAM_DEFAULT("0"))
    18 #define paramreferences (steps)(DoOutput)(DontCreateGraphEachStep)
     14#define paramtypes (unsigned int)(bool)
     15#define paramtokens ("steps")("output-every-step")
     16#define paramdescriptions ("numer of MD steps to perform")("whether we should update the timestep in each descent step sp as to visualize the minimisation")
     17#define paramdefaults (NOPARAM_DEFAULT)(PARAM_DEFAULT("0"))
     18#define paramreferences (steps)(DoOutput)
    1919#define paramvalids \
    2020(NotZeroValidator< unsigned int >()) \
    21 (DummyValidator<bool>()) \
    2221(DummyValidator<bool>())
    2322
  • src/Actions/GraphAction/CorrectBondDegreeAction.cpp

    r7f1b51 rb73545  
    106106  BG->CorrectBondDegree(Set);
    107107
     108  // give info
     109  size_t BondCount = 0;
     110  std::vector<molecule *> molecules = World::getInstance().getAllMolecules();
     111  for (std::vector<molecule *>::const_iterator iter = molecules.begin();
     112      iter != molecules.end(); ++iter)
     113    BondCount += (*iter)->getBondCount();
     114  LOG(0, "STATUS: Recognized " << BondCount << " bonds.");
     115
    108116  return ActionState::ptr(UndoState);
    109117}
  • src/Actions/MoleculeAction/ForceAnnealingAction.def

    r7f1b51 rb73545  
    77
    88// all includes and forward declarations necessary for non-integral types below
    9 #include <boost/filesystem/path.hpp>
    10 
    119#include "Parameters/Validators/DummyValidator.hpp"
    1210#include "Parameters/Validators/GenericValidators.hpp"
    1311#include "Parameters/Validators/Ops_Validator.hpp"
     12#include "Parameters/Validators/Specific/FilePresentValidator.hpp"
    1413
    1514// i.e. there is an integer with variable name Z that can be found in
  • src/Actions/MoleculeAction/VerletIntegrationAction.def

    r7f1b51 rb73545  
    88// all includes and forward declarations necessary for non-integral types below
    99#include "LinearAlgebra/Vector.hpp"
    10 #include <boost/filesystem/path.hpp>
    1110#include <vector>
    1211typedef std::vector<Vector> Vectors_t;
     
    1514#include "Parameters/Validators/GenericValidators.hpp"
    1615#include "Parameters/Validators/Ops_Validator.hpp"
     16#include "Parameters/Validators/Specific/FilePresentValidator.hpp"
    1717
    1818// i.e. there is an integer with variable name Z that can be found in
  • src/Actions/PotentialAction/FitPotentialAction.def

    r7f1b51 rb73545  
    1818#include "Parameters/Validators/Specific/ElementValidator.hpp"
    1919#include "Parameters/Validators/Specific/EmptyStringValidator.hpp"
    20 #include "Parameters/Validators/Specific/FileSuffixValidator.hpp"
    2120#include "Parameters/Validators/Specific/FilePresentValidator.hpp"
    2221#include "Parameters/Validators/Specific/PotentialTypeValidator.hpp"
     
    2726#define paramtypes (boost::filesystem::path)(std::string)(boost::filesystem::path)(std::vector<const element *>)(std::vector<const element *>)(unsigned int)(double)
    2827#define paramtokens ("training-file")("potential-type")("potential-file")("potential-charges")("fragment-charges")("take-best-of")("set-threshold")
    29 #define paramdescriptions ("optional file to write training data to")("potential type to fit")("optional potential file specifying multiple potentials to fit")("charges specifying the potential")("charges specifying the fragment")("take the best among this many approximations")("Require L2 error to be smaller than threshold, overrides number of attempts")
     28#define paramdescriptions ("optional file to write training data to")("potential type to fit")("potential file specifying multiple potentials to fit")("charges specifying the potential")("charges specifying the fragment")("take the best among this many approximations")("Require L2 error to be smaller than threshold, overrides number of attempts")
    3029#define paramdefaults (PARAM_DEFAULT(""))(NOPARAM_DEFAULT)(NOPARAM_DEFAULT)(NOPARAM_DEFAULT)(NOPARAM_DEFAULT)(PARAM_DEFAULT(3))(PARAM_DEFAULT(1.))
    3130#define paramreferences (training_file)(potentialtype)(potential_file)(charges)(fragment)(best_of_howmany)(threshold)
     
    3332(DummyValidator<boost::filesystem::path>()) \
    3433(EmptyStringValidator() || PotentialTypeValidator()) \
    35 (!FilePresentValidator() || FileSuffixValidator("potentials")) \
     34(DummyValidator<boost::filesystem::path>()) \
    3635(STLVectorValidator< std::vector<const element *> >(0,99, ElementValidator())) \
    3736(STLVectorValidator< std::vector<const element *> >(1,99, ElementValidator())) \
  • src/Actions/unittests/stubs/DummyUI.hpp

    r7f1b51 rb73545  
    2121{
    2222public:
    23   DummyDialog(const std::string &_title) :
    24     Dialog(_title)
    25   {}
     23  DummyDialog(){}
    2624  virtual ~DummyDialog(){}
    2725
     
    5553  virtual ~DummyUIFactory(){}
    5654
    57   virtual Dialog* makeDialog(const std::string &_title){return new DummyDialog(_title);}
     55  virtual Dialog* makeDialog(){return new DummyDialog;}
    5856  virtual MainWindow* makeMainWindow(){return 0;}
    5957
  • src/Graph/BondGraph.hpp

    r7f1b51 rb73545  
    355355    // remove every bond from the list
    356356    for(iterator_type AtomRunner = Set.begin(); AtomRunner != Set.end(); ++AtomRunner) {
    357       (*AtomRunner)->removeAllBonds(WorldTime::getTime());
     357      (*AtomRunner)->removeAllBonds();
     358//      BondList& ListOfBonds = (*AtomRunner)->getListOfBonds();
     359//      for(BondList::iterator BondRunner = ListOfBonds.begin();
     360//          !ListOfBonds.empty();
     361//          BondRunner = ListOfBonds.begin()) {
     362//        ASSERT((*BondRunner)->Contains(*AtomRunner),
     363//            "BondGraph::cleanAdjacencyList() - "+
     364//            toString(*BondRunner)+" does not contain "+
     365//            toString(*AtomRunner)+".");
     366//        delete((*BondRunner));
     367//      }
    358368    }
    359369  }
  • src/Parameters/Makefile.am

    r7f1b51 rb73545  
    44
    55PARAMETERSOURCE = \
    6         Parameters/Specifics/Value_atom.cpp \
    7         Parameters/Specifics/Value_element.cpp \
    8         Parameters/Specifics/Value_molecule.cpp \
    9         Parameters/Specifics/Value_string.cpp \
    106        Parameters/Validators/Specific/ActionNameValidator.cpp \
    117        Parameters/Validators/Specific/AtomDataValidator.cpp \
     
    3026        Parameters/Validators/Specific/VectorNotZeroValidator.cpp \
    3127        Parameters/Validators/Specific/VectorPositiveComponentsValidator.cpp \
    32         Parameters/Validators/Specific/VectorZeroOneComponentsValidator.cpp
     28        Parameters/Validators/Specific/VectorZeroOneComponentsValidator.cpp \
     29        Parameters/Value_string.cpp
    3330
    3431PARAMETERHEADER = \
     
    3734        Parameters/ParameterInterface.hpp \
    3835        Parameters/StreamOperators.hpp \
    39         Parameters/ContinuousValue.hpp \
    40         Parameters/ContinuousValue_impl.hpp \
    41         Parameters/Value.hpp \
    42         Parameters/Value_impl.hpp \
    43         Parameters/ValueAsString.hpp \
    44         Parameters/ValueInterface.hpp \
    45         Parameters/Specifics/Value_atom.hpp \
    46         Parameters/Specifics/Value_element.hpp \
    47         Parameters/Specifics/Value_molecule.hpp \
    48         Parameters/Specifics/Value_string.hpp \
    4936        Parameters/Validators/DiscreteValidator.hpp \
    5037        Parameters/Validators/DiscreteValidator_impl.hpp \
     
    5239        Parameters/Validators/GenericValidators.hpp \
    5340        Parameters/Validators/GenericValidators_impl.hpp \
    54         Parameters/Validators/getFlatListFromHierarchyOfValidators.hpp \
    5541        Parameters/Validators/Ops_Validator.hpp \
    5642        Parameters/Validators/Ops_Validator_impl.hpp \
     
    8672        Parameters/Validators/Specific/VectorNotZeroValidator.hpp \
    8773        Parameters/Validators/Specific/VectorPositiveComponentsValidator.hpp \
    88         Parameters/Validators/Specific/VectorZeroOneComponentsValidator.hpp
     74        Parameters/Validators/Specific/VectorZeroOneComponentsValidator.hpp \
     75        Parameters/ContinuousValue.hpp \
     76        Parameters/ContinuousValue_impl.hpp \
     77        Parameters/Value.hpp \
     78        Parameters/Value_impl.hpp \
     79        Parameters/Value_string.hpp \
     80        Parameters/ValueAsString.hpp \
     81        Parameters/ValueInterface.hpp
    8982
    9083if CONDLEVMAR
  • src/Parameters/Validators/Ops_Validator_impl.hpp

    r7f1b51 rb73545  
    5252  Validator<T> *getA(){ return a; }
    5353  Validator<T> *getB(){ return b; }
    54   const Validator<T> *getA() const { return a; }
    55   const Validator<T> *getB() const { return b; }
    5654
    5755private:
     
    9290  }
    9391
    94   Validator<T> *getA(){ return a; }
    95   Validator<T> *getB(){ return b; }
    96   const Validator<T> *getA() const { return a; }
    97   const Validator<T> *getB() const { return b; }
    98 
    9992private:
    10093  Validator<T> *a;
     
    133126  }
    134127
    135   Validator<T> *getA(){ return a; }
    136   const Validator<T> *getA() const { return a; }
    137 
    138128private:
    139129  Validator<T> *a;
  • src/Parameters/Validators/Specific/FileSuffixValidator.hpp

    r7f1b51 rb73545  
    3333  Validator< boost::filesystem::path >* clone() const;
    3434
    35   const std::string & getSuffix() const
    36   { return suffix; }
    37 
    3835private:
    3936  std::string suffix;
  • src/Parameters/Validators/Specific/ParserFileValidator.cpp

    r7f1b51 rb73545  
    7272}
    7373
    74 std::vector<std::string> ParserFileValidator::getSuffixes() const
    75 {
    76   std::vector<std::string> suffixes;
    77   for (ParserTypes t = ParserTypes_begin; t < ParserTypes_end; ++ t){
    78     suffixes.push_back(
    79         FormatParserStorage::getInstance().getSuffixFromType(t));
    80   }
    81   return suffixes;
    82 }
    8374
    8475
     76
  • src/Parameters/Validators/Specific/ParserFileValidator.hpp

    r7f1b51 rb73545  
    2727  bool operator==(const Validator<boost::filesystem::path> &_instance) const;
    2828  Validator< boost::filesystem::path >* clone() const;
    29 
    30 public:
    31   std::vector<std::string> getSuffixes() const;
    3229};
    3330
  • src/Parameters/Validators/Validator.hpp

    r7f1b51 rb73545  
    3535};
    3636
     37
    3738#endif /* VALIDATOR_HPP_ */
  • src/Parameters/Value.hpp

    r7f1b51 rb73545  
    119119#include "Value_impl.hpp"
    120120
    121 #include "Specifics/Value_atom.hpp"
    122 #include "Specifics/Value_element.hpp"
    123 #include "Specifics/Value_molecule.hpp"
    124 #include "Specifics/Value_string.hpp"
     121#include "Value_string.hpp"
    125122
    126123#endif /* VALUE_HPP_ */
  • src/Tesselation/tesselation.cpp

    r7f1b51 rb73545  
    115115        LinkedCell_deprecated *LinkedList = new LinkedCell_deprecated(cloud, 2.*SPHERERADIUS);
    116116
    117         // check for at least three points
    118         {
    119           bool ThreePointsFound = true;
    120           cloud.GoToFirst();
    121     for (size_t i=0;i<3;++i, cloud.GoToNext())
    122       ThreePointsFound &= (!cloud.IsEnd());
    123     cloud.GoToFirst();
    124     if (ThreePointsFound == false) {
    125       ELOG(2, "Less than 3 points in cloud, not enough for tesselation.");
    126       return;
    127     }
    128         }
    129 
    130         // find a starting triangle
    131117  FindStartingTriangle(SPHERERADIUS, LinkedList);
    132118
  • src/UIElements/CommandLineUI/CommandLineDialog.cpp

    r7f1b51 rb73545  
    4242
    4343
    44 CommandLineDialog::CommandLineDialog(const std::string &_title) :
    45     Dialog(_title)
     44CommandLineDialog::CommandLineDialog()
    4645{
    4746}
  • src/UIElements/CommandLineUI/CommandLineDialog.hpp

    r7f1b51 rb73545  
    3030{
    3131public:
    32   CommandLineDialog(const std::string &_title);
     32  CommandLineDialog();
    3333  virtual ~CommandLineDialog();
    3434
  • src/UIElements/CommandLineUI/CommandLineUIFactory.cpp

    r7f1b51 rb73545  
    5252
    5353
    54 Dialog* CommandLineUIFactory::makeDialog(const std::string &_title) {
    55   return new CommandLineDialog(_title);
     54Dialog* CommandLineUIFactory::makeDialog() {
     55  return new CommandLineDialog();
    5656}
    5757
  • src/UIElements/CommandLineUI/CommandLineUIFactory.hpp

    r7f1b51 rb73545  
    4848  virtual ~CommandLineUIFactory();
    4949
    50   virtual Dialog* makeDialog(const std::string &_title);
     50  virtual Dialog* makeDialog();
    5151  virtual MainWindow* makeMainWindow();
    5252
  • src/UIElements/Dialog.cpp

    r7f1b51 rb73545  
    5050using namespace std;
    5151
    52 Dialog::Dialog(const std::string &_title)
     52Dialog::Dialog()
    5353{
    5454}
     
    120120
    121121bool Dialog::hasQueries(){
    122   list<Query*>::iterator iter;
    123   size_t nonemptyQueries = 0;
    124   for(iter=queries.begin(); iter!=queries.end(); iter++) {
    125     // count all queries that not EmptyQuery
    126     if (dynamic_cast<Dialog::EmptyQuery *>(*iter) == NULL)
    127       ++nonemptyQueries;
    128   }
    129   return nonemptyQueries != 0;
     122  return queries.size();
    130123}
    131124
  • src/UIElements/Dialog.hpp

    r7f1b51 rb73545  
    153153{
    154154public:
    155   Dialog(const std::string &_title);
     155  Dialog();
    156156  virtual ~Dialog();
    157157
  • src/UIElements/Makefile.am

    r7f1b51 rb73545  
    179179  UIElements/Views/Qt4/QtTimeLine.cpp \
    180180  UIElements/Views/Qt4/QtToolBar.cpp \
    181   UIElements/Views/Qt4/QtToolBar_QtFavoriteActions.cpp \
    182181  UIElements/Views/Qt4/Qt3D/GLWorldView.cpp \
    183182  UIElements/Views/Qt4/Qt3D/GLWorldScene.cpp \
     
    193192  UIElements/Qt4/QtMainWindow.hpp \
    194193  UIElements/Qt4/Query/QtQuery.hpp \
    195   UIElements/Menu/Qt4/QMenu_tooltip.hpp \
    196194  UIElements/Menu/Qt4/QtMenuPipe.hpp \
    197195  UIElements/Views/Qt4/QDebugStream.hpp \
  • src/UIElements/Menu/Menu.cpp

    r7f1b51 rb73545  
    130130    if (MenuName == name) {
    131131      const std::string &ActionName = *iter;
    132       const std::string &ActionDescription = CurrentTrait.getDescription();
    133       Menu::addAction(ActionName, ActionDescription);
     132      Menu::addAction(ActionName);
    134133    }
    135134  }
    136135}
    137136
    138 void Menu::addAction(const std::string &ActionName, const std::string &ActionDescription)
     137void Menu::addAction(const std::string &ActionName)
    139138{
    140139  LastItem = ActionItem;
    141   addActionItem(ActionName, ActionDescription);
     140  addActionItem(ActionName, ActionName);
    142141}
    143142
  • src/UIElements/Menu/Menu.hpp

    r7f1b51 rb73545  
    6161
    6262protected:
    63   //!> Unique name of the menu for identification.
     63  // Unique name of the menu for identification.
    6464  const std::string name;
    6565
    66   /** populater function that adds all menu items.
    67    *
    68    */
     66  // populater function that adds all menu items
    6967  void populate();
    70 
    71   /** Populater function for all Actions in this menu.
    72    *
    73    */
    7468  void populateActions();
    7569
    7670private:
    77   /** Adds an action to this menu.
    78    *
    79    * @param ActionName name of action
    80    * @param ActionDescription of the action (e.g. for tooltips)
    81    */
    82   void addAction(const std::string &ActionName, const std::string &ActionDescription);
    83 
    84   /** Adds a separator (e.g. horizontal line) to menu.
    85    *
    86    */
     71  void addAction(const std::string &ActionName);
    8772  void addSeparator();
    88 
    89   /** Adds a submenu to this menu.
    90    *
    91    * @param MenuName name of submenu
    92    * @param MenuPosition position in sequence of items of submenu
    93    */
    9473  void addSubmenu(const std::string &MenuName, const int MenuPosition);
    95 
    96   /** Checks whether an item named \a token exists in this menu.
    97    *
    98    * @param token name of action of submenu
    99    * @return true - item exists, false - item does not exist in this menu
    100    */
    10174  bool isPresent(const std::string &token);
    10275
    103   //!> enumeration of all valid item types
    10476  enum ItemType {ActionItem, MenuItem, SeparatorItem, NoItem};
    10577
    106   //!> current position to add
    107   int TopPosition;
    108   //!> check whether separator followed separator
    109   enum ItemType LastItem;
    110   //!> is used to check for duplicates
    111   std::set <std::string> DuplicatesList;
     78  int TopPosition;  // current position to add
     79  enum ItemType LastItem;  // check whether separator followed separator
     80  std::set <std::string> DuplicatesList;  // is used to check for duplicates
    11281};
    11382
  • src/UIElements/Menu/Qt4/QtMenu.hpp

    r7f1b51 rb73545  
    1616
    1717#include <Qt/qaction.h>
    18 
    19 #include "Menu/Qt4/QMenu_tooltip.hpp"
    2018
    2119#include <iostream>
     
    105103  virtual void addActionItem(const std::string &token, const std::string &description)
    106104  {
    107     QAction *action = MenuInstance->addAction(QString(getNameWithAccelerator(token).c_str()));
    108     action->setToolTip(QString(description.c_str()));
    109     action->setWhatsThis(QString(description.c_str()));
     105    QAction *action = MenuInstance->addAction(QString(getNameWithAccelerator(description).c_str()));
    110106    QtMenuPipe *pipe = new QtMenuPipe(token,action);
    111107    QObject::connect(action, SIGNAL(triggered()),pipe,SLOT(called()));
     
    120116  virtual void addSubmenuItem(const std::string &token, const std::string &description)
    121117  {
    122     QMenu_tooltip *Menu = new QMenu_tooltip(QString(token.c_str()));
    123     MenuInstance->addMenu(Menu);
    124     QtMenu<QMenu_tooltip> *NewMenu = new QtMenu<QMenu_tooltip>(Menu, token);
     118    QMenu *Menu = MenuInstance->addMenu(QString(token.c_str()));
     119    QtMenu<QMenu> *NewMenu = new QtMenu<QMenu>(Menu, token);
    125120    NewMenu->init();
    126121  }
  • src/UIElements/Qt4/QtDialog.cpp

    r7f1b51 rb73545  
    4545using namespace std;
    4646
    47 QtDialog::QtDialog(const std::string &_title) :
    48     QDialog(0),
    49     Dialog(_title)
    50 {
    51   setWindowTitle(QString(_title.c_str()));
     47QtDialog::QtDialog() :
     48    QDialog(0)
     49{
    5250  // creating and filling of the Dialog window
    5351  mainLayout = new QVBoxLayout();
  • src/UIElements/Qt4/QtDialog.hpp

    r7f1b51 rb73545  
    3030  Q_OBJECT
    3131public:
    32   QtDialog(const std::string &_title);
     32  QtDialog();
    3333  virtual ~QtDialog();
    3434
  • src/UIElements/Qt4/QtMainWindow.cpp

    r7f1b51 rb73545  
    116116  toolbar = new QtToolBar(this);
    117117  glWorldView->addToolBarActions(toolbar);
    118   toolbar->addFavoriteActionItems(20);
    119118  addToolBar(toolbar);
    120119
  • src/UIElements/Qt4/QtUIFactory.cpp

    r7f1b51 rb73545  
    6767}
    6868
    69 Dialog* QtUIFactory::makeDialog(const std::string &_title) {
    70   return new QtDialog(_title);
     69Dialog* QtUIFactory::makeDialog() {
     70  return new QtDialog();
    7171}
    7272
  • src/UIElements/Qt4/QtUIFactory.hpp

    r7f1b51 rb73545  
    2626  virtual ~QtUIFactory();
    2727
    28   virtual Dialog* makeDialog(const std::string &_title);
     28  virtual Dialog* makeDialog();
    2929  virtual MainWindow* makeMainWindow();
    3030
  • src/UIElements/Qt4/Query/AtomsQtQuery.cpp

    r7f1b51 rb73545  
    4747    QtQueryList<const atom *>(_param, _parent, _dialog, temp)
    4848{
    49   ListQuerySubDialog *subDialog = new ListQuerySubDialog(this, _title);
     49  ListQuerySubDialog *subDialog = new ListQuerySubDialog(this);
    5050  subQuery = new AtomQtQuery(*subParam, _title, _description, thisVLayout, subDialog);
    5151  subDialog->setSubQuery(subQuery);
  • src/UIElements/Qt4/Query/DoublesQtQuery.cpp

    r7f1b51 rb73545  
    4747    QtQueryList<double>(_param, _parent, _dialog, temp)
    4848{
    49   ListQuerySubDialog *subDialog = new ListQuerySubDialog(this, _title);
     49  ListQuerySubDialog *subDialog = new ListQuerySubDialog(this);
    5050  subQuery = new DoubleQtQuery(*subParam, _title, _description, thisVLayout, subDialog);
    5151  subDialog->setSubQuery(subQuery);
  • src/UIElements/Qt4/Query/ElementsQtQuery.cpp

    r7f1b51 rb73545  
    4848    QtQueryList<const element *>(_param, _parent, _dialog, temp)
    4949{
    50   ListQuerySubDialog *subDialog = new ListQuerySubDialog(this, _title);
     50  ListQuerySubDialog *subDialog = new ListQuerySubDialog(this);
    5151  subQuery = new ElementQtQuery(*subParam, _title, _description, thisVLayout, subDialog);
    5252  subDialog->setSubQuery(subQuery);
  • src/UIElements/Qt4/Query/FileQtQuery.cpp

    r7f1b51 rb73545  
    4545#include "UIElements/Qt4/Query/QtQuery.hpp"
    4646
    47 #include <algorithm>
    48 #include <boost/filesystem.hpp>
    49 
    50 #include "Parameters/Validators/getFlatListFromHierarchyOfValidators.hpp"
    51 #include "Parameters/Validators/Validator.hpp"
    52 #include "Parameters/Validators/Specific/FilePresentValidator.hpp"
    53 #include "Parameters/Validators/Specific/FileSuffixValidator.hpp"
    54 #include "Parameters/Validators/Specific/ParserFileValidator.hpp"
    5547#include "Parser/ParserTypes.hpp"
    5648#include "Parser/FormatParserStorage.hpp"
     
    5951    QtQuery<boost::filesystem::path>(_param, _title, _description),
    6052    parent(_parent),
    61     dialog(_dialog),
    62     mustBePresent(false)
     53    dialog(_dialog)
    6354{
    6455  filenameLineEdit = new QLineEdit();
     
    6657  filenameLineEdit->setReadOnly(true);
    6758
    68   filenameLabel = new QLabel(QString(_title.c_str()));
     59  filenameLabel = new QLabel(QString("Input file:"));
    6960  filenameLabel->setBuddy(filenameLineEdit);
    7061  filenameLabel->setToolTip(QString(getDescription().c_str()));
     
    8071
    8172  QObject::connect(filedialogButton,SIGNAL(clicked()),this,SLOT(showFileDialog()));
    82 
    83   // fill list of suffixes
    84   const Validator<boost::filesystem::path> &validator =
    85       _param.getValidator();
    86   typedef std::vector<std::pair<const Validator<boost::filesystem::path> *, bool> > validators_t;
    87   const validators_t validators =
    88       getFlatListFromHierarchyOfValidators<boost::filesystem::path>(validator);
    89   for (validators_t::const_iterator iter = validators.begin();
    90       iter != validators.end(); ++iter) {
    91     const Validator< boost::filesystem::path > &currentvalidator = *iter->first;
    92     if (dynamic_cast<const FileSuffixValidator * const>(&currentvalidator) != NULL)
    93       suffixes.push_back(dynamic_cast<const FileSuffixValidator &>(currentvalidator).getSuffix());
    94     if (dynamic_cast<const ParserFileValidator * const>(&currentvalidator) != NULL) {
    95       const std::vector<std::string> moresuffixes =
    96           dynamic_cast<const ParserFileValidator &>(currentvalidator).getSuffixes();
    97       suffixes.insert(suffixes.end(), moresuffixes.begin(), moresuffixes.end());
    98     }
    99     if (dynamic_cast<const FilePresentValidator * const>(&currentvalidator) != NULL)
    100       mustBePresent = iter->second;
    101   }
    102   std::sort(suffixes.begin(), suffixes.end());
    10373}
    10474
     
    12393    // gather all possible suffixes
    12494    QStringList filters;
    125     std::stringstream filter_string;
    126     if (!suffixes.empty()) {
    127       filter_string << "Valid files (";
    128       for (std::vector<std::string>::const_iterator iter = suffixes.begin();
    129           iter != suffixes.end(); ++iter)
    130         filter_string << (iter == suffixes.begin() ? "*." : " *.") << *iter << " ";
    131       filter_string << ")";
    132       filters << tr(filter_string.str().c_str());
     95    std::stringstream parsersuffixes;
     96    parsersuffixes << std::string("Config files (");
     97    for (ParserTypes t = ParserTypes_begin; t < ParserTypes_end; ++t){
     98      if (t != ParserTypes_begin)
     99        parsersuffixes << std::string(" ");
     100      parsersuffixes << std::string("*.") <<
     101          FormatParserStorage::getInstance().getSuffixFromType(t);
    133102    }
     103    parsersuffixes << std::string(")");
     104    filters << tr(parsersuffixes.str().c_str());
     105    filters << tr("Data files (*.dat)");
    134106    filters << tr("Any files (*)");
    135107    theFileDialog->setNameFilters(filters);
  • src/UIElements/Qt4/Query/FilesQtQuery.cpp

    r7f1b51 rb73545  
    4848    QtQueryList<boost::filesystem::path>(_param, _parent, _dialog, temp)
    4949{
    50   ListQuerySubDialog *subDialog = new ListQuerySubDialog(this, _title);
     50  ListQuerySubDialog *subDialog = new ListQuerySubDialog(this);
    5151  subQuery = new FileQtQuery(*subParam, _title, _description, thisVLayout, subDialog);
    5252  subDialog->setSubQuery(subQuery);
  • src/UIElements/Qt4/Query/IntsQtQuery.cpp

    r7f1b51 rb73545  
    4747    QtQueryList<int>(_param, _parent, _dialog, temp)
    4848{
    49   ListQuerySubDialog *subDialog = new ListQuerySubDialog(this, _title);
     49  ListQuerySubDialog *subDialog = new ListQuerySubDialog(this);
    5050  subQuery = new IntQtQuery(*subParam, _title, _description, thisVLayout, subDialog);
    5151  subDialog->setSubQuery(subQuery);
  • src/UIElements/Qt4/Query/MoleculesQtQuery.cpp

    r7f1b51 rb73545  
    4747    QtQueryList<const molecule *>(_param, _parent, _dialog, temp)
    4848{
    49   ListQuerySubDialog *subDialog = new ListQuerySubDialog(this, _title);
     49  ListQuerySubDialog *subDialog = new ListQuerySubDialog(this);
    5050  subQuery = new MoleculeQtQuery(*subParam, _title, _description, thisVLayout, subDialog);
    5151  subDialog->setSubQuery(subQuery);
  • src/UIElements/Qt4/Query/QtQuery.hpp

    r7f1b51 rb73545  
    211211  QFileDialog *theFileDialog;
    212212  Dialog *dialog;
    213   std::vector<std::string> suffixes;
    214   bool mustBePresent;
    215213};
    216214
  • src/UIElements/Qt4/Query/QtQueryList.hpp

    r7f1b51 rb73545  
    107107{
    108108public:
    109   ListQuerySubDialog(QtQueryListUntyped *_parent, const std::string &_title) :
    110     Dialog(_title),
    111     parent(_parent),
    112     sub(NULL)
    113   {}
     109  ListQuerySubDialog(QtQueryListUntyped *_parent) : parent(_parent), sub(NULL){}
    114110  virtual void update()
    115111  {
  • src/UIElements/Qt4/Query/StringsQtQuery.cpp

    r7f1b51 rb73545  
    4747    QtQueryList<std::string>(_param, _parent, _dialog, temp)
    4848{
    49   ListQuerySubDialog *subDialog = new ListQuerySubDialog(this, _title);
     49  ListQuerySubDialog *subDialog = new ListQuerySubDialog(this);
    5050  subQuery = new StringQtQuery(*subParam, _title, _description, thisVLayout, subDialog);
    5151  subDialog->setSubQuery(subQuery);
  • src/UIElements/Qt4/Query/UnsignedIntsQtQuery.cpp

    r7f1b51 rb73545  
    4747    QtQueryList<unsigned int>(_param, _parent, _dialog, temp)
    4848{
    49   ListQuerySubDialog *subDialog = new ListQuerySubDialog(this, _title);
     49  ListQuerySubDialog *subDialog = new ListQuerySubDialog(this);
    5050  subQuery = new UnsignedIntQtQuery(*subParam, _title, _description, thisVLayout, subDialog);
    5151  subDialog->setSubQuery(subQuery);
  • src/UIElements/Qt4/Query/VectorsQtQuery.cpp

    r7f1b51 rb73545  
    4848    QtQueryList<Vector>(_param, _parent, _dialog, temp)
    4949{
    50   ListQuerySubDialog *subDialog = new ListQuerySubDialog(this, _title);
     50  ListQuerySubDialog *subDialog = new ListQuerySubDialog(this);
    5151  subQuery = new VectorQtQuery(*subParam, _title, _description, thisVLayout, subDialog);
    5252  subDialog->setSubQuery(subQuery);
  • src/UIElements/TextUI/TextDialog.cpp

    r7f1b51 rb73545  
    4141
    4242
    43 TextDialog::TextDialog(const std::string &_title) :
    44         Dialog(_title)
     43TextDialog::TextDialog()
    4544{
    4645}
  • src/UIElements/TextUI/TextDialog.hpp

    r7f1b51 rb73545  
    2828{
    2929public:
    30   TextDialog(const std::string &_title);
     30  TextDialog();
    3131  virtual ~TextDialog();
    3232
  • src/UIElements/TextUI/TextUIFactory.cpp

    r7f1b51 rb73545  
    4646
    4747
    48 Dialog* TextUIFactory::makeDialog(const std::string &_title) {
    49   return new TextDialog(_title);
     48Dialog* TextUIFactory::makeDialog() {
     49  return new TextDialog();
    5050}
    5151
  • src/UIElements/TextUI/TextUIFactory.hpp

    r7f1b51 rb73545  
    2424  virtual ~TextUIFactory();
    2525
    26   virtual Dialog* makeDialog(const std::string &_title);
     26  virtual Dialog* makeDialog();
    2727  virtual MainWindow* makeMainWindow();
    2828
  • src/UIElements/UIFactory.hpp

    r7f1b51 rb73545  
    5656   * Again the type is determined upon factory creation.
    5757   */
    58   virtual Dialog* makeDialog(const std::string &_title)=0;
     58  virtual Dialog* makeDialog()=0;
    5959
    6060protected:
  • src/UIElements/Views/Qt4/Plotting/QSeisPlot.cpp

    r7f1b51 rb73545  
    4343    ASSERT(m_plottype != NULL,
    4444        "QSeisPlot::QSeisPlot() - could not find desired plottype by name "+type.toStdString()+".");
    45 //    std::cout << "Type is " << type.toStdString() << ", " << m_plottype << std::endl;
     45    std::cout << "Type is " << type.toStdString() << ", " << m_plottype << std::endl;
    4646
    4747    //label axes
  • src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_atom.cpp

    r7f1b51 rb73545  
    6969  }
    7070  World::getInstance().signOn(this, World::SelectionChanged);
     71  WorldTime::getInstance().signOn(this, WorldTime::TimeChanged);
    7172
    7273  // set the object's id
     
    8889  }
    8990  World::getInstance().signOff(this, World::SelectionChanged);
     91  WorldTime::getInstance().signOff(this, WorldTime::TimeChanged);
    9092}
    9193
     
    228230        break;
    229231    }
     232  } else {
     233    // notification from world
     234#ifdef LOG_OBSERVER
     235    observerLog().addMessage() << "++ Update of Observer "<< observerLog().getName(static_cast<Observer *>(this))
     236          << " received notification from Worldtime for channel "
     237          << notification->getChannelNo() << ".";
     238#endif
     239    switch (notification->getChannelNo()) {
     240      case WorldTime::TimeChanged:
     241        resetPosition();
     242        emit changed();
     243        break;
     244      default:
     245        break;
     246    }
    230247  }
    231248}
  • src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_atom.hpp

    r7f1b51 rb73545  
    2222#include "types.hpp"
    2323
    24 class GLWorldScene;
    25 
    2624class GLMoleculeObject_atom : public GLMoleculeObject, public Observer
    2725{
     
    4442  void indexChanged(GLMoleculeObject_atom *ob, int oldId, int newId);
    4543
    46 private:
    47   //!> grant GLWorldScene acess to reset functions
    48   friend class GLWorldScene;
    49 
     44public:
    5045  void resetPosition();
    5146
  • src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_bond.hpp

    r7f1b51 rb73545  
    2323class atom;
    2424
    25 class GLWorldScene;
    26 
    2725class GLMoleculeObject_bond : public GLMoleculeObject, public Observer
    2826{
     
    4341
    4442private:
    45   //!> grant WorldScene access to reset functions
    46   friend class GLWorldScene;
    47 
    4843  /** Recalculates the position of the cylinder representing the bond.
    4944   *
  • src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_shape.cpp

    r7f1b51 rb73545  
    8080  std::vector<Vector> points = shape.getHomogeneousPointsOnSurface(NumPointsonSurface);
    8181
     82  // Fill the points into a tesselate-able container.
     83  TesselPointSTLList Corners;
     84  for (size_t i=0;i<points.size();++i){
     85    TesselPoint *Walker = new TesselPoint;
     86    Walker->setPosition(points[i]);
     87    Walker->setName(toString(i));
     88    Walker->setNr(i);
     89    Corners.push_back(Walker);
     90  }
     91
     92  // Tesselate the points.
     93  Tesselation *T = new Tesselation;
     94  PointCloudAdaptor<TesselPointSTLList> cloud(&Corners, "TesselPointSTLList");
     95  (*T)(cloud, minradius);
     96
     97  // Fill the points into a Qt geometry.
    8298  QGeometryData geo;
    83   // we need at least three points for tesselation
    84   if (points.size() >= 3) {
    85     // Fill the points into a tesselate-able container.
    86     TesselPointSTLList Corners;
    87     for (size_t i=0;i<points.size();++i){
    88       TesselPoint *Walker = new TesselPoint;
    89       Walker->setPosition(points[i]);
    90       Walker->setName(toString(i));
    91       Walker->setNr(i);
    92       Corners.push_back(Walker);
    93     }
    94  
    95     // Tesselate the points.
    96     Tesselation T;
    97     PointCloudAdaptor<TesselPointSTLList> cloud(&Corners, "TesselPointSTLList");
    98     T(cloud, minradius);
    99  
    100     // Fill the points into a Qt geometry.
    101     LinkedCell_deprecated LinkedList(cloud, minradius);
    102     std::vector<Vector> normals;
    103     normals.resize(points.size(), zeroVec);
    104     for(size_t i=0;i<points.size();++i){
    105       // add data to the primitive
    106       geo.appendVertex(QVector3D(points[i][0], points[i][1], points[i][2]));
    107       if (ShapeFactory::getInstance().isSimpleShape(shape.getType()))
    108         normals[i] = shape.getNormal(points[i]);
    109       else
    110         normals[i] = T.getNormal(points[i], &LinkedList);
    111       geo.appendNormal(QVector3D(normals[i][0], normals[i][1], normals[i][2]));
    112       geo.appendColor(QColor(1, 1, 1, 1));
    113       geo.appendTexCoord(QVector2D(0, 0));
    114     }
    115  
    116     // Fill the tesselated triangles into the geometry.
    117     for (TriangleMap::const_iterator runner = T.TrianglesOnBoundary.begin(); runner != T.TrianglesOnBoundary.end(); runner++) {
    118       int v[3];
    119       for (size_t i=0; i<3; ++i)
    120         v[i] = runner->second->endpoints[i]->node->getNr();
    121  
    122       // Sort the vertices so the triangle is clockwise (relative to the normal vector).
    123       Vector cross = points[v[1]] - points[v[0]];
    124       cross.VectorProduct(points[v[2]] - points[v[0]]);
    125       if (cross.ScalarProduct(normals[v[0]] + normals[v[1]] + normals[v[2]]) > 0)
    126         geo.appendIndices(v[0], v[1], v[2]);
    127       else
    128         geo.appendIndices(v[0], v[2], v[1]);
    129     }
     99  LinkedCell_deprecated LinkedList(cloud, minradius);
     100  std::vector<Vector> normals;
     101  normals.resize(points.size(), zeroVec);
     102  for(size_t i=0;i<points.size();++i){
     103    // add data to the primitive
     104    geo.appendVertex(QVector3D(points[i][0], points[i][1], points[i][2]));
     105    if (ShapeFactory::getInstance().isSimpleShape(shape.getType()))
     106      normals[i] = shape.getNormal(points[i]);
     107    else
     108      normals[i] = T->getNormal(points[i], &LinkedList);
     109    geo.appendNormal(QVector3D(normals[i][0], normals[i][1], normals[i][2]));
     110    geo.appendColor(QColor(1, 1, 1, 1));
     111    geo.appendTexCoord(QVector2D(0, 0));
     112  }
     113
     114  // Fill the tesselated triangles into the geometry.
     115  for (TriangleMap::const_iterator runner = T->TrianglesOnBoundary.begin(); runner != T->TrianglesOnBoundary.end(); runner++) {
     116    int v[3];
     117    for (size_t i=0; i<3; ++i)
     118      v[i] = runner->second->endpoints[i]->node->getNr();
     119
     120    // Sort the vertices so the triangle is clockwise (relative to the normal vector).
     121    Vector cross = points[v[1]] - points[v[0]];
     122    cross.VectorProduct(points[v[2]] - points[v[0]]);
     123    if (cross.ScalarProduct(normals[v[0]] + normals[v[1]] + normals[v[2]]) > 0)
     124      geo.appendIndices(v[0], v[1], v[2]);
     125    else
     126      geo.appendIndices(v[0], v[2], v[1]);
    130127  }
    131128
  • src/UIElements/Views/Qt4/Qt3D/GLWorldScene.cpp

    r7f1b51 rb73545  
    9494  }
    9595
    96   connect(this, SIGNAL(updated()), this, SLOT(update()));
    97 
    9896  setSelectionMode(SelectAtom);
    9997
     
    112110void GLWorldScene::init()
    113111{
    114   const std::vector<atom*> &atoms = World::getInstance().getAllAtoms();
    115 
    116   if (atoms.size() > 0) {
    117     for (std::vector<atom*>::const_iterator atomiter = atoms.begin();
    118         atomiter != atoms.end();
    119         atomiter++) {
    120       // create atom objects in scene
    121       atomInserted((*atomiter)->getId());
    122 
    123       // create bond objects in scene
    124       const BondList &bondlist = (*atomiter)->getListOfBonds();
    125       for (BondList::const_iterator bonditer = bondlist.begin();
    126           bonditer != bondlist.end();
    127           ++bonditer) {
    128         const bond::ptr _bond = *bonditer;
    129         const GLMoleculeObject_bond::SideOfBond side = (_bond->leftatom == *atomiter) ?
    130             GLMoleculeObject_bond::left : GLMoleculeObject_bond::right;
    131         bondInserted(_bond, side);
    132       }
    133     }
    134   }
    135 }
    136 
    137 /** Update the WorldScene with molecules and atoms from World.
    138  *
    139  * This function should be called after e.g. WorldTime::TimeChanged was
    140  * received or after another molecule has been loaded.
    141  *
    142  */
    143 void GLWorldScene::update()
    144 {
    145   const std::vector<atom*> &atoms = World::getInstance().getAllAtoms();
    146 
    147   if (atoms.size() > 0) {
    148     for (std::vector<atom*>::const_iterator atomiter = atoms.begin();
    149         atomiter != atoms.end();
    150         atomiter++) {
    151       // check whether atom already exists
    152       const atomId_t atomid = (*atomiter)->getId();
    153       const bool atom_present = AtomsinSceneMap.count(atomid);
    154       if (!atom_present)
     112  const std::vector<molecule*> &molecules = World::getInstance().getAllMolecules();
     113
     114  if (molecules.size() > 0) {
     115    for (std::vector<molecule*>::const_iterator Runner = molecules.begin();
     116        Runner != molecules.end();
     117        Runner++) {
     118
     119      for (molecule::const_iterator atomiter = (*Runner)->begin();
     120          atomiter != (*Runner)->end();
     121          ++atomiter) {
     122        // create atom objects in scene
    155123        atomInserted((*atomiter)->getId());
    156       else
    157         AtomsinSceneMap[atomid]->resetPosition();
    158 
    159 
    160       // create bond objects in scene
    161       const BondList &bondlist = (*atomiter)->getListOfBonds();
    162       for (BondList::const_iterator bonditer = bondlist.begin();
    163           bonditer != bondlist.end();
    164           ++bonditer) {
    165         const bond::ptr _bond = *bonditer;
    166         const GLMoleculeObject_bond::SideOfBond side = (_bond->leftatom == *atomiter) ?
    167             GLMoleculeObject_bond::left : GLMoleculeObject_bond::right;
    168         bool bond_present = false;
    169         const BondIds ids = getBondIds(_bond,side);
    170         if (atom_present) {
    171           // check whether bond is not present already
    172           bond_present = BondsinSceneMap.count(ids);
    173         }
    174         if (!bond_present)
     124
     125        // create bond objects in scene
     126        const BondList &bondlist = (*atomiter)->getListOfBonds();
     127        for (BondList::const_iterator bonditer = bondlist.begin();
     128            bonditer != bondlist.end();
     129            ++bonditer) {
     130          const bond::ptr _bond = *bonditer;
     131          const GLMoleculeObject_bond::SideOfBond side = (_bond->leftatom == *atomiter) ?
     132              GLMoleculeObject_bond::left : GLMoleculeObject_bond::right;
    175133          bondInserted(_bond, side);
    176         else {
    177           BondsinSceneMap[ids]->resetPosition();
    178           BondsinSceneMap[ids]->resetWidth();
    179134        }
    180135      }
     
    291246}
    292247
    293 /** Helper function to get bond ids in the correct order for BondNodeMap.
    294  *
    295  * \return pair of ids in correct order.
    296  */
    297 GLWorldScene::BondIds GLWorldScene::getBondIds(
    298     const bond::ptr _bond,
    299     const enum GLMoleculeObject_bond::SideOfBond _side) const
    300 {
     248/** Adds a bond to the scene.
     249 *
     250 * @param _bond bond to add
     251 * @param side which side of the bond (left or right)
     252 */
     253void GLWorldScene::bondInserted(const bond::ptr _bond, const enum GLMoleculeObject_bond::SideOfBond side)
     254{
     255  LOG(3, "INFO: GLWorldScene::bondInserted() - Adding bond "+toString(*_bond)+".");
     256  //LOG(4, "INFO: Currently present bonds " << BondsinSceneMap << ".");
     257
    301258  BondIds ids;
    302   switch (_side) {
     259  switch (side) {
    303260    case GLMoleculeObject_bond::left:
    304261      ids = std::make_pair(_bond->leftatom->getId(), _bond->rightatom->getId());
     
    308265      break;
    309266  }
    310   return ids;
    311 }
    312 
    313 /** Adds a bond to the scene.
    314  *
    315  * @param _bond bond to add
    316  * @param side which side of the bond (left or right)
    317  */
    318 void GLWorldScene::bondInserted(const bond::ptr _bond, const enum GLMoleculeObject_bond::SideOfBond _side)
    319 {
    320   LOG(3, "INFO: GLWorldScene::bondInserted() - Adding bond "+toString(*_bond)+".");
    321   //LOG(4, "INFO: Currently present bonds " << BondsinSceneMap << ".");
    322 
    323   const BondIds ids = getBondIds(_bond, _side);
     267#ifndef NDEBUG
    324268  BondNodeMap::iterator iter = BondsinSceneMap.find(ids);
    325   if (iter == BondsinSceneMap.end()) {
    326     GLMoleculeObject_bond * bondObject =
    327         new GLMoleculeObject_bond(meshCylinder, this, _bond, _side);
    328     connect (
    329         bondObject, SIGNAL(BondRemoved(const atomId_t, const atomId_t)),
    330         this, SLOT(bondRemoved(const atomId_t, const atomId_t)));
    331     connect (bondObject, SIGNAL(changed()), this, SIGNAL(changed()));
    332     BondsinSceneMap.insert( make_pair(ids, bondObject) );
    333   //    BondIdsinSceneMap.insert( Leftids );
    334   } else {
    335     iter->second->resetPosition();
    336     iter->second->resetWidth();
    337   }
     269  ASSERT(iter == BondsinSceneMap.end(),
     270      "GLWorldScene::bondAdded() - same left-sided bond "+toString(*_bond)+" added again.");
     271#endif
     272  GLMoleculeObject_bond * bondObject =
     273      new GLMoleculeObject_bond(meshCylinder, this, _bond, side);
     274  connect (
     275      bondObject, SIGNAL(BondRemoved(const atomId_t, const atomId_t)),
     276      this, SLOT(bondRemoved(const atomId_t, const atomId_t)));
     277  connect (bondObject, SIGNAL(changed()), this, SIGNAL(changed()));
     278  BondsinSceneMap.insert( make_pair(ids, bondObject) );
     279//    BondIdsinSceneMap.insert( Leftids );
    338280  emit changeOccured();
    339281}
  • src/UIElements/Views/Qt4/Qt3D/GLWorldScene.hpp

    r7f1b51 rb73545  
    6868signals:
    6969  void changed();
    70   void updated();
    7170  void changeOccured();
    7271  void pressed();
     
    9190  void addShape();
    9291  void removeShape();
    93   void update();
    9492
    9593public:
     
    102100  typedef std::pair< atomId_t, atomId_t> BondIds;
    103101  friend std::ostream &operator<<(std::ostream &ost, const BondIds &t);
    104 
    105   BondIds getBondIds(
    106       const bond::ptr _bond,
    107       const enum GLMoleculeObject_bond::SideOfBond side) const;
    108102
    109103  typedef std::map< atomId_t, GLMoleculeObject_atom* > AtomNodeMap;
  • src/UIElements/Views/Qt4/Qt3D/GLWorldView.cpp

    r7f1b51 rb73545  
    8282  connect(this, SIGNAL(ShapeAdded()), worldscene, SLOT(addShape()));
    8383  connect(this, SIGNAL(ShapeRemoved()), worldscene, SLOT(removeShape()));
    84   connect(this, SIGNAL(TimeChanged()), worldscene, SIGNAL(updated()));
    8584  connect(worldscene, SIGNAL(changeOccured()), this, SLOT(changeSignalled()));
    8685  connect(worldscene, SIGNAL(changed()), this, SIGNAL(changed()));
     
    394393#endif
    395394        emit changed();
    396         emit TimeChanged();
    397395        break;
    398396      }
  • src/UIElements/Views/Qt4/Qt3D/GLWorldView.hpp

    r7f1b51 rb73545  
    5757signals:
    5858  void changed();
    59   void TimeChanged();
    6059  void atomInserted(const atomicNumber_t _id);
    6160  void atomRemoved(const atomicNumber_t _id);
  • src/UIElements/Views/Qt4/QtHomologyList.cpp

    r7f1b51 rb73545  
    4141#include <QtGui/QTreeWidget>
    4242#include <QtGui/QTabWidget>
    43 #include <Qt/qsplitter.h>
    44 #include <Qt/qboxlayout.h>
     43#include<Qt/qsplitter.h>
    4544
    4645#include "CodePatterns/MemDebug.hpp"
     
    7473    potentialregistry_enabled(false)
    7574{
    76   QVBoxLayout* layout = new QVBoxLayout(this);
    7775  QSplitter *splitter = new QSplitter (Qt::Horizontal, this );
    78   layout->addWidget(splitter);
    79 
    80   // tree widget
    8176  treewidget = new QTreeWidget (splitter);
    82   treewidget->setSelectionMode( QTreeWidget::SingleSelection );
    83   treewidget->setColumnCount(COLUMNCOUNT);
    84   QStringList header;
    85   for(int i=0; i<COLUMNCOUNT;++i)
    86     header << COLUMNNAMES[i];
    87   treewidget->setHeaderLabels(header);
    8877  splitter->addWidget(treewidget);
    8978
    90   // plot widget
    9179#ifdef HAVE_QWT
    9280  widget = new QSeisPlotPage ("energy", splitter);
     
    9684#endif
    9785  splitter->addWidget(widget);
     86//  splitter->setStretchFactor(10, 1);
     87
     88  treewidget->setSelectionMode( QTreeWidget::SingleSelection );
     89
     90  treewidget->setColumnCount(COLUMNCOUNT);
     91  QStringList header;
     92        for(int i=0; i<COLUMNCOUNT;++i)
     93          header << COLUMNNAMES[i];
     94        treewidget->setHeaderLabels(header);
    9895
    9996        dirty = true;
     
    201198        const EmpiricalPotential &potential = dynamic_cast<const EmpiricalPotential &>(**potiter);
    202199        const std::string potentialname = potential.getName();
    203         const FunctionModel::filter_t filter = potential.getSpecificFilter();
    204200        Coordinator::ptr coordinator = potential.getCoordinator();
    205201        // then we need to sample the potential
    206202        xvalues.clear();
    207203        for (TrainingData::InputVector_t::const_iterator inputiter = inputs.begin();
    208             inputiter != inputs.end(); ++inputiter) {
    209           const FunctionModel::list_of_arguments_t specificargs = filter(*inputiter);
    210           double average = 0.;
    211           for (FunctionModel::list_of_arguments_t::const_iterator argiter = specificargs.begin();
    212               argiter != specificargs.end(); ++argiter) {
    213             const FunctionModel::arguments_t args = *argiter;
    214             average += (*coordinator)(args);
    215           }
    216           if (specificargs.size() > 1) {
    217             const size_t index =  xvalues.size();
    218             xvalues.push_back(average/(double)specificargs.size());
    219             yvalues[index] *= 1./(double)specificargs.size();
    220           }
    221         }
    222 
    223         // We need to sort the xvalues (and associated yvalues also)
     204            inputiter != inputs.end(); ++inputiter)
     205          xvalues.push_back((*coordinator)(*inputiter));
     206
     207        // We need to sort the xvalues (and yvalues also)
    224208        std::vector<double>::const_iterator xiter = xvalues.begin();
    225209        std::vector<double>::const_iterator yiter = yvalues.begin();
  • src/UIElements/Views/Qt4/QtMoleculeList.cpp

    r7f1b51 rb73545  
    128128      formula.push_back((*iter)->getFormula());
    129129      groupItem = new QTreeWidgetItem(this);
    130       groupItem->setText(0, QString("default"));
    131       groupItem->setText(1, QString::number(0));
    132       groupItem->setText(2, QString(""));
     130      groupItem->setText(0, QString((*iter)->getName().c_str()));
     131      groupItem->setText(1, QString::number((*iter)->getAtomCount()));
     132      groupItem->setText(2, QString((*iter)->getFormula().toString().c_str()));
    133133      groupItem->setText(3, "0");
    134134      groupItem->setData(0, Qt::UserRole, QVariant(-1));
  • src/UIElements/Views/Qt4/QtToolBar.cpp

    r7f1b51 rb73545  
    4444  QToolBar(_parent)
    4545{
    46   addActionItem("undo", "undo the last Action", "edit-undo");
    47   addActionItem("redo", "redo the last Action", "edit-redo");
     46  addActionItem("undo", "undo", "edit-undo");
     47  addActionItem("redo", "redo", "edit-redo");
    4848}
    4949
     
    5757{
    5858  QAction *action = addAction(QString(description.c_str()));
    59   action->setIcon(FavActions.getIcon(token, icon_name));
    60   action->setToolTip(QString(description.c_str()));
     59  action->setIcon(QIcon::fromTheme(QString(icon_name.c_str())));
    6160  QtMenuPipe *pipe = new QtMenuPipe(token,action);
    6261  QObject::connect(action, SIGNAL(triggered()),pipe,SLOT(called()));
    6362  plumbing.push_back(pipe);
    64   present_actions.insert( token );
    6563}
    66 
    67 void QtToolBar::addFavoriteActionItems(const unsigned int _max)
    68 {
    69   // separate favorite actions
    70   addSeparator();
    71   FavActions.addToolBarActions(*this, _max);
    72 }
    73 
  • src/UIElements/Views/Qt4/QtToolBar.hpp

    r7f1b51 rb73545  
    2020#include "Menu/Qt4/QtMenuPipe.hpp"
    2121
    22 #include <map>
    23 #include <set>
    24 #include <string>
    25 
    26 #include "CodePatterns/Observer/Observer.hpp"
    27 
    2822
    2923class QtToolBar : public QToolBar
     
    3428  virtual ~QtToolBar();
    3529
    36   /** Adds an action named \a token to the toolbar.
    37    *
    38    * @param token token of Action
    39    * @param description description to appear as tooltip
    40    * @param icon_name name of icon
    41    */
    42   void addActionItem(const std::string &token, const std::string &description, const std::string &icon_name);
    43 
    44   /** Function to add a set of favorite actions.
    45    *
    46    * @param _max maximum number of actions to add
    47    */
    48   void addFavoriteActionItems(const unsigned int _max);
    49 
    50   //!> typedef for a set of action tokens
    51   typedef std::set<std::string> present_actions_t;
    52 
    53   /** Getter for current set of present action on this toolbar.
    54    *
    55    * @return set of action tokens
    56    */
    57   const present_actions_t & getPresentActions() const
    58   { return present_actions; }
    59 
    6030private:
    6131  std::list<QtMenuPipe*> plumbing;
    6232
    63   /** This class knows about all Actions being called and stores their frequency.
    64    *
    65    * This is used to know about the topmost used Actions and creating placeholder
    66    * toolbar icons for these on program launch.
    67    *
    68    */
    69   class QtFavoriteActions : public Observer
    70   {
    71   public:
    72     QtFavoriteActions();
    73     ~QtFavoriteActions();
     33  void addActionItem(const std::string &token, const std::string &description, const std::string &icon_name);
    7434
    75     void addToolBarActions(
    76         QtToolBar &_toolbar,
    77         const unsigned int _max) const;
    78 
    79     void update(Observable *publisher);
    80     void subjectKilled(Observable *publisher);
    81     void recieveNotification(Observable *publisher, Notification_ptr notification);
    82 
    83     QIcon getIcon(
    84         const std::string &_token,
    85         const std::string &_icon_name
    86         ) const;
    87 
    88   private:
    89     QIcon createIconPlaceholder(
    90         const std::string &_token
    91         ) const;
    92 
    93   private:
    94     //!> typedef for the action counts
    95     typedef std::map<std::string, unsigned int> ActionCounts_t;
    96     //!> map counts how often each action has been called
    97     ActionCounts_t ActionCounts;
    98     //!> sign in to ActionQueue?
    99     bool ActionQueue_observing;
    100   };
    101 
    102   //!> instance dealing with favorite action icons
    103   QtFavoriteActions FavActions;
    104 
    105   //!> set of already present action icons
    106   present_actions_t present_actions;
    10735};
    10836
  • src/World.cpp

    r7f1b51 rb73545  
    194194}
    195195
    196 bool areBondsPresent(const unsigned int _step)
    197 {
    198   bool status = false;
    199 
    200   for (World::AtomConstIterator iter = const_cast<const World &>(World::getInstance()).getAtomIter();
    201       (!status) && (iter != const_cast<const World &>(World::getInstance()).atomEnd()); ++iter) {
    202     const atom * const Walker = *iter;
    203     status |= !Walker->getListOfBondsAtStep(_step).empty();
    204   }
    205 
    206   return status;
    207 }
    208 
    209 void copyBondgraph(const unsigned int _srcstep, const unsigned int _deststep)
    210 {
    211   // gather all bonds from _srcstep
    212   std::set<bond *> SetOfBonds;
    213   for (World::AtomConstIterator iter = const_cast<const World &>(World::getInstance()).getAtomIter();
    214       iter != const_cast<const World &>(World::getInstance()).atomEnd(); ++iter) {
    215     const atom * const Walker = *iter;
    216     const BondList bonds = Walker->getListOfBondsAtStep(_srcstep);
    217     BOOST_FOREACH( bond::ptr bondptr, bonds) {
    218       SetOfBonds.insert(bondptr.get());
    219     }
    220   }
    221   LOG(4, "DEBUG: We gathered " << SetOfBonds.size() << " bonds in total.");
    222 
    223   // copy bond to new time step
    224   for (std::set<bond *>::const_iterator bonditer = SetOfBonds.begin();
    225       bonditer != SetOfBonds.end(); ++bonditer) {
    226     const atom * const Walker = (*bonditer)->leftatom;
    227     const atom * const OtherWalker = (*bonditer)->rightatom;
    228     const_cast<atom *>(Walker)->addBond(_deststep, const_cast<atom *>(OtherWalker));
    229   }
    230 }
    231 
    232196void World::setTime(const unsigned int _step)
    233197{
    234198  if (_step != WorldTime::getTime()) {
    235     const unsigned int oldstep = WorldTime::getTime();
    236199    // set new time
    237200    WorldTime::getInstance().setTime(_step);
     
    244207      destroyMolecule(*iter);
    245208    }
    246     // 2. copy bond graph
    247     if (!areBondsPresent(_step)) {
    248 //      AtomComposite Set = getAllAtoms();
    249 //      BG->cleanAdjacencyList(Set);
    250       copyBondgraph(oldstep, _step);
    251     }
     209    // 2. (re-)create bondgraph
     210    AtomComposite Set = getAllAtoms();
     211    BG->CreateAdjacency(Set);
    252212
    253213    // 3. scan for connected subgraphs => molecules
  • tests/Python/AllActions/options.dat

    r7f1b51 rb73545  
    9191interpolation-degree    "5"
    9292interpolation-steps     "9"
    93 keep-bondgraph  "1"
    9493keep-fixed-CenterOfMass "0"
    9594load    "test.data"
  • tests/regression/Options/Warranty/testsuite-options-warranty.at

    r7f1b51 rb73545  
    2121AT_KEYWORDS([options warranty])
    2222AT_CHECK([../../molecuilder --warranty], 0, [stdout], [ignore])
     23AT_CHECK([fgrep "statement concerning warranty" stdout], 0, [ignore], [ignore])
    2324AT_CHECK([fgrep "WITHOUT ANY WARRANTY" stdout], 0, [ignore], [ignore])
    2425AT_CLEANUP
Note: See TracChangeset for help on using the changeset viewer.