Remove the Unreachable MakerWorld Publish Dialog

This commit is contained in:
Hanif Koh
2026-10-04 20:46:02 +08:00
parent 5efb3bef45
commit 8b7779708b
10 changed files with 1 additions and 524 deletions
-1
View File
@@ -177,7 +177,6 @@ src/slic3r/GUI/PresetHints.cpp
src/slic3r/GUI/ProgressStatusBar.cpp
src/slic3r/GUI/PlateSettingsDialog.cpp
src/slic3r/GUI/PrivacyUpdateDialog.cpp
src/slic3r/GUI/PublishDialog.cpp
src/slic3r/GUI/PublishSettingsDialog.cpp
src/slic3r/GUI/SavePresetDialog.cpp
src/slic3r/GUI/SceneBenchmark.cpp
-4
View File
@@ -1,4 +0,0 @@
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M5.97222 3H4C2.89543 3 2 3.89543 2 5V14C2 15.1046 2.89543 16 4 16H14.4444C15.549 16 16.4444 15.1046 16.4444 14V5C16.4444 3.89543 15.549 3 14.4444 3H12.8333" stroke="white" stroke-linecap="round"/>
<path d="M9.93711 2.64645C9.74185 2.45118 9.42527 2.45118 9.23 2.64645L6.04802 5.82843C5.85276 6.02369 5.85276 6.34027 6.04802 6.53553C6.24329 6.7308 6.55987 6.7308 6.75513 6.53553L9.58356 3.70711L12.412 6.53553C12.6072 6.7308 12.9238 6.7308 13.1191 6.53553C13.3144 6.34027 13.3144 6.02369 13.1191 5.82843L9.93711 2.64645ZM9.08356 11.3056C9.08356 11.5817 9.30741 11.8056 9.58356 11.8056C9.8597 11.8056 10.0836 11.5817 10.0836 11.3056H9.08356ZM9.08356 3V11.3056H10.0836V3H9.08356Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 805 B

@@ -1,10 +0,0 @@
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_1_12)">
<path d="M18 0H0V18H18V0Z" fill="#262E2F"/>
</g>
<defs>
<clipPath id="clip0_1_12">
<rect width="18" height="18" fill="white"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 283 B

-2
View File
@@ -483,8 +483,6 @@ set(SLIC3R_GUI_SOURCES
GUI/ProjectDirtyStateManager.cpp
GUI/ProjectDirtyStateManager.hpp
GUI/Project.hpp
GUI/PublishDialog.cpp
GUI/PublishDialog.hpp
GUI/PublishSettingsDialog.cpp
GUI/PublishSettingsDialog.hpp
GUI/PurgeModeDialog.cpp
-32
View File
@@ -46,7 +46,6 @@ enum CUSTOM_ID
ID_TOP_DROPDOWN_MENU,
ID_TITLE,
ID_MODEL_STORE,
ID_PUBLISH,
ID_CALIB,
ID_TOOL_BAR = 3200,
ID_AMS_NOTEBOOK,
@@ -339,10 +338,6 @@ void BBLTopbar::Init(wxFrame* parent)
this->AddSpacer(FromDIP(25));
//this->AddStretchSpacer(1);
//m_publish_bitmap = create_scaled_bitmap("topbar_publish", nullptr, TOPBAR_ICON_SIZE);
//m_publish_item = this->AddTool(ID_PUBLISH, "", m_publish_bitmap);
//m_publish_disable_bitmap = create_scaled_bitmap("topbar_publish_disable", nullptr, TOPBAR_ICON_SIZE);
//m_publish_item->SetDisabledBitmap(m_publish_disable_bitmap);
//this->EnableTool(m_publish_item->GetId(), false);
//this->AddSpacer(FromDIP(4));
@@ -403,7 +398,6 @@ void BBLTopbar::Init(wxFrame* parent)
this->Bind(wxEVT_AUITOOLBAR_TOOL_DROPDOWN, &BBLTopbar::OnRedo, this, wxID_REDO);
this->Bind(wxEVT_AUITOOLBAR_TOOL_DROPDOWN, &BBLTopbar::OnUndo, this, wxID_UNDO);
//this->Bind(wxEVT_AUITOOLBAR_TOOL_DROPDOWN, &BBLTopbar::OnModelStoreClicked, this, ID_MODEL_STORE);
//this->Bind(wxEVT_AUITOOLBAR_TOOL_DROPDOWN, &BBLTopbar::OnPublishClicked, this, ID_PUBLISH);
}
BBLTopbar::~BBLTopbar()
@@ -420,12 +414,6 @@ void BBLTopbar::OnOpenProject(wxAuiToolBarEvent& event)
plater->load_project();
}
//void BBLTopbar::show_publish_button(bool show)
//{
// this->EnableTool(m_publish_item->GetId(), show);
// Refresh();
//}
void BBLTopbar::OnSaveProject(wxAuiToolBarEvent& event)
{
MainFrame* main_frame = dynamic_cast<MainFrame*>(m_frame);
@@ -482,22 +470,6 @@ void BBLTopbar::OnModelStoreClicked(wxAuiToolBarEvent& event)
//GUI::wxGetApp().load_url(wxString(wxGetApp().app_config->get_web_host_url() + MODEL_STORE_URL));
}
void BBLTopbar::OnPublishClicked(wxAuiToolBarEvent& event)
{
if (!wxGetApp().getAgent()) {
BOOST_LOG_TRIVIAL(info) << "publish: no agent";
return;
}
//no more check
//if (GUI::wxGetApp().plater()->model().objects.empty()) return;
#ifdef ENABLE_PUBLISHING
wxGetApp().plater()->show_publish_dialog();
#endif
wxGetApp().open_publish_page_dialog();
}
void BBLTopbar::SetFileMenu(wxMenu* file_menu)
{
m_file_menu = file_menu;
@@ -579,10 +551,6 @@ void BBLTopbar::Rescale() {
if (m_title_ctrl)
m_title_ctrl->SetTitle(m_titleText);
/*item = this->FindTool(ID_PUBLISH);
item->SetBitmap(create_scaled_bitmap("topbar_publish", this, TOPBAR_ICON_SIZE));
item->SetDisabledBitmap(create_scaled_bitmap("topbar_publish_disable", nullptr, TOPBAR_ICON_SIZE));*/
/*item = this->FindTool(ID_MODEL_STORE);
item->SetBitmap(create_scaled_bitmap("topbar_store", this, TOPBAR_ICON_SIZE));
*/
-5
View File
@@ -52,12 +52,10 @@ public:
void OnMouseCaptureLost(wxMouseCaptureLostEvent& event);
void OnMenuClose(wxMenuEvent& event);
void OnOpenProject(wxAuiToolBarEvent& event);
//void show_publish_button(bool show);
void OnSaveProject(wxAuiToolBarEvent& event);
void OnUndo(wxAuiToolBarEvent& event);
void OnRedo(wxAuiToolBarEvent& event);
void OnModelStoreClicked(wxAuiToolBarEvent& event);
void OnPublishClicked(wxAuiToolBarEvent &event);
wxAuiToolBarItem* FindToolByCurrentPosition();
@@ -97,14 +95,11 @@ private:
wxString m_titleText;
//wxAuiToolBarItem *m_publish_item;
wxAuiToolBarItem* m_undo_item;
wxAuiToolBarItem* m_redo_item;
wxAuiToolBarItem* m_calib_item;
wxAuiToolBarItem* maximize_btn;
wxBitmap m_publish_bitmap;
wxBitmap m_publish_disable_bitmap;
wxBitmap maximize_bitmap;
wxBitmap window_bitmap;
+1 -117
View File
@@ -226,7 +226,6 @@
#include "SelectMachine.hpp"
#include "SendMultiMachinePage.hpp"
#include "SendToPrinter.hpp"
#include "PublishDialog.hpp"
#include "ConfigWizard.hpp"
#include "SyncAmsInfoDialog.hpp"
#include "../Utils/ASCIIFolding.hpp"
@@ -331,7 +330,6 @@ wxDEFINE_EVENT(EVT_EXPORT_BEGAN, wxCommandEvent);
wxDEFINE_EVENT(EVT_EXPORT_FINISHED, wxCommandEvent);
wxDEFINE_EVENT(EVT_IMPORT_MODEL_ID, wxCommandEvent);
wxDEFINE_EVENT(EVT_DOWNLOAD_PROJECT, wxCommandEvent);
wxDEFINE_EVENT(EVT_PUBLISH, wxCommandEvent);
wxDEFINE_EVENT(EVT_OPEN_PLATESETTINGSDIALOG, wxCommandEvent);
wxDEFINE_EVENT(EVT_OPEN_FILAMENT_MAP_SETTINGS_DIALOG, wxCommandEvent);
// BBS: backup & restore
@@ -339,7 +337,6 @@ wxDEFINE_EVENT(EVT_RESTORE_PROJECT, wxCommandEvent);
wxDEFINE_EVENT(EVT_PRINT_FINISHED, wxCommandEvent);
wxDEFINE_EVENT(EVT_SEND_CALIBRATION_FINISHED, wxCommandEvent);
wxDEFINE_EVENT(EVT_SEND_FINISHED, wxCommandEvent);
wxDEFINE_EVENT(EVT_PUBLISH_FINISHED, wxCommandEvent);
//BBS: repair model
wxDEFINE_EVENT(EVT_REPAIR_MODEL, wxCommandEvent);
wxDEFINE_EVENT(EVT_FILAMENT_COLOR_CHANGED, wxCommandEvent);
@@ -7146,7 +7143,6 @@ struct Plater::priv
SelectMachineDialog* m_select_machine_dlg = nullptr;
SendMultiMachinePage* m_send_multi_dlg = nullptr;
SendToPrinterDialog* m_send_to_sdcard_dlg = nullptr;
PublishDialog *m_publish_dlg = nullptr;
// Session-level stash of the last published selection. Written on publish and on
// loading a published 3MF; read when the Publish dialog is opened.
@@ -7200,7 +7196,6 @@ struct Plater::priv
std::string m_broken_shown_sig;
bool auto_reslice_pending {false};
bool auto_reslice_after_cancel {false};
bool m_is_publishing {false};
int m_is_RightClickInLeftUI{-1};
int m_cur_slice_plate;
//BBS: m_slice_all in .gcode.3mf file case, set true when slice all
@@ -7604,7 +7599,6 @@ struct Plater::priv
void on_action_open_project(SimpleEvent&);
void on_action_slice_plate(SimpleEvent&);
void on_action_slice_all(SimpleEvent&);
void on_action_publish(wxCommandEvent &evt);
void on_action_print_plate(SimpleEvent&);
void open_machine_select_dialog(int plate_idx, PrintFromType print_type = PrintFromType::FROM_NORMAL);
void on_action_print_all(SimpleEvent&);
@@ -7622,8 +7616,6 @@ struct Plater::priv
void on_3dcanvas_mouse_dragging_finished(SimpleEvent&);
//void show_action_buttons(const bool is_ready_to_slice) const;
bool show_publish_dlg(bool show = true);
void update_publish_dialog_status(wxString &msg, int percent = -1);
void on_action_print_plate_from_sdcard(SimpleEvent&);
void on_tab_selection_changing(wxBookCtrlEvent&);
@@ -7873,7 +7865,6 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame)
background_process.set_export_began_event(EVT_EXPORT_BEGAN);
background_process.set_export_finished_event(EVT_EXPORT_FINISHED);
this->q->Bind(EVT_SLICING_UPDATE, &priv::on_slicing_update, this);
this->q->Bind(EVT_PUBLISH, &priv::on_action_publish, this);
this->q->Bind(EVT_REPAIR_MODEL, &priv::on_repair_model, this);
this->q->Bind(EVT_FILAMENT_COLOR_CHANGED, &priv::on_filament_color_changed, this);
this->q->Bind(EVT_INSTALL_PLUGIN_NETWORKING, &priv::install_network_plugin, this);
@@ -8226,7 +8217,6 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame)
q->Bind(EVT_PRINT_FINISHED, [q](wxCommandEvent& evt) { q->print_job_finished(evt); });
q->Bind(EVT_SEND_CALIBRATION_FINISHED, [q](wxCommandEvent& evt) { q->send_calibration_job_finished(evt); });
q->Bind(EVT_SEND_FINISHED, [q](wxCommandEvent& evt) { q->send_job_finished(evt); });
q->Bind(EVT_PUBLISH_FINISHED, [q](wxCommandEvent& evt) { q->publish_job_finished(evt);});
q->Bind(EVT_OPEN_PLATESETTINGSDIALOG, [q](wxCommandEvent& evt) { q->open_platesettings_dialog(evt);});
q->Bind(EVT_OPEN_FILAMENT_MAP_SETTINGS_DIALOG, [q](wxCommandEvent &evt) { q->open_filament_map_setting_dialog(evt); });
//q->Bind(EVT_GLVIEWTOOLBAR_ASSEMBLE, [q](SimpleEvent&) { q->select_view_3D("Assemble"); });
@@ -13361,11 +13351,6 @@ void Plater::priv::on_process_completed(SlicingProcessCompletedEvent &evt)
show_action_buttons(true);*/
ready_to_slice = true;
//this->main_frame->update_slice_print_status(MainFrame::eEventSliceUpdate, true, true);
//BBS
if (m_is_publishing) {
m_publish_dlg->cancel();
}
} else {
if((ready_to_slice) || (wxGetApp().get_mode() == comSimple)) {
//this means the current plate is not the slicing plate
@@ -13407,15 +13392,6 @@ void Plater::priv::on_process_completed(SlicingProcessCompletedEvent &evt)
exporting_status = ExportingStatus::NOT_EXPORTING;
// BBS stop publishing if error occur
//if (m_is_publishing) {
// GCodeProcessorResult *gcode_result = background_process.get_current_gcode_result();
// m_publish_dlg->UpdateStatus(_L("Error occurred during slicing"), -1, false);
// // if toolpath is outside
// if (!gcode_result || gcode_result->toolpath_outside) {
// m_is_publishing = false;
// }
//}
if (is_finished)
@@ -13424,16 +13400,6 @@ void Plater::priv::on_process_completed(SlicingProcessCompletedEvent &evt)
m_is_slicing = false;
this->preview->reload_print(false);
q->mark_plate_toolbar_image_dirty();
/* BBS if in publishing progress */
if (m_is_publishing) {
if (m_publish_dlg && !m_publish_dlg->was_cancelled()) {
if (m_publish_dlg->IsShown()) {
q->publish_project();
} else {
m_is_publishing = false;
}
}
}
q->SetDropTarget(new PlaterDropTarget(*main_frame, *q));
}
else
@@ -13452,13 +13418,6 @@ void Plater::priv::on_process_completed(SlicingProcessCompletedEvent &evt)
//not the last plate
update_fff_scene_only_shells();
q->Thaw();
if (m_is_publishing) {
if (m_publish_dlg && !m_publish_dlg->was_cancelled()) {
wxString msg = wxString::Format(_L("Slicing Plate %d"), m_cur_slice_plate + 1);
int percent = 70 * m_cur_slice_plate / partplate_list.get_plate_count();
m_publish_dlg->UpdateStatus(msg, percent, false);
}
}
}
if (auto_reslice_after_cancel) {
auto_reslice_after_cancel = false;
@@ -13540,40 +13499,12 @@ void Plater::priv::on_action_slice_all(SimpleEvent&)
//select plate
q->select_plate(m_cur_slice_plate);
q->reslice();
if (!m_is_publishing)
q->select_view_3D("Preview");
q->select_view_3D("Preview");
//BBS: wish to select all plates stats item
preview->get_canvas3d()->_update_select_plate_toolbar_stats_item(true);
}
}
void Plater::priv::on_action_publish(wxCommandEvent &event)
{
if (q != nullptr) {
if (event.GetInt() == EVT_PUBLISHING_START) {
// update by background slicing process
if (process_completed_with_error >= 0) {
wxString msg = _L("Please resolve the slicing errors and publish again.");
this->m_publish_dlg->UpdateStatus(msg, false);
return;
}
m_is_publishing = true;
// if slicing is ready publish project, else slicing first
if (partplate_list.is_all_slice_results_valid()) {
q->publish_project();
} else {
BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":received slice project in background event\n";
SimpleEvent evt = SimpleEvent(EVT_GLTOOLBAR_SLICE_ALL);
this->on_action_slice_all(evt);
}
} else {
m_is_publishing = false;
show_publish_dlg(false);
}
}
}
void Plater::priv::on_action_print_plate(SimpleEvent&)
{
if (q != nullptr) {
@@ -14349,11 +14280,6 @@ int Plater::get_send_finished_event()
return EVT_SEND_FINISHED;
}
int Plater::get_publish_finished_event()
{
return EVT_PUBLISH_FINISHED;
}
void Plater::priv::set_current_canvas_as_dirty()
{
if (current_panel == view3D)
@@ -14762,31 +14688,6 @@ bool Plater::priv::can_reload_from_disk() const
return !paths.empty();
}
void Plater::priv::update_publish_dialog_status(wxString &msg, int percent)
{
if (m_publish_dlg)
m_publish_dlg->UpdateStatus(msg, percent);
}
bool Plater::priv::show_publish_dlg(bool show)
{
if (q != nullptr) { BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":recevied publish event\n"; }
if (!m_publish_dlg) m_publish_dlg = new PublishDialog(q);
if (show) {
m_publish_dlg->reset();
m_publish_dlg->start_slicing();
//m_publish_dlg->Show();
m_publish_dlg->ShowModal();
} else {
m_publish_dlg->EndModal(wxID_OK);
//cancel the slicing
if (this->background_process.running())
this->background_process.stop();
}
return true;
}
//BBS: add bed exclude area
void Plater::priv::set_bed_shape(const Pointfs &shape,
const Pointfs &exclude_areas,
@@ -19915,11 +19816,6 @@ int Plater::export_3mf(const boost::filesystem::path& output_path, SaveStrategy
return ret;
}
void Plater::publish_project()
{
return;
}
void Plater::reload_from_disk()
{
@@ -20562,13 +20458,6 @@ void Plater::send_job_finished(wxCommandEvent& evt)
// curr_monitor->get_tabpanel()->ChangeSelection(MonitorPanel::PrinterTab::PT_STATUS);
}
void Plater::publish_job_finished(wxCommandEvent &evt)
{
p->m_publish_dlg->EndModal(wxID_OK);
// GUI::wxGetApp().load_url(evt.GetString());
//GUI::wxGetApp().open_publish_page_dialog(evt.GetString());
}
// Called when the Eject button is pressed.
void Plater::eject_drive()
{
@@ -22866,11 +22755,6 @@ void Plater::show_object_info()
notify_manager->bbl_show_objectsinfo_notification(info_text, non_manifold_edges > 0, !(p->current_panel == p->view3D));
}
bool Plater::show_publish_dialog(bool show)
{
return p->show_publish_dlg(show);
}
void Plater::post_process_string_object_exception(StringObjectException &err)
{
PresetBundle* preset_bundle = wxGetApp().preset_bundle;
-8
View File
@@ -116,12 +116,8 @@ enum class ActionButtonType : int;
// (Sidebar::priv::m_menu_filament_id) rather than an explicit index.
inline constexpr int kSidebarContextMenuFilamentId = -2;
#define EVT_PUBLISHING_START 1
#define EVT_PUBLISHING_STOP 2
//BBS: add EVT_SLICING_UPDATE declare here
wxDECLARE_EVENT(EVT_SLICING_UPDATE, Slic3r::SlicingStatusEvent);
wxDECLARE_EVENT(EVT_PUBLISH, wxCommandEvent);
wxDECLARE_EVENT(EVT_OPEN_PLATESETTINGSDIALOG, wxCommandEvent);
// Explanation of int param
@@ -571,7 +567,6 @@ public:
int export_3mf(const boost::filesystem::path& output_path = boost::filesystem::path(), SaveStrategy strategy = SaveStrategy::Default, int export_plate_idx = -1, Export3mfProgressFn proFn = nullptr);
//BBS
void publish_project();
void reload_from_disk();
void replace_with_stl();
@@ -606,7 +601,6 @@ public:
void send_calibration_job_finished(wxCommandEvent &evt);
void print_job_finished(wxCommandEvent &evt);
void send_job_finished(wxCommandEvent& evt);
void publish_job_finished(wxCommandEvent& evt);
void open_platesettings_dialog(wxCommandEvent& evt);
void open_filament_map_setting_dialog(wxCommandEvent &evt);
void on_change_color_mode(SimpleEvent& evt);
@@ -717,7 +711,6 @@ public:
int get_send_calibration_finished_event();
int get_print_finished_event();
int get_send_finished_event();
int get_publish_finished_event();
void set_current_canvas_as_dirty();
void unbind_canvas_event_handlers();
@@ -842,7 +835,6 @@ public:
//BBS: show object info
void show_object_info();
//BBS
bool show_publish_dialog(bool show = true);
//BBS: post process string object exception strings by warning types
void post_process_string_object_exception(StringObjectException &err);
void update_objects_position_when_select_preset(const std::function<void()> &select_prest);
-270
View File
@@ -1,270 +0,0 @@
#include "PublishDialog.hpp"
#include "GUI_App.hpp"
#include <wx/colour.h>
#include <wx/string.h>
#include "slic3r/GUI/Widgets/AMSItem.hpp"
#include "slic3r/GUI/GUI_Utils.hpp"
#include <wx/intl.h>
#include <wx/gdicmn.h>
#include <wx/toplevel.h>
#include <wx/panel.h>
#include "slic3r/GUI/Widgets/Label.hpp"
#include "slic3r/GUI/Widgets/ProgressBar.hpp"
#include "slic3r/GUI/Widgets/Button.hpp"
#include "slic3r/GUI/Widgets/StateColor.hpp"
#include <utility>
#include <wx/event.h>
#include "slic3r/GUI/Plater.hpp"
#include <wx/wx.h>
#include <wx/sizer.h>
#include <wx/statbox.h>
#include "wx/evtloop.h"
#include "libslic3r/Model.hpp"
#include "libslic3r/Polygon.hpp"
#include "MainFrame.hpp"
#include "GUI_App.hpp"
static const wxColour TEXT_LIGHT_GRAY = wxColour(107, 107, 107);
namespace Slic3r {
namespace GUI {
static wxString PUBLISH_STEP_STRING[STEP_COUNT] = {
_L("Slice all plates to obtain time and filament estimation"),
_L("Packing project data into 3MF file"),
_L("Uploading 3MF"),
_L("Jump to model publish web page")
};
static wxString NOTE_STRING = _L("Note: The preparation may take several minutes. Please be patient.");
PublishDialog::PublishDialog(Plater *plater)
: DPIDialog(static_cast<wxWindow *>(wxGetApp().mainframe), wxID_ANY, _L("Publish"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX)
, m_plater(plater)
{
this->SetSize(wxSize(FromDIP(540),FromDIP(400)));
this->SetSizeHints(wxDefaultSize, wxDefaultSize);
wxBoxSizer *top_sizer = new wxBoxSizer(wxHORIZONTAL);
wxBoxSizer *m_main_sizer = new wxBoxSizer(wxVERTICAL);
m_main_sizer->Add(0, FromDIP(30), 0, wxEXPAND, 0);
m_step_panel = new wxPanel(this, wxID_ANY);
wxBoxSizer *step_sizer = create_publish_step_sizer();
m_step_panel->SetSizer(step_sizer);
m_step_panel->SetBackgroundColour(wxColour(248, 248, 248));
m_main_sizer->Add(m_step_panel, 1, wxEXPAND, 0);
m_main_sizer->Add(0, FromDIP(20), 0, wxEXPAND, 0);
m_text_note = new wxStaticText(this, wxID_ANY, NOTE_STRING, wxDefaultPosition, wxDefaultSize, 0);
m_text_note->SetFont(Label::Body_14);
m_text_note->SetForegroundColour(TEXT_LIGHT_GRAY);
m_text_note->Wrap(-1);
m_main_sizer->Add(m_text_note, 0, wxALL | wxEXPAND, 0);
m_main_sizer->Add(0, FromDIP(10), 0, wxEXPAND, 0);
wxStaticLine *m_staticline = new wxStaticLine(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL);
m_main_sizer->Add(m_staticline, 0, wxALL | wxEXPAND, FromDIP(0));
m_main_sizer->Add(0, FromDIP(10), 0, wxEXPAND, 0);
wxBoxSizer *m_progress_text_sizer = new wxBoxSizer(wxHORIZONTAL);
m_text_progress = new wxStaticText(this, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, 0);
m_text_progress->Wrap(-1);
m_text_progress->SetFont(Label::Body_12);
m_text_progress->SetForegroundColour(TEXT_LIGHT_GRAY);
m_progress_text_sizer->Add(FromDIP(20), 0, 0, wxEXPAND | wxALL, 0);
m_progress_text_sizer->Add(m_text_progress, 1, wxALL | wxEXPAND, 0);
m_main_sizer->Add(m_progress_text_sizer, 0, wxALL | wxEXPAND, 0);
wxBoxSizer *m_progress_sizer = new wxBoxSizer(wxHORIZONTAL);
m_progress_sizer->Add(FromDIP(20), 0, 0, wxEXPAND | wxALL, 0);
m_progress = new ProgressBar(this, wxID_ANY, 100, wxDefaultPosition, wxDefaultSize);
m_progress->SetHeight(FromDIP(8));
m_progress->SetFont(Label::Head_10);
m_progress_sizer->Add(m_progress, 1, wxALIGN_CENTER_VERTICAL | wxALL, 0);
m_progress_sizer->Add(FromDIP(20), 0, 0, wxEXPAND, 0);
m_btn_cancel = new Button(this, _L("Cancel"));
m_progress_sizer->Add(m_btn_cancel, 0, wxALIGN_CENTER_VERTICAL | wxALL, FromDIP(5));
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(0, 137, 123), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(38, 166, 154), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(255, 255, 255), StateColor::Normal));
StateColor text_color(std::pair<wxColour, int>(wxColour(255, 255, 255), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(255, 255, 255), StateColor::Hovered),
std::pair<wxColour, int>(TEXT_LIGHT_GRAY, StateColor::Normal));
m_btn_cancel->SetFont(Label::Body_12);
m_btn_cancel->SetBackgroundColor(btn_bg_green);
m_btn_cancel->SetBorderColor(wxColour(0, 150, 136));
m_btn_cancel->SetTextColor(text_color);
m_btn_cancel->SetSize(wxSize(FromDIP(60), FromDIP(20)));
m_btn_cancel->SetMinSize(wxSize(FromDIP(60), FromDIP(20)));
m_btn_cancel->SetCornerRadius(FromDIP(10));
m_progress_sizer->Add(FromDIP(20), 0, 0, wxEXPAND | wxALL, 0);
m_main_sizer->Add(m_progress_sizer, 0, wxEXPAND, FromDIP(0));
wxBoxSizer *m_bottom_sizer;
m_bottom_sizer = new wxBoxSizer(wxHORIZONTAL);
m_bottom_sizer->Add(FromDIP(20), 0, 0, wxEXPAND, 0);
m_text_errors = new wxStaticText(this, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, 0);
m_text_errors->Wrap(-1);
m_text_errors->SetFont(Label::Body_12);
m_text_errors->SetForegroundColour(wxColour(255, 111, 0));
m_bottom_sizer->Add(m_text_errors, 1, wxALL, 0);
m_main_sizer->Add(m_bottom_sizer, 0, wxEXPAND, 0);
m_main_sizer->Add(0, FromDIP(10), 0, wxEXPAND, 0);
top_sizer->Add(FromDIP(30), 0, 0, wxEXPAND, 0);
top_sizer->Add(m_main_sizer, 1, wxALL | wxEXPAND, 0);
top_sizer->Add(FromDIP(30), 0, 0, wxEXPAND, 0);
this->SetSizerAndFit(top_sizer);
this->Layout();
this->Centre(wxBOTH);
m_btn_cancel->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) {
this->cancel();
});
Bind(wxEVT_CLOSE_WINDOW, &PublishDialog::on_close, this);
wxGetApp().UpdateDlgDarkUI(this);
}
void PublishDialog::cancel()
{
m_was_cancelled = true;
m_btn_cancel->Enable(false);
m_text_progress->SetLabelText(_L("Publish was canceled"));
wxCloseEvent evt;
this->on_close(evt);
}
void PublishDialog::start_slicing()
{
SetPublishStep(PublishStep::STEP_SLICING);
wxCommandEvent *evt = new wxCommandEvent(EVT_PUBLISH);
evt->SetInt(EVT_PUBLISHING_START);
wxQueueEvent(m_plater, evt);
}
bool PublishDialog::UpdateStatus(wxString &msg, int percent, bool yield)
{
if (m_was_cancelled) return false;
if (percent >= 0)
m_progress->SetValue(percent);
m_text_progress->SetLabelText(msg);
if (yield)
wxEventLoopBase::GetActive()->YieldFor(wxEVT_CATEGORY_UI | wxEVT_CATEGORY_USER_INPUT);
return true;
}
void PublishDialog::Pulse(wxString &msg, bool &skip)
{
if (!msg.IsEmpty())
m_text_progress->SetLabelText(msg);
wxEventLoopBase::GetActive()->YieldFor(wxEVT_CATEGORY_UI | wxEVT_CATEGORY_USER_INPUT);
skip = m_was_cancelled;
}
void PublishDialog::SetPublishStep(PublishStep step, bool yield, int percent)
{
m_publish_steps->SelectItem((int)step);
if (step == PublishStep::STEP_SLICING) {
m_text_progress->SetLabelText(_L("Slicing Plate 1"));
if (percent > 0)
m_progress->SetValue(percent);
else
m_progress->SetValue(0);
} else if (step == PublishStep::STEP_PACKING) {
m_text_progress->SetLabelText(_L("Packing data to 3MF"));
if (percent > 0)
m_progress->SetValue(percent);
else
m_progress->SetValue(70);
} else if (step == PublishStep::STEP_UPLOADING) {
m_text_progress->SetLabelText(_L("Uploading data"));
if (percent > 0)
m_progress->SetValue(percent);
else
m_progress->SetValue(85);
} else if (step == PublishStep::STEP_FILL_INFO) {
m_text_progress->SetLabelText(_L("Jump to webpage"));
m_progress->SetValue(100);
}
if (yield)
wxEventLoopBase::GetActive()->YieldFor(wxEVT_CATEGORY_UI | wxEVT_CATEGORY_USER_INPUT);
}
wxBoxSizer *PublishDialog::create_publish_step_sizer()
{
auto sizer = new wxBoxSizer(wxHORIZONTAL);
sizer->Add(FromDIP(30), 0, 0, wxEXPAND, 0);
auto middle_sizer = new wxBoxSizer(wxVERTICAL);
m_publish_steps = new StepIndicator(m_step_panel, wxID_ANY);
StateColor bg_color(std::pair<wxColour, int>(wxColour(248, 248, 248), StateColor::Normal));
m_publish_steps->SetBackgroundColor(bg_color);
m_publish_steps->SetFont(Label::Body_14);
for (int i = 0; i < (int) PublishStep::STEP_PUBLISH_COUNT; i++) {
m_publish_steps->AppendItem(PUBLISH_STEP_STRING[i]);
}
middle_sizer->Add(0, FromDIP(30), 0, wxEXPAND, 0);
middle_sizer->Add(m_publish_steps, 1, wxALL | wxEXPAND, 0);
middle_sizer->Add(0, FromDIP(30), 0, wxEXPAND, 0);
sizer->Add(middle_sizer, 1, wxALL | wxEXPAND, 0);
sizer->Add(FromDIP(30), 0, 0, wxEXPAND, 0);
return sizer;
}
void PublishDialog::on_dpi_changed(const wxRect &suggested_rect)
{
Fit();
Refresh();
}
void PublishDialog::on_close(wxCloseEvent &event)
{
wxCommandEvent *evt = new wxCommandEvent(EVT_PUBLISH);
evt->SetInt(EVT_PUBLISHING_STOP);
wxQueueEvent(m_plater, evt);
}
void PublishDialog::reset()
{
m_btn_cancel->Enable();
m_was_cancelled = false;
SetPublishStep(PublishStep::STEP_SLICING);
m_text_errors->Hide();
}
} // GUI
} // Slic3r
-75
View File
@@ -1,75 +0,0 @@
#ifndef slic3r_PublishDialog_hpp_
#define slic3r_PublishDialog_hpp_
#include "I18N.hpp"
#include "slic3r/GUI/GUI_Utils.hpp"
#include <wx/event.h>
#include <wx/font.h>
#include <wx/colour.h>
#include <wx/panel.h>
#include <wx/gdicmn.h>
#include <wx/settings.h>
#include <wx/string.h>
#include <wx/sizer.h>
#include <wx/stattext.h>
#include <wx/gauge.h>
#include <wx/button.h>
#include <wx/bitmap.h>
#include <wx/image.h>
#include <wx/icon.h>
#include <wx/dialog.h>
#include "wxExtensions.hpp"
#include "Plater.hpp"
#include "Widgets/StepCtrl.hpp"
#include "Widgets/ProgressDialog.hpp"
#include "Widgets/Button.hpp"
#include "Widgets/ProgressBar.hpp"
namespace Slic3r {
namespace GUI {
enum PublishStep {
STEP_SLICING = 0,
STEP_PACKING,
STEP_UPLOADING,
STEP_FILL_INFO,
STEP_PUBLISH_COUNT,
};
class PublishDialog : public DPIDialog
{
public:
PublishDialog(Plater* plater = nullptr);
bool UpdateStatus(wxString &msg, int percent = -1, bool yeild = true);
void Pulse(wxString &msg, bool &skip);
void SetPublishStep(PublishStep step, bool yeild = false, int percent = -1);
void start_slicing();
void reset();
bool was_cancelled() { return m_was_cancelled; }
void cancel();
protected:
wxPanel* m_step_panel;
::StepIndicator *m_publish_steps;
wxStaticText *m_text_note;
wxStaticText *m_text_progress;
ProgressBar *m_progress;
Button* m_btn_cancel;
wxStaticText *m_text_errors;
Plater * m_plater{nullptr};
bool m_was_cancelled { false };
wxBoxSizer* create_publish_step_sizer();
void on_close(wxCloseEvent &event);
void on_dpi_changed(const wxRect &suggested_rect) override;
};
} // GUI
} // Slic3r
#endif /* slic3r_BedShapeDialog_hpp_ */