mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-16 18:34:54 -06:00
Merge branch 'dev'
This commit is contained in:
commit
7784cad47f
@ -30,6 +30,7 @@
|
||||
RiuSelectionManager::RiuSelectionManager()
|
||||
: m_notificationCenter(new RiuSelectionChangedHandler)
|
||||
{
|
||||
m_selection.resize(2);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -37,6 +38,9 @@ RiuSelectionManager::RiuSelectionManager()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RiuSelectionManager::~RiuSelectionManager()
|
||||
{
|
||||
deleteAllItemsFromSelection(RUI_APPLICATION_GLOBAL);
|
||||
deleteAllItemsFromSelection(RUI_TEMPORARY);
|
||||
|
||||
delete m_notificationCenter;
|
||||
}
|
||||
|
||||
@ -52,64 +56,75 @@ RiuSelectionManager* RiuSelectionManager::instance()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuSelectionManager::selectedItems(std::vector<RiuSelectionItem*>& items) const
|
||||
void RiuSelectionManager::selectedItems(std::vector<RiuSelectionItem*>& items, int role) const
|
||||
{
|
||||
items = m_selection;
|
||||
const std::vector<RiuSelectionItem*>& s = m_selection[role];
|
||||
|
||||
items = s;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuSelectionManager::appendItemToSelection(RiuSelectionItem* item)
|
||||
void RiuSelectionManager::appendItemToSelection(RiuSelectionItem* item, int role)
|
||||
{
|
||||
m_selection.push_back(item);
|
||||
std::vector<RiuSelectionItem*>& s = m_selection[role];
|
||||
|
||||
m_notificationCenter->handleItemAppended(item);
|
||||
s.push_back(item);
|
||||
|
||||
if (role == RUI_APPLICATION_GLOBAL) m_notificationCenter->handleItemAppended(item);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuSelectionManager::setSelectedItem(RiuSelectionItem* item)
|
||||
void RiuSelectionManager::setSelectedItem(RiuSelectionItem* item, int role)
|
||||
{
|
||||
deleteAllItemsFromSelection();
|
||||
deleteAllItemsFromSelection(role);
|
||||
|
||||
m_selection.push_back(item);
|
||||
std::vector<RiuSelectionItem*>& s = m_selection[role];
|
||||
|
||||
m_notificationCenter->handleSetSelectedItem(item);
|
||||
s.push_back(item);
|
||||
|
||||
if (role == RUI_APPLICATION_GLOBAL) m_notificationCenter->handleSetSelectedItem(item);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuSelectionManager::deleteAllItems()
|
||||
void RiuSelectionManager::deleteAllItems(int role)
|
||||
{
|
||||
if (m_selection.size() == 0) return;
|
||||
|
||||
deleteAllItemsFromSelection();
|
||||
|
||||
m_notificationCenter->handleSelectionDeleted();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RiuSelectionManager::isEmpty() const
|
||||
{
|
||||
return m_selection.size() == 0;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuSelectionManager::deleteAllItemsFromSelection()
|
||||
{
|
||||
for (size_t i = 0; i < m_selection.size(); i++)
|
||||
if (!isEmpty(role))
|
||||
{
|
||||
delete m_selection[i];
|
||||
deleteAllItemsFromSelection(role);
|
||||
|
||||
if (role == RUI_APPLICATION_GLOBAL) m_notificationCenter->handleSelectionDeleted();
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RiuSelectionManager::isEmpty(int role) const
|
||||
{
|
||||
const std::vector<RiuSelectionItem*>& s = m_selection[role];
|
||||
|
||||
return s.size() == 0;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuSelectionManager::deleteAllItemsFromSelection(int role)
|
||||
{
|
||||
std::vector<RiuSelectionItem*>& s = m_selection[role];
|
||||
|
||||
for (RiuSelectionItem* item : s)
|
||||
{
|
||||
delete item;
|
||||
}
|
||||
|
||||
m_selection.clear();
|
||||
s.clear();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -41,6 +41,13 @@ class RimGeoMechView;
|
||||
//==================================================================================================
|
||||
class RiuSelectionManager
|
||||
{
|
||||
public:
|
||||
enum SelectionRole
|
||||
{
|
||||
RUI_APPLICATION_GLOBAL, // Selection role intended to manage the cells selected by left mouse click in the 3D view
|
||||
RUI_TEMPORARY // Selection role intended to manage the items selected by a right mouse click in the 3D view
|
||||
};
|
||||
|
||||
public:
|
||||
RiuSelectionManager();
|
||||
~RiuSelectionManager();
|
||||
@ -49,26 +56,26 @@ public:
|
||||
|
||||
// Returns selected items
|
||||
// Selection manager owns the selection items
|
||||
void selectedItems(std::vector<RiuSelectionItem*>& items) const;
|
||||
void selectedItems(std::vector<RiuSelectionItem*>& items, int role = RUI_APPLICATION_GLOBAL) const;
|
||||
|
||||
// Append item to selected items
|
||||
// SelectionManager takes ownership of the item
|
||||
void appendItemToSelection(RiuSelectionItem* item);
|
||||
void appendItemToSelection(RiuSelectionItem* item, int role = RUI_APPLICATION_GLOBAL);
|
||||
|
||||
// Set one selected item
|
||||
// SelectionManager takes ownership of the item
|
||||
void setSelectedItem(RiuSelectionItem* item);
|
||||
void setSelectedItem(RiuSelectionItem* item, int role = RUI_APPLICATION_GLOBAL);
|
||||
|
||||
// Deletes all items in the SelectionManager
|
||||
void deleteAllItems();
|
||||
void deleteAllItems(int role = RUI_APPLICATION_GLOBAL);
|
||||
|
||||
bool isEmpty() const;
|
||||
bool isEmpty(int role = RUI_APPLICATION_GLOBAL) const;
|
||||
|
||||
private:
|
||||
void deleteAllItemsFromSelection();
|
||||
void deleteAllItemsFromSelection(int role);
|
||||
|
||||
private:
|
||||
std::vector < RiuSelectionItem* > m_selection;
|
||||
std::vector< std::vector<RiuSelectionItem*> > m_selection;
|
||||
|
||||
RiuSelectionChangedHandler* m_notificationCenter;
|
||||
};
|
||||
|
@ -333,6 +333,9 @@ void RiuViewerCommands::displayContextMenu(QMouseEvent* event)
|
||||
{
|
||||
menu.exec(event->globalPos());
|
||||
}
|
||||
|
||||
// Delete items in temporary selection
|
||||
RiuSelectionManager::instance()->deleteAllItems(RiuSelectionManager::RUI_TEMPORARY);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user