OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
Slic3r::GUI::KBShortcutsDialog Class Reference

#include </home/runner/work/OrcaSlicer/OrcaSlicer/src/slic3r/GUI/KBShortcutsDialog.hpp>

Inheritance diagram for Slic3r::GUI::KBShortcutsDialog:
Collaboration diagram for Slic3r::GUI::KBShortcutsDialog:

Classes

struct  FixedKey
struct  MouseAction
struct  Row
struct  Page
struct  EditableRow
struct  PreferenceRow

Public Member Functions

 KBShortcutsDialog (wxWindow *parent, ShortcutContext page)
void EndModal (int retCode) override
float scale_factor () const
float prev_scale_factor () const
void set_scale_factor (float v)
void set_prev_scale_factor (float v)
void set_em_unit (int v)
bool force_rescale () const
int em_unit () const
const wxFont & normal_font () const
void enable_force_rescale ()
int ShowModal ()

Protected Member Functions

void on_dpi_changed (const wxRect &suggested_rect) override
virtual void on_sys_color_changed ()

Private Member Functions

void fill_pages ()
wxPanel * create_page (wxWindow *parent, const Page &page)
void edit_shortcut (Shortcut shortcut)
void reset_shortcut (Shortcut shortcut)
bool take_chord_from (Shortcut shortcut, const std::vector< Shortcut > &conflicts, const wxString &question)
void apply_bindings ()
int set_chord_labels (wxStaticText *modifiers, wxStaticText *key, std::vector< wxString > parts)
void open_mouse_preferences (const char *preference)
void update_em_unit ()
bool is_new_scale_factor () const
void rescale (const wxRect &suggested_rect)

Private Attributes

std::vector< Page > m_pages
std::vector< EditableRow > m_editable_rows
std::vector< PreferenceRow > m_preference_rows
wxSize m_edit_size
int m_buttons_width = 0
int m_row_text_width = 0
int m_key_slot = 0
TabCtrl * m_tabs
wxSimplebook * m_simplebook
float m_scale_factor
int m_em_unit
wxFont m_normal_font
float m_prev_scale_factor
bool m_can_rescale
bool m_force_rescale
int m_new_font_point_size

Detailed Description


Class Documentation

◆ Slic3r::GUI::KBShortcutsDialog::FixedKey

struct Slic3r::GUI::KBShortcutsDialog::FixedKey
Collaboration diagram for Slic3r::GUI::KBShortcutsDialog::FixedKey:
Class Members
const char * description
vector< wxString > keys

◆ Slic3r::GUI::KBShortcutsDialog::MouseAction

struct Slic3r::GUI::KBShortcutsDialog::MouseAction
Class Members
wxString button
const char * preference

◆ Slic3r::GUI::KBShortcutsDialog::Row

struct Slic3r::GUI::KBShortcutsDialog::Row
Class Members
variant< Shortcut, FixedKey, MouseAction > content
ShortcutSection section

◆ Slic3r::GUI::KBShortcutsDialog::Page

struct Slic3r::GUI::KBShortcutsDialog::Page
Collaboration diagram for Slic3r::GUI::KBShortcutsDialog::Page:
Class Members
wxString caption
ShortcutContext context
vector< Row > rows
wxString title

◆ Slic3r::GUI::KBShortcutsDialog::EditableRow

struct Slic3r::GUI::KBShortcutsDialog::EditableRow
Collaboration diagram for Slic3r::GUI::KBShortcutsDialog::EditableRow:
Class Members
wxStaticText * description
wxStaticText * key
wxStaticText * modifiers
ScalableButton * reset
Shortcut shortcut

◆ Slic3r::GUI::KBShortcutsDialog::PreferenceRow

struct Slic3r::GUI::KBShortcutsDialog::PreferenceRow
Class Members
wxStaticText * description
const char * preference

Constructor & Destructor Documentation

◆ KBShortcutsDialog()

Slic3r::GUI::KBShortcutsDialog::KBShortcutsDialog ( wxWindow * parent,
ShortcutContext page )
100 : DPIDialog(parent, wxID_ANY, _L("Keyboard Shortcuts"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE)
101{
102 SetFont(wxGetApp().normal_font());
103 SetBackgroundColour(*wxWHITE);
104
105 fill_pages();
106
107 ScalableButton* probe = new ScalableButton(this, wxID_ANY, "edit");
108 m_edit_size = probe->GetBestSize();
109 probe->Destroy();
110 m_buttons_width = 2 * m_edit_size.x + FromDIP(6);
111 m_row_text_width = FromDIP(PAGE_WIDTH) - FromDIP(ROW_MARGIN) - FromDIP(TITLE_MARGIN) - 2 * FromDIP(ROW_GAP) - m_buttons_width;
112 GetTextExtent("W", &m_key_slot, nullptr, nullptr, nullptr, &Label::Head_14);
113
114 // The page tabs follow the Preferences dialog.
115 m_tabs = new TabCtrl(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTR_NO_BUTTONS | wxTR_HIDE_ROOT | wxTR_SINGLE | wxTR_NO_LINES | wxBORDER_NONE | wxWANTS_CHARS | wxTR_FULL_ROW_HIGHLIGHT);
116 m_tabs->Bind(wxEVT_RIGHT_DOWN, [](auto&) {});
117 m_tabs->SetFont(Label::Body_14);
118 m_simplebook = new wxSimplebook(this, wxID_ANY, wxDefaultPosition, wxSize(FromDIP(660), FromDIP(500)));
119 for (const Page& page : m_pages) {
120 m_tabs->AppendItem(page.title);
121 m_simplebook->AddPage(create_page(m_simplebook, page), page.title);
122 }
123 const StateColor tab_colour(std::make_pair(wxColour("#6B6B6C"), (int) StateColor::NotChecked), std::make_pair(wxColour("#363636"), (int) StateColor::Normal));
124 for (size_t i = 0; i < m_tabs->GetCount(); ++i)
125 m_tabs->SetItemTextColour(i, tab_colour);
126 m_tabs->Bind(wxEVT_TAB_SEL_CHANGED, [this](wxCommandEvent& e) {
127 for (size_t i = 0; i < m_tabs->GetCount(); ++i)
128 m_tabs->SetItemBold(i, int(i) == e.GetSelection());
129 m_simplebook->SetSelection(e.GetSelection());
130 });
131 const auto shown = std::find_if(m_pages.begin(), m_pages.end(), [page](const Page& entry) { return entry.context == page; });
132 m_tabs->SelectItem(shown == m_pages.end() ? 0 : int(shown - m_pages.begin()));
133
134 wxBoxSizer* sizer = new wxBoxSizer(wxVERTICAL);
135 sizer->Add(m_tabs, 0, wxEXPAND | wxTOP | wxBOTTOM, FromDIP(5));
136 sizer->Add(m_simplebook, 1, wxEXPAND);
137 SetSizerAndFit(sizer);
138 CenterOnParent();
139 wxGetApp().UpdateDlgDarkUI(this);
140}
#define _L(s)
Definition OBJ.cpp:34
static wxFont Head_14
Definition Label.hpp:45
static wxFont Body_14
Definition Label.hpp:53
const wxFont & normal_font() const
Definition GUI_Utils.hpp:205
int m_key_slot
Definition KBShortcutsDialog.hpp:84
int m_buttons_width
Definition KBShortcutsDialog.hpp:82
wxSize m_edit_size
Definition KBShortcutsDialog.hpp:81
TabCtrl * m_tabs
Definition KBShortcutsDialog.hpp:86
int m_row_text_width
Definition KBShortcutsDialog.hpp:83
std::vector< Page > m_pages
Definition KBShortcutsDialog.hpp:77
wxSimplebook * m_simplebook
Definition KBShortcutsDialog.hpp:87
wxPanel * create_page(wxWindow *parent, const Page &page)
Definition KBShortcutsDialog.cpp:221
void fill_pages()
Definition KBShortcutsDialog.cpp:150
Definition KBShortcutsDialog.hpp:57
@ NotChecked
Definition StateColor.hpp:23
@ Normal
Definition StateColor.hpp:16

References _L, Label::Body_14, create_page(), fill_pages(), Label::Head_14, m_buttons_width, m_edit_size, m_key_slot, m_pages, m_row_text_width, m_simplebook, m_tabs, StateColor::Normal, Slic3r::GUI::DPIAware< wxDialog >::normal_font(), and StateColor::NotChecked.

Here is the call graph for this function:

Member Function Documentation

◆ apply_bindings()

void Slic3r::GUI::KBShortcutsDialog::apply_bindings ( )
private
387{
388 const ShortcutRegistry& shortcuts = wxGetApp().shortcuts();
389 std::set<wxWindow*> pages;
390 for (const EditableRow& row : m_editable_rows) {
391 const int chord_width = set_chord_labels(row.modifiers, row.key, to_wx(shortcuts.binding(row.shortcut).display_parts()));
392 row.description->SetLabel(_(shortcut_info(row.shortcut).name));
393 row.description->Wrap(m_row_text_width - chord_width);
394 row.reset->Show(shortcuts.is_customized(row.shortcut));
395 pages.insert(row.key->GetParent());
396 }
397 for (wxWindow* page : pages)
398 page->Layout();
399 wxGetApp().on_shortcuts_changed();
400}
#define _(s)
Definition 3mf.cpp:306
std::vector< EditableRow > m_editable_rows
Definition KBShortcutsDialog.hpp:78
int set_chord_labels(wxStaticText *modifiers, wxStaticText *key, std::vector< wxString > parts)
Definition KBShortcutsDialog.cpp:402
Definition KBShortcutsDialog.hpp:64
std::vector< wxString > to_wx(const std::vector< std::string > &parts)
Definition KBShortcutsDialog.cpp:73
const ShortcutInfo & shortcut_info(Shortcut shortcut)
Definition Shortcuts.cpp:237
const char * name
Definition Shortcuts.hpp:61

References _, Slic3r::GUI::ShortcutRegistry::binding(), Slic3r::GUI::KeyChord::display_parts(), Slic3r::GUI::ShortcutRegistry::is_customized(), m_editable_rows, m_row_text_width, Slic3r::GUI::ShortcutInfo::name, set_chord_labels(), and Slic3r::GUI::shortcut_info().

Referenced by edit_shortcut(), and reset_shortcut().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ create_page()

wxPanel * Slic3r::GUI::KBShortcutsDialog::create_page ( wxWindow * parent,
const Page & page )
private
222{
223 wxPanel* main_page = new wxPanel(parent);
224 wxBoxSizer* main_sizer = new wxBoxSizer(wxVERTICAL);
225
226 wxScrolledWindow *scrollable_panel = new wxScrolledWindow(main_page);
227 wxGetApp().UpdateDarkUI(scrollable_panel);
228 const wxColour page_colour = StateColor::darkModeColorFor(*wxWHITE);
229 scrollable_panel->SetBackgroundColour(page_colour);
230 scrollable_panel->SetScrollRate(0, FromDIP(20));
231 const int page_width = FromDIP(PAGE_WIDTH);
232 scrollable_panel->SetInitialSize(wxSize(page_width, FromDIP(450)));
233
234 const int title_margin = FromDIP(TITLE_MARGIN);
235 const int row_margin = FromDIP(ROW_MARGIN);
236 const int gap = FromDIP(ROW_GAP);
237
238 wxBoxSizer* scrollable_panel_sizer = new wxBoxSizer(wxVERTICAL);
239
240 const wxColour note_colour = StateColor::darkModeColorFor(wxColour("#F8F8F8"));
241 const wxColour note_text = StateColor::darkModeColorFor(wxColour("#6B6B6A"));
242 StaticBox* note = new StaticBox(scrollable_panel);
243 note->SetCornerRadius(FromDIP(4));
244 note->SetBorderWidth(0);
245 note->SetBackgroundColor(note_colour);
246 note->SetBackgroundColour(note_colour);
247 auto note_icon = new wxStaticBitmap(note, wxID_ANY, ScalableBitmap(note, "help", 16).bmp());
248 auto note_text_ctrl = new wxStaticText(note, wxID_ANY, page.caption);
249 note_text_ctrl->SetFont(Label::Body_13);
250 note_text_ctrl->SetForegroundColour(note_text);
251 note_text_ctrl->SetBackgroundColour(note_colour);
252 note_text_ctrl->Wrap(page_width - 2 * title_margin - FromDIP(10 + 16 + 8 + 10));
253 wxBoxSizer* note_sizer = new wxBoxSizer(wxHORIZONTAL);
254 note_sizer->Add(note_icon, 0, wxALIGN_CENTRE_VERTICAL | wxLEFT, FromDIP(10));
255 note_sizer->Add(note_text_ctrl, 1, wxALIGN_CENTRE_VERTICAL | wxALL, FromDIP(8));
256 note->SetSizer(note_sizer);
257 scrollable_panel_sizer->Add(note, 0, wxEXPAND | wxLEFT | wxRIGHT | wxTOP, title_margin);
258
259 auto key_parts = [](const Row& row) {
260 return std::visit(overloaded{
261 [](Shortcut shortcut) { return to_wx(wxGetApp().shortcuts().binding(shortcut).display_parts()); },
262 [](const FixedKey& fixed) { return fixed.keys; },
263 [](const MouseAction& mouse) { return std::vector<wxString>{ mouse.button }; },
264 }, row.content);
265 };
266 auto description = [](const Row& row) {
267 return std::visit(overloaded{
268 [](Shortcut shortcut) { return _(shortcut_info(shortcut).name); },
269 [](const FixedKey& fixed) { return _(fixed.description); },
270 [](const MouseAction& mouse) { return _(mouse_action(mouse.preference)); },
271 }, row.content);
272 };
273 auto icon_button = [&](const char* icon, const wxString& tooltip) {
274 auto button = new ScalableButton(scrollable_panel, wxID_ANY, icon);
275 button->SetBackgroundColour(page_colour);
276 button->SetToolTip(tooltip);
277 return button;
278 };
279
280 std::optional<ShortcutSection> section;
281 for (const Row& row : page.rows) {
282 if (section != row.section) {
283 auto heading = new StaticLine(scrollable_panel, false, _(section_name(row.section)));
284 heading->SetFont(Label::Head_14);
285 heading->SetForegroundColour(DESIGN_GRAY900_COLOR);
286 wxBoxSizer* heading_sizer = new wxBoxSizer(wxHORIZONTAL);
287 heading_sizer->AddSpacer(title_margin);
288 heading_sizer->Add(heading, 1, wxEXPAND | wxTOP | wxBOTTOM, FromDIP(6));
289 heading_sizer->AddSpacer(title_margin);
290 scrollable_panel_sizer->Add(heading_sizer, 0, wxEXPAND | wxTOP, FromDIP(section.has_value() ? 10 : 6));
291 section = row.section;
292 }
293 auto desc = new wxStaticText(scrollable_panel, wxID_ANY, description(row));
294 desc->SetFont(Label::Body_14);
295 desc->SetForegroundColour(DESIGN_GRAY900_COLOR);
296 auto chord_label = [&](long style) {
297 auto label = new wxStaticText(scrollable_panel, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, style);
298 label->SetFont(Label::Head_14);
299 label->SetForegroundColour(DESIGN_GRAY900_COLOR);
300 return label;
301 };
302 wxStaticText* modifiers = chord_label(0);
303 wxStaticText* key = chord_label(wxALIGN_CENTRE_HORIZONTAL); // a single key is centred in its column
304 desc->Wrap(m_row_text_width - set_chord_labels(modifiers, key, key_parts(row)));
305
306 wxBoxSizer* buttons = new wxBoxSizer(wxHORIZONTAL);
307 if (const MouseAction* mouse = std::get_if<MouseAction>(&row.content)) {
308 auto settings = icon_button("settings", _L("Preferences"));
309 settings->Bind(wxEVT_BUTTON, [this, preference = mouse->preference](wxCommandEvent&) { open_mouse_preferences(preference); });
310 buttons->Add(settings, 0, wxALIGN_CENTRE_VERTICAL);
311 m_preference_rows.push_back({ mouse->preference, desc });
312 } else if (const Shortcut* editable = std::get_if<Shortcut>(&row.content)) {
313 const Shortcut shortcut = *editable;
314 auto change = icon_button("edit", _L("Edit"));
315 change->Bind(wxEVT_BUTTON, [this, shortcut](wxCommandEvent&) { edit_shortcut(shortcut); });
316 auto reset = icon_button("undo", _L("Reset"));
317 reset->Bind(wxEVT_BUTTON, [this, shortcut](wxCommandEvent&) { reset_shortcut(shortcut); });
318 reset->Show(wxGetApp().shortcuts().is_customized(shortcut));
319 buttons->Add(change, 0, wxALIGN_CENTRE_VERTICAL | wxRIGHT, FromDIP(6));
320 buttons->Add(reset, 0, wxALIGN_CENTRE_VERTICAL | wxRESERVE_SPACE_EVEN_IF_HIDDEN);
321 m_editable_rows.push_back({ shortcut, desc, modifiers, key, reset });
322 } else {
323 auto lock = new wxStaticBitmap(scrollable_panel, wxID_ANY, ScalableBitmap(scrollable_panel, "printer_status_lock", 16).bmp());
324 lock->SetToolTip(_L("Not customizable"));
325 buttons->Add((m_edit_size.x - lock->GetBestSize().x) / 2, m_edit_size.y); // centred under the edit icons, at their height
326 buttons->Add(lock, 0, wxALIGN_CENTRE_VERTICAL);
327 }
328 if (const int used = buttons->GetMinSize().x; used < m_buttons_width) // a box sizer recomputes its own min size, so pad it
329 buttons->AddSpacer(m_buttons_width - used);
330
331 wxBoxSizer* row_sizer = new wxBoxSizer(wxHORIZONTAL);
332 row_sizer->AddSpacer(row_margin);
333 row_sizer->Add(desc, 1, wxALIGN_CENTRE_VERTICAL);
334 row_sizer->AddSpacer(gap);
335 row_sizer->Add(modifiers, 0, wxALIGN_CENTRE_VERTICAL);
336 row_sizer->Add(key, 0, wxALIGN_CENTRE_VERTICAL);
337 row_sizer->Add(buttons, 0, wxALIGN_CENTRE_VERTICAL | wxLEFT, gap);
338 row_sizer->AddSpacer(title_margin);
339 scrollable_panel_sizer->Add(row_sizer, 0, wxEXPAND | wxTOP, FromDIP(4));
340 }
341 scrollable_panel_sizer->AddSpacer(title_margin);
342 scrollable_panel->SetSizer(scrollable_panel_sizer);
343
344 main_sizer->Add(scrollable_panel, 1, wxEXPAND);
345 main_page->SetSizer(main_sizer);
346
347 return main_page;
348}
#define DESIGN_GRAY900_COLOR
Definition ExportPresetBundleDialog.hpp:27
class WXDLLIMPEXP_FWD_CORE wxStaticText
Definition ProgressDialog.hpp:30
#define style
Definition WipeTowerDialog.cpp:101
static wxFont Body_13
Definition Label.hpp:54
std::vector< PreferenceRow > m_preference_rows
Definition KBShortcutsDialog.hpp:79
void reset_shortcut(Shortcut shortcut)
Definition KBShortcutsDialog.cpp:363
void edit_shortcut(Shortcut shortcut)
Definition KBShortcutsDialog.cpp:350
Definition KBShortcutsDialog.hpp:41
Definition KBShortcutsDialog.hpp:47
Definition KBShortcutsDialog.hpp:52
static wxColour darkModeColorFor(wxColour const &color)
Definition StateColor.cpp:219
void SetCornerRadius(double radius)
Definition StaticBox.cpp:62
void SetBorderWidth(int width)
Definition StaticBox.cpp:81
void SetBackgroundColor(StateColor const &color)
Definition StaticBox.cpp:102
const char * mouse_action(const char *preference)
Definition KBShortcutsDialog.cpp:58
Shortcut
Definition Shortcuts.hpp:25
const char * section_name(ShortcutSection section)
Definition Shortcuts.cpp:248
bool button(const IconManager::Icon &activ, const IconManager::Icon &hover, const IconManager::Icon &disable, bool disabled)
Use icon as button with 3 states activ hover and disabled.
Definition IconManager.cpp:418
@ lock
Definition GLGizmoEmboss.cpp:209

References _, _L, Label::Body_13, Label::Body_14, Slic3r::GUI::button(), Slic3r::GUI::KBShortcutsDialog::Page::caption, Slic3r::GUI::KBShortcutsDialog::Row::content, StateColor::darkModeColorFor(), DESIGN_GRAY900_COLOR, edit_shortcut(), Label::Head_14, m_buttons_width, m_edit_size, m_editable_rows, m_preference_rows, m_row_text_width, reset_shortcut(), Slic3r::GUI::KBShortcutsDialog::Page::rows, Slic3r::GUI::KBShortcutsDialog::Row::section, Slic3r::GUI::section_name(), set_chord_labels(), StaticBox::SetBackgroundColor(), StaticBox::SetBorderWidth(), StaticBox::SetCornerRadius(), Slic3r::GUI::shortcut_info(), style, and wxStaticText.

Referenced by KBShortcutsDialog().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ edit_shortcut()

void Slic3r::GUI::KBShortcutsDialog::edit_shortcut ( Shortcut shortcut)
private
351{
352 ShortcutCaptureDialog dlg(this, shortcut);
353 if (dlg.ShowModal() != wxID_OK)
354 return;
355 const wxString question = wxString::Format(_L("%s is assigned to %s. Reassign it to %s?"),
356 join_keys(to_wx(dlg.chord().display_parts())), shortcut_names(dlg.conflicts()), _(shortcut_info(shortcut).name));
357 if (!take_chord_from(shortcut, dlg.conflicts(), question))
358 return;
359 wxGetApp().shortcuts().bind(shortcut, dlg.chord());
361}
void apply_bindings()
Definition KBShortcutsDialog.cpp:386
bool take_chord_from(Shortcut shortcut, const std::vector< Shortcut > &conflicts, const wxString &question)
Definition KBShortcutsDialog.cpp:374
wxString join_keys(const std::vector< wxString > &parts)
Definition KBShortcutsDialog.cpp:89
wxString shortcut_names(const std::vector< Shortcut > &shortcuts)
Definition KBShortcutsDialog.cpp:44

References _, _L, apply_bindings(), Slic3r::GUI::ShortcutCaptureDialog::chord(), Slic3r::GUI::ShortcutCaptureDialog::conflicts(), Slic3r::GUI::KeyChord::display_parts(), Slic3r::GUI::shortcut_info(), Slic3r::GUI::DPIAware< P >::ShowModal(), and take_chord_from().

Referenced by create_page().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ em_unit()

int Slic3r::GUI::DPIAware< wxDialog >::em_unit ( ) const
inlineinherited
203{ return m_em_unit; }
Definition GUI_Utils.hpp:107

Referenced by Slic3r::GUI::AuxiliaryDialog::AuxiliaryDialog(), Slic3r::GUI::CopyrightsDialog::CopyrightsDialog(), Slic3r::GUI::DesignTextDialog::DesignTextDialog(), Slic3r::GUI::EditGCodeDialog::EditGCodeDialog(), Slic3r::GUI::FileArchiveDialog::FileArchiveDialog(), Slic3r::GUI::MsgNoUpdates::MsgNoUpdates(), Slic3r::GUI::MsgUpdateForced::MsgUpdateForced(), Slic3r::GUI::OAuthDialog::OAuthDialog(), Slic3r::GUI::ParamsDialog::ParamsDialog(), Slic3r::GUI::PhysicalPrinterDialog::PhysicalPrinterDialog(), Slic3r::GUI::SettingsDialog::SettingsDialog(), anonymous_namespace{3DPrinterOS.cpp}::TokenAuthDialog::TokenAuthDialog(), anonymous_namespace{3DPrinterOS.cpp}::UploadOptionsDialog::UploadOptionsDialog(), Slic3r::GUI::PublishSettingsDialog::add_row_ui(), Slic3r::GUI::DiffPresetDialog::complete_dialog_creation(), Slic3r::GUI::DiffPresetDialog::create_edit_sizer(), Slic3r::GUI::DiffPresetDialog::create_presets_sizer(), Slic3r::GUI::DiffPresetDialog::create_tree(), Slic3r::GUI::ElegooPrintHostSendDialog::init(), Slic3r::GUI::FlashforgePrintHostSendDialog::init(), Slic3r::GUI::PrintHostSendDialog::init(), Slic3r::GUI::AboutDialog::on_dpi_changed(), Slic3r::GUI::AuxiliaryDialog::on_dpi_changed(), Slic3r::GUI::BedShapeDialog::on_dpi_changed(), Slic3r::GUI::ConfigWizard::on_dpi_changed(), Slic3r::GUI::CopyrightsDialog::on_dpi_changed(), Slic3r::GUI::DiffPresetDialog::on_dpi_changed(), Slic3r::GUI::EditGCodeDialog::on_dpi_changed(), Slic3r::GUI::FileArchiveDialog::on_dpi_changed(), Slic3r::GUI::OAuthDialog::on_dpi_changed(), Slic3r::GUI::ObjectTableDialog::on_dpi_changed(), Slic3r::GUI::ParamsDialog::on_dpi_changed(), Slic3r::GUI::PhysicalPrinterDialog::on_dpi_changed(), Slic3r::GUI::PrintHostQueueDialog::on_dpi_changed(), Slic3r::GUI::PurgeModeDialog::on_dpi_changed(), Slic3r::GUI::SavePresetDialog::on_dpi_changed(), Slic3r::GUI::SendSystemInfoDialog::on_dpi_changed(), Slic3r::GUI::SettingsDialog::on_dpi_changed(), and Slic3r::GUI::UnsavedChangesDialog::on_dpi_changed().

Here is the caller graph for this function:

◆ enable_force_rescale()

void Slic3r::GUI::DPIAware< wxDialog >::enable_force_rescale ( )
inlineinherited
206{ m_force_rescale = true; }

◆ EndModal()

void Slic3r::GUI::DPIDialog::EndModal ( int retCode)
inlineoverrideinherited
306 {
307 if (!dialogStack.empty() && dialogStack.front() != this) {
308 // This is a bug in wxWidgets
309 // when the dialog is not top modal dialog, EndModal() just hide dialog without quit
310 // the modal event loop. And the modal event loop blocks us from bottom widgets.
311 // Solution: let user click it manually or close outside. FIXME
312 BOOST_LOG_TRIVIAL(warning) << "DPIAware::EndModal Error: dialogStack is not empty, but top dialog is not this one. retCode=" << retCode;
313 return;
314 }
315
316 return wxDialog::EndModal(retCode);
317 }
std::deque< wxDialog * > dialogStack
Definition GUI_Utils.cpp:549

References Slic3r::GUI::dialogStack.

Referenced by Slic3r::GUI::CloneDialog::CloneDialog(), Slic3r::GUI::ConfigWizard::ConfigWizard(), Slic3r::GUI::CreatePresetSuccessfulDialog::CreatePresetSuccessfulDialog(), Slic3r::GUI::DeleteConfirmDialog::DeleteConfirmDialog(), Slic3r::GUI::DesignVariableDialog::DesignVariableDialog(), Slic3r::GUI::anonymous_namespace{PrintHostDialogs.cpp}::FlashforgeSlotDialog::FlashforgeSlotDialog(), Slic3r::GUI::GuideFrame::GuideFrame(), Slic3r::GUI::InputIpAddressDialog::InputIpAddressDialog(), Slic3r::GUI::ManualNozzleCountDialog::ManualNozzleCountDialog(), Slic3r::GUI::MsgUpdateConfig::MsgUpdateConfig(), Slic3r::GUI::MsgUpdateForced::MsgUpdateForced(), Slic3r::GUI::MultiChoiceDialog::MultiChoiceDialog(), Slic3r::GUI::NetworkErrorDialog::NetworkErrorDialog(), Slic3r::GUI::NetworkPluginRestartDialog::NetworkPluginRestartDialog(), Slic3r::GUI::PartSkipConfirmDialog::PartSkipConfirmDialog(), Slic3r::GUI::PhysicalPrinterDialog::PhysicalPrinterDialog(), Slic3r::GUI::PlateNameEditDialog::PlateNameEditDialog(), Slic3r::GUI::PlateSettingsDialog::PlateSettingsDialog(), Slic3r::GUI::PublishSettingsDialog::PublishSettingsDialog(), Slic3r::GUI::SelectMachineDialog::SelectMachineDialog(), Slic3r::GUI::SendFailedConfirm::SendFailedConfirm(), Slic3r::GUI::SendSystemInfoDialog::SendSystemInfoDialog(), Slic3r::GUI::ShortcutCaptureDialog::ShortcutCaptureDialog(), Slic3r::GUI::SingleChoiceDialog::SingleChoiceDialog(), StepMeshDialog::StepMeshDialog(), Slic3r::GUI::SyncAmsInfoDialog::SyncAmsInfoDialog(), anonymous_namespace{3DPrinterOS.cpp}::TokenAuthDialog::TokenAuthDialog(), Slic3r::GUI::UpdatePluginDialog::UpdatePluginDialog(), Slic3r::GUI::UpdateVersionDialog::UpdateVersionDialog(), Slic3r::GUI::wgtDeviceNozzleRackUpgradeDlg::wgtDeviceNozzleRackUpgradeDlg(), Slic3r::GUI::SavePresetDialog::accept(), Slic3r::GUI::MsgDialog::add_button(), Slic3r::GUI::TipsDialog::add_button(), Slic3r::GUI::FilamentPickerDialog::BindEvents(), Slic3r::GUI::PluginPickerDialog::build_capability_ui(), Slic3r::GUI::BedShapeDialog::build_dialog(), Slic3r::GUI::PluginPickerDialog::build_ui(), Slic3r::GUI::UnsavedChangesDialog::close(), Slic3r::GUI::FileArchiveDialog::create_btn_sizer(), Slic3r::GUI::ColorDecomposeDialog::create_button_panel(), Slic3r::GUI::MixedFilamentDialog::create_button_panel(), Slic3r::GUI::CreateFilamentPresetDialog::create_dialog_buttons(), Slic3r::GUI::CreatePresetForPrinterDialog::create_dialog_buttons(), Slic3r::GUI::EditFilamentPresetDialog::create_dialog_buttons(), Slic3r::GUI::ExportConfigsDialog::create_dialog_buttons(), Slic3r::GUI::PreferencesDialog::create_item_language_combobox(), Slic3r::GUI::PreferencesDialog::create_item_region_combobox(), Slic3r::GUI::PreferencesDialog::create_items(), Slic3r::GUI::CreatePrinterPresetDialog::create_page1_dialog_buttons(), Slic3r::GUI::CreatePrinterPresetDialog::create_page2_dialog_buttons(), Slic3r::GUI::ExportConfigsDialog::data_init(), Slic3r::GUI::WebDialog::destroy_silently(), Slic3r::GUI::EditFilamentPresetDialog::edit_preset(), Slic3r::GUI::ConnectPrinterDialog::end_modal(), Slic3r::GUI::PrintHostSendDialog::EndModal(), Slic3r::GUI::ColorPickerDialog::finish(), Slic3r::GUI::WebDialog::finish(), Slic3r::GUI::Newer3mfVersionDialog::get_btn_sizer(), Slic3r::GUI::ScoreDialog::get_button_sizer(), Slic3r::GUI::WebViewHostDialog::handle_common_script_command(), Slic3r::GUI::ExportPresetBundleDialog::InitExportData(), Slic3r::GUI::SelectMachineDialog::navigate_to_timelapse_page(), Slic3r::GUI::BindMachineDialog::on_bind_success(), Slic3r::GUI::ConnectPrinterDialog::on_button_confirm(), Slic3r::GUI::RecenterDialog::on_button_confirm(), Slic3r::GUI::BindMachineDialog::on_cancel(), Slic3r::GUI::EditCalibrationHistoryDialog::on_cancel(), Slic3r::GUI::InputIpAddressDialog::on_cancel(), Slic3r::GUI::NewCalibrationHistoryDialog::on_cancel(), Slic3r::GUI::OAuthDialog::on_cancel(), Slic3r::GUI::PingCodeBindDialog::on_cancel(), Slic3r::GUI::SelectMachineDialog::on_cancel(), Slic3r::GUI::SendToPrinterDialog::on_cancel(), Slic3r::GUI::SyncAmsInfoDialog::on_cancel(), Slic3r::GUI::UnBindMachineDialog::on_cancel(), Slic3r::GUI::WebDialog::on_close_window(), Slic3r::GUI::NetworkPluginDownloadDialog::on_dont_ask(), Slic3r::GUI::NetworkPluginDownloadDialog::on_download(), Slic3r::GUI::EditDevNameDialog::on_edit_name(), Slic3r::GUI::ConfirmBeforeSendDialog::on_hide(), Slic3r::GUI::PrivacyUpdateDialog::on_hide(), Slic3r::GUI::ShortcutCaptureDialog::on_key(), Slic3r::GUI::TextureImportDialog::on_ok_clicked(), Slic3r::GUI::FileArchiveDialog::on_open_button(), Slic3r::GUI::NetworkPluginDownloadDialog::on_remind_later(), Slic3r::GUI::ProjectDropDialog::on_select_cancel(), Slic3r::GUI::SavePresetDialog::on_select_cancel(), Slic3r::GUI::ProjectDropDialog::on_select_ok(), Slic3r::GUI::SendMultiMachinePage::on_send(), Slic3r::GUI::NetworkPluginDownloadDialog::on_skip(), Slic3r::GUI::TextureImportDialog::on_skip_clicked(), Slic3r::GUI::NetworkPluginDownloadDialog::on_skip_version(), Slic3r::GUI::Cornering_Test_Dlg::on_start(), Slic3r::GUI::FlowRateCalibrationDialog::on_start(), Slic3r::GUI::Input_Shaping_Damp_Test_Dlg::on_start(), Slic3r::GUI::Input_Shaping_Freq_Test_Dlg::on_start(), Slic3r::GUI::MaxVolumetricSpeed_Test_Dlg::on_start(), Slic3r::GUI::PA_Calibration_Dlg::on_start(), Slic3r::GUI::Retraction_Test_Dlg::on_start(), Slic3r::GUI::Temp_Calibration_Dlg::on_start(), Slic3r::GUI::VFA_Test_Dlg::on_start(), Slic3r::GUI::CalibrationDialog::on_start_calibration(), Slic3r::GUI::UnBindMachineDialog::on_unbind_printer(), Slic3r::GUI::PartSkipDialog::OnApplyDialog(), anonymous_namespace{3DPrinterOS.cpp}::TokenAuthDialog::OnCancel(), Slic3r::GUI::AboutDialog::onCloseDialog(), Slic3r::GUI::CopyrightsDialog::onCloseDialog(), Slic3r::GUI::MultiNozzleSyncDialog::OnRackStatusReadingFinished(), Slic3r::GUI::GuideFrame::OnScriptMessage(), Slic3r::GUI::InputIpAddressDialog::OnTimer(), Slic3r::GUI::KBShortcutsDialog::open_mouse_preferences(), Slic3r::GUI::TroubleshootDialog::PackAll(), Slic3r::GUI::TroubleshootDialog::RebuildSystemProfiles(), Slic3r::GUI::SpeedDialWebDialog::run_action(), Slic3r::GUI::OAuthDialog::Show(), Slic3r::GUI::MultiNozzleSyncDialog::UpdateButton(), and Slic3r::GUI::CreatePrinterPresetDialog::validate_input_valid().

◆ fill_pages()

void Slic3r::GUI::KBShortcutsDialog::fill_pages ( )
private
151{
152 // A fixed row is listed in the section of the shortcuts it belongs with.
153 auto fixed = [](ShortcutSection section, std::vector<wxString> keys, const char* description) { return Row{ FixedKey{ std::move(keys), description }, section }; };
154 auto mouse = [](ShortcutSection section, const wxString& button, const char* preference) { return Row{ MouseAction{ button, preference }, section }; };
155 auto key = [](const std::string& key) { return _L_CONTEXT(key, "Keyboard Shortcut"); };
156 auto page = [this](const wxString& title, const wxString& caption, ShortcutContext context, std::vector<Row> fixed_rows) {
157 Page entry{ title, caption, context, {} };
158 for (Shortcut shortcut : shortcuts_in(context))
159 entry.rows.push_back({ shortcut, shortcut_section(shortcut) });
160 entry.rows.insert(entry.rows.end(), fixed_rows.begin(), fixed_rows.end());
161 std::stable_sort(entry.rows.begin(), entry.rows.end(), [](const Row& a, const Row& b) { return a.section < b.section; });
162 m_pages.push_back(std::move(entry));
163 };
164
165 const wxString ctrl = from_u8(KeyChord::modifier_name(wxMOD_CONTROL));
166 const wxString alt = from_u8(KeyChord::modifier_name(wxMOD_ALT));
167 const wxString shift = from_u8(KeyChord::modifier_name(wxMOD_SHIFT));
168 const wxString shift_ctrl = shift + "/" + ctrl; // either one
169 const wxString any_key = key(L_CONTEXT("Key", "Keyboard Shortcut")); // the key the row's shortcut is bound to
170 const wxString esc = key(L_CONTEXT("Esc", "Keyboard Shortcut"));
171 const wxString left_button = _L("Left mouse");
172 const wxString wheel = _L("Mouse wheel");
173 using Section = ShortcutSection;
174
175 if (wxGetApp().is_editor()) {
176 page(_L("Global"), _L("Available anywhere in the window."), ShortcutContext::Global, {
177 fixed(Section::SpeedDial, { alt, "1-9, 0" }, L("Run favorite 1 to 10")),
178 fixed(Section::SpeedDial, { ctrl, "B" }, L("Pin or unpin the selected action")),
179 // wx cycles notebook pages on Ctrl+Tab, which is Cmd+Tab on macOS and never arrives there.
180#ifndef __APPLE__
181 fixed(Section::Application, { ctrl, key(L_CONTEXT("Tab", "Keyboard Shortcut")) }, L("Switch to the next main tab")),
182#endif
183 });
184
185 page(_L("Prepare"), _L("Available while the 3D view on the Prepare tab has focus."), ShortcutContext::Plater, {
186 fixed(Section::Selection, { alt, left_button }, L("Select a part")),
187 fixed(Section::Selection, { ctrl, left_button }, L("Select multiple objects")),
188 fixed(Section::Selection, { shift, left_button }, L("Select objects by rectangle")),
189 fixed(Section::Selection, { esc }, L("Deselect All")),
190 fixed(Section::Objects, { "1-9" }, L("Keyboard 1-9: set filament for object/part")),
191 fixed(Section::Placement, { shift, any_key }, L("Movement step set to 1mm")),
192 fixed(Section::Placement, { ctrl, any_key }, L("Movement in camera space")),
193 mouse(Section::Camera, left_button, "left_mouse_drag_action"),
194 mouse(Section::Camera, _L("Middle mouse"), "middle_mouse_drag_action"),
195 mouse(Section::Camera, _L("Right mouse"), "right_mouse_drag_action"),
196 fixed(Section::Camera, { wheel }, L("Zoom View")),
197 fixed(Section::Display, { alt, wheel }, L("Move section plane")),
198 });
199
200 page(_L("Painting"), _L("Available while a painting gizmo is open: supports, seam, fuzzy skin or color painting."), ShortcutContext::Painting, {
201 fixed(Section::Gizmos, { esc }, L("Deselect All")),
202 fixed(Section::Gizmos, { shift, left_button }, L("Move: press to snap by 1mm")),
203 fixed(Section::PaintingTools, { ctrl, wheel }, L("Support/Color Painting: adjust pen radius")),
204 });
205
206 page(_L("Objects list"), _L("Available while the object list has focus."), ShortcutContext::ObjectList, {
207 fixed(Section::Selection, { esc }, L("Deselect All")),
208 fixed(Section::Objects, { "1-9" }, L("Set extruder number for the objects and parts")),
209 fixed(Section::Objects, { key(L_CONTEXT("Space", "Keyboard Shortcut")) }, L("Select the object/part and press space to change the name")),
210 fixed(Section::Objects, { _L("Mouse click") }, L("Select the object/part and mouse click to change the name")),
211 });
212 }
213
214 page(_L("Preview"), _L("Available while the 3D view on the Preview tab has focus."), ShortcutContext::Preview, {
215 fixed(Section::Sliders, { shift_ctrl, any_key }, L("Move slider 5x faster")),
216 fixed(Section::Sliders, { shift_ctrl, wheel }, L("Scroll slider 5x faster")),
217 fixed(Section::Display, { alt, wheel }, L("Move section plane")),
218 });
219}
#define L_CONTEXT(s, context)
Definition DesignOffer.hpp:17
#define L(s)
Definition ExtrusionEntity.cpp:25
std::vector< Row > rows
Definition KBShortcutsDialog.hpp:61
ShortcutSection
Definition Shortcuts.hpp:71
ShortcutSection shortcut_section(Shortcut shortcut)
Definition Shortcuts.cpp:239
ShortcutContext
Definition Shortcuts.hpp:21
@ Painting
Definition Shortcuts.hpp:21
@ Preview
Definition Shortcuts.hpp:21
@ ObjectList
Definition Shortcuts.hpp:21
@ Global
Definition Shortcuts.hpp:21
@ Plater
Definition Shortcuts.hpp:21
wxString from_u8(const std::string &str)
Definition GUI.cpp:544
std::vector< Shortcut > shortcuts_in(ShortcutContext context)
Definition Shortcuts.cpp:250
std::map< std::string, std::string > Section
Definition EmbossStyleManager.cpp:562
#define _L_CONTEXT(s, ctx)
Definition I18N.hpp:15
static std::string modifier_name(int modifier)
Definition KeyChord.cpp:317

References _L, _L_CONTEXT, Slic3r::GUI::button(), Slic3r::GUI::from_u8(), Slic3r::GUI::Global, L, L_CONTEXT, m_pages, Slic3r::GUI::KeyChord::modifier_name(), Slic3r::GUI::ObjectList, Slic3r::GUI::Painting, Slic3r::GUI::Plater, Slic3r::GUI::Preview, Slic3r::GUI::KBShortcutsDialog::Page::rows, Slic3r::GUI::shortcut_section(), and Slic3r::GUI::shortcuts_in().

Referenced by KBShortcutsDialog().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ force_rescale()

bool Slic3r::GUI::DPIAware< wxDialog >::force_rescale ( ) const
inlineinherited
201{ return m_force_rescale; }

◆ is_new_scale_factor()

bool Slic3r::GUI::DPIAware< wxDialog >::is_new_scale_factor ( ) const
inlineprivateinherited
262{ return fabs(m_scale_factor - m_prev_scale_factor) > 0.001; }

◆ normal_font()

◆ on_dpi_changed()

void Slic3r::GUI::KBShortcutsDialog::on_dpi_changed ( const wxRect & suggested_rect)
overrideprotectedvirtual

Implements Slic3r::GUI::DPIAware< wxDialog >.

143{
144 m_tabs->Rescale();
145 Layout();
146 Fit();
147 Refresh();
148}

References m_tabs.

◆ on_sys_color_changed()

◆ open_mouse_preferences()

void Slic3r::GUI::KBShortcutsDialog::open_mouse_preferences ( const char * preference)
private
416{
417 // Opened from Preferences > Control, the settings are right behind this dialog.
418 if (auto preferences = dynamic_cast<PreferencesDialog*>(GetParent()); preferences != nullptr) {
419 // Runs once this dialog has closed and the focus is back in Preferences.
420 preferences->CallAfter([preferences, preference] { preferences->select_tab(PreferencesTab::Control, preference); });
421 EndModal(wxID_OK);
422 return;
423 }
424 wxGetApp().open_preferences(PreferencesTab::Control, preference);
425 // A language change rebuilds the main frame, taking this dialog with it.
426 if (GetParent() != wxGetApp().mainframe) {
427 EndModal(wxID_CANCEL);
428 return;
429 }
430 for (const PreferenceRow& row : m_preference_rows)
431 row.description->SetLabel(_(mouse_action(row.preference)));
432}
void EndModal(int retCode) override
Definition GUI_Utils.hpp:305
Definition KBShortcutsDialog.hpp:72
@ Control
Definition Preferences.hpp:40

References _, Slic3r::GUI::Control, Slic3r::GUI::DPIDialog::EndModal(), and m_preference_rows.

Here is the call graph for this function:

◆ prev_scale_factor()

float Slic3r::GUI::DPIAware< wxDialog >::prev_scale_factor ( ) const
inlineinherited
196{ return m_prev_scale_factor; }

◆ rescale()

void Slic3r::GUI::DPIAware< wxDialog >::rescale ( const wxRect & suggested_rect)
inlineprivateinherited
265 {
266 this->Freeze();
267
268 m_force_rescale = false;
269
270 // set normal application font as a current window font
271 m_normal_font = this->GetFont();
272
274
275 // rescale missed controls sizes and images
277
278 this->Layout();
279 this->Thaw();
280
281 // reset previous scale factor from current scale factor value
283 }
virtual void on_dpi_changed(const wxRect &suggested_rect)=0
void update_em_unit()
Definition GUI_Utils.hpp:249

◆ reset_shortcut()

void Slic3r::GUI::KBShortcutsDialog::reset_shortcut ( Shortcut shortcut)
private
364{
365 const std::vector<Shortcut> conflicts = wxGetApp().shortcuts().conflicts(shortcut, shortcut_info(shortcut).default_chord);
366 const wxString question = wxString::Format(_L("The default %s is assigned to %s. Reassign it to %s?"),
367 join_keys(to_wx(shortcut_info(shortcut).default_chord.display_parts())), shortcut_names(conflicts), _(shortcut_info(shortcut).name));
368 if (!take_chord_from(shortcut, conflicts, question))
369 return;
370 wxGetApp().shortcuts().reset(shortcut);
372}

References _, _L, apply_bindings(), Slic3r::GUI::shortcut_info(), and take_chord_from().

Referenced by create_page().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ scale_factor()

float Slic3r::GUI::DPIAware< wxDialog >::scale_factor ( ) const
inlineinherited
195{ return m_scale_factor; }

◆ set_chord_labels()

int Slic3r::GUI::KBShortcutsDialog::set_chord_labels ( wxStaticText * modifiers,
wxStaticText * key,
std::vector< wxString > parts )
private
403{
404 const wxString last = parts.empty() ? wxString() : parts.back();
405 if (!parts.empty())
406 parts.pop_back();
407 modifiers->SetLabel(parts.empty() ? wxString() : join_keys(parts) + " + ");
408 modifiers->Show(!parts.empty());
409 key->SetLabel(last);
410 const int key_width = last.length() == 1 ? m_key_slot : key->GetBestSize().x;
411 key->SetMinSize(wxSize(key_width, -1));
412 return (parts.empty() ? 0 : modifiers->GetBestSize().x) + key_width;
413}

References m_key_slot, and wxStaticText.

Referenced by apply_bindings(), and create_page().

Here is the caller graph for this function:

◆ set_em_unit()

void Slic3r::GUI::DPIAware< wxDialog >::set_em_unit ( int v)
inlineinherited
200{ m_em_unit = v; }

◆ set_prev_scale_factor()

void Slic3r::GUI::DPIAware< wxDialog >::set_prev_scale_factor ( float v)
inlineinherited

◆ set_scale_factor()

void Slic3r::GUI::DPIAware< wxDialog >::set_scale_factor ( float v)
inlineinherited
198{ m_scale_factor = v; }

◆ ShowModal()

◆ take_chord_from()

bool Slic3r::GUI::KBShortcutsDialog::take_chord_from ( Shortcut shortcut,
const std::vector< Shortcut > & conflicts,
const wxString & question )
private
375{
376 if (conflicts.empty())
377 return true;
378 MessageDialog confirm(this, question, _(shortcut_info(shortcut).name), wxICON_QUESTION | wxOK | wxCANCEL);
379 if (confirm.ShowModal() != wxID_OK)
380 return false;
381 for (Shortcut other : conflicts)
382 wxGetApp().shortcuts().bind(other, KeyChord{});
383 return true;
384}

References _, Slic3r::GUI::shortcut_info(), and Slic3r::GUI::DPIAware< P >::ShowModal().

Referenced by edit_shortcut(), and reset_shortcut().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ update_em_unit()

void Slic3r::GUI::DPIAware< wxDialog >::update_em_unit ( )
inlineprivateinherited
250 {
251 // Linux specific issue : get_dpi_for_window(this) still doesn't responce to the Display's scale in new wxWidgets(3.1.3).
252 // So, calculate the m_em_unit value from the font size, as before
253#if !defined(__WXGTK__)
255#else
256 // initialize default width_unit according to the width of the one symbol ("m") of the currently active font of this window.
257 m_em_unit = std::max<size_t>(10, this->GetTextExtent("m").x - 1);
258#endif // __WXGTK__
259 }

Member Data Documentation

◆ m_buttons_width

int Slic3r::GUI::KBShortcutsDialog::m_buttons_width = 0
private

Referenced by KBShortcutsDialog(), and create_page().

◆ m_can_rescale

bool Slic3r::GUI::DPIAware< wxDialog >::m_can_rescale
privateinherited
235{ true };

◆ m_edit_size

wxSize Slic3r::GUI::KBShortcutsDialog::m_edit_size
private

Referenced by KBShortcutsDialog(), and create_page().

◆ m_editable_rows

std::vector<EditableRow> Slic3r::GUI::KBShortcutsDialog::m_editable_rows
private

Referenced by apply_bindings(), and create_page().

◆ m_em_unit

int Slic3r::GUI::DPIAware< wxDialog >::m_em_unit
privateinherited

◆ m_force_rescale

bool Slic3r::GUI::DPIAware< wxDialog >::m_force_rescale
privateinherited
236{ false };

◆ m_key_slot

int Slic3r::GUI::KBShortcutsDialog::m_key_slot = 0
private

◆ m_new_font_point_size

int Slic3r::GUI::DPIAware< wxDialog >::m_new_font_point_size
privateinherited

◆ m_normal_font

wxFont Slic3r::GUI::DPIAware< wxDialog >::m_normal_font
privateinherited

◆ m_pages

std::vector<Page> Slic3r::GUI::KBShortcutsDialog::m_pages
private

Referenced by KBShortcutsDialog(), and fill_pages().

◆ m_preference_rows

std::vector<PreferenceRow> Slic3r::GUI::KBShortcutsDialog::m_preference_rows
private

◆ m_prev_scale_factor

float Slic3r::GUI::DPIAware< wxDialog >::m_prev_scale_factor
privateinherited

◆ m_row_text_width

int Slic3r::GUI::KBShortcutsDialog::m_row_text_width = 0
private

◆ m_scale_factor

float Slic3r::GUI::DPIAware< wxDialog >::m_scale_factor
privateinherited

◆ m_simplebook

wxSimplebook* Slic3r::GUI::KBShortcutsDialog::m_simplebook
private

Referenced by KBShortcutsDialog().

◆ m_tabs

TabCtrl* Slic3r::GUI::KBShortcutsDialog::m_tabs
private

The documentation for this class was generated from the following files: