Merge branch 'staging/feature/screenshot-notifications'

This commit is contained in:
Ignacio R. Morelle 2014-02-21 02:33:04 -03:00
commit 5d84cb579c
10 changed files with 405 additions and 4 deletions

View file

@ -32,6 +32,10 @@ Additionally, the format used for logging these errors to stderr has changed:
[/list]
[/section]
[section="New screenshots notification dialog"]
The pop-up notification displayed when taking a screenshot of the game UI or map has been replaced with a small dialog including options to copy the screenshot file path to clipboard, open it with an external application, or browse the screenshots folder in the file manager application defined by the platform.
[/section]
[section="Example section header"]
Example contents.
[/section]

View file

@ -39,6 +39,10 @@ Version 1.11.9+dev:
* New UI for displaying errors detected during the core and add-on WML
loading process (parser and preprocessor errors), including the
ability to copy the report to clipboard.
* New UI for displaying the notification that a screenshot or map
screenshot was successfully saved to disk, including options to open it
in an external application, copy the path to clipboard, or browse the
screenshots folder.
* Fixed bug #21584: Properly redraw the minimap when the minimap is
resized.
* Fixed: Enable blurring in the title screen.

View file

@ -0,0 +1,221 @@
#textdomain wesnoth-lib
#define __GUI_FILENAME_OPTIONS_GRID
[grid]
[row]
grow_factor = 1
[column]
grow_factor = 1
border = "all"
border_size = 5
horizontal_grow = "true"
[text_box]
id = "path"
definition = "default"
label = ""
[/text_box]
[/column]
[column]
grow_factor = 0
border = "all"
border_size = 5
horizontal_grow = "true"
[button]
id = "copy"
definition = "action_copy"
label = _ "filesystem^Copy"
tooltip = _ "Copy this path to clipboard"
[/button]
[/column]
[column]
grow_factor = 0
border = "all"
border_size = 5
horizontal_grow = "true"
[button]
id = "open"
definition = "action_go"
label = _ "filesystem^Open"
tooltip = _ "Open this file with an external application"
[/button]
[/column]
[/row]
[/grid]
#enddef
[window]
id = "screenshot_notification"
description = "Notification dialog used after saving a game or map screenshot."
[resolution]
definition = "default"
click_dismiss = "true"
maximum_width = 600
[tooltip]
id = "tooltip_large"
[/tooltip]
[helptip]
id = "tooltip_large"
[/helptip]
[grid]
[row]
grow_factor = 0
[column]
grow_factor = 1
border = "all"
border_size = 5
horizontal_alignment = "left"
[label]
id = "title"
definition = "title"
label = _ "Screenshot Saved"
[/label]
[/column]
[/row]
[row]
grow_factor = 1
[column]
horizontal_grow = "true"
[grid]
[row]
[column]
border = "all"
border_size = 5
horizontal_alignment = "left"
[label]
definition = "default"
label = _ "Name:"
[/label]
[/column]
[column]
{__GUI_FILENAME_OPTIONS_GRID}
[/column]
[/row]
[row]
[column]
border = "all"
border_size = 5
horizontal_alignment = "left"
[label]
label = _ "Size:"
[/label]
[/column]
[column]
border = "all"
border_size = 5
horizontal_alignment = "left"
[label]
id = "filesize"
wrap = "true"
[/label]
[/column]
[/row]
[/grid]
[/column]
[/row]
[row]
grow_factor = 0
[column]
horizontal_grow = "true"
[grid]
[row]
grow_factor = 0
[column]
border = "all"
border_size = 5
horizontal_alignment = "left"
[button]
id = "browse_dir"
definition = "default"
label = _ "Screenshots..."
tooltip = _ "Browse the screenshots folder using a file manager"
[/button]
[/column]
[column]
border = "all"
border_size = 5
horizontal_alignment = "right"
[button]
id = "ok"
definition = "default"
label = _ "OK"
[/button]
[/column]
[/row]
[/grid]
[/column]
[/row]
[/grid]
[/resolution]
[/window]
#undef __GUI_FILENAME_OPTIONS_GRID

View file

@ -22,6 +22,10 @@ Version 1.11.9+dev:
* New UI for displaying errors detected during the core and add-on WML
loading process (parser and preprocessor errors), including the
ability to copy the report to clipboard.
* New UI for displaying the notification that a screenshot or map
screenshot was successfully saved to disk, including options to open it
in an external application, copy the path to clipboard, or browse the
screenshots folder.
Version 1.11.9:

View file

@ -779,6 +779,7 @@ set(wesnoth-main_SRC
gui/dialogs/network_transmission.cpp
gui/dialogs/popup.cpp
gui/dialogs/edit_text.cpp
gui/dialogs/screenshot_notification.cpp
gui/dialogs/simple_item_selector.cpp
gui/dialogs/theme_list.cpp
gui/dialogs/title_screen.cpp

View file

@ -388,6 +388,7 @@ wesnoth_sources = Split("""
gui/dialogs/network_transmission.cpp
gui/dialogs/popup.cpp
gui/dialogs/edit_text.cpp
gui/dialogs/screenshot_notification.cpp
gui/dialogs/simple_item_selector.cpp
gui/dialogs/theme_list.cpp
gui/dialogs/tip.cpp
@ -555,7 +556,7 @@ for env in [test_env, client_env, env]:
env.AddMethod(WesnothProgram)
wesnoth_objects = ["game.cpp", libwesnoth_extras, libwesnoth_core, libwesnoth_sdl,
libwesnoth, env["wesnoth_res"]]
libwesnoth, libwesnoth_extras, env["wesnoth_res"]]
if env["host"] in ["x86_64-nacl", "i686-nacl"]:
wesnoth_objects += [SConscript("nacl/SConscript")]
client_env.WesnothProgram("wesnoth", wesnoth_objects, have_client_prereqs)

View file

@ -0,0 +1,99 @@
/*
Copyright (C) 2013 - 2014 by Ignacio Riquelme Morelle <shadowm2006@gmail.com>
Part of the Battle for Wesnoth Project http://www.wesnoth.org/
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY.
See the COPYING file for more details.
*/
#define GETTEXT_DOMAIN "wesnoth-lib"
#include "gui/dialogs/screenshot_notification.hpp"
#include "clipboard.hpp"
#include "desktop_util.hpp"
#include "filesystem.hpp"
#include "gui/auxiliary/find_widget.tpp"
#include "gui/widgets/button.hpp"
#include "gui/widgets/settings.hpp"
#include "gui/widgets/text_box.hpp"
#include "gui/widgets/window.hpp"
#include <boost/bind.hpp>
#include "gettext.hpp"
namespace gui2 {
/*WIKI
* @page = GUIWindowDefinitionWML
* @order = 2_screenshot_notification
*
* == Screenshot notification ==
*
* Notification dialog used after saving a game or map screenshot to display
* information about it for the user.
*
* @begin{table}{dialog_widgets}
*
* path & & text_box & m &
* Read-only textbox containing the screenshot path. $
*
* filesize & & label & o &
* Optional label to display the file size. $
*
* copy & & button & m &
* Button to copy the path to clipboard. $
*
* open & & button & m &
* Button to open the screnshot using the default application. $
*
* browse_dir & & button & m &
* Button to browse the screenshots directory in the file manager. $
*
* @end{table}
*/
REGISTER_DIALOG(screenshot_notification)
tscreenshot_notification::tscreenshot_notification(const std::string& path,
int filesize)
: path_(path)
, screenshots_dir_path_(get_screenshot_dir())
{
register_label("filesize",
false,
utils::si_string(filesize, true, _("unit_byte^B")),
false);
}
void tscreenshot_notification::pre_show(CVideo& /*video*/, twindow& window)
{
ttext_box& path_box = find_widget<ttext_box>(&window, "path", false);
path_box.set_value(file_name(path_));
path_box.set_active(false);
tbutton& copy_b = find_widget<tbutton>(&window, "copy", false);
connect_signal_mouse_left_click(copy_b,
boost::bind(&copy_to_clipboard,
boost::ref(path_),
false));
tbutton& open_b = find_widget<tbutton>(&window, "open", false);
connect_signal_mouse_left_click(open_b,
boost::bind(&desktop::open_object,
boost::ref(path_)));
tbutton& bdir_b = find_widget<tbutton>(&window, "browse_dir", false);
connect_signal_mouse_left_click(bdir_b,
boost::bind(&desktop::open_object,
boost::ref(screenshots_dir_path_)));
}
}

View file

@ -0,0 +1,56 @@
/*
Copyright (C) 2013 - 2014 by Ignacio Riquelme Morelle <shadowm2006@gmail.com>
Part of the Battle for Wesnoth Project http://www.wesnoth.org/
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY.
See the COPYING file for more details.
*/
#ifndef GUI_DIALOGS_SCREENSHOT_NOTIFICATION_HPP_INCLUDED
#define GUI_DIALOGS_SCREENSHOT_NOTIFICATION_HPP_INCLUDED
#include "gui/dialogs/dialog.hpp"
namespace gui2 {
class tscreenshot_notification : public tdialog
{
public:
/**
* Constructor.
*
* @param path Path to the screenshot file created,
* @param filesize Size of the screenshot file.
*/
tscreenshot_notification(const std::string& path, int filesize);
/**
* The display function.
*
* See @ref tdialog for more information.
*/
static void display(const std::string& path, int filesize, CVideo& video)
{
tscreenshot_notification(path, filesize).show(video);
}
private:
const std::string path_;
const std::string screenshots_dir_path_;
/** Inherited from tdialog, implemented by REGISTER_DIALOG. */
virtual const std::string& window_id() const;
/** Inherited from tdialog. */
void pre_show(CVideo& video, twindow& window);
};
}
#endif /* ! GUI_DIALOGS_SCREENSHOT_NOTIFICATION_HPP_INCLUDED */

View file

@ -18,6 +18,7 @@
#include "boost/foreach.hpp"
#include "gui/dialogs/message.hpp"
#include "gui/dialogs/screenshot_notification.hpp"
#include "gui/dialogs/transient_message.hpp"
#include "gui/widgets/window.hpp"
#include "wml_separators.hpp"
@ -627,9 +628,7 @@ void execute_command(display& disp, const hotkey_command& command, command_execu
filename = get_next_filename(filename, ".bmp");
int size = disp.screenshot(filename, map_screenshot);
if (size > 0) {
std::stringstream res;
res << filename << " ( " << utils::si_string(size, true, _("unit_byte^B")) << " )";
gui2::show_message(disp.video(), _("Screenshot Done"), res.str());
gui2::tscreenshot_notification::display(filename, size, disp.video());
} else {
gui2::show_message(disp.video(), _("Screenshot Done"), "");
}

View file

@ -52,6 +52,7 @@
#include "gui/dialogs/mp_login.hpp"
#include "gui/dialogs/mp_method_selection.hpp"
#include "gui/dialogs/simple_item_selector.hpp"
#include "gui/dialogs/screenshot_notification.hpp"
#include "gui/dialogs/title_screen.hpp"
#include "gui/dialogs/tip.hpp"
#include "gui/dialogs/transient_message.hpp"
@ -375,6 +376,7 @@ BOOST_AUTO_TEST_CASE(test_gui2)
test<gui2::tlanguage_selection>();
test<gui2::tmessage>();
test<gui2::tsimple_item_selector>();
test<gui2::tscreenshot_notification>();
test<gui2::tmp_change_control>();
test<gui2::tmp_cmd_wrapper>();
test<gui2::tmp_connect>();
@ -649,6 +651,16 @@ struct twrapper<gui2::tsimple_item_selector>
}
};
template<>
struct twrapper<gui2::tscreenshot_notification>
{
static gui2::tscreenshot_notification* create()
{
return new gui2::tscreenshot_notification("path"
, 0);
}
};
template<>
struct twrapper<gui2::teditor_generate_map>
{