Ignore:
Timestamp:
Dec 4, 2010, 11:47:35 PM (14 years ago)
Author:
Frederik Heber <heber@…>
Branches:
Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
Children:
b2151f5
Parents:
d5240d
git-author:
Frederik Heber <heber@…> (11/11/10 18:43:28)
git-committer:
Frederik Heber <heber@…> (12/04/10 23:47:35)
Message:

MenuDescription is now a singleton.

  • also all Maps are static objects, allocated and filled dynamically in the constructor, removed in the destructor.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/UIElements/Menu/MenuDescription.cpp

    rd5240d rc82d0c  
    2424#include <string>
    2525
    26 #include "Actions/ActionRegistry.hpp"
     26//#include "Actions/ActionRegistry.hpp"
    2727#include "Menu/MenuDescription.hpp"
     28
     29#include "Patterns/Singleton_impl.hpp"
     30
     31MenuDescription::TextMap *MenuDescription::MenuDescriptionsMap = NULL;
     32MenuDescription::IterableMap *MenuDescription::MenuPositionMap = NULL;
     33MenuDescription::TextMap *MenuDescription::MenuNameMap = NULL;
     34
    2835
    2936/** Constructor of class MenuDescription.
     
    3239MenuDescription::MenuDescription()
    3340{
     41  // allocate maps
     42  MenuDescriptionsMap = new TextMap();
     43  MenuPositionMap = new IterableMap();
     44  MenuNameMap = new TextMap();
     45
    3446  // put each menu into its place, "" means top level
    35   MenuPositionMap["analysis"] = TopPosition("tools",1);
    36   MenuPositionMap["atom"] = TopPosition("edit",1);
    37   MenuPositionMap["command"] = TopPosition("",3);
    38   MenuPositionMap["edit"] = TopPosition("",2);
    39   MenuPositionMap["fragmentation"] = TopPosition("tools",3);
    40   MenuPositionMap["molecule"] = TopPosition("edit",2);
    41   MenuPositionMap["parser"] = TopPosition("edit",3);
    42   MenuPositionMap["selection"] = TopPosition("edit",4);
    43   MenuPositionMap["tesselation"] = TopPosition("tools",2);
    44   MenuPositionMap["tools"] = TopPosition("",4);
    45   MenuPositionMap["world"] = TopPosition("",1);
     47  MenuPositionMap->insert(std::make_pair("analysis",TopPosition("tools",1)));
     48  MenuPositionMap->insert(std::make_pair("atom",TopPosition("edit",1)));
     49  MenuPositionMap->insert(std::make_pair("command",TopPosition("",3)));
     50  MenuPositionMap->insert(std::make_pair("edit",TopPosition("",2)));
     51  MenuPositionMap->insert(std::make_pair("fragmentation",TopPosition("tools",3)));
     52  MenuPositionMap->insert(std::make_pair("molecule",TopPosition("edit",2)));
     53  MenuPositionMap->insert(std::make_pair("parser",TopPosition("edit",3)));
     54  MenuPositionMap->insert(std::make_pair("selection",TopPosition("edit",4)));
     55  MenuPositionMap->insert(std::make_pair("tesselation",TopPosition("tools",2)));
     56  MenuPositionMap->insert(std::make_pair("tools",TopPosition("",4)));
     57  MenuPositionMap->insert(std::make_pair("world",TopPosition("",1)));
    4658
    4759  // put menu description into each menu category
    48   MenuDescriptionsMap["analysis"] = "Analysis (pair correlation, volume)";
    49   MenuDescriptionsMap["atom"] = "Edit atoms";
    50   MenuDescriptionsMap["command"] = "Configuration";
    51   MenuDescriptionsMap["edit"] = "Edit";
    52   MenuDescriptionsMap["fragmentation"] = "Fragmentation";
    53   MenuDescriptionsMap["molecule"] = "Parse files into system";
    54   MenuDescriptionsMap["parser"] = "Edit molecules (load, parse, save)";
    55   MenuDescriptionsMap["selection"] = "Select atoms/molecules";
    56   MenuDescriptionsMap["tesselation"] = "Tesselate molecules";
    57   MenuDescriptionsMap["tools"] = "Various tools";
    58   MenuDescriptionsMap["world"] = "Edit world";
     60  MenuDescriptionsMap->insert(std::make_pair("analysis","Analysis (pair correlation, volume)"));
     61  MenuDescriptionsMap->insert(std::make_pair("atom","Edit atoms"));
     62  MenuDescriptionsMap->insert(std::make_pair("command","Configuration"));
     63  MenuDescriptionsMap->insert(std::make_pair("edit","Edit"));
     64  MenuDescriptionsMap->insert(std::make_pair("fragmentation","Fragmentation"));
     65  MenuDescriptionsMap->insert(std::make_pair("molecule","Parse files into system"));
     66  MenuDescriptionsMap->insert(std::make_pair("parser","Edit molecules (load, parse, save)"));
     67  MenuDescriptionsMap->insert(std::make_pair("selection","Select atoms/molecules"));
     68  MenuDescriptionsMap->insert(std::make_pair("tesselation","Tesselate molecules"));
     69  MenuDescriptionsMap->insert(std::make_pair("tools","Various tools"));
     70  MenuDescriptionsMap->insert(std::make_pair("world","Edit world"));
    5971
    6072  // put menu name into each menu category
    61   MenuNameMap["analysis"] = "Analysis";
    62   MenuNameMap["atom"] = "Atoms";
    63   MenuNameMap["command"] = "Configuration";
    64   MenuNameMap["edit"] = "Edit";
    65   MenuNameMap["fragmentation"] = "Fragmentation";
    66   MenuNameMap["molecule"] = "Molecules";
    67   MenuNameMap["parser"] = "Input/Output";
    68   MenuNameMap["selection"] = "Selection";
    69   MenuNameMap["tesselation"] = "Tesselation";
    70   MenuNameMap["tools"] = "Tools";
    71   MenuNameMap["world"] = "Globals";
     73  MenuNameMap->insert(std::make_pair("analysis","Analysis"));
     74  MenuNameMap->insert(std::make_pair("atom","Atoms"));
     75  MenuNameMap->insert(std::make_pair("command","Configuration"));
     76  MenuNameMap->insert(std::make_pair("edit","Edit"));
     77  MenuNameMap->insert(std::make_pair("fragmentation","Fragmentation"));
     78  MenuNameMap->insert(std::make_pair("molecule","Molecules"));
     79  MenuNameMap->insert(std::make_pair("parser","Input/Output"));
     80  MenuNameMap->insert(std::make_pair("selection","Selection"));
     81  MenuNameMap->insert(std::make_pair("tesselation","Tesselation"));
     82  MenuNameMap->insert(std::make_pair("tools","Tools"));
     83  MenuNameMap->insert(std::make_pair("world","Globals"));
    7284}
    7385
     
    7688 */
    7789MenuDescription::~MenuDescription()
    78 {}
     90{
     91  std::cout << "MenuDescription: clearing maps ... " << std::endl;
     92  for (IterableMap::iterator iter = MenuPositionMap->begin(); !MenuPositionMap->empty(); iter = MenuPositionMap->begin())
     93    MenuPositionMap->erase(iter);
     94  delete MenuNameMap;
     95  delete MenuDescriptionsMap;
     96  delete MenuPositionMap;
     97}
    7998
    8099/** Getter for MenuDescriptionsMap.
     
    84103const std::string MenuDescription::getDescription(const std::string &token) const
    85104{
    86   if (MenuDescriptionsMap.find(token) != MenuDescriptionsMap.end())
    87     return MenuDescriptionsMap.find(token)->second;
     105  if (MenuDescriptionsMap->find(token) != MenuDescriptionsMap->end())
     106    return MenuDescriptionsMap->find(token)->second;
    88107  else
    89108    return std::string();
    90109}
    91110
    92 /** Getter for MenuNameMap.
     111/** Getter for MenuNameMap->
    93112 * \param token name of menu
    94113 * \return description string of the menu or empty
     
    96115const std::string MenuDescription::getName(const std::string &token) const
    97116{
    98   if (MenuNameMap.find(token) != MenuNameMap.end())
    99     return MenuNameMap.find(token)->second;
     117  if (MenuNameMap->find(token) != MenuNameMap->end())
     118    return MenuNameMap->find(token)->second;
    100119  else
    101120    return std::string();
    102121}
    103122
    104 /** Constructs a multimap of all menus running over all actions belonging to it.
    105  * \return multimap with which actions belongs to which menu.
    106  */
    107 std::multimap <std::string, std::string> MenuDescription::getMenuItemsMap() const
    108 {
    109   std::multimap <std::string, std::string> result;
    110 
    111   ActionRegistry &AR = ActionRegistry::getInstance();
    112   for (ActionRegistry::const_iterator iter = AR.getBeginIter();iter != AR.getEndIter();++iter) {
    113     std::cout << "Inserting " << (iter->second)->getName() << " into menu " << (iter->second)->Traits.getMenuName() << std::endl;
    114     result.insert( std::pair<std::string, std::string> ((iter->second)->Traits.getMenuName(), (iter->second)->getName()));
    115   }
    116   // TODO: MenuPosition is not yet realized.
    117   return result;
    118 }
     123///** Constructs a multimap of all menus running over all actions belonging to it.
     124// * \return multimap with which actions belongs to which menu.
     125// */
     126//std::multimap <std::string, std::string> MenuDescription::getMenuItemsMap() const
     127//{
     128//  std::multimap <std::string, std::string> result;
     129//
     130//  ActionRegistry &AR = ActionRegistry::getInstance();
     131//  for (ActionRegistry::const_iterator iter = AR.getBeginIter();iter != AR.getEndIter();++iter) {
     132//    std::cout << "Inserting " << (iter->second)->getName() << " into menu " << (iter->second)->Traits.getMenuName() << std::endl;
     133//    result.insert( std::pair<std::string, std::string> ((iter->second)->Traits.getMenuName(), (iter->second)->getName()));
     134//  }
     135//  // TODO: MenuPosition is not yet realized.
     136//  return result;
     137//}
    119138
    120139/** Forward iterator from beginning of list of descriptions.
     
    123142MenuDescription::iterator MenuDescription::getBeginIter()
    124143{
    125   return MenuPositionMap.begin();
     144  return MenuPositionMap->begin();
    126145}
    127146
     
    131150MenuDescription::iterator MenuDescription::getEndIter()
    132151{
    133   return MenuPositionMap.end();
     152  return MenuPositionMap->end();
    134153}
    135154
     
    139158MenuDescription::const_iterator MenuDescription::getBeginIter() const
    140159{
    141   return MenuPositionMap.begin();
     160  return MenuPositionMap->begin();
    142161}
    143162
     
    147166MenuDescription::const_iterator MenuDescription::getEndIter() const
    148167{
    149   return MenuPositionMap.end();
     168  return MenuPositionMap->end();
    150169}
    151170
    152 
     171CONSTRUCT_SINGLETON(MenuDescription)
Note: See TracChangeset for help on using the changeset viewer.