mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-31 20:51:12 -06:00 
			
		
		
		
	Merge branch 'master' of https://github.com/prusa3d/Slic3r into et_canvas_gui_refactoring
This commit is contained in:
		
						commit
						6d9180ba92
					
				
					 26 changed files with 348 additions and 68 deletions
				
			
		|  | @ -507,7 +507,6 @@ void ObjectList::key_event(wxKeyEvent& event) | |||
|         || event.GetKeyCode() == WXK_BACK | ||||
| #endif //__WXOSX__
 | ||||
|         ) { | ||||
|         printf("WXK_BACK\n"); | ||||
|         remove(); | ||||
|     } | ||||
|     else if (wxGetKeyState(wxKeyCode('A')) && wxGetKeyState(WXK_SHIFT)) | ||||
|  |  | |||
|  | @ -179,7 +179,7 @@ void ObjectManipulation::update_settings_value(const Selection& selection) | |||
|                 changed_box = true; | ||||
|             } | ||||
|             if (changed_box || !m_cache.instance.matches_instance(instance_idx) || !m_cache.scale.isApprox(100.0 * m_new_scale)) | ||||
|                 m_new_size = volume->get_instance_transformation().get_matrix(true, true) * m_cache.instance.box_size; | ||||
|                 m_new_size = (volume->get_instance_transformation().get_matrix(true, true) * m_cache.instance.box_size).cwiseAbs(); | ||||
|         } | ||||
|         else | ||||
|             // this should never happen
 | ||||
|  | @ -209,7 +209,7 @@ void ObjectManipulation::update_settings_value(const Selection& selection) | |||
|         m_new_position = volume->get_volume_offset(); | ||||
|         m_new_rotation = volume->get_volume_rotation(); | ||||
|         m_new_scale    = volume->get_volume_scaling_factor(); | ||||
|         m_new_size = volume->get_volume_transformation().get_matrix(true, true) * volume->bounding_box.size(); | ||||
|         m_new_size = (volume->get_volume_transformation().get_matrix(true, true) * volume->bounding_box.size()).cwiseAbs(); | ||||
|         m_new_enabled = true; | ||||
|     } | ||||
|     else if (wxGetApp().obj_list()->multiple_selection()) | ||||
|  |  | |||
|  | @ -85,7 +85,8 @@ void ObjectSettings::update_settings_list() | |||
| #endif // __WXMSW__
 | ||||
| 			btn->Bind(wxEVT_BUTTON, [opt_key, config, this](wxEvent &event) { | ||||
| 				config->erase(opt_key); | ||||
|                 wxTheApp->CallAfter([this]() {  | ||||
|                 wxGetApp().obj_list()->part_settings_changed(); | ||||
|                 wxTheApp->CallAfter([this]() { | ||||
|                     wxWindowUpdateLocker noUpdates(m_parent); | ||||
|                     update_settings_list();  | ||||
|                     m_parent->Layout();  | ||||
|  |  | |||
|  | @ -329,8 +329,12 @@ bool GLGizmoSlaSupports::gizmo_event(SLAGizmoEventType action, const Vec2d& mous | |||
|                 m_canvas_width = m_parent.get_canvas_size().get_width(); | ||||
|                 m_canvas_height = m_parent.get_canvas_size().get_height(); | ||||
|             } | ||||
|             else | ||||
|                 select_point(m_hover_id); | ||||
|             else { | ||||
|                 if (m_editing_mode_cache[m_hover_id].selected) | ||||
|                     unselect_point(m_hover_id); | ||||
|                 else | ||||
|                     select_point(m_hover_id); | ||||
|             } | ||||
| 
 | ||||
|             return true; | ||||
|         } | ||||
|  | @ -562,12 +566,12 @@ void GLGizmoSlaSupports::on_render_input_window(float x, float y, float bottom_l | |||
| RENDER_AGAIN: | ||||
|     m_imgui->set_next_window_pos(x, y, ImGuiCond_Always); | ||||
| 
 | ||||
|     const ImVec2 window_size(m_imgui->scaled(15.f, 16.5f)); | ||||
|     const ImVec2 window_size(m_imgui->scaled(17.f, 18.f)); | ||||
|     ImGui::SetNextWindowPos(ImVec2(x, y - std::max(0.f, y+window_size.y-bottom_limit) )); | ||||
|     ImGui::SetNextWindowSize(ImVec2(window_size)); | ||||
| 
 | ||||
|     m_imgui->set_next_window_bg_alpha(0.5f); | ||||
|     m_imgui->begin(on_get_name(), ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse); | ||||
|     m_imgui->begin(on_get_name(), ImGuiWindowFlags_NoMove | ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoCollapse); | ||||
| 
 | ||||
|     ImGui::PushItemWidth(100.0f); | ||||
| 
 | ||||
|  | @ -788,6 +792,19 @@ void GLGizmoSlaSupports::select_point(int i) | |||
| } | ||||
| 
 | ||||
| 
 | ||||
| void GLGizmoSlaSupports::unselect_point(int i) | ||||
| { | ||||
|     m_editing_mode_cache[i].selected = false; | ||||
|     m_selection_empty = true; | ||||
|     for (const CacheEntry& ce : m_editing_mode_cache) { | ||||
|         if (ce.selected) { | ||||
|             m_selection_empty = false; | ||||
|             break; | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| void GLGizmoSlaSupports::editing_mode_discard_changes() | ||||
| { | ||||
|  |  | |||
|  | @ -94,6 +94,7 @@ private: | |||
|         NoPoints, | ||||
|     }; | ||||
|     void select_point(int i); | ||||
|     void unselect_point(int i); | ||||
|     void editing_mode_apply_changes(); | ||||
|     void editing_mode_discard_changes(); | ||||
|     void editing_mode_reload_cache(); | ||||
|  |  | |||
|  | @ -341,13 +341,11 @@ bool ImGuiWrapper::want_any_input() const | |||
| 
 | ||||
| void ImGuiWrapper::init_font() | ||||
| { | ||||
|     const float font_size = m_font_size * m_style_scaling; | ||||
| 
 | ||||
|     destroy_font(); | ||||
| 
 | ||||
|     ImGuiIO& io = ImGui::GetIO(); | ||||
|     io.Fonts->Clear(); | ||||
|     ImFont* font = io.Fonts->AddFontFromFileTTF((Slic3r::resources_dir() + "/fonts/NotoSans-Regular.ttf").c_str(), font_size, nullptr, m_glyph_ranges); | ||||
|     ImFont* font = io.Fonts->AddFontFromFileTTF((Slic3r::resources_dir() + "/fonts/NotoSans-Regular.ttf").c_str(), m_font_size, nullptr, m_glyph_ranges); | ||||
|     if (font == nullptr) { | ||||
|         font = io.Fonts->AddFontDefault(); | ||||
|         if (font == nullptr) { | ||||
|  |  | |||
|  | @ -45,8 +45,8 @@ public: | |||
|     void new_frame(); | ||||
|     void render(); | ||||
| 
 | ||||
|     float scaled(float x) const { return x * m_font_size * m_style_scaling; } | ||||
|     ImVec2 scaled(float x, float y) const { return ImVec2(x * m_font_size * m_style_scaling, y * m_font_size * m_style_scaling); } | ||||
|     float scaled(float x) const { return x * m_font_size; } | ||||
|     ImVec2 scaled(float x, float y) const { return ImVec2(x * m_font_size, y * m_font_size); } | ||||
|     ImVec2 calc_text_size(const wxString &text); | ||||
| 
 | ||||
|     void set_next_window_pos(float x, float y, int flag); | ||||
|  |  | |||
|  | @ -109,21 +109,26 @@ void Selection::add(unsigned int volume_idx, bool as_single_selection) | |||
|     if (is_wipe_tower() && volume->is_wipe_tower) | ||||
|         return; | ||||
| 
 | ||||
|     bool keep_instance_mode = (m_mode == Instance) && !as_single_selection && (is_single_full_instance() || is_multiple_full_instance()); | ||||
| 
 | ||||
|     // resets the current list if needed
 | ||||
|     bool needs_reset = as_single_selection; | ||||
|     needs_reset |= volume->is_wipe_tower; | ||||
|     needs_reset |= is_wipe_tower() && !volume->is_wipe_tower; | ||||
|     needs_reset |= !is_modifier() && volume->is_modifier; | ||||
|     needs_reset |= !keep_instance_mode && !is_modifier() && volume->is_modifier; | ||||
|     needs_reset |= is_modifier() && !volume->is_modifier; | ||||
| 
 | ||||
|     if (needs_reset) | ||||
|         clear(); | ||||
| 
 | ||||
|     if (!contains_volume(volume_idx)) | ||||
|         m_mode = volume->is_modifier ? Volume : Instance; | ||||
|     { | ||||
|         if (!keep_instance_mode) | ||||
|             m_mode = volume->is_modifier ? Volume : Instance; | ||||
|     } | ||||
|     else | ||||
|         // keep current mode
 | ||||
|         return; | ||||
|       // keep current mode
 | ||||
|       return; | ||||
| 
 | ||||
|     switch (m_mode) | ||||
|     { | ||||
|  | @ -1143,16 +1148,12 @@ void Selection::update_type() | |||
|                         } | ||||
| 
 | ||||
|                         if (modifiers_count == 0) | ||||
|                         { | ||||
|                             m_type = MultipleVolume; | ||||
|                             requires_disable = true; | ||||
|                         } | ||||
|                         else if (modifiers_count == (unsigned int)m_list.size()) | ||||
|                         { | ||||
|                             m_type = MultipleModifier; | ||||
|                             requires_disable = true; | ||||
|                         } | ||||
|                     } | ||||
| 
 | ||||
|                     requires_disable = true; | ||||
|                 } | ||||
|                 else if ((selected_instances_count > 1) && (selected_instances_count * volumes_count == (unsigned int)m_list.size())) | ||||
|                 { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Enrico Turri
						Enrico Turri