Re-jigger standard submenus so they both link AND work.
This commit is contained in:
parent
05652d4787
commit
7726b039b2
|
@ -45,6 +45,11 @@
|
||||||
#include <ws_draw_item.h>
|
#include <ws_draw_item.h>
|
||||||
#include <page_info.h>
|
#include <page_info.h>
|
||||||
#include <title_block.h>
|
#include <title_block.h>
|
||||||
|
#include <tool/tool_menu.h>
|
||||||
|
#include <tool/selection_conditions.h>
|
||||||
|
#include <tool/zoom_menu.h>
|
||||||
|
#include <tool/grid_menu.h>
|
||||||
|
#include <tool/common_tools.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Definition for enabling and disabling scroll bar setting trace output. See the
|
* Definition for enabling and disabling scroll bar setting trace output. See the
|
||||||
|
@ -328,6 +333,31 @@ double EDA_DRAW_FRAME::GetZoom()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void EDA_DRAW_FRAME::AddStandardSubMenus( TOOL_MENU& aToolMenu )
|
||||||
|
{
|
||||||
|
COMMON_TOOLS* commonTools = m_toolManager->GetTool<COMMON_TOOLS>();
|
||||||
|
CONDITIONAL_MENU& aMenu = aToolMenu.GetMenu();
|
||||||
|
|
||||||
|
aMenu.AddItem( ACTIONS::zoomCenter, SELECTION_CONDITIONS::ShowAlways, 1000 );
|
||||||
|
aMenu.AddItem( ACTIONS::zoomIn, SELECTION_CONDITIONS::ShowAlways, 1000 );
|
||||||
|
aMenu.AddItem( ACTIONS::zoomOut, SELECTION_CONDITIONS::ShowAlways, 1000 );
|
||||||
|
aMenu.AddItem( ACTIONS::zoomFitScreen, SELECTION_CONDITIONS::ShowAlways, 1000 );
|
||||||
|
|
||||||
|
aMenu.AddSeparator(SELECTION_CONDITIONS::ShowAlways, 1000 );
|
||||||
|
|
||||||
|
auto zoomMenu = std::make_shared<ZOOM_MENU>( this );
|
||||||
|
zoomMenu->SetTool( commonTools );
|
||||||
|
aToolMenu.AddSubMenu( zoomMenu );
|
||||||
|
|
||||||
|
auto gridMenu = std::make_shared<GRID_MENU>( this );
|
||||||
|
gridMenu->SetTool( commonTools );
|
||||||
|
aToolMenu.AddSubMenu( gridMenu );
|
||||||
|
|
||||||
|
aMenu.AddMenu( zoomMenu.get(), SELECTION_CONDITIONS::ShowAlways, 1000 );
|
||||||
|
aMenu.AddMenu( gridMenu.get(), SELECTION_CONDITIONS::ShowAlways, 1000 );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void EDA_DRAW_FRAME::DisplayToolMsg( const wxString& msg )
|
void EDA_DRAW_FRAME::DisplayToolMsg( const wxString& msg )
|
||||||
{
|
{
|
||||||
m_toolMsg = msg;
|
m_toolMsg = msg;
|
||||||
|
|
|
@ -76,24 +76,3 @@ void TOOL_MENU::CloseContextMenu( OPT_TOOL_EVENT& evt )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// This makes the factory functions a bit less verbose
|
|
||||||
using S_C = SELECTION_CONDITIONS;
|
|
||||||
|
|
||||||
void TOOL_MENU::AddStandardSubMenus( EDA_DRAW_FRAME* aFrame )
|
|
||||||
{
|
|
||||||
#if defined( PCBNEW ) || defined( CVPCB ) || defined( EESCHEMA ) || defined( GERBVIEW ) || defined( PL_EDITOR )
|
|
||||||
m_menu.AddItem( ACTIONS::zoomCenter, S_C::ShowAlways, 1000 );
|
|
||||||
m_menu.AddItem( ACTIONS::zoomIn, S_C::ShowAlways, 1000 );
|
|
||||||
m_menu.AddItem( ACTIONS::zoomOut, S_C::ShowAlways, 1000 );
|
|
||||||
m_menu.AddItem( ACTIONS::zoomFitScreen, S_C::ShowAlways, 1000 );
|
|
||||||
|
|
||||||
m_menu.AddSeparator(SELECTION_CONDITIONS::ShowAlways, 1000 );
|
|
||||||
|
|
||||||
if( aFrame )
|
|
||||||
{
|
|
||||||
m_menu.AddMenu( createOwnSubMenu<ZOOM_MENU>( aFrame ).get(), S_C::ShowAlways, 1000 );
|
|
||||||
m_menu.AddMenu( createOwnSubMenu<GRID_MENU>( aFrame ).get(), S_C::ShowAlways, 1000 );
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
|
@ -45,8 +45,7 @@ CVPCB_SELECTION_TOOL::CVPCB_SELECTION_TOOL() :
|
||||||
|
|
||||||
bool CVPCB_SELECTION_TOOL::Init()
|
bool CVPCB_SELECTION_TOOL::Init()
|
||||||
{
|
{
|
||||||
m_menu.AddStandardSubMenus( getEditFrame<DISPLAY_FOOTPRINTS_FRAME>() );
|
getEditFrame<DISPLAY_FOOTPRINTS_FRAME>()->AddStandardSubMenus( m_menu );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -238,7 +238,7 @@ bool EE_SELECTION_TOOL::Init()
|
||||||
menu.AddItem( EE_ACTIONS::pinTable, havePartCondition && EE_CONDITIONS::Empty, 400 );
|
menu.AddItem( EE_ACTIONS::pinTable, havePartCondition && EE_CONDITIONS::Empty, 400 );
|
||||||
|
|
||||||
menu.AddSeparator( SELECTION_CONDITIONS::ShowAlways, 1000 );
|
menu.AddSeparator( SELECTION_CONDITIONS::ShowAlways, 1000 );
|
||||||
m_menu.AddStandardSubMenus( m_frame );
|
m_frame->AddStandardSubMenus( m_menu );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,7 +80,7 @@ public:
|
||||||
ctxMenu.AddSeparator( SELECTION_CONDITIONS::ShowAlways, 1 );
|
ctxMenu.AddSeparator( SELECTION_CONDITIONS::ShowAlways, 1 );
|
||||||
|
|
||||||
// Finally, add the standard zoom/grid items
|
// Finally, add the standard zoom/grid items
|
||||||
m_menu.AddStandardSubMenus( m_frame );
|
m_frame->AddStandardSubMenus( m_menu );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -165,7 +165,7 @@ bool GERBVIEW_SELECTION_TOOL::Init()
|
||||||
menu.AddMenu( selectMenu.get() );
|
menu.AddMenu( selectMenu.get() );
|
||||||
menu.AddSeparator( SELECTION_CONDITIONS::ShowAlways, 1000 );
|
menu.AddSeparator( SELECTION_CONDITIONS::ShowAlways, 1000 );
|
||||||
|
|
||||||
m_menu.AddStandardSubMenus( getEditFrame<GERBVIEW_FRAME>() );
|
getEditFrame<GERBVIEW_FRAME>()->AddStandardSubMenus( m_menu );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
class wxSingleInstanceChecker;
|
class wxSingleInstanceChecker;
|
||||||
class EDA_HOTKEY;
|
class EDA_HOTKEY;
|
||||||
class ACTION_TOOLBAR;
|
class ACTION_TOOLBAR;
|
||||||
|
class TOOL_MENU;
|
||||||
|
|
||||||
using KIGFX::COLOR4D;
|
using KIGFX::COLOR4D;
|
||||||
|
|
||||||
|
@ -515,6 +516,14 @@ public:
|
||||||
*/
|
*/
|
||||||
double GetZoom();
|
double GetZoom();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function CreateBasicMenu
|
||||||
|
*
|
||||||
|
* Construct a "basic" menu for a tool, containing only items
|
||||||
|
* that apply to all tools (e.g. zoom and grid)
|
||||||
|
*/
|
||||||
|
void AddStandardSubMenus( TOOL_MENU& aMenu );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Prints the page layout with the frame and the basic inscriptions.
|
* Prints the page layout with the frame and the basic inscriptions.
|
||||||
*
|
*
|
||||||
|
|
|
@ -118,36 +118,7 @@ public:
|
||||||
*/
|
*/
|
||||||
void CloseContextMenu( OPT_TOOL_EVENT& evt );
|
void CloseContextMenu( OPT_TOOL_EVENT& evt );
|
||||||
|
|
||||||
/**
|
|
||||||
* Function CreateBasicMenu
|
|
||||||
*
|
|
||||||
* Construct a "basic" menu for a tool, containing only items
|
|
||||||
* that apply to all tools (e.g. zoom and grid)
|
|
||||||
*/
|
|
||||||
void AddStandardSubMenus( EDA_DRAW_FRAME* aFrame );
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
/*!
|
|
||||||
* Helper function for factories to abe able to easily add
|
|
||||||
* their own new sub menus. This sets the tool to the TOOL_MENUs
|
|
||||||
* owner and adds to the store.
|
|
||||||
*
|
|
||||||
* Note, this won't share the menu between multiple invocations
|
|
||||||
* of the factory. But if different top-level tools are using the
|
|
||||||
* same factory, which one would be used for SetTool()?
|
|
||||||
*/
|
|
||||||
template <typename T, typename ... Args>
|
|
||||||
std::shared_ptr<T> createOwnSubMenu( Args&& ... args )
|
|
||||||
{
|
|
||||||
auto subMenuPtr = std::make_shared<T>( args ... );
|
|
||||||
|
|
||||||
subMenuPtr->SetTool( &m_tool );
|
|
||||||
AddSubMenu( subMenuPtr );
|
|
||||||
|
|
||||||
return subMenuPtr;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The conditional menu displayed by the tool
|
* The conditional menu displayed by the tool
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -100,7 +100,7 @@ bool PL_DRAWING_TOOLS::Init()
|
||||||
ctxMenu.AddSeparator( SELECTION_CONDITIONS::ShowAlways, 1 );
|
ctxMenu.AddSeparator( SELECTION_CONDITIONS::ShowAlways, 1 );
|
||||||
|
|
||||||
// Finally, add the standard zoom/grid items
|
// Finally, add the standard zoom/grid items
|
||||||
m_menu.AddStandardSubMenus( m_frame );
|
m_frame->AddStandardSubMenus( m_menu );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,7 +80,7 @@ bool PL_EDIT_TOOL::Init()
|
||||||
ctxMenu.AddItem( PL_ACTIONS::doDelete, SELECTION_CONDITIONS::NotEmpty, 200 );
|
ctxMenu.AddItem( PL_ACTIONS::doDelete, SELECTION_CONDITIONS::NotEmpty, 200 );
|
||||||
|
|
||||||
// Finally, add the standard zoom/grid items
|
// Finally, add the standard zoom/grid items
|
||||||
m_menu.AddStandardSubMenus( m_frame );
|
m_frame->AddStandardSubMenus( m_menu );
|
||||||
|
|
||||||
//
|
//
|
||||||
// Add editing actions to the selection tool menu
|
// Add editing actions to the selection tool menu
|
||||||
|
|
|
@ -53,7 +53,7 @@ bool PL_PICKER_TOOL::Init()
|
||||||
ctxMenu.AddSeparator( SELECTION_CONDITIONS::ShowAlways, 1 );
|
ctxMenu.AddSeparator( SELECTION_CONDITIONS::ShowAlways, 1 );
|
||||||
|
|
||||||
// Finally, add the standard zoom/grid items
|
// Finally, add the standard zoom/grid items
|
||||||
m_menu.AddStandardSubMenus( m_frame );
|
m_frame->AddStandardSubMenus( m_menu );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -102,7 +102,7 @@ bool PL_SELECTION_TOOL::Init()
|
||||||
menu.AddItem( PL_ACTIONS::appendImportedWorksheet, PL_CONDITIONS::Idle, 250 );
|
menu.AddItem( PL_ACTIONS::appendImportedWorksheet, PL_CONDITIONS::Idle, 250 );
|
||||||
|
|
||||||
menu.AddSeparator( SELECTION_CONDITIONS::ShowAlways, 1000 );
|
menu.AddSeparator( SELECTION_CONDITIONS::ShowAlways, 1000 );
|
||||||
m_menu.AddStandardSubMenus( m_frame );
|
m_frame->AddStandardSubMenus( m_menu );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -224,7 +224,7 @@ bool DRAWING_TOOL::Init()
|
||||||
// For example, zone fill/unfill is provided by the PCB control tool
|
// For example, zone fill/unfill is provided by the PCB control tool
|
||||||
|
|
||||||
// Finally, add the standard zoom/grid items
|
// Finally, add the standard zoom/grid items
|
||||||
m_menu.AddStandardSubMenus( getEditFrame<PCB_BASE_FRAME>() );
|
getEditFrame<PCB_BASE_FRAME>()->AddStandardSubMenus( m_menu );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -282,7 +282,7 @@ bool EDIT_TOOL::Init()
|
||||||
ctxMenu.AddSeparator( activeToolCondition, 1 );
|
ctxMenu.AddSeparator( activeToolCondition, 1 );
|
||||||
|
|
||||||
if( frame )
|
if( frame )
|
||||||
m_menu.AddStandardSubMenus( frame );
|
frame->AddStandardSubMenus( m_menu );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -382,7 +382,7 @@ bool PCB_EDITOR_CONTROL::Init()
|
||||||
ctxMenu.AddSeparator( placeModuleCondition, 1000 );
|
ctxMenu.AddSeparator( placeModuleCondition, 1000 );
|
||||||
|
|
||||||
// Finally, add the standard zoom & grid items
|
// Finally, add the standard zoom & grid items
|
||||||
m_menu.AddStandardSubMenus( getEditFrame<PCB_BASE_FRAME>() );
|
getEditFrame<PCB_BASE_FRAME>()->AddStandardSubMenus( m_menu );
|
||||||
|
|
||||||
auto zoneMenu = std::make_shared<ZONE_CONTEXT_MENU>();
|
auto zoneMenu = std::make_shared<ZONE_CONTEXT_MENU>();
|
||||||
zoneMenu->SetTool( this );
|
zoneMenu->SetTool( this );
|
||||||
|
|
|
@ -219,7 +219,7 @@ bool PCB_TOOL_BASE::Init()
|
||||||
ctxMenu.AddSeparator( SELECTION_CONDITIONS::ShowAlways, 1 );
|
ctxMenu.AddSeparator( SELECTION_CONDITIONS::ShowAlways, 1 );
|
||||||
|
|
||||||
// Finally, add the standard zoom/grid items
|
// Finally, add the standard zoom/grid items
|
||||||
m_menu.AddStandardSubMenus( getEditFrame<PCB_BASE_FRAME>() );
|
getEditFrame<PCB_BASE_FRAME>()->AddStandardSubMenus( m_menu );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -211,7 +211,7 @@ bool SELECTION_TOOL::Init()
|
||||||
if( frame && ( frame->IsType( FRAME_PCB_MODULE_VIEWER )
|
if( frame && ( frame->IsType( FRAME_PCB_MODULE_VIEWER )
|
||||||
|| frame->IsType( FRAME_PCB_MODULE_VIEWER_MODAL ) ) )
|
|| frame->IsType( FRAME_PCB_MODULE_VIEWER_MODAL ) ) )
|
||||||
{
|
{
|
||||||
m_menu.AddStandardSubMenus( frame );
|
frame->AddStandardSubMenus( m_menu );
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -225,7 +225,7 @@ bool SELECTION_TOOL::Init()
|
||||||
menu.AddSeparator( SELECTION_CONDITIONS::NotEmpty, 1000 );
|
menu.AddSeparator( SELECTION_CONDITIONS::NotEmpty, 1000 );
|
||||||
|
|
||||||
if( frame )
|
if( frame )
|
||||||
m_menu.AddStandardSubMenus( frame );
|
frame->AddStandardSubMenus( m_menu );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue