The Battle for Wesnoth  1.15.1+dev
depcheck_select_new.cpp
Go to the documentation of this file.
1 /*
2  Copyright (C) 2012 - 2018 by Boldizs√°r Lipka <lipkab@zoho.com>
3  Part of the Battle for Wesnoth Project https://www.wesnoth.org/
4 
5  This program is free software; you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation; either version 2 of the License, or
8  (at your option) any later version.
9  This program is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY.
11 
12  See the COPYING file for more details.
13 */
14 
15 #define GETTEXT_DOMAIN "wesnoth-lib"
16 
18 
20 #include "gui/widgets/settings.hpp"
21 #include "gui/widgets/window.hpp"
22 #include "gui/widgets/listbox.hpp"
23 #include "gettext.hpp"
24 
25 namespace gui2
26 {
27 namespace dialogs
28 {
29 
30 /*WIKI
31  * @page = GUIWindowDefinitionWML
32  * @order = 2_depcheck_select_new
33  *
34  * == SP/MP Dependency Check: Select New ==
35  *
36  * Offers a list of compatible items if a currently selected one is
37  * incompatible. Currently used for switching era or map.
38  *
39  * @begin{table}{dialog_widgets}
40  *
41  * message & & label & m &
42  * displays the details of the required changes $
43  *
44  * itemlist & & listbox & m &
45  * displays the available items to choose from $
46  *
47  * cancel & & button & m &
48  * refuse to apply any changes $
49  *
50  * ok & & button & m &
51  * select the chosen item $
52  *
53  * @end{table}
54  *
55  */
56 
57 REGISTER_DIALOG(depcheck_select_new)
58 
60  ng::depcheck::component_type name,
61  const std::vector<std::string>& items)
62  : items_(items), result_(-1)
63 {
64 
65  std::string message;
66 
67  switch(name) {
69  message = _("The currently chosen scenario "
70  "is not compatible with your setup."
71  "\nPlease select a compatible one.");
72  break;
73  case ng::depcheck::ERA:
74  message = _("The currently chosen era "
75  "is not compatible with your setup."
76  "\nPlease select a compatible one.");
77  break;
79  // currently this can't happen, but be prepared for anything...
80  message = _("The currently chosen modification "
81  "is not compatible with your setup."
82  "\nPlease select a compatible one.");
83  }
84 
85  register_label("message", false, message);
86 }
87 
89 {
90  listbox& items = find_widget<listbox>(&window, "itemlist", false);
91 
92  for(const auto & item : items_)
93  {
94  std::map<std::string, string_map> data;
95  data["option"]["label"] = item;
96 
97  items.add_row(data);
98  }
99 
100  items.select_row(0);
101 }
102 
104 {
105  if(get_retval() == retval::OK) {
106  listbox& items = find_widget<listbox>(&window, "itemlist", false);
107  result_ = items.get_selected_row();
108  }
109 }
110 } // namespace dialogs
111 } // namespace gui2
int result_
the index of the selected item
Main class to show messages to the user.
Definition: message.hpp:34
This file contains the window object, this object is a top level container which has the event manage...
STL namespace.
const std::vector< std::string > items
int get_selected_row() const
Returns the first selected row.
Definition: listbox.cpp:272
bool select_row(const unsigned row, const bool select=true)
Selects a row.
Definition: listbox.cpp:250
Generic file dialog.
Definition: field-fwd.hpp:22
The listbox class.
Definition: listbox.hpp:40
static const char * name(const std::vector< SDL_Joystick *> &joysticks, const std::size_t index)
Definition: joystick.cpp:48
static UNUSEDNOWARN std::string _(const char *str)
Definition: gettext.hpp:91
This file contains the settings handling of the widget library.
std::vector< std::string > items_
the options available
Various uncategorised dialogs.
grid & add_row(const string_map &item, const int index=-1)
When an item in the list is selected by the user we need to update the state.
Definition: listbox.cpp:66
virtual void post_show(window &window) override
Inherited from modal_dialog.
virtual void pre_show(window &window) override
Inherited from modal_dialog.
Dialog was closed with the OK button.
Definition: retval.hpp:34
base class of top level items, the only item which needs to store the final canvases to draw on ...
Definition: window.hpp:63
std::pair< std::string, unsigned > item
Definition: help_impl.hpp:371