mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-10-07 15:51:08 +00:00
Follow-up to the feature/OrcaSonar review. Scopes the new behavior to the OrcaSonar agent, fixes several AMS-sync and lifecycle bugs, and makes the MQTT tests run in CI. Non-OrcaSonar agents keep their existing behavior. ## Changes Discovery - Gate the background SSDP scan to a configured OrcaSonar machine instead of running for every non-BBL profile; drive discovery on demand from the machine-select popup and back off idle rounds from 5s to 60s. - Add NSLocalNetworkUsageDescription and NSBonjourServices to both macOS Info.plist templates. AMS sync - Resolve id-less printer-set trays by material type in get_ams_cobox_infos and the sidebar badge loop, matching sync_ams_list, so combo arrays and badges stay aligned. - Keep a printer-set tray that resolved by type out of the "unknown or incompatible filaments" dialog. AMS device UI - Gate the "Empty" tray classification, and the editable temperature fields, to the OrcaSonar agent; Bambu keeps "?" and read-only presets. - Validate AMS material temps on confirm: reject out-of-range values and min > max before the command is sent. Storage tab - Bind the show/hide handler on the panel's ancestors (StoragePanel and MonitorPanel) and unbind on destruction, so the Bambu file system stops when the tab is left. Transport - Load /etc/ssl/cert.pem on macOS in add_platform_root_certificates, after set_default_verify_paths. - Release lifecycle_mutex before start()'s connect wait so stop() can cancel the attempt and signal completion instead of stalling the UI thread. Localization - Add OrcaFilesPanel.cpp to list.txt and regenerate the catalogs. ## Tests - Un-hide the loopback MockBroker integration tests (ephemeral port, no network) so ctest registers and runs them. - Mock broker tracks SUBSCRIBE/UNSUBSCRIBE and delivers push_report only to a subscribed topic; the reconnect test asserts the re-SUBSCRIBE. - Add bbl empty-tray cases, an AMS combo-alignment case, and unknowns assertions to the AMS sync tests.
125 lines
2.6 KiB
C++
125 lines
2.6 KiB
C++
//
|
|
// MediaFilePanel.h
|
|
// libslic3r_gui
|
|
//
|
|
// Created by cmguo on 2021/12/7.
|
|
//
|
|
|
|
#ifndef MediaFilePanel_h
|
|
#define MediaFilePanel_h
|
|
|
|
#include <boost/smart_ptr/shared_ptr.hpp>
|
|
#include <cstddef>
|
|
#include <set>
|
|
#include <vector>
|
|
|
|
#include "GUI_Utils.hpp"
|
|
#include "wxExtensions.hpp"
|
|
|
|
#include <wx/event.h>
|
|
#include <string>
|
|
#include <wx/frame.h>
|
|
#include <wx/panel.h>
|
|
|
|
class Button;
|
|
class SwitchButton;
|
|
class Label;
|
|
class StaticBox;
|
|
class PrinterFileSystem;
|
|
|
|
namespace Slic3r {
|
|
|
|
class MachineObject;
|
|
|
|
namespace GUI {
|
|
|
|
class ImageGrid;
|
|
|
|
class MediaFilePanel : public wxPanel
|
|
{
|
|
public:
|
|
MediaFilePanel(wxWindow * parent);
|
|
|
|
~MediaFilePanel();
|
|
|
|
void UpdateByObj(MachineObject * obj);
|
|
|
|
void SwitchStorage(bool external);
|
|
|
|
public:
|
|
void Rescale();
|
|
|
|
void SetSelecting(bool selecting);
|
|
|
|
private:
|
|
void modeChanged(wxCommandEvent & e);
|
|
|
|
void on_show_hide(wxShowEvent & e);
|
|
|
|
void fetchUrl(boost::weak_ptr<PrinterFileSystem> fs);
|
|
|
|
void doAction(size_t index, int action);
|
|
|
|
private:
|
|
ScalableBitmap m_bmp_loading;
|
|
ScalableBitmap m_bmp_failed;
|
|
ScalableBitmap m_bmp_empty;
|
|
|
|
::StaticBox *m_time_panel = nullptr;
|
|
::Button *m_button_year = nullptr;
|
|
::Button *m_button_month = nullptr;
|
|
::Button *m_button_all = nullptr;
|
|
|
|
::StaticBox * m_type_panel = nullptr;
|
|
::Button * m_button_video = nullptr;
|
|
::Button * m_button_timelapse = nullptr;
|
|
::Button * m_button_model = nullptr;
|
|
|
|
::StaticBox *m_manage_panel = nullptr;
|
|
::Button * m_button_delete = nullptr;
|
|
::Button *m_button_download = nullptr;
|
|
::Button *m_button_refresh = nullptr;
|
|
::Button *m_button_management = nullptr;
|
|
|
|
ImageGrid * m_image_grid = nullptr;
|
|
|
|
bool m_external = true;
|
|
|
|
std::string m_machine;
|
|
std::string m_lan_ip;
|
|
std::string m_lan_user;
|
|
std::string m_lan_passwd;
|
|
std::string m_dev_ver;
|
|
bool m_lan_mode = false;
|
|
bool m_sdcard_exist = false;
|
|
int m_local_proto = false;
|
|
int m_remote_proto = false;
|
|
bool m_model_download_support = false;
|
|
bool m_device_busy = false;
|
|
bool m_waiting_enable = false;
|
|
bool m_waiting_support = false;
|
|
|
|
int m_last_mode = 0;
|
|
int m_last_type = 0;
|
|
std::set<int> m_last_errors;
|
|
|
|
std::vector<wxWindow*> m_show_hosts;
|
|
};
|
|
|
|
|
|
class MediaFileFrame : public DPIFrame
|
|
{
|
|
public:
|
|
MediaFileFrame(wxWindow * parent);
|
|
|
|
MediaFilePanel * filePanel() { return m_panel; }
|
|
|
|
virtual void on_dpi_changed(const wxRect& suggested_rect);
|
|
|
|
private:
|
|
MediaFilePanel* m_panel;
|
|
};
|
|
|
|
}}
|
|
#endif /* MediaFilePanel_h */
|