Merge remote-tracking branch 'remotes/origin/master' into ys_printable_property

This commit is contained in:
bubnikv 2019-08-07 08:43:11 +02:00
commit b7a8e51907
4 changed files with 39 additions and 20 deletions

View file

@ -1,6 +1,7 @@
#ifndef slic3r_GLTexture_hpp_ #ifndef slic3r_GLTexture_hpp_
#define slic3r_GLTexture_hpp_ #define slic3r_GLTexture_hpp_
#include <atomic>
#include <string> #include <string>
#include <vector> #include <vector>
#include <thread> #include <thread>

View file

@ -986,6 +986,7 @@ wxString GUI_App::current_language_code_safe() const
language_code = language_code.substr(0, idx_underscore); language_code = language_code.substr(0, idx_underscore);
const std::map<wxString, wxString> mapping { const std::map<wxString, wxString> mapping {
{ "cs", "cs_CZ", }, { "cs", "cs_CZ", },
{ "sk", "cs_CZ", },
{ "de", "de_DE", }, { "de", "de_DE", },
{ "es", "es_ES", }, { "es", "es_ES", },
{ "fr", "fr_FR", }, { "fr", "fr_FR", },

View file

@ -186,7 +186,18 @@ ObjectList::ObjectList(wxWindow* parent) :
Bind(wxCUSTOMEVT_LAST_VOLUME_IS_DELETED, [this](wxCommandEvent& e) { last_volume_is_deleted(e.GetInt()); }); Bind(wxCUSTOMEVT_LAST_VOLUME_IS_DELETED, [this](wxCommandEvent& e) { last_volume_is_deleted(e.GetInt()); });
Bind(wxEVT_SIZE, ([this](wxSizeEvent &e) { this->EnsureVisible(this->GetCurrentItem()); e.Skip(); })); Bind(wxEVT_SIZE, ([this](wxSizeEvent &e) {
#ifdef __WXGTK__
// On GTK, the EnsureVisible call is postponed to Idle processing (see wxDataViewCtrl::m_ensureVisibleDefered).
// So the postponed EnsureVisible() call is planned for an item, which may not exist at the Idle processing time, if this wxEVT_SIZE
// event is succeeded by a delete of the currently active item. We are trying our luck by postponing the wxEVT_SIZE triggered EnsureVisible(),
// which seems to be working as of now.
this->CallAfter([this](){ this->EnsureVisible(this->GetCurrentItem()); });
#else
this->EnsureVisible(this->GetCurrentItem());
#endif
e.Skip();
}));
} }
ObjectList::~ObjectList() ObjectList::~ObjectList()
@ -1017,6 +1028,11 @@ const std::vector<std::string>& ObjectList::get_options_for_bundle(const wxStrin
return empty; return empty;
} }
static bool improper_category(const std::string& category, const int extruders_cnt)
{
return category.empty() || (extruders_cnt == 1 && (category == "Extruders" || category == "Wipe options" ));
}
void ObjectList::get_options_menu(settings_menu_hierarchy& settings_menu, const bool is_part) void ObjectList::get_options_menu(settings_menu_hierarchy& settings_menu, const bool is_part)
{ {
auto options = get_options(is_part); auto options = get_options(is_part);
@ -1028,8 +1044,8 @@ void ObjectList::get_options_menu(settings_menu_hierarchy& settings_menu, const
{ {
auto const opt = config.def()->get(option); auto const opt = config.def()->get(option);
auto category = opt->category; auto category = opt->category;
if (category.empty() || if (improper_category(category, extruders_cnt))
(category == "Extruders" && extruders_cnt == 1)) continue; continue;
const std::string& label = !opt->full_label.empty() ? opt->full_label : opt->label; const std::string& label = !opt->full_label.empty() ? opt->full_label : opt->label;
std::pair<std::string, std::string> option_label(option, label); std::pair<std::string, std::string> option_label(option, label);
@ -1548,7 +1564,7 @@ void ObjectList::create_freq_settings_popupmenu(wxMenu *menu)
const int extruders_cnt = extruders_count(); const int extruders_cnt = extruders_count();
for (auto& it : bundle) { for (auto& it : bundle) {
if (it.first.empty() || it.first == "Extruders" && extruders_cnt == 1) if (improper_category(it.first, extruders_cnt))
continue; continue;
append_menu_item(menu, wxID_ANY, _(it.first), "", append_menu_item(menu, wxID_ANY, _(it.first), "",
@ -1561,7 +1577,7 @@ void ObjectList::create_freq_settings_popupmenu(wxMenu *menu)
m_freq_settings_fff : m_freq_settings_sla; m_freq_settings_fff : m_freq_settings_sla;
for (auto& it : bundle_quick) { for (auto& it : bundle_quick) {
if (it.first.empty() || it.first == "Extruders" && extruders_cnt == 1) if (improper_category(it.first, extruders_cnt))
continue; continue;
append_menu_item(menu, wxID_ANY, wxString::Format(_(L("Quick Add Settings (%s)")), _(it.first)), "", append_menu_item(menu, wxID_ANY, wxString::Format(_(L("Quick Add Settings (%s)")), _(it.first)), "",
@ -2195,7 +2211,7 @@ SettingsBundle ObjectList::get_item_settings_bundle(const DynamicPrintConfig* co
for (auto& opt_key : opt_keys) for (auto& opt_key : opt_keys)
{ {
auto category = config->def()->get(opt_key)->category; auto category = config->def()->get(opt_key)->category;
if (category.empty() || (category == "Extruders" && extruders_cnt == 1)) if (improper_category(category, extruders_cnt))
continue; continue;
std::vector< std::string > new_category; std::vector< std::string > new_category;
@ -2477,13 +2493,13 @@ void ObjectList::del_layer_range(const t_layer_height_range& range)
select_item(selectable_item); select_item(selectable_item);
} }
double get_min_layer_height(const int extruder_idx) static double get_min_layer_height(const int extruder_idx)
{ {
const DynamicPrintConfig& config = wxGetApp().preset_bundle->printers.get_edited_preset().config; const DynamicPrintConfig& config = wxGetApp().preset_bundle->printers.get_edited_preset().config;
return config.opt_float("min_layer_height", extruder_idx <= 0 ? 0 : extruder_idx-1); return config.opt_float("min_layer_height", extruder_idx <= 0 ? 0 : extruder_idx-1);
} }
double get_max_layer_height(const int extruder_idx) static double get_max_layer_height(const int extruder_idx)
{ {
const DynamicPrintConfig& config = wxGetApp().preset_bundle->printers.get_edited_preset().config; const DynamicPrintConfig& config = wxGetApp().preset_bundle->printers.get_edited_preset().config;
return config.opt_float("max_layer_height", extruder_idx <= 0 ? 0 : extruder_idx-1); return config.opt_float("max_layer_height", extruder_idx <= 0 ? 0 : extruder_idx-1);

View file

@ -132,6 +132,7 @@ void KBShortcutsDialog::fill_shortcuts()
plater_shortcuts.reserve(20); plater_shortcuts.reserve(20);
plater_shortcuts.push_back(Shortcut("A", L("Arrange"))); plater_shortcuts.push_back(Shortcut("A", L("Arrange")));
plater_shortcuts.push_back(Shortcut("Shift+A", L("Arrange selection")));
plater_shortcuts.push_back(Shortcut(ctrl+"A", L("Select All objects"))); plater_shortcuts.push_back(Shortcut(ctrl+"A", L("Select All objects")));
plater_shortcuts.push_back(Shortcut("Del", L("Delete selected"))); plater_shortcuts.push_back(Shortcut("Del", L("Delete selected")));
plater_shortcuts.push_back(Shortcut(ctrl+"Del", L("Delete All"))); plater_shortcuts.push_back(Shortcut(ctrl+"Del", L("Delete All")));