mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-31 04:31:15 -06:00 
			
		
		
		
	Merge branch 'master' of https://github.com/Prusa3d/PrusaSlicer
This commit is contained in:
		
						commit
						35f51ed9a9
					
				
					 4 changed files with 25 additions and 12 deletions
				
			
		|  | @ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 bubnikv
						bubnikv