diff options
author | bubnikv <bubnikv@gmail.com> | 2019-07-04 15:35:04 +0300 |
---|---|---|
committer | bubnikv <bubnikv@gmail.com> | 2019-07-04 15:35:04 +0300 |
commit | 1798e2a84c57a9ecde31ffbeebdf6da0758bcd94 (patch) | |
tree | f4282a97b04de68a80cfe64f1aa33d0a63217fa8 /src/slic3r/GUI/Selection.cpp | |
parent | 5a2ace1a6e466c3501817cfa73d3b74606222395 (diff) |
WIP Undo / Redo : serialization / deserialization of object selection.
Diffstat (limited to 'src/slic3r/GUI/Selection.cpp')
-rw-r--r-- | src/slic3r/GUI/Selection.cpp | 18 |
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) |