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)
|
||||
{
|
||||
delete editor;
|
||||
|
@ -231,7 +231,7 @@ public:
|
||||
PdmUiSelectionVisualizer3d(caf::Viewer* ownerViewer);
|
||||
~PdmUiSelectionVisualizer3d();
|
||||
protected:
|
||||
virtual void onSelectionManagerSelectionChanged() override;
|
||||
virtual void onSelectionManagerSelectionChanged(int selectionLevel) override;
|
||||
|
||||
std::vector< QPointer<PdmUiObject3dEditorHandle> > m_active3DEditors;
|
||||
|
||||
|
@ -46,7 +46,7 @@ public:
|
||||
protected:
|
||||
friend class SelectionManager;
|
||||
/// 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)
|
||||
{
|
||||
selection = newSelection;
|
||||
notifySelectionChanged();
|
||||
notifySelectionChanged(role);
|
||||
}
|
||||
}
|
||||
|
||||
@ -206,17 +206,21 @@ void SelectionManager::setSelectionFromReferences(const std::vector<QString>& re
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void SelectionManager::clearAll()
|
||||
{
|
||||
bool isChanged = false;
|
||||
std::set<int> changedSelectionLevels;
|
||||
|
||||
for (size_t i = 0; i < m_selectionForRole.size(); i++)
|
||||
{
|
||||
if ( m_selectionForRole[i].size())
|
||||
{
|
||||
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();
|
||||
|
||||
notifySelectionChanged();
|
||||
notifySelectionChanged(role);
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void SelectionManager::notifySelectionChanged()
|
||||
void SelectionManager::notifySelectionChanged( int selectionLevel)
|
||||
{
|
||||
for (auto receiver: m_selectionReceivers)
|
||||
{
|
||||
receiver->onSelectionManagerSelectionChanged();
|
||||
receiver->onSelectionManagerSelectionChanged(selectionLevel);
|
||||
}
|
||||
}
|
||||
|
||||
@ -250,6 +254,7 @@ void SelectionManager::notifySelectionChanged()
|
||||
void SelectionManager::removeObjectFromAllSelections(PdmObjectHandle* pdmObject)
|
||||
{
|
||||
bool doNotifySelectionChanged = false;
|
||||
std::set<int> changedSelectionLevels;
|
||||
|
||||
for (size_t role = 0; role < m_selectionForRole.size(); role++)
|
||||
{
|
||||
@ -265,7 +270,7 @@ void SelectionManager::removeObjectFromAllSelections(PdmObjectHandle* pdmObject)
|
||||
{
|
||||
iter = selection.erase(iter);
|
||||
|
||||
doNotifySelectionChanged = true;
|
||||
changedSelectionLevels.insert((int)role);
|
||||
}
|
||||
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
|
||||
{
|
||||
public:
|
||||
enum SelectionRole
|
||||
{
|
||||
APPLICATION_GLOBAL,
|
||||
CURRENT,
|
||||
UNDEFINED
|
||||
enum SelectionRole
|
||||
{ // Suggested renaming:
|
||||
APPLICATION_GLOBAL, // FIRST_LEVEL
|
||||
CURRENT, // SECOND_LEVEL
|
||||
// THIRD_LEVEL
|
||||
UNDEFINED
|
||||
};
|
||||
|
||||
public:
|
||||
@ -123,7 +124,7 @@ public:
|
||||
private:
|
||||
SelectionManager();
|
||||
|
||||
void notifySelectionChanged();
|
||||
void notifySelectionChanged( int selectionLevel);
|
||||
|
||||
friend class SelectionChangedReceiver;
|
||||
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 (isSelectionRoleDefined())
|
||||
if (isSelectionRoleDefined() && (m_selectionRole == selectionLevel))
|
||||
{
|
||||
std::vector<PdmUiItem*> items;
|
||||
SelectionManager::instance()->selectedItems(items, m_selectionRole);
|
||||
|
@ -115,7 +115,7 @@ protected:
|
||||
QWidget* createLabelWidget(QWidget * parent) override;
|
||||
virtual void configureAndUpdateUi(const QString& uiConfigName) override;
|
||||
|
||||
virtual void onSelectionManagerSelectionChanged() override;
|
||||
virtual void onSelectionManagerSelectionChanged(int selectionLevel) override;
|
||||
|
||||
private:
|
||||
void selectedUiItems(const QModelIndexList& modelIndexList, std::vector<PdmUiItem*>& objects);
|
||||
|
Loading…
Reference in New Issue
Block a user