ENH: refine ui for multi machine

JIRA: STUDIO-6819 STUDIO-6824
1. Shrink the Send Print dialog box
2. add input box for flipping panel

Change-Id: I4174c79ecd239c374ee11478951e12be399c57ce
This commit is contained in:
Kunlong Ma 2024-04-18 14:57:23 +08:00 committed by Lane.Wei
parent 2ff0581cdd
commit a8e7c63113
7 changed files with 224 additions and 96 deletions

View File

@ -330,7 +330,7 @@ void AppConfig::set_defaults()
} }
if (get("sending_interval").empty()) { if (get("sending_interval").empty()) {
set("sending_interval", "60"); set("sending_interval", "1");
} }
if (get("max_send").empty()) { if (get("max_send").empty()) {

View File

@ -10,7 +10,7 @@ namespace GUI {
#define DEVICE_ITEM_MAX_WIDTH 900 #define DEVICE_ITEM_MAX_WIDTH 900
#define SEND_ITEM_MAX_HEIGHT 40 #define SEND_ITEM_MAX_HEIGHT 30
#define DEVICE_ITEM_MAX_HEIGHT 50 #define DEVICE_ITEM_MAX_HEIGHT 50
#define TABLE_HEAR_NORMAL_COLOUR wxColour(238, 238, 238) #define TABLE_HEAR_NORMAL_COLOUR wxColour(238, 238, 238)

View File

@ -375,6 +375,11 @@ MultiMachineManagerPage::MultiMachineManagerPage(wxWindow* parent)
m_machine_list->Layout(); m_machine_list->Layout();
// add flipping page // add flipping page
StateColor ctrl_bg(
std::pair<wxColour, int>(CTRL_BUTTON_PRESSEN_COLOUR, StateColor::Pressed),
std::pair<wxColour, int>(CTRL_BUTTON_NORMAL_COLOUR, StateColor::Normal)
);
m_flipping_panel = new wxPanel(m_main_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize); m_flipping_panel = new wxPanel(m_main_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize);
m_flipping_panel->SetMinSize(wxSize(FromDIP(DEVICE_ITEM_MAX_WIDTH), -1)); m_flipping_panel->SetMinSize(wxSize(FromDIP(DEVICE_ITEM_MAX_WIDTH), -1));
m_flipping_panel->SetMaxSize(wxSize(FromDIP(DEVICE_ITEM_MAX_WIDTH), -1)); m_flipping_panel->SetMaxSize(wxSize(FromDIP(DEVICE_ITEM_MAX_WIDTH), -1));
@ -382,11 +387,14 @@ MultiMachineManagerPage::MultiMachineManagerPage(wxWindow* parent)
m_flipping_page_sizer = new wxBoxSizer(wxHORIZONTAL); m_flipping_page_sizer = new wxBoxSizer(wxHORIZONTAL);
m_page_sizer = new wxBoxSizer(wxVERTICAL); m_page_sizer = new wxBoxSizer(wxVERTICAL);
btn_last_page = new Button(m_flipping_panel, "", "go_last_plate", 0, ICON_SIZE); btn_last_page = new Button(m_flipping_panel, "", "go_last_plate", 0, FromDIP(20));
btn_last_page->SetMinSize(wxSize(ICON_SIZE, ICON_SIZE)); btn_last_page->SetMinSize(wxSize(FromDIP(20), FromDIP(20)));
btn_last_page->SetMaxSize(wxSize(ICON_SIZE, ICON_SIZE)); btn_last_page->SetMaxSize(wxSize(FromDIP(20), FromDIP(20)));
btn_last_page->SetBackgroundColor(head_bg); btn_last_page->SetBackgroundColor(head_bg);
btn_last_page->Bind(wxEVT_LEFT_DOWN, [&](wxMouseEvent& evt) { btn_last_page->Bind(wxEVT_LEFT_DOWN, [&](wxMouseEvent& evt) {
evt.Skip();
if (m_current_page == 0)
return;
btn_last_page->Enable(false); btn_last_page->Enable(false);
btn_next_page->Enable(false); btn_next_page->Enable(false);
start_timer(); start_timer();
@ -395,26 +403,51 @@ MultiMachineManagerPage::MultiMachineManagerPage(wxWindow* parent)
m_current_page = 0; m_current_page = 0;
refresh_user_device(); refresh_user_device();
update_page_number(); update_page_number();
}); });
btn_next_page = new Button(m_flipping_panel, "", "go_next_plate", 0, ICON_SIZE); st_page_number = new wxStaticText(m_flipping_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize);
btn_next_page->SetMinSize(wxSize(ICON_SIZE, ICON_SIZE)); btn_next_page = new Button(m_flipping_panel, "", "go_next_plate", 0, FromDIP(20));
btn_next_page->SetMaxSize(wxSize(ICON_SIZE, ICON_SIZE)); btn_next_page->SetMinSize(wxSize(FromDIP(20), FromDIP(20)));
btn_next_page->SetMaxSize(wxSize(FromDIP(20), FromDIP(20)));
btn_next_page->SetBackgroundColor(head_bg); btn_next_page->SetBackgroundColor(head_bg);
btn_next_page->Bind(wxEVT_LEFT_DOWN, [&](wxMouseEvent& evt) { btn_next_page->Bind(wxEVT_LEFT_DOWN, [&](wxMouseEvent& evt) {
evt.Skip();
if (m_current_page == m_total_page - 1)
return;
btn_last_page->Enable(false); btn_last_page->Enable(false);
btn_next_page->Enable(false); btn_next_page->Enable(false);
start_timer(); start_timer();
m_current_page++; m_current_page++;
if (m_current_page > m_total_count) if (m_current_page > m_total_page - 1)
m_current_page = m_total_count; m_current_page = m_total_page - 1;
refresh_user_device(); refresh_user_device();
update_page_number(); update_page_number();
}); });
st_page_number = new wxStaticText(m_flipping_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize);
m_page_num_input = new ::TextInput(m_flipping_panel, wxEmptyString, wxEmptyString, wxEmptyString, wxDefaultPosition, wxSize(FromDIP(50), -1), wxTE_PROCESS_ENTER);
StateColor input_bg(std::pair<wxColour, int>(wxColour("#F0F0F1"), StateColor::Disabled), std::pair<wxColour, int>(*wxWHITE, StateColor::Enabled));
m_page_num_input->SetBackgroundColor(input_bg);
m_page_num_input->GetTextCtrl()->SetValue("1");
wxTextValidator validator(wxFILTER_DIGITS);
m_page_num_input->GetTextCtrl()->SetValidator(validator);
m_page_num_input->GetTextCtrl()->Bind(wxEVT_TEXT_ENTER, [&](wxCommandEvent& e) {
page_num_enter_evt();
});
m_page_num_enter = new Button(m_flipping_panel, _("Go"));
m_page_num_enter->SetMinSize(wxSize(FromDIP(25), FromDIP(25)));
m_page_num_enter->SetMaxSize(wxSize(FromDIP(25), FromDIP(25)));
m_page_num_enter->SetBackgroundColor(ctrl_bg);
m_page_num_enter->SetCornerRadius(FromDIP(5));
m_page_num_enter->Bind(wxEVT_LEFT_DOWN, [&](wxMouseEvent& evt) {
page_num_enter_evt();
});
m_flipping_page_sizer->Add(0, 0, 1, wxEXPAND, 0); m_flipping_page_sizer->Add(0, 0, 1, wxEXPAND, 0);
m_flipping_page_sizer->Add(btn_last_page, 0, wxALIGN_CENTER, 0); m_flipping_page_sizer->Add(btn_last_page, 0, wxALIGN_CENTER, 0);
m_flipping_page_sizer->Add(st_page_number, 0, wxALIGN_CENTER, 0); m_flipping_page_sizer->Add(st_page_number, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(5));
m_flipping_page_sizer->Add(btn_next_page, 0, wxALIGN_CENTER, 0); m_flipping_page_sizer->Add(btn_next_page, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(5));
m_flipping_page_sizer->Add(m_page_num_input, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(20));
m_flipping_page_sizer->Add(m_page_num_enter, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(5));
m_page_sizer->Add(m_flipping_page_sizer, 0, wxALIGN_CENTER_HORIZONTAL, FromDIP(5)); m_page_sizer->Add(m_flipping_page_sizer, 0, wxALIGN_CENTER_HORIZONTAL, FromDIP(5));
m_flipping_panel->SetSizer(m_page_sizer); m_flipping_panel->SetSizer(m_page_sizer);
m_flipping_panel->Layout(); m_flipping_panel->Layout();
@ -582,9 +615,6 @@ void MultiMachineManagerPage::update_page_number()
wxString number = wxString(std::to_string(m_current_page + 1)) + " / " + wxString(std::to_string(m_total_page)); wxString number = wxString(std::to_string(m_current_page + 1)) + " / " + wxString(std::to_string(m_total_page));
st_page_number->SetLabel(number); st_page_number->SetLabel(number);
m_current_page <= 0 ? btn_last_page->Enable(false) : btn_last_page->Enable(true);
m_current_page >= (m_total_page - 1) ? btn_next_page->Enable(false) : btn_next_page->Enable(true);
} }
void MultiMachineManagerPage::on_timer(wxTimerEvent& event) void MultiMachineManagerPage::on_timer(wxTimerEvent& event)
@ -601,5 +631,24 @@ void MultiMachineManagerPage::clear_page()
} }
void MultiMachineManagerPage::page_num_enter_evt()
{
btn_last_page->Enable(false);
btn_next_page->Enable(false);
start_timer();
auto value = m_page_num_input->GetTextCtrl()->GetValue();
long page_num = 0;
if (value.ToLong(&page_num)) {
if (page_num > m_total_page)
m_current_page = m_total_page - 1;
else if (page_num < 1)
m_current_page = 0;
else
m_current_page = page_num - 1;
}
refresh_user_device();
update_page_number();
}
} // namespace GUI } // namespace GUI
} // namespace Slic3r } // namespace Slic3r

View File

@ -58,6 +58,8 @@ public:
void on_timer(wxTimerEvent& event); void on_timer(wxTimerEvent& event);
void clear_page(); void clear_page();
void page_num_enter_evt();
private: private:
std::vector<ObjState> m_state_objs; std::vector<ObjState> m_state_objs;
std::vector<MultiMachineItem*> m_device_items; std::vector<MultiMachineItem*> m_device_items;
@ -99,6 +101,8 @@ private:
wxBoxSizer* m_page_sizer{ nullptr }; wxBoxSizer* m_page_sizer{ nullptr };
wxPanel* m_flipping_panel{ nullptr }; wxPanel* m_flipping_panel{ nullptr };
wxTimer* m_flipping_timer{ nullptr }; wxTimer* m_flipping_timer{ nullptr };
TextInput* m_page_num_input{ nullptr };
Button* m_page_num_enter{ nullptr };
}; };
} // namespace GUI } // namespace GUI

View File

@ -862,6 +862,11 @@ CloudTaskManagerPage::CloudTaskManagerPage(wxWindow* parent)
std::pair<wxColour, int>(TABLE_HEAR_NORMAL_COLOUR, StateColor::Normal) std::pair<wxColour, int>(TABLE_HEAR_NORMAL_COLOUR, StateColor::Normal)
); );
StateColor ctrl_bg(
std::pair<wxColour, int>(CTRL_BUTTON_PRESSEN_COLOUR, StateColor::Pressed),
std::pair<wxColour, int>(CTRL_BUTTON_NORMAL_COLOUR, StateColor::Normal)
);
m_table_head_panel = new wxPanel(m_main_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize); m_table_head_panel = new wxPanel(m_main_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize);
m_table_head_panel->SetMinSize(wxSize(FromDIP(CLOUD_TASK_ITEM_MAX_WIDTH), -1)); m_table_head_panel->SetMinSize(wxSize(FromDIP(CLOUD_TASK_ITEM_MAX_WIDTH), -1));
m_table_head_panel->SetMaxSize(wxSize(FromDIP(CLOUD_TASK_ITEM_MAX_WIDTH), -1)); m_table_head_panel->SetMaxSize(wxSize(FromDIP(CLOUD_TASK_ITEM_MAX_WIDTH), -1));
@ -991,6 +996,15 @@ CloudTaskManagerPage::CloudTaskManagerPage(wxWindow* parent)
m_tip_text->SetFont(::Label::Head_24); m_tip_text->SetFont(::Label::Head_24);
m_tip_text->Wrap(-1); m_tip_text->Wrap(-1);
m_loading_text = new wxStaticText(m_main_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxALIGN_CENTER);
m_loading_text->SetMinSize(wxSize(FromDIP(CLOUD_TASK_ITEM_MAX_WIDTH), -1));
m_loading_text->SetMaxSize(wxSize(FromDIP(CLOUD_TASK_ITEM_MAX_WIDTH), -1));
m_loading_text->SetLabel(_L("Loading..."));
m_loading_text->SetForegroundColour(wxColour(50, 58, 61));
m_loading_text->SetFont(::Label::Head_24);
m_loading_text->Wrap(-1);
m_loading_text->Show(false);
m_task_list = new wxScrolledWindow(m_main_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize); m_task_list = new wxScrolledWindow(m_main_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize);
m_task_list->SetBackgroundColour(*wxWHITE); m_task_list->SetBackgroundColour(*wxWHITE);
m_task_list->SetScrollRate(0, 5); m_task_list->SetScrollRate(0, 5);
@ -1005,6 +1019,7 @@ CloudTaskManagerPage::CloudTaskManagerPage(wxWindow* parent)
m_main_sizer->AddSpacer(FromDIP(50)); m_main_sizer->AddSpacer(FromDIP(50));
m_main_sizer->Add(m_table_head_panel, 0, wxALIGN_CENTER_HORIZONTAL, 0); m_main_sizer->Add(m_table_head_panel, 0, wxALIGN_CENTER_HORIZONTAL, 0);
m_main_sizer->Add(m_tip_text, 0, wxALIGN_CENTER_HORIZONTAL | wxTOP, FromDIP(50)); m_main_sizer->Add(m_tip_text, 0, wxALIGN_CENTER_HORIZONTAL | wxTOP, FromDIP(50));
m_main_sizer->Add(m_loading_text, 0, wxALIGN_CENTER_HORIZONTAL | wxTOP, FromDIP(50));
m_main_sizer->Add(m_task_list, 0, wxALIGN_CENTER_HORIZONTAL, 0); m_main_sizer->Add(m_task_list, 0, wxALIGN_CENTER_HORIZONTAL, 0);
m_main_sizer->AddSpacer(FromDIP(5)); m_main_sizer->AddSpacer(FromDIP(5));
@ -1016,50 +1031,77 @@ CloudTaskManagerPage::CloudTaskManagerPage(wxWindow* parent)
m_flipping_page_sizer = new wxBoxSizer(wxHORIZONTAL); m_flipping_page_sizer = new wxBoxSizer(wxHORIZONTAL);
m_page_sizer = new wxBoxSizer(wxVERTICAL); m_page_sizer = new wxBoxSizer(wxVERTICAL);
btn_last_page = new Button(m_flipping_panel, "", "go_last_plate", 0, ICON_SIZE); btn_last_page = new Button(m_flipping_panel, "", "go_last_plate", wxBORDER_NONE, FromDIP(20));
btn_last_page->SetMinSize(wxSize(ICON_SIZE, ICON_SIZE)); btn_last_page->SetMinSize(wxSize(FromDIP(20), FromDIP(20)));
btn_last_page->SetMaxSize(wxSize(ICON_SIZE, ICON_SIZE)); btn_last_page->SetMaxSize(wxSize(FromDIP(20), FromDIP(20)));
btn_last_page->SetBackgroundColor(head_bg); btn_last_page->SetBackgroundColor(head_bg);
btn_last_page->Bind(wxEVT_LEFT_DOWN, [&](wxMouseEvent& evt) { btn_last_page->Bind(wxEVT_COMMAND_BUTTON_CLICKED, [&](auto& evt) {
btn_last_page->Enable(false); evt.Skip();
btn_next_page->Enable(false); if (m_current_page == 0)
return;
enable_buttons(false);
start_timer(); start_timer();
m_current_page--; m_current_page--;
if (m_current_page < 0) if (m_current_page < 0)
m_current_page = 0; m_current_page = 0;
refresh_user_device(); refresh_user_device();
update_page_number(); update_page_number();
}); /*m_sizer_task_list->Clear(false);
btn_next_page = new Button(m_flipping_panel, "", "go_next_plate", 0, ICON_SIZE); m_loading_text->Show(true);
btn_next_page->SetMinSize(wxSize(ICON_SIZE, ICON_SIZE)); Layout();*/
btn_next_page->SetMaxSize(wxSize(ICON_SIZE, ICON_SIZE));
btn_next_page->SetBackgroundColor(head_bg);
btn_next_page->Bind(wxEVT_LEFT_DOWN, [&](wxMouseEvent& evt) {
btn_last_page->Enable(false);
btn_next_page->Enable(false);
start_timer();
m_current_page++;
if (m_current_page > m_total_count)
m_current_page = m_total_count;
refresh_user_device();
update_page_number();
}); });
st_page_number = new wxStaticText(m_flipping_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize); st_page_number = new wxStaticText(m_flipping_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize);
btn_next_page = new Button(m_flipping_panel, "", "go_next_plate", wxBORDER_NONE, FromDIP(20));
btn_next_page->SetMinSize(wxSize(FromDIP(20), FromDIP(20)));
btn_next_page->SetMaxSize(wxSize(FromDIP(20), FromDIP(20)));
btn_next_page->SetBackgroundColor(head_bg);
btn_next_page->Bind(wxEVT_COMMAND_BUTTON_CLICKED, [&](auto& evt) {
evt.Skip();
if (m_current_page == m_total_page - 1)
return;
enable_buttons(false);
start_timer();
m_current_page++;
if (m_current_page > m_total_page - 1)
m_current_page = m_total_count - 1;
refresh_user_device();
update_page_number();
/*m_sizer_task_list->Clear(false);
m_loading_text->Show(true);
Layout();*/
});
m_page_num_input = new ::TextInput(m_flipping_panel, wxEmptyString, wxEmptyString, wxEmptyString, wxDefaultPosition, wxSize(FromDIP(50), -1), wxTE_PROCESS_ENTER);
StateColor input_bg(std::pair<wxColour, int>(wxColour("#F0F0F1"), StateColor::Disabled), std::pair<wxColour, int>(*wxWHITE, StateColor::Enabled));
m_page_num_input->SetBackgroundColor(input_bg);
m_page_num_input->GetTextCtrl()->SetValue("1");
wxTextValidator validator(wxFILTER_DIGITS);
m_page_num_input->GetTextCtrl()->SetValidator(validator);
m_page_num_input->GetTextCtrl()->Bind(wxEVT_TEXT_ENTER, [&](wxCommandEvent& e) {
page_num_enter_evt();
});
m_page_num_enter = new Button(m_flipping_panel, _("Go"));
m_page_num_enter->SetMinSize(wxSize(FromDIP(25), FromDIP(25)));
m_page_num_enter->SetMaxSize(wxSize(FromDIP(25), FromDIP(25)));
m_page_num_enter->SetBackgroundColor(ctrl_bg);
m_page_num_enter->SetCornerRadius(FromDIP(5));
m_page_num_enter->Bind(wxEVT_LEFT_DOWN, [&](wxMouseEvent& evt) {
page_num_enter_evt();
});
m_flipping_page_sizer->Add(0, 0, 1, wxEXPAND, 0); m_flipping_page_sizer->Add(0, 0, 1, wxEXPAND, 0);
m_flipping_page_sizer->Add(btn_last_page, 0, wxALIGN_CENTER, 0); m_flipping_page_sizer->Add(btn_last_page, 0, wxALIGN_CENTER, 0);
m_flipping_page_sizer->Add(st_page_number, 0, wxALIGN_CENTER, 0); m_flipping_page_sizer->Add(st_page_number, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(5));
m_flipping_page_sizer->Add(btn_next_page, 0, wxALIGN_CENTER, 0); m_flipping_page_sizer->Add(btn_next_page, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(5));
m_flipping_page_sizer->Add(m_page_num_input, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(20));
m_flipping_page_sizer->Add(m_page_num_enter, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(5));
m_flipping_page_sizer->Add(0, 0, 1, wxEXPAND, 0); m_flipping_page_sizer->Add(0, 0, 1, wxEXPAND, 0);
m_page_sizer->Add(m_flipping_page_sizer, 0, wxALIGN_CENTER_HORIZONTAL, FromDIP(5)); m_page_sizer->Add(m_flipping_page_sizer, 0, wxALIGN_CENTER_HORIZONTAL, FromDIP(5));
m_flipping_panel->SetSizer(m_page_sizer); m_flipping_panel->SetSizer(m_page_sizer);
m_flipping_panel->Layout(); m_flipping_panel->Layout();
m_main_sizer->Add(m_flipping_panel, 0, wxALIGN_CENTER_HORIZONTAL, 0); m_main_sizer->Add(m_flipping_panel, 0, wxALIGN_CENTER_HORIZONTAL, 0);
StateColor ctrl_bg(
std::pair<wxColour, int>(CTRL_BUTTON_PRESSEN_COLOUR, StateColor::Pressed),
std::pair<wxColour, int>(CTRL_BUTTON_NORMAL_COLOUR, StateColor::Normal)
);
m_ctrl_btn_panel = new wxPanel(m_main_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); m_ctrl_btn_panel = new wxPanel(m_main_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
m_ctrl_btn_panel->SetBackgroundColour(*wxWHITE); m_ctrl_btn_panel->SetBackgroundColour(*wxWHITE);
m_ctrl_btn_panel->SetMinSize(wxSize(FromDIP(CLOUD_TASK_ITEM_MAX_WIDTH), -1)); m_ctrl_btn_panel->SetMinSize(wxSize(FromDIP(CLOUD_TASK_ITEM_MAX_WIDTH), -1));
@ -1164,13 +1206,13 @@ void CloudTaskManagerPage::refresh_user_device(bool clear)
mtitem->state_cloud_task = 2; mtitem->state_cloud_task = 2;
} }
if (m_task_items.find(mtitem->m_job_id) != m_task_items.end()) { if (m_task_items.find(it->first) != m_task_items.end()) {
MultiTaskItem* item = m_task_items[mtitem->m_job_id]; MultiTaskItem* item = m_task_items[it->first];
mtitem->state_selected = item->state_selected; mtitem->state_selected = item->state_selected;
item->Destroy(); item->Destroy();
} }
m_task_items[mtitem->m_job_id] = mtitem; m_task_items[it->first] = mtitem;
mtitem->update_info(); mtitem->update_info();
task_temps.push_back(mtitem); task_temps.push_back(mtitem);
subscribe_list.push_back(mtitem->m_dev_id); subscribe_list.push_back(mtitem->m_dev_id);
@ -1282,9 +1324,6 @@ void CloudTaskManagerPage::update_page_number()
wxString number = wxString(std::to_string(m_current_page + 1)) + " / " + wxString(std::to_string(m_total_page)); wxString number = wxString(std::to_string(m_current_page + 1)) + " / " + wxString(std::to_string(m_total_page));
st_page_number->SetLabel(number); st_page_number->SetLabel(number);
m_current_page <= 0 ? btn_last_page->Enable(false) : btn_last_page->Enable(true);
m_current_page >= (m_total_page - 1) ? btn_next_page->Enable(false) : btn_next_page->Enable(true);
} }
void CloudTaskManagerPage::start_timer() void CloudTaskManagerPage::start_timer()
@ -1304,10 +1343,8 @@ void CloudTaskManagerPage::start_timer()
void CloudTaskManagerPage::on_timer(wxTimerEvent& event) void CloudTaskManagerPage::on_timer(wxTimerEvent& event)
{ {
m_flipping_timer->Stop(); m_flipping_timer->Stop();
if (btn_last_page) enable_buttons(true);
btn_last_page->Enable(true); update_page_number();
if (btn_next_page)
btn_next_page->Enable(true);
} }
void CloudTaskManagerPage::pause_all(wxCommandEvent& evt) void CloudTaskManagerPage::pause_all(wxCommandEvent& evt)
@ -1337,5 +1374,35 @@ void CloudTaskManagerPage::stop_all(wxCommandEvent& evt)
} }
} }
void CloudTaskManagerPage::enable_buttons(bool enable)
{
btn_last_page->Enable(enable);
btn_next_page->Enable(enable);
btn_pause_all->Enable(enable);
btn_continue_all->Enable(enable);
btn_stop_all->Enable(enable);
}
void CloudTaskManagerPage::page_num_enter_evt()
{
enable_buttons(false);
start_timer();
auto value = m_page_num_input->GetTextCtrl()->GetValue();
long page_num = 0;
if (value.ToLong(&page_num)) {
if (page_num > m_total_page)
m_current_page = m_total_page - 1;
else if (page_num < 1)
m_current_page = 0;
else
m_current_page = page_num - 1;
}
refresh_user_device();
update_page_number();
/*m_sizer_task_list->Clear(false);
m_loading_text->Show(true);
Layout();*/
}
} // namespace GUI } // namespace GUI
} // namespace Slic3r } // namespace Slic3r

View File

@ -140,6 +140,9 @@ public:
void resume_all(wxCommandEvent& evt); void resume_all(wxCommandEvent& evt);
void stop_all(wxCommandEvent& evt); void stop_all(wxCommandEvent& evt);
void enable_buttons(bool enable);
void page_num_enter_evt();
private: private:
SortItem m_sort; SortItem m_sort;
bool device_name_big{ true }; bool device_name_big{ true };
@ -163,36 +166,39 @@ private:
int m_count_page_item{ 10 }; int m_count_page_item{ 10 };
bool prev{ false }; bool prev{ false };
bool next{ false }; bool next{ false };
Button* btn_last_page{ nullptr }; Button* btn_last_page{ nullptr };
Button* btn_next_page{ nullptr }; Button* btn_next_page{ nullptr };
wxStaticText* st_page_number{ nullptr }; wxStaticText* st_page_number{ nullptr };
wxBoxSizer* m_flipping_page_sizer{ nullptr }; wxBoxSizer* m_flipping_page_sizer{ nullptr };
wxBoxSizer* m_page_sizer{ nullptr }; wxBoxSizer* m_page_sizer{ nullptr };
wxPanel* m_flipping_panel{ nullptr }; wxPanel* m_flipping_panel{ nullptr };
wxTimer* m_flipping_timer{ nullptr }; wxTimer* m_flipping_timer{ nullptr };
TextInput* m_page_num_input{ nullptr };
Button* m_page_num_enter{ nullptr };
// table head // table head
wxPanel* m_table_head_panel{ nullptr }; wxPanel* m_table_head_panel{ nullptr };
wxBoxSizer* m_table_head_sizer{ nullptr }; wxBoxSizer* m_table_head_sizer{ nullptr };
CheckBox* m_select_checkbox{ nullptr }; CheckBox* m_select_checkbox{ nullptr };
Button* m_task_name{ nullptr }; Button* m_task_name{ nullptr };
Button* m_printer_name{ nullptr }; Button* m_printer_name{ nullptr };
Button* m_status{ nullptr }; Button* m_status{ nullptr };
Button* m_info{ nullptr }; Button* m_info{ nullptr };
Button* m_send_time{ nullptr }; Button* m_send_time{ nullptr };
Button* m_action{ nullptr }; Button* m_action{ nullptr };
// ctrl button for all // ctrl button for all
int m_sel_number; int m_sel_number;
wxPanel* m_ctrl_btn_panel{ nullptr }; wxPanel* m_ctrl_btn_panel{ nullptr };
wxBoxSizer* m_btn_sizer{ nullptr }; wxBoxSizer* m_btn_sizer{ nullptr };
Button* btn_pause_all{ nullptr }; Button* btn_pause_all{ nullptr };
Button* btn_continue_all{ nullptr }; Button* btn_continue_all{ nullptr };
Button* btn_stop_all{ nullptr }; Button* btn_stop_all{ nullptr };
wxStaticText* m_sel_text{ nullptr }; wxStaticText* m_sel_text{ nullptr };
// tip when no device // tip when no device
wxStaticText* m_tip_text{ nullptr }; wxStaticText* m_tip_text{ nullptr };
wxStaticText* m_loading_text{ nullptr };
}; };

View File

@ -272,6 +272,7 @@ SendMultiMachinePage::SendMultiMachinePage(Plater* plater)
auto line_top = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL); auto line_top = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL);
line_top->SetBackgroundColour(wxColour(166, 169, 170)); line_top->SetBackgroundColour(wxColour(166, 169, 170));
main_sizer->Add(line_top, 0, wxEXPAND, 0); main_sizer->Add(line_top, 0, wxEXPAND, 0);
main_sizer->AddSpacer(FromDIP(10));
m_main_scroll = new ScrolledWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxVSCROLL); m_main_scroll = new ScrolledWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxVSCROLL);
m_main_scroll->SetBackgroundColour(*wxWHITE); m_main_scroll->SetBackgroundColour(*wxWHITE);
@ -285,7 +286,7 @@ SendMultiMachinePage::SendMultiMachinePage(Plater* plater)
m_main_scroll->Fit(); m_main_scroll->Fit();
m_main_scroll->Centre(wxBOTH); m_main_scroll->Centre(wxBOTH);
main_sizer->Add(m_main_scroll, 1, wxEXPAND, FromDIP(5)); main_sizer->Add(m_main_scroll, 1, wxEXPAND);
SetSizer(main_sizer); SetSizer(main_sizer);
Layout(); Layout();
@ -644,7 +645,7 @@ void SendMultiMachinePage::on_send(wxCommandEvent& event)
try try
{ {
if (app_config->get("sending_interval").empty()) { if (app_config->get("sending_interval").empty()) {
app_config->set("sending_interval", "60"); app_config->set("sending_interval", "1");
app_config->save(); app_config->save();
} }
@ -757,7 +758,7 @@ wxBoxSizer* SendMultiMachinePage::create_item_input(wxString str_before, wxStrin
wxTextValidator validator(wxFILTER_DIGITS); wxTextValidator validator(wxFILTER_DIGITS);
input->GetTextCtrl()->SetValidator(validator); input->GetTextCtrl()->SetValidator(validator);
auto second_title = new wxStaticText(parent, wxID_ANY, str_after, wxDefaultPosition, wxDefaultSize, 0); auto second_title = new wxStaticText(parent, wxID_ANY, str_after, wxDefaultPosition, wxDefaultSize, wxST_ELLIPSIZE_END);
second_title->SetForegroundColour(DESIGN_GRAY900_COLOR); second_title->SetForegroundColour(DESIGN_GRAY900_COLOR);
second_title->SetFont(::Label::Body_13); second_title->SetFont(::Label::Body_13);
second_title->SetToolTip(tooltip); second_title->SetToolTip(tooltip);
@ -1079,8 +1080,8 @@ wxPanel* SendMultiMachinePage::create_page()
m_printer_name->SetBackgroundColor(head_bg); m_printer_name->SetBackgroundColor(head_bg);
m_printer_name->SetCornerRadius(0); m_printer_name->SetCornerRadius(0);
m_printer_name->SetFont(TABLE_HEAD_FONT); m_printer_name->SetFont(TABLE_HEAD_FONT);
m_printer_name->SetMinSize(wxSize(FromDIP(SEND_LEFT_DEV_NAME), FromDIP(DEVICE_ITEM_MAX_HEIGHT))); m_printer_name->SetMinSize(wxSize(FromDIP(SEND_LEFT_DEV_NAME), FromDIP(SEND_ITEM_MAX_HEIGHT)));
m_printer_name->SetMaxSize(wxSize(FromDIP(SEND_LEFT_DEV_NAME), FromDIP(DEVICE_ITEM_MAX_HEIGHT))); m_printer_name->SetMaxSize(wxSize(FromDIP(SEND_LEFT_DEV_NAME), FromDIP(SEND_ITEM_MAX_HEIGHT)));
m_printer_name->SetCenter(false); m_printer_name->SetCenter(false);
m_printer_name->Bind(wxEVT_ENTER_WINDOW, [&](wxMouseEvent& evt) { m_printer_name->Bind(wxEVT_ENTER_WINDOW, [&](wxMouseEvent& evt) {
SetCursor(wxCURSOR_HAND); SetCursor(wxCURSOR_HAND);
@ -1101,8 +1102,8 @@ wxPanel* SendMultiMachinePage::create_page()
m_device_status->SetBackgroundColor(head_bg); m_device_status->SetBackgroundColor(head_bg);
m_device_status->SetFont(TABLE_HEAD_FONT); m_device_status->SetFont(TABLE_HEAD_FONT);
m_device_status->SetCornerRadius(0); m_device_status->SetCornerRadius(0);
m_device_status->SetMinSize(wxSize(FromDIP(SEND_LEFT_DEV_STATUS), FromDIP(DEVICE_ITEM_MAX_HEIGHT))); m_device_status->SetMinSize(wxSize(FromDIP(SEND_LEFT_DEV_STATUS), FromDIP(SEND_ITEM_MAX_HEIGHT)));
m_device_status->SetMaxSize(wxSize(FromDIP(SEND_LEFT_DEV_STATUS), FromDIP(DEVICE_ITEM_MAX_HEIGHT))); m_device_status->SetMaxSize(wxSize(FromDIP(SEND_LEFT_DEV_STATUS), FromDIP(SEND_ITEM_MAX_HEIGHT)));
m_device_status->SetCenter(false); m_device_status->SetCenter(false);
m_device_status->Bind(wxEVT_ENTER_WINDOW, [&](wxMouseEvent& evt) { m_device_status->Bind(wxEVT_ENTER_WINDOW, [&](wxMouseEvent& evt) {
SetCursor(wxCURSOR_HAND); SetCursor(wxCURSOR_HAND);
@ -1144,8 +1145,8 @@ wxPanel* SendMultiMachinePage::create_page()
m_ams->SetBackgroundColor(head_bg); m_ams->SetBackgroundColor(head_bg);
m_ams->SetCornerRadius(0); m_ams->SetCornerRadius(0);
m_ams->SetFont(TABLE_HEAD_FONT); m_ams->SetFont(TABLE_HEAD_FONT);
m_ams->SetMinSize(wxSize(FromDIP(TASK_LEFT_SEND_TIME), FromDIP(DEVICE_ITEM_MAX_HEIGHT))); m_ams->SetMinSize(wxSize(FromDIP(TASK_LEFT_SEND_TIME), FromDIP(SEND_ITEM_MAX_HEIGHT)));
m_ams->SetMaxSize(wxSize(FromDIP(TASK_LEFT_SEND_TIME), FromDIP(DEVICE_ITEM_MAX_HEIGHT))); m_ams->SetMaxSize(wxSize(FromDIP(TASK_LEFT_SEND_TIME), FromDIP(SEND_ITEM_MAX_HEIGHT)));
m_ams->SetCenter(false); m_ams->SetCenter(false);
m_ams->Bind(wxEVT_ENTER_WINDOW, [&](wxMouseEvent& evt) { m_ams->Bind(wxEVT_ENTER_WINDOW, [&](wxMouseEvent& evt) {
SetCursor(wxCURSOR_HAND); SetCursor(wxCURSOR_HAND);
@ -1165,8 +1166,8 @@ wxPanel* SendMultiMachinePage::create_page()
m_refresh_button->SetBackgroundColor(head_bg); m_refresh_button->SetBackgroundColor(head_bg);
m_refresh_button->SetCornerRadius(0); m_refresh_button->SetCornerRadius(0);
m_refresh_button->SetFont(TABLE_HEAD_FONT); m_refresh_button->SetFont(TABLE_HEAD_FONT);
m_refresh_button->SetMinSize(wxSize(FromDIP(50), FromDIP(DEVICE_ITEM_MAX_HEIGHT))); m_refresh_button->SetMinSize(wxSize(FromDIP(50), FromDIP(SEND_ITEM_MAX_HEIGHT)));
m_refresh_button->SetMaxSize(wxSize(FromDIP(50), FromDIP(DEVICE_ITEM_MAX_HEIGHT))); m_refresh_button->SetMaxSize(wxSize(FromDIP(50), FromDIP(SEND_ITEM_MAX_HEIGHT)));
m_refresh_button->Bind(wxEVT_ENTER_WINDOW, [&](wxMouseEvent& evt) { m_refresh_button->Bind(wxEVT_ENTER_WINDOW, [&](wxMouseEvent& evt) {
SetCursor(wxCURSOR_HAND); SetCursor(wxCURSOR_HAND);
}); });
@ -1190,11 +1191,11 @@ wxPanel* SendMultiMachinePage::create_page()
m_tip_text->SetFont(::Label::Head_24); m_tip_text->SetFont(::Label::Head_24);
m_tip_text->Wrap(-1); m_tip_text->Wrap(-1);
scroll_macine_list = new wxScrolledWindow(main_page, wxID_ANY, wxDefaultPosition, wxSize(FromDIP(800), 300), wxHSCROLL | wxVSCROLL); scroll_macine_list = new wxScrolledWindow(main_page, wxID_ANY, wxDefaultPosition, wxSize(FromDIP(800), FromDIP(300)), wxHSCROLL | wxVSCROLL);
scroll_macine_list->SetBackgroundColour(*wxWHITE); scroll_macine_list->SetBackgroundColour(*wxWHITE);
scroll_macine_list->SetScrollRate(5, 5); scroll_macine_list->SetScrollRate(5, 5);
scroll_macine_list->SetMinSize(wxSize(FromDIP(DEVICE_ITEM_MAX_WIDTH), 10 * FromDIP(DEVICE_ITEM_MAX_HEIGHT))); scroll_macine_list->SetMinSize(wxSize(FromDIP(DEVICE_ITEM_MAX_WIDTH), 10 * FromDIP(SEND_ITEM_MAX_HEIGHT)));
scroll_macine_list->SetMaxSize(wxSize(FromDIP(DEVICE_ITEM_MAX_WIDTH), 10 * FromDIP(DEVICE_ITEM_MAX_HEIGHT))); scroll_macine_list->SetMaxSize(wxSize(FromDIP(DEVICE_ITEM_MAX_WIDTH), 10 * FromDIP(SEND_ITEM_MAX_HEIGHT)));
sizer_machine_list = new wxBoxSizer(wxVERTICAL); sizer_machine_list = new wxBoxSizer(wxVERTICAL);
scroll_macine_list->SetSizer(sizer_machine_list); scroll_macine_list->SetSizer(sizer_machine_list);
@ -1212,8 +1213,10 @@ wxPanel* SendMultiMachinePage::create_page()
wxBoxSizer* item_timelapse = create_item_checkbox(_("Timelapse"), main_page, "", 50, "timelapse"); wxBoxSizer* item_timelapse = create_item_checkbox(_("Timelapse"), main_page, "", 50, "timelapse");
wxBoxSizer* item_flow_dy_ca = create_item_checkbox(_("Flow Dynamic Calibration"), main_page, "", 50, "flow_cali"); wxBoxSizer* item_flow_dy_ca = create_item_checkbox(_("Flow Dynamic Calibration"), main_page, "", 50, "flow_cali");
sizer->Add(title_print_option, 0, wxEXPAND, 0); sizer->Add(title_print_option, 0, wxEXPAND, 0);
sizer->Add(item_bed_level, 0, wxLEFT, FromDIP(20)); wxBoxSizer* options_sizer_v = new wxBoxSizer(wxHORIZONTAL);
sizer->Add(item_timelapse, 0, wxLEFT, FromDIP(20)); options_sizer_v->Add(item_bed_level, 0, wxLEFT, 0);
options_sizer_v->Add(item_timelapse, 0, wxLEFT, FromDIP(100));
sizer->Add(options_sizer_v, 0, wxLEFT, FromDIP(20));
sizer->Add(item_flow_dy_ca, 0, wxLEFT, FromDIP(20)); sizer->Add(item_flow_dy_ca, 0, wxLEFT, FromDIP(20));
sizer->AddSpacer(FromDIP(10)); sizer->AddSpacer(FromDIP(10));
@ -1244,11 +1247,10 @@ wxPanel* SendMultiMachinePage::create_page()
//m_button_send->SetBackgroundColor(wxColour(0x90, 0x90, 0x90)); //m_button_send->SetBackgroundColor(wxColour(0x90, 0x90, 0x90));
//m_button_send->SetBorderColor(wxColour(0x90, 0x90, 0x90)); //m_button_send->SetBorderColor(wxColour(0x90, 0x90, 0x90));
sizer->Add(m_button_send, 0, wxALIGN_CENTER, 0); sizer->Add(m_button_send, 0, wxALIGN_CENTER, 0);
sizer->Add(0, 0, 0, wxTOP, FromDIP(15));
main_page->SetSizer(sizer); main_page->SetSizer(sizer);
main_page->Layout(); main_page->Layout();
main_page->Fit();
return main_page; return main_page;
} }