Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/supermerill/SuperSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbubnikv <bubnikv@gmail.com>2019-07-04 15:35:04 +0300
committerbubnikv <bubnikv@gmail.com>2019-07-04 15:35:04 +0300
commit1798e2a84c57a9ecde31ffbeebdf6da0758bcd94 (patch)
treef4282a97b04de68a80cfe64f1aa33d0a63217fa8 /src/slic3r/GUI/Selection.cpp
parent5a2ace1a6e466c3501817cfa73d3b74606222395 (diff)
WIP Undo / Redo : serialization / deserialization of object selection.
Diffstat (limited to 'src/slic3r/GUI/Selection.cpp')
-rw-r--r--src/slic3r/GUI/Selection.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/slic3r/GUI/Selection.cpp b/src/slic3r/GUI/Selection.cpp
index 0784b70ff..2986d97dd 100644
--- a/src/slic3r/GUI/Selection.cpp
+++ b/src/slic3r/GUI/Selection.cpp
@@ -311,6 +311,24 @@ void Selection::add_all()
this->set_bounding_boxes_dirty();
}
+void Selection::set_deserialized(EMode mode, const std::vector<std::pair<ObjectID, ObjectID>> &volumes_and_instances)
+{
+ if (! m_valid)
+ return;
+
+ m_mode = mode;
+ for (unsigned int i : m_list)
+ (*m_volumes)[i]->selected = false;
+ m_list.clear();
+ for (unsigned int i = 0; i < (unsigned int)m_volumes->size(); ++ i) {
+ const GLVolume::CompositeID &id = (*m_volumes)[i]->composite_id;
+ if (std::binary_search(volumes_and_instances.begin(), volumes_and_instances.end(), std::make_pair<ObjectID, ObjectID>(id.volume_id, id.instance_id)))
+ this->do_add_volume(i);
+ }
+ update_type();
+ this->set_bounding_boxes_dirty();
+}
+
void Selection::clear()
{
if (!m_valid)