mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-07-18 08:22:06 +00:00
Resync the device status pages
This commit is contained in:
@@ -12,9 +12,10 @@ static const char* HMS_PATH = "hms";
|
||||
static const char* HMS_LOCAL_IMG_PATH = "hms/local_image";
|
||||
|
||||
// the local HMS info
|
||||
// Orca: dev-id-type set trimmed to the devices Orca ships local HMS images for
|
||||
static unordered_set<string> package_dev_id_types {"094", "239", "093", "22E"};
|
||||
|
||||
// HMS should be disabled when stealth mode is on or networking is not installed
|
||||
// Orca: HMS should be disabled when stealth mode is on or networking is not installed
|
||||
static bool should_disable_hms()
|
||||
{
|
||||
Slic3r::AppConfig* config = Slic3r::GUI::wxGetApp().app_config;
|
||||
@@ -251,7 +252,7 @@ int HMSQuery::save_to_local(std::string lang, std::string hms_type, std::string
|
||||
std::string dir_str = (hms_folder / filename).make_preferred().string();
|
||||
std::ofstream json_file(encode_path(dir_str.c_str()));
|
||||
if (json_file.is_open()) {
|
||||
json_file << save_json.dump(1, '\t') << std::endl;
|
||||
json_file << save_json.dump(1, '\t') << std::endl; // Orca: tab-indented dump
|
||||
json_file.close();
|
||||
return 0;
|
||||
}
|
||||
@@ -266,6 +267,7 @@ std::string HMSQuery::hms_language_code()
|
||||
// set language code to en by default
|
||||
return "en";
|
||||
std::string lang_code = wxGetApp().app_config->get_language_code();
|
||||
// Orca: english fallback limited to locales without a translated HMS catalog
|
||||
if (lang_code.compare("uk") == 0
|
||||
|| lang_code.compare("cs") == 0
|
||||
|| lang_code.compare("ru") == 0) {
|
||||
@@ -577,6 +579,7 @@ wxImage HMSQuery::query_image_from_local(const wxString& image_name)
|
||||
{
|
||||
const fs::path& image_path = entry.path();
|
||||
const fs::path& image_name = fs::relative(image_path, local_img_dir);
|
||||
// Orca: from_path() for correct UTF-8 path encoding
|
||||
m_hms_local_images[from_path(image_name)] = wxImage(from_path(image_path));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -88,10 +88,7 @@ MediaPlayCtrl::MediaPlayCtrl(wxWindow *parent, wxMediaCtrl2 *media_ctrl, const w
|
||||
|
||||
m_button_play->Bind(wxEVT_COMMAND_BUTTON_CLICKED, [this](auto &e) { TogglePlay(); });
|
||||
m_button_play->Bind(wxEVT_RIGHT_UP, [this](auto & e) { m_media_ctrl->Play(); });
|
||||
// m_label_status->Bind(wxEVT_LEFT_UP, [this](auto &e) {
|
||||
// auto url = wxString::Format(L"https://wiki.bambulab.com/%s/software/bambu-studio/faq/live-view", L"en");
|
||||
// wxLaunchDefaultBrowser(url);
|
||||
// });
|
||||
// Orca: live-view FAQ link binding removed (vendor URL)
|
||||
|
||||
Bind(wxEVT_RIGHT_UP, [this](auto & e) {
|
||||
wxClipboard & c = *wxTheClipboard;
|
||||
|
||||
@@ -541,6 +541,20 @@ void MonitorPanel::jump_to_LiveView()
|
||||
m_status_info_panel->get_media_play_ctrl()->jump_to_play();
|
||||
}
|
||||
|
||||
void MonitorPanel::jump_to_Rack()
|
||||
{
|
||||
if (!this->IsShown()) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto page = m_tabpanel->GetCurrentPage();
|
||||
if (page && page != m_status_info_panel) {
|
||||
m_tabpanel->SetSelection(PT_STATUS);
|
||||
}
|
||||
|
||||
m_status_info_panel->jump_to_Rack();
|
||||
}
|
||||
|
||||
void MonitorPanel::update_network_version_footer()
|
||||
{
|
||||
std::string binary_version = Slic3r::NetworkAgent::get_version();
|
||||
|
||||
@@ -158,6 +158,7 @@ public:
|
||||
void jump_to_HMS();
|
||||
void jump_to_Upgrade();
|
||||
void jump_to_LiveView();
|
||||
void jump_to_Rack();
|
||||
void update_network_version_footer();
|
||||
};
|
||||
|
||||
|
||||
@@ -4503,6 +4503,8 @@ void StatusPanel::on_filament_edit(wxCommandEvent &event)
|
||||
|
||||
if (obj) {
|
||||
m_filament_setting_dlg->obj = obj;
|
||||
// Orca: 2D mode (laser/cut) only allows viewing filament info, not editing
|
||||
m_filament_setting_dlg->m_view_only = !obj->is_fdm_type();
|
||||
|
||||
int ams_id = event.GetInt();
|
||||
int slot_id = event.GetString().IsEmpty() ? 0 : std::stoi(event.GetString().ToStdString());
|
||||
@@ -4571,6 +4573,8 @@ void StatusPanel::on_ext_spool_edit(wxCommandEvent &event)
|
||||
|
||||
if (obj) {
|
||||
m_filament_setting_dlg->obj = obj;
|
||||
// Orca: 2D mode (laser/cut) only allows viewing filament info, not editing
|
||||
m_filament_setting_dlg->m_view_only = !obj->is_fdm_type();
|
||||
|
||||
int ams_id = event.GetInt();
|
||||
int slot_id = event.GetString().IsEmpty() ? 0 : std::stoi(event.GetString().ToStdString());
|
||||
@@ -4716,16 +4720,8 @@ void StatusPanel::on_ams_selected(wxCommandEvent &event)
|
||||
|
||||
void StatusPanel::on_ams_guide(wxCommandEvent& event)
|
||||
{
|
||||
wxString ams_wiki_url;
|
||||
if (m_ams_control && m_ams_control->m_is_none_ams_mode == AMSModel::GENERIC_AMS) {
|
||||
ams_wiki_url = "https://wiki.bambulab.com/en/software/bambu-studio/use-ams-on-bambu-studio";
|
||||
}
|
||||
else if (m_ams_control && m_ams_control->m_is_none_ams_mode == AMSModel::AMS_LITE) {
|
||||
ams_wiki_url = "https://wiki.bambulab.com/en/ams-lite";
|
||||
}
|
||||
else {
|
||||
ams_wiki_url = "https://wiki.bambulab.com/en/software/bambu-studio/use-ams-on-bambu-studio";
|
||||
}
|
||||
// Orca: neutral wiki link (vendor URLs removed)
|
||||
wxString ams_wiki_url = "https://www.orcaslicer.com/wiki/";
|
||||
|
||||
wxLaunchDefaultBrowser(ams_wiki_url);
|
||||
}
|
||||
@@ -5424,7 +5420,8 @@ void StatusPanel::update_filament_loading_panel(MachineObject* obj)
|
||||
bool ams_loading_state = false;
|
||||
auto ams_status_sub = obj->ams_status_sub;
|
||||
|
||||
if (obj->is_enable_np) {
|
||||
// Orca: skip busy-loading detection during a cold pull (backing enum/parse landed in cluster 2)
|
||||
if (obj->is_enable_np && obj->ams_status_main != AMS_STATUS_MAIN_COLD_PULL) {
|
||||
ams_loading_state = obj->GetExtderSystem()->IsBusyLoading();
|
||||
} else if (obj->ams_status_main == AMS_STATUS_MAIN_FILAMENT_CHANGE) {
|
||||
ams_loading_state = true;
|
||||
|
||||
@@ -219,6 +219,8 @@ MachineInfoPanel::MachineInfoPanel(wxWindow* parent, wxWindowID id, const wxPoin
|
||||
createAirPumpWidgets(m_main_left_sizer);
|
||||
createExtinguishWidgets(m_main_left_sizer);
|
||||
createFilaTrackSwitchWidgets(m_main_left_sizer);
|
||||
createRotaryWidgets(m_main_left_sizer); // Orca: accessory firmware version display
|
||||
createExhaustFan(m_main_left_sizer); // Orca: accessory firmware version display
|
||||
|
||||
// nozzle rack widgets (H2C induction hotend rack; hidden unless GetNozzleRack()->IsSupported())
|
||||
createNozzleRackWidgets(m_main_left_sizer);
|
||||
@@ -429,6 +431,48 @@ void MachineInfoPanel::createFilaTrackSwitchWidgets(wxBoxSizer* main_left_sizer)
|
||||
main_left_sizer->Add(m_filatrack_sizer, 0, wxEXPAND, 0);
|
||||
}
|
||||
|
||||
// Orca: accessory firmware version display (device photo asset not shipped, so no left icon)
|
||||
void MachineInfoPanel::createRotaryWidgets(wxBoxSizer* main_left_sizer)
|
||||
{
|
||||
m_rotary_line_above = new wxStaticLine(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL);
|
||||
m_rotary_line_above->SetBackgroundColour(wxColour(206, 206, 206));
|
||||
main_left_sizer->Add(m_rotary_line_above, 0, wxEXPAND | wxLEFT, FromDIP(40));
|
||||
|
||||
m_rotary_img = new wxStaticBitmap(this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize(FromDIP(200), FromDIP(200)));
|
||||
|
||||
wxBoxSizer* content_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
content_sizer->Add(0, 40, 0, wxEXPAND, FromDIP(5));
|
||||
m_rotary_version = new uiDeviceUpdateVersion(this, wxID_ANY);
|
||||
content_sizer->Add(m_rotary_version, 0, wxEXPAND, 0);
|
||||
|
||||
m_rotary_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
m_rotary_sizer->Add(m_rotary_img, 0, wxALIGN_TOP | wxALL, FromDIP(5));
|
||||
m_rotary_sizer->Add(content_sizer, 1, wxEXPAND, 0);
|
||||
|
||||
main_left_sizer->Add(m_rotary_sizer, 0, wxEXPAND, 0);
|
||||
}
|
||||
|
||||
// Orca: accessory firmware version display (device photo asset not shipped, so no left icon)
|
||||
void MachineInfoPanel::createExhaustFan(wxBoxSizer* main_left_sizer)
|
||||
{
|
||||
m_exhaustfan_line_above = new wxStaticLine(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL);
|
||||
m_exhaustfan_line_above->SetBackgroundColour(wxColour(206, 206, 206));
|
||||
main_left_sizer->Add(m_exhaustfan_line_above, 0, wxEXPAND | wxLEFT, FromDIP(40));
|
||||
|
||||
m_exhaustfan_img = new wxStaticBitmap(this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize(FromDIP(200), FromDIP(200)));
|
||||
|
||||
wxBoxSizer* content_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
content_sizer->Add(0, 40, 0, wxEXPAND, FromDIP(5));
|
||||
m_exhaustfan_version = new uiDeviceUpdateVersion(this, wxID_ANY);
|
||||
content_sizer->Add(m_exhaustfan_version, 0, wxEXPAND, 0);
|
||||
|
||||
m_exhaustfan_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
m_exhaustfan_sizer->Add(m_exhaustfan_img, 0, wxALIGN_TOP | wxALL, FromDIP(5));
|
||||
m_exhaustfan_sizer->Add(content_sizer, 1, wxEXPAND, 0);
|
||||
|
||||
main_left_sizer->Add(m_exhaustfan_sizer, 0, wxEXPAND, 0);
|
||||
}
|
||||
|
||||
void MachineInfoPanel::msw_rescale()
|
||||
{
|
||||
rescale_bitmaps();
|
||||
@@ -569,6 +613,8 @@ void MachineInfoPanel::update(MachineObject* obj)
|
||||
update_laszer(obj);
|
||||
update_extinguish(obj);
|
||||
update_filatrack(obj);
|
||||
update_rotary(obj); // Orca: accessory firmware version display
|
||||
update_exhaustfan(obj); // Orca: accessory firmware version display
|
||||
update_nozzle_rack(obj);
|
||||
|
||||
//update progress
|
||||
@@ -1167,6 +1213,34 @@ void MachineInfoPanel::update_filatrack(MachineObject* obj)
|
||||
}
|
||||
}
|
||||
|
||||
// Orca: accessory firmware version display (backing parse landed in cluster 2)
|
||||
void MachineInfoPanel::update_rotary(MachineObject* obj)
|
||||
{
|
||||
if (obj && obj->rotary_version_info.isValid())
|
||||
{
|
||||
m_rotary_version->UpdateInfo(obj->rotary_version_info);
|
||||
show_rotary(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
show_rotary(false);
|
||||
}
|
||||
}
|
||||
|
||||
// Orca: accessory firmware version display (backing parse landed in cluster 2)
|
||||
void MachineInfoPanel::update_exhaustfan(MachineObject* obj)
|
||||
{
|
||||
if (obj && obj->exhaustfan_version_info.isValid())
|
||||
{
|
||||
m_exhaustfan_version->UpdateInfo(obj->exhaustfan_version_info);
|
||||
show_exhaustfan(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
show_exhaustfan(false);
|
||||
}
|
||||
}
|
||||
|
||||
void MachineInfoPanel::show_status(int status, std::string upgrade_status_str)
|
||||
{
|
||||
if (last_status == status && last_status_str == upgrade_status_str) return;
|
||||
@@ -1311,6 +1385,28 @@ void MachineInfoPanel::show_filatrack(bool show)
|
||||
}
|
||||
}
|
||||
|
||||
// Orca: accessory firmware version display
|
||||
void MachineInfoPanel::show_rotary(bool show)
|
||||
{
|
||||
if (m_rotary_version->IsShown() != show)
|
||||
{
|
||||
m_rotary_img->Show(show);
|
||||
m_rotary_line_above->Show(show);
|
||||
m_rotary_version->Show(show);
|
||||
}
|
||||
}
|
||||
|
||||
// Orca: accessory firmware version display
|
||||
void MachineInfoPanel::show_exhaustfan(bool show)
|
||||
{
|
||||
if (m_exhaustfan_version->IsShown() != show)
|
||||
{
|
||||
m_exhaustfan_img->Show(show);
|
||||
m_exhaustfan_line_above->Show(show);
|
||||
m_exhaustfan_version->Show(show);
|
||||
}
|
||||
}
|
||||
|
||||
void MachineInfoPanel::createNozzleRackWidgets(wxBoxSizer *main_left_sizer)
|
||||
{
|
||||
// horizontal line above
|
||||
|
||||
@@ -140,6 +140,18 @@ protected:
|
||||
wxStaticLine* m_filatrack_line_above = nullptr;
|
||||
uiDeviceUpdateVersion* m_filatrack_version = nullptr;
|
||||
|
||||
/* rotary attachment info (Orca: accessory firmware version display) */
|
||||
wxBoxSizer* m_rotary_sizer = nullptr;
|
||||
wxStaticBitmap* m_rotary_img = nullptr;
|
||||
wxStaticLine* m_rotary_line_above = nullptr;
|
||||
uiDeviceUpdateVersion* m_rotary_version = nullptr;
|
||||
|
||||
/* exhaust fan info (Orca: accessory firmware version display) */
|
||||
wxBoxSizer* m_exhaustfan_sizer = nullptr;
|
||||
wxStaticBitmap* m_exhaustfan_img = nullptr;
|
||||
wxStaticLine* m_exhaustfan_line_above = nullptr;
|
||||
uiDeviceUpdateVersion* m_exhaustfan_version = nullptr;
|
||||
|
||||
/* nozzle rack (H2C induction hotend rack) — opens wgtDeviceNozzleRackUpgradeDlg */
|
||||
wxBoxSizer* m_nozzle_rack_sizer = nullptr;
|
||||
wxStaticBitmap* m_nozzle_rack_img = nullptr;
|
||||
@@ -228,6 +240,8 @@ private:
|
||||
void createLaserWidgets(wxBoxSizer* main_left_sizer);
|
||||
void createExtinguishWidgets(wxBoxSizer* main_left_sizer);
|
||||
void createFilaTrackSwitchWidgets(wxBoxSizer* main_left_sizer);
|
||||
void createRotaryWidgets(wxBoxSizer* main_left_sizer); // Orca: accessory firmware version display
|
||||
void createExhaustFan(wxBoxSizer* main_left_sizer); // Orca: accessory firmware version display
|
||||
void createNozzleRackWidgets(wxBoxSizer* main_left_sizer);
|
||||
|
||||
void update_air_pump(MachineObject* obj);
|
||||
@@ -235,6 +249,8 @@ private:
|
||||
void update_laszer(MachineObject* obj);
|
||||
void update_extinguish(MachineObject* obj);
|
||||
void update_filatrack(MachineObject* obj);
|
||||
void update_rotary(MachineObject* obj); // Orca: accessory firmware version display
|
||||
void update_exhaustfan(MachineObject* obj); // Orca: accessory firmware version display
|
||||
void update_nozzle_rack(MachineObject* obj);
|
||||
|
||||
void show_air_pump(bool show = true);
|
||||
@@ -242,6 +258,8 @@ private:
|
||||
void show_laszer(bool show = true);
|
||||
void show_extinguish(bool show = true);
|
||||
void show_filatrack(bool show = true);
|
||||
void show_rotary(bool show = true); // Orca: accessory firmware version display
|
||||
void show_exhaustfan(bool show = true); // Orca: accessory firmware version display
|
||||
void show_nozzle_rack(bool show = true);
|
||||
|
||||
void on_nozzle_rack_update(wxCommandEvent& event);
|
||||
|
||||
@@ -274,8 +274,8 @@ SideTools::SideTools(wxWindow *parent, wxWindowID id, const wxPoint &pos, const
|
||||
wxBoxSizer* connection_sizer_V = new wxBoxSizer(wxVERTICAL);
|
||||
wxBoxSizer* connection_sizer_H = new wxBoxSizer(wxHORIZONTAL);
|
||||
|
||||
// ORCA standardized HyperLink
|
||||
m_hyperlink = new HyperLink(m_connection_info, _L("Failed to connect to the server"), wxT("https://wiki.bambulab.com/en/software/bambu-studio/failed-to-connect-printer"));
|
||||
// ORCA standardized HyperLink; Orca: neutral wiki link (vendor URL removed)
|
||||
m_hyperlink = new HyperLink(m_connection_info, _L("Failed to connect to the server"), wxT("https://www.orcaslicer.com/wiki/"));
|
||||
|
||||
m_more_err_open = ScalableBitmap(this, "monitir_err_open", 16);
|
||||
m_more_err_close = ScalableBitmap(this, "monitir_err_close", 16);
|
||||
|
||||
Reference in New Issue
Block a user