mirror of
https://git.mirrors.martin98.com/https://github.com/slic3r/Slic3r.git
synced 2025-08-14 17:56:01 +08:00
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
|
// 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)
|
// (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)
|
// 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
|
// 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)
|
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()));
|
Plater::TakeSnapshot snapshot(this, _(L("Load Project")) + ": " + wxString::FromUTF8(into_path(filename).stem().string().c_str()));
|
||||||
|
|
||||||
p->reset();
|
p->reset();
|
||||||
p->set_project_filename(filename);
|
|
||||||
|
|
||||||
std::vector<fs::path> input_paths;
|
std::vector<fs::path> input_paths;
|
||||||
input_paths.push_back(into_path(filename));
|
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()
|
void Plater::add_model()
|
||||||
@ -4127,16 +4132,16 @@ void Plater::extract_config_from_project()
|
|||||||
load_files(input_paths, false, true);
|
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.
|
// 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;
|
std::vector<fs::path> paths;
|
||||||
paths.reserve(input_files.size());
|
paths.reserve(input_files.size());
|
||||||
for (const std::string &path : input_files)
|
for (const std::string& path : input_files)
|
||||||
paths.emplace_back(path);
|
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(); }
|
void Plater::update() { p->update(); }
|
||||||
|
@ -147,9 +147,9 @@ public:
|
|||||||
void add_model();
|
void add_model();
|
||||||
void extract_config_from_project();
|
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.
|
// 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 update();
|
||||||
void stop_jobs();
|
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,
|
// To avoid the errors of number rounding for different combination of monitor configuration,
|
||||||
// let use scaled 8px, as a smallest icon unit
|
// let use scaled 8px, as a smallest icon unit
|
||||||
const int icon_unit = 8 * scale_f + 0.5f;
|
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 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 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 wide_icon_width = 3 * icon_unit; //24 * scale_f + 0.5f;
|
||||||
|
|
||||||
const int space_icon_width = 2 * 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) {
|
for (int i = this->filaments().front().is_visible ? 0 : 1; i < int(this->filaments().size()); ++i) {
|
||||||
const Preset &preset = this->filaments.preset(i);
|
const Preset &preset = this->filaments.preset(i);
|
||||||
bool selected = this->filament_presets[idx_extruder] == preset.name;
|
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) {
|
for (auto h : heights) {
|
||||||
while (i < m_values.size() && m_values[i].second - 1e-6 < h)
|
while (i < m_values.size() && m_values[i].second - 1e-6 < h)
|
||||||
++i;
|
++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;
|
return;
|
||||||
m_ticks.insert(i-1);
|
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;
|
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();
|
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())
|
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();
|
icon = m_is_action_icon_focesed ? &m_bmp_del_tick_off.bmp() : &m_bmp_del_tick_on.bmp();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user