mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-20 07:11:12 -06:00 
			
		
		
		
	Add the full source of BambuStudio
using version 1.0.10
This commit is contained in:
		
							parent
							
								
									30bcadab3e
								
							
						
					
					
						commit
						1555904bef
					
				
					 3771 changed files with 1251328 additions and 0 deletions
				
			
		
							
								
								
									
										215
									
								
								src/slic3r/GUI/Widgets/SideTools.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										215
									
								
								src/slic3r/GUI/Widgets/SideTools.cpp
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,215 @@ | |||
| #include "SideTools.hpp" | ||||
| #include <wx/dcmemory.h> | ||||
| #include <wx/dcgraph.h> | ||||
| #include "Label.hpp" | ||||
| #include "../wxExtensions.hpp" | ||||
| #include "../I18N.hpp" | ||||
| #include "../GUI.hpp" | ||||
| 
 | ||||
| namespace Slic3r { namespace GUI { | ||||
| 	SideTools::SideTools(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size) | ||||
| { | ||||
|     wxPanel::Create(parent, id, pos, wxSize(0, FromDIP(50))); | ||||
|     Bind(wxEVT_PAINT, &SideTools::OnPaint, this); | ||||
| 
 | ||||
|     SetBackgroundColour(*wxWHITE); | ||||
| 
 | ||||
|     m_printing_img = create_scaled_bitmap("printer", nullptr, 16); | ||||
|     m_arrow_img    = create_scaled_bitmap("monitor_arrow", nullptr, 14); | ||||
| 
 | ||||
|     m_none_printing_img = create_scaled_bitmap("tab_monitor_active", nullptr, 24); | ||||
|     m_none_arrow_img    = create_scaled_bitmap("monitor_none_arrow", nullptr, 14); | ||||
|     m_none_add_img      = create_scaled_bitmap("monitor_none_add", nullptr, 14); | ||||
| 
 | ||||
|     m_wifi_none_img     = create_scaled_bitmap("monitor_signal_no", nullptr, 18); | ||||
|     m_wifi_weak_img     = create_scaled_bitmap("monitor_signal_weak", nullptr, 18); | ||||
|     m_wifi_middle_img   = create_scaled_bitmap("monitor_signal_middle", nullptr, 18); | ||||
|     m_wifi_strong_img   = create_scaled_bitmap("monitor_signal_strong", nullptr, 18); | ||||
| 
 | ||||
|     m_intetval_timer = new wxTimer(); | ||||
|     m_intetval_timer->SetOwner(this); | ||||
| 
 | ||||
|     this->Bind(wxEVT_TIMER, &SideTools::stop_interval, this); | ||||
|     this->Bind(wxEVT_ENTER_WINDOW, &SideTools::on_mouse_enter, this); | ||||
|     this->Bind(wxEVT_LEAVE_WINDOW, &SideTools::on_mouse_leave, this); | ||||
|     this->Bind(wxEVT_LEFT_DOWN, &SideTools::on_mouse_left_down, this); | ||||
|     this->Bind(wxEVT_LEFT_UP, &SideTools::on_mouse_left_up, this); | ||||
| } | ||||
| 
 | ||||
| SideTools::~SideTools() {} | ||||
| 
 | ||||
| void SideTools::set_none_printer_mode()  | ||||
| {  | ||||
|     m_none_printer = true; | ||||
|     Refresh(); | ||||
| } | ||||
| 
 | ||||
| void SideTools::on_timer(wxTimerEvent &event) | ||||
| { | ||||
| } | ||||
| 
 | ||||
| void SideTools::set_current_printer_name(std::string dev_name)  | ||||
| { | ||||
|      m_none_printer = false; | ||||
|      m_dev_name     = from_u8(dev_name); | ||||
|      Refresh(); | ||||
| } | ||||
| 
 | ||||
| void SideTools::set_current_printer_signal(WifiSignal sign)  | ||||
| { | ||||
|      if (last_printer_signal == sign) return; | ||||
|      | ||||
|      last_printer_signal = sign; | ||||
|      m_none_printer = false; | ||||
|      m_wifi_type    = sign; | ||||
|      Refresh(); | ||||
| } | ||||
| 
 | ||||
| void SideTools::start_interval()  | ||||
| {  | ||||
|     m_intetval_timer->Start(SIDE_TOOL_CLICK_INTERVAL);  | ||||
|     m_is_in_interval = true; | ||||
| } | ||||
| 
 | ||||
| void SideTools::stop_interval(wxTimerEvent& event) | ||||
| { | ||||
|     m_is_in_interval = false; | ||||
|     m_intetval_timer->Stop(); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| bool SideTools::is_in_interval()  | ||||
| { | ||||
|     return m_is_in_interval; | ||||
| } | ||||
| 
 | ||||
| void SideTools::msw_rescale()  | ||||
| {  | ||||
|     Refresh(); | ||||
| } | ||||
| 
 | ||||
| void SideTools::OnPaint(wxPaintEvent &event) | ||||
| { | ||||
|     wxPaintDC dc(this); | ||||
|     doRender(dc); | ||||
| } | ||||
| 
 | ||||
| void SideTools::render(wxDC &dc) | ||||
| { | ||||
| #ifdef __WXMSW__ | ||||
|     wxSize     size = GetSize(); | ||||
|     wxMemoryDC memdc; | ||||
|     wxBitmap   bmp(size.x, size.y); | ||||
|     memdc.SelectObject(bmp); | ||||
|     memdc.Blit({0, 0}, size, &dc, {0, 0}); | ||||
| 
 | ||||
|     { | ||||
|         wxGCDC dc2(memdc); | ||||
|         doRender(dc2); | ||||
|     } | ||||
| 
 | ||||
|     memdc.SelectObject(wxNullBitmap); | ||||
|     dc.DrawBitmap(bmp, 0, 0); | ||||
| #else | ||||
|     doRender(dc); | ||||
| #endif | ||||
| } | ||||
| 
 | ||||
| void SideTools::doRender(wxDC &dc) | ||||
| { | ||||
|     auto   left = FromDIP(15); | ||||
|     wxSize size = GetSize(); | ||||
|      | ||||
|     //if (m_none_printer) {
 | ||||
|     //    dc.SetPen(SIDE_TOOLS_LIGHT_GREEN);
 | ||||
|     //    dc.SetBrush(SIDE_TOOLS_LIGHT_GREEN);
 | ||||
|     //    dc.DrawRectangle(0, 0, size.x, size.y);
 | ||||
|     //}
 | ||||
| 
 | ||||
|     if (m_none_printer) { | ||||
|         dc.SetPen(SIDE_TOOLS_BRAND); | ||||
|         dc.SetBrush(SIDE_TOOLS_BRAND); | ||||
|         dc.DrawRectangle(0, 0, size.x, size.y); | ||||
| 
 | ||||
|         dc.DrawBitmap(m_none_printing_img, left, (size.y - m_none_printing_img.GetSize().y) / 2); | ||||
| 
 | ||||
|         left += (m_none_printing_img.GetSize().x + FromDIP(15)); | ||||
|         dc.DrawBitmap(m_none_arrow_img, left, (size.y - m_none_arrow_img.GetSize().y) / 2); | ||||
| 
 | ||||
|         left += (m_none_arrow_img.GetSize().x + FromDIP(6)); | ||||
|         dc.SetFont(::Label::Body_14); | ||||
|         dc.SetBackgroundMode(wxTRANSPARENT); | ||||
|         dc.SetTextForeground(*wxWHITE); | ||||
| 
 | ||||
|         auto sizet = dc.GetTextExtent(_L("No printer")); | ||||
|         dc.DrawText(_L("No printer"), wxPoint(left, (size.y - sizet.y) / 2)); | ||||
| 
 | ||||
|         left = size.x - FromDIP(30) - m_wifi_none_img.GetSize().x; | ||||
|         dc.DrawBitmap(m_none_add_img, left, (size.y - m_none_add_img.GetSize().y) / 2); | ||||
|     } else { | ||||
|         dc.DrawBitmap(m_printing_img, left, (size.y - m_printing_img.GetSize().y) / 2); | ||||
| 
 | ||||
|         left += (m_printing_img.GetSize().x + FromDIP(5)); | ||||
|         dc.DrawBitmap(m_arrow_img, left, (size.y - m_arrow_img.GetSize().y) / 2); | ||||
| 
 | ||||
|         left += (m_arrow_img.GetSize().x + FromDIP(6)); | ||||
|         dc.SetFont(::Label::Body_14); | ||||
|         dc.SetBackgroundMode(wxTRANSPARENT); | ||||
|         dc.SetTextForeground(SIDE_TOOLS_GREY900); | ||||
| 
 | ||||
|         auto sizet = dc.GetTextExtent(m_dev_name); | ||||
|         auto text_end = size.x - m_wifi_none_img.GetSize().x - 20; | ||||
| 
 | ||||
|         std::string finally_name = m_dev_name.ToStdString(); | ||||
|         if (sizet.x > (text_end - left)) { | ||||
|             auto limit_width = text_end - left - dc.GetTextExtent("...").x - 20; | ||||
|             for (auto i = 0; i < m_dev_name.length(); i++) { | ||||
|                 auto curr_width = dc.GetTextExtent(m_dev_name.substr(0, i)); | ||||
|                 if (curr_width.x >= limit_width) { | ||||
|                     finally_name = (m_dev_name.substr(0, i) + wxString("...")).ToStdString(); | ||||
|                     break; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
|         dc.DrawText(finally_name, wxPoint(left, (size.y - sizet.y) / 2)); | ||||
| 
 | ||||
|         left = size.x - FromDIP(18) - m_wifi_none_img.GetSize().x; | ||||
|         if (m_wifi_type == WifiSignal::NONE) dc.DrawBitmap(m_wifi_none_img, left, (size.y - m_wifi_none_img.GetSize().y) / 2); | ||||
|         if (m_wifi_type == WifiSignal::WEAK) dc.DrawBitmap(m_wifi_weak_img, left, (size.y - m_wifi_weak_img.GetSize().y) / 2); | ||||
|         if (m_wifi_type == WifiSignal::MIDDLE) dc.DrawBitmap(m_wifi_middle_img, left, (size.y - m_wifi_middle_img.GetSize().y) / 2); | ||||
|         if (m_wifi_type == WifiSignal::STRONG) dc.DrawBitmap(m_wifi_strong_img, left, (size.y - m_wifi_strong_img.GetSize().y) / 2); | ||||
|     } | ||||
| 
 | ||||
|     if (m_hover) { | ||||
|         dc.SetPen(SIDE_TOOLS_BRAND); | ||||
|         dc.SetBrush(*wxTRANSPARENT_BRUSH); | ||||
|         dc.DrawRectangle(0, 0, size.x, size.y); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void SideTools::on_mouse_left_down(wxMouseEvent &evt) | ||||
| { | ||||
|     m_click = true; | ||||
|     Refresh(); | ||||
| } | ||||
| 
 | ||||
| void SideTools::on_mouse_left_up(wxMouseEvent &evt)  | ||||
| { | ||||
|      m_click = false; | ||||
|      Refresh(); | ||||
| } | ||||
| 
 | ||||
| void SideTools::on_mouse_enter(wxMouseEvent &evt) | ||||
| { | ||||
|     m_hover = true; | ||||
|     Refresh(); | ||||
| } | ||||
| 
 | ||||
| void SideTools::on_mouse_leave(wxMouseEvent &evt) | ||||
| { | ||||
|     m_hover = false; | ||||
|     Refresh(); | ||||
| } | ||||
| }} | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 lane.wei
						lane.wei