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, see <https://www.gnu.org/licenses/>.
18 */
19
20#include "kicad_manager_frame.h"
22#include <kiface_base.h>
23#include <eda_base_frame.h>
25#include <widgets/ui_common.h>
26#include <tool/tool_manager.h>
27
28#include <wx/sizer.h>
29#include <wx/button.h>
30
32 DIALOG_SHIM( aParent, wxID_ANY, _( "Hotkey List" ) )
33{
34 wxBoxSizer* main_sizer = new wxBoxSizer( wxVERTICAL );
35 KIFACE* kiface = nullptr;
36
37 m_hk_list = new PANEL_HOTKEYS_EDITOR( aParent, this, true );
38
39 wxWindow* kicadMgr_window = wxWindow::FindWindowByName( KICAD_MANAGER_FRAME_NAME );
40
41 if( KICAD_MANAGER_FRAME* kicadMgr = static_cast<KICAD_MANAGER_FRAME*>( kicadMgr_window ) )
42 {
43 ACTION_MANAGER* actionMgr = kicadMgr->GetToolManager()->GetActionManager();
44
45 for( const auto& [name, action] : actionMgr->GetActions() )
46 m_hk_list->ActionsList().push_back( action );
47 }
48
50 kiface->GetActions( m_hk_list->ActionsList() );
51
53 kiface->GetActions( m_hk_list->ActionsList() );
54
56 kiface->GetActions( m_hk_list->ActionsList() );
57
59 kiface->GetActions( m_hk_list->ActionsList() );
60
61 // Update all of the action hotkeys. The process of loading the actions through
62 // the KiFACE will only get us the default hotkeys
63 ReadHotKeyConfigIntoActions( wxEmptyString, m_hk_list->ActionsList() );
64
65 main_sizer->Add( m_hk_list, 1, wxTOP | wxLEFT | wxRIGHT | wxEXPAND, KIUI::GetStdMargin() );
66
67 wxStdDialogButtonSizer* sdb_sizer = new wxStdDialogButtonSizer;
68 sdb_sizer->AddButton( new wxButton( m_hk_list, wxID_OK ) );
69 sdb_sizer->AddButton( new wxButton( m_hk_list, wxID_CANCEL ) );
70 sdb_sizer->Realize();
71
72 m_hk_list->GetBottomSizer()->Add( sdb_sizer, 0, wxALIGN_CENTER_VERTICAL | wxALL, KIUI::GetStdMargin() );
73
74 SetSizer( main_sizer );
75 main_sizer->SetMinSize( 600, 400 );
76
78}
79
80
82{
83 return m_hk_list->TransferDataToWindow();
84}
85
86
88{
89 return m_hk_list->TransferDataFromWindow();
90}
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 TransferDataFromWindow() override
Called on dialog close to save the hotkey changes.
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:207
@ FACE_SCH
eeschema DSO
Definition kiway.h:318
@ FACE_PL_EDITOR
Definition kiway.h:322
@ FACE_PCB
pcbnew DSO
Definition kiway.h:319
@ FACE_GERBVIEW
Definition kiway.h:321
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:152
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.