mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-05-15 09:32:09 +00:00
1. first formal version of macos 2. add the bambu networking plugin install logic 3. auto compute the wipe volume when filament change 4. add the logic of wiping into support 5. refine the GUI layout and icons, improve the gui apperance in lots of small places 6. serveral improve to support 7. support AMS auto-mapping 8. disable lots of unstable features: such as params table, media file download, HMS 9. fix serveral kinds of bugs 10. update the document of building 11. ...
152 lines
4.3 KiB
C++
152 lines
4.3 KiB
C++
#include "BindJob.hpp"
|
|
|
|
#include "slic3r/GUI/Plater.hpp"
|
|
#include "slic3r/GUI/GUI.hpp"
|
|
#include "slic3r/GUI/GUI_App.hpp"
|
|
|
|
namespace Slic3r {
|
|
namespace GUI {
|
|
|
|
wxDEFINE_EVENT(EVT_BIND_UPDATE_MESSAGE, wxCommandEvent);
|
|
wxDEFINE_EVENT(EVT_BIND_MACHINE_SUCCESS, wxCommandEvent);
|
|
wxDEFINE_EVENT(EVT_BIND_MACHINE_FAIL, wxCommandEvent);
|
|
|
|
|
|
static wxString waiting_auth_str = _L("Logging in");
|
|
static wxString login_failed_str = _L("Login failed");
|
|
|
|
|
|
wxString get_login_fail_reason(std::string fail_reason)
|
|
{
|
|
if (fail_reason == "NO Regions")
|
|
return _L("The region parameter is incorrrect");
|
|
else if (fail_reason == "Cloud Timeout")
|
|
return _L("Failure of printer login");
|
|
else if (fail_reason == "Ticket Failed")
|
|
return _L("Failed to get ticket");
|
|
else if (fail_reason == "Wait Auth Timeout")
|
|
return _L("User authorization timeout");
|
|
else if (fail_reason == "Bind Failure")
|
|
return _L("Failure of bind");
|
|
else
|
|
return _L("Unknown Failure");
|
|
}
|
|
|
|
BindJob::BindJob(std::shared_ptr<ProgressIndicator> pri, Plater *plater, std::string dev_id, std::string dev_ip)
|
|
: PlaterJob{std::move(pri), plater},
|
|
m_dev_id(dev_id),
|
|
m_dev_ip(dev_ip)
|
|
{
|
|
;
|
|
}
|
|
|
|
void BindJob::on_exception(const std::exception_ptr &eptr)
|
|
{
|
|
try {
|
|
if (eptr)
|
|
std::rethrow_exception(eptr);
|
|
} catch (std::exception &e) {
|
|
PlaterJob::on_exception(eptr);
|
|
}
|
|
}
|
|
|
|
void BindJob::on_success(std::function<void()> success)
|
|
{
|
|
m_success_fun = success;
|
|
}
|
|
|
|
void BindJob::update_status(int st, const wxString &msg)
|
|
{
|
|
GUI::Job::update_status(st, msg);
|
|
//post_event(wxCommandEvent(EVT_BIND_UPDATE_MESSAGE), msg);
|
|
wxCommandEvent event(EVT_BIND_UPDATE_MESSAGE);
|
|
event.SetString(msg);
|
|
event.SetEventObject(m_event_handle);
|
|
wxPostEvent(m_event_handle, event);
|
|
}
|
|
|
|
void BindJob::process()
|
|
{
|
|
/* display info */
|
|
wxString msg = waiting_auth_str;
|
|
int curr_percent = 0;
|
|
|
|
NetworkAgent* m_agent = wxGetApp().getAgent();
|
|
if (!m_agent) { return; }
|
|
|
|
// get timezone
|
|
wxDateTime::TimeZone tz(wxDateTime::Local);
|
|
long offset = tz.GetOffset();
|
|
std::string timezone = get_timezone_utc_hm(offset);
|
|
|
|
int result = m_agent->bind(m_dev_ip, timezone,
|
|
[this, &curr_percent, &msg](int stage, int code, std::string info) {
|
|
if (stage == BBL::BindJobStage::LoginStageConnect) {
|
|
curr_percent = 15;
|
|
msg = _L("Logging in");
|
|
} else if (stage == BBL::BindJobStage::LoginStageLogin) {
|
|
curr_percent = 30;
|
|
msg = _L("Logging in");
|
|
} else if (stage == BBL::BindJobStage::LoginStageWaitForLogin) {
|
|
curr_percent = 45;
|
|
msg = _L("Logging in");
|
|
} else if (stage == BBL::BindJobStage::LoginStageGetIdentify) {
|
|
curr_percent = 60;
|
|
msg = _L("Logging in");
|
|
} else if (stage == BBL::BindJobStage::LoginStageWaitAuth) {
|
|
curr_percent = 80;
|
|
msg = _L("Logging in");
|
|
} else if (stage == BBL::BindJobStage::LoginStageFinished) {
|
|
curr_percent = 100;
|
|
msg = _L("Logging in");
|
|
} else {
|
|
msg = _L("Logging in");
|
|
}
|
|
if (code != 0) {
|
|
msg = _L("Login failed") + wxString::Format("(code=%d,info=%s)", code, info);
|
|
}
|
|
update_status(curr_percent, msg);
|
|
}
|
|
);
|
|
|
|
if (result < 0) {
|
|
BOOST_LOG_TRIVIAL(trace) << "login: result = " << result;
|
|
post_fail_event();
|
|
return;
|
|
}
|
|
|
|
DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager();
|
|
if (!dev) {
|
|
BOOST_LOG_TRIVIAL(trace) << "login: dev is null";
|
|
post_fail_event();
|
|
return;
|
|
}
|
|
dev->update_user_machine_list_info();
|
|
|
|
wxCommandEvent event(EVT_BIND_MACHINE_SUCCESS);
|
|
event.SetEventObject(m_event_handle);
|
|
wxPostEvent(m_event_handle, event);
|
|
return;
|
|
}
|
|
|
|
void BindJob::finalize()
|
|
{
|
|
if (was_canceled()) return;
|
|
|
|
Job::finalize();
|
|
}
|
|
|
|
void BindJob::set_event_handle(wxWindow *hanle)
|
|
{
|
|
m_event_handle = hanle;
|
|
}
|
|
|
|
void BindJob::post_fail_event()
|
|
{
|
|
wxCommandEvent event(EVT_BIND_MACHINE_FAIL);
|
|
event.SetEventObject(m_event_handle);
|
|
wxPostEvent(m_event_handle, event);
|
|
}
|
|
|
|
}} // namespace Slic3r::GUI
|