FIX: the DPI issue

jira: [STUDIO-9238]
Change-Id: I8ab364402358b8b21e6768ecdd0da9cfe6541777
This commit is contained in:
xin.zhang 2025-03-07 09:05:41 +08:00 committed by lane.wei
parent d327fa9178
commit 6dda5f3e52
5 changed files with 71 additions and 10 deletions

View File

@ -5033,6 +5033,15 @@ void SendModeSwitchButton::on_left_down(wxMouseEvent &evt)
setSelected(!is_selected);
}
void SendModeSwitchButton::msw_rescale()
{
m_img_selected.msw_rescale();
m_img_unselected.msw_rescale();
m_img_selected_tag.msw_rescale();
m_img_unselected_tag.msw_rescale();
Refresh();
}
void SendModeSwitchButton::setSelected(bool selected)
{
if (is_selected != selected)

View File

@ -257,12 +257,19 @@ class SendModeSwitchButton : public wxPanel
public:
SendModeSwitchButton(wxWindow *parent, wxString mode, bool sel);
~SendModeSwitchButton(){};
void OnPaint(wxPaintEvent &event);
void render(wxDC &dc);
void on_left_down(wxMouseEvent &evt);
void doRender(wxDC &dc);
public:
void msw_rescale();
void setSelected(bool selected);
bool isSelected(){return is_selected;};
private:
void OnPaint(wxPaintEvent& event);
void render(wxDC& dc);
void on_left_down(wxMouseEvent& evt);
void doRender(wxDC& dc);
private:
bool is_selected {false};
ScalableBitmap m_img_selected;
ScalableBitmap m_img_unselected;

View File

@ -3105,7 +3105,7 @@ void StatusPanel::update_misc_ctrl(MachineObject *obj)
if (m_fan_panel->IsShown()) {
m_fan_panel->Hide();
}
if (m_fan_control_popup && m_fan_control_popup->Show())
if (m_fan_control_popup && m_fan_control_popup->IsShown())
m_fan_control_popup->Hide();
}
@ -5179,6 +5179,10 @@ void StatusPanel::msw_rescale()
m_switch_fan->SetImages(m_bitmap_fan_on, m_bitmap_fan_off);
m_switch_fan->Rescale();
if (m_fan_control_popup)
{
m_fan_control_popup->msw_rescale();
}
//m_switch_fan->SetImages(m_bitmap_fan_on, m_bitmap_fan_off);
//m_switch_fan->Rescale();

View File

@ -329,6 +329,9 @@ void FanOperate::doRender(wxDC& dc)
}
void FanOperate::msw_rescale() {
m_bitmap_add.msw_rescale();
m_bitmap_decrease.msw_rescale();
Refresh();
}
static void nop_deleter_fan_control(FanControlNew* ){}
@ -343,7 +346,7 @@ FanControlNew::FanControlNew(wxWindow *parent, const AirDuctData &fan_data, int
{
SetMaxSize(wxSize(FromDIP(180), FromDIP(80)));
SetMinSize(wxSize(FromDIP(180), FromDIP(80)));
auto m_bitmap_fan = new ScalableBitmap(this, "fan_icon", 20);
m_bitmap_fan = new ScalableBitmap(this, "fan_icon", 20);
m_bitmap_toggle_off = new ScalableBitmap(this, "toggle_off", 16);
m_bitmap_toggle_on = new ScalableBitmap(this, "toggle_on", 16);
@ -357,7 +360,7 @@ FanControlNew::FanControlNew(wxWindow *parent, const AirDuctData &fan_data, int
wxBoxSizer* sizer_control_top = new wxBoxSizer(wxHORIZONTAL);
m_sizer_control_bottom = new wxBoxSizer(wxVERTICAL);
auto m_static_bitmap_fan = new wxStaticBitmap(this, wxID_ANY, m_bitmap_fan->bmp(), wxDefaultPosition, wxDefaultSize);
m_static_bitmap_fan = new wxStaticBitmap(this, wxID_ANY, m_bitmap_fan->bmp(), wxDefaultPosition, wxDefaultSize);
m_static_name = new wxStaticText(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxST_ELLIPSIZE_END | wxALIGN_CENTER_HORIZONTAL);
m_static_name->SetBackgroundColour(wxColour(248, 248, 248));
@ -432,6 +435,28 @@ void FanControlNew::on_left_down(wxMouseEvent& evt)
m_fan_operate->on_left_down(evt);
}
void FanControlNew::msw_rescale()
{
m_bitmap_fan->msw_rescale();
m_static_bitmap_fan->SetBitmap(m_bitmap_fan->bmp());
m_bitmap_toggle_off->msw_rescale();
m_bitmap_toggle_on->msw_rescale();
if (m_switch_fan)
{
m_switch_button->SetBitmap(m_bitmap_toggle_on->bmp());
}
else
{
m_switch_button->SetBitmap(m_bitmap_toggle_off->bmp());
}
m_fan_operate->msw_rescale();
Layout();
Refresh();
}
void FanControlNew::command_control_fan()
{
if (m_current_speed < 0 || m_current_speed > 10) { return; }
@ -892,6 +917,19 @@ void FanControlPopupNew::command_control_air_duct(int mode_id)
}
}
void FanControlPopupNew::msw_rescale()
{
for (auto btn : m_mode_switch_btn_list)
{
btn->msw_rescale();
}
for (auto fan : m_fan_control_list)
{
fan.second->msw_rescale();
}
}
void FanControlPopupNew::paintEvent(wxPaintEvent& evt)
{
wxPaintDC dc(this);

View File

@ -133,6 +133,7 @@ protected:
wxStaticText* m_static_name{ nullptr };
int m_fan_id;
ScalableBitmap* m_bitmap_fan{ nullptr };
ScalableBitmap* m_bitmap_toggle_off{ nullptr };
ScalableBitmap* m_bitmap_toggle_on{ nullptr };
@ -154,6 +155,7 @@ protected:
std::shared_ptr<FanControlNew> token;
public:
wxStaticBitmap* m_static_bitmap_fan { nullptr};
wxStaticBitmap* m_switch_button{ nullptr };
void update_obj_state(bool stat) { m_update_already = stat; };
void update_fan_data(const AirDuctData& data) { m_fan_data = data; };
@ -171,6 +173,8 @@ public:
void update_mode();
void on_left_down(wxMouseEvent& event);
void on_mode_change(wxMouseEvent& event);
void msw_rescale();
};
@ -208,9 +212,6 @@ private:
std::map<int, bool> m_duct_ctrl;
std::map<int, FanControlNew*> m_duct_fans_list;
std::map<int, FanControlNew*> m_duct_doors_list;
Button* m_button_refresh;
wxStaticText* m_cooling_text;
MachineObject *m_obj{nullptr};
@ -248,6 +249,8 @@ public:
void post_event(int fan_type, wxString speed);
void on_show(wxShowEvent& evt);
void command_control_air_duct(int mode_id);
void msw_rescale();
};
wxDECLARE_EVENT(EVT_FAN_SWITCH_ON, wxCommandEvent);
wxDECLARE_EVENT(EVT_FAN_SWITCH_OFF, wxCommandEvent);