The Battle for Wesnoth  1.17.0-dev
synced_choice_wait.cpp
Go to the documentation of this file.
1 /*
2  Copyright (C) 2014 - 2018 by Iris Morelle <shadowm2006@gmail.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 
16 
18 #include "gui/widgets/label.hpp"
19 #include "gui/widgets/button.hpp"
20 #include "gui/widgets/settings.hpp"
21 #include "gui/widgets/window.hpp"
22 #include "quit_confirmation.hpp"
23 
24 #include "gui/dialogs/message.hpp"
25 #include "game_end_exceptions.hpp"
26 #include "gettext.hpp"
27 
28 
29 #include <functional>
30 
31 namespace gui2::dialogs
32 {
33 
34 REGISTER_DIALOG(synched_choice_wait)
35 
37  : mgr_(mgr)
38  , message_()
39 {
40  mgr_.changed_event_.attach_handler(this);
41 }
42 
44 {
46 }
47 
49 {
50  message_ = find_widget<label>(&window, "lblMessage", false, true);
51 
52 
53  button& quit_button = find_widget<button>(
54  &window, "btn_quit_game", false);
55 
58 
60  if(mgr_.finished() || !mgr_.waiting()) {
61  window.close();
62  }
63 }
64 
65 void synched_choice_wait::handle_generic_event(const std::string& event_name)
66 {
67  assert(event_name == "user_choice_update");
68  assert(message_);
70  if(mgr_.finished() || !mgr_.waiting()) {
71  get_window()->close();
72  }
73 }
74 
75 } // namespace dialogs
void close()
Requests to close the window.
Definition: window.hpp:181
static void quit_to_title()
This file contains the window object, this object is a top level container which has the event manage...
window * get_window() const
Returns a pointer to the dialog&#39;s window.
Contains the exception interfaces used to signal completion of a scenario, campaign or turn...
bool waiting() const
Note: currently finished() does not imply !waiting() so you may need to check both.
virtual void set_label(const t_string &label)
This file contains the settings handling of the widget library.
virtual void handle_generic_event(const std::string &event_name) override
void connect_signal_mouse_left_click(dispatcher &dispatcher, const signal_function &signal)
Connects a signal handler for a left mouse button click.
Definition: dispatcher.cpp:171
events::generic_event changed_event_
virtual void pre_show(window &window) override
Actions to be taken before showing the window.
Simple push button.
Definition: button.hpp:35
virtual bool detach_handler(observer *obs)
base class of top level items, the only item which needs to store the final canvases to draw on...
Definition: window.hpp:64
const std::string & wait_message() const