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
				
			
		
							
								
								
									
										239
									
								
								src/slic3r/GUI/Notebook.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										239
									
								
								src/slic3r/GUI/Notebook.cpp
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,239 @@ | |||
| #include "Notebook.hpp" | ||||
| 
 | ||||
| //#ifdef _WIN32
 | ||||
| 
 | ||||
| #include "GUI_App.hpp" | ||||
| #include "wxExtensions.hpp" | ||||
| #include "Widgets/Button.hpp" | ||||
| 
 | ||||
| //BBS set font size
 | ||||
| #include "Widgets/Label.hpp" | ||||
| 
 | ||||
| #include <wx/button.h> | ||||
| #include <wx/sizer.h> | ||||
| 
 | ||||
| wxDEFINE_EVENT(wxCUSTOMEVT_NOTEBOOK_SEL_CHANGED, wxCommandEvent); | ||||
| 
 | ||||
| ButtonsListCtrl::ButtonsListCtrl(wxWindow *parent, wxBoxSizer* side_tools) : | ||||
|     wxControl(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE | wxTAB_TRAVERSAL) | ||||
| { | ||||
| #ifdef __WINDOWS__ | ||||
|     SetDoubleBuffered(true); | ||||
| #endif //__WINDOWS__
 | ||||
|     wxColour default_btn_bg("#3B4446"); // Gradient #414B4E
 | ||||
|     SetBackgroundColour(default_btn_bg); | ||||
| 
 | ||||
|     int em = em_unit(this);// Slic3r::GUI::wxGetApp().em_unit();
 | ||||
|     // BBS: no gap
 | ||||
|     m_btn_margin = 0; // std::lround(0.3 * em);
 | ||||
|     m_line_margin = std::lround(0.1 * em); | ||||
| 
 | ||||
|     m_sizer = new wxBoxSizer(wxHORIZONTAL); | ||||
|     this->SetSizer(m_sizer); | ||||
| 
 | ||||
|     m_buttons_sizer = new wxFlexGridSizer(1, m_btn_margin, m_btn_margin); | ||||
|     m_sizer->Add(m_buttons_sizer, 0, wxALIGN_CENTER_VERTICAL | wxLEFT | wxBOTTOM, m_btn_margin); | ||||
| 
 | ||||
|     if (side_tools != NULL) { | ||||
|         m_sizer->AddStretchSpacer(1); | ||||
|         for (size_t idx = 0; idx < side_tools->GetItemCount(); idx++) { | ||||
|             wxSizerItem* item = side_tools->GetItem(idx); | ||||
|             wxWindow* item_win = item->GetWindow(); | ||||
|             if (item_win) { | ||||
|                 item_win->Reparent(this); | ||||
|             } | ||||
|         } | ||||
|         m_sizer->Add(side_tools, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT | wxBOTTOM, m_btn_margin); | ||||
|     } | ||||
| 
 | ||||
|     // BBS: disable custom paint
 | ||||
|     //this->Bind(wxEVT_PAINT, &ButtonsListCtrl::OnPaint, this);
 | ||||
| } | ||||
| 
 | ||||
| void ButtonsListCtrl::OnPaint(wxPaintEvent&) | ||||
| { | ||||
|     Slic3r::GUI::wxGetApp().UpdateDarkUI(this); | ||||
|     const wxSize sz = GetSize(); | ||||
|     wxPaintDC dc(this); | ||||
| 
 | ||||
|     if (m_selection < 0 || m_selection >= (int)m_pageButtons.size()) | ||||
|         return; | ||||
| 
 | ||||
|     wxColour selected_btn_bg("#1F8EEA"); | ||||
|     wxColour default_btn_bg("#3B4446"); // Gradient #414B4E
 | ||||
|     const wxColour& btn_marker_color = Slic3r::GUI::wxGetApp().get_color_hovered_btn_label(); | ||||
| 
 | ||||
|     // highlight selected notebook button
 | ||||
| 
 | ||||
|     for (int idx = 0; idx < int(m_pageButtons.size()); idx++) { | ||||
|         Button* btn = m_pageButtons[idx]; | ||||
| 
 | ||||
|         btn->SetBackgroundColor(idx == m_selection ? selected_btn_bg : default_btn_bg); | ||||
| 
 | ||||
|         wxPoint pos = btn->GetPosition(); | ||||
|         wxSize size = btn->GetSize(); | ||||
|         const wxColour& clr = idx == m_selection ? btn_marker_color : default_btn_bg; | ||||
|         dc.SetPen(clr); | ||||
|         dc.SetBrush(clr); | ||||
|         dc.DrawRectangle(pos.x, pos.y + size.y, size.x, sz.y - size.y); | ||||
|     } | ||||
| 
 | ||||
| #if 0 | ||||
|     // highlight selected mode button
 | ||||
|     if (m_mode_sizer) { | ||||
|         const std::vector<ModeButton*>& mode_btns = m_mode_sizer->get_btns(); | ||||
|         for (int idx = 0; idx < int(mode_btns.size()); idx++) { | ||||
|             ModeButton* btn = mode_btns[idx]; | ||||
|             btn->SetBackgroundColor(btn->is_selected() ? selected_btn_bg : default_btn_bg); | ||||
| 
 | ||||
|             //wxPoint pos = btn->GetPosition();
 | ||||
|             //wxSize size = btn->GetSize();
 | ||||
|             //const wxColour& clr = btn->is_selected() ? btn_marker_color : default_btn_bg;
 | ||||
|             //dc.SetPen(clr);
 | ||||
|             //dc.SetBrush(clr);
 | ||||
|             //dc.DrawRectangle(pos.x, pos.y + size.y, size.x, sz.y - size.y);
 | ||||
|         } | ||||
|     } | ||||
| #endif | ||||
| 
 | ||||
|     // Draw orange bottom line
 | ||||
| 
 | ||||
|     dc.SetPen(btn_marker_color); | ||||
|     dc.SetBrush(btn_marker_color); | ||||
|     dc.DrawRectangle(1, sz.y - m_line_margin, sz.x, m_line_margin); | ||||
| } | ||||
| 
 | ||||
| void ButtonsListCtrl::UpdateMode() | ||||
| { | ||||
|     //m_mode_sizer->SetMode(Slic3r::GUI::wxGetApp().get_mode());
 | ||||
| } | ||||
| 
 | ||||
| void ButtonsListCtrl::Rescale() | ||||
| { | ||||
|     //m_mode_sizer->msw_rescale();
 | ||||
|     int em = em_unit(this); | ||||
|     for (Button* btn : m_pageButtons) { | ||||
|         //BBS
 | ||||
|         btn->SetMinSize({(btn->GetLabel().empty() ? 40 : 132) * em / 10, 36 * em / 10}); | ||||
|         btn->Rescale(); | ||||
|     } | ||||
| 
 | ||||
|     // BBS: no gap
 | ||||
|     //m_btn_margin = std::lround(0.3 * em);
 | ||||
|     //m_line_margin = std::lround(0.1 * em);
 | ||||
|     //m_buttons_sizer->SetVGap(m_btn_margin);
 | ||||
|     //m_buttons_sizer->SetHGap(m_btn_margin);
 | ||||
| 
 | ||||
|     m_sizer->Layout(); | ||||
| } | ||||
| 
 | ||||
| void ButtonsListCtrl::SetSelection(int sel) | ||||
| { | ||||
|     if (m_selection == sel) | ||||
|         return; | ||||
|     // BBS: change button color
 | ||||
|     wxColour selected_btn_bg("#00AE42");    // Gradient #00AE42
 | ||||
|     if (m_selection >= 0) { | ||||
|         StateColor bg_color = StateColor( | ||||
|         std::pair{wxColour(107, 107, 107), (int) StateColor::Hovered}, | ||||
|         std::pair{wxColour(59, 68, 70), (int) StateColor::Normal}); | ||||
|         m_pageButtons[m_selection]->SetBackgroundColor(bg_color); | ||||
|         StateColor text_color = StateColor( | ||||
|         std::pair{wxColour(255, 255, 255), (int) StateColor::Hovered}, | ||||
|         std::pair{wxColour(238,238, 238), (int) StateColor::Normal} | ||||
|         ); | ||||
|         m_pageButtons[m_selection]->SetSelected(false); | ||||
|         m_pageButtons[m_selection]->SetTextColor(text_color); | ||||
|     } | ||||
|     m_selection = sel; | ||||
| 
 | ||||
|     StateColor bg_color = StateColor( | ||||
|         std::pair{wxColour(0, 174, 66), (int) StateColor::Hovered}, | ||||
|         std::pair{wxColour(0,174, 66), (int) StateColor::Normal}); | ||||
|     m_pageButtons[m_selection]->SetBackgroundColor(bg_color); | ||||
| 
 | ||||
|     StateColor text_color = StateColor( | ||||
|         std::pair{wxColour(255, 255, 255), (int) StateColor::Hovered}, | ||||
|         std::pair{wxColour(255, 255, 255), (int) StateColor::Normal} | ||||
|         ); | ||||
|     m_pageButtons[m_selection]->SetSelected(true); | ||||
|     m_pageButtons[m_selection]->SetTextColor(text_color); | ||||
|      | ||||
|     Refresh(); | ||||
| } | ||||
| 
 | ||||
| bool ButtonsListCtrl::InsertPage(size_t n, const wxString &text, bool bSelect /* = false*/, const std::string &bmp_name /* = ""*/, const std::string &inactive_bmp_name) | ||||
| { | ||||
|     Button * btn = new Button(this, text.empty() ? text : " " + text, bmp_name, wxNO_BORDER); | ||||
|     btn->SetCornerRadius(0); | ||||
| 
 | ||||
|     int em = em_unit(this); | ||||
|     //BBS set size for button
 | ||||
|     btn->SetMinSize({(text.empty() ? 40 : 136) * em / 10, 36 * em / 10}); | ||||
| 
 | ||||
|     StateColor bg_color = StateColor( | ||||
|         std::pair{wxColour(107, 107, 107), (int) StateColor::Hovered}, | ||||
|         std::pair{wxColour(59, 68, 70), (int) StateColor::Normal}); | ||||
| 
 | ||||
|     btn->SetBackgroundColor(bg_color); | ||||
|     StateColor text_color = StateColor( | ||||
|         std::pair{wxColour(255, 255, 255), (int) StateColor::Hovered}, | ||||
|         std::pair{wxColour(238,238, 238), (int) StateColor::Normal}); | ||||
|     btn->SetTextColor(text_color); | ||||
|     btn->SetInactiveIcon(inactive_bmp_name); | ||||
|     btn->SetSelected(false); | ||||
|     btn->Bind(wxEVT_BUTTON, [this, btn](wxCommandEvent& event) { | ||||
|         if (auto it = std::find(m_pageButtons.begin(), m_pageButtons.end(), btn); it != m_pageButtons.end()) { | ||||
|             auto sel = it - m_pageButtons.begin(); | ||||
|             SetSelection(sel); | ||||
|              | ||||
|             wxCommandEvent evt = wxCommandEvent(wxCUSTOMEVT_NOTEBOOK_SEL_CHANGED); | ||||
|             evt.SetId(sel); | ||||
|             wxPostEvent(this->GetParent(), evt); | ||||
|         } | ||||
|     }); | ||||
|     Slic3r::GUI::wxGetApp().UpdateDarkUI(btn); | ||||
|     m_pageButtons.insert(m_pageButtons.begin() + n, btn); | ||||
|     m_buttons_sizer->Insert(n, new wxSizerItem(btn)); | ||||
|     m_buttons_sizer->SetCols(m_buttons_sizer->GetCols() + 1); | ||||
|     m_sizer->Layout(); | ||||
|     return true; | ||||
| } | ||||
| 
 | ||||
| void ButtonsListCtrl::RemovePage(size_t n) | ||||
| { | ||||
|     Button* btn = m_pageButtons[n]; | ||||
|     m_pageButtons.erase(m_pageButtons.begin() + n); | ||||
|     m_buttons_sizer->Remove(n); | ||||
|     btn->Reparent(nullptr); | ||||
|     btn->Destroy(); | ||||
|     m_sizer->Layout(); | ||||
| } | ||||
| 
 | ||||
| bool ButtonsListCtrl::SetPageImage(size_t n, const std::string& bmp_name) const | ||||
| { | ||||
|     if (n >= m_pageButtons.size()) | ||||
|         return false; | ||||
|       | ||||
|     // BBS
 | ||||
|     //return m_pageButtons[n]->SetBitmap_(bmp_name);
 | ||||
|     ScalableBitmap bitmap(NULL, bmp_name); | ||||
|     //m_pageButtons[n]->SetBitmap_(bitmap);
 | ||||
|     return true; | ||||
| } | ||||
| 
 | ||||
| void ButtonsListCtrl::SetPageText(size_t n, const wxString& strText) | ||||
| { | ||||
|     Button* btn = m_pageButtons[n]; | ||||
|     btn->SetLabel(strText); | ||||
| } | ||||
| 
 | ||||
| wxString ButtonsListCtrl::GetPageText(size_t n) const | ||||
| { | ||||
|     Button* btn = m_pageButtons[n]; | ||||
|     return btn->GetLabel(); | ||||
| } | ||||
| 
 | ||||
| //#endif // _WIN32
 | ||||
| 
 | ||||
| 
 | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 lane.wei
						lane.wei