Merge branch 'master' of https://github.com/Prusa3d/PrusaSlicer
This commit is contained in:
commit
35f51ed9a9
@ -1300,11 +1300,12 @@ bool PlaterDropTarget::OnDropFiles(wxCoord x, wxCoord y, const wxArrayString &fi
|
||||
// FIXME: when drag and drop is done on a .3mf or a .amf file we should clear the plater for consistence with the open project command
|
||||
// (the following call to plater->load_files() will load the config data, if present)
|
||||
|
||||
plater->load_files(paths);
|
||||
std::vector<size_t> res = plater->load_files(paths);
|
||||
|
||||
// because right now the plater is not cleared, we set the project file (from the latest imported .3mf or .amf file)
|
||||
// only if not set yet
|
||||
if (plater->get_project_filename().empty())
|
||||
// if res is empty no data has been loaded
|
||||
if (!res.empty() && plater->get_project_filename().empty())
|
||||
{
|
||||
for (std::vector<fs::path>::const_reverse_iterator it = paths.rbegin(); it != paths.rend(); ++it)
|
||||
{
|
||||
@ -4076,11 +4077,15 @@ void Plater::load_project(const wxString& filename)
|
||||
Plater::TakeSnapshot snapshot(this, _(L("Load Project")) + ": " + wxString::FromUTF8(into_path(filename).stem().string().c_str()));
|
||||
|
||||
p->reset();
|
||||
p->set_project_filename(filename);
|
||||
|
||||
std::vector<fs::path> input_paths;
|
||||
input_paths.push_back(into_path(filename));
|
||||
load_files(input_paths);
|
||||
|
||||
std::vector<size_t> res = load_files(input_paths);
|
||||
|
||||
// if res is empty no data has been loaded
|
||||
if (!res.empty())
|
||||
p->set_project_filename(filename);
|
||||
}
|
||||
|
||||
void Plater::add_model()
|
||||
@ -4127,16 +4132,16 @@ void Plater::extract_config_from_project()
|
||||
load_files(input_paths, false, true);
|
||||
}
|
||||
|
||||
void Plater::load_files(const std::vector<fs::path>& input_files, bool load_model, bool load_config) { p->load_files(input_files, load_model, load_config); }
|
||||
std::vector<size_t> Plater::load_files(const std::vector<fs::path>& input_files, bool load_model, bool load_config) { return p->load_files(input_files, load_model, load_config); }
|
||||
|
||||
// To be called when providing a list of files to the GUI slic3r on command line.
|
||||
void Plater::load_files(const std::vector<std::string>& input_files, bool load_model, bool load_config)
|
||||
std::vector<size_t> Plater::load_files(const std::vector<std::string>& input_files, bool load_model, bool load_config)
|
||||
{
|
||||
std::vector<fs::path> paths;
|
||||
paths.reserve(input_files.size());
|
||||
for (const std::string &path : input_files)
|
||||
for (const std::string& path : input_files)
|
||||
paths.emplace_back(path);
|
||||
p->load_files(paths, load_model, load_config);
|
||||
return p->load_files(paths, load_model, load_config);
|
||||
}
|
||||
|
||||
void Plater::update() { p->update(); }
|
||||
|
@ -147,9 +147,9 @@ public:
|
||||
void add_model();
|
||||
void extract_config_from_project();
|
||||
|
||||
void load_files(const std::vector<boost::filesystem::path>& input_files, bool load_model = true, bool load_config = true);
|
||||
std::vector<size_t> load_files(const std::vector<boost::filesystem::path>& input_files, bool load_model = true, bool load_config = true);
|
||||
// To be called when providing a list of files to the GUI slic3r on command line.
|
||||
void load_files(const std::vector<std::string>& input_files, bool load_model = true, bool load_config = true);
|
||||
std::vector<size_t> load_files(const std::vector<std::string>& input_files, bool load_model = true, bool load_config = true);
|
||||
|
||||
void update();
|
||||
void stop_jobs();
|
||||
|
@ -1492,13 +1492,16 @@ void PresetBundle::update_platter_filament_ui(unsigned int idx_extruder, GUI::Pr
|
||||
// To avoid the errors of number rounding for different combination of monitor configuration,
|
||||
// let use scaled 8px, as a smallest icon unit
|
||||
const int icon_unit = 8 * scale_f + 0.5f;
|
||||
const int icon_height = 2 * icon_unit; //16 * scale_f + 0.5f;
|
||||
const int normal_icon_width = 2 * icon_unit; //16 * scale_f + 0.5f;
|
||||
const int thin_icon_width = icon_unit; //8 * scale_f + 0.5f;
|
||||
const int wide_icon_width = 3 * icon_unit; //24 * scale_f + 0.5f;
|
||||
|
||||
const int space_icon_width = 2 * scale_f + 0.5f;
|
||||
|
||||
// To avoid asserts, each added bitmap to wxBitmapCombobox should be the same size, so
|
||||
// set a bitmap height to m_bitmapLock->GetHeight()
|
||||
const int icon_height = m_bitmapLock->GetHeight();//2 * icon_unit; //16 * scale_f + 0.5f;
|
||||
|
||||
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;
|
||||
|
@ -2218,7 +2218,8 @@ void DoubleSlider::SetTicksValues(const std::vector<double>& heights)
|
||||
for (auto h : heights) {
|
||||
while (i < m_values.size() && m_values[i].second - 1e-6 < h)
|
||||
++i;
|
||||
if (i == m_values.size())
|
||||
// don't miss last layer if it is
|
||||
if (i == m_values.size() && fabs(m_values[i-1].second - h) > EPSILON)
|
||||
return;
|
||||
m_ticks.insert(i-1);
|
||||
}
|
||||
@ -2293,6 +2294,10 @@ void DoubleSlider::draw_action_icon(wxDC& dc, const wxPoint pt_beg, const wxPoin
|
||||
{
|
||||
const int tick = m_selection == ssLower ? m_lower_value : m_higher_value;
|
||||
|
||||
// suppress add tick on first layer
|
||||
if (tick == 0)
|
||||
return;
|
||||
|
||||
wxBitmap* icon = m_is_action_icon_focesed ? &m_bmp_add_tick_off.bmp() : &m_bmp_add_tick_on.bmp();
|
||||
if (m_ticks.find(tick) != m_ticks.end())
|
||||
icon = m_is_action_icon_focesed ? &m_bmp_del_tick_off.bmp() : &m_bmp_del_tick_on.bmp();
|
||||
|
Loading…
Reference in New Issue
Block a user