Changeset b2531f for src/UIElements/QT4


Ignore:
Timestamp:
Jun 27, 2010, 12:52:31 AM (15 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:
bdb143
Parents:
b0acc3
git-author:
Frederik Heber <heber@…> (06/26/10 23:55:00)
git-committer:
Frederik Heber <heber@…> (06/27/10 00:52:31)
Message:

Introduced a MenuBar and Menus to the QT interface.

  • new map MapOfActions::MenuDescriptionMap which contains short and long descriptions of the menus.
  • MapOfActions::populateActions() - rotate-to-pas and suspend-in-water actions were missing.
  • QTMainWindow
    • QTMainWindow() - creates a MenuBar and QTMenus and fills them with the actions from the maps in MapOfActions.
    • new function populateMenu() - same as in TextWindow.
    • new function getSuitableShortForm() - same as in TextWindow.
  • TextWindow::TextWindow() - also makes use of the new map MenuDescriptionMap.
  • MoleculeSuspendInWaterAction - changed argument to density and molecule is obtained by molecule-by-id
  • TESTFIX: Molecule/8 had wrong argument for rotate-to-pas
  • TESTFIX: Filling/2 had missing molecule-by-id
Location:
src/UIElements/QT4
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/UIElements/QT4/QTMainWindow.cpp

    rb0acc3 rb2531f  
    1515
    1616#include<iostream>
     17#include<map>
     18
    1719#include<boost/bind.hpp>
    1820
    1921#include "atom.hpp"
    2022#include "molecule.hpp"
     23#include "Actions/Action.hpp"
     24#include "Actions/ActionRegistry.hpp"
     25#include "Actions/MapOfActions.hpp"
     26#include "Menu/Menu.hpp"
    2127#include "Menu/QT4/QTMenu.hpp"
     28#include "Menu/ActionMenuItem.hpp"
    2229#include "Views/QT4/QTWorldView.hpp"
    2330#include "Views/QT4/GLMoleculeView.hpp"
     
    4047  molecule3dDisplay = new GLMoleculeView();
    4148
    42   QMenuBar *Menu = menuBar();
     49  MenuBar = menuBar();
     50
     51  std::map <std::string, QTMenu *> NametoTextMenuMap;
     52  // go through all menus and create them
     53  QTMenu *Menu = NULL;
     54  for(std::map<std::string, std::pair<std::string,std::string> >::iterator iter = MapOfActions::getInstance().MenuDescription.begin(); iter != MapOfActions::getInstance().MenuDescription.end(); ++iter) {
     55    cout << "Creating menu " << iter->first << endl;
     56    Menu = new QTMenu(iter->first.c_str());
     57    MenuBar->addMenu(Menu);
     58    NametoTextMenuMap.insert( pair <std::string, QTMenu *> (iter->first, Menu) );
     59    //new SubMenuItem(getSuitableShortForm(iter->first),iter->second.first,main_menu,Menu);
     60  }
     61
     62  // populate all actions
     63  MapOfActions::getInstance().populateActions();
     64
     65  // go through all actions and add them to its menu
     66  for (std::map <std::string, QTMenu *>::iterator MenuRunner = NametoTextMenuMap.begin(); MenuRunner != NametoTextMenuMap.end(); ++MenuRunner) {
     67    cout << "Creating Action " << MenuRunner->first << " in menu " << MenuRunner->second << endl;
     68    populateMenu(MenuRunner->second, MenuRunner->first);
     69  }
    4370
    4471  setCentralWidget(splitter1);
     
    6592  theApp->exec();
    6693}
     94
     95char QTMainWindow::getSuitableShortForm(set <char> &ShortcutList, const std::string name) const
     96{
     97  for (std::string::const_iterator CharRunner = name.begin(); CharRunner != name.end(); ++CharRunner) {
     98    if (ShortcutList.find(*CharRunner) == ShortcutList.end())
     99      return *CharRunner;
     100  }
     101  DoeLog(1) && (eLog() << Verbose(1) << "Could not find a suitable shortform for TextWindow::getSuitableShortForm()." << endl);
     102  return ((char)(ShortcutList.size() % 10) + '0');
     103}
     104
     105void QTMainWindow::populateMenu(QTMenu* Menu, const  std::string &MenuName)
     106{
     107  Action *ActionItem = NULL;
     108  set <char> ShortcutList;
     109  // through all actions for this menu
     110  std::pair < std::multimap <std::string, std::string>::iterator, std::multimap <std::string, std::string>::iterator > MenuActions = MapOfActions::getInstance().MenuContainsActionMap.equal_range(MenuName);
     111  for (std::multimap <std::string, std::string>::const_iterator MenuRunner = MenuActions.first; MenuRunner != MenuActions.second; ++MenuRunner) {
     112    cout << " Adding " << MenuRunner->second << " to submenu " << MenuName << endl;
     113    ActionItem = ActionRegistry::getInstance().getActionByName(MenuRunner->second);
     114    new ActionMenuItem(getSuitableShortForm(ShortcutList, MenuRunner->second),MapOfActions::getInstance().getDescription(MenuRunner->second).c_str(),Menu,ActionItem);
     115  }
     116  // finally add default quit item
     117  //Action *returnFromAction = new TextMenu::LeaveAction(Menu);
     118  //MenuItem *returnFromItem = new ActionMenuItem('q',"return to Main menu",Menu,returnFromAction);
     119  //Menu->addDefault(returnFromItem);
     120}
  • src/UIElements/QT4/QTMainWindow.hpp

    rb0acc3 rb2531f  
    1111#include "UIElements/MainWindow.hpp"
    1212#include <QtGui/QMainWindow>
     13
     14#include <set>
    1315
    1416class QTWorldView;
     
    2931  virtual void display();
    3032
     33  char getSuitableShortForm(std::set <char> &ShortcutList, const std::string name) const;
     34  void populateMenu(QTMenu* Menu, const  std::string &MenuName);
     35
    3136private:
    3237  // All kinds of QTStuff used in this window
     
    3742  QTMoleculeView *moleculeDisplay;
    3843  QTStatusBar *statusBar;
     44  QMenuBar *MenuBar;
    3945
    4046};
Note: See TracChangeset for help on using the changeset viewer.