Changeset 85c36d for src/UIElements
- Timestamp:
- Nov 16, 2012, 11:10:57 AM (12 years ago)
- 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:
- b3b228
- Parents:
- 7de208
- git-author:
- Michael Ankele <ankele@…> (10/26/12 12:58:05)
- git-committer:
- Frederik Heber <heber@…> (11/16/12 11:10:57)
- Location:
- src/UIElements/Views/Qt4
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_shape.cpp
r7de208 r85c36d 61 61 typedef QGLSceneNode *MeshList[GLMoleculeObject::DETAILTYPES_MAX]; 62 62 63 QGLSceneNode *createShapeMesh( constShape &shape, QObject *parent)63 QGLSceneNode *createShapeMesh(Shape &shape, QObject *parent) 64 64 { 65 65 // Create some points on our shape. … … 104 104 } 105 105 106 GLMoleculeObject_shape::GLMoleculeObject_shape( constShape &shape, QObject *parent) :106 GLMoleculeObject_shape::GLMoleculeObject_shape(Shape &shape, QObject *parent) : 107 107 GLMoleculeObject(createShapeMesh(shape, parent), parent), 108 108 m_shape(shape) … … 115 115 material->setShininess( 128 ); 116 116 setMaterial(material); 117 118 m_enabled = false; 117 119 } 118 120 … … 121 123 } 122 124 125 void GLMoleculeObject_shape::enable(bool enabled) 126 { 127 m_enabled = enabled; 128 } 129 123 130 124 131 void GLMoleculeObject_shape::draw(QGLPainter *painter, const QVector4D &cameraPlane) 125 132 { 133 if (!m_enabled) 134 return; 126 135 painter->modelViewMatrix().push(); 127 136 -
src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_shape.hpp
r7de208 r85c36d 32 32 Q_OBJECT 33 33 public: 34 explicit GLMoleculeObject_shape( constShape &shape, QObject *parent=0);34 explicit GLMoleculeObject_shape(Shape &shape, QObject *parent=0); 35 35 virtual ~GLMoleculeObject_shape(); 36 36 37 37 virtual void draw(QGLPainter *painter, const QVector4D &cameraPlane); 38 void enable(bool enabled); 39 Shape *getShape(){ return &m_shape; } 38 40 39 41 private: 40 42 41 const Shape &m_shape; 43 Shape &m_shape; 44 bool m_enabled; 42 45 }; 43 46 -
src/UIElements/Views/Qt4/Qt3D/GLWorldScene.cpp
r7de208 r85c36d 60 60 #include "Descriptors/AtomIdDescriptor.hpp" 61 61 #include "Helpers/helpers.hpp" 62 #include "Shapes/ShapeRegistry.hpp" 62 63 #include "molecule.hpp" 63 64 #include "World.hpp" … … 300 301 * @param shape shape to be added 301 302 */ 302 void GLWorldScene::addShape( constShape &shape)303 void GLWorldScene::addShape(Shape &shape) 303 304 { 304 305 GLMoleculeObject_shape *shapeObject = new GLMoleculeObject_shape(shape, this); … … 309 310 } 310 311 311 void GLWorldScene::clearShapes() 312 void GLWorldScene::removeShape(Shape &shape) 313 { 314 ShapeNodeMap::iterator iter = ShapesinSceneMap.find(shape.getName()); 315 ASSERT(iter == ShapesinSceneMap.end(), 316 "GLWorldScene::removeShape() - shape "+shape.getName()+" not in scene."); 317 delete(iter->second); 318 } 319 320 void GLWorldScene::updateSelectedShapes() 312 321 { 313 322 foreach (QObject *obj, children()) { 314 323 GLMoleculeObject_shape *shapeobj = qobject_cast<GLMoleculeObject_shape *>(obj); 315 if (shapeobj) 316 delete(shapeobj);317 }318 ShapesinSceneMap.clear();324 if (shapeobj){ 325 shapeobj->enable(ShapeRegistry::getInstance().isSelected(shapeobj->getShape())); 326 } 327 } 319 328 } 320 329 -
src/UIElements/Views/Qt4/Qt3D/GLWorldScene.hpp
r7de208 r85c36d 89 89 90 90 public: 91 void addShape(const Shape &shape); 92 void clearShapes(); 91 void addShape(Shape &shape); 92 void removeShape(Shape &shape); 93 void updateSelectedShapes(); 93 94 94 95 private: -
src/UIElements/Views/Qt4/Qt3D/GLWorldView.cpp
r7de208 r85c36d 96 96 97 97 ShapeRegistry::getInstance().signOn(this); 98 ShapeRegistry::getInstance().signOn(this, ShapeRegistry::ShapeInserted); 98 99 ShapeRegistry::getInstance().signOn(this, ShapeRegistry::ShapeRemoved); 99 100 ShapeRegistry::getInstance().signOn(this, ShapeRegistry::SelectionChanged); … … 112 113 AtomObserver::getInstance().signOff(this, AtomObservable::PositionChanged); 113 114 ShapeRegistry::getInstance().signOff(this); 115 ShapeRegistry::getInstance().signOff(this, ShapeRegistry::ShapeInserted); 114 116 ShapeRegistry::getInstance().signOff(this, ShapeRegistry::ShapeRemoved); 115 117 ShapeRegistry::getInstance().signOff(this, ShapeRegistry::SelectionChanged); … … 367 369 } else if (static_cast<ShapeRegistry*>(publisher) == ShapeRegistry::getPointer()) { 368 370 switch (notification->getChannelNo()) { 371 case ShapeRegistry::ShapeInserted: 372 { 373 worldscene->addShape(*ShapeRegistry::getInstance().lastChanged()); 374 break; 375 } 369 376 case ShapeRegistry::ShapeRemoved: 370 377 { 371 updateSelectedShapes();378 worldscene->removeShape(*ShapeRegistry::getInstance().lastChanged()); 372 379 break; 373 380 } 374 381 case ShapeRegistry::SelectionChanged: 375 382 { 376 updateSelectedShapes();383 worldscene->updateSelectedShapes(); 377 384 break; 378 385 } … … 659 666 { 660 667 emit hoverChanged(_atom); 661 }662 663 void GLWorldView::updateSelectedShapes()664 {665 worldscene->clearShapes();666 std::vector<Shape*> selectedShapes = ShapeRegistry::getInstance().getSelectedShapes();667 for (unsigned int i=0; i<selectedShapes.size(); i++)668 worldscene->addShape(*selectedShapes[i]);669 668 } 670 669 -
src/UIElements/Views/Qt4/Qt3D/GLWorldView.hpp
r7de208 r85c36d 98 98 99 99 private: 100 void updateSelectedShapes();101 100 102 101 GLWorldScene *worldscene; -
src/UIElements/Views/Qt4/QtShapeList.cpp
r7de208 r85c36d 39 39 #include "CodePatterns/MemDebug.hpp" 40 40 41 #include "CodePatterns/Observer/Notification.hpp" 42 41 43 #include "Shapes/ShapeFactory.hpp" 42 44 #include "Shapes/ShapeRegistry.hpp" … … 66 68 selecting = false; 67 69 68 refill( );70 refill(NULL); 69 71 70 72 ShapeRegistry::getInstance().signOn(this); 73 ShapeRegistry::getInstance().signOn(this, ShapeRegistry::ShapeInserted); 74 ShapeRegistry::getInstance().signOn(this, ShapeRegistry::ShapeRemoved); 75 ShapeRegistry::getInstance().signOn(this, ShapeRegistry::SelectionChanged); 71 76 72 77 connect(this,SIGNAL(itemSelectionChanged()),this,SLOT(rowSelected())); … … 76 81 { 77 82 ShapeRegistry::getInstance().signOff(this); 83 ShapeRegistry::getInstance().signOff(this, ShapeRegistry::ShapeInserted); 84 ShapeRegistry::getInstance().signOff(this, ShapeRegistry::ShapeRemoved); 85 ShapeRegistry::getInstance().signOff(this, ShapeRegistry::SelectionChanged); 78 86 } 79 87 80 void QtShapeList::update(Observable *publisher) { 88 void QtShapeList::update(Observable *publisher) {} 81 89 82 refill(); 90 void QtShapeList::recieveNotification(Observable *publisher, Notification_ptr notification) 91 { 92 if (static_cast<ShapeRegistry*>(publisher) == ShapeRegistry::getPointer()) { 93 switch (notification->getChannelNo()) { 94 case ShapeRegistry::ShapeInserted: 95 { 96 refill(NULL); 97 break; 98 } 99 case ShapeRegistry::ShapeRemoved: 100 { 101 refill(ShapeRegistry::getInstance().lastChanged()); 102 break; 103 } 104 case ShapeRegistry::SelectionChanged: 105 { 106 refill(NULL); 107 break; 108 } 109 default: 110 ASSERT(0, "QtShapeList::recieveNotification() - we cannot get here."); 111 break; 112 } 113 } else 114 ASSERT(0, "QtShapeList::recieveNotification() - received notification from unknown source."); 83 115 } 84 116 85 void QtShapeList::refill( ) {117 void QtShapeList::refill(::Shape *ignore) { 86 118 87 119 clearing = true; … … 95 127 for (iter = reg.getBeginIter(); iter != reg.getEndIter(); iter ++){ 96 128 ::Shape *s = iter->second; 129 if (s == ignore) 130 continue; 97 131 98 132 QTreeWidgetItem *treeItem = new QTreeWidgetItem(this); -
src/UIElements/Views/Qt4/QtShapeList.hpp
r7de208 r85c36d 31 31 virtual void update(Observable *publisher); 32 32 virtual void subjectKilled(Observable *publisher); 33 virtual void recieveNotification(Observable *publisher, Notification_ptr notification); 33 34 //virtual void paintEvent(QPaintEvent * event); 34 void refill( );35 void refill(::Shape *ignore); 35 36 36 37 static const int COLUMNCOUNT;
Note:
See TracChangeset
for help on using the changeset viewer.