From git at ins.uni-bonn.de Thu Mar 24 17:36:13 2016 From: git at ins.uni-bonn.de (git at ins.uni-bonn.de) Date: Thu, 24 Mar 2016 17:36:13 +0100 (CET) Subject: [Molecuilder-devel] [SCM] branch NoPartialSpecialization_ObservedValue_wCallback created. v1.5.1-145-g6edc017 Message-ID: <20160324163613.D97765FD70@saturn.ins.uni-bonn.de> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, NoPartialSpecialization_ObservedValue_wCallback has been created at 6edc017981e57df23f15b819c4092694ba7617a8 (commit) - Log ----------------------------------------------------------------- commit 6edc017981e57df23f15b819c4092694ba7617a8 Author: Frederik Heber Date: Wed Mar 23 11:02:43 2016 +0100 Removed partial specialization of ObservedValue_wCallback for index. - we don't need this anymore as ObservedValues now have a unique and permanent index, which we can bind right from the start. - adapted QtObservedAtom and QtObservedMolecule's initObservedValues(). commit 308e76a8dc4f3a4646260f791bb8aa2bbe7ea553 Author: Frederik Heber Date: Thu Mar 24 14:26:51 2016 +0100 Modified all GLMoleculeObjects and GLWorldScene to the new QtObservedBond. - GLWorldScene transmits bondInserted/bondRemoved similarly to those for the atoms to the molecule if aLready present and otherwise into the MissedStateMap. commit e45f9d604da9f01dd096d0245966e128a47bdea8 Author: Frederik Heber Date: Tue Mar 15 11:10:54 2016 +0100 Added QtObservedBond, managed by QtObservedInstanceBoard. - QtObservedBond is special because it observes not only a bond, but also two atoms and a molecule in total. - but the general idea is to rather have information duplicate, i.e. the left atom's position is also available via the QtObservedAtom. But in this way QtObservedBond does not depend on the QtObservedAtom being still or already present. commit 8c41b46c5d77804c6c27ac0178f48edfebd75385 Author: Frederik Heber Date: Thu Mar 24 14:13:31 2016 +0100 FIX: Removed GLMoleculeObject_molecule's molref. commit 1efb10c3bde0338622331a99dc4a832e1da6f6f7 Author: Frederik Heber Date: Wed Mar 23 10:56:51 2016 +0100 QtObservedMolecule also uses new index internally. commit 99f83adf828e55135a6b94e900c0b8d3b722582a Author: Frederik Heber Date: Tue Mar 22 12:58:35 2016 +0100 QtObservedAtom uses new index internally. - thus we don't have to jump through the loops with constructing prior an IndexGetter in initObservedValues(). commit 215f91ec10671daed809d3c448e7c7336f148789 Author: Frederik Heber Date: Wed Mar 23 10:58:26 2016 +0100 FIX: QtObservedMolecule::initObservedValues was still static. commit 0e89e7546661f91dbbd6c2155158aba832848a47 Author: Frederik Heber Date: Wed Mar 23 11:06:23 2016 +0100 Removed unneeded specialization ObservedValue_UpdateAtoms. commit 1c865975af56e0f660c047eaa80f36cdbd1417cf Author: Frederik Heber Date: Tue Mar 22 00:38:09 2016 +0100 Changed atomRemoved slot of GLMoleculeObject_molecule. - this required AtomsInSceneMap to use new Index. commit d6b2f48175aab4be80acb30b0a596b23c50c979b Author: Frederik Heber Date: Tue Mar 22 00:32:47 2016 +0100 Removed GLMoleculeObject_molecule::getPresentAtoms(). commit 42b7bc539ded6099277bc19d4d5f0dd29386a98a Author: Frederik Heber Date: Tue Mar 22 00:12:07 2016 +0100 FIX: Removed some unnecessary observer code from GLWorldView. commit 559c169d9bab287bc1d64551dc69a69a6a890e26 Author: Frederik Heber Date: Mon Mar 21 23:36:39 2016 +0100 Changed slots of GLWorldScene and GLWorldView. commit 80d5f8c7f79f1976214e864dcd5991aef0e9107f Author: Frederik Heber Date: Mon Mar 21 23:02:31 2016 +0100 Changed slots of QtElementList, QtMoleculeList, and QtMoleculeListView. - this is not all of them, but they now all used ObservedValue_Index_t. commit 065754567547d81ffafcd44d36a6cdb9bf24d238 Author: Frederik Heber Date: Mon Mar 21 22:13:43 2016 +0100 QtObserved...Observed now get index on ...Removed() signal. commit d4bb75e3379171a82130ee35472f06649ce61cb4 Author: Frederik Heber Date: Mon Mar 21 22:42:14 2016 +0100 Added convenience function to return current id for given index. - this is mainly for printing in asserts and logs. - required to convert IdtoIndex to bimap. - ...Observed wire through getIdtoIndex() function. commit bc66102736ae00e45fcce642667ee01f45f12ea9 Author: Frederik Heber Date: Mon Mar 21 21:42:05 2016 +0100 Introduced unique and permanent ObservedValue_Index_t. - this is currently the address of the observable which is not perfectly secure but might work for the moment. - QtObservedInstanceBoard uses the index internally and only has an additional map to serve instances on request for the their atomId_t, moleculeId_t, .... However, this id should nowhere else be used because it may change during the lifetime of the object. - this should prevent the hazzle with the possibly changing atomId_t, moleculeId_t, ... in all classes that work with QtObserved... instances. commit edb3d4d7404d39070664eb268fff7f714400974c Author: Frederik Heber Date: Mon Mar 21 20:56:27 2016 +0100 Added missing updateState() to QtMoleculeList. - As QtMoleculeItem no longer recieve notifications, QtMoleculeList must update each item itself. commit 9a408faa37d8e1013d9c99e293839ed2655fcea2 Author: Frederik Heber Date: Mon Mar 21 20:44:17 2016 +0100 QtMoleculeItems do not store ObservedMolecule::ptr any longer. - it is given as parameter in updateState(). - in the cstor they only get it to initiate the item text properly. commit 6347c7609f85fbb2510f87b124843d0a876fdfa6 Author: Frederik Heber Date: Mon Mar 21 20:43:25 2016 +0100 FIX: QtMoleculeList::moveItem() does not need to search for groupitem. commit 4f5cfe2ec2334ee2a4747dff407f15fb6b8e2c10 Author: Frederik Heber Date: Mon Mar 21 11:27:58 2016 +0100 QtMoleculeItemFactory is pure static. - QtMoleculeItemFactory was never needed as singleton as it has now state, contains now purely static variables and functions. commit 5520c7cea27ea5dcd6bd63a41133132823e0ed72 Author: Frederik Heber Date: Fri Mar 18 11:17:01 2016 +0100 Removed all mutexes and updateDirtyStates() in QtMoleculeList, replaced by simpler slots. - thanks to events we don't need this humonguous system of lists, update timers, and mutexes. We simply need to take action whenever an event comes in. commit 24eb6b9e8f3b4ff8f95f2e26c0a57c2296d904de Author: Frederik Heber Date: Fri Mar 18 10:46:52 2016 +0100 Removed QtMoleculeList::informDirtyState(), callback is not needed anymore. - this was the target of emitDirtyState() from QtMoleculeItem. - the event system will now run independently between the items and their list. commit 7993fe252cb5b1325c70e077e87cf14aefe1b912 Author: Frederik Heber Date: Fri Mar 18 10:39:37 2016 +0100 Removed emitDirtyState callback from QtMoleculeItem. - this does not seem to be needed any longer, probably since introduction of QtObservedMolecule. commit 9242598314ccb08531f6506da54bb5a30b948820 Author: Frederik Heber Date: Thu Mar 17 11:26:19 2016 +0100 Added QtObservedMoleculeObserver that relays signals on all QtObservedMolecule's. commit 1c9eb831f805f2e14267bc2d65deaa3b33e61d68 Author: Frederik Heber Date: Mon Mar 21 20:48:52 2016 +0100 FIX: molecule::SetNameFromFilename did not notify about MoleculeNameChanged. commit d316ad175d80f2441d92437f76c6c09371a17998 Author: Frederik Heber Date: Mon Mar 21 20:45:59 2016 +0100 FIX: molecule did not notify about FormulaChanged at the right moments. - we need to notify just when we've really changed the formula and not in some other function that is called before. commit bfd520cb09f18eefc8811390bd36115b92325263 Author: Frederik Heber Date: Thu Mar 17 10:52:26 2016 +0100 QtElementList uses QtObservedAtomObserver and is no longer Observer itself. commit 6a7353e36c3512675d0e16c1907644a20941cc39 Author: Frederik Heber Date: Wed Mar 16 11:00:40 2016 +0100 Added QtObservedAtomObserver to ElementList subfolder. commit bfd5d5f31700046d9d9fbae826f67fa4cefc283f Author: Frederik Heber Date: Wed Mar 16 11:20:09 2016 +0100 QtObservedAtom and ..Molecule now have internal selfref. - this can be used to convert a ptr to the instance into a shared_ptr that can be sent around easily and safely. - QtObservedInstanceBoard is factory of QtObserved... and assigns them their self reference right after instantiation. commit 1e1893b5d6284fd9ea1d43b7e76cd5088bb46e48 Author: Frederik Heber Date: Wed Mar 16 11:00:24 2016 +0100 Moved QtElementList into own subfolder. commit 7f1c00600c607f53c051131adf78bbf8bb34c4d7 Author: Frederik Heber Date: Wed Mar 16 10:12:28 2016 +0100 Added getObserved..() functions to QtObservedInstanceBoard that take Observable. - this is for the transition to ObservedValueContainers using Observable refs as keys. commit f35f7edd5263c493f767a7510ab79feebd7cb651 Author: Frederik Heber Date: Mon Mar 14 10:51:32 2016 +0100 All QtObserved..::update..() now use the atom or molecule ref instead of index getter. - the update() is called instantly by the Observable. Hence, the ref is still fully valid and always more recent than the index that needs updating. Also, it is way faster, as no lookup in the World is required and function may even get inlined. commit d845bd63611561992e0e940661aaf16d3210566b Author: Frederik Heber Date: Sun Dec 13 15:22:16 2015 +0100 GUITESTS: Decreased waiting times in QtGUI's test mode. commit c44763216bce0786fbe760047847c64ee5774937 Author: Frederik Heber Date: Fri Feb 26 22:26:55 2016 +0100 FIX: QtObserved... did not destroyObservedValues() so far. commit 14de9a4486de47e18a486b04ecd54cd7f8f428cb Author: Frederik Heber Date: Thu Mar 3 21:46:55 2016 +0100 FIX: GLMoleculeObject_atom did reset position not bonds on bondsChanged. commit 35ab6270d6095c79bce01c0cc0f21789355d58ca Author: Frederik Heber Date: Tue Mar 1 18:00:08 2016 +0100 Half of the bonds are showing up again. - but the other half is missing because then one of the QtObservedAtoms is not present yet? commit b6af884ef8deb1d0bee3add52fccfa49405e922d Author: Frederik Heber Date: Fri Feb 26 10:57:36 2016 +0100 Set version to 1.5.2. - MoleCuilder library is now 15:2:0. - Codename "Baade" (The Baade 1952 was the first German jet passenger jet airliner). commit 835b534f9c100ac279ff0fbe104d05901bbc813f Author: Frederik Heber Date: Wed Mar 2 17:01:34 2016 +0100 TESTFIX: Needed to check whether long-range capability is compiled in. - we check for "contains long-range information" and only then check whether the resulting forces are correct. commit 2edf77120707be27630da194a92b100fa915ab7d Author: Frederik Heber Date: Wed Mar 2 16:57:35 2016 +0100 DISTFIX: Added AdjacencyMatcher and TriangleMatcher noinst targets. - distcheck failed on install-check on them. - adjacencymatcher and trianglematcher don't ust AUTOTEST_PATH but topdir. commit af340c21b5447cefb53f0abf8de5efbe586d4b7b Author: Frederik Heber Date: Sat Feb 27 12:49:57 2016 +0100 Brought GuiChecks up to speed again. - regression tests AnalyseFragmentationResults, Tremolo BondFile, and FitPotential had changed. commit df0c802c02abf1177a70b2bafe46af86cee53ad4 Author: Frederik Heber Date: Tue Feb 16 14:49:23 2016 +0100 FIX: Filling actions did not use minimum distance for tesselated surface. - added IsCloseEnoughSurface_FillPredicate which requires a minimum distance to the tesselated surface (but does not care about the sign) and combines it with an additonal IsInsideSurface_FillPredicate. - this is now used in regular-grid, surface, and volume fill actions when a non-zero minimum distance is given. - TESTFIX: Test is now working. commit b9d387d86af35ffb36dbc15f04ebe37e10d50d98 Author: Frederik Heber Date: Tue Feb 16 15:47:20 2016 +0100 Added regression test for fill-regular-grid that with minimum distance. - test is marked as XFAIL for now due to missing minimum distance consideration. commit 50d49dca91aa5db281d312ca5ee0fbad52557a21 Author: Frederik Heber Date: Sat Feb 13 11:59:21 2016 +0100 FIX: Renamed FitParticleCharges -> FitPartialCharges. - fitting partial charges is much clearer and the proper word for the action, also the class that does all the work is called PartialNucleiChargeFitter. - all files, all classes. - also renamed fit-particle-charges -> fit-partial-charges, also all files, within all tests and the command itself. commit 0824dd198ecf3d9295689829ad5f5377ecad4aae Author: Frederik Heber Date: Sun Feb 14 13:33:22 2016 +0100 Enhanced documentation for Qt constructs. commit 4a187da588168135074399b9ba5c32060010ab65 Author: Frederik Heber Date: Tue Feb 16 09:32:23 2016 +0100 GLWorldScene also takes note of empty molecule. - this is for the case when a molecule is signalled empty before it signals ready for removal. This may happen cause the empty and the removal signal come from different sources, empty from GLMoleculeObject_molecule and removal from the board. commit 1187c54972b86c05d22e6c40e217c82f0d98ed65 Author: Frederik Heber Date: Sun Feb 14 19:49:24 2016 +0100 FIX: QtObservedAtom's AtomMoleculeIndex was not informed of molecule index changes. - hence, we return the QtObservedMolecule of the molecule to which the atom is associated. And this reference is updated whenever the associated molecule changes. - getAtomMoleculeIndex() -> getAtomMolecule(). - signal renamed moleculeIndexChanged -> moleculeChanged. commit 640cbdb89dc10dbb4cf5d04d394d31e596e89c46 Author: Frederik Heber Date: Sun Feb 14 13:29:24 2016 +0100 FIX: emit changed signal before moleculeEmptied. commit e29427a0d9159d203db020168941388686e2332b Author: Frederik Heber Date: Sat Feb 13 16:43:33 2016 +0100 GLWorldScene RemovedMolecules now uses QtObservedMolecule* as key. - moleculeId_t is not unique, a new molecule of the same id might have already been instantiated. The shared_ptrs live till the end, hence the memory address can be safely used as unique key to the respective molecule instance. - signatures of signal removeMolecule() and slots moleculeRemoved() and moleculeEmptied() changed from id to this ptr. commit 805fdc2cd99d90fe43f515b48ca05c3a3a41ad5c Author: Frederik Heber Date: Sat Feb 13 16:30:05 2016 +0100 FIX: GLWorldScene's moleculesAtomRemoved was checking QtObservedAtomMap. - however, the atom may already be a different one. Also, we do not even need it as we obtain the molecule from QtObservedMolecule directly. - also, molecule may no longer be present in MoleculesInSceneMap but still in RemovedMolecules and no molecule with same id already instantiated ... commit 5c9604040c713fbb9e27910f306ad00d9fa4b903 Author: Frederik Heber Date: Sat Feb 13 15:50:41 2016 +0100 SignedOn_t in QtObservedInstanceBoard is again just a set. - we do not need multiple entries for molecule anymore. commit 8b59ddd233f0c59db6375c4778cb46d1b338b803 Author: Frederik Heber Date: Sat Feb 13 15:48:14 2016 +0100 Removed last...removed in QtObservedInstanceBoard. - this does not do anything useful anymore, we may just pass the id we obtained from ObservedValuesContainer as Qt signal. commit 92af1b793de96102c8be702763589db17d977682 Author: Frederik Heber Date: Sat Feb 13 15:47:51 2016 +0100 tempcommit: Removed atomDelayed stuff in QtObservedInstanceBoard's header. commit 96e145752e3ea9373cf157ac1cef8e9f90fcd147 Author: Frederik Heber Date: Wed Jan 27 22:29:01 2016 +0100 AtomInserted/Removed of QtObservedMolecule sends ptr as unique key. - this is used to associate the atom with the right molecule. This is needed in case when the molecule is deleted and a new one with the same id is created. If signals are delayed, we need to know which atomInserted/Removed signal to associated with which GLMoleculeObject_molecule. commit bcf9cda81fdd86254068b3785852032702603546 Author: Frederik Heber Date: Wed Jan 27 22:24:07 2016 +0100 GLWorldScene places GLMoleculeObject_molecule into extra list before removal. - GLMoleculeObject_molecule sends signal when no atoms are left. - GLMoleculeObject_molecule is destroyed when signal is obtained and we have placed it in removal list before. commit 23221f089340ed3767f2e9a84cf97029b3012e2b Author: Frederik Heber Date: Fri Jan 8 14:53:48 2016 +0100 Removed RefCounted... again. commit 59f1bcc899a181c8225110eb43adbf27eb563d57 Author: Frederik Heber Date: Wed Jan 6 09:36:58 2016 +0100 All ..Inserted/..Removed signals now go through GLWorldScene. - this should enforce synchronicity of the signals. If we mix direct and queued connections, then this cannot be ensured. - the idea is that GLWorldScene gets all Inserted/Removed signals for atoms and molecules from the QtObservedInstanceBoard. It connects to each QtObservedMolecule and thus can call the GLMoleculeObject_molecule's atomInserted, atomRemoved functions in sequence. - removed RemovalMolecules, no longer needed. - we now enforce with mutexes that instantation of molecule and MissedStateMap do not interfere, i.e. it is always perfectly clear whether to push a signal into the Map or whether to call the function of the present GLMolObj_mol. - FIX: MoleculesInScene_mutex has not been used properly, now is. - DOCU: Updated construct qt-gu documentation with the new concept. commit 03e69e2faa3ae6d3c118759dd157a9b956ddfa77 Author: Frederik Heber Date: Thu Jan 7 17:48:51 2016 +0100 FIX: GLMoleculeObject_.. does not care whether selection state did not change. - maybe we just got the event too late and actually two changes occured in between. commit 8281ccea226e5aed0efe851c821e72456e18aa1a Author: Frederik Heber Date: Thu Jan 7 13:00:38 2016 +0100 FIX: Making sure that atomInserted is received from same source in GLWorldScene and GLMoleculeObject_molecule. - otherwise we cannot guarantee that the events are processed in order. commit 1c096148307b79af138ecbd1dba0c35ec4c1f96f Author: Frederik Heber Date: Tue Jan 26 17:16:19 2016 +0100 FIX: indexChanged from QtObserved... transmit both old and new id. commit 62a0eef42ed46a0537c81d7f76901e4ce65870a9 Author: Frederik Heber Date: Thu Jan 7 11:28:10 2016 +0100 QtObserved... now count the subjectKilled() from the containes values. - we no longer loop this through the ObservedValuesContainer. - also initObservedValues() is not longer a static function but now used inside the QtObserved..'s cstor. commit 1b07b163ff2a979bea3ff3471229c224b188c9f0 Author: Frederik Heber Date: Wed Jan 6 18:34:22 2016 +0100 QtObservedInstanceBoard now sends QtObserved..::ptr around in signals. - this should get rid of the problem that we need to keep the QtObservedAtom until it was requested at least once. And we don't know for how long. Now, we simply place the shared_ptr into the signal (to which it seems to be copied) and hence a representation of the atoms remains valid. - cstor of GLMoleculeObject_.. take Observed.. as ref. commit e7ed1225571e2d20981b7286641dbef4de5f758f Author: Frederik Heber Date: Wed Jan 6 18:11:16 2016 +0100 Combined checks into checkRemoval() in ObservedValuesContainer. commit 387a84787571a9fe001752d730c47ee72648aa70 Author: Frederik Heber Date: Tue Jan 5 23:26:38 2016 +0100 FIX: Added mutex to ObservedValuesContainer to ensure atomic access. commit 5aec20876fc61913a0a9d0db96a5769b7fff9150 Author: Frederik Heber Date: Tue Jan 5 23:24:10 2016 +0100 QtElementList must not use atom but only QtObservedAtom. commit 4cac6c7fe7e045f8f1e784e13c28d4d3956f9b58 Author: Frederik Heber Date: Tue Jan 5 23:22:56 2016 +0100 CHECK: Don't admonish empty missed states in GLWorldScene? - skipped in subsequent loop anyway. commit 7ded1c2e6b5dc07f58723eaa1665215ba1d857b4 Author: Frederik Heber Date: Tue Jan 5 23:22:13 2016 +0100 GLMoleculeObject_atom and .._molecule don't get QtObserved... right away. - needs to be checked for empty instance first. commit 3fe31809465087526b25224aaeb6783b78d555b6 Author: Frederik Heber Date: Tue Jan 5 23:20:13 2016 +0100 CHECK: tempcommit: Removed Cacheable of TesselationHull for GLMoleculeObject_molecule. - this may cause hiccups with the observed instances with the O/O system and makes no sense anyway as it gets updated all the time? commit aa41a3a0c4aa0434fa825ce5e429d9b4d7108bbd Author: Frederik Heber Date: Tue Jan 5 23:19:00 2016 +0100 QtMoleculeList must not use QtObservedMolecules in lists but only request them on need. commit 6bce885acd98d96636737b70f18bfe8b5bd3c0af Author: Frederik Heber Date: Tue Jan 5 23:17:39 2016 +0100 ObservedValuesContainer now asserts that observedinstance has been requested at least once before deletion. - this should prevent that the observed instance is instantiated and deleted before the signal has gotten through to the GUI. - get() returns NULL when not present. commit 3933429afa47ad6263c5bf2c22e8580eda18fe37 Author: Frederik Heber Date: Wed Dec 30 19:42:38 2015 +0100 FIX: ObservesValuesContainer uses internal struct for two iterators for observedvalues. - we need these two additional iterators (apart from the deque) in order to step through the created instances one-by-one as they are expected in this manner by the QtGUI which, though lacking behind, is trying to process all the seen events. commit 0af22d62caf516e8c8477d17013633d973652fad Author: Frederik Heber Date: Wed Dec 30 15:28:53 2015 +0100 FIX: ObservedValuesContainer uses deque for internal observed values. - it may happen that an atom is created before the _visual representation_ got destroyed (and hence it's QtObserved... would be destroyed). In that case the QtObservedInstanceBoard fails with an assertion. - Now, we use a deque. At the front end, we have all the observedvalues that have not yet been deleted, on the back end we have the observedvalues to the currently active instance. - removed unused getRefCount(). commit b4358580663f9c1c016fb856bc7bb23862101215 Author: Frederik Heber Date: Mon Dec 28 20:20:43 2015 +0100 Removed QtSelectionChangedAgent. - it is no longer used. We either listen to molecule/atom's selection changes directly or to all of them via the respective relay, i.e. MoleculeObserver. commit 0f368b73ae46e213e4c9d728e86e305aa897fa50 Author: Frederik Heber Date: Mon Dec 28 20:14:32 2015 +0100 Removed QtSelectionAgent usage in QtMoleculeListView. - instead we subscribe to MoleculeObserver directly. commit 5cd3a33dde0272c791c7c835e2462b3665503c8f Author: Frederik Heber Date: Mon Dec 28 18:12:08 2015 +0100 Removed QtSelectionUsage in GLWorldView and related. - instead GLMoleculeObject_.. directly use observedvalue to get notified when they have been (un)selected. commit 9e91009d544fc61e030a8be326f6ecf498ee577a Author: Frederik Heber Date: Mon Dec 28 12:43:34 2015 +0100 Added ObservedValue for selection status of atoms and molecules to QtObserved... commit 6d49259bafd61830ac9106d84b6cec884637ff2a Author: Frederik Heber Date: Sun Dec 13 17:06:18 2015 +0100 FIX: QtObservedInstanceBoard needs to allow delayed atomInserted from World. - we may get the notification from molecule before we get the insertion from the World. Hence, we store any ids obtained from molecule insertion if the set of the new atom's observed values have not been generated yet. commit 42d7dc3402f1a14a69a2363de27cfdc8b4008d7e Author: Frederik Heber Date: Sun Dec 13 15:22:39 2015 +0100 QtInfoBox disconnects signals. commit 4e6ffe2dae92054b52a94a8f11d2d364f8117035 Author: Frederik Heber Date: Sun Dec 13 15:15:58 2015 +0100 FIX: ObservedValue need to be removed with a bit of delay. - ObservedValue has higher priority than e.g. QtObservedAtom. Hence, will also receive subjectKilled() before QtObservedAtom does. But right after all of these are received(), ObservedValueContainer will remove the instance which drops the shared ptr's count to zero (because Observer/Observables do not store shared_ptr but only ptrs!) and its dstor is called. Therefore, QtObservedAtom cannot access the ObservedValue any longer and this is against how the design was meant to be (ObservedValue lives at least as long as respective side in Qt needs access to its information). commit 04c3a3bef347017439e9f064f0b080ae18219eab Author: Frederik Heber Date: Mon Jan 25 15:15:23 2016 +0100 QtObservedAtom, ..Molecule, and ObservedValue_wCallback have flag to indicate invalid callback. - due to Qt's signal/slot destruction, which follows no proper order, we need to invalidate callback when their owners are destroyed. Each has a note-function() that flips the boolean to show the callbacks invalidity. - TODO: So far this is not nice, especially w.r.t to ObservedValue_wCallback because of templatization. We cannot place them in a loop and this makes this very error-prone once more Values are added ... commit b2c2e4f3957f35f792eec4674734751c82230bcb Author: Frederik Heber Date: Fri Oct 30 17:07:39 2015 +0100 FIX: Qt's parent properly set from QtMainWindow's point of view. commit cf9287e3938da7fd4de24bd9343447e4933b3199 Author: Frederik Heber Date: Fri Oct 30 15:07:55 2015 +0100 Equipped QtInfoBox with mutex and split clearTabs(). - this avoids a memory corruption with signal/slots as the first atomRemoved() signal also removes the molecule and hence the QtObservedMolecule ptr who is the recipient of the subsequent moleculeRemoved() signal. commit 3b9aa1d67a8d8ea7123888eda5cdd0f9d1ac1060 Author: Frederik Heber Date: Fri Oct 30 12:54:29 2015 +0100 FIX: All ObservedValue getters now return const references. - this should avoid some unnecessary copying. commit 367489fe69bf3b53792dde0165df1c41347c98b6 Author: Frederik Heber Date: Fri Oct 30 12:06:30 2015 +0100 QtInfoBox now obtains information completely from QtObservedInstanceBoard and ObservedValues. commit 5a9e34e889a8bb41b432e388eef49d7d852b91b0 Author: Frederik Heber Date: Wed Jan 20 21:02:22 2016 +0100 Extended QtObservedMolecule by Center, NonHydrogenCount, and BondCount. commit fe493f0b6a5c03db3a98e1675bb7eb8dab1a974a Author: Frederik Heber Date: Wed Jan 20 21:04:06 2016 +0100 Extended QtObservedAtom by Name and Molecule. commit deb5eeddb3629c9e2305e74eefb6a494be1ecceb Author: Frederik Heber Date: Mon Dec 28 07:15:14 2015 +0100 Removed molecule's AboutToBeRemoved channel. commit ca1535f36cf69069e69bd2f95dfffcb3dca61a70 Author: Frederik Heber Date: Thu Oct 29 23:21:30 2015 +0100 All QtMoleculeItem now heed QtObservedMolecule and QtMoleculeList takes InstanceBoard. - QtMoleculeItems no longer use Observer/Observable but get updates via signal/slot from QtObservedMolecule. - QtMoleculeList listens to its molecule signals. commit 1b6415a5788dfb3c4db5f526ae11cb7c65e04a4c Author: Frederik Heber Date: Thu Oct 29 22:55:51 2015 +0100 Added AtomCount and FormulaChanged to QtObservedMolecule. commit ab628cf93050382a100c064a0e77ac121d09789a Author: Frederik Heber Date: Thu Oct 29 19:38:02 2015 +0100 FIX: ObservedValue_wCallback needs to call callback() only on last channel's signOff(). commit 68418ebdce3a77f78915901a8e48bd7cf1632f6c Author: Frederik Heber Date: Thu Oct 29 15:41:13 2015 +0100 ObservedValuesContainer now stores QtObserved.. instances directly. - we need this as QtObservedAtom and ..Molecule must signOn() to World's instance right away. If later requests to ObservedValuesContainer::get() cause new signOn()s, then these might fail. - we now work with QtObserved..::ptr directly everywhere. commit 90821d3e29139e45d3df56d7c7f116d631c88f26 Author: Frederik Heber Date: Mon Jan 25 15:07:59 2016 +0100 Moved countSubjectKilled related code from QtObservedInstanceBoard into ObservedValuesContainer. - this avoids some more duplicated code. commit 494478e91be04149753f2f153a7dfad4d8911944 Author: Frederik Heber Date: Thu Oct 29 13:52:29 2015 +0100 Extracted all ObservedValue functionality out of GLMoleculeObject_molecule. - see previous commit for explanations. commit 65c3231ff9731698df9e1c840c3c6b5d4c56b2cf Author: Frederik Heber Date: Thu Oct 29 11:46:45 2015 +0100 Extracted all ObservedValue functionality out of GLMoleculeObject_atom. - i.e. GLMoleculeObject_atom is reduced to simple displaying, updated via Qt signals. These signals are connected to a QtObservedAtom which in turn now contains all the ObservedValue functionality. - this is preparatory for having a single (Observed)Atom as representer of its associated World's atom in the QtGui part of the code. commit 41e2870206d294aab5deb395396ac66cc7e3c0ab Author: Frederik Heber Date: Thu Oct 29 10:52:10 2015 +0100 Extracted functions handling refcounting of ObservedValues into ObservedValuesContainer. - this avoids a lot of code duplication. commit 98c35cae2ab1845620fc345902fa7bd0a1ab5d53 Author: Frederik Heber Date: Wed Oct 28 14:57:10 2015 +0100 Added rudimentary getter and returner for ObservedAtom/..Molecule() to InstanceBoard. commit 0070aa122a6cee1ec7c2dcbadb8a53a98d6eac6d Author: Frederik Heber Date: Wed Oct 28 14:24:10 2015 +0100 Added QtObservedAtom and ..Molecule() instances. commit 2f7988dfca2f351ead05e5302eafd42b83b2f353 Author: Frederik Heber Date: Wed Oct 28 14:23:09 2015 +0100 Moved and renamed QtInstanceInformationBoard -> QtObservedInstanceBoard. - this is preparatory for adding ObservedAtom and ObservedMolecule classes that combine all observed information on either type. commit 0f7ffe77d9333b4c1f491534cd62859d247be023 Author: Frederik Heber Date: Mon Jan 25 10:09:33 2016 +0100 Changed connections between GLWorldScene, GLWorldView and GLMoleculeObject_molecule. commit 8d5fbf175be3a0dab17997f67f03c1284b6174fb Author: Frederik Heber Date: Mon Jan 25 12:09:33 2016 +0100 GLMoleculeObject_atom, _bond, _molecule all use QtInstanceInformationBoard passed via GLWorldScene. commit 47f0e469e70ba79ff1b52d056bf13f5b859efce4 Author: Frederik Heber Date: Fri Oct 23 17:13:14 2015 +0200 FIX: QtMoleculeItem not signing off after subjectKilled(). commit 15c8a9b3bc531ef54d3a92deddc382002414247c Author: Frederik Heber Date: Sat Oct 17 17:42:17 2015 +0200 Added QtInstanceInformationBoard that handles ObservedValues through the QtGui interface. - this is meant as a instantiator of all ObservedValue's needed by QtGui for representing information from the World. The ObservedValue's are instantiated separately w.r.t. to the instance for the visual representation. This is light-weight and can be performed in the same thread, while the visual representation's instantiation can be done elsewhere and there we just need to access the ready ObservedValue's that exist as long as they are needed by the QtGui. commit 026bef57c11cf9d09d87056dab378f0b357f2a4c Author: Frederik Heber Date: Mon Jan 25 12:01:10 2016 +0100 Changed GLMoleculeObject_...:countSubjectKilled() to taking id parameter. - this is a precursor for when the ObservedValues reside with QtInstanceInformationBoard. - enhanced ObservedValue_wCallback to take a bound getIndex function(). - additionally, we route internally to ObservedValue::get() and this gets us out of the painful situation where we need to supply an index getter to the ObservedValue that monitors the index (and hence must be present already to bind to its get function). commit 099f67dcc87a9df01ccc2248c45c7116c48065cb Author: Frederik Heber Date: Sat Oct 17 15:28:19 2015 +0200 GLMoleculeObject_bond's ObservedValues is now all static. - again, the same change as with .._molecule and .._atom. commit 16bd376fd9b011d5e40fc688f849c8418b4ad1f9 Author: Frederik Heber Date: Sat Oct 17 14:55:30 2015 +0200 GLMoleculeObject_atom's ObservedValues is now all static. - this is equivalent to the changes to GLMoleculeObject_molecule. commit 8688ef11c8d02f39202bf756a4085f44860a00df Author: Frederik Heber Date: Sat Oct 17 14:40:14 2015 +0200 GLMoleculeObject_molecule's ObservedValues is now all static. - this is preparatory for extracting their instantation to an external class InstanceInformationBoard that keeps track of the lives of instances in the World that are needed inside QtGui (e.g. for visual representation). commit 7a205a4846f42ef74b0d22155039fb2430f0b719 Author: Frederik Heber Date: Sat Oct 17 14:18:30 2015 +0200 FIX: GLMoleculeObject_molecule::updateAtoms() used DisplayAtoms directly. - we need an old and a new set, i.e. the difference needs to be discernable between updates. However, so far we updated the old set directly, too. commit 2831b30765e296e23df0592428b94ccda962210e Author: Frederik Heber Date: Fri Oct 23 17:17:43 2015 +0200 FIX: QtInfoBox only updatePage() when ref still present (no subjectKilled() yet). commit 7c7c4adf3a00ea2410433016fef5f193bab8b957 Author: Frederik Heber Date: Fri Oct 16 13:51:16 2015 +0200 FIX: All ObservedValue's of GLMoleculeObject_atom/bond/molecule wrapped into vector. - the idea is that a GLMoleculeObject may only remove itself _after_ each and every contained Observer has gotten the subjectKilled() signal from the Observables. Only then will destroying the Object and its members thereby not cause any signOff() which try to access Observables or their channels which are no longer present. This can be imagined as a graph where we have to start destroying object at the very bottom. - This is the avoid the following conflict: A superior object gets note of a molecule to be removed. It sends the visual representation a signal to remove itself, which causes it to use signOff(). On a parallel track (in another thread) we have the observed object calling subjectKilled() to inform any Observer about its immediate destruction. These two tracks collide. Now, we let first pass all subjectKilled() and when the last Observable has gotten its signal, we begin destroying the visual rep. - rerouted signal/slots accordingly. commit e254484494f1093b5f83e79385d6f87cc3ea6588 Author: Frederik Heber Date: Fri Oct 16 10:59:22 2015 +0200 FIX: GLMoleculeObject_molecule::subjectKilled() should not call deactivateObserver(). - we just take note that we are signedOff. commit 7cf0eb032ca83b8e15e932a9dd7f082786feb596 Author: Frederik Heber Date: Fri Oct 16 10:58:31 2015 +0200 FIX: GLWorldScene has additional moleculePrepared... slots and signals. - i.e. we first insert into MoleculesInMap via direct connection and then signal is emitted (queued) to construct the actual GLMoleculeObject_molecule. commit 4ab5dc2d675790fb54b5022635e15dcf8d3b234d Author: Frederik Heber Date: Fri Oct 16 10:56:48 2015 +0200 FIX: GLMoleculeObject_molecule still contained hack to get upper bound on molecule's bounding box. - we don't longer need the hack as we have the molecule cleverly updating the box and an ObservedValue. commit b375e75acf766a9f5578729254211000e199fa9a Author: Frederik Heber Date: Thu Oct 15 11:08:37 2015 +0200 QtFavoriteActions uses ObservedValue for checking last queued action's name. commit db842b5a355e9a83147ac367d4d8dc4c59c84161 Author: Frederik Heber Date: Tue Dec 29 22:41:30 2015 +0100 FIX: molecule's BoundingBoxSweepingAxis used unordered set of atomids. - this needs to be an ordered set to prevent O(N) access on updating values. commit 951aa6b5136585c823675ec3a59de8c81dde36ef Author: Frederik Heber Date: Tue Dec 29 20:50:22 2015 +0100 Removed molecule's resetFormula() and doCountBonds() and doCountNoNonHydrogen(). - we don't do these as Cacheables anymore. commit 29f7c188ea15c5c8fca7515e7de0b3e3dba29423 Author: Frederik Heber Date: Tue Dec 29 20:49:43 2015 +0100 Molecule now has maps with old values for bond counts and element number per atom. - this allows to update the total bond count and the formula in an O(N log N) fashion. commit c0f2fc40afbd5e6b6af4eef0a9cd8ea285a6ec5f Author: Frederik Heber Date: Wed Dec 30 10:27:51 2015 +0100 atom now uses associate... and disassociatedAtomWithMolecule(). - this is used to gather all functions that need to be called when a new atom joins a molecule such as signing on to certain channels or updating certain internal values of the molecule. commit eb65529c0c104468ebb5dd1b5f2de9f79ed5933a Author: Frederik Heber Date: Wed Dec 30 11:19:10 2015 +0100 Deleted MoleculeListClass. - finally ... some veeeery old legacy stuff is gone. commit 2affd161725660cecea8012a86f29f70ce24015a Author: Frederik Heber Date: Wed Dec 30 11:02:58 2015 +0100 Removed molecules_deprecated from World and unnecessary includes of MoleculeListClass and all insert/erase. - this goes along the lines of removing "remove me when we don't need MoleculeCistClass anymore". commit df5b8cdff0a450470b90841942f9cb13a5178c97 Author: Frederik Heber Date: Wed Dec 30 11:16:33 2015 +0100 Replaced MoleculeListClass in ExportGraph by vector of molecules. - AddHydrogenCorrection did never really worked and is dropped (was commented out in .._ToFiles anyway). commit 2bfc5b108b5b586dc7738bcfddb9149a69e37af0 Author: Frederik Heber Date: Wed Dec 30 11:06:45 2015 +0100 Replaced MoleculeListClass in analysis_bonds by vector of molecules. - TESTFIX: also adapted CountBondsUnitTest. commit ada8dfef364eee1a6c3f429cb379f943b505b5d5 Author: Frederik Heber Date: Wed Dec 30 11:06:27 2015 +0100 Removed FindEmbeddingHole which lacked implementation so far. commit d4ba3fafe2170e6e52d61b230122d20b71113b61 Author: Frederik Heber Date: Tue Dec 29 15:23:09 2015 +0100 Extracted common code out of Molecule/AtomObserver into EntityObserver. - also all channels are generated as a static vector via boost::assign. - removed AtomObserverStub, does not work anymore with extracted EntityObserver. commit 5d8f4f5fc5c4b1c6be8cfb8f938b76cfd81bf228 Author: Frederik Heber Date: Mon Dec 28 16:10:47 2015 +0100 Added MoleculeObserver as pendant to AtomObserver for molecules. commit 4a328ffbbc4084c5418a999a594c586287c63bf1 Author: Frederik Heber Date: Mon Dec 28 16:09:49 2015 +0100 FIX: AtomObserver was not up-to-date with respect to atom's channels. commit 7f1865dc7e5a73a96f5e2c5a9661cb6ee25690f7 Author: Frederik Heber Date: Mon Dec 28 07:28:10 2015 +0100 Added template functions to (un)set vector of instances in a row. commit b71881221de8cd8ae1667781df5037eb270b146e Author: Frederik Heber Date: Mon Dec 28 07:18:42 2015 +0100 Added select() and unselect() functions to atom and molecule, also SelectionChanged channel. - this allows for more specific selection changs to be signalled. - this extends the current World's SelectionChanged channel that informs about selection changes by a more fine-grained/instance-specific change signalling. commit a0fa14a3e9ff30898a2e49b8bf38eb75471bf23b Author: Frederik Heber Date: Sun Dec 27 22:08:26 2015 +0100 FIX: Fixed wrong paths for adjacency and trianglematcher in regression and GuiChecks tests. commit 687ef1d1fe6172d488a7bae7ccdc73d6216d8992 Author: Frederik Heber Date: Fri Oct 30 12:36:21 2015 +0100 FIX: molecuilder.py is now loaded after GUI is done initializing. - otherwise consequences of loaded session (atoms, ...) are not displayed. - originally, this was done on purpose as it is quicker to just load stuff into the world and then tell the GUI to show what's there. However, now, due to constraints with different threads, this is no longer possible. commit cbd4099da1d7c6d1c7365e77187667a67c86b111 Author: Frederik Heber Date: Wed Jan 20 21:02:03 2016 +0100 Added Cacheable MoleculeCenter to molecule which is cleverly updated. commit d93d2c1fddecb0223bade802972bb4bb9747f3a0 Author: Frederik Heber Date: Mon Feb 8 16:47:17 2016 +0100 FIX: Long-range forces were not added onto atom's forces. - this was with highest level forces obtained from fragmentation for the short-range interactions but not for the long-range interactions. - TESTS: added additional tests to Fragmentation AnalyseFragmentationResults to compare long-range forces written to tremolo file in the same way as is already done with short-range. - TESTFIX: Needed to re-calculate all Fragment result files, did for short-range and both long-range versions. Energies slightly changed and thus also derived values. commit 45b45dd0d98b38f4881b800ac2ff9ab159d576e1 Author: Frederik Heber Date: Mon Feb 8 11:26:55 2016 +0100 FIX: PdbParser would calculate trajectors over all atoms, not just given set. - this is only to determine maximum number of trajectory steps but nonetheless unnecessary. commit 7daf73cc475692eebaceda7e13ff1d21adc69d5d Author: Frederik Heber Date: Mon Feb 8 16:07:21 2016 +0100 LinkedCell's LinkedList is now a vector and no longer a set. - this was causing conflicts in tests as the order of the atoms/TesselPoints in the LinkedList returned by getAllNeighbors() would depend on the order in memory and not on the geometrical ordering or on the ids. - TESTFIX: needed to replace use of insert() in (unit)tests by push_back. But all in all only Molecules Removal regression test's pdb file is affected. commit 87cadb7754911b9e3eae7d6f1889641edb3b3953 Author: Frederik Heber Date: Mon Feb 8 23:58:43 2016 +0100 TESTS: Trimmed down TREMOLO dbond regression test. commit d7206401c4f0b3e9118d4797f54e939795871655 Author: Frederik Heber Date: Mon Feb 8 19:03:59 2016 +0100 TESTS: Trimmed down PopMoleculesSelection regression test. - this should speed up testing with debug enabled. commit b40690bfddf335b2e572dfb6c23adfe8588d60ed Author: Frederik Heber Date: Mon Feb 8 18:44:31 2016 +0100 Fit..PotentialAction now allow setting maximum number of optimization iteration. - also reduced default value to 100 instead of 1000 for speeding up tests. commit b8f2eaf14d7c6a6b31dcd5b85abd1ba743a81e94 Author: Frederik Heber Date: Mon Feb 8 18:00:06 2016 +0100 FIX: PotentialTrainer did not use user-specified threshold so far. - TESTFIX: Decreased l2 tolerance in FitPotential regression tests to further speed up tests. This is especially true for the enable-debug variant, where 3 of 5 tests take more than 15 minutes. commit 08111add4e3854b9642bec0ae60b58fb491ec273 Author: Frederik Heber Date: Mon Feb 8 11:03:27 2016 +0100 FIX: Added copy cstor for AtomicInfo. - otherwise AtomicInfo is constructed twice and gives output message twice. - MoleculeRemoveAction uses AtomicInfo cstor indirectly to avoid copy. ----------------------------------------------------------------------- hooks/post-receive --