Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Allow relative directories for screenshot_path, tweak default path (#…
…9122)

This will likely be more intuitive for users and should play better
with sandboxed distributions such as Flatpak.

In addition, the screenshot directory will now be created if it doesn't
exist already.
  • Loading branch information
Calinou committed Apr 6, 2020
1 parent 661b4a1 commit f45ba78
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 4 deletions.
5 changes: 3 additions & 2 deletions builtin/settingtypes.txt
Expand Up @@ -903,8 +903,9 @@ fallback_font_shadow_alpha (Fallback font shadow alpha) int 128 0 255
# This font will be used for certain languages or if the default font is unavailable.
fallback_font_path (Fallback font path) filepath fonts/DroidSansFallbackFull.ttf

# Path to save screenshots at.
screenshot_path (Screenshot folder) path
# Path to save screenshots at. Can be an absolute or relative path.
# The folder will be created if it doesn't already exist.
screenshot_path (Screenshot folder) path screenshots

# Format of screenshots.
screenshot_format (Screenshot format) enum png png,jpg,bmp,pcx,ppm,tga
Expand Down
13 changes: 12 additions & 1 deletion src/client/client.cpp
Expand Up @@ -1780,13 +1780,24 @@ void Client::makeScreenshot()
char timetstamp_c[64];
strftime(timetstamp_c, sizeof(timetstamp_c), "%Y%m%d_%H%M%S", tm);

std::string filename_base = g_settings->get("screenshot_path")
std::string screenshot_dir;

if (fs::IsPathAbsolute(g_settings->get("screenshot_path")))
screenshot_dir = g_settings->get("screenshot_path");
else
screenshot_dir = porting::path_user + DIR_DELIM + g_settings->get("screenshot_path");

std::string filename_base = screenshot_dir
+ DIR_DELIM
+ std::string("screenshot_")
+ std::string(timetstamp_c);
std::string filename_ext = "." + g_settings->get("screenshot_format");
std::string filename;

// Create the directory if it doesn't already exist.
// Otherwise, saving the screenshot would fail.
fs::CreateDir(screenshot_dir);

u32 quality = (u32)g_settings->getS32("screenshot_quality");
quality = MYMIN(MYMAX(quality, 0), 100) / 100.0 * 255;

Expand Down
2 changes: 1 addition & 1 deletion src/defaultsettings.cpp
Expand Up @@ -48,7 +48,7 @@ void set_default_settings(Settings *settings)
settings->setDefault("pitch_move", "false");
settings->setDefault("fast_move", "false");
settings->setDefault("noclip", "false");
settings->setDefault("screenshot_path", ".");
settings->setDefault("screenshot_path", "screenshots");
settings->setDefault("screenshot_format", "png");
settings->setDefault("screenshot_quality", "0");
settings->setDefault("client_unload_unused_data_timeout", "600");
Expand Down

0 comments on commit f45ba78

Please sign in to comment.