Fix of tooltips on OSX showing on the first page of a parameter tab.
This commit is contained in:
parent
645cc65d2b
commit
5f1f7dcbed
@ -110,6 +110,10 @@ sub _init_tabpanel {
|
|||||||
EVT_NOTEBOOK_PAGE_CHANGED($self, $self->{tabpanel}, sub {
|
EVT_NOTEBOOK_PAGE_CHANGED($self, $self->{tabpanel}, sub {
|
||||||
my $panel = $self->{tabpanel}->GetCurrentPage;
|
my $panel = $self->{tabpanel}->GetCurrentPage;
|
||||||
$panel->OnActivate if $panel->can('OnActivate');
|
$panel->OnActivate if $panel->can('OnActivate');
|
||||||
|
|
||||||
|
for my $tab_name (qw(print filament printer)) {
|
||||||
|
Slic3r::GUI::get_preset_tab("$tab_name")->OnActivate if ("$tab_name" eq $panel->GetName);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!$self->{no_plater}) {
|
if (!$self->{no_plater}) {
|
||||||
|
@ -886,9 +886,9 @@ const wxString& ConfigWizard::name()
|
|||||||
{
|
{
|
||||||
// A different naming convention is used for the Wizard on Windows vs. OSX & GTK.
|
// A different naming convention is used for the Wizard on Windows vs. OSX & GTK.
|
||||||
#if WIN32
|
#if WIN32
|
||||||
static const wxString config_wizard_name = _(L("Configuration Wizard"));
|
static const wxString config_wizard_name = L("Configuration Wizard");
|
||||||
#else
|
#else
|
||||||
static const wxString config_wizard_name = _(L("Configuration Assistant"));
|
static const wxString config_wizard_name = L("Configuration Assistant");
|
||||||
#endif
|
#endif
|
||||||
return config_wizard_name;
|
return config_wizard_name;
|
||||||
}
|
}
|
||||||
|
@ -317,9 +317,10 @@ void add_config_menu(wxMenuBar *menu, int event_preferences_changed, int event_l
|
|||||||
auto local_menu = new wxMenu();
|
auto local_menu = new wxMenu();
|
||||||
wxWindowID config_id_base = wxWindow::NewControlId((int)ConfigMenuCnt);
|
wxWindowID config_id_base = wxWindow::NewControlId((int)ConfigMenuCnt);
|
||||||
|
|
||||||
const auto config_wizard_tooltip = wxString::Format(_(L("Run %s")), ConfigWizard::name());
|
auto config_wizard_name = _(ConfigWizard::name().wx_str());
|
||||||
|
const auto config_wizard_tooltip = wxString::Format(_(L("Run %s")), config_wizard_name);
|
||||||
// Cmd+, is standard on OS X - what about other operating systems?
|
// Cmd+, is standard on OS X - what about other operating systems?
|
||||||
local_menu->Append(config_id_base + ConfigMenuWizard, ConfigWizard::name() + dots, config_wizard_tooltip);
|
local_menu->Append(config_id_base + ConfigMenuWizard, config_wizard_name + dots, config_wizard_tooltip);
|
||||||
local_menu->Append(config_id_base + ConfigMenuSnapshots, _(L("Configuration Snapshots"))+dots, _(L("Inspect / activate configuration snapshots")));
|
local_menu->Append(config_id_base + ConfigMenuSnapshots, _(L("Configuration Snapshots"))+dots, _(L("Inspect / activate configuration snapshots")));
|
||||||
local_menu->Append(config_id_base + ConfigMenuTakeSnapshot, _(L("Take Configuration Snapshot")), _(L("Capture a configuration snapshot")));
|
local_menu->Append(config_id_base + ConfigMenuTakeSnapshot, _(L("Take Configuration Snapshot")), _(L("Capture a configuration snapshot")));
|
||||||
// local_menu->Append(config_id_base + ConfigMenuUpdate, _(L("Check for updates")), _(L("Check for configuration updates")));
|
// local_menu->Append(config_id_base + ConfigMenuUpdate, _(L("Check for updates")), _(L("Check for configuration updates")));
|
||||||
|
@ -47,66 +47,32 @@ void Tab::create_preset_tab(PresetBundle *preset_bundle)
|
|||||||
|
|
||||||
// preset chooser
|
// preset chooser
|
||||||
m_presets_choice = new wxBitmapComboBox(panel, wxID_ANY, "", wxDefaultPosition, wxSize(270, -1), 0, 0,wxCB_READONLY);
|
m_presets_choice = new wxBitmapComboBox(panel, wxID_ANY, "", wxDefaultPosition, wxSize(270, -1), 0, 0,wxCB_READONLY);
|
||||||
/*
|
|
||||||
m_cc_presets_choice = new wxComboCtrl(panel, wxID_ANY, L(""), wxDefaultPosition, wxDefaultSize, wxCB_READONLY);
|
|
||||||
wxDataViewTreeCtrlComboPopup* popup = new wxDataViewTreeCtrlComboPopup;
|
|
||||||
if (popup != nullptr)
|
|
||||||
{
|
|
||||||
// FIXME If the following line is removed, the combo box popup list will not react to mouse clicks.
|
|
||||||
// On the other side, with this line the combo box popup cannot be closed by clicking on the combo button on Windows 10.
|
|
||||||
// m_cc_presets_choice->UseAltPopupWindow();
|
|
||||||
|
|
||||||
// m_cc_presets_choice->EnablePopupAnimation(false);
|
|
||||||
m_cc_presets_choice->SetPopupControl(popup);
|
|
||||||
popup->SetStringValue(from_u8("Text1"));
|
|
||||||
|
|
||||||
popup->Bind(wxEVT_DATAVIEW_SELECTION_CHANGED, [this, popup](wxCommandEvent& evt)
|
|
||||||
{
|
|
||||||
auto selected = popup->GetItemText(popup->GetSelection());
|
|
||||||
if (selected != _(L("System presets")) && selected != _(L("Default presets")))
|
|
||||||
{
|
|
||||||
m_cc_presets_choice->SetText(selected);
|
|
||||||
std::string selected_string = selected.ToUTF8().data();
|
|
||||||
#ifdef __APPLE__
|
|
||||||
#else
|
|
||||||
select_preset(selected_string);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// popup->Bind(wxEVT_KEY_DOWN, [popup](wxKeyEvent& evt) { popup->OnKeyEvent(evt); });
|
|
||||||
// popup->Bind(wxEVT_KEY_UP, [popup](wxKeyEvent& evt) { popup->OnKeyEvent(evt); });
|
|
||||||
|
|
||||||
auto icons = new wxImageList(16, 16, true, 1);
|
|
||||||
popup->SetImageList(icons);
|
|
||||||
icons->Add(*new wxIcon(from_u8(Slic3r::var("flag-green-icon.png")), wxBITMAP_TYPE_PNG));
|
|
||||||
icons->Add(*new wxIcon(from_u8(Slic3r::var("flag-red-icon.png")), wxBITMAP_TYPE_PNG));
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
auto color = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW);
|
auto color = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW);
|
||||||
|
|
||||||
//buttons
|
//buttons
|
||||||
|
m_btn_panel = new wxPanel(panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBK_LEFT | wxTAB_TRAVERSAL);
|
||||||
|
|
||||||
wxBitmap bmpMenu;
|
wxBitmap bmpMenu;
|
||||||
bmpMenu = wxBitmap(from_u8(Slic3r::var("disk.png")), wxBITMAP_TYPE_PNG);
|
bmpMenu = wxBitmap(from_u8(Slic3r::var("disk.png")), wxBITMAP_TYPE_PNG);
|
||||||
m_btn_save_preset = new wxBitmapButton(panel, wxID_ANY, bmpMenu, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE);
|
m_btn_save_preset = new wxBitmapButton(m_btn_panel, wxID_ANY, bmpMenu, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE);
|
||||||
if (wxMSW) m_btn_save_preset->SetBackgroundColour(color);
|
if (wxMSW) m_btn_save_preset->SetBackgroundColour(color);
|
||||||
bmpMenu = wxBitmap(from_u8(Slic3r::var("delete.png")), wxBITMAP_TYPE_PNG);
|
bmpMenu = wxBitmap(from_u8(Slic3r::var("delete.png")), wxBITMAP_TYPE_PNG);
|
||||||
m_btn_delete_preset = new wxBitmapButton(panel, wxID_ANY, bmpMenu, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE);
|
m_btn_delete_preset = new wxBitmapButton(m_btn_panel, wxID_ANY, bmpMenu, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE);
|
||||||
if (wxMSW) m_btn_delete_preset->SetBackgroundColour(color);
|
if (wxMSW) m_btn_delete_preset->SetBackgroundColour(color);
|
||||||
|
|
||||||
m_show_incompatible_presets = false;
|
m_show_incompatible_presets = false;
|
||||||
m_bmp_show_incompatible_presets.LoadFile(from_u8(Slic3r::var("flag-red-icon.png")), wxBITMAP_TYPE_PNG);
|
m_bmp_show_incompatible_presets.LoadFile(from_u8(Slic3r::var("flag-red-icon.png")), wxBITMAP_TYPE_PNG);
|
||||||
m_bmp_hide_incompatible_presets.LoadFile(from_u8(Slic3r::var("flag-green-icon.png")), wxBITMAP_TYPE_PNG);
|
m_bmp_hide_incompatible_presets.LoadFile(from_u8(Slic3r::var("flag-green-icon.png")), wxBITMAP_TYPE_PNG);
|
||||||
m_btn_hide_incompatible_presets = new wxBitmapButton(panel, wxID_ANY, m_bmp_hide_incompatible_presets, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE);
|
m_btn_hide_incompatible_presets = new wxBitmapButton(m_btn_panel, wxID_ANY, m_bmp_hide_incompatible_presets, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE);
|
||||||
if (wxMSW) m_btn_hide_incompatible_presets->SetBackgroundColour(color);
|
if (wxMSW) m_btn_hide_incompatible_presets->SetBackgroundColour(color);
|
||||||
|
|
||||||
m_btn_save_preset->SetToolTip(_(L("Save current ")) + m_title);
|
m_btn_save_preset->SetToolTip(_(L("Save current ")) + m_title);
|
||||||
m_btn_delete_preset->SetToolTip(_(L("Delete this preset")));
|
m_btn_delete_preset->SetToolTip(_(L("Delete this preset")));
|
||||||
m_btn_delete_preset->Disable();
|
m_btn_delete_preset->Disable();
|
||||||
|
|
||||||
m_undo_btn = new wxButton(panel, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER);
|
m_undo_btn = new wxButton(m_btn_panel, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER);
|
||||||
m_undo_to_sys_btn = new wxButton(panel, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER);
|
m_undo_to_sys_btn = new wxButton(m_btn_panel, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER);
|
||||||
m_question_btn = new wxButton(panel, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER);
|
m_question_btn = new wxButton(m_btn_panel, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER);
|
||||||
if (wxMSW) {
|
if (wxMSW) {
|
||||||
m_undo_btn->SetBackgroundColour(color);
|
m_undo_btn->SetBackgroundColour(color);
|
||||||
m_undo_to_sys_btn->SetBackgroundColour(color);
|
m_undo_to_sys_btn->SetBackgroundColour(color);
|
||||||
@ -153,57 +119,32 @@ void Tab::create_preset_tab(PresetBundle *preset_bundle)
|
|||||||
m_modified_label_clr = get_label_clr_modified();
|
m_modified_label_clr = get_label_clr_modified();
|
||||||
m_default_text_clr = get_label_clr_default();
|
m_default_text_clr = get_label_clr_default();
|
||||||
|
|
||||||
|
auto btn_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
|
m_btn_panel->SetSizer(btn_sizer);
|
||||||
|
m_btn_panel->Layout();
|
||||||
|
|
||||||
|
btn_sizer->Add(m_btn_save_preset, 0, wxALIGN_CENTER_VERTICAL);
|
||||||
|
btn_sizer->AddSpacer(4);
|
||||||
|
btn_sizer->Add(m_btn_delete_preset, 0, wxALIGN_CENTER_VERTICAL);
|
||||||
|
btn_sizer->AddSpacer(16);
|
||||||
|
btn_sizer->Add(m_btn_hide_incompatible_presets, 0, wxALIGN_CENTER_VERTICAL);
|
||||||
|
btn_sizer->AddSpacer(64);
|
||||||
|
btn_sizer->Add(m_undo_to_sys_btn, 0, wxALIGN_CENTER_VERTICAL);
|
||||||
|
btn_sizer->Add(m_undo_btn, 0, wxALIGN_CENTER_VERTICAL);
|
||||||
|
btn_sizer->AddSpacer(32);
|
||||||
|
btn_sizer->Add(m_question_btn, 0, wxALIGN_CENTER_VERTICAL);
|
||||||
|
|
||||||
m_hsizer = new wxBoxSizer(wxHORIZONTAL);
|
m_hsizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
sizer->Add(m_hsizer, 0, wxBOTTOM, 3);
|
sizer->Add(m_hsizer, 0, wxBOTTOM, 3);
|
||||||
m_hsizer->Add(m_presets_choice, 1, wxLEFT | wxRIGHT | wxTOP | wxALIGN_CENTER_VERTICAL, 3);
|
m_hsizer->Add(m_presets_choice, 1, wxLEFT | wxRIGHT | wxTOP | wxALIGN_CENTER_VERTICAL, 3);
|
||||||
m_hsizer->AddSpacer(4);
|
m_hsizer->AddSpacer(4);
|
||||||
m_hsizer->Add(m_btn_save_preset, 0, wxALIGN_CENTER_VERTICAL);
|
m_hsizer->Add(m_btn_panel, 0, wxALIGN_CENTER_VERTICAL);
|
||||||
m_hsizer->AddSpacer(4);
|
|
||||||
m_hsizer->Add(m_btn_delete_preset, 0, wxALIGN_CENTER_VERTICAL);
|
|
||||||
m_hsizer->AddSpacer(16);
|
|
||||||
m_hsizer->Add(m_btn_hide_incompatible_presets, 0, wxALIGN_CENTER_VERTICAL);
|
|
||||||
m_hsizer->AddSpacer(64);
|
|
||||||
m_hsizer->Add(m_undo_to_sys_btn, 0, wxALIGN_CENTER_VERTICAL);
|
|
||||||
m_hsizer->Add(m_undo_btn, 0, wxALIGN_CENTER_VERTICAL);
|
|
||||||
m_hsizer->AddSpacer(32);
|
|
||||||
m_hsizer->Add(m_question_btn, 0, wxALIGN_CENTER_VERTICAL);
|
|
||||||
// m_hsizer->Add(m_cc_presets_choice, 1, wxLEFT | wxRIGHT | wxTOP | wxALIGN_CENTER_VERTICAL, 3);
|
|
||||||
|
|
||||||
//Horizontal sizer to hold the tree and the selected page.
|
//Horizontal sizer to hold the tree and the selected page.
|
||||||
m_hsizer = new wxBoxSizer(wxHORIZONTAL);
|
m_hsizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
sizer->Add(m_hsizer, 1, wxEXPAND, 0);
|
sizer->Add(m_hsizer, 1, wxEXPAND, 0);
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
|
|
||||||
//temporary left vertical sizer
|
|
||||||
m_left_sizer = new wxBoxSizer(wxVERTICAL);
|
|
||||||
m_hsizer->Add(m_left_sizer, 0, wxEXPAND | wxLEFT | wxTOP | wxBOTTOM, 3);
|
|
||||||
|
|
||||||
// tree
|
|
||||||
m_presetctrl = new wxDataViewTreeCtrl(panel, wxID_ANY, wxDefaultPosition, wxSize(200, -1), wxDV_NO_HEADER);
|
|
||||||
m_left_sizer->Add(m_presetctrl, 1, wxEXPAND);
|
|
||||||
m_preset_icons = new wxImageList(16, 16, true, 1);
|
|
||||||
m_presetctrl->SetImageList(m_preset_icons);
|
|
||||||
m_preset_icons->Add(*new wxIcon(from_u8(Slic3r::var("flag-green-icon.png")), wxBITMAP_TYPE_PNG));
|
|
||||||
m_preset_icons->Add(*new wxIcon(from_u8(Slic3r::var("flag-red-icon.png")), wxBITMAP_TYPE_PNG));
|
|
||||||
|
|
||||||
m_presetctrl->Bind(wxEVT_DATAVIEW_SELECTION_CHANGED, [this](wxCommandEvent& evt)
|
|
||||||
{
|
|
||||||
auto selected = m_presetctrl->GetItemText(m_presetctrl->GetSelection());
|
|
||||||
if (selected != _(L("System presets")) && selected != _(L("Default presets")))
|
|
||||||
{
|
|
||||||
std::string selected_string = selected.ToUTF8().data();
|
|
||||||
#ifdef __APPLE__
|
|
||||||
#else
|
|
||||||
select_preset(selected_string);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
//left vertical sizer
|
//left vertical sizer
|
||||||
m_left_sizer = new wxBoxSizer(wxVERTICAL);
|
m_left_sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
m_hsizer->Add(m_left_sizer, 0, wxEXPAND | wxLEFT | wxTOP | wxBOTTOM, 3);
|
m_hsizer->Add(m_left_sizer, 0, wxEXPAND | wxLEFT | wxTOP | wxBOTTOM, 3);
|
||||||
@ -290,6 +231,28 @@ PageShp Tab::add_options_page(const wxString& title, const std::string& icon, bo
|
|||||||
return page;
|
return page;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Tab::OnActivate()
|
||||||
|
{
|
||||||
|
#ifdef __WXOSX__
|
||||||
|
wxWindowUpdateLocker noUpdates(this);
|
||||||
|
|
||||||
|
m_btn_panel->Fit();
|
||||||
|
|
||||||
|
Page* page = nullptr;
|
||||||
|
auto selection = m_treectrl->GetItemText(m_treectrl->GetSelection());
|
||||||
|
for (auto p : m_pages)
|
||||||
|
if (p->title() == selection)
|
||||||
|
{
|
||||||
|
page = p.get();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (page == nullptr) return;
|
||||||
|
page->Fit();
|
||||||
|
m_hsizer->Layout();
|
||||||
|
Refresh();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
void Tab::update_labels_colour()
|
void Tab::update_labels_colour()
|
||||||
{
|
{
|
||||||
Freeze();
|
Freeze();
|
||||||
@ -1246,6 +1209,7 @@ void TabPrint::update()
|
|||||||
|
|
||||||
void TabPrint::OnActivate()
|
void TabPrint::OnActivate()
|
||||||
{
|
{
|
||||||
|
Tab::OnActivate();
|
||||||
m_recommended_thin_wall_thickness_description_line->SetText(
|
m_recommended_thin_wall_thickness_description_line->SetText(
|
||||||
from_u8(PresetHints::recommended_thin_wall_thickness(*m_preset_bundle)));
|
from_u8(PresetHints::recommended_thin_wall_thickness(*m_preset_bundle)));
|
||||||
}
|
}
|
||||||
@ -1404,6 +1368,7 @@ void TabFilament::update()
|
|||||||
|
|
||||||
void TabFilament::OnActivate()
|
void TabFilament::OnActivate()
|
||||||
{
|
{
|
||||||
|
Tab::OnActivate();
|
||||||
m_volumetric_speed_description_line->SetText(from_u8(PresetHints::maximum_volumetric_flow_description(*m_preset_bundle)));
|
m_volumetric_speed_description_line->SetText(from_u8(PresetHints::maximum_volumetric_flow_description(*m_preset_bundle)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2086,6 +2051,7 @@ void Tab::OnTreeSelChange(wxTreeEvent& event)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
page->Show();
|
page->Show();
|
||||||
|
page->Fit();
|
||||||
m_hsizer->Layout();
|
m_hsizer->Layout();
|
||||||
Refresh();
|
Refresh();
|
||||||
|
|
||||||
|
@ -119,6 +119,8 @@ protected:
|
|||||||
wxButton* m_undo_to_sys_btn;
|
wxButton* m_undo_to_sys_btn;
|
||||||
wxButton* m_question_btn;
|
wxButton* m_question_btn;
|
||||||
|
|
||||||
|
wxPanel* m_btn_panel;
|
||||||
|
|
||||||
wxComboCtrl* m_cc_presets_choice;
|
wxComboCtrl* m_cc_presets_choice;
|
||||||
wxDataViewTreeCtrl* m_presetctrl;
|
wxDataViewTreeCtrl* m_presetctrl;
|
||||||
wxImageList* m_preset_icons;
|
wxImageList* m_preset_icons;
|
||||||
@ -198,7 +200,7 @@ public:
|
|||||||
Tab() {}
|
Tab() {}
|
||||||
Tab(wxNotebook* parent, const wxString& title, const char* name, bool no_controller) :
|
Tab(wxNotebook* parent, const wxString& title, const char* name, bool no_controller) :
|
||||||
m_parent(parent), m_title(title), m_name(name), m_no_controller(no_controller) {
|
m_parent(parent), m_title(title), m_name(name), m_no_controller(no_controller) {
|
||||||
Create(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBK_LEFT | wxTAB_TRAVERSAL);
|
Create(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBK_LEFT | wxTAB_TRAVERSAL, name);
|
||||||
get_tabs_list().push_back(this);
|
get_tabs_list().push_back(this);
|
||||||
}
|
}
|
||||||
~Tab(){
|
~Tab(){
|
||||||
@ -242,7 +244,7 @@ public:
|
|||||||
|
|
||||||
PageShp add_options_page(const wxString& title, const std::string& icon, bool is_extruder_pages = false);
|
PageShp add_options_page(const wxString& title, const std::string& icon, bool is_extruder_pages = false);
|
||||||
|
|
||||||
virtual void OnActivate(){}
|
virtual void OnActivate();
|
||||||
virtual void on_preset_loaded(){}
|
virtual void on_preset_loaded(){}
|
||||||
virtual void build() = 0;
|
virtual void build() = 0;
|
||||||
virtual void update() = 0;
|
virtual void update() = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user