Implemented delete_layers_from_object()
This commit is contained in:
parent
a516f76f94
commit
e531d224e8
4 changed files with 42 additions and 13 deletions
|
@ -46,7 +46,7 @@ ObjectLayers::ObjectLayers(wxWindow* parent) :
|
||||||
|
|
||||||
m_og->append_line(line);
|
m_og->append_line(line);
|
||||||
|
|
||||||
m_bmp_delete = ScalableBitmap(parent, "cross");
|
m_bmp_delete = ScalableBitmap(parent, "remove_copies"/*"cross"*/);
|
||||||
m_bmp_add = ScalableBitmap(parent, "add_copies");
|
m_bmp_add = ScalableBitmap(parent, "add_copies");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1141,7 +1141,7 @@ wxMenuItem* ObjectList::append_menu_item_split(wxMenu* menu)
|
||||||
wxMenuItem* ObjectList::append_menu_item_layers_editing(wxMenu* menu)
|
wxMenuItem* ObjectList::append_menu_item_layers_editing(wxMenu* menu)
|
||||||
{
|
{
|
||||||
return append_menu_item(menu, wxID_ANY, _(L("Edit Layers")), "",
|
return append_menu_item(menu, wxID_ANY, _(L("Edit Layers")), "",
|
||||||
[this](wxCommandEvent&) { layers_editing(); }, "table.png", menu);
|
[this](wxCommandEvent&) { layers_editing(); }, "layers", menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
wxMenuItem* ObjectList::append_menu_item_settings(wxMenu* menu_)
|
wxMenuItem* ObjectList::append_menu_item_settings(wxMenu* menu_)
|
||||||
|
@ -1650,7 +1650,7 @@ void ObjectList::del_subobject_item(wxDataViewItem& item)
|
||||||
else if (type == itInstanceRoot && obj_idx != -1)
|
else if (type == itInstanceRoot && obj_idx != -1)
|
||||||
del_instances_from_object(obj_idx);
|
del_instances_from_object(obj_idx);
|
||||||
else if ((type & itLayerRoot) && obj_idx != -1)
|
else if ((type & itLayerRoot) && obj_idx != -1)
|
||||||
/*del_layers_from_object(obj_idx)*/;
|
del_layers_from_object(obj_idx);
|
||||||
else if (idx == -1)
|
else if (idx == -1)
|
||||||
return;
|
return;
|
||||||
else if (!del_subobject_from_object(obj_idx, idx, type))
|
else if (!del_subobject_from_object(obj_idx, idx, type))
|
||||||
|
@ -1692,6 +1692,13 @@ void ObjectList::del_instances_from_object(const int obj_idx)
|
||||||
changed_object(obj_idx);
|
changed_object(obj_idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ObjectList::del_layers_from_object(const int obj_idx)
|
||||||
|
{
|
||||||
|
object(obj_idx)->layer_height_ranges.clear(); // ? #ys_FIXME
|
||||||
|
|
||||||
|
changed_object(obj_idx);
|
||||||
|
}
|
||||||
|
|
||||||
bool ObjectList::del_subobject_from_object(const int obj_idx, const int idx, const int type)
|
bool ObjectList::del_subobject_from_object(const int obj_idx, const int idx, const int type)
|
||||||
{
|
{
|
||||||
if (obj_idx == 1000)
|
if (obj_idx == 1000)
|
||||||
|
@ -1732,6 +1739,13 @@ bool ObjectList::del_subobject_from_object(const int obj_idx, const int idx, con
|
||||||
object->delete_instance(idx);
|
object->delete_instance(idx);
|
||||||
}
|
}
|
||||||
else if (type == itLayer) {
|
else if (type == itLayer) {
|
||||||
|
t_layer_height_ranges::iterator layer_range = object->layer_height_ranges.begin();
|
||||||
|
int id = idx;
|
||||||
|
while (id > 0 && layer_range != object->layer_height_ranges.end()) {
|
||||||
|
layer_range++;
|
||||||
|
id--;
|
||||||
|
}
|
||||||
|
object->layer_height_ranges.erase(layer_range);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return false;
|
return false;
|
||||||
|
@ -1808,12 +1822,12 @@ void ObjectList::layers_editing()
|
||||||
// ---<<<--- Just for testing
|
// ---<<<--- Just for testing
|
||||||
|
|
||||||
layers_item = m_objects_model->AddLayersRoot(obj_item);
|
layers_item = m_objects_model->AddLayersRoot(obj_item);
|
||||||
}
|
|
||||||
|
|
||||||
for (const auto range : object(obj_idx)->layer_height_ranges)
|
for (const auto range : object(obj_idx)->layer_height_ranges)
|
||||||
{
|
{
|
||||||
const std::string label = (boost::format("(%.2f-%.2f)") % range.first.first % range.first.second).str();
|
const std::string label = (boost::format(" %.2f-%.2f ") % range.first.first % range.first.second).str();
|
||||||
m_objects_model->AddLayersChild(layers_item, label);
|
m_objects_model->AddLayersChild(layers_item, label);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
select_item(layers_item);
|
select_item(layers_item);
|
||||||
|
@ -2168,9 +2182,22 @@ void ObjectList::remove()
|
||||||
if (m_objects_model->GetParent(item) == wxDataViewItem(0))
|
if (m_objects_model->GetParent(item) == wxDataViewItem(0))
|
||||||
delete_from_model_and_list(itObject, m_objects_model->GetIdByItem(item), -1);
|
delete_from_model_and_list(itObject, m_objects_model->GetIdByItem(item), -1);
|
||||||
else {
|
else {
|
||||||
if (sels.size() == 1)
|
// if (sels.size() == 1)
|
||||||
select_item(m_objects_model->GetParent(item));
|
// select_item(m_objects_model->GetParent(item));
|
||||||
|
wxDataViewItem parent = m_objects_model->GetParent(item);
|
||||||
|
if (sels.size() == 1) {
|
||||||
|
if (!(m_objects_model->GetItemType(item) & itLayer)) {
|
||||||
|
select_item(parent);
|
||||||
|
parent = wxDataViewItem(0);
|
||||||
|
}
|
||||||
|
else if (m_objects_model->GetChildren(parent, wxDataViewItemArray()) == 1)
|
||||||
|
parent = m_objects_model->GetTopParent(item);
|
||||||
|
}
|
||||||
|
|
||||||
del_subobject_item(item);
|
del_subobject_item(item);
|
||||||
|
|
||||||
|
if (sels.size() == 1 && parent)
|
||||||
|
select_item(parent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -227,6 +227,7 @@ public:
|
||||||
void del_subobject_item(wxDataViewItem& item);
|
void del_subobject_item(wxDataViewItem& item);
|
||||||
void del_settings_from_config();
|
void del_settings_from_config();
|
||||||
void del_instances_from_object(const int obj_idx);
|
void del_instances_from_object(const int obj_idx);
|
||||||
|
void del_layers_from_object(const int obj_idx);
|
||||||
bool del_subobject_from_object(const int obj_idx, const int idx, const int type);
|
bool del_subobject_from_object(const int obj_idx, const int idx, const int type);
|
||||||
void split();
|
void split();
|
||||||
void layers_editing();
|
void layers_editing();
|
||||||
|
|
|
@ -450,7 +450,7 @@ ObjectDataViewModelNode::ObjectDataViewModelNode(ObjectDataViewModelNode* parent
|
||||||
}
|
}
|
||||||
else if (type == itLayerRoot)
|
else if (type == itLayerRoot)
|
||||||
{
|
{
|
||||||
m_bmp = create_scaled_bitmap(nullptr, "table.png"); // FIXME: pass window ptr
|
m_bmp = create_scaled_bitmap(nullptr, "layers"); // FIXME: pass window ptr
|
||||||
m_name = _(L("Layers"));
|
m_name = _(L("Layers"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -473,8 +473,9 @@ ObjectDataViewModelNode::ObjectDataViewModelNode(ObjectDataViewModelNode* parent
|
||||||
m_extruder(extruder)
|
m_extruder(extruder)
|
||||||
{
|
{
|
||||||
m_idx = parent->GetChildCount();
|
m_idx = parent->GetChildCount();
|
||||||
m_name = wxString::Format(_(L("Layer %s")), label_range);
|
// m_name = wxString::Format(_(L("Layer %s (mm)")), label_range);
|
||||||
m_bmp = create_scaled_bitmap(nullptr, "row.png"); // FIXME: pass window ptr
|
m_name = _(L("Range")) + label_range + "(" + _(L("mm")) + ")";
|
||||||
|
m_bmp = create_scaled_bitmap(nullptr, "layers_white"); // FIXME: pass window ptr
|
||||||
|
|
||||||
#ifdef __WXGTK__
|
#ifdef __WXGTK__
|
||||||
// it's necessary on GTK because of control have to know if this item will be container
|
// it's necessary on GTK because of control have to know if this item will be container
|
||||||
|
|
Loading…
Add table
Reference in a new issue