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 wxBoxSizer* main_sizer = new wxBoxSizer( wxVERTICAL );
39 KIFACE* kiface = nullptr;
40
41 m_hk_list = new PANEL_HOTKEYS_EDITOR( aParent, this );
42
43 wxWindow* kicadMgr_window = wxWindow::FindWindowByName( KICAD_MANAGER_FRAME_NAME );
44
45 if( KICAD_MANAGER_FRAME* kicadMgr = static_cast<KICAD_MANAGER_FRAME*>( kicadMgr_window ) )
46 {
47 ACTION_MANAGER* actionMgr = kicadMgr->GetToolManager()->GetActionManager();
48
49 for( const auto& [name, action] : actionMgr->GetActions() )
50 m_hk_list->ActionsList().push_back( action );
51 }
52
54 kiface->GetActions( m_hk_list->ActionsList() );
55
57 kiface->GetActions( m_hk_list->ActionsList() );
58
60 kiface->GetActions( m_hk_list->ActionsList() );
61
63 kiface->GetActions( m_hk_list->ActionsList() );
64
65 // Update all of the action hotkeys. The process of loading the actions through
66 // the KiFACE will only get us the default hotkeys
67 ReadHotKeyConfigIntoActions( wxEmptyString, m_hk_list->ActionsList() );
68
69 main_sizer->Add( m_hk_list, 1, wxTOP | wxLEFT | wxRIGHT | wxEXPAND, KIUI::GetStdMargin() );
70
71 wxStdDialogButtonSizer* sdb_sizer = new wxStdDialogButtonSizer;
72 sdb_sizer->AddButton( new wxButton( m_hk_list, wxID_OK ) );
73 sdb_sizer->AddButton( new wxButton( m_hk_list, wxID_CANCEL ) );
74 sdb_sizer->Realize();
75
76 m_hk_list->GetBottomSizer()->Add( sdb_sizer, 0, wxALIGN_CENTER_VERTICAL | wxALL, KIUI::GetStdMargin() );
77
78 SetSizer( main_sizer );
79 main_sizer->SetMinSize( 600, 400 );
80
82}
83
84
86{
87 return m_hk_list->TransferDataToWindow();
88}
89
90
92{
93 return m_hk_list->TransferDataFromWindow();
94}
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:206
@ FACE_SCH
eeschema DSO
Definition kiway.h:299
@ FACE_PL_EDITOR
Definition kiway.h:303
@ FACE_PCB
pcbnew DSO
Definition kiway.h:300
@ FACE_GERBVIEW
Definition kiway.h:302
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:155
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.