From 3ca2b2bc71e73b965ad222971222194c4d341250 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Thu, 12 Aug 2021 15:02:24 +0200 Subject: [PATCH] ObjectList: Added separate icons for InfoItems --- src/slic3r/GUI/ObjectDataViewModel.cpp | 29 ++++++++++++++++++-------- src/slic3r/GUI/ObjectDataViewModel.hpp | 2 +- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/slic3r/GUI/ObjectDataViewModel.cpp b/src/slic3r/GUI/ObjectDataViewModel.cpp index df2e1a13b9..96d7ca8aed 100644 --- a/src/slic3r/GUI/ObjectDataViewModel.cpp +++ b/src/slic3r/GUI/ObjectDataViewModel.cpp @@ -39,6 +39,20 @@ static constexpr char LayerIcon[] = "edit_layers_some"; static constexpr char WarningIcon[] = "exclamation"; static constexpr char InfoIcon[] = "objlist_info"; +struct InfoItemAtributes { + std::string name; + std::string bmp_name; +}; + +const std::map INFO_ITEMS{ +// info_item Type info_item Name info_item BitmapName + { InfoItemType::CustomSupports, {L("Paint-on supports"), "fdm_supports" }, }, + { InfoItemType::CustomSeam, {L("Paint-on seam"), "seam" }, }, + { InfoItemType::MmuSegmentation, {L("Multimaterial painting"), "mmu_segmentation"}, }, + { InfoItemType::Sinking, {L("Sinking"), "support_blocker"}, }, + { InfoItemType::VariableLayerHeight, {L("Variable layer height"), "layers"}, }, +}; + ObjectDataViewModelNode::ObjectDataViewModelNode(ObjectDataViewModelNode* parent, const wxString& sub_obj_name, Slic3r::ModelVolumeType type, @@ -60,14 +74,10 @@ ObjectDataViewModelNode::ObjectDataViewModelNode(ObjectDataViewModelNode* pare ObjectDataViewModelNode::ObjectDataViewModelNode(ObjectDataViewModelNode* parent, const InfoItemType info_type) : m_parent(parent), m_type(itInfo), - m_extruder(wxEmptyString) + m_info_item_type(info_type), + m_extruder(wxEmptyString), + m_name(_(INFO_ITEMS.at(info_type).name)) { - m_name = info_type == InfoItemType::CustomSupports ? _L("Paint-on supports") : - info_type == InfoItemType::CustomSeam ? _L("Paint-on seam") : - info_type == InfoItemType::MmuSegmentation ? _L("Multimaterial painting") : - info_type == InfoItemType::Sinking ? _L("Sinking") : - _L("Variable layer height"); - m_info_item_type = info_type; } @@ -307,7 +317,8 @@ ObjectDataViewModel::ObjectDataViewModel() m_volume_bmps = MenuFactory::get_volume_bitmaps(); m_warning_bmp = create_scaled_bitmap(WarningIcon); - m_info_bmp = create_scaled_bitmap(InfoIcon); + for (auto item : INFO_ITEMS) + m_info_bmps[item.first] = create_scaled_bitmap(item.second.bmp_name); } ObjectDataViewModel::~ObjectDataViewModel() @@ -402,7 +413,7 @@ wxDataViewItem ObjectDataViewModel::AddInfoChild(const wxDataViewItem &parent_it } root->Insert(node, idx+1); - node->SetBitmap(m_info_bmp); + node->SetBitmap(m_info_bmps.at(info_type)); // notify control const wxDataViewItem child((void*)node); ItemAdded(parent_item, child); diff --git a/src/slic3r/GUI/ObjectDataViewModel.hpp b/src/slic3r/GUI/ObjectDataViewModel.hpp index b1330f93d6..099dfb7902 100644 --- a/src/slic3r/GUI/ObjectDataViewModel.hpp +++ b/src/slic3r/GUI/ObjectDataViewModel.hpp @@ -251,8 +251,8 @@ class ObjectDataViewModel :public wxDataViewModel { std::vector m_objects; std::vector m_volume_bmps; + std::map m_info_bmps; wxBitmap m_warning_bmp; - wxBitmap m_info_bmp; wxDataViewCtrl* m_ctrl { nullptr };