mirror of
https://git.mirrors.martin98.com/https://github.com/bambulab/BambuStudio.git
synced 2025-08-05 16:20:40 +08:00
ENH: support scroll while using AMS mapping
jira: [STUDIO-11895] Change-Id: I5cefd4e0cc6f5b7d6d1e1eaccfd2035bdd1a948e
This commit is contained in:
parent
6c07f1b9a2
commit
f2812461e3
@ -598,8 +598,8 @@ void MaterialSyncItem::set_material_index_str(std::string str) {
|
||||
m_material_index = str;
|
||||
}
|
||||
|
||||
AmsMapingPopup::AmsMapingPopup(wxWindow *parent, bool use_in_sync_dialog) :
|
||||
PopupWindow(parent, wxBORDER_NONE), m_use_in_sync_dialog(use_in_sync_dialog)
|
||||
AmsMapingPopup::AmsMapingPopup(wxWindow *parent, bool use_in_sync_dialog, bool enable_vscroll) :
|
||||
PopupWindow(parent, wxBORDER_NONE), m_use_in_sync_dialog(use_in_sync_dialog), m_enable_vscroll(enable_vscroll)
|
||||
{
|
||||
Bind(wxEVT_PAINT, &AmsMapingPopup::paintEvent, this);
|
||||
|
||||
@ -610,7 +610,12 @@ AmsMapingPopup::AmsMapingPopup(wxWindow *parent, bool use_in_sync_dialog) :
|
||||
|
||||
SetBackgroundColour(*wxWHITE);
|
||||
|
||||
m_sizer_main = new wxBoxSizer(wxVERTICAL);
|
||||
|
||||
m_scroll_area = new wxScrolledWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE);
|
||||
m_sizer_scroll_main = new wxBoxSizer(wxVERTICAL);
|
||||
m_scroll_area->SetSizer(m_sizer_scroll_main);
|
||||
if(m_enable_vscroll) { m_scroll_area->SetScrollRate(0, 20); }
|
||||
|
||||
m_sizer_ams = new wxBoxSizer(wxHORIZONTAL);
|
||||
m_sizer_ams_left = new wxBoxSizer(wxVERTICAL);
|
||||
m_sizer_ams_right = new wxBoxSizer(wxVERTICAL);
|
||||
@ -620,7 +625,7 @@ AmsMapingPopup::AmsMapingPopup(wxWindow *parent, bool use_in_sync_dialog) :
|
||||
m_sizer_ams_basket_right = new wxBoxSizer(wxVERTICAL);
|
||||
|
||||
|
||||
auto title_panel = new wxPanel(this, wxID_ANY);
|
||||
auto title_panel = new wxPanel(m_scroll_area, wxID_ANY);
|
||||
title_panel->SetBackgroundColour(StateColor::darkModeColorFor("#F1F1F1"));
|
||||
title_panel->SetSize(wxSize(-1, FromDIP(30)));
|
||||
title_panel->SetMinSize(wxSize(-1, FromDIP(30)));
|
||||
@ -638,9 +643,9 @@ AmsMapingPopup::AmsMapingPopup(wxWindow *parent, bool use_in_sync_dialog) :
|
||||
title_panel->Layout();
|
||||
title_panel->Fit();
|
||||
|
||||
m_left_marea_panel = new wxPanel(this);
|
||||
m_left_marea_panel = new wxPanel(m_scroll_area);
|
||||
m_left_marea_panel->SetName("left");
|
||||
m_right_marea_panel = new wxPanel(this);
|
||||
m_right_marea_panel = new wxPanel(m_scroll_area);
|
||||
m_right_marea_panel->SetName("right");
|
||||
m_left_first_text_panel = new wxPanel(m_left_marea_panel);
|
||||
m_right_first_text_panel = new wxPanel(m_right_marea_panel);
|
||||
@ -728,11 +733,14 @@ AmsMapingPopup::AmsMapingPopup(wxWindow *parent, bool use_in_sync_dialog) :
|
||||
m_sizer_ams->Add(0, 0, 0, wxEXPAND, FromDIP(15));
|
||||
m_sizer_ams->Add(m_right_marea_panel, 1, wxEXPAND, FromDIP(0));
|
||||
|
||||
m_sizer_main->Add(title_panel, 0, wxEXPAND | wxALL, FromDIP(2));
|
||||
m_sizer_main->Add(m_sizer_ams, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(14));
|
||||
m_sizer_main->Add( 0, 0, 0, wxTOP, FromDIP(14));
|
||||
m_sizer_scroll_main->Add(title_panel, 0, wxEXPAND | wxALL, FromDIP(2));
|
||||
m_sizer_scroll_main->Add(m_sizer_ams, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(14));
|
||||
m_sizer_scroll_main->Add( 0, 0, 0, wxTOP, FromDIP(14));
|
||||
|
||||
SetSizer(m_sizer_main);
|
||||
|
||||
wxBoxSizer* main_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
main_sizer->Add(m_scroll_area, 1, wxEXPAND | wxALL, FromDIP(0));
|
||||
SetSizer(main_sizer);
|
||||
Layout();
|
||||
Fit();
|
||||
|
||||
@ -1231,6 +1239,22 @@ void AmsMapingPopup::update(MachineObject* obj, const std::vector<FilamentInfo>&
|
||||
} else {
|
||||
m_right_split_ams_sizer->Show(false);
|
||||
}
|
||||
|
||||
if (m_enable_vscroll) {
|
||||
wxSize new_size = m_scroll_area->GetSizer()->CalcMin();
|
||||
new_size.SetWidth(-1);
|
||||
if (new_size.GetHeight() > FromDIP(400))
|
||||
{
|
||||
new_size.SetHeight(FromDIP(400));
|
||||
}
|
||||
|
||||
if (m_scroll_area->GetSize() != new_size)
|
||||
{
|
||||
m_scroll_area->SetMaxSize(new_size);
|
||||
m_scroll_area->SetMinSize(new_size);
|
||||
}
|
||||
}
|
||||
|
||||
Layout();
|
||||
Fit();
|
||||
Refresh();
|
||||
|
@ -210,8 +210,11 @@ class AmsMapingPopup : public PopupWindow
|
||||
bool m_ext_mapping_filatype_check = true;
|
||||
wxStaticText* m_title_text{ nullptr };
|
||||
|
||||
bool m_enable_vscroll = false;/*STUDIO-11895*/
|
||||
wxScrolledWindow* m_scroll_area{ nullptr };
|
||||
|
||||
public:
|
||||
AmsMapingPopup(wxWindow *parent,bool use_in_sync_dialog = false);
|
||||
AmsMapingPopup(wxWindow *parent,bool use_in_sync_dialog = false, bool enable_vscroll = false);
|
||||
~AmsMapingPopup() {};
|
||||
|
||||
MaterialItem* m_parent_item{ nullptr };
|
||||
@ -227,7 +230,7 @@ public:
|
||||
int m_current_filament_id;
|
||||
ShowType m_show_type{ShowType::RIGHT};
|
||||
std::string m_tag_material;
|
||||
wxBoxSizer *m_sizer_main{nullptr};
|
||||
wxBoxSizer *m_sizer_scroll_main{nullptr};
|
||||
wxBoxSizer *m_sizer_ams{nullptr};
|
||||
wxBoxSizer *m_sizer_ams_left{nullptr};
|
||||
wxBoxSizer *m_sizer_ams_right{nullptr};
|
||||
|
@ -73,7 +73,7 @@ void SelectMachineDialog::init_machine_bed_types()
|
||||
SelectMachineDialog::SelectMachineDialog(Plater *plater)
|
||||
: DPIDialog(static_cast<wxWindow *>(wxGetApp().mainframe), wxID_ANY, _L("Send print job"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX)
|
||||
, m_plater(plater), m_export_3mf_cancel(false)
|
||||
, m_mapping_popup(AmsMapingPopup(this))
|
||||
, m_mapping_popup(AmsMapingPopup(this, false, true))
|
||||
, m_mapping_tip_popup(AmsMapingTipPopup(this))
|
||||
, m_mapping_tutorial_popup(AmsTutorialPopup(this))
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user