Fail gracefully if the screenshots folder doesn't exist.

This commit is contained in:
Guillaume Jacquemin 2020-06-29 16:38:43 +02:00
parent 8cac1a8360
commit 6a30c7d037
6 changed files with 15 additions and 10 deletions

View file

@ -56,8 +56,6 @@ EvtMainFrame::EvtMainFrame(wxWindow* parent): MainFrame(parent) {
wxFSW_EVENT_CREATE|wxFSW_EVENT_DELETE|wxFSW_EVENT_MODIFY|wxFSW_EVENT_RENAME, wxString::Format("*%s.sav", _manager.steamId())); wxFSW_EVENT_CREATE|wxFSW_EVENT_DELETE|wxFSW_EVENT_MODIFY|wxFSW_EVENT_RENAME, wxString::Format("*%s.sav", _manager.steamId()));
_watcher.AddTree(wxFileName(Utility::Directory::toNativeSeparators(_manager.stagingAreaDirectory()), wxPATH_WIN), _watcher.AddTree(wxFileName(Utility::Directory::toNativeSeparators(_manager.stagingAreaDirectory()), wxPATH_WIN),
wxFSW_EVENT_CREATE|wxFSW_EVENT_DELETE|wxFSW_EVENT_MODIFY|wxFSW_EVENT_RENAME, "*.sav"); wxFSW_EVENT_CREATE|wxFSW_EVENT_DELETE|wxFSW_EVENT_MODIFY|wxFSW_EVENT_RENAME, "*.sav");
_watcher.AddTree(wxFileName(Utility::Directory::toNativeSeparators(_manager.screenshotDirectory()), wxPATH_WIN),
wxFSW_EVENT_CREATE|wxFSW_EVENT_DELETE, "*.png"); // Not monitoring wxFSW_EVENT_{MODIFY,RENAME}, because they're a massive pain to handle. Ugh.
std::vector<std::string> v = _manager.initialiseStagingArea(); std::vector<std::string> v = _manager.initialiseStagingArea();
for(const std::string& s : v) { for(const std::string& s : v) {
@ -66,6 +64,15 @@ EvtMainFrame::EvtMainFrame(wxWindow* parent): MainFrame(parent) {
_gameCheckTimer.Start(3000); _gameCheckTimer.Start(3000);
if(!_manager.findScreenshotDirectory()) {
warningMessage("Screenshot manager not ready:\n\n" + _manager.lastError());
_screenshotsPanel->Disable();
return;
}
_watcher.AddTree(wxFileName(Utility::Directory::toNativeSeparators(_manager.screenshotDirectory()), wxPATH_WIN),
wxFSW_EVENT_CREATE|wxFSW_EVENT_DELETE, "*.png"); // Not monitoring wxFSW_EVENT_{MODIFY,RENAME}, because they're a massive pain to handle. Ugh.
_screenshotsList->SetImageList(&_screenshotThumbs, wxIMAGE_LIST_NORMAL); _screenshotsList->SetImageList(&_screenshotThumbs, wxIMAGE_LIST_NORMAL);
updateScreenshotList(); updateScreenshotList();

View file

@ -186,7 +186,7 @@ MainFrame::MainFrame( wxWindow* parent, wxWindowID id, const wxString& title, co
bSizerMainPanel->Add( bSizerGameStatus, 0, wxALIGN_CENTER_HORIZONTAL, 5 ); bSizerMainPanel->Add( bSizerGameStatus, 0, wxALIGN_CENTER_HORIZONTAL, 5 );
_aboutText = new wxStaticText( _mainPanel, wxID_ANY, wxT("This version of the application was tested on M.A.S.S. Builder early access version 0.4.1.\nIt may or may not work with other versions of the game.\nMade for the M.A.S.S. Builder community by Guillaume Jacquemin."), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTER_HORIZONTAL ); _aboutText = new wxStaticText( _mainPanel, wxID_ANY, wxT("This version of the application was tested on M.A.S.S. Builder early access version 0.4.5.\nIt may or may not work with other versions of the game.\nMade for the M.A.S.S. Builder community by Guillaume Jacquemin."), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTER_HORIZONTAL );
_aboutText->Wrap( -1 ); _aboutText->Wrap( -1 );
bSizerMainPanel->Add( _aboutText, 0, wxEXPAND|wxRIGHT|wxLEFT|wxALIGN_CENTER_HORIZONTAL, 5 ); bSizerMainPanel->Add( _aboutText, 0, wxEXPAND|wxRIGHT|wxLEFT|wxALIGN_CENTER_HORIZONTAL, 5 );

View file

@ -48,7 +48,7 @@
<property name="size">-1,-1</property> <property name="size">-1,-1</property>
<property name="style">wxCAPTION|wxCLOSE_BOX|wxMINIMIZE_BOX|wxSYSTEM_MENU</property> <property name="style">wxCAPTION|wxCLOSE_BOX|wxMINIMIZE_BOX|wxSYSTEM_MENU</property>
<property name="subclass">; ; forward_declare</property> <property name="subclass">; ; forward_declare</property>
<property name="title">M.A.S.S. Manager 1.1.1</property> <property name="title">M.A.S.S. Manager 1.1.2</property>
<property name="tooltip"></property> <property name="tooltip"></property>
<property name="window_extra_style"></property> <property name="window_extra_style"></property>
<property name="window_name"></property> <property name="window_name"></property>
@ -1968,7 +1968,7 @@
<property name="gripper">0</property> <property name="gripper">0</property>
<property name="hidden">0</property> <property name="hidden">0</property>
<property name="id">wxID_ANY</property> <property name="id">wxID_ANY</property>
<property name="label">This version of the application was tested on M.A.S.S. Builder early access version 0.4.1.&#x0A;It may or may not work with other versions of the game.&#x0A;Made for the M.A.S.S. Builder community by Guillaume Jacquemin.</property> <property name="label">This version of the application was tested on M.A.S.S. Builder early access version 0.4.5.&#x0A;It may or may not work with other versions of the game.&#x0A;Made for the M.A.S.S. Builder community by Guillaume Jacquemin.</property>
<property name="markup">0</property> <property name="markup">0</property>
<property name="max_size"></property> <property name="max_size"></property>
<property name="maximize_button">0</property> <property name="maximize_button">0</property>

View file

@ -96,7 +96,7 @@ class MainFrame : public wxFrame
public: public:
MainFrame( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("M.A.S.S. Manager 1.1.1"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxCAPTION|wxCLOSE_BOX|wxMINIMIZE_BOX|wxSYSTEM_MENU|wxCLIP_CHILDREN|wxTAB_TRAVERSAL ); MainFrame( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("M.A.S.S. Manager 1.1.2"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxCAPTION|wxCLOSE_BOX|wxMINIMIZE_BOX|wxSYSTEM_MENU|wxCLIP_CHILDREN|wxTAB_TRAVERSAL );
~MainFrame(); ~MainFrame();

View file

@ -43,7 +43,7 @@ constexpr unsigned char active_slot_locator[] = { 'A', 'c', 't', 'i', 'v', 'e',
constexpr unsigned char credits_locator[] = { 'C', 'r', 'e', 'd', 'i', 't', '\0', 0x0C, '\0', '\0', '\0', 'I', 'n', 't', 'P', 'r', 'o', 'p', 'e', 'r', 't', 'y', '\0' }; constexpr unsigned char credits_locator[] = { 'C', 'r', 'e', 'd', 'i', 't', '\0', 0x0C, '\0', '\0', '\0', 'I', 'n', 't', 'P', 'r', 'o', 'p', 'e', 'r', 't', 'y', '\0' };
MassManager::MassManager() { MassManager::MassManager() {
_ready = findSaveDirectory() && findSteamId() && findScreenshotDirectory(); _ready = findSaveDirectory() && findSteamId();
if(!_ready) { if(!_ready) {
return; return;
@ -59,8 +59,6 @@ MassManager::MassManager() {
_hangars[i]._filename = Utility::formatString("Unit{:.2d}{}.sav", i, _steamId); _hangars[i]._filename = Utility::formatString("Unit{:.2d}{}.sav", i, _steamId);
refreshHangar(i); refreshHangar(i);
} }
loadScreenshots();
} }
auto MassManager::ready() -> bool { auto MassManager::ready() -> bool {

View file

@ -94,6 +94,7 @@ class MassManager {
auto stagedMassName(int index) -> std::string; auto stagedMassName(int index) -> std::string;
auto stagedMassName(const std::string& filename) -> std::string; auto stagedMassName(const std::string& filename) -> std::string;
auto findScreenshotDirectory() -> bool;
void loadScreenshots(); void loadScreenshots();
auto screenshots() -> std::vector<Screenshot> const&; auto screenshots() -> std::vector<Screenshot> const&;
void sortScreenshots(SortType type); void sortScreenshots(SortType type);
@ -107,7 +108,6 @@ class MassManager {
auto findSaveDirectory() -> bool; auto findSaveDirectory() -> bool;
auto findSteamId() -> bool; auto findSteamId() -> bool;
auto findScreenshotDirectory() -> bool;
void addScreenshot(const std::string& filename); void addScreenshot(const std::string& filename);
bool _ready = false; bool _ready = false;