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

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

Inheritance diagram for Slic3r::GUI::AmsItem:
Collaboration diagram for Slic3r::GUI::AmsItem:

Public Member Functions

 AmsItem (wxWindow *parent, AMSinfo info, AMSModel model, AMSPanelPos pos)
 ~AmsItem ()
void UpdateInfo (AMSinfo info)
void create (wxWindow *parent)
void AddCan (Caninfo caninfo, int canindex, int maxcan, wxBoxSizer *sizer)
void AddLiteCan (Caninfo caninfo, int canindex, wxGridSizer *sizer)
void SetDefSelectCan ()
void SelectCan (std::string canid)
void PlayRridLoading (wxString canid)
void StopRridLoading (wxString canid)
void msw_rescale ()
bool ShowRoad (bool show)
void show_sn_value (bool show)
void SetAmsStepExtra (wxString canid, AMSPassRoadType type, AMSPassRoadSTEP step)
void SetAmsStep (std::string amsid, std::string canid, AMSPassRoadType type, AMSPassRoadSTEP step)
void SetAmsStep (std::string can_id)
void paintEvent (wxPaintEvent &evt)
void render (wxDC &dc)
void doRender (wxDC &dc)
void RenderLiteRoad (wxDC &dc, wxSize size)
wxColour GetTagColr (wxString canid)
std::string GetCurrentCan ()
AMSinfo get_ams_info () const
std::string get_ams_id () const
AMSModel get_ams_model () const
AMSModelOriginType get_ext_type () const
AMSExtImage * get_ext_image () const
size_t get_can_count () const
std::map< std::string, AMSLib * > get_can_lib_list () const
int get_selection () const
void set_selection (int selection)
AMSPanelPos get_panel_pos () const
int get_nozzle_id () const
bool routes_to_main_extruder () const

Private Attributes

ScalableBitmap m_bitmap_extra_framework
int m_canlib_selection = { -1 }
int m_selection = { 0 }
int m_can_count = { 0 }
AMSModel m_ams_model
AMSPanelPos m_panel_pos
std::string m_canlib_id
std::string m_road_canid
wxColour m_road_colour
std::map< std::string, AMSLib * > m_can_lib_list
AMSRoadUpPart * m_panel_road = { nullptr }
std::map< std::string, AMSrefresh * > m_can_refresh_list
AMSHumidity * m_humidity = { nullptr }
AMSinfo m_info
wxBoxSizer * sizer_can = {nullptr}
wxGridSizer * sizer_can_extra = { nullptr }
wxBoxSizer * sizer_item = { nullptr }
AMSExtImage * m_ext_image = { nullptr }
AMSExtText * m_ext_text = { nullptr }

Detailed Description

Constructor & Destructor Documentation

◆ AmsItem()

Slic3r::GUI::AmsItem::AmsItem ( wxWindow * parent,
AMSinfo info,
AMSModel model,
AMSPanelPos pos )
3177{
3178 m_bitmap_extra_framework = ScalableBitmap(this, "ams_extra_framework_mid_new", 134);
3179
3180 SetDoubleBuffered(true);
3181 m_ams_model = model;
3182 m_info = info;
3183 m_panel_pos = pos;
3184
3186 wxWindow::Create(parent, wxID_ANY, wxDefaultPosition, AMS_CANS_WINDOW_SIZE);
3187 SetSize(AMS_CANS_WINDOW_SIZE);
3188 SetMinSize(AMS_CANS_WINDOW_SIZE);
3189 SetMaxSize(AMS_CANS_WINDOW_SIZE);
3190 }
3191 else{
3192 wxWindow::Create(parent, wxID_ANY, wxDefaultPosition, AMS_SINGLE_CAN_SIZE);
3193 SetSize(AMS_SINGLE_CAN_SIZE);
3194 SetMinSize(AMS_SINGLE_CAN_SIZE);
3195 SetMaxSize(AMS_SINGLE_CAN_SIZE);
3196 }
3197
3198 create(parent);
3199
3201 Bind(wxEVT_PAINT, &AmsItem::paintEvent, this);
3202}
#define AMS_CANS_WINDOW_SIZE
Definition AMSControl.cpp:54
#define AMS_SINGLE_CAN_SIZE
Definition AMSItem.cpp:80
#define AMS_CONTROL_DEF_LIB_BK_COLOUR
Definition AMSItem.hpp:45
AMSPanelPos m_panel_pos
Definition AMSItem.hpp:859
AMSinfo m_info
Definition AMSItem.hpp:871
void create(wxWindow *parent)
Definition AMSItem.cpp:3208
ScalableBitmap m_bitmap_extra_framework
Definition AMSItem.hpp:853
AMSModel m_ams_model
Definition AMSItem.hpp:858
void paintEvent(wxPaintEvent &evt)
Definition AMSItem.cpp:3664
static wxColour darkModeColorFor(wxColour const &color)
Definition StateColor.cpp:219
@ GENERIC_AMS
Definition AMSItem.hpp:59
Vec3d pos(const Pt &p)
Definition ReprojectPointsOnMesh.hpp:16

References AMS_CANS_WINDOW_SIZE, AMS_CONTROL_DEF_LIB_BK_COLOUR, AMS_SINGLE_CAN_SIZE, create(), StateColor::darkModeColorFor(), Slic3r::GUI::GENERIC_AMS, m_ams_model, m_bitmap_extra_framework, m_info, m_panel_pos, and paintEvent().

Here is the call graph for this function:

◆ ~AmsItem()

Slic3r::GUI::AmsItem::~AmsItem ( )
3205{
3206}

Member Function Documentation

◆ AddCan()

void Slic3r::GUI::AmsItem::AddCan ( Caninfo caninfo,
int canindex,
int maxcan,
wxBoxSizer * sizer )
3268{
3269 auto amscan = new wxWindow(this, wxID_ANY);
3270
3271 amscan->SetSize(wxSize(FromDIP(52), FromDIP(109)));
3272 amscan->SetMinSize(wxSize(FromDIP(52), FromDIP(109)));
3273
3274 amscan->SetBackgroundColour(StateColor::darkModeColorFor(AMS_CONTROL_DEF_LIB_BK_COLOUR));
3275 //amscan->SetBackgroundColour(wxTRANSPARENT);
3276
3277 wxBoxSizer* m_sizer_ams = new wxBoxSizer(wxVERTICAL);
3278
3279 AMSrefresh* m_panel_refresh;
3281 {
3282 m_panel_refresh = new AMSrefresh(amscan, m_info.ams_id, m_can_count, caninfo);
3283 m_can_refresh_list[caninfo.can_id] = m_panel_refresh;
3284 }
3285 else if (m_ams_model == AMSModel::EXT_AMS){
3286 m_ext_text = new AMSExtText(amscan, wxID_ANY);
3287 }
3288
3289 AMSLib* m_panel_lib = nullptr;
3291 m_panel_lib = new AMSLib(amscan, m_info.ams_id, caninfo, AMSModelOriginType::LITE_EXT);
3292 }
3293 else{
3294 m_panel_lib = new AMSLib(amscan, m_info.ams_id, caninfo);
3295 }
3296
3297 try{
3298 m_panel_lib->Bind(wxEVT_LEFT_DOWN, [this, canindex](wxMouseEvent& ev) {
3299 m_canlib_selection = canindex;
3300 // m_canlib_id = caninfo.can_id;
3301
3302 for (auto lib_it : m_can_lib_list) {
3303 AMSLib* lib = lib_it.second;
3304 if (lib->m_can_index == m_canlib_selection) {
3305 wxCommandEvent evt(EVT_AMS_UNSELETED_VAMS);
3306 evt.SetString(m_info.ams_id);
3307 wxPostEvent(GetParent()->GetParent(), evt);
3308 lib->OnSelected();
3309 }
3310 else {
3311 lib->UnSelected();
3312 }
3313 }
3314 ev.Skip();
3315 });
3316
3317 m_panel_lib->m_ams_model = m_ams_model;
3318 m_panel_lib->m_ams_id = m_info.ams_id;
3319 m_panel_lib->m_slot_id = caninfo.can_id;
3320 m_panel_lib->m_info.can_id = caninfo.can_id;
3321 m_panel_lib->m_can_index = canindex;
3322 }
3323 catch (...)
3324 {
3325 ;
3326 }
3327
3328 //auto m_panel_road = new AMSRoad(amscan, wxID_ANY, caninfo, canindex, maxcan, wxDefaultPosition, AMS_CAN_ROAD_SIZE);
3329
3331 m_sizer_ams->Add(0, 0, 0, wxALIGN_CENTER_HORIZONTAL, 0);
3332 m_sizer_ams->Add(m_panel_refresh, 0, wxALIGN_CENTER_HORIZONTAL | wxDOWN, FromDIP(4));
3333 m_sizer_ams->Add(m_panel_lib, 0, wxALIGN_CENTER_HORIZONTAL, 0);
3334 }
3335 else
3336 {
3338 m_sizer_ams->Add(0, 0, 0, wxALIGN_CENTER_HORIZONTAL, 0);
3339 //m_sizer_ams->Add(m_panel_text, 0, wxALIGN_CENTER_HORIZONTAL | wxTOP, 4);
3340 m_sizer_ams->Add(m_ext_text, 0, wxALIGN_CENTER_HORIZONTAL | wxDOWN, FromDIP(4));
3341 m_sizer_ams->Add(m_panel_lib, 0, wxALIGN_CENTER_HORIZONTAL, 0);
3342 }
3343 }
3344
3345
3346 amscan->SetSizer(m_sizer_ams);
3347 amscan->Layout();
3348 amscan->Fit();
3349
3350 sizer->Add(amscan, 0, wxUP | wxLEFT | wxRIGHT, FromDIP(5));
3351
3352 m_can_lib_list[caninfo.can_id] = m_panel_lib;
3353 //m_can_road_list[caninfo.can_id] = m_panel_road;
3354}
AMSExtText * m_ext_text
Definition AMSItem.hpp:876
std::map< std::string, AMSrefresh * > m_can_refresh_list
Definition AMSItem.hpp:868
std::map< std::string, AMSLib * > m_can_lib_list
Definition AMSItem.hpp:865
int m_canlib_selection
Definition AMSItem.hpp:854
int m_can_count
Definition AMSItem.hpp:856
@ LITE_EXT
Definition AMSItem.hpp:67
wxMouseEvent
Definition CameraPopup.cpp:47
@ EXT_AMS
Definition AMSItem.hpp:58
@ AMS_LITE
Definition AMSItem.hpp:60

References AMS_CONTROL_DEF_LIB_BK_COLOUR, Slic3r::GUI::AMS_LITE, Slic3r::GUI::Caninfo::can_id, StateColor::darkModeColorFor(), Slic3r::GUI::EXT_AMS, Slic3r::GUI::LITE_EXT, Slic3r::GUI::AMSLib::m_ams_id, m_ams_model, Slic3r::GUI::AMSLib::m_ams_model, m_can_count, Slic3r::GUI::AMSLib::m_can_index, m_can_lib_list, m_can_refresh_list, m_canlib_selection, m_ext_text, m_info, Slic3r::GUI::AMSLib::m_info, Slic3r::GUI::AMSLib::m_slot_id, Slic3r::GUI::AMSLib::OnSelected(), Slic3r::GUI::AMSLib::UnSelected(), and Slic3r::GUI::wxMouseEvent.

Referenced by create().

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

◆ AddLiteCan()

void Slic3r::GUI::AmsItem::AddLiteCan ( Caninfo caninfo,
int canindex,
wxGridSizer * sizer )
3357{
3358 auto amscan = new wxWindow(this, wxID_ANY);
3359 /*amscan->SetSize(wxSize(FromDIP(49), FromDIP(72)));
3360 amscan->SetMinSize(wxSize(FromDIP(49), FromDIP(72)));
3361 amscan->SetMaxSize(wxSize(FromDIP(49), FromDIP(72)));*/
3362 amscan->SetSize(wxSize(FromDIP(80), FromDIP(72)));
3363 amscan->SetMinSize(wxSize(FromDIP(80), FromDIP(72)));
3364 amscan->SetMaxSize(wxSize(FromDIP(80), FromDIP(72)));
3365
3366 amscan->SetBackgroundColour(StateColor::darkModeColorFor(AMS_CONTROL_DEF_LIB_BK_COLOUR));
3367
3368 wxBoxSizer* m_sizer_ams = new wxBoxSizer(wxHORIZONTAL);
3369
3370 auto m_panel_lib = new AMSLib(amscan, m_info.ams_id, caninfo);
3371
3372 m_panel_lib->Bind(wxEVT_LEFT_DOWN, [this, canindex](wxMouseEvent& ev) {
3373 m_canlib_selection = canindex;
3374 // m_canlib_id = caninfo.can_id;
3375
3376 for (auto lib_it : m_can_lib_list) {
3377 AMSLib* lib = lib_it.second;
3378 if (lib->m_can_index == m_canlib_selection) {
3379 wxCommandEvent evt(EVT_AMS_UNSELETED_VAMS);
3380 evt.SetString(m_info.ams_id);
3381 wxPostEvent(GetParent()->GetParent(), evt);
3382 lib->OnSelected();
3383 }
3384 else {
3385 lib->UnSelected();
3386 }
3387 }
3388 ev.Skip();
3389 });
3390
3391 auto ams_refresh = new AMSrefresh(amscan, m_info.ams_id, canindex, caninfo);
3392 m_can_refresh_list[caninfo.can_id] = ams_refresh;
3393 m_panel_lib->m_ams_model = m_ams_model;
3394 m_panel_lib->m_ams_id = m_info.ams_id;
3395 m_panel_lib->m_slot_id = caninfo.can_id;
3396 m_panel_lib->m_info.can_id = caninfo.can_id;
3397 m_panel_lib->m_can_index = canindex;
3398
3399 //auto m_panel_road = new AMSRoad(amscan, wxID_ANY, caninfo, canindex, maxcan, wxDefaultPosition, AMS_CAN_ROAD_SIZE);
3400 if (caninfo.can_id == "0" || caninfo.can_id == "1") {
3401 m_sizer_ams->Add(ams_refresh, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL, 0);
3402 }
3403 switch (canindex){
3404 case 0:
3405 m_sizer_ams->Add(m_panel_lib, 0, wxALIGN_RIGHT | wxALIGN_BOTTOM, 0);
3406 break;
3407 case 1:
3408 m_sizer_ams->Add(m_panel_lib, 0, wxALIGN_RIGHT | wxALIGN_TOP, 0);
3409 break;
3410 case 2:
3411 m_sizer_ams->Add(m_panel_lib, 0, wxALIGN_LEFT | wxALIGN_TOP, 0);
3412 break;
3413 case 3:
3414 m_sizer_ams->Add(m_panel_lib, 0, wxALIGN_LEFT | wxALIGN_BOTTOM, 0);
3415 break;
3416 default:
3417 break;
3418 }
3419 if (caninfo.can_id == "2" || caninfo.can_id == "3") {
3420 m_sizer_ams->Add(ams_refresh, 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL, 0);
3421 }
3422 amscan->SetSizer(m_sizer_ams);
3423 amscan->Layout();
3424 amscan->Fit();
3425
3426 sizer->Add(amscan, 0, wxUP | wxLEFT | wxRIGHT, FromDIP(5));
3427
3428 m_can_lib_list[caninfo.can_id] = m_panel_lib;
3429 //m_can_road_list[caninfo.can_id] = m_panel_road;
3430}

References AMS_CONTROL_DEF_LIB_BK_COLOUR, Slic3r::GUI::Caninfo::can_id, StateColor::darkModeColorFor(), m_ams_model, Slic3r::GUI::AMSLib::m_can_index, m_can_lib_list, m_can_refresh_list, m_canlib_selection, m_info, Slic3r::GUI::AMSLib::OnSelected(), Slic3r::GUI::AMSLib::UnSelected(), and Slic3r::GUI::wxMouseEvent.

Referenced by create().

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

◆ create()

void Slic3r::GUI::AmsItem::create ( wxWindow * parent)
3209{
3210 Freeze();
3211 //if (m_ams_model == AMSModel::GENERIC_AMS)
3213 sizer_can = new wxBoxSizer(wxHORIZONTAL);
3214 sizer_item = new wxBoxSizer(wxVERTICAL);
3215 auto it = m_info.cans.begin();
3216 for (; it != m_info.cans.end(); it++) {
3217 AddCan(*it, m_can_count, m_info.cans.size(), sizer_can);
3218 m_can_count++;
3219 }
3220 it = m_info.cans.begin();
3221 //auto road_panel = new wxWindow(this, wxID_ANY);
3222 //auto road_panel = new wxPanel(this, wxID_ANY);
3223 //road_panel->SetSize(AMS_CAN_ROAD_SIZE);
3224 //road_panel->SetMinSize(AMS_CAN_ROAD_SIZE);
3226 m_humidity = new AMSHumidity(this, wxID_ANY, m_info);
3227 sizer_item->Add(m_humidity, 0, wxALIGN_CENTER_HORIZONTAL, 0);
3228 }
3229 else{
3230 if (m_ams_model == EXT_AMS){
3231 m_ext_image = new AMSExtImage(this, m_panel_pos, 1, true);
3232 sizer_item->Add(m_ext_image, 0, wxALIGN_CENTER, 0);
3233 }
3234 }
3235 m_panel_road = new AMSRoadUpPart(this, wxID_ANY, m_info, m_ams_model);
3236
3237 sizer_item->Add(sizer_can, 0, wxALIGN_CENTER_HORIZONTAL, 0);
3238 //sizer_item->Add(m_panel_road, 0, wxALIGN_CENTER_HORIZONTAL, 0);
3239 sizer_item->Add(m_panel_road, 1, wxEXPAND);
3240
3241 SetSizer(sizer_item);
3242 }
3243 else{
3244 sizer_can_extra = new wxGridSizer(2, 2, FromDIP(18), FromDIP(20));
3245 //sizer_can_extra = new wxGridSizer(2, 2, 20, 20);
3246 sizer_item = new wxBoxSizer(wxVERTICAL);
3247 if (m_info.cans.size() == GENERIC_AMS_SLOT_NUM){
3248 AddLiteCan(m_info.cans[0], 0, sizer_can_extra);
3249 AddLiteCan(m_info.cans[3], 3, sizer_can_extra);
3250 AddLiteCan(m_info.cans[1], 1, sizer_can_extra);
3251 AddLiteCan(m_info.cans[2], 2, sizer_can_extra);
3253 }
3254
3255 sizer_item->Add(sizer_can_extra, 0, wxALIGN_CENTER_HORIZONTAL | wxALIGN_TOP, 0);
3256 //sizer_item->Add(sizer_can_extra, 0, wxALIGN_CENTER);
3257 SetSizer(sizer_item);
3258 }
3259
3260
3261 Layout();
3262 Fit();
3263 Thaw();
3264 //Refresh();
3265}
#define GENERIC_AMS_SLOT_NUM
Definition AMSItem.hpp:194
AMSExtImage * m_ext_image
Definition AMSItem.hpp:875
wxGridSizer * sizer_can_extra
Definition AMSItem.hpp:873
AMSHumidity * m_humidity
Definition AMSItem.hpp:869
AMSRoadUpPart * m_panel_road
Definition AMSItem.hpp:867
void AddLiteCan(Caninfo caninfo, int canindex, wxGridSizer *sizer)
Definition AMSItem.cpp:3356
wxBoxSizer * sizer_item
Definition AMSItem.hpp:874
wxBoxSizer * sizer_can
Definition AMSItem.hpp:872
void AddCan(Caninfo caninfo, int canindex, int maxcan, wxBoxSizer *sizer)
Definition AMSItem.cpp:3267
@ N3S_AMS
Definition AMSItem.hpp:62
@ N3F_AMS
Definition AMSItem.hpp:61

References AddCan(), AddLiteCan(), Slic3r::GUI::AMS_LITE, Slic3r::GUI::EXT_AMS, Slic3r::GUI::GENERIC_AMS, GENERIC_AMS_SLOT_NUM, m_ams_model, m_can_count, m_ext_image, m_humidity, m_info, m_panel_pos, m_panel_road, Slic3r::GUI::N3F_AMS, Slic3r::GUI::N3S_AMS, sizer_can, sizer_can_extra, and sizer_item.

Referenced by AmsItem().

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

◆ doRender()

void Slic3r::GUI::AmsItem::doRender ( wxDC & dc)
3692{
3693 wxSize size = GetSize();
3694
3695 //road for extra
3697 dc.DrawBitmap(m_bitmap_extra_framework.bmp(), (size.x - m_bitmap_extra_framework.GetBmpSize().x) / 2, (size.y - m_bitmap_extra_framework.GetBmpSize().y) / 2 - FromDIP(4));
3698
3699 // A1
3700 dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxPENSTYLE_SOLID));
3701 dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH));
3702 RenderLiteRoad(dc, size);
3703 }
3704}
#define AMS_CONTROL_GRAY500
Definition AMSItem.hpp:39
void RenderLiteRoad(wxDC &dc, wxSize size)
Definition AMSItem.cpp:3718

References AMS_CONTROL_GRAY500, Slic3r::GUI::AMS_LITE, m_ams_model, m_bitmap_extra_framework, and RenderLiteRoad().

Referenced by render().

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

◆ get_ams_id()

std::string Slic3r::GUI::AmsItem::get_ams_id ( ) const
inline
835{ return m_info.ams_id; };

References m_info.

Referenced by Slic3r::GUI::AMSControl::GetCurrentCan(), Slic3r::GUI::AMSControl::SwitchAms(), and Slic3r::GUI::AMSControl::UpdateAms().

Here is the caller graph for this function:

◆ get_ams_info()

AMSinfo Slic3r::GUI::AmsItem::get_ams_info ( ) const
inline
833{ return m_info; };

References m_info.

◆ get_ams_model()

AMSModel Slic3r::GUI::AmsItem::get_ams_model ( ) const
inline
836{ return m_info.ams_type; };

References m_info.

Referenced by Slic3r::GUI::AMSControl::createAmsPanel(), Slic3r::GUI::AMSControl::SetAmsStep(), and Slic3r::GUI::AMSControl::SwitchAms().

Here is the caller graph for this function:

◆ get_can_count()

size_t Slic3r::GUI::AmsItem::get_can_count ( ) const
inline
841{ return m_info.cans.size(); };

References m_info.

Referenced by Slic3r::GUI::AMSControl::SetAmsStep(), and Slic3r::GUI::AMSControl::SwitchAms().

Here is the caller graph for this function:

◆ get_can_lib_list()

std::map< std::string, AMSLib * > Slic3r::GUI::AmsItem::get_can_lib_list ( ) const
inline
842{ return m_can_lib_list; };

References m_can_lib_list.

Referenced by Slic3r::GUI::AMSControl::SwitchAms().

Here is the caller graph for this function:

◆ get_ext_image()

AMSExtImage * Slic3r::GUI::AmsItem::get_ext_image ( ) const
inline
839{ return m_ext_image; };

References m_ext_image.

Referenced by Slic3r::GUI::AMSControl::createAmsPanel().

Here is the caller graph for this function:

◆ get_ext_type()

AMSModelOriginType Slic3r::GUI::AmsItem::get_ext_type ( ) const
inline
838{ return m_info.ext_type; };

References m_info.

Referenced by Slic3r::GUI::AMSControl::createAmsPanel(), and Slic3r::GUI::AMSControl::SetAmsStep().

Here is the caller graph for this function:

◆ get_nozzle_id()

int Slic3r::GUI::AmsItem::get_nozzle_id ( ) const
inline
848{ return m_info.nozzle_id; };

References m_info.

Referenced by Slic3r::GUI::AMSControl::SetAmsStep().

Here is the caller graph for this function:

◆ get_panel_pos()

AMSPanelPos Slic3r::GUI::AmsItem::get_panel_pos ( ) const
inline
847{ return m_panel_pos; };

References m_panel_pos.

Referenced by Slic3r::GUI::AMSControl::SwitchAms().

Here is the caller graph for this function:

◆ get_selection()

int Slic3r::GUI::AmsItem::get_selection ( ) const
inline
844{ return m_selection; };
int m_selection
Definition AMSItem.hpp:855

References m_selection.

Referenced by Slic3r::GUI::AMSControl::SwitchAms().

Here is the caller graph for this function:

◆ GetCurrentCan()

std::string Slic3r::GUI::AmsItem::GetCurrentCan ( )
3657{
3658 if (m_canlib_selection < 0)
3659 return "";
3660
3661 return wxString::Format("%d", m_canlib_selection).ToStdString();
3662}

References m_canlib_selection.

Referenced by Slic3r::GUI::AMSControl::GetCurrentCan().

Here is the caller graph for this function:

◆ GetTagColr()

wxColour Slic3r::GUI::AmsItem::GetTagColr ( wxString canid)
3514{
3515 auto tag_colour = *wxWHITE;
3516 for (auto lib_it : m_can_lib_list) {
3517 AMSLib* lib = lib_it.second;
3518 if (canid == lib->m_info.can_id) tag_colour = lib->GetLibColour();
3519 }
3520 return tag_colour;
3521}

References Slic3r::GUI::Caninfo::can_id, Slic3r::GUI::AMSLib::GetLibColour(), m_can_lib_list, and Slic3r::GUI::AMSLib::m_info.

Referenced by Slic3r::GUI::AMSControl::SetAmsStep(), and Slic3r::GUI::AMSControl::SetExtruder().

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

◆ msw_rescale()

void Slic3r::GUI::AmsItem::msw_rescale ( )
3819{
3820 for (auto refresh_it : m_can_refresh_list) {
3821 AMSrefresh* refresh = refresh_it.second;
3822 if(refresh) refresh->msw_rescale();
3823 }
3824
3825 for (auto lib_it : m_can_lib_list) {
3826 AMSLib* lib = lib_it.second;
3827 if (lib) lib->msw_rescale();
3828 }
3829 if (m_humidity != nullptr) m_humidity->msw_rescale();
3830 if (m_ext_text != nullptr) m_ext_text->msw_rescale();
3831 if (m_ext_image != nullptr) m_ext_image->msw_rescale(); //ext image upon the lib
3832
3833 m_bitmap_extra_framework = ScalableBitmap(this, "ams_extra_framework_mid_new", 134);
3834
3835 Layout();
3836 Refresh();
3837}
@ refresh
Definition GLGizmoSVG.cpp:173

References m_bitmap_extra_framework, m_can_lib_list, m_can_refresh_list, m_ext_image, m_ext_text, m_humidity, and Slic3r::GUI::AMSLib::msw_rescale().

Here is the call graph for this function:

◆ paintEvent()

void Slic3r::GUI::AmsItem::paintEvent ( wxPaintEvent & evt)
3665{
3666 wxPaintDC dc(this);
3667 render(dc);
3668}
void render(wxDC &dc)
Definition AMSItem.cpp:3670

References render().

Referenced by AmsItem().

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

◆ PlayRridLoading()

void Slic3r::GUI::AmsItem::PlayRridLoading ( wxString canid)
3649{
3650 for (auto refresh_it : m_can_refresh_list) {
3651 AMSrefresh* refresh = refresh_it.second;
3652 if (refresh->GetCanId() == canid) { refresh->PlayLoading(); }
3653 }
3654}

References m_can_refresh_list.

Referenced by Slic3r::GUI::AMSControl::PlayRridLoading().

Here is the caller graph for this function:

◆ render()

void Slic3r::GUI::AmsItem::render ( wxDC & dc)
3671{
3672#ifdef __WXMSW__
3673 wxSize size = GetSize();
3674 wxMemoryDC memdc;
3675 wxBitmap bmp(size.x, size.y);
3676 memdc.SelectObject(bmp);
3677 memdc.Blit({ 0, 0 }, size, &dc, { 0, 0 });
3678
3679 {
3680 wxGCDC dc2(memdc);
3681 doRender(dc2);
3682 }
3683
3684 memdc.SelectObject(wxNullBitmap);
3685 dc.DrawBitmap(bmp, 0, 0);
3686#else
3687 doRender(dc);
3688#endif
3689}
void doRender(wxDC &dc)
Definition AMSItem.cpp:3691

References doRender().

Referenced by paintEvent().

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

◆ RenderLiteRoad()

void Slic3r::GUI::AmsItem::RenderLiteRoad ( wxDC & dc,
wxSize size )
3718 {
3719 auto end_top = size.x - FromDIP(3);
3721 end_top = 0;
3722 }
3723 auto passroad_width = 4;
3724 auto a1_top = m_panel_pos == AMSPanelPos::RIGHT_PANEL ? size.y / 2 - FromDIP(4) : size.y / 2;
3725 auto a2_top = m_panel_pos == AMSPanelPos::RIGHT_PANEL ? size.y / 2 : size.y / 2 - FromDIP(4);
3726 auto a3_top = m_panel_pos == AMSPanelPos::RIGHT_PANEL ? size.y / 2 + FromDIP(8) : size.y / 2 + FromDIP(4);
3727 auto a4_top = m_panel_pos == AMSPanelPos::RIGHT_PANEL ? size.y / 2 + FromDIP(4) : size.y / 2 + FromDIP(8);
3728
3729 if (m_can_lib_list.empty()) {
3730 //to Extruder
3731 dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxPENSTYLE_SOLID));
3732 dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH));
3733 auto top = std::min(a1_top, a2_top);
3734 dc.DrawLine(end_top, top, end_top, size.y);
3735 return;
3736 }
3737
3738 try
3739 {
3740 auto a1_left = m_can_lib_list["0"]->GetScreenPosition().x + m_can_lib_list["0"]->GetSize().x / 2;
3741 auto local_pos1 = GetScreenPosition().x + GetSize().x / 2;
3742 a1_left = size.x / 2 + (a1_left - local_pos1);
3743 dc.DrawLine(a1_left, FromDIP(30), a1_left, a1_top);
3744 dc.DrawLine(a1_left, a1_top, end_top, a1_top);
3745
3746 // A2
3747 auto a2_left = m_can_lib_list["3"]->GetScreenPosition().x + m_can_lib_list["3"]->GetSize().x / 2;
3748 auto local_pos2 = GetScreenPosition().x + GetSize().x / 2;
3749 a2_left = size.x / 2 + (a2_left - local_pos2);
3750 dc.DrawLine(a2_left, FromDIP(30), a2_left, a2_top);
3751 dc.DrawLine(a2_left, a2_top, end_top, a2_top);
3752
3753 // A3
3754 auto a3_left = m_can_lib_list["1"]->GetScreenPosition().x + m_can_lib_list["1"]->GetSize().x / 2;
3755 auto local_pos3 = GetScreenPosition().x + GetSize().x / 2;
3756 a3_left = size.x / 2 + (a3_left - local_pos3);
3757 dc.DrawLine(a3_left, FromDIP(160), a3_left, a3_top);
3758 dc.DrawLine(a3_left, a3_top, end_top, a3_top);
3759
3760
3762 auto a4_left = m_can_lib_list["2"]->GetScreenPosition().x + m_can_lib_list["2"]->GetSize().x / 2;
3763 auto local_pos4 = GetScreenPosition().x + GetSize().x / 2;
3764 a4_left = size.x / 2 + (a4_left - local_pos4);
3765 dc.DrawLine(a4_left, FromDIP(160), a4_left, a4_top);
3766 dc.DrawLine(a4_left, a4_top, end_top, a4_top);
3767
3768 //to Extruder
3769 dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxPENSTYLE_SOLID));
3770 dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH));
3771 auto top = std::min(a1_top, a2_top);
3772 dc.DrawLine(end_top, top, end_top, size.y);
3773
3774
3775 if (!m_road_canid.empty()) {
3776 int can_idx = atoi(m_road_canid.c_str());
3777 if (can_idx < 0 || can_idx >= m_info.cans.size()) {
3778 return;
3779 }
3780 m_road_colour = m_info.cans[can_idx].material_colour;
3781 dc.SetPen(wxPen(m_road_colour, passroad_width, wxPENSTYLE_SOLID));
3782 if (m_road_canid == "0") {
3783 dc.DrawLine(a1_left, FromDIP(30), a1_left, a1_top);
3784 dc.DrawLine(a1_left, a1_top, end_top, a1_top);
3785 dc.DrawLine(end_top, a1_top, end_top, size.y);
3786 }
3787
3788 if (m_road_canid == "3") {
3789 dc.DrawLine(a2_left, FromDIP(30), a2_left, a2_top);
3790 dc.DrawLine(a2_left, a2_top, end_top, a2_top);
3791 dc.DrawLine(end_top, a2_top, end_top, size.y);
3792 }
3793
3794 if (m_road_canid == "1") {
3795 dc.DrawLine(a3_left, FromDIP(160), a3_left, a3_top);
3796 dc.DrawLine(a3_left, a3_top, end_top, a3_top);
3797 dc.DrawLine(end_top, a3_top, end_top, size.y);
3798 }
3799
3800 if (m_road_canid == "2") {
3801 dc.DrawLine(a4_left, FromDIP(160), a4_left, a4_top);
3802 dc.DrawLine(a4_left, a4_top, end_top, a4_top);
3803 dc.DrawLine(end_top, a4_top, end_top, size.y);
3804 }
3805 }
3806 }
3807 catch (...) {}
3808}
@ RIGHT_PANEL
Definition AMSItem.hpp:90

References AMS_CONTROL_GRAY500, m_can_lib_list, m_info, m_panel_pos, m_road_canid, m_road_colour, and Slic3r::GUI::RIGHT_PANEL.

Referenced by doRender().

Here is the caller graph for this function:

◆ routes_to_main_extruder()

bool Slic3r::GUI::AmsItem::routes_to_main_extruder ( ) const
inline
850{ return m_info.routes_to_main_extruder(); };

References m_info.

◆ SelectCan()

void Slic3r::GUI::AmsItem::SelectCan ( std::string canid)
3490{
3491 for (auto lib_it : m_can_lib_list) {
3492 AMSLib* lib = lib_it.second;
3493 if (lib->m_info.can_id == canid) {
3494 m_canlib_selection = lib->m_can_index;
3495 }
3496 }
3497
3498 m_canlib_id = canid;
3499
3500 for (auto lib_it : m_can_lib_list) {
3501 AMSLib* lib = lib_it.second;
3502 if (lib->m_info.can_id == m_canlib_id) {
3503 wxCommandEvent evt(EVT_AMS_UNSELETED_VAMS);
3504 evt.SetString(m_info.ams_id);
3505 wxPostEvent(GetParent()->GetParent(), evt);
3506 lib->OnSelected();
3507 } else {
3508 lib->UnSelected();
3509 }
3510 }
3511}
std::string m_canlib_id
Definition AMSItem.hpp:860

References Slic3r::GUI::Caninfo::can_id, Slic3r::GUI::AMSLib::m_can_index, m_can_lib_list, m_canlib_id, m_canlib_selection, m_info, Slic3r::GUI::AMSLib::m_info, Slic3r::GUI::AMSLib::OnSelected(), and Slic3r::GUI::AMSLib::UnSelected().

Referenced by SetDefSelectCan().

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

◆ set_selection()

void Slic3r::GUI::AmsItem::set_selection ( int selection)
inline
845{ m_selection = selection; };

References m_selection.

Referenced by Slic3r::GUI::AMSControl::createAmsPanel().

Here is the caller graph for this function:

◆ SetAmsStep() [1/2]

void Slic3r::GUI::AmsItem::SetAmsStep ( std::string amsid,
std::string canid,
AMSPassRoadType type,
AMSPassRoadSTEP step )
3537{
3538 if (m_panel_road){
3539 m_panel_road->UpdatePassRoad(amsid, canid, type, step);
3540 }
3541 if (m_info.ams_id != amsid){
3542 return;
3543 }
3544
3545 SetAmsStepExtra(canid, type, step);
3546 /*if (m_info.ams_type == AMSModel::EXTRA_AMS){
3547 SetAmsStepExtra(canid, type, step);
3548 }*/
3549
3550 /*if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_NONE){
3551 m_road_canid = "";
3552 }
3553 else{
3554 m_road_canid = canid;
3555 }*/
3556
3557}
void SetAmsStepExtra(wxString canid, AMSPassRoadType type, AMSPassRoadSTEP step)
Definition AMSItem.cpp:3523

References m_info, m_panel_road, and SetAmsStepExtra().

Referenced by Slic3r::GUI::AMSControl::SetAmsStep(), and SetAmsStepExtra().

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

◆ SetAmsStep() [2/2]

void Slic3r::GUI::AmsItem::SetAmsStep ( std::string can_id)
3633{
3634 if (m_road_canid != can_id) {
3635 m_road_canid = can_id;
3636 Refresh();
3637 }
3638 for (auto lib : m_can_lib_list){
3639 if (lib.second->m_info.can_id == can_id){
3640 lib.second->on_pass_road(true);
3641 }
3642 else{
3643 lib.second->on_pass_road(false);
3644 }
3645 }
3646}
std::string m_road_canid
Definition AMSItem.hpp:862

References m_can_lib_list, and m_road_canid.

◆ SetAmsStepExtra()

void Slic3r::GUI::AmsItem::SetAmsStepExtra ( wxString canid,
AMSPassRoadType type,
AMSPassRoadSTEP step )
3524{
3526 SetAmsStep(canid.ToStdString());
3528 SetAmsStep(canid.ToStdString());
3530 SetAmsStep(canid.ToStdString());
3531 }else if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_NONE) {
3532 SetAmsStep("");
3533 }
3534}
void SetAmsStep(std::string amsid, std::string canid, AMSPassRoadType type, AMSPassRoadSTEP step)
Definition AMSItem.cpp:3536
@ AMS_ROAD_STEP_NONE
Definition AMSItem.hpp:122
@ AMS_ROAD_STEP_1
Definition AMSItem.hpp:123
@ AMS_ROAD_STEP_COMBO_LOAD_STEP2
Definition AMSItem.hpp:128
@ AMS_ROAD_STEP_2
Definition AMSItem.hpp:124
@ AMS_ROAD_STEP_COMBO_LOAD_STEP1
Definition AMSItem.hpp:127
@ AMS_ROAD_STEP_3
Definition AMSItem.hpp:125
@ AMS_ROAD_STEP_COMBO_LOAD_STEP3
Definition AMSItem.hpp:129

References Slic3r::GUI::AMS_ROAD_STEP_1, Slic3r::GUI::AMS_ROAD_STEP_2, Slic3r::GUI::AMS_ROAD_STEP_3, Slic3r::GUI::AMS_ROAD_STEP_COMBO_LOAD_STEP1, Slic3r::GUI::AMS_ROAD_STEP_COMBO_LOAD_STEP2, Slic3r::GUI::AMS_ROAD_STEP_COMBO_LOAD_STEP3, Slic3r::GUI::AMS_ROAD_STEP_NONE, and SetAmsStep().

Referenced by SetAmsStep().

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

◆ SetDefSelectCan()

void Slic3r::GUI::AmsItem::SetDefSelectCan ( )
3478{
3479 for (auto lib_it : m_can_lib_list) {
3480 AMSLib* lib = lib_it.second;
3481 m_canlib_selection =lib->m_can_index;
3482 m_canlib_id = lib->m_info.can_id;
3484 break;
3485 }
3486}
void SelectCan(std::string canid)
Definition AMSItem.cpp:3489

References Slic3r::GUI::Caninfo::can_id, Slic3r::GUI::AMSLib::m_can_index, m_can_lib_list, m_canlib_id, m_canlib_selection, Slic3r::GUI::AMSLib::m_info, and SelectCan().

Here is the call graph for this function:

◆ show_sn_value()

void Slic3r::GUI::AmsItem::show_sn_value ( bool show)
3840{
3841 for (auto lib_it : m_can_lib_list) {
3842 AMSLib* lib = lib_it.second;
3843 if (lib) lib->show_kn_value(show);
3844 }
3845}

References m_can_lib_list, and Slic3r::GUI::AMSLib::show_kn_value().

Referenced by Slic3r::GUI::AMSControl::UpdateAms().

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

◆ ShowRoad()

bool Slic3r::GUI::AmsItem::ShowRoad ( bool show)
3709{
3710 if (!m_panel_road) return false;
3711 if (m_panel_road->IsShown() == show) return false;
3712 m_panel_road->Show(show);
3713 Layout();
3714 Refresh();
3715 return true;
3716}

References m_panel_road.

◆ StopRridLoading()

void Slic3r::GUI::AmsItem::StopRridLoading ( wxString canid)
3811{
3812 for (auto refresh_it : m_can_refresh_list) {
3813 AMSrefresh* refresh = refresh_it.second;
3814 if (refresh->GetCanId() == canid) { refresh->StopLoading(); }
3815 }
3816}

References m_can_refresh_list.

Referenced by Slic3r::GUI::AMSControl::StopRridLoading().

Here is the caller graph for this function:

◆ UpdateInfo()

void Slic3r::GUI::AmsItem::UpdateInfo ( AMSinfo info)
3433{
3434 if (m_info == info)
3435 {
3436 return;
3437 }
3438
3439 m_info = info;
3440 m_can_count = info.cans.size();
3441
3442 if (m_humidity)
3443 {
3444 m_humidity->UpdateInfo(m_info);
3445 }
3446
3447 for (int i = 0; i < m_can_count; i++) {
3448 auto it = m_can_refresh_list.find(std::to_string(i));
3449 if (it == m_can_refresh_list.end()) break;
3450
3451 auto refresh = it->second;
3452 if (refresh != nullptr){
3453 refresh->UpdateInfo(info.ams_id, info.cans[i]);
3454 refresh->Show();
3455 }
3456 }
3457
3458 for (int i = 0; i < m_can_lib_list.size(); i++) {
3459 AMSLib* lib = m_can_lib_list[std::to_string(i)];
3460 if (lib != nullptr){
3461 if (i < m_can_count){
3462 lib->UpdateInfo(info.cans[i], info.ams_id);
3463 lib->Show();
3464 }
3465 else{
3466 lib->Hide();
3467 }
3468 }
3469 }
3470 if (m_panel_road != nullptr){
3471 m_panel_road->UpdateInfo(m_info);
3472 }
3473
3474 Layout();
3475}

References Slic3r::GUI::AMSinfo::ams_id, Slic3r::GUI::AMSinfo::cans, m_can_count, m_can_lib_list, m_can_refresh_list, m_humidity, m_info, m_panel_road, and Slic3r::GUI::AMSLib::UpdateInfo().

Referenced by Slic3r::GUI::AMSControl::UpdateAms().

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

Member Data Documentation

◆ m_ams_model

AMSModel Slic3r::GUI::AmsItem::m_ams_model
private

◆ m_bitmap_extra_framework

ScalableBitmap Slic3r::GUI::AmsItem::m_bitmap_extra_framework
private

Referenced by AmsItem(), doRender(), and msw_rescale().

◆ m_can_count

int Slic3r::GUI::AmsItem::m_can_count = { 0 }
private
856{ 0 };

Referenced by AddCan(), create(), and UpdateInfo().

◆ m_can_lib_list

std::map<std::string, AMSLib*> Slic3r::GUI::AmsItem::m_can_lib_list
private

◆ m_can_refresh_list

std::map<std::string, AMSrefresh*> Slic3r::GUI::AmsItem::m_can_refresh_list
private

◆ m_canlib_id

std::string Slic3r::GUI::AmsItem::m_canlib_id
private

Referenced by SelectCan(), and SetDefSelectCan().

◆ m_canlib_selection

int Slic3r::GUI::AmsItem::m_canlib_selection = { -1 }
private

◆ m_ext_image

AMSExtImage* Slic3r::GUI::AmsItem::m_ext_image = { nullptr }
private
875{ nullptr }; //the ext image upon the ext ams

Referenced by create(), get_ext_image(), and msw_rescale().

◆ m_ext_text

AMSExtText* Slic3r::GUI::AmsItem::m_ext_text = { nullptr }
private
876{ nullptr }; //the ext text upon the ext ams

Referenced by AddCan(), and msw_rescale().

◆ m_humidity

AMSHumidity* Slic3r::GUI::AmsItem::m_humidity = { nullptr }
private
869{ nullptr };

Referenced by create(), msw_rescale(), and UpdateInfo().

◆ m_info

◆ m_panel_pos

AMSPanelPos Slic3r::GUI::AmsItem::m_panel_pos
private

◆ m_panel_road

AMSRoadUpPart* Slic3r::GUI::AmsItem::m_panel_road = { nullptr }
private
867{ nullptr };

Referenced by create(), SetAmsStep(), ShowRoad(), and UpdateInfo().

◆ m_road_canid

std::string Slic3r::GUI::AmsItem::m_road_canid
private

Referenced by RenderLiteRoad(), and SetAmsStep().

◆ m_road_colour

wxColour Slic3r::GUI::AmsItem::m_road_colour
private

Referenced by RenderLiteRoad().

◆ m_selection

int Slic3r::GUI::AmsItem::m_selection = { 0 }
private
855{ 0 };

Referenced by get_selection(), and set_selection().

◆ sizer_can

wxBoxSizer* Slic3r::GUI::AmsItem::sizer_can = {nullptr}
private
872{nullptr};

Referenced by create().

◆ sizer_can_extra

wxGridSizer* Slic3r::GUI::AmsItem::sizer_can_extra = { nullptr }
private
873{ nullptr };

Referenced by create().

◆ sizer_item

wxBoxSizer* Slic3r::GUI::AmsItem::sizer_item = { nullptr }
private
874{ nullptr };

Referenced by create().


The documentation for this class was generated from the following files:
  • /home/runner/work/OrcaSlicer/OrcaSlicer/src/slic3r/GUI/Widgets/AMSItem.hpp
  • /home/runner/work/OrcaSlicer/OrcaSlicer/src/slic3r/GUI/Widgets/AMSItem.cpp