| 1745 | } |
| 1746 | |
| 1747 | void |
| 1748 | TrackerPanel::onSettingsPanelClosed(bool closed) |
| 1749 | { |
| 1750 | TimeLinePtr timeline = getNode()->getNode()->getApp()->getTimeLine(); |
| 1751 | |
| 1752 | if (closed) { |
| 1753 | ///remove all keyframes from the structure kept |
| 1754 | std::list<int> toRemove, toRemoveUser; |
| 1755 | |
| 1756 | for (TrackKeysMap::iterator it = _imp->keys.begin(); it != _imp->keys.end(); ++it) { |
| 1757 | if (it->second.visible) { |
| 1758 | it->second.visible = false; |
| 1759 | toRemoveUser.insert( toRemoveUser.end(), it->second.userKeys.begin(), it->second.userKeys.end() ); |
| 1760 | toRemove.insert( toRemove.end(), it->second.centerKeys.begin(), it->second.centerKeys.end() ); |
| 1761 | } |
| 1762 | } |
| 1763 | |
| 1764 | _imp->setVisibleItemKeyframes(toRemove, false, true); |
| 1765 | _imp->setVisibleItemUserKeyframes(toRemoveUser, false, true); |
| 1766 | _imp->keys.clear(); |
| 1767 | } else { |
| 1768 | ///rebuild all the keyframe structure |
| 1769 | |
| 1770 | std::list<TrackMarkerPtr> selectedMarkers; |
| 1771 | getContext()->getSelectedMarkers(&selectedMarkers); |
| 1772 | |
| 1773 | std::list<int> toAdd, toAddUser; |
| 1774 | for (TrackItems::iterator it = _imp->items.begin(); it != _imp->items.end(); ++it) { |
| 1775 | TrackMarkerPtr marker = it->marker.lock(); |
| 1776 | if (!marker) { |
| 1777 | continue; |
| 1778 | } |
| 1779 | TrackKeys keys; |
| 1780 | marker->getUserKeyframes(&keys.userKeys); |
| 1781 | keys.visible = false; |
| 1782 | marker->getCenterKeyframes(&keys.centerKeys); |
| 1783 | |
| 1784 | |
| 1785 | std::pair<TrackKeysMap::iterator, bool> ret = _imp->keys.insert( std::make_pair(marker, keys) ); |
| 1786 | assert(ret.second); |
| 1787 | |
| 1788 | std::list<TrackMarkerPtr>::iterator foundSelected = |
| 1789 | std::find(selectedMarkers.begin(), selectedMarkers.end(), marker); |
| 1790 | |
| 1791 | ///If the item is selected, make its keyframes visible |
| 1792 | if ( foundSelected != selectedMarkers.end() ) { |
| 1793 | toAddUser.insert( toAddUser.end(), keys.userKeys.begin(), keys.userKeys.end() ); |
| 1794 | toAdd.insert( toAdd.end(), keys.centerKeys.begin(), keys.centerKeys.end() ); |
| 1795 | ret.first->second.visible = true; |
| 1796 | break; |
| 1797 | } |
| 1798 | } |
| 1799 | _imp->setVisibleItemKeyframes(toAdd, true, true); |
| 1800 | _imp->setVisibleItemUserKeyframes(toAddUser, true, true); |
| 1801 | } |
| 1802 | } // TrackerPanel::onSettingsPanelClosed |
| 1803 | |
| 1804 | void |
nothing calls this directly
no test coverage detected