mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-17 03:37:54 -06:00
FIX: optimize media file panel
1. disable select when no file 2. disable batch edit button when no selection 3. hide batch edit when no file 4. delete/play/open_folder for downloaded file 5. hide type panel Change-Id: Ida00da366a8f59b2c5028ddcf87e197c20a21e44
This commit is contained in:
parent
c2c7a6786d
commit
76d021ceaf
8 changed files with 117 additions and 32 deletions
|
@ -73,7 +73,8 @@ MediaFilePanel::MediaFilePanel(wxWindow * parent)
|
|||
type_sizer->Add(m_button_timelapse, 0, wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT, 24);
|
||||
type_sizer->Add(m_button_video, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 24);
|
||||
m_type_panel->SetSizer(type_sizer);
|
||||
//top_sizer->Add(m_type_panel, 0, wxALIGN_CENTER_VERTICAL);
|
||||
m_type_panel->Hide();
|
||||
// top_sizer->Add(m_type_panel, 0, wxALIGN_CENTER_VERTICAL);
|
||||
|
||||
// File management
|
||||
m_manage_panel = new ::StaticBox(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE);
|
||||
|
@ -85,16 +86,15 @@ MediaFilePanel::MediaFilePanel(wxWindow * parent)
|
|||
m_button_management = new ::Button(m_manage_panel, _L("Select"));
|
||||
m_button_management->SetToolTip(L("Batch manage files."));
|
||||
for (auto b : {m_button_delete, m_button_download, m_button_management}) {
|
||||
b->SetBackgroundColor(StateColor());
|
||||
b->SetFont(Label::Body_12);
|
||||
b->SetCornerRadius(12);
|
||||
b->SetPaddingSize({10, 6});
|
||||
b->SetCanFocus(false);
|
||||
}
|
||||
m_button_delete->SetBorderColor(wxColor("#FF6F00"));
|
||||
m_button_delete->SetTextColor(wxColor("#FF6F00"));
|
||||
m_button_delete->SetBorderColorNormal(wxColor("#FF6F00"));
|
||||
m_button_delete->SetTextColorNormal(wxColor("#FF6F00"));
|
||||
m_button_management->SetBorderWidth(0);
|
||||
m_button_management->SetBackgroundColor(wxColor("#00AE42"));
|
||||
m_button_management->SetBackgroundColorNormal(wxColor("#00AE42"));
|
||||
|
||||
wxBoxSizer *manage_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
manage_sizer->AddStretchSpacer(1);
|
||||
|
@ -163,25 +163,18 @@ MediaFilePanel::MediaFilePanel(wxWindow * parent)
|
|||
b->GetEventHandler()->ProcessEvent(e);
|
||||
}
|
||||
|
||||
auto set_selecting = [this](bool selecting) {
|
||||
m_image_grid->SetSelecting(selecting);
|
||||
m_button_management->SetLabel(selecting ? _L("Cancel") : _L("Select"));
|
||||
m_manage_panel->GetSizer()->Show(m_button_download, selecting);
|
||||
m_manage_panel->GetSizer()->Show(m_button_delete, selecting);
|
||||
m_manage_panel->Layout();
|
||||
};
|
||||
// File management
|
||||
m_button_management->Bind(wxEVT_COMMAND_BUTTON_CLICKED, [this, set_selecting](auto &e) {
|
||||
m_button_management->Bind(wxEVT_COMMAND_BUTTON_CLICKED, [this](auto &e) {
|
||||
e.Skip();
|
||||
set_selecting(!m_image_grid->IsSelecting());
|
||||
SetSelecting(!m_image_grid->IsSelecting());
|
||||
});
|
||||
m_button_download->Bind(wxEVT_COMMAND_BUTTON_CLICKED, [this, set_selecting](auto &e) {
|
||||
m_button_download->Bind(wxEVT_COMMAND_BUTTON_CLICKED, [this](auto &e) {
|
||||
m_image_grid->DoActionOnSelection(1);
|
||||
set_selecting(false);
|
||||
SetSelecting(false);
|
||||
});
|
||||
m_button_delete->Bind(wxEVT_COMMAND_BUTTON_CLICKED, [this, set_selecting](auto &e) {
|
||||
m_button_delete->Bind(wxEVT_COMMAND_BUTTON_CLICKED, [this](auto &e) {
|
||||
m_image_grid->DoActionOnSelection(0);
|
||||
set_selecting(false);
|
||||
SetSelecting(false);
|
||||
});
|
||||
|
||||
auto onShowHide = [this](auto &e) {
|
||||
|
@ -222,6 +215,8 @@ void MediaFilePanel::SetMachineObject(MachineObject* obj)
|
|||
fs->Unbind(EVT_MODE_CHANGED, &MediaFilePanel::modeChanged, this);
|
||||
fs->Stop(true);
|
||||
}
|
||||
m_button_management->Enable(false);
|
||||
SetSelecting(false);
|
||||
if (m_machine.empty()) {
|
||||
m_image_grid->SetStatus(m_bmp_failed.bmp(), _L("No printers."));
|
||||
} else if (m_lan_ip.empty() && (m_lan_mode && !m_tutk_support)) {
|
||||
|
@ -231,8 +226,26 @@ void MediaFilePanel::SetMachineObject(MachineObject* obj)
|
|||
fs->Attached();
|
||||
m_image_grid->SetFileType(m_last_type);
|
||||
m_image_grid->SetFileSystem(fs);
|
||||
fs->Bind(EVT_FILE_CHANGED, [this, wfs = boost::weak_ptr(fs)](auto &e) {
|
||||
e.Skip();
|
||||
boost::shared_ptr fs(wfs.lock());
|
||||
if (m_image_grid->GetFileSystem() != fs) // canceled
|
||||
return;
|
||||
m_button_management->Enable(fs->GetCount() > 0);
|
||||
if (fs->GetCount() == 0)
|
||||
SetSelecting(false);
|
||||
});
|
||||
fs->Bind(EVT_SELECT_CHANGED, [this, wfs = boost::weak_ptr(fs)](auto &e) {
|
||||
e.Skip();
|
||||
boost::shared_ptr fs(wfs.lock());
|
||||
if (m_image_grid->GetFileSystem() != fs) // canceled
|
||||
return;
|
||||
m_button_delete->Enable(e.GetInt() > 0);
|
||||
m_button_download->Enable(e.GetInt() > 0);
|
||||
});
|
||||
fs->Bind(EVT_MODE_CHANGED, &MediaFilePanel::modeChanged, this);
|
||||
fs->Bind(EVT_STATUS_CHANGED, [this, wfs = boost::weak_ptr(fs)](auto &e) {
|
||||
e.Skip();
|
||||
boost::shared_ptr fs(wfs.lock());
|
||||
if (m_image_grid->GetFileSystem() != fs) // canceled
|
||||
return;
|
||||
|
@ -279,6 +292,15 @@ void MediaFilePanel::Rescale()
|
|||
m_image_grid->Rescale();
|
||||
}
|
||||
|
||||
void MediaFilePanel::SetSelecting(bool selecting)
|
||||
{
|
||||
m_image_grid->SetSelecting(selecting);
|
||||
m_button_management->SetLabel(selecting ? _L("Cancel") : _L("Select"));
|
||||
m_manage_panel->GetSizer()->Show(m_button_download, selecting);
|
||||
m_manage_panel->GetSizer()->Show(m_button_delete, selecting);
|
||||
m_manage_panel->Layout();
|
||||
}
|
||||
|
||||
void MediaFilePanel::modeChanged(wxCommandEvent& e1)
|
||||
{
|
||||
e1.Skip();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue