SDL: Allow specifying the screenshot directory in the config file

There is no GUI option to set the screenshot directory, but this
allows power users to set it if they don't want to use the default.
This commit is contained in:
Thierry Crozat 2017-04-24 00:51:57 +01:00
parent 11dd33bb73
commit e96c057c3d
4 changed files with 30 additions and 8 deletions

14
README
View File

@ -2682,11 +2682,19 @@ configuration of each entry, allowing the custom options to be shown.
9.0) Screenshots (SDL backend only): 9.0) Screenshots (SDL backend only):
---- ------------------------------- ---- -------------------------------
On systems using the SDL backend (for example Windows, Mac or Linux) you can use On systems using the SDL backend (for example Windows, Mac or Linux) you can use
alt+s to take snapshots (see section 5.4 - Hotkeys). The location of the created alt+s to take snapshots (see section 5.4 - Hotkeys).
screenshot file depends on the OS:
You can specify the directory in which you want the screenshots to be created in
the config file. To do so add a screenshotpath value under the [scummvm] section:
[scummvm]
screenshotpath=/path/to/screenshots/
The default location, when no screenshot path is defined in the config file,
depends on the OS:
Windows: In Users\username\My Pictures\ScummVM Screenshots. Windows: In Users\username\My Pictures\ScummVM Screenshots.
macOS X: On the Desktop. macOS X: On the Desktop.
Any other OS: In the current directoty. Any other OS: In the current directory.
10.0) Compiling: 10.0) Compiling:

View File

@ -188,7 +188,9 @@ Common::String OSystem_MacOSX::getSystemLanguage() const {
} }
Common::String OSystem_MacOSX::getScreenshotsPath() { Common::String OSystem_MacOSX::getScreenshotsPath() {
Common::String path = getDesktopPathMacOSX(); Common::String path = ConfMan.get("screenshotpath");
if (path.empty())
path = getDesktopPathMacOSX();
if (!path.empty() && !path.hasSuffix("/")) if (!path.empty() && !path.hasSuffix("/"))
path += "/"; path += "/";
return path; return path;

View File

@ -573,7 +573,10 @@ Common::SaveFileManager *OSystem_SDL::getSavefileManager() {
//Not specified in base class //Not specified in base class
Common::String OSystem_SDL::getScreenshotsPath() { Common::String OSystem_SDL::getScreenshotsPath() {
return Common::String(); Common::String path = ConfMan.get("screenshotpath");
if (!path.empty() && !path.hasSuffix("/"))
path += "/";
return path;
} }
#ifdef USE_OPENGL #ifdef USE_OPENGL

View File

@ -147,13 +147,22 @@ bool OSystem_Win32::openUrl(const Common::String &url) {
} }
Common::String OSystem_Win32::getScreenshotsPath() { Common::String OSystem_Win32::getScreenshotsPath() {
Common::String screenshotsPath = ConfMan.get("screenshotpath");
if (!screenshotsPath.empty()) {
if (!screenshotsPath.hasSuffix("\\") && !screenshotsPath.hasSuffix("/")
screenshotsPath += "\\";
return screenshotsPath;
}
char picturesPath[MAXPATHLEN]; char picturesPath[MAXPATHLEN];
// Use the My Pictures folder. // Use the My Pictures folder.
if (SHGetFolderPath(NULL, CSIDL_MYPICTURES, NULL, SHGFP_TYPE_CURRENT, picturesPath) != S_OK) if (SHGetFolderPath(NULL, CSIDL_MYPICTURES, NULL, SHGFP_TYPE_CURRENT, picturesPath) != S_OK) {
error("Unable to access My Pictures directory"); warning("Unable to access My Pictures directory");
return Common::String();
}
Common::String screenshotsPath = Common::String(picturesPath) + "\\ScummVM Screenshots\\"; screenshotsPath = Common::String(picturesPath) + "\\ScummVM Screenshots\\";
// If the directory already exists (as it should in most cases), // If the directory already exists (as it should in most cases),
// we don't want to fail, but we need to stop on other errors (such as ERROR_PATH_NOT_FOUND) // we don't want to fail, but we need to stop on other errors (such as ERROR_PATH_NOT_FOUND)