mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-07-22 18:32:16 +00:00
NEW:new fialment load/unload process
jira:[none] Change-Id: Ie0076d5c7ec619414121c1f6d37876aaa4e044c1 (cherry picked from commit 5d9a7eaadcd5ab6dc2f18e65000ead81e7e8adb6)
This commit is contained in:
223
src/slic3r/GUI/Widgets/FilamentLoad.cpp
Normal file
223
src/slic3r/GUI/Widgets/FilamentLoad.cpp
Normal file
@@ -0,0 +1,223 @@
|
||||
#include "FilamentLoad.hpp"
|
||||
#include "Label.hpp"
|
||||
#include "../BitmapCache.hpp"
|
||||
#include "../I18N.hpp"
|
||||
#include "../GUI_App.hpp"
|
||||
|
||||
#include <wx/simplebook.h>
|
||||
#include <wx/dcgraph.h>
|
||||
|
||||
#include <boost/log/trivial.hpp>
|
||||
|
||||
#include "CalibUtils.hpp"
|
||||
|
||||
namespace Slic3r {
|
||||
namespace GUI {
|
||||
|
||||
FilamentLoad::FilamentLoad(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size)
|
||||
: wxSimplebook(parent, wxID_ANY, pos, size)
|
||||
{
|
||||
SetBackgroundColour(*wxWHITE);
|
||||
m_filament_load_steps = new FilamentStepIndicator(this, wxID_ANY);
|
||||
m_filament_unload_steps = new ::FilamentStepIndicator(this, wxID_ANY);
|
||||
m_filament_vt_load_steps = new ::FilamentStepIndicator(this, wxID_ANY);
|
||||
|
||||
this->AddPage(m_filament_load_steps, wxEmptyString, false);
|
||||
this->AddPage(m_filament_unload_steps, wxEmptyString, false);
|
||||
this->AddPage(m_filament_vt_load_steps, wxEmptyString, false);
|
||||
//UpdateStepCtrl(false);
|
||||
|
||||
FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_IDLE] = _L("Idling...");
|
||||
FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_HEAT_NOZZLE] = _L("Heat the nozzle");
|
||||
FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_CUT_FILAMENT] = _L("Cut filament");
|
||||
FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_PULL_CURR_FILAMENT] = _L("Pull back current filament");
|
||||
FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_PUSH_NEW_FILAMENT] = _L("Push new filament into extruder");
|
||||
FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_GRAB_NEW_FILAMENT] = _L("Grab new filament");
|
||||
FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_PURGE_OLD_FILAMENT] = _L("Purge old filament");
|
||||
//FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_FEED_FILAMENT] = _L("Feed Filament");
|
||||
FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_CONFIRM_EXTRUDED] = _L("Confirm extruded");
|
||||
FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_CHECK_POSITION] = _L("Check filament location");
|
||||
}
|
||||
|
||||
void FilamentLoad::SetFilamentStep(FilamentStep item_idx, FilamentStepType f_type)
|
||||
{
|
||||
if (item_idx == FilamentStep::STEP_IDLE) {
|
||||
m_filament_load_steps->Idle();
|
||||
m_filament_unload_steps->Idle();
|
||||
m_filament_vt_load_steps->Idle();
|
||||
this->Hide();
|
||||
return;
|
||||
}
|
||||
this->Show();
|
||||
wxString step_str = wxEmptyString;
|
||||
if (item_idx < FilamentStep::STEP_COUNT) {
|
||||
step_str = FILAMENT_CHANGE_STEP_STRING[item_idx];
|
||||
}
|
||||
|
||||
auto step_control = m_filament_load_steps;
|
||||
if (f_type == FilamentStepType::STEP_TYPE_LOAD) {
|
||||
step_control = m_filament_load_steps;
|
||||
if (item_idx > 0 && item_idx < FilamentStep::STEP_COUNT) {
|
||||
if (this->GetSelection() != 0) {
|
||||
this->SetSelection(0);
|
||||
}
|
||||
m_filament_load_steps->SelectItem(m_filament_load_steps->GetItemUseText(step_str));
|
||||
}
|
||||
else {
|
||||
m_filament_load_steps->Idle();
|
||||
this->Hide();
|
||||
this->Layout();
|
||||
}
|
||||
}
|
||||
else if (f_type == FilamentStepType::STEP_TYPE_UNLOAD) {
|
||||
step_control = m_filament_unload_steps;
|
||||
if (item_idx > 0 && item_idx < FilamentStep::STEP_COUNT) {
|
||||
if (GetSelection() != 1) {
|
||||
this->SetSelection(1);
|
||||
this->Layout();
|
||||
}
|
||||
m_filament_unload_steps->SelectItem(m_filament_unload_steps->GetItemUseText(step_str));
|
||||
}
|
||||
else {
|
||||
m_filament_unload_steps->Idle();
|
||||
this->Hide();
|
||||
this->Layout();
|
||||
}
|
||||
}
|
||||
else if (f_type == FilamentStepType::STEP_TYPE_VT_LOAD) {
|
||||
step_control = m_filament_vt_load_steps;
|
||||
this->SetSelection(2);
|
||||
this->Layout();
|
||||
if (item_idx > 0 && item_idx < FilamentStep::STEP_COUNT) {
|
||||
if (item_idx == STEP_CONFIRM_EXTRUDED) {
|
||||
m_filament_vt_load_steps->SelectItem(2);
|
||||
}
|
||||
else {
|
||||
m_filament_vt_load_steps->SelectItem(m_filament_vt_load_steps->GetItemUseText(step_str));
|
||||
}
|
||||
}
|
||||
else {
|
||||
m_filament_vt_load_steps->Idle();
|
||||
this->Hide();
|
||||
this->Layout();
|
||||
}
|
||||
}
|
||||
else {
|
||||
step_control = m_filament_load_steps;
|
||||
if (item_idx > 0 && item_idx < FilamentStep::STEP_COUNT) {
|
||||
SetSelection(0);
|
||||
m_filament_load_steps->SelectItem(m_filament_load_steps->GetItemUseText(step_str));
|
||||
}
|
||||
else {
|
||||
m_filament_load_steps->Idle();
|
||||
this->Hide();
|
||||
this->Layout();
|
||||
}
|
||||
}
|
||||
|
||||
wxString slot_info = L"Ams-";
|
||||
slot_info = slot_info + std::to_string(m_ams_id);
|
||||
slot_info = slot_info + L'-';
|
||||
slot_info = slot_info + std::to_string(m_slot_id);
|
||||
slot_info = slot_info + L" Slot";
|
||||
step_control->SetSlotInformation(slot_info);
|
||||
}
|
||||
|
||||
void FilamentLoad::UpdateStepCtrl(bool is_extrusion_exist) {
|
||||
m_filament_load_steps->DeleteAllItems();
|
||||
m_filament_unload_steps->DeleteAllItems();
|
||||
m_filament_vt_load_steps->DeleteAllItems();
|
||||
|
||||
is_extrusion = true; //Forgot what it means, need to update dynamically
|
||||
|
||||
if (m_ams_model == AMSModel::GENERIC_AMS || m_ext_model == AMSModel::GENERIC_AMS) {
|
||||
if (is_extrusion) {
|
||||
m_filament_load_steps->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_HEAT_NOZZLE]);
|
||||
m_filament_load_steps->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_CUT_FILAMENT]);
|
||||
m_filament_load_steps->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_PULL_CURR_FILAMENT]);
|
||||
m_filament_load_steps->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_PUSH_NEW_FILAMENT]);
|
||||
m_filament_load_steps->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_PURGE_OLD_FILAMENT]);
|
||||
}
|
||||
else {
|
||||
m_filament_load_steps->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_HEAT_NOZZLE]);
|
||||
m_filament_load_steps->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_PUSH_NEW_FILAMENT]);
|
||||
m_filament_load_steps->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_PURGE_OLD_FILAMENT]);
|
||||
}
|
||||
|
||||
m_filament_vt_load_steps->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_HEAT_NOZZLE]);
|
||||
m_filament_vt_load_steps->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_PUSH_NEW_FILAMENT]);
|
||||
m_filament_vt_load_steps->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_GRAB_NEW_FILAMENT]);
|
||||
m_filament_vt_load_steps->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_PURGE_OLD_FILAMENT]);
|
||||
|
||||
m_filament_unload_steps->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_HEAT_NOZZLE]);
|
||||
m_filament_unload_steps->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_CUT_FILAMENT]);
|
||||
m_filament_unload_steps->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_PULL_CURR_FILAMENT]);
|
||||
}
|
||||
|
||||
|
||||
if (m_ams_model == AMSModel::AMS_LITE || m_ext_model == AMSModel::AMS_LITE) {
|
||||
m_filament_load_steps->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_HEAT_NOZZLE]);
|
||||
m_filament_load_steps->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_CHECK_POSITION]);
|
||||
m_filament_load_steps->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_CUT_FILAMENT]);
|
||||
m_filament_load_steps->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_PULL_CURR_FILAMENT]);
|
||||
m_filament_load_steps->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_PUSH_NEW_FILAMENT]);
|
||||
m_filament_load_steps->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_PURGE_OLD_FILAMENT]);
|
||||
|
||||
m_filament_vt_load_steps->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_HEAT_NOZZLE]);
|
||||
m_filament_vt_load_steps->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_CHECK_POSITION]);
|
||||
m_filament_vt_load_steps->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_CUT_FILAMENT]);
|
||||
m_filament_vt_load_steps->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_PULL_CURR_FILAMENT]);
|
||||
m_filament_vt_load_steps->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_PUSH_NEW_FILAMENT]);
|
||||
m_filament_vt_load_steps->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_PURGE_OLD_FILAMENT]);
|
||||
|
||||
m_filament_unload_steps->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_HEAT_NOZZLE]);
|
||||
m_filament_unload_steps->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_CHECK_POSITION]);
|
||||
m_filament_unload_steps->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_CUT_FILAMENT]);
|
||||
m_filament_unload_steps->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_PULL_CURR_FILAMENT]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void FilamentLoad::show_nofilament_mode(bool show)
|
||||
{
|
||||
m_filament_load_steps->DeleteAllItems();
|
||||
m_filament_unload_steps->DeleteAllItems();
|
||||
m_filament_vt_load_steps->DeleteAllItems();
|
||||
m_filament_load_steps->Idle();
|
||||
m_filament_unload_steps->Idle();
|
||||
m_filament_vt_load_steps->Idle();
|
||||
this->Layout();
|
||||
Refresh();
|
||||
/*if (!show)
|
||||
{
|
||||
m_filament_load_steps->Idle();
|
||||
m_filament_unload_steps->Idle();
|
||||
m_filament_vt_load_steps->Idle();
|
||||
}
|
||||
else {
|
||||
this->Show();
|
||||
this->Layout();
|
||||
}*/
|
||||
}
|
||||
|
||||
void FilamentLoad::set_min_size(const wxSize& minSize) {
|
||||
this->SetMinSize(minSize);
|
||||
m_filament_load_steps->SetMinSize(minSize);
|
||||
m_filament_unload_steps->SetMinSize(minSize);
|
||||
m_filament_vt_load_steps->SetMinSize(minSize);
|
||||
}
|
||||
|
||||
void FilamentLoad::set_max_size(const wxSize& minSize) {
|
||||
this->SetMaxSize(minSize);
|
||||
m_filament_load_steps->SetMaxSize(minSize);
|
||||
m_filament_unload_steps->SetMaxSize(minSize);
|
||||
m_filament_vt_load_steps->SetMaxSize(minSize);
|
||||
}
|
||||
|
||||
void FilamentLoad::set_background_color(const wxColour& colour) {
|
||||
m_filament_load_steps->SetBackgroundColour(colour);
|
||||
m_filament_unload_steps->SetBackgroundColour(colour);
|
||||
m_filament_vt_load_steps->SetBackgroundColour(colour);
|
||||
}
|
||||
|
||||
}} // namespace Slic3r::GUI
|
||||
Reference in New Issue
Block a user