mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-09-22 00:12:34 +00:00
feat: additional events
This commit is contained in:
@@ -25,6 +25,7 @@
|
||||
#include "libslic3r/Tesselate.hpp"
|
||||
#include "libslic3r/GCode/ThumbnailData.hpp"
|
||||
#include "libslic3r/Utils.hpp"
|
||||
#include "libslic3r/LifecycleEvents.hpp"
|
||||
|
||||
#include "I18N.hpp"
|
||||
#include "GUI_App.hpp"
|
||||
@@ -2527,11 +2528,20 @@ void PartPlate::set_plate_name(const std::string& name)
|
||||
if (boost::equals(m_name, name))
|
||||
return;
|
||||
|
||||
const std::string previous_name = m_name;
|
||||
m_name = name;
|
||||
if (m_print != nullptr)
|
||||
m_print->set_plate_name(name);
|
||||
|
||||
invalidate_plate_name_texture();
|
||||
|
||||
if (m_plater != nullptr && !m_plater->is_loading_project()) {
|
||||
LifecycleEventContext ctx;
|
||||
ctx.name = name;
|
||||
ctx.previous_name = previous_name;
|
||||
ctx.index = m_plate_index;
|
||||
fire_lifecycle_event(LifecycleEvent::PlateRenamed, ctx);
|
||||
}
|
||||
}
|
||||
|
||||
//get the print's object, result and index
|
||||
@@ -4638,9 +4648,16 @@ int PartPlateList::create_plate(bool adjust_position)
|
||||
|
||||
if (m_plater) {
|
||||
// In GUI mode
|
||||
wxGetApp().obj_list()->on_plate_added(plate);
|
||||
wxGetApp().obj_list()->on_plate_added(plate);
|
||||
}
|
||||
|
||||
if (m_plater != nullptr && m_intialized && !m_plater->is_loading_project()) {
|
||||
LifecycleEventContext ctx;
|
||||
ctx.name = plate->get_plate_name();
|
||||
ctx.index = new_index;
|
||||
fire_lifecycle_event(LifecycleEvent::PlateCreated, ctx);
|
||||
}
|
||||
|
||||
BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(":created a new plate %1%") % new_index;
|
||||
return new_index;
|
||||
}
|
||||
@@ -4739,6 +4756,7 @@ int PartPlateList::delete_plate(int index)
|
||||
BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(":plate %1%, has an invalid index %2%") % index % plate->get_index();
|
||||
return -1;
|
||||
}
|
||||
const std::string plate_name = plate->get_plate_name();
|
||||
|
||||
if (m_plater) {
|
||||
// In GUI mode
|
||||
@@ -4821,6 +4839,13 @@ int PartPlateList::delete_plate(int index)
|
||||
|
||||
delete plate;
|
||||
|
||||
if (m_plater != nullptr && m_intialized && !m_plater->is_loading_project()) {
|
||||
LifecycleEventContext ctx;
|
||||
ctx.name = plate_name;
|
||||
ctx.index = index;
|
||||
fire_lifecycle_event(LifecycleEvent::PlateDeleted, ctx);
|
||||
}
|
||||
|
||||
// FIX: context of BackgroundSliceProcess and gcode preview need to be updated before ObjectList::reload_all_plates().
|
||||
#if 0
|
||||
if (m_plater != nullptr) {
|
||||
@@ -4929,6 +4954,7 @@ int PartPlateList::select_plate(int index)
|
||||
if (m_plate_list.empty() || index >= m_plate_list.size()) {
|
||||
return -1;
|
||||
}
|
||||
const int previous_index = m_current_plate;
|
||||
|
||||
// BBS: erase unnecessary snapshot
|
||||
if (get_curr_plate_index() != index && m_intialized) {
|
||||
@@ -4955,6 +4981,13 @@ int PartPlateList::select_plate(int index)
|
||||
//wxQueueEvent(m_plater, new SimpleEvent(EVT_GLCANVAS_PLATE_SELECT));
|
||||
}
|
||||
|
||||
if (previous_index != index && m_intialized && m_plater != nullptr && !m_plater->is_loading_project()) {
|
||||
LifecycleEventContext ctx;
|
||||
ctx.name = m_plate_list[index]->get_plate_name();
|
||||
ctx.index = index;
|
||||
fire_lifecycle_event(LifecycleEvent::PlateSelected, ctx);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user