diff --git a/src/slic3r/GUI/MediaFilePanel.cpp b/src/slic3r/GUI/MediaFilePanel.cpp index 9211b4ade..cd971cc81 100644 --- a/src/slic3r/GUI/MediaFilePanel.cpp +++ b/src/slic3r/GUI/MediaFilePanel.cpp @@ -278,7 +278,7 @@ void MediaFilePanel::SetMachineObject(MachineObject* obj) case PrinterFileSystem::ListSyncing: icon = m_bmp_loading; msg = _L("Loading file list..."); break; case PrinterFileSystem::ListReady: icon = extra == 0 ? m_bmp_empty : m_bmp_failed; msg = extra == 0 ? _L("No files [%d]") : _L("Load failed [%d]"); break; } - if (!e.GetString().IsEmpty()) msg = _L(e.GetString()); + if (!e.GetString().IsEmpty()) msg = e.GetString(); if (fs->GetCount() == 0 && !msg.empty()) m_image_grid->SetStatus(icon, msg); if (e.GetInt() == PrinterFileSystem::Initializing) diff --git a/src/slic3r/GUI/Printer/PrinterFileSystem.cpp b/src/slic3r/GUI/Printer/PrinterFileSystem.cpp index 5fc347dec..3cb840a61 100644 --- a/src/slic3r/GUI/Printer/PrinterFileSystem.cpp +++ b/src/slic3r/GUI/Printer/PrinterFileSystem.cpp @@ -19,6 +19,16 @@ //#define PRINTER_FILE_SYSTEM_TEST #endif +std::string last_system_error() { + return std::error_code( +#ifdef _WIN32 + GetLastError(), +#else + errno, +#endif + std::system_category()).message(); +} + wxDEFINE_EVENT(EVT_STATUS_CHANGED, wxCommandEvent); wxDEFINE_EVENT(EVT_MODE_CHANGED, wxCommandEvent); wxDEFINE_EVENT(EVT_FILE_CHANGED, wxCommandEvent); @@ -628,6 +638,7 @@ void PrinterFileSystem::DownloadNextFile() prog.total = resp["total"]; if (prog.size == 0) { download->ofs.open(download->local_path, std::ios::binary); + wxLogWarning("PrinterFileSystem::DownloadNextFile open error: %s\n", wxString::FromUTF8(last_system_error())); if (!download->ofs) return FILE_OPEN_ERR; } if (download->total && (download->size != prog.size || download->total != prog.total)) { @@ -635,6 +646,10 @@ void PrinterFileSystem::DownloadNextFile() } // receive data download->ofs.write((char const *) data, size); + if (!download->ofs) { + wxLogWarning("PrinterFileSystem::DownloadNextFile write error: %s\n", wxString::FromUTF8(last_system_error())); + return FILE_READ_WRITE_ERR; + } download->boost_md5.process_bytes(data, size); prog.size += size; download->total = prog.total; @@ -993,7 +1008,7 @@ void PrinterFileSystem::SendChangedEvent(wxEventType type, size_t index, std::st if (!str.empty()) event.SetString(wxString::FromUTF8(str.c_str())); else if (auto iter = error_messages.find(extra); iter != error_messages.end()) - event.SetString(wxString::FromUTF8(iter->second.c_str())); + event.SetString(_L(iter->second.c_str())); event.SetExtraLong(extra); if (wxThread::IsMain()) ProcessEventLocally(event); diff --git a/src/slic3r/GUI/Printer/PrinterFileSystem.h b/src/slic3r/GUI/Printer/PrinterFileSystem.h index 8caf720ce..79f7d4c11 100644 --- a/src/slic3r/GUI/Printer/PrinterFileSystem.h +++ b/src/slic3r/GUI/Printer/PrinterFileSystem.h @@ -48,7 +48,7 @@ public: FILE_NAME_INVALID = 11, FILE_SIZE_ERR = 12, FILE_OPEN_ERR = 13, - FILE_READ_ERR = 14, + FILE_READ_WRITE_ERR = 14, FILE_CHECK_ERR = 15, FILE_TYPE_ERR = 16, STORAGE_UNAVAILABLE = 17,