From 762306d98536522bed52d493c92684cdea7be2ea Mon Sep 17 00:00:00 2001 From: YuSanka Date: Wed, 11 Apr 2018 13:56:37 +0200 Subject: [PATCH] Added preset grouping to all presets ComboBoxes Changed icons for action_undo, sys_lock and sys_unlock. There are used same icons for all OS now. Deleted/Commented temporarily used wxDataViewTreeCtrl --- resources/icons/action_undo.png | Bin 616 -> 491 bytes resources/icons/sys_lock.png | Bin 448 -> 510 bytes resources/icons/sys_unlock.png | Bin 454 -> 419 bytes xs/src/slic3r/GUI/BitmapCache.hpp | 5 +++- xs/src/slic3r/GUI/Preset.cpp | 42 ++++++++++++++++++++++++----- xs/src/slic3r/GUI/PresetBundle.cpp | 34 ++++++++++++++++++++--- xs/src/slic3r/GUI/Tab.cpp | 33 ++++++++++++----------- 7 files changed, 87 insertions(+), 27 deletions(-) diff --git a/resources/icons/action_undo.png b/resources/icons/action_undo.png index 866ae9773bf144069986bf74e5524fe7b387ff48..877f159868640a0399143631438313a31dacf1a1 100644 GIT binary patch delta 429 zcmV;e0aE_x1nUEkNPiB)000id0mpBsWB>pGfJsC_R5(wykxNSgQ545V%^63>_gk}< zP(iE4M^Mt2kto`yMY*Xq(ym%bkF_lfw55$L>|?08G8A_%g@5;6hEPTeiGFZ6bB25V z=f(XiNjV1fb9Oe?)@kzW0w1lG;HHs`CM+;%oc=vezeoEIz4z|G=8mCVKs?tti+~F@_!Maw3s5J#gC{6K{WeeZvay zIs^LszIKFWqX7e%nJr3|$3&irMOaAnus?v^?VX7Q7{{3m%)Ed|FvR@oN)#TlIG4@N z{)t8&gTY|B0Ocy5C->H|QRvob+jMp+Mq2+ld6dWd2PWktn^i8)FO>Ised=QW2*-T^ X&Lg-nvC@Jh00000NkvXXu0mjfw4BNi delta 555 zcmV+`0@VHM1Ly>hNPiM^000tn0p4aGcmMza{YgYYR5(v{Q_oKmQ4pTpZM(a)6xy=1 zpa=*76HgY@geDgFBQ!?iRm0uNLA?`hz=@cMM?7G{j~fR64N0iwiS@KAib*XMxm-F02E z9b0U*fjrL>9vEHSy?@U2p(j{-`wr>U2vS4CVlz0_dw;3e+1iGeNGe_|)M_>H1&&a> zxPaoeOH?+CX0s`N#`pbwL~RFm(iuEk%88Hn`2}>5^+Evy5gQX@pGlSxEDR5(wKl08VnP!xsz0UbmT5k$eE zgXrMqrr6C@aB+3FlauHof*`mFD!6vYP$*5)rcK(WO;SW06-5wdad1!vrD~1eGf!#L zR&wBy_TGEWJ@3BP)d{Mq4i<~WwMwPp+O~b?IL>9MR5~^cV}F`*x8KzPiA16g@-C!T z$Pb8|^S$AJjo+uHX+~sgd(bc|iPxD-W+9bI4KaB_I6&l`?>6X>?X938=DO}DE;c>S z`?HJK48r#a+v12a-3kQu5UAl~S*CuVY1#GY^fHzSwJ^=Gr$6)f-Tx;~#w zCdYmQQiS?OK7XIzQWRyJ_U2_m8n!I!P)ra@`!CAnvLyycs*ggUu!QxuYPITx3682r zst?Y*iaYxG*KvM>_$Q=CG3}H?k8H2_=Bd10Gf{wJ2}kxv>`3!7cYc ziO>5KgGKK6CD_<5#Bp$SBB?&& q@%RASUT2~%>~#t;S&&s#o%#mod=~CNPr6V50000qL!1Y*~qEaA95?rrWn5LOWUNoCcoKB~FR8s;4j>jWx z+s-2|_WQk*I2a6M{2}1`z9cmo4M{BPGp^p#>9iZfTc6W-&xu6pBszgL^6U_z(U!E82@6X617ehT#aed!N}L)k@{uL3M*wOUD^=JE*3 zd=*e0kn(9L3IbJ0tyT+*#R730i*fHTzYw8e{9#zTYJ``H$!sc4Ln;1ok)kM)i^T2M f!6}^VI1c^*)N{#pGI7vi7R5(wilf6pBKoEfQPa;7{tRlXFjo5pYh4=*4cD{iK7FLShT_K!z=QonTo?dXlfsZ7! zGv7`&#HgyuD$CMV$@AO|f?&yUoORo_H$Bf=$+FD1FuDeRn6TBeW55uq%MbQGUvO(@# znk8BV_2?tGOp;`-$qO=_`Yiks(0B?HM8|4j8?yu_@PXh^Eo|dkFeA+Rsu#@!?7GA5 zukfZpH%-%E>RlBO?6DvRI8l)AzXhL4PPo<)49P9al-%zsd2PWM2DPB4B$xE=di^BJPU8GEvCF1unmK?l z#sFi}G-=&54YX|wp6AgT&mND5%tH_3IL@jeS(c%qW>FN;8Gjeh@-+b@j$?Vrb=^4# z0=ae^hjOs$9|8iAoagznGt>Egzn_bukZWO@K$0YM`E)wbT0IkpJz)mFAgSw`d>Dr0 z1-xWwuV@1I`#`?yI`Y_!zf8cW48x$doX=;tTrS}IK5RA{{JbUY8*HO(+pt=#o)w`0 zlBTJA!2fKw+kep=?G1Q~$m4L(fN-!f-b#wq{q=fH9?{<5m9i}1dc9K2e~>&Pgpjua z{Ij5{DvH%hs@PkB m_map; diff --git a/xs/src/slic3r/GUI/Preset.cpp b/xs/src/slic3r/GUI/Preset.cpp index bc34e193a9..0afbcf8cd9 100644 --- a/xs/src/slic3r/GUI/Preset.cpp +++ b/xs/src/slic3r/GUI/Preset.cpp @@ -512,16 +512,44 @@ void PresetCollection::update_platter_ui(wxBitmapComboBox *ui) // Otherwise fill in the list from scratch. ui->Freeze(); ui->Clear(); + std::map nonsys_presets; + wxString selected = ""; for (size_t i = this->m_presets.front().is_visible ? 0 : 1; i < this->m_presets.size(); ++ i) { const Preset &preset = this->m_presets[i]; if (! preset.is_visible || (! preset.is_compatible && i != m_idx_selected)) continue; const wxBitmap *bmp = (i == 0 || preset.is_compatible) ? m_bitmap_main_frame : m_bitmap_incompatible; - ui->Append(wxString::FromUTF8((preset.name + (preset.is_dirty ? g_suffix_modified : "")).c_str()), - (bmp == 0) ? (m_bitmap_main_frame ? *m_bitmap_main_frame : wxNullBitmap) : *bmp); - if (i == m_idx_selected) - ui->SetSelection(ui->GetCount() - 1); - } +// ui->Append(wxString::FromUTF8((preset.name + (preset.is_dirty ? g_suffix_modified : "")).c_str()), +// (bmp == 0) ? (m_bitmap_main_frame ? *m_bitmap_main_frame : wxNullBitmap) : *bmp); +// if (i == m_idx_selected) +// ui->SetSelection(ui->GetCount() - 1); + + if (preset.is_default || preset.is_system){ + ui->Append(wxString::FromUTF8((preset.name + (preset.is_dirty ? g_suffix_modified : "")).c_str()), + (bmp == 0) ? (m_bitmap_main_frame ? *m_bitmap_main_frame : wxNullBitmap) : *bmp); + if (i == m_idx_selected) + ui->SetSelection(ui->GetCount() - 1); + } + else + { + nonsys_presets.emplace(wxString::FromUTF8((preset.name + (preset.is_dirty ? g_suffix_modified : "")).c_str()), preset.is_compatible); + if (i == m_idx_selected) + selected = wxString::FromUTF8((preset.name + (preset.is_dirty ? g_suffix_modified : "")).c_str()); + } + if (preset.is_default) + ui->Append("------------------------------------", wxNullBitmap); + } + if (!nonsys_presets.empty()) + { + ui->Append("------------------------------------", wxNullBitmap); + for (std::map::iterator it = nonsys_presets.begin(); it != nonsys_presets.end(); ++it) { + const wxBitmap *bmp = it->second ? m_bitmap_compatible : m_bitmap_incompatible; + ui->Append(it->first, + (bmp == 0) ? (m_bitmap_main_frame ? *m_bitmap_main_frame : wxNullBitmap) : *bmp); + if (it->first == selected) + ui->SetSelection(ui->GetCount() - 1); + } + } ui->Thaw(); } @@ -556,11 +584,11 @@ void PresetCollection::update_tab_ui(wxBitmapComboBox *ui, bool show_incompatibl selected = wxString::FromUTF8((preset.name + (preset.is_dirty ? g_suffix_modified : "")).c_str()); } if (preset.is_default) - ui->Append("______________________", wxNullBitmap); + ui->Append("------------------------------------", wxNullBitmap); } if (!nonsys_presets.empty()) { - ui->Append("______________________", wxNullBitmap); + ui->Append("------------------------------------", wxNullBitmap); for (std::map::iterator it = nonsys_presets.begin(); it != nonsys_presets.end(); ++it) { const wxBitmap *bmp = it->second ? m_bitmap_compatible : m_bitmap_incompatible; ui->Append(it->first, diff --git a/xs/src/slic3r/GUI/PresetBundle.cpp b/xs/src/slic3r/GUI/PresetBundle.cpp index 7131bf7716..dcf10198d9 100644 --- a/xs/src/slic3r/GUI/PresetBundle.cpp +++ b/xs/src/slic3r/GUI/PresetBundle.cpp @@ -986,6 +986,8 @@ void PresetBundle::update_platter_filament_ui(unsigned int idx_extruder, wxBitma // and draw a red flag in front of the selected preset. bool wide_icons = selected_preset != nullptr && ! selected_preset->is_compatible && m_bitmapIncompatible != nullptr; assert(selected_preset != nullptr); + std::map nonsys_presets; + wxString selected_str = ""; for (int i = this->filaments().front().is_visible ? 0 : 1; i < int(this->filaments().size()); ++ i) { const Preset &preset = this->filaments.preset(i); bool selected = this->filament_presets[idx_extruder] == preset.name; @@ -1023,10 +1025,36 @@ void PresetBundle::update_platter_filament_ui(unsigned int idx_extruder, wxBitma (preset.is_dirty ? *m_bitmapLockOpen : *m_bitmapLock) : m_bitmapCache->mkclear(16, 16)); bitmap = m_bitmapCache->insert(bitmap_key, bmps); } - ui->Append(wxString::FromUTF8((preset.name + (preset.is_dirty ? Preset::suffix_modified() : "")).c_str()), (bitmap == 0) ? wxNullBitmap : *bitmap); - if (selected) - ui->SetSelection(ui->GetCount() - 1); +// ui->Append(wxString::FromUTF8((preset.name + (preset.is_dirty ? Preset::suffix_modified() : "")).c_str()), (bitmap == 0) ? wxNullBitmap : *bitmap); +// if (selected) +// ui->SetSelection(ui->GetCount() - 1); + + if (preset.is_default || preset.is_system){ + ui->Append(wxString::FromUTF8((preset.name + (preset.is_dirty ? Preset::suffix_modified() : "")).c_str()), + (bitmap == 0) ? wxNullBitmap : *bitmap); + if (selected) + ui->SetSelection(ui->GetCount() - 1); + } + else + { + nonsys_presets.emplace(wxString::FromUTF8((preset.name + (preset.is_dirty ? Preset::suffix_modified() : "")).c_str()), + (bitmap == 0) ? wxNullBitmap : *bitmap); + if (selected) + selected_str = wxString::FromUTF8((preset.name + (preset.is_dirty ? Preset::suffix_modified() : "")).c_str()); + } + if (preset.is_default) + ui->Append("------------------------------------", wxNullBitmap); } + + if (!nonsys_presets.empty()) + { + ui->Append("------------------------------------", wxNullBitmap); + for (std::map::iterator it = nonsys_presets.begin(); it != nonsys_presets.end(); ++it) { + ui->Append(it->first, it->second); + if (it->first == selected_str) + ui->SetSelection(ui->GetCount() - 1); + } + } ui->Thaw(); } diff --git a/xs/src/slic3r/GUI/Tab.cpp b/xs/src/slic3r/GUI/Tab.cpp index 1b70dfa5ca..0b79f8229c 100644 --- a/xs/src/slic3r/GUI/Tab.cpp +++ b/xs/src/slic3r/GUI/Tab.cpp @@ -38,8 +38,8 @@ void Tab::create_preset_tab(PresetBundle *preset_bundle) // preset chooser m_presets_choice = new wxBitmapComboBox(panel, wxID_ANY, "", wxDefaultPosition, wxSize(270, -1), 0, 0,wxCB_READONLY); - - m_cc_presets_choice = new wxComboCtrl(panel, wxID_ANY, L(""), wxDefaultPosition, wxDefaultSize/*wxSize(270, -1)*/, wxCB_READONLY); + /* + m_cc_presets_choice = new wxComboCtrl(panel, wxID_ANY, L(""), wxDefaultPosition, wxDefaultSize, wxCB_READONLY); wxDataViewTreeCtrlComboPopup* popup = new wxDataViewTreeCtrlComboPopup; if (popup != nullptr) { @@ -73,8 +73,7 @@ void Tab::create_preset_tab(PresetBundle *preset_bundle) icons->Add(*new wxIcon(from_u8(Slic3r::var("flag-green-icon.png")), wxBITMAP_TYPE_PNG)); icons->Add(*new wxIcon(from_u8(Slic3r::var("flag-red-icon.png")), wxBITMAP_TYPE_PNG)); } - - +*/ auto color = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW); //buttons @@ -119,14 +118,16 @@ void Tab::create_preset_tab(PresetBundle *preset_bundle) m_hsizer->AddSpacer(64); m_hsizer->Add(m_undo_to_sys_btn, 0, wxALIGN_CENTER_VERTICAL); m_hsizer->Add(m_undo_btn, 0, wxALIGN_CENTER_VERTICAL); - m_hsizer->AddSpacer(64); - m_hsizer->Add(m_cc_presets_choice, 1, wxLEFT | wxRIGHT | wxTOP | wxALIGN_CENTER_VERTICAL, 3); +// m_hsizer->AddSpacer(64); +// m_hsizer->Add(m_cc_presets_choice, 1, wxLEFT | wxRIGHT | wxTOP | wxALIGN_CENTER_VERTICAL, 3); //Horizontal sizer to hold the tree and the selected page. m_hsizer = new wxBoxSizer(wxHORIZONTAL); sizer->Add(m_hsizer, 1, wxEXPAND, 0); +/* + //temporary left vertical sizer m_left_sizer = new wxBoxSizer(wxVERTICAL); @@ -153,7 +154,7 @@ void Tab::create_preset_tab(PresetBundle *preset_bundle) } }); - +*/ //left vertical sizer m_left_sizer = new wxBoxSizer(wxVERTICAL); @@ -202,8 +203,8 @@ void Tab::load_initial_data() { m_config = &m_presets->get_edited_preset().config; m_nonsys_btn_icon = m_presets->get_selected_preset_parent() == nullptr ? - "bullet_white.png" : - wxMSW ? "sys_unlock.png" : "lock_open.png"; + "bullet_white.png" : "sys_unlock.png"; +// wxMSW ? "sys_unlock.png" : "lock_open.png"; } PageShp Tab::add_options_page(wxString title, std::string icon, bool is_extruder_pages/* = false*/) @@ -331,8 +332,8 @@ void Tab::update_changed_ui() { bool is_nonsys_value = false; bool is_modified_value = true; - std::string sys_icon = wxMSW ? "sys_lock.png" : "lock.png"; - std::string icon = wxMSW ? "action_undo.png" : "arrow_undo.png"; + std::string sys_icon = /*wxMSW ? */"sys_lock.png"/* : "lock.png"*/; + std::string icon = /*wxMSW ? */"action_undo.png"/* : "arrow_undo.png"*/; wxColour& color = *get_sys_label_clr(); if (find(m_sys_options.begin(), m_sys_options.end(), opt_key) == m_sys_options.end()) { is_nonsys_value = true; @@ -478,9 +479,9 @@ void Tab::update_changed_tree_ui() void Tab::update_undo_buttons() { const std::string& undo_icon = !m_is_modified_values ? "bullet_white.png" : - wxMSW ? "action_undo.png" : "arrow_undo.png"; + /*wxMSW ? */"action_undo.png"/* : "arrow_undo.png"*/; const std::string& undo_to_sys_icon = m_is_nonsys_values ? m_nonsys_btn_icon : - wxMSW ? "sys_lock.png" : "lock.png"; + /*wxMSW ? */"sys_lock.png"/* : "lock.png"*/; m_undo_btn->SetBitmap(wxBitmap(from_u8(var(undo_icon)), wxBITMAP_TYPE_PNG)); m_undo_to_sys_btn->SetBitmap(wxBitmap(from_u8(var(undo_to_sys_icon)), wxBITMAP_TYPE_PNG)); @@ -552,8 +553,8 @@ void Tab::update_dirty(){ void Tab::update_tab_ui() { m_presets->update_tab_ui(m_presets_choice, m_show_incompatible_presets); - update_tab_presets(m_cc_presets_choice, m_show_incompatible_presets); - update_presetsctrl(m_presetctrl, m_show_incompatible_presets); +// update_tab_presets(m_cc_presets_choice, m_show_incompatible_presets); +// update_presetsctrl(m_presetctrl, m_show_incompatible_presets); } // Load a provied DynamicConfig into the tab, modifying the active preset. @@ -1786,7 +1787,7 @@ void Tab::load_current_preset() const Preset* parent = m_presets->get_selected_preset_parent(); m_nonsys_btn_icon = parent == nullptr ? "bullet_white.png" : - wxMSW ? "sys_unlock.png" : "lock_open.png"; + /*wxMSW ? */"sys_unlock.png"/* : "lock_open.png"*/; // use CallAfter because some field triggers schedule on_change calls using CallAfter, // and we don't want them to be called after this update_dirty() as they would mark the