diff --git a/resources/images/media_empty.svg b/resources/images/media_empty.svg index 9968c9647c..aa040502a3 100644 --- a/resources/images/media_empty.svg +++ b/resources/images/media_empty.svg @@ -1,11 +1,18 @@ - - - - - - - - - - + + + + + + + + + + + + + + + + + diff --git a/resources/images/media_failed.svg b/resources/images/media_failed.svg index 712e95fd40..83dd7a7923 100644 --- a/resources/images/media_failed.svg +++ b/resources/images/media_failed.svg @@ -1,11 +1,11 @@ - - - - + + + + - - - + + + diff --git a/resources/images/media_loading.png b/resources/images/media_loading.png index 4c51464a44..9b02fe9720 100644 Binary files a/resources/images/media_loading.png and b/resources/images/media_loading.png differ diff --git a/src/slic3r/GUI/ImageGrid.cpp b/src/slic3r/GUI/ImageGrid.cpp index 617a7438b1..d604a1faad 100644 --- a/src/slic3r/GUI/ImageGrid.cpp +++ b/src/slic3r/GUI/ImageGrid.cpp @@ -187,6 +187,9 @@ void ImageGrid::UpdateLayout() { if (!m_file_sys) return; wxSize size = GetClientSize(); + wxSize mask_size{0, 60 * em_unit(this) / 10}; + if (m_file_sys->GetGroupMode() == PrinterFileSystem::G_NONE) + mask_size.y = 20 * em_unit(this) / 10; int cell_width = m_cell_size.GetWidth(); int cell_height = m_cell_size.GetHeight(); int ncol = (size.GetWidth() - cell_width + m_image_size.GetWidth()) / cell_width; @@ -199,7 +202,6 @@ void ImageGrid::UpdateLayout() if (m_row_offset >= m_row_count) m_row_offset = m_row_count == 0 ? 0 : m_row_count - 1; // create mask - wxSize mask_size{0, 60 * em_unit(this) / 10}; if (m_file_sys->GetGroupMode() == PrinterFileSystem::G_NONE) { mask_size.x = (m_col_count - 1) * m_cell_size.GetWidth() + m_image_size.GetWidth(); } @@ -370,6 +372,8 @@ size_t Slic3r::GUI::ImageGrid::firstItem(wxSize const &size, wxPoint &off) int index = (m_row_offset + 1 < m_row_count || m_row_count == 0) ? m_row_offset / 4 * m_col_count : ((m_file_sys->GetCount() + m_col_count - 1) / m_col_count - (size.y + m_image_size.GetHeight() - 1) / m_cell_size.GetHeight()) * m_col_count; + if (m_file_sys->GetGroupMode() == PrinterFileSystem::G_NONE) + offy += m_mask.GetHeight(); off = wxPoint{offx, offy}; return index; } @@ -523,12 +527,15 @@ void ImageGrid::render(wxDC& dc) } // Draw floating date range for non-group list if (m_file_sys->GetGroupMode() == PrinterFileSystem::G_NONE && m_file_sys->GetCount() > 0) { - dc.DrawBitmap(m_mask, {off.x, 0}); + //dc.DrawBitmap(m_mask, {off.x, 0}); + dc.DrawRectangle({off.x, 0}, m_mask.GetSize()); auto & file1 = m_file_sys->GetFile(start); auto & file2 = m_file_sys->GetFile(end - 1); auto date1 = wxDateTime((time_t) file1.time).Format(_L(formats[m_file_sys->GetGroupMode()])); auto date2 = wxDateTime((time_t) file2.time).Format(_L(formats[m_file_sys->GetGroupMode()])); - dc.DrawText(date1 + " - " + date2, wxPoint{off.x + 24, 16}); + dc.SetFont(Label::Head_16); + dc.SetTextForeground(wxColor("#262E30")); + dc.DrawText(date1 + " - " + date2, wxPoint{off.x, 2}); } // Draw bottom background if (off.y < size.y) diff --git a/src/slic3r/GUI/MediaFilePanel.cpp b/src/slic3r/GUI/MediaFilePanel.cpp index c8c34b00fa..e6aef65351 100644 --- a/src/slic3r/GUI/MediaFilePanel.cpp +++ b/src/slic3r/GUI/MediaFilePanel.cpp @@ -31,6 +31,9 @@ MediaFilePanel::MediaFilePanel(wxWindow * parent) m_button_year = new ::Button(m_time_panel, _L("Year"), "", wxBORDER_NONE); m_button_month = new ::Button(m_time_panel, _L("Month"), "", wxBORDER_NONE); m_button_all = new ::Button(m_time_panel, _L("All Files"), "", wxBORDER_NONE); + m_button_year->SetToolTip(L("Group files by year, recent first.")); + m_button_month->SetToolTip(L("Group files by month, recent first.")); + m_button_all->SetToolTip(L("Show all files, recent first.")); m_button_all->SetFont(Label::Head_14); // sync with m_last_mode for (auto b : {m_button_year, m_button_month, m_button_all}) { b->SetBackgroundColor(StateColor()); @@ -49,14 +52,22 @@ MediaFilePanel::MediaFilePanel(wxWindow * parent) top_sizer->Add(m_time_panel, 1, wxEXPAND); // File type + StateColor background( + std::make_pair(0xEEEEEE, (int) StateColor::Checked), + std::make_pair(*wxLIGHT_GREY, (int) StateColor::Hovered), + std::make_pair(*wxWHITE, (int) StateColor::Normal)); m_type_panel = new ::StaticBox(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE); m_type_panel->SetBackgroundColor(*wxWHITE); m_type_panel->SetCornerRadius(FromDIP(5)); m_type_panel->SetMinSize({-1, 48 * em_unit(this) / 10}); m_button_timelapse = new ::Button(m_type_panel, _L("Timelapse"), "", wxBORDER_NONE); - m_button_timelapse->SetCanFocus(false); + m_button_timelapse->SetToolTip(L("Switch to timelapse files.")); m_button_video = new ::Button(m_type_panel, _L("Video"), "", wxBORDER_NONE); - m_button_video->SetCanFocus(false); + m_button_video->SetToolTip(L("Switch to video files.")); + for (auto b : {m_button_timelapse, m_button_video} ) { + b->SetBackgroundColor(background); + b->SetCanFocus(false); + } wxBoxSizer *type_sizer = new wxBoxSizer(wxHORIZONTAL); type_sizer->Add(m_button_timelapse, 0, wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT, 24); @@ -68,13 +79,22 @@ MediaFilePanel::MediaFilePanel(wxWindow * parent) m_manage_panel = new ::StaticBox(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE); m_manage_panel->SetBackgroundColor(StateColor()); m_button_delete = new ::Button(m_manage_panel, _L("Delete")); - m_button_delete->SetBackgroundColor(StateColor()); - m_button_delete->SetCanFocus(false); + m_button_delete->SetToolTip(L("Delete selected files from printer.")); m_button_download = new ::Button(m_manage_panel, _L("Download")); - m_button_download->SetBackgroundColor(StateColor()); - m_button_download->SetCanFocus(false); + m_button_download->SetToolTip(L("Download selected files from printer.")); m_button_management = new ::Button(m_manage_panel, _L("Management")); - m_button_management->SetBackgroundColor(StateColor()); + 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_management->SetBorderWidth(0); + m_button_management->SetBackgroundColor(wxColor("#00AE42")); wxBoxSizer *manage_sizer = new wxBoxSizer(wxHORIZONTAL); manage_sizer->AddStretchSpacer(1); diff --git a/src/slic3r/GUI/Printer/PrinterFileSystem.cpp b/src/slic3r/GUI/Printer/PrinterFileSystem.cpp index 2b17a44c87..ecc24f03fe 100644 --- a/src/slic3r/GUI/Printer/PrinterFileSystem.cpp +++ b/src/slic3r/GUI/Printer/PrinterFileSystem.cpp @@ -490,6 +490,8 @@ size_t PrinterFileSystem::FindFile(size_t index, std::string const &name) void PrinterFileSystem::FileRemoved(size_t index, std::string const &name) { index = FindFile(index, name); + if (index == size_t(-1)) + return; auto removeFromGroup = [](std::vector &group, size_t index, int total) { for (auto iter = group.begin(); iter != group.end(); ++iter) { size_t index2 = -1; diff --git a/src/slic3r/GUI/Widgets/Button.cpp b/src/slic3r/GUI/Widgets/Button.cpp index 6874644928..be988020d7 100644 --- a/src/slic3r/GUI/Widgets/Button.cpp +++ b/src/slic3r/GUI/Widgets/Button.cpp @@ -27,9 +27,9 @@ Button::Button() { background_color = StateColor( std::make_pair(0xF0F0F0, (int) StateColor::Disabled), + std::make_pair(0x37EE7C, (int) StateColor::Hovered | StateColor::Checked), std::make_pair(0x00AE42, (int) StateColor::Checked), std::make_pair(*wxLIGHT_GREY, (int) StateColor::Hovered), - std::make_pair(0x37EE7C, (int) StateColor::Hovered | StateColor::Checked), std::make_pair(*wxWHITE, (int) StateColor::Normal)); }