Author: fendrin
Date: Sat Mar 5 13:01:22 2011
New Revision: 48748
URL: http://svn.gna.org/viewcvs/wesnoth?rev=48748&view=rev
Log:
Got rid of the old wml_message class.
Removed:
trunk/src/gui/dialogs/wml_message.cpp
trunk/src/gui/dialogs/wml_message.hpp
Removed: trunk/src/gui/dialogs/wml_message.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/gui/dialogs/wml_message.cpp?rev=48747&view=auto
==============================================================================
--- trunk/src/gui/dialogs/wml_message.cpp (original)
+++ trunk/src/gui/dialogs/wml_message.cpp (removed)
@@ -1,408 +1,0 @@
-/* $Id$ */
-/*
- Copyright (C) 2008 - 2011 by Mark de Wever <[email protected]>
- 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/wml_message.hpp"
-
-#include "foreach.hpp"
-#include "gui/dialogs/helper.hpp"
-#include "gui/auxiliary/old_markup.hpp"
-#include "gui/widgets/button.hpp"
-#include "gui/widgets/label.hpp"
-#ifdef GUI2_EXPERIMENTAL_LISTBOX
-#include "gui/widgets/list.hpp"
-#else
-#include "gui/widgets/listbox.hpp"
-#endif
-#include "gui/widgets/settings.hpp"
-#include "gui/widgets/text_box.hpp"
-#include "gui/widgets/window.hpp"
-
-//TODO let's see if we need all of those
-#include "resources.hpp"
-#include "game_display.hpp"
-#include "map.hpp"
-#include "help.hpp"
-#include "gettext.hpp" //could be done in menu_events
-#include <boost/bind.hpp>
-
-namespace gui2 {
-
-//should be active in every dialog that involves units.
-void twml_message_::profile_pressed() {
- assert(chosen_unit_);
- const unit_type& t = *chosen_unit_->type();
- help::show_unit_help(*resources::screen, t.id(), t.hide_help());
-}
-
-//TODO this is very specific, might need to go into another class
-void twml_message_::help_pressed() {
- help::show_help(*resources::screen,"recruit_and_recall");
-}
-
-void twml_message_::update_unit_list(twindow& window) {
- tlistbox& unit_listbox = find_widget<tlistbox> (&window,
"recruit_list", false);
-
- //TODO this hack does not respect the sorting of the list.
- chosen_unit_ = &unit_list_[unit_listbox.get_selected_row()];
-
- const map_location& loc = chosen_unit_->get_location();
-
- if (resources::game_map->on_board(loc)) {
- resources::screen->highlight_hex(loc);
- //TODO is false better?
- resources::screen->scroll_to_tile(loc,
- game_display::SCROLL, true);
- } else {
- chosen_unit_->draw_report();
- }
-
- window.canvas(1).set_variable("portrait_image", variant(
- chosen_unit_->big_profile()));
- window.set_dirty();
-}
-
-void twml_message_::set_input(const std::string& caption,
- std::string* text, const unsigned maximum_length)
-{
- assert(text);
-
- has_input_ = true;
- input_caption_ = caption;
- input_text_ = text;
- input_maximum_lenght_ = maximum_length;
-}
-
-void twml_message_::set_option_list(
- const std::vector<std::string>& option_list, int* chosen_option)
-{
- assert(!option_list.empty());
- assert(chosen_option);
-
- option_list_ = option_list;
- chosen_option_ = chosen_option;
-}
-
-void twml_message_::set_unit_list(
- const std::vector<unit>& unit_list, std::string* unit_id)
-{
- assert(unit_id);
- assert(!unit_list.empty());
-
- unit_id_ = unit_id;
- unit_list_ = unit_list;
- chosen_unit_ = &unit_list_[0];
-}
-
-void twml_message_::set_type_list(
- std::vector<const unit_type*> type_list, std::string* type_id,
int side_num, int gold)
-{
- assert(!type_list.empty());
- assert(type_id);
-
- gold_ = gold;
- unit_id_ = type_id;
-
- std::vector<const unit_type*>::const_iterator it;
- it = type_list.begin();
-
- for (it = type_list.begin(); it != type_list.end(); it++)
- {
- unit new_unit(*it, side_num, false);
- unit_list_.push_back(new_unit);
- }
- chosen_unit_ = &unit_list_[0];
-}
-
-/**
- * @todo This function enables the wml markup for all items, but the interface
- * is a bit hacky. Especially the fiddling in the internals of the listbox is
- * ugly. There needs to be a clean interface to set whether a widget has a
- * markup and what kind of markup. These fixes will be post 1.6.
- */
-void twml_message_::pre_show(CVideo& /*video*/, twindow& window)
-{
- window.canvas(1).set_variable("portrait_image", variant(portrait_));
- window.canvas(1).set_variable("portrait_mirror", variant(mirror_));
-
- // Set the markup
- tlabel& title = find_widget<tlabel>(&window, "title", false);
- title.set_label(title_);
- title.set_use_markup(true);
- title.set_can_wrap(true);
-
- tcontrol& message = find_widget<tcontrol>(&window, "message", false);
- message.set_label(message_);
- message.set_use_markup(true);
- // The message label might not always be a scroll_label but the
capturing
- // shouldn't hurt.
- window.keyboard_capture(&message);
-
- // Find the input box related fields.
- tlabel& caption = find_widget<tlabel>(&window, "input_caption", false);
- ttext_box& input = find_widget<ttext_box>(&window, "input", true);
-
- if(has_input_) {
- caption.set_label(input_caption_);
- caption.set_use_markup(true);
- input.set_value(*input_text_);
- input.set_maximum_length(input_maximum_lenght_);
- window.keyboard_capture(&input);
- window.set_click_dismiss(false);
- window.set_escape_disabled(true);
- } else {
- caption.set_visible(twidget::INVISIBLE);
- input.set_visible(twidget::INVISIBLE);
- }
-
- // Find the unit list related fields:
-// tlistbox& units = find_widget<tlistbox>(&window, "unit_list", true);
- tlistbox& units = find_widget<tlistbox>(&window, "recruit_list", true);
-#ifndef GUI2_EXPERIMENTAL_LISTBOX
- units.set_callback_value_change(dialog_callback<twml_message_,
- &twml_message_::update_unit_list> );
-#endif
- if(!unit_list_.empty()) {
-
- window.canvas(1).set_variable("portrait_image", variant(
- chosen_unit_->big_profile()));
- window.set_dirty();
-
- chosen_unit_->draw_report();
-
- //TODO make it optional
- connect_signal_mouse_left_click(
-
find_widget<tbutton>(&window, "help", true)
- , boost::bind(
-
&twml_message_::help_pressed
- , this
- ));
-
- connect_signal_mouse_left_click(
- find_widget<tbutton>(&window,
"profile", true)
- , boost::bind(
-
&twml_message_::profile_pressed
- , this
- ));
-
- std::map<std::string, string_map> data;
- for(size_t i = 0; i < unit_list_.size(); ++i) {
-
- unit& unit = unit_list_[i];
-
- bool affordable = unit.cost() <= gold_ ;
-
- std::string unit_mod = affordable ? unit.image_mods() :
"~GS()" ;
- std::string icon = (unit.absolute_image() + unit_mod);
- std::string type = unit.type_name();
- std::string name = unit.name();
-
- //TODO handle traits in another way
- //std::string traits = unit.trait_descriptions();
- std::ostringstream level;
- std::ostringstream xp;
- xp << unit.experience() << "/" << unit.max_experience();
-
- // Show units of level (0=gray, 1 normal, 2 bold, 2+
bold&wbright)
- const int level_number = unit.level();
- //TODO enable the switch construct after replacing the
font::NORMAL_TEXT etc.
- // switch(level_number)
- // {
- // case 0: level <<
"<150,150,150>";
- // break;
- // case 1: level <<
font::NORMAL_TEXT;
- // break;
- // case 2: level <<
font::BOLD_TEXT;
- // break;
- // default: level <<
font::BOLD_TEXT << "<255,255,255>";
- // }
- level << level_number;
-
- std::string gold_color;
-
- gold_color = affordable ? "green" : "red" ;
-
- std::ostringstream cost;
- cost << "<span color=\"" << gold_color << "\">" <<
unit.cost() << " " << "Gold" << "</span>" ;
-
- // Add the data.
- data["cost"]["label"] = cost.str();
- data["cost"]["use_markup"] = "true";
- data["gold"]["label"] = "items/gold-coins-small.png";
- data["usage"]["label"] = unit.usage();
- data["icon"]["label"] = icon;
- data["icon"]["use_markup"] = "true";
- data["name"]["label"] = name;
- data["type"]["label"] = type;
- data["label"]["use_markup"] = "true";
- data["level"]["label"] = level.str();
- data["xp"]["label"] = xp.str();
- //TODO traits handling changed through the versions
- //data["traits"]["label"] = unit.traits_description();
- units.add_row(data);
- }
- } else {
- tbutton* profile_button = find_widget<tbutton> (&window,
"profile", false,
- false);
- profile_button->set_visible(twidget::INVISIBLE);
- units.set_visible(twidget::INVISIBLE);
-
- tbutton* help_button = find_widget<tbutton> (&window, "help",
false,
- false);
- help_button->set_visible(twidget::INVISIBLE);
-
- tbutton* cancel_button = find_widget<tbutton> (&window,
"cancel", false,
- false);
- cancel_button->set_visible(twidget::INVISIBLE);
- }
-
- // Find the option list related fields.
- tlistbox& options = find_widget<tlistbox>(&window, "input_list", true);
-
- if(!option_list_.empty()) {
- std::map<std::string, string_map> data;
- for(size_t i = 0; i < option_list_.size(); ++i) {
- /**
- * @todo This syntax looks like a bad hack, it would be
nice to write
- * a new syntax which doesn't use those hacks (also
avoids the problem
- * with special meanings for certain characters.
- */
- tlegacy_menu_item item(option_list_[i]);
-
- if(item.is_default()) {
- // Number of items hasn't been increased yet so
i is ok.
- *chosen_option_ = i;
- }
-
- // Add the data.
- data["icon"]["label"] = item.icon();
- data["label"]["label"] = item.label();
- data["label"]["use_markup"] = "true";
- data["description"]["label"] = item.description();
- data["description"]["use_markup"] = "true";
- options.add_row(data);
- }
-
- // Avoid negetive and 0 since item 0 is already selected.
- if(*chosen_option_ > 0
- && static_cast<size_t>(*chosen_option_)
- < option_list_.size()) {
-
- options.select_row(*chosen_option_);
- }
-
- if(!has_input_) {
- window.keyboard_capture(&options);
- window.set_click_dismiss(false);
- window.set_escape_disabled(true);
- } else {
- window.add_to_keyboard_chain(&options);
- // click_dismiss has been disabled due to the input.
- }
- } else {
- options.set_visible(twidget::INVISIBLE);
- }
- window.set_click_dismiss(!has_input_ && option_list_.empty() &&
unit_list_.empty());
-}
-
-void twml_message_::post_show(twindow& window)
-{
- if(has_input_) {
- *input_text_ =
- find_widget<ttext_box>(&window, "input",
true).get_value();
- }
-
- if(!option_list_.empty()) {
- *chosen_option_ =
- find_widget<tlistbox>(&window, "input_list",
true).get_selected_row();
- }
-
- if(!unit_list_.empty()) {
- *unit_id_ = chosen_unit_->type_id();
- }
-}
-
-REGISTER_DIALOG(wml_message_left)
-
-REGISTER_DIALOG(wml_message_right)
-
-int show_recruit_message(const bool left_side
- , CVideo& video
- , std::vector<const unit_type*> type_list
- , std::string* type_id
- , int side_num
- , int gold)
-{
- const std::string title = _("Recruit");
- const std::string message = _("Select unit:");
- const std::string portrait = "";
- const bool mirror = false;
- std::auto_ptr<twml_message_> dlg;
- if(left_side) {
- dlg.reset(new twml_message_left(title, message, portrait,
mirror));
- } else {
- dlg.reset(new twml_message_right(title, message, portrait,
mirror));
- }
- assert(dlg.get());
-
- dlg->set_type_list(type_list, type_id, side_num, gold);
-
- dlg->show(video);
- return dlg->get_retval();
-}
-
-int show_wml_message(const bool left_side
- , CVideo& video
- , const std::string& title
- , const std::string& message
- , const std::string& portrait
- , const bool mirror
- , const bool has_input
- , const std::string& input_caption
- , std::string* input_text
- , const unsigned maximum_length
- , const bool has_unit
- , std::string* unit_id
- , const std::vector<unit>& unit_list
- , const std::vector<std::string>& option_list
- , int* chosen_option)
-{
- std::auto_ptr<twml_message_> dlg;
- if(left_side) {
- dlg.reset(new twml_message_left(title, message, portrait,
mirror));
- } else {
- dlg.reset(new twml_message_right(title, message, portrait,
mirror));
- }
- assert(dlg.get());
-
- if(has_input) {
- dlg->set_input(input_caption, input_text, maximum_length);
- }
-
- if(has_unit) {
- dlg->set_unit_list(unit_list, unit_id);
- }
-
- if(!option_list.empty()) {
- dlg->set_option_list(option_list, chosen_option);
- }
-
- dlg->show(video);
- return dlg->get_retval();
-}
-
-} // namespace gui2
-
Removed: trunk/src/gui/dialogs/wml_message.hpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/gui/dialogs/wml_message.hpp?rev=48747&view=auto
==============================================================================
--- trunk/src/gui/dialogs/wml_message.hpp (original)
+++ trunk/src/gui/dialogs/wml_message.hpp (removed)
@@ -1,243 +1,0 @@
-/* $Id$ */
-/*
- Copyright (C) 2008 - 2011 by Mark de Wever <[email protected]>
- 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_WML_MESSAGE_HPP_INCLUDED
-#define GUI_DIALOGS_WML_MESSAGE_HPP_INCLUDED
-
-#include "gui/dialogs/dialog.hpp"
-//TODO get rid of this here
-#include "unit.hpp"
-
-namespace gui2 {
-
-/**
- * Base class for the wml generated messages.
- *
- * We have a separate sub class for left and right images.
- */
-class twml_message_
- : public tdialog
-{
-public:
- twml_message_(const std::string& title, const std::string& message,
- const std::string& portrait, const bool mirror)
- : title_(title)
- , image_("")
- , message_(message)
- , portrait_(portrait)
- , mirror_(mirror)
- , has_input_(false)
- , input_caption_("")
- , input_text_(NULL)
- , input_maximum_lenght_(0)
- , option_list_()
- , chosen_option_(NULL)
- {
- }
-
- /**
- * Sets the input text variables.
- *
- * @param caption The caption for the label.
- * @param text The initial text, after showing the final
- * text.
- * @param maximum_length The maximum length of the text.
- */
- void set_input(const std::string& caption,
- std::string* text, const unsigned maximum_length);
-
- /**
- * Sets the option list.
- *
- * @param option_list Vector of options to choice
from.
- * @param chosen_option Number of the option that was
chosen.
- */
- void set_option_list(
- const std::vector<std::string>& option_list, int*
chosen_option);
-
- /**
- * Sets the unit list.
- *
- * @param unit_list TODO
- * @param chosen_unit TODO
- */
- void set_unit_list(
- const std::vector<unit>& unit_list, std::string*
chosen_unit);
-
- /**
- * Sets the type list
- *
- * @param type_list TODO
- * @param type_id TODO
- * @param side_num TODO
- * @param gold TODO
- */
- void set_type_list(
- std::vector<const unit_type*> type_list,
std::string* type_id, int side_num, int gold);
-private:
-
-
- /** Handler for changed unit selection. */
- void update_unit_list(twindow& window);
-
- /** Handler for the profile button event. */
- void profile_pressed();
-
- /** Handler for the help button event */
- void help_pressed();
-
- /** The title for the dialog. */
- std::string title_;
-
- /**
- * The image which is shown in the dialog.
- *
- * This image can be an icon or portrait or any other image.
- */
- std::string image_;
-
- /** The message to show to the user. */
- std::string message_;
- /** Filename of the portrait. */
- std::string portrait_;
-
- /** Mirror the portrait? */
- bool mirror_;
-
- /** Do we need to show an input box? */
- bool has_input_;
-
- /** The caption to show for the input text. */
- std::string input_caption_;
-
- /** The text input. */
- std::string* input_text_;
-
- /** The maximum length of the input text. */
- unsigned input_maximum_lenght_;
-
- /** The unit id. */
- std::string* unit_id_;
-
- /** The list of units the player can choose. */
- std::vector<unit> unit_list_;
-
- /** The list of unit_types the player can choose. */
- //std::vector<const unit_type*> type_list_;
-
- /** The list of options the player can choose. */
- std::vector<std::string> option_list_;
-
- /** The chosen option. */
- int *chosen_option_;
-
- /** The chosen unit. */
- unit *chosen_unit_;
-
- /** Gold */
- int gold_;
-
- /** Inherited from tdialog. */
- void pre_show(CVideo& video, twindow& window);
-
- /** Inherited from tdialog. */
- void post_show(twindow& window);
-};
-
-/** Shows a dialog with the portrait on the left side. */
-class twml_message_left : public twml_message_
-{
-public:
- twml_message_left(const std::string& title, const std::string& message,
- const std::string& portrait, const bool mirror)
- : twml_message_(title, message, portrait, mirror)
- {
- }
-
-private:
-
- /** Inherited from tdialog, implemented by REGISTER_DIALOG. */
- virtual const std::string& window_id() const;
-};
-
-/** Shows a dialog with the portrait on the right side. */
-class twml_message_right : public twml_message_
-{
-public:
- twml_message_right(const std::string& title, const std::string& message,
- const std::string& portrait, const bool mirror)
- : twml_message_(title, message, portrait, mirror)
- {
- }
-
-private:
-
- /** Inherited from tdialog, implemented by REGISTER_DIALOG. */
- virtual const std::string& window_id() const;
-};
-
-
-/**
- * Helper function to show a portrait.
- *
- * @param left_side If true the portrait is shown on the left,
- * on the right side otherwise.
- * @param video The display variable.
- * @param title The title of the dialog.
- * @param message The message to show.
- * @param portrait Filename of the portrait.
- * @param mirror Does the portrait need to be mirrored?
- *
- * @param has_input Do we need to show the input box.
- * @param input_caption The caption for the optional input text
- * box. If this value != "" there is an input
- * and the input text parameter is mandatory.
- * @param input_text Pointer to the initial text value will be
- * set to the result.
- * @param maximum_length The maximum length of the text.
- *
- * @param option_list A list of options to select in the dialog.
- * @param chosen_option Pointer to the initially chosen option.
- * Will be set to the chosen_option when the
- * dialog closes.
- */
-int show_recruit_message(const bool left_side
- , CVideo& video
- , std::vector<const unit_type*> type_list
- , std::string* type_id
- , int side_num
- , int gold);
-
-int show_wml_message(const bool left_side
- , CVideo& video
- , const std::string& title
- , const std::string& message
- , const std::string& portrait
- , const bool mirror
- , const bool has_input
- , const std::string& input_caption
- , std::string* input_text
- , const unsigned maximum_length
- , const bool has_unit
- , std::string* unit_id
- , const std::vector<unit>& unit_list
- , const std::vector<std::string>& option_list
- , int* chosen_option);
-
-
-} // namespace gui2
-
-#endif
-
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits