mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#2607 caf: Add selection level to the "notify selection changed" system
This commit is contained in:
parent
75c76016e1
commit
e10754cffb
@ -611,8 +611,10 @@ PdmUiSelectionVisualizer3d::~PdmUiSelectionVisualizer3d()
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void PdmUiSelectionVisualizer3d::onSelectionManagerSelectionChanged()
|
void PdmUiSelectionVisualizer3d::onSelectionManagerSelectionChanged(int selectionLevel)
|
||||||
{
|
{
|
||||||
|
if (selectionLevel != caf::SelectionManager::APPLICATION_GLOBAL) return;
|
||||||
|
|
||||||
for (auto editor: m_active3DEditors)
|
for (auto editor: m_active3DEditors)
|
||||||
{
|
{
|
||||||
delete editor;
|
delete editor;
|
||||||
|
@ -231,7 +231,7 @@ public:
|
|||||||
PdmUiSelectionVisualizer3d(caf::Viewer* ownerViewer);
|
PdmUiSelectionVisualizer3d(caf::Viewer* ownerViewer);
|
||||||
~PdmUiSelectionVisualizer3d();
|
~PdmUiSelectionVisualizer3d();
|
||||||
protected:
|
protected:
|
||||||
virtual void onSelectionManagerSelectionChanged() override;
|
virtual void onSelectionManagerSelectionChanged(int selectionLevel) override;
|
||||||
|
|
||||||
std::vector< QPointer<PdmUiObject3dEditorHandle> > m_active3DEditors;
|
std::vector< QPointer<PdmUiObject3dEditorHandle> > m_active3DEditors;
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
friend class SelectionManager;
|
friend class SelectionManager;
|
||||||
/// Called whenever caf::SelectionManager's selection changes
|
/// Called whenever caf::SelectionManager's selection changes
|
||||||
virtual void onSelectionManagerSelectionChanged() = 0;
|
virtual void onSelectionManagerSelectionChanged(int selectionLevel) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -110,7 +110,7 @@ void SelectionManager::setSelectedItems(const std::vector<PdmUiItem*>& items, in
|
|||||||
if (newSelection != selection)
|
if (newSelection != selection)
|
||||||
{
|
{
|
||||||
selection = newSelection;
|
selection = newSelection;
|
||||||
notifySelectionChanged();
|
notifySelectionChanged(role);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -206,17 +206,21 @@ void SelectionManager::setSelectionFromReferences(const std::vector<QString>& re
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void SelectionManager::clearAll()
|
void SelectionManager::clearAll()
|
||||||
{
|
{
|
||||||
bool isChanged = false;
|
std::set<int> changedSelectionLevels;
|
||||||
|
|
||||||
for (size_t i = 0; i < m_selectionForRole.size(); i++)
|
for (size_t i = 0; i < m_selectionForRole.size(); i++)
|
||||||
{
|
{
|
||||||
if ( m_selectionForRole[i].size())
|
if ( m_selectionForRole[i].size())
|
||||||
{
|
{
|
||||||
m_selectionForRole[i].clear();
|
m_selectionForRole[i].clear();
|
||||||
isChanged = true;
|
changedSelectionLevels.insert((int)i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isChanged) notifySelectionChanged();
|
for (int level: changedSelectionLevels)
|
||||||
|
{
|
||||||
|
notifySelectionChanged(level);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -229,18 +233,18 @@ void SelectionManager::clear(int role)
|
|||||||
{
|
{
|
||||||
m_selectionForRole[role].clear();
|
m_selectionForRole[role].clear();
|
||||||
|
|
||||||
notifySelectionChanged();
|
notifySelectionChanged(role);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void SelectionManager::notifySelectionChanged()
|
void SelectionManager::notifySelectionChanged( int selectionLevel)
|
||||||
{
|
{
|
||||||
for (auto receiver: m_selectionReceivers)
|
for (auto receiver: m_selectionReceivers)
|
||||||
{
|
{
|
||||||
receiver->onSelectionManagerSelectionChanged();
|
receiver->onSelectionManagerSelectionChanged(selectionLevel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -250,6 +254,7 @@ void SelectionManager::notifySelectionChanged()
|
|||||||
void SelectionManager::removeObjectFromAllSelections(PdmObjectHandle* pdmObject)
|
void SelectionManager::removeObjectFromAllSelections(PdmObjectHandle* pdmObject)
|
||||||
{
|
{
|
||||||
bool doNotifySelectionChanged = false;
|
bool doNotifySelectionChanged = false;
|
||||||
|
std::set<int> changedSelectionLevels;
|
||||||
|
|
||||||
for (size_t role = 0; role < m_selectionForRole.size(); role++)
|
for (size_t role = 0; role < m_selectionForRole.size(); role++)
|
||||||
{
|
{
|
||||||
@ -265,7 +270,7 @@ void SelectionManager::removeObjectFromAllSelections(PdmObjectHandle* pdmObject)
|
|||||||
{
|
{
|
||||||
iter = selection.erase(iter);
|
iter = selection.erase(iter);
|
||||||
|
|
||||||
doNotifySelectionChanged = true;
|
changedSelectionLevels.insert((int)role);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -279,9 +284,9 @@ void SelectionManager::removeObjectFromAllSelections(PdmObjectHandle* pdmObject)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (doNotifySelectionChanged)
|
for (int level: changedSelectionLevels)
|
||||||
{
|
{
|
||||||
notifySelectionChanged();
|
notifySelectionChanged(level);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,11 +57,12 @@ class PdmChildArrayFieldHandle;
|
|||||||
class SelectionManager
|
class SelectionManager
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum SelectionRole
|
enum SelectionRole
|
||||||
{
|
{ // Suggested renaming:
|
||||||
APPLICATION_GLOBAL,
|
APPLICATION_GLOBAL, // FIRST_LEVEL
|
||||||
CURRENT,
|
CURRENT, // SECOND_LEVEL
|
||||||
UNDEFINED
|
// THIRD_LEVEL
|
||||||
|
UNDEFINED
|
||||||
};
|
};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -123,7 +124,7 @@ public:
|
|||||||
private:
|
private:
|
||||||
SelectionManager();
|
SelectionManager();
|
||||||
|
|
||||||
void notifySelectionChanged();
|
void notifySelectionChanged( int selectionLevel);
|
||||||
|
|
||||||
friend class SelectionChangedReceiver;
|
friend class SelectionChangedReceiver;
|
||||||
void registerSelectionChangedReceiver ( SelectionChangedReceiver* receiver) { m_selectionReceivers.insert(receiver);}
|
void registerSelectionChangedReceiver ( SelectionChangedReceiver* receiver) { m_selectionReceivers.insert(receiver);}
|
||||||
|
@ -238,11 +238,11 @@ void PdmUiTableViewEditor::setSelectionRole(SelectionManager::SelectionRole role
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void PdmUiTableViewEditor::onSelectionManagerSelectionChanged()
|
void PdmUiTableViewEditor::onSelectionManagerSelectionChanged(int selectionLevel)
|
||||||
{
|
{
|
||||||
if (m_isBlockingSelectionManagerChanged) return;
|
if (m_isBlockingSelectionManagerChanged) return;
|
||||||
|
|
||||||
if (isSelectionRoleDefined())
|
if (isSelectionRoleDefined() && (m_selectionRole == selectionLevel))
|
||||||
{
|
{
|
||||||
std::vector<PdmUiItem*> items;
|
std::vector<PdmUiItem*> items;
|
||||||
SelectionManager::instance()->selectedItems(items, m_selectionRole);
|
SelectionManager::instance()->selectedItems(items, m_selectionRole);
|
||||||
|
@ -115,7 +115,7 @@ protected:
|
|||||||
QWidget* createLabelWidget(QWidget * parent) override;
|
QWidget* createLabelWidget(QWidget * parent) override;
|
||||||
virtual void configureAndUpdateUi(const QString& uiConfigName) override;
|
virtual void configureAndUpdateUi(const QString& uiConfigName) override;
|
||||||
|
|
||||||
virtual void onSelectionManagerSelectionChanged() override;
|
virtual void onSelectionManagerSelectionChanged(int selectionLevel) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void selectedUiItems(const QModelIndexList& modelIndexList, std::vector<PdmUiItem*>& objects);
|
void selectedUiItems(const QModelIndexList& modelIndexList, std::vector<PdmUiItem*>& objects);
|
||||||
|
Loading…
Reference in New Issue
Block a user