mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-31 04:31:15 -06:00 
			
		
		
		
	PrintHostQueueDialog: MSW specific in DarkMode: Fixed font color for the selected Item
This commit is contained in:
		
							parent
							
								
									a26e9c46b2
								
							
						
					
					
						commit
						4f1a092ae0
					
				
					 4 changed files with 78 additions and 7 deletions
				
			
		|  | @ -93,6 +93,7 @@ BonjourDialog::BonjourDialog(wxWindow *parent, Slic3r::PrinterTechnology tech) | |||
| 	}); | ||||
| 
 | ||||
| 	Bind(wxEVT_TIMER, &BonjourDialog::on_timer, this); | ||||
| 	GUI::wxGetApp().UpdateDlgDarkUI(this); | ||||
| } | ||||
| 
 | ||||
| BonjourDialog::~BonjourDialog() | ||||
|  |  | |||
|  | @ -335,3 +335,36 @@ bool BitmapChoiceRenderer::GetValueFromEditorCtrl(wxWindow* ctrl, wxVariant& val | |||
| } | ||||
| 
 | ||||
| 
 | ||||
| // ----------------------------------------------------------------------------
 | ||||
| // TextRenderer
 | ||||
| // ----------------------------------------------------------------------------
 | ||||
| 
 | ||||
| bool TextRenderer::SetValue(const wxVariant& value) | ||||
| { | ||||
|     m_value = value.GetString(); | ||||
|     return true; | ||||
| } | ||||
| 
 | ||||
| bool TextRenderer::GetValue(wxVariant& value) const | ||||
| { | ||||
|     return false; | ||||
| } | ||||
| 
 | ||||
| bool TextRenderer::Render(wxRect rect, wxDC* dc, int state) | ||||
| { | ||||
| #ifdef _WIN32 | ||||
|     // workaround for Windows DarkMode : Don't respect to the state & wxDATAVIEW_CELL_SELECTED to avoid update of the text color
 | ||||
|     RenderText(m_value, 0, rect, dc, state & wxDATAVIEW_CELL_SELECTED ? 0 : state); | ||||
| #else | ||||
|     RenderText(m_value, 0, rect, dc, state); | ||||
| #endif | ||||
| 
 | ||||
|     return true; | ||||
| } | ||||
| 
 | ||||
| wxSize TextRenderer::GetSize() const | ||||
| { | ||||
|     return GetTextExtent(m_value); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
|  | @ -161,4 +161,29 @@ private: | |||
| }; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| // ----------------------------------------------------------------------------
 | ||||
| // TextRenderer
 | ||||
| // ----------------------------------------------------------------------------
 | ||||
| 
 | ||||
| class TextRenderer : public wxDataViewCustomRenderer | ||||
| { | ||||
| public: | ||||
|     TextRenderer(wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT | ||||
|         , int align = wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | ||||
|     ) : wxDataViewCustomRenderer(wxT("string"), mode, align) {} | ||||
| 
 | ||||
|     bool SetValue(const wxVariant& value) override; | ||||
|     bool GetValue(wxVariant& value) const override; | ||||
| 
 | ||||
|     virtual bool Render(wxRect cell, wxDC* dc, int state) override; | ||||
|     virtual wxSize GetSize() const override; | ||||
| 
 | ||||
|     bool        HasEditorCtrl() const override { return false; } | ||||
| 
 | ||||
| private: | ||||
|     wxString    m_value; | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| #endif // slic3r_GUI_ExtraRenderers_hpp_
 | ||||
|  |  | |||
|  | @ -27,6 +27,7 @@ | |||
| #include "MainFrame.hpp" | ||||
| #include "libslic3r/AppConfig.hpp" | ||||
| #include "NotificationManager.hpp" | ||||
| #include "ExtraRenderers.hpp" | ||||
| 
 | ||||
| namespace fs = boost::filesystem; | ||||
| 
 | ||||
|  | @ -214,14 +215,25 @@ PrintHostQueueDialog::PrintHostQueueDialog(wxWindow *parent) | |||
|     } | ||||
| 
 | ||||
|     job_list = new wxDataViewListCtrl(this, wxID_ANY); | ||||
| 
 | ||||
|     // MSW DarkMode: workaround for the selected item in the list
 | ||||
|     auto append_text_column = [this](const wxString& label, int width, wxAlignment align = wxALIGN_LEFT, | ||||
|                                      int flags = wxDATAVIEW_COL_RESIZABLE | wxDATAVIEW_COL_SORTABLE) { | ||||
| #ifdef _WIN32 | ||||
|             job_list->AppendColumn(new wxDataViewColumn(label, new TextRenderer(), job_list->GetColumnCount(), width, align, flags)); | ||||
| #else | ||||
|             job_list->AppendTextColumn(label, wxDATAVIEW_CELL_INERT, width, align, flags); | ||||
| #endif | ||||
|     }; | ||||
| 
 | ||||
|     // Note: Keep these in sync with Column
 | ||||
|     job_list->AppendTextColumn(_L("ID"), wxDATAVIEW_CELL_INERT, widths[0], wxALIGN_LEFT, wxDATAVIEW_COL_RESIZABLE | wxDATAVIEW_COL_SORTABLE); | ||||
|     job_list->AppendProgressColumn(_L("Progress"), wxDATAVIEW_CELL_INERT, widths[1], wxALIGN_LEFT, wxDATAVIEW_COL_RESIZABLE | wxDATAVIEW_COL_SORTABLE); | ||||
|     job_list->AppendTextColumn(_L("Status"), wxDATAVIEW_CELL_INERT, widths[2], wxALIGN_LEFT, wxDATAVIEW_COL_RESIZABLE | wxDATAVIEW_COL_SORTABLE); | ||||
|     job_list->AppendTextColumn(_L("Host"), wxDATAVIEW_CELL_INERT, widths[3], wxALIGN_LEFT, wxDATAVIEW_COL_RESIZABLE | wxDATAVIEW_COL_SORTABLE); | ||||
|     job_list->AppendTextColumn(_CTX_utf8(L_CONTEXT("Size", "OfFile"), "OfFile"), wxDATAVIEW_CELL_INERT, widths[4], wxALIGN_LEFT, wxDATAVIEW_COL_RESIZABLE | wxDATAVIEW_COL_SORTABLE); | ||||
|     job_list->AppendTextColumn(_L("Filename"), wxDATAVIEW_CELL_INERT, widths[5], wxALIGN_LEFT, wxDATAVIEW_COL_RESIZABLE | wxDATAVIEW_COL_SORTABLE); | ||||
|     job_list->AppendTextColumn(_L("Error Message"), wxDATAVIEW_CELL_INERT, -1, wxALIGN_CENTER, wxDATAVIEW_COL_HIDDEN); | ||||
|     append_text_column(_L("ID"), widths[0]); | ||||
|     job_list->AppendProgressColumn(_L("Progress"),      wxDATAVIEW_CELL_INERT, widths[1], wxALIGN_LEFT, wxDATAVIEW_COL_RESIZABLE | wxDATAVIEW_COL_SORTABLE); | ||||
|     append_text_column(_L("Status"),widths[2]); | ||||
|     append_text_column(_L("Host"),  widths[3]); | ||||
|     append_text_column(_CTX_utf8(L_CONTEXT("Size", "OfFile"), "OfFile"), widths[4]); | ||||
|     append_text_column(_L("Filename"),      widths[5]); | ||||
|     append_text_column(_L("Error Message"), -1, wxALIGN_CENTER, wxDATAVIEW_COL_HIDDEN); | ||||
|   | ||||
|     auto *btnsizer = new wxBoxSizer(wxHORIZONTAL); | ||||
|     btn_cancel = new wxButton(this, wxID_DELETE, _L("Cancel selected")); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 YuSanka
						YuSanka