ADDED: ExpandAll/CollapseAll for hierarchy pane.
This commit is contained in:
parent
833ec402a0
commit
c8d2a9340b
|
@ -132,7 +132,7 @@
|
||||||
<property name="window_extra_style"></property>
|
<property name="window_extra_style"></property>
|
||||||
<property name="window_name"></property>
|
<property name="window_name"></property>
|
||||||
<property name="window_style"></property>
|
<property name="window_style"></property>
|
||||||
<event name="OnRightUp">onRightClick</event>
|
<event name="OnRightUp">onTreeItemRightClick</event>
|
||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
<object class="sizeritem" expanded="1">
|
<object class="sizeritem" expanded="1">
|
||||||
|
|
|
@ -91,7 +91,7 @@ HIERARCHY_PANE::HIERARCHY_PANE( SCH_EDIT_FRAME* aParent ) :
|
||||||
|
|
||||||
m_tree->AssignImageList( imageList );
|
m_tree->AssignImageList( imageList );
|
||||||
|
|
||||||
sizer->Add( m_tree, 1, wxEXPAND, wxBORDER_NONE, 0 );
|
sizer->Add( m_tree, 1, wxEXPAND, wxBORDER_NONE );
|
||||||
|
|
||||||
m_events_bound = false;
|
m_events_bound = false;
|
||||||
|
|
||||||
|
@ -100,7 +100,9 @@ HIERARCHY_PANE::HIERARCHY_PANE( SCH_EDIT_FRAME* aParent ) :
|
||||||
// Enable selection events
|
// Enable selection events
|
||||||
Bind( wxEVT_TREE_ITEM_ACTIVATED, &HIERARCHY_PANE::onSelectSheetPath, this );
|
Bind( wxEVT_TREE_ITEM_ACTIVATED, &HIERARCHY_PANE::onSelectSheetPath, this );
|
||||||
Bind( wxEVT_TREE_SEL_CHANGED, &HIERARCHY_PANE::onSelectSheetPath, this );
|
Bind( wxEVT_TREE_SEL_CHANGED, &HIERARCHY_PANE::onSelectSheetPath, this );
|
||||||
Bind( wxEVT_TREE_ITEM_RIGHT_CLICK, &HIERARCHY_PANE::onRightClick, this );
|
Bind( wxEVT_TREE_ITEM_RIGHT_CLICK, &HIERARCHY_PANE::onTreeItemRightClick, this );
|
||||||
|
Bind( wxEVT_CHAR_HOOK, &HIERARCHY_PANE::onCharHook, this );
|
||||||
|
m_tree->Bind( wxEVT_RIGHT_UP, &HIERARCHY_PANE::onRightClick, this );
|
||||||
|
|
||||||
m_events_bound = true;
|
m_events_bound = true;
|
||||||
}
|
}
|
||||||
|
@ -110,7 +112,9 @@ HIERARCHY_PANE::~HIERARCHY_PANE()
|
||||||
{
|
{
|
||||||
Unbind( wxEVT_TREE_ITEM_ACTIVATED, &HIERARCHY_PANE::onSelectSheetPath, this );
|
Unbind( wxEVT_TREE_ITEM_ACTIVATED, &HIERARCHY_PANE::onSelectSheetPath, this );
|
||||||
Unbind( wxEVT_TREE_SEL_CHANGED, &HIERARCHY_PANE::onSelectSheetPath, this );
|
Unbind( wxEVT_TREE_SEL_CHANGED, &HIERARCHY_PANE::onSelectSheetPath, this );
|
||||||
Unbind( wxEVT_TREE_ITEM_RIGHT_CLICK, &HIERARCHY_PANE::onRightClick, this );
|
Unbind( wxEVT_TREE_ITEM_RIGHT_CLICK, &HIERARCHY_PANE::onTreeItemRightClick, this );
|
||||||
|
Unbind( wxEVT_CHAR_HOOK, &HIERARCHY_PANE::onCharHook, this );
|
||||||
|
m_tree->Unbind( wxEVT_RIGHT_UP, &HIERARCHY_PANE::onRightClick, this );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -146,7 +150,7 @@ void HIERARCHY_PANE::UpdateHierarchySelection()
|
||||||
// Disable selection events
|
// Disable selection events
|
||||||
Unbind( wxEVT_TREE_ITEM_ACTIVATED, &HIERARCHY_PANE::onSelectSheetPath, this );
|
Unbind( wxEVT_TREE_ITEM_ACTIVATED, &HIERARCHY_PANE::onSelectSheetPath, this );
|
||||||
Unbind( wxEVT_TREE_SEL_CHANGED, &HIERARCHY_PANE::onSelectSheetPath, this );
|
Unbind( wxEVT_TREE_SEL_CHANGED, &HIERARCHY_PANE::onSelectSheetPath, this );
|
||||||
Unbind( wxEVT_TREE_ITEM_RIGHT_CLICK, &HIERARCHY_PANE::onRightClick, this );
|
Unbind( wxEVT_TREE_ITEM_RIGHT_CLICK, &HIERARCHY_PANE::onTreeItemRightClick, this );
|
||||||
|
|
||||||
m_events_bound = false;
|
m_events_bound = false;
|
||||||
}
|
}
|
||||||
|
@ -193,7 +197,7 @@ void HIERARCHY_PANE::UpdateHierarchySelection()
|
||||||
// Enable selection events
|
// Enable selection events
|
||||||
Bind( wxEVT_TREE_ITEM_ACTIVATED, &HIERARCHY_PANE::onSelectSheetPath, this );
|
Bind( wxEVT_TREE_ITEM_ACTIVATED, &HIERARCHY_PANE::onSelectSheetPath, this );
|
||||||
Bind( wxEVT_TREE_SEL_CHANGED, &HIERARCHY_PANE::onSelectSheetPath, this );
|
Bind( wxEVT_TREE_SEL_CHANGED, &HIERARCHY_PANE::onSelectSheetPath, this );
|
||||||
Bind( wxEVT_TREE_ITEM_RIGHT_CLICK, &HIERARCHY_PANE::onRightClick, this );
|
Bind( wxEVT_TREE_ITEM_RIGHT_CLICK, &HIERARCHY_PANE::onTreeItemRightClick, this );
|
||||||
|
|
||||||
m_events_bound = true;
|
m_events_bound = true;
|
||||||
}
|
}
|
||||||
|
@ -211,7 +215,7 @@ void HIERARCHY_PANE::UpdateHierarchyTree()
|
||||||
// Disable selection events
|
// Disable selection events
|
||||||
Unbind( wxEVT_TREE_ITEM_ACTIVATED, &HIERARCHY_PANE::onSelectSheetPath, this );
|
Unbind( wxEVT_TREE_ITEM_ACTIVATED, &HIERARCHY_PANE::onSelectSheetPath, this );
|
||||||
Unbind( wxEVT_TREE_SEL_CHANGED, &HIERARCHY_PANE::onSelectSheetPath, this );
|
Unbind( wxEVT_TREE_SEL_CHANGED, &HIERARCHY_PANE::onSelectSheetPath, this );
|
||||||
Unbind( wxEVT_TREE_ITEM_RIGHT_CLICK, &HIERARCHY_PANE::onRightClick, this );
|
Unbind( wxEVT_TREE_ITEM_RIGHT_CLICK, &HIERARCHY_PANE::onTreeItemRightClick, this );
|
||||||
|
|
||||||
m_events_bound = false;
|
m_events_bound = false;
|
||||||
}
|
}
|
||||||
|
@ -235,7 +239,7 @@ void HIERARCHY_PANE::UpdateHierarchyTree()
|
||||||
// Enable selection events
|
// Enable selection events
|
||||||
Bind( wxEVT_TREE_ITEM_ACTIVATED, &HIERARCHY_PANE::onSelectSheetPath, this );
|
Bind( wxEVT_TREE_ITEM_ACTIVATED, &HIERARCHY_PANE::onSelectSheetPath, this );
|
||||||
Bind( wxEVT_TREE_SEL_CHANGED, &HIERARCHY_PANE::onSelectSheetPath, this );
|
Bind( wxEVT_TREE_SEL_CHANGED, &HIERARCHY_PANE::onSelectSheetPath, this );
|
||||||
Bind( wxEVT_TREE_ITEM_RIGHT_CLICK, &HIERARCHY_PANE::onRightClick, this );
|
Bind( wxEVT_TREE_ITEM_RIGHT_CLICK, &HIERARCHY_PANE::onTreeItemRightClick, this );
|
||||||
|
|
||||||
m_events_bound = true;
|
m_events_bound = true;
|
||||||
}
|
}
|
||||||
|
@ -302,23 +306,41 @@ void HIERARCHY_PANE::UpdateLabelsHierarchyTree()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void HIERARCHY_PANE::onRightClick( wxTreeEvent& aEvent )
|
void HIERARCHY_PANE::onTreeItemRightClick( wxTreeEvent& aEvent )
|
||||||
{
|
{
|
||||||
wxTreeItemId itemSel = aEvent.GetItem();
|
onRightClick( aEvent.GetItem() );
|
||||||
|
}
|
||||||
|
|
||||||
if( !itemSel.IsOk() )
|
|
||||||
return;
|
|
||||||
|
|
||||||
TREE_ITEM_DATA* itemData = static_cast<TREE_ITEM_DATA*>( m_tree->GetItemData( itemSel ) );
|
void HIERARCHY_PANE::onRightClick( wxMouseEvent& aEvent )
|
||||||
|
{
|
||||||
|
onRightClick( wxTreeItemId() );
|
||||||
|
}
|
||||||
|
|
||||||
if( !itemData )
|
|
||||||
return;
|
|
||||||
|
|
||||||
|
void HIERARCHY_PANE::onRightClick( wxTreeItemId aItem )
|
||||||
|
{
|
||||||
wxMenu ctxMenu;
|
wxMenu ctxMenu;
|
||||||
|
TREE_ITEM_DATA* itemData = nullptr;
|
||||||
|
|
||||||
|
if( !aItem.IsOk() )
|
||||||
|
aItem = m_tree->GetSelection();
|
||||||
|
|
||||||
|
if( aItem.IsOk() )
|
||||||
|
itemData = static_cast<TREE_ITEM_DATA*>( m_tree->GetItemData( aItem ) );
|
||||||
|
|
||||||
|
if( itemData )
|
||||||
|
{
|
||||||
ctxMenu.Append( 1, _( "Edit Page Number" ) );
|
ctxMenu.Append( 1, _( "Edit Page Number" ) );
|
||||||
|
ctxMenu.AppendSeparator();
|
||||||
|
}
|
||||||
|
|
||||||
if( GetPopupMenuSelectionFromUser( ctxMenu ) == 1 )
|
ctxMenu.Append( 2, ACTIONS::expandAll.GetMenuItem() );
|
||||||
|
ctxMenu.Append( 3, ACTIONS::collapseAll.GetMenuItem() );
|
||||||
|
|
||||||
|
switch( GetPopupMenuSelectionFromUser( ctxMenu ) )
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
{
|
{
|
||||||
wxString msg;
|
wxString msg;
|
||||||
wxString sheetPath = itemData->m_SheetPath.PathHumanReadable( false, true );
|
wxString sheetPath = itemData->m_SheetPath.PathHumanReadable( false, true );
|
||||||
|
@ -352,6 +374,44 @@ void HIERARCHY_PANE::onRightClick( wxTreeEvent& aEvent )
|
||||||
|
|
||||||
UpdateLabelsHierarchyTree();
|
UpdateLabelsHierarchyTree();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 2:
|
||||||
|
m_tree->ExpandAll();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
m_tree->CollapseAll();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void HIERARCHY_PANE::onCharHook( wxKeyEvent& aKeyStroke )
|
||||||
|
{
|
||||||
|
int hotkey = aKeyStroke.GetKeyCode();
|
||||||
|
|
||||||
|
if( aKeyStroke.GetModifiers() & wxMOD_CONTROL )
|
||||||
|
hotkey += MD_CTRL;
|
||||||
|
|
||||||
|
if( aKeyStroke.GetModifiers() & wxMOD_ALT )
|
||||||
|
hotkey += MD_ALT;
|
||||||
|
|
||||||
|
if( aKeyStroke.GetModifiers() & wxMOD_SHIFT )
|
||||||
|
hotkey += MD_SHIFT;
|
||||||
|
|
||||||
|
if( hotkey == ACTIONS::expandAll.GetHotKey()
|
||||||
|
|| hotkey == ACTIONS::expandAll.GetHotKeyAlt() )
|
||||||
|
{
|
||||||
|
m_tree->ExpandAll();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if( hotkey == ACTIONS::collapseAll.GetHotKey()
|
||||||
|
|| hotkey == ACTIONS::collapseAll.GetHotKeyAlt() )
|
||||||
|
{
|
||||||
|
m_tree->CollapseAll();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -105,10 +105,10 @@ private:
|
||||||
*/
|
*/
|
||||||
void onSelectSheetPath( wxTreeEvent& aEvent );
|
void onSelectSheetPath( wxTreeEvent& aEvent );
|
||||||
|
|
||||||
/**
|
void onTreeItemRightClick( wxTreeEvent& aEvent );
|
||||||
* Handle a right-click in the tree.
|
void onRightClick( wxMouseEvent& aEvent );
|
||||||
*/
|
void onRightClick( wxTreeItemId aItem );
|
||||||
void onRightClick( wxTreeEvent& aEvent );
|
void onCharHook( wxKeyEvent& aKeyStroke );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return String with page number in parenthesis
|
* @return String with page number in parenthesis
|
||||||
|
|
Loading…
Reference in New Issue