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);
|
Bind(wxEVT_TIMER, &BonjourDialog::on_timer, this);
|
||||||
|
GUI::wxGetApp().UpdateDlgDarkUI(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
BonjourDialog::~BonjourDialog()
|
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_
|
#endif // slic3r_GUI_ExtraRenderers_hpp_
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#include "MainFrame.hpp"
|
#include "MainFrame.hpp"
|
||||||
#include "libslic3r/AppConfig.hpp"
|
#include "libslic3r/AppConfig.hpp"
|
||||||
#include "NotificationManager.hpp"
|
#include "NotificationManager.hpp"
|
||||||
|
#include "ExtraRenderers.hpp"
|
||||||
|
|
||||||
namespace fs = boost::filesystem;
|
namespace fs = boost::filesystem;
|
||||||
|
|
||||||
|
@ -214,14 +215,25 @@ PrintHostQueueDialog::PrintHostQueueDialog(wxWindow *parent)
|
||||||
}
|
}
|
||||||
|
|
||||||
job_list = new wxDataViewListCtrl(this, wxID_ANY);
|
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
|
// 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);
|
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);
|
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);
|
append_text_column(_L("Status"),widths[2]);
|
||||||
job_list->AppendTextColumn(_L("Host"), wxDATAVIEW_CELL_INERT, widths[3], wxALIGN_LEFT, wxDATAVIEW_COL_RESIZABLE | wxDATAVIEW_COL_SORTABLE);
|
append_text_column(_L("Host"), widths[3]);
|
||||||
job_list->AppendTextColumn(_CTX_utf8(L_CONTEXT("Size", "OfFile"), "OfFile"), wxDATAVIEW_CELL_INERT, widths[4], wxALIGN_LEFT, wxDATAVIEW_COL_RESIZABLE | wxDATAVIEW_COL_SORTABLE);
|
append_text_column(_CTX_utf8(L_CONTEXT("Size", "OfFile"), "OfFile"), widths[4]);
|
||||||
job_list->AppendTextColumn(_L("Filename"), wxDATAVIEW_CELL_INERT, widths[5], wxALIGN_LEFT, wxDATAVIEW_COL_RESIZABLE | wxDATAVIEW_COL_SORTABLE);
|
append_text_column(_L("Filename"), widths[5]);
|
||||||
job_list->AppendTextColumn(_L("Error Message"), wxDATAVIEW_CELL_INERT, -1, wxALIGN_CENTER, wxDATAVIEW_COL_HIDDEN);
|
append_text_column(_L("Error Message"), -1, wxALIGN_CENTER, wxDATAVIEW_COL_HIDDEN);
|
||||||
|
|
||||||
auto *btnsizer = new wxBoxSizer(wxHORIZONTAL);
|
auto *btnsizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
btn_cancel = new wxButton(this, wxID_DELETE, _L("Cancel selected"));
|
btn_cancel = new wxButton(this, wxID_DELETE, _L("Cancel selected"));
|
||||||
|
|
Loading…
Add table
Reference in a new issue