FIX:fixed can't popup pinbind win on macos
jira:[STUDIO-6895] Change-Id: I664bba78cf27420d736b586df19e3c09c6f8ed21
This commit is contained in:
parent
c1376b76cb
commit
15b3fb3a54
|
@ -91,14 +91,14 @@ PingCodeBindDialog::PingCodeBindDialog(Plater* plater /*= nullptr*/)
|
|||
request_bind_panel->SetBackgroundColour(*wxWHITE);
|
||||
binding_panel->SetBackgroundColour(*wxWHITE);
|
||||
|
||||
m_status_text = new Label(request_bind_panel, _L("Please Find the ping code in Account page on printer screen,\n and type in the ping code below."));
|
||||
m_status_text = new Label(request_bind_panel, _L("Please Find the Pin Code in Account page on printer screen,\n and type in the Pin Code below."));
|
||||
m_status_text->SetBackgroundColour(*wxWHITE);
|
||||
m_status_text->SetFont(Label::Body_14);
|
||||
m_status_text->SetMaxSize(wxSize(FromDIP(440), -1));
|
||||
m_status_text->Wrap(FromDIP(440));
|
||||
m_status_text->SetForegroundColour(wxColour(38, 46, 48));
|
||||
|
||||
m_link_show_ping_code_wiki = new wxStaticText(request_bind_panel, wxID_ANY, _L("Can't find pin code?"));
|
||||
m_link_show_ping_code_wiki = new wxStaticText(request_bind_panel, wxID_ANY, _L("Can't find Pin Code?"));
|
||||
m_link_show_ping_code_wiki->SetFont(Label::Body_14);
|
||||
m_link_show_ping_code_wiki->SetBackgroundColour(*wxWHITE);
|
||||
m_link_show_ping_code_wiki->SetForegroundColour(wxColour(31, 142, 234));
|
||||
|
@ -203,14 +203,6 @@ PingCodeBindDialog::PingCodeBindDialog(Plater* plater /*= nullptr*/)
|
|||
m_button_close->SetCornerRadius(FromDIP(12));
|
||||
m_sizer_binding_button->Add(m_button_close, 0, wxALIGN_CENTER, 0);
|
||||
|
||||
m_button_close->Bind(wxEVT_BUTTON, [this](auto& e) {
|
||||
wxGetApp().remove_ping_bind_dialog();
|
||||
});
|
||||
|
||||
this->Bind(wxEVT_CLOSE_WINDOW, [this](auto& e) {
|
||||
wxGetApp().remove_ping_bind_dialog();
|
||||
});
|
||||
|
||||
auto sizer_binding = new wxBoxSizer(wxVERTICAL);
|
||||
sizer_binding->Add(0, 0, 0, wxTOP, FromDIP(80));
|
||||
sizer_binding->Add(m_loading_txt, 0, wxALIGN_CENTER, 0);
|
||||
|
@ -292,7 +284,7 @@ void PingCodeBindDialog::on_bind_printer(wxCommandEvent& event)
|
|||
auto result = agent->ping_bind(ping_code.ToStdString());
|
||||
|
||||
if(result < 0){
|
||||
MessageDialog msg_wingow(nullptr, _L("Log in failed. Please check the pin code."), "", wxAPPLY | wxOK);
|
||||
MessageDialog msg_wingow(nullptr, _L("Log in failed. Please check the Pin Code."), "", wxAPPLY | wxOK);
|
||||
msg_wingow.ShowModal();
|
||||
return;
|
||||
}
|
||||
|
@ -302,7 +294,7 @@ void PingCodeBindDialog::on_bind_printer(wxCommandEvent& event)
|
|||
|
||||
void PingCodeBindDialog::on_cancel(wxCommandEvent& event)
|
||||
{
|
||||
wxGetApp().remove_ping_bind_dialog();
|
||||
EndModal(wxCLOSE);
|
||||
}
|
||||
|
||||
void PingCodeBindDialog::on_dpi_changed(const wxRect& suggested_rect)
|
||||
|
@ -312,6 +304,7 @@ void PingCodeBindDialog::on_dpi_changed(const wxRect& suggested_rect)
|
|||
Refresh();
|
||||
}
|
||||
|
||||
|
||||
PingCodeBindDialog::~PingCodeBindDialog() {
|
||||
m_button_bind->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(PingCodeBindDialog::on_bind_printer), NULL, this);
|
||||
m_button_cancel->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(PingCodeBindDialog::on_cancel), NULL, this);
|
||||
|
|
|
@ -6346,6 +6346,7 @@ void GUI_App::popup_ping_bind_dialog()
|
|||
if (m_ping_code_binding_dialog == nullptr) {
|
||||
m_ping_code_binding_dialog = new PingCodeBindDialog();
|
||||
m_ping_code_binding_dialog->ShowModal();
|
||||
remove_ping_bind_dialog();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ namespace GUI {
|
|||
#define DEVICE_LEFT_PADDING_LEFT 15
|
||||
#define DEVICE_LEFT_DEV_NAME 180
|
||||
#define DEVICE_LEFT_PRO_NAME 180
|
||||
#define DEVICE_LEFT_PRO_INFO 250
|
||||
#define DEVICE_LEFT_PRO_INFO 280
|
||||
|
||||
class MultiMachineItem : public DeviceItem
|
||||
{
|
||||
|
|
|
@ -395,38 +395,11 @@ SelectMachinePopup::SelectMachinePopup(wxWindow *parent)
|
|||
m_sizer_other_devices = new wxBoxSizer(wxVERTICAL);
|
||||
|
||||
|
||||
wxWindow* m_panel_ping_code = new wxWindow(m_scrolledWindow, wxID_ANY, wxDefaultPosition, SELECT_MACHINE_ITEM_SIZE, wxTAB_TRAVERSAL);
|
||||
m_panel_ping_code->SetBackgroundColour(*wxWHITE);
|
||||
|
||||
wxBoxSizer* sizer_ping_code = new wxBoxSizer(wxHORIZONTAL);
|
||||
|
||||
m_img_ping_code = new wxStaticBitmap(m_panel_ping_code, wxID_ANY, create_scaled_bitmap("bind_device_ping_code", this, 10), wxDefaultPosition, wxSize(FromDIP(10), FromDIP(10)), 0);
|
||||
m_img_ping_code->SetBackgroundColour(*wxWHITE);
|
||||
|
||||
m_ping_code_text = new Label(m_panel_ping_code, _L("Bind with Pin Code"));
|
||||
m_ping_code_text->SetFont(::Label::Head_13);
|
||||
m_ping_code_text->SetForegroundColour(wxColour(38, 46, 48));
|
||||
m_ping_code_text->SetBackgroundColour(*wxWHITE);
|
||||
|
||||
m_panel_ping_code->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {
|
||||
wxGetApp().popup_ping_bind_dialog();
|
||||
});
|
||||
|
||||
m_ping_code_text->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {
|
||||
wxGetApp().popup_ping_bind_dialog();
|
||||
});
|
||||
|
||||
|
||||
sizer_ping_code->Add(m_img_ping_code, 0, wxEXPAND, 0);
|
||||
sizer_ping_code->Add(0, 0, 0, wxLEFT, FromDIP(7));
|
||||
sizer_ping_code->Add(m_ping_code_text, 0, wxALIGN_CENTER, 0);
|
||||
|
||||
m_panel_ping_code->SetSizer(sizer_ping_code);
|
||||
m_panel_ping_code->Layout();
|
||||
m_panel_ping_code = new PinCodePanel(m_scrolledWindow, wxID_ANY, wxDefaultPosition, SELECT_MACHINE_ITEM_SIZE);
|
||||
|
||||
m_sizxer_scrolledWindow->Add(own_title, 0, wxEXPAND | wxLEFT, FromDIP(15));
|
||||
m_sizxer_scrolledWindow->Add(m_sizer_my_devices, 0, wxEXPAND, 0);
|
||||
m_sizxer_scrolledWindow->Add(m_panel_ping_code, 0, wxEXPAND | wxLEFT, FromDIP(8));
|
||||
m_sizxer_scrolledWindow->Add(m_panel_ping_code, 0, wxEXPAND, 0);
|
||||
m_sizxer_scrolledWindow->Add(other_title, 0, wxEXPAND | wxLEFT, FromDIP(15));
|
||||
m_sizxer_scrolledWindow->Add(m_sizer_other_devices, 0, wxEXPAND, 0);
|
||||
|
||||
|
@ -898,6 +871,17 @@ void SelectMachinePopup::OnLeftUp(wxMouseEvent &event)
|
|||
}
|
||||
}
|
||||
|
||||
//pin code
|
||||
auto pc_rect = m_panel_ping_code->ClientToScreen(wxPoint(0, 0));
|
||||
if (mouse_pos.x > pc_rect.x && mouse_pos.y > pc_rect.y && mouse_pos.x < (pc_rect.x + m_panel_ping_code->GetSize().x) && mouse_pos.y < (pc_rect.y + m_panel_ping_code->GetSize().y)) {
|
||||
/*wxMouseEvent event(wxEVT_LEFT_UP);
|
||||
auto tag_pos = m_panel_ping_code->ScreenToClient(mouse_pos);
|
||||
event.SetPosition(tag_pos);
|
||||
event.SetEventObject(m_panel_ping_code);
|
||||
wxPostEvent(m_panel_ping_code, event);*/
|
||||
wxGetApp().popup_ping_bind_dialog();
|
||||
}
|
||||
|
||||
//hyper link
|
||||
auto h_rect = m_hyperlink->ClientToScreen(wxPoint(0, 0));
|
||||
if (mouse_pos.x > h_rect.x && mouse_pos.y > h_rect.y && mouse_pos.x < (h_rect.x + m_hyperlink->GetSize().x) && mouse_pos.y < (h_rect.y + m_hyperlink->GetSize().y)) {
|
||||
|
@ -4617,4 +4601,80 @@ void EditDevNameDialog::on_edit_name(wxCommandEvent &e)
|
|||
|
||||
ThumbnailPanel::~ThumbnailPanel() {}
|
||||
|
||||
PinCodePanel::PinCodePanel(wxWindow* parent, wxWindowID winid /*= wxID_ANY*/, const wxPoint& pos /*= wxDefaultPosition*/, const wxSize& size /*= wxDefaultSize*/)
|
||||
{
|
||||
wxPanel::Create(parent, winid, pos, SELECT_MACHINE_ITEM_SIZE);
|
||||
Bind(wxEVT_PAINT, &PinCodePanel::OnPaint, this);
|
||||
SetSize(SELECT_MACHINE_ITEM_SIZE);
|
||||
SetMaxSize(SELECT_MACHINE_ITEM_SIZE);
|
||||
SetMinSize(SELECT_MACHINE_ITEM_SIZE);
|
||||
|
||||
m_bitmap = ScalableBitmap(this, "bind_device_ping_code",10);
|
||||
|
||||
this->Bind(wxEVT_ENTER_WINDOW, &PinCodePanel::on_mouse_enter, this);
|
||||
this->Bind(wxEVT_LEAVE_WINDOW, &PinCodePanel::on_mouse_leave, this);
|
||||
this->Bind(wxEVT_LEFT_UP, &PinCodePanel::on_mouse_left_up, this);
|
||||
}
|
||||
|
||||
void PinCodePanel::OnPaint(wxPaintEvent& event)
|
||||
{
|
||||
wxPaintDC dc(this);
|
||||
render(dc);
|
||||
}
|
||||
|
||||
void PinCodePanel::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 PinCodePanel::doRender(wxDC& dc)
|
||||
{
|
||||
auto size = GetSize();
|
||||
dc.DrawBitmap(m_bitmap.bmp(), wxPoint(FromDIP(20), (size.y - m_bitmap.GetBmpSize().y) / 2));
|
||||
dc.SetFont(::Label::Head_13);
|
||||
dc.SetTextForeground(wxColour(38, 46, 48));
|
||||
wxString txt = _L("Bind with Pin Code");
|
||||
auto txt_size = dc.GetTextExtent(txt);
|
||||
dc.DrawText(txt, wxPoint(FromDIP(40), (size.y - txt_size.y) / 2));
|
||||
|
||||
if (m_hover) {
|
||||
dc.SetPen(SELECT_MACHINE_BRAND);
|
||||
dc.SetBrush(*wxTRANSPARENT_BRUSH);
|
||||
dc.DrawRectangle(0, 0, size.x, size.y);
|
||||
}
|
||||
}
|
||||
|
||||
void PinCodePanel::on_mouse_enter(wxMouseEvent& evt)
|
||||
{
|
||||
m_hover = true;
|
||||
Refresh();
|
||||
}
|
||||
|
||||
void PinCodePanel::on_mouse_leave(wxMouseEvent& evt)
|
||||
{
|
||||
m_hover = false;
|
||||
Refresh();
|
||||
}
|
||||
|
||||
void PinCodePanel::on_mouse_left_up(wxMouseEvent& evt)
|
||||
{
|
||||
wxGetApp().popup_ping_bind_dialog();
|
||||
}
|
||||
|
||||
}} // namespace Slic3r::GUI
|
||||
|
|
|
@ -208,6 +208,27 @@ public:
|
|||
MachineObjectPanel *mPanel;
|
||||
};
|
||||
|
||||
class PinCodePanel : public wxPanel
|
||||
{
|
||||
public:
|
||||
PinCodePanel(wxWindow* parent,
|
||||
wxWindowID winid = wxID_ANY,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize);
|
||||
~PinCodePanel() {};
|
||||
|
||||
ScalableBitmap m_bitmap;
|
||||
bool m_hover{false};
|
||||
|
||||
void OnPaint(wxPaintEvent& event);
|
||||
void render(wxDC& dc);
|
||||
void doRender(wxDC& dc);
|
||||
|
||||
void on_mouse_enter(wxMouseEvent& evt);
|
||||
void on_mouse_leave(wxMouseEvent& evt);
|
||||
void on_mouse_left_up(wxMouseEvent& evt);
|
||||
};
|
||||
|
||||
|
||||
class ThumbnailPanel;
|
||||
|
||||
|
@ -230,6 +251,7 @@ public:
|
|||
private:
|
||||
int m_my_devices_count{0};
|
||||
int m_other_devices_count{0};
|
||||
PinCodePanel* m_panel_ping_code{nullptr};
|
||||
wxWindow* m_placeholder_panel{nullptr};
|
||||
wxHyperlinkCtrl* m_hyperlink{nullptr};
|
||||
Label* m_ping_code_text{nullptr};
|
||||
|
|
|
@ -56,9 +56,9 @@ int UserManager::parse_json(std::string payload)
|
|||
if (!dev) {return -1;}
|
||||
|
||||
if (GUI::wxGetApp().m_ping_code_binding_dialog && GUI::wxGetApp().m_ping_code_binding_dialog->IsShown()) {
|
||||
GUI::wxGetApp().m_ping_code_binding_dialog->EndModal(wxCLOSE);
|
||||
GUI::MessageDialog msgdialog(nullptr, _L("Log in successful."), "", wxAPPLY | wxOK);
|
||||
msgdialog.ShowModal();
|
||||
GUI::wxGetApp().remove_ping_bind_dialog();
|
||||
}
|
||||
dev->update_user_machine_list_info();
|
||||
dev->set_selected_machine(dev_id);
|
||||
|
|
Loading…
Reference in New Issue