KiCad PCB EDA Suite
Loading...
Searching...
No Matches
dialog_hotkey_list.cpp
Go to the documentation of this file.
1/*
2 * This program source code file is part of KICAD, a free EDA CAD application.
3 *
4 * Copyright The KiCad Developers, see AUTHORS.txt for contributors.
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2
9 * of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, you may find one here:
18 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
19 * or you may search the http://www.gnu.org website for the version 2 license,
20 * or you may write to the Free Software Foundation, Inc.,
21 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
22 */
23
24#include "kicad_manager_frame.h"
26#include <kiface_base.h>
27#include <eda_base_frame.h>
29#include <widgets/ui_common.h>
30#include <tool/tool_manager.h>
31
32#include <wx/sizer.h>
33#include <wx/button.h>
34
36 DIALOG_SHIM( aParent, wxID_ANY, _( "Hotkey List" ) )
37{
38 const int margin = KIUI::GetStdMargin();
39 wxBoxSizer* main_sizer = new wxBoxSizer( wxVERTICAL );
40 KIFACE* kiface = nullptr;
41
42 m_hk_list = new PANEL_HOTKEYS_EDITOR( aParent, this, true );
43
44 wxWindow* kicadMgr_window = wxWindow::FindWindowByName( KICAD_MANAGER_FRAME_NAME );
45
46 if( KICAD_MANAGER_FRAME* kicadMgr = static_cast<KICAD_MANAGER_FRAME*>( kicadMgr_window ) )
47 {
48 ACTION_MANAGER* actionMgr = kicadMgr->GetToolManager()->GetActionManager();
49
50 for( const auto& [name, action] : actionMgr->GetActions() )
51 m_hk_list->ActionsList().push_back( action );
52 }
53
55 kiface->GetActions( m_hk_list->ActionsList() );
56
58 kiface->GetActions( m_hk_list->ActionsList() );
59
61 kiface->GetActions( m_hk_list->ActionsList() );
62
64 kiface->GetActions( m_hk_list->ActionsList() );
65
66 // Update all of the action hotkeys. The process of loading the actions through
67 // the KiFACE will only get us the default hotkeys
68 ReadHotKeyConfigIntoActions( wxEmptyString, m_hk_list->ActionsList() );
69
70 main_sizer->Add( m_hk_list, 1, wxTOP | wxLEFT | wxRIGHT | wxEXPAND, margin );
71
72 wxStdDialogButtonSizer* sdb_sizer = new wxStdDialogButtonSizer;
73 sdb_sizer->AddButton( new wxButton( this, wxID_OK ) );
74 sdb_sizer->Realize();
75
76 main_sizer->Add( sdb_sizer, 0, wxEXPAND | wxALL, margin );
77
78 SetSizer( main_sizer );
79 main_sizer->SetMinSize( 600, 400 );
80
82}
83
84
86{
87 return m_hk_list->TransferDataToWindow();
88}
const char * name
Manage TOOL_ACTION objects.
const std::map< std::string, TOOL_ACTION * > & GetActions() const
Get a list of currently-registered actions mapped by their name.
DIALOG_LIST_HOTKEYS(EDA_BASE_FRAME *aParent)
Construct a hotkey list dialog on the given frame.
PANEL_HOTKEYS_EDITOR * m_hk_list
bool TransferDataToWindow() override
Called on dialog initialisation - inits the dialog's own widgets.
void finishDialogSettings()
In all dialogs, we must call the same functions to fix minimal dlg size, the default position and per...
DIALOG_SHIM(wxWindow *aParent, wxWindowID id, const wxString &title, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxDEFAULT_FRAME_STYLE|wxRESIZE_BORDER, const wxString &name=wxDialogNameStr)
The base frame for deriving all KiCad main window classes.
The main KiCad project manager frame.
KIWAY & Kiway() const
Return a reference to the KIWAY that this object has an opportunity to participate in.
virtual KIFACE * KiFACE(FACE_T aFaceId, bool doLoad=true)
Return the KIFACE* given a FACE_T.
Definition kiway.cpp:198
@ FACE_SCH
eeschema DSO
Definition kiway.h:293
@ FACE_PL_EDITOR
Definition kiway.h:297
@ FACE_PCB
pcbnew DSO
Definition kiway.h:294
@ FACE_GERBVIEW
Definition kiway.h:296
Hotkey list dialog (as opposed to editor)
#define _(s)
Base window classes and related definitions.
#define KICAD_MANAGER_FRAME_NAME
void ReadHotKeyConfigIntoActions(const wxString &aFileName, std::vector< TOOL_ACTION * > &aActions)
Read a hotkey config file into a list of actions.
KICOMMON_API int GetStdMargin()
Get the standard margin around a widget in the KiCad UI.
Definition ui_common.cpp:49
Implement a participant in the KIWAY alchemy.
Definition kiway.h:153
IFACE KIFACE_BASE kiface("pcb_test_frame", KIWAY::FACE_PCB)
Functions to provide common constants and other functions to assist in making a consistent UI.