The Battle for Wesnoth  1.17.21+dev
show_dialog.hpp
Go to the documentation of this file.
1 /*
2  Copyright (C) 2003 - 2023
3  by David White <dave@whitevine.net>
4  Part of the Battle for Wesnoth Project https://www.wesnoth.org/
5 
6  This program is free software; you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation; either version 2 of the License, or
9  (at your option) any later version.
10  This program is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY.
12 
13  See the COPYING file for more details.
14 */
15 
16 #pragma once
17 
18 class surface;
19 
20 #include "cursor.hpp"
21 #include "floating_label.hpp"
23 #include "tooltips.hpp"
24 #include "widgets/button.hpp"
25 
26 namespace gui
27 {
28 
29 extern const int ButtonHPadding;
30 extern const int ButtonVPadding;
36  ESCAPE_DIALOG=-3, //special return used by WML event dialogs
38  CLOSE_DIALOG=-1
39  /* results (0..N) reserved for standard button indices */
40 };
41 
42 bool in_dialog();
43 
47 
48 private:
49  bool reset_to;
50 };
51 
53 public:
57  };
58  class style {
59  public:
60  style(const std::string& p, int br) : panel(p), blur_radius(br) {}
61  std::string panel;
63  };
64 
65  //Static members
66  static const int title_border_w, title_border_h;
67  static const style default_style;
68 
69  dialog_frame(const std::string& title="",
70  const style& dialog_style=default_style,
71  std::vector<button*>* buttons=nullptr,
72  button* help_button=nullptr);
73  ~dialog_frame();
74 
75  dimension_measurements layout(int x, int y, int w, int h);
76  dimension_measurements layout(const SDL_Rect& frame_area);
77  void set_layout(dimension_measurements &new_dim) { dim_ = new_dim; }
79 
80  int top_padding() const;
81  int bottom_padding() const;
82 
83  void draw();
84 
85  /** Called by draw_manager to validate layout. */
86  virtual void layout() override;
87 
88  /** Called by draw_manager when it believes a redraw is necessary. */
89  virtual bool expose(const rect& region) override;
90 
91  /** The current draw location of the window, on the screen. */
92  virtual rect screen_location() override;
93 
94  //called by draw
95  void draw_border();
96  void draw_background();
97 
98  //also called by layout with null param
99  rect draw_title(bool actually_draw);
100 
101  void set_dirty(bool dirty = true);
102 
103 private:
105 
106  std::string title_;
108  std::vector<button*>* buttons_;
114  bool dirty_;
115 };
116 
117 }
A top-level drawable item (TLD), such as a window.
A button is a control that can be pushed to start an action or close a dialog.
Definition: button.hpp:52
style(const std::string &p, int br)
Definition: show_dialog.hpp:60
dimension_measurements dim_
std::vector< button * > * buttons_
int top_padding() const
void set_layout(dimension_measurements &new_dim)
Definition: show_dialog.hpp:77
dialog_frame(const std::string &title="", const style &dialog_style=default_style, std::vector< button * > *buttons=nullptr, button *help_button=nullptr)
Definition: show_dialog.cpp:85
static const style default_style
Definition: show_dialog.hpp:67
void set_dirty(bool dirty=true)
dimension_measurements get_layout() const
Definition: show_dialog.hpp:78
static const int title_border_h
Definition: show_dialog.hpp:66
virtual void layout() override
Called by draw_manager to validate layout.
virtual bool expose(const rect &region) override
Called by draw_manager when it believes a redraw is necessary.
virtual rect screen_location() override
The current draw location of the window, on the screen.
std::string title_
const style & dialog_style_
static const int title_border_w
Definition: show_dialog.hpp:66
int bottom_padding() const
rect draw_title(bool actually_draw)
Wrapper class to encapsulate creation and management of an SDL_Texture.
Definition: texture.hpp:33
int w
General purpose widgets.
DIALOG_RESULT
Definition: show_dialog.hpp:31
@ DIALOG_FORWARD
Definition: show_dialog.hpp:33
@ DELETE_ITEM
Definition: show_dialog.hpp:35
@ DIALOG_BACK
Definition: show_dialog.hpp:32
@ CLOSE_DIALOG
Definition: show_dialog.hpp:38
@ CONTINUE_DIALOG
Definition: show_dialog.hpp:37
@ ESCAPE_DIALOG
Definition: show_dialog.hpp:36
@ CREATE_ITEM
Definition: show_dialog.hpp:34
const int ButtonHPadding
Definition: show_dialog.cpp:49
const int ButtonVPadding
Definition: show_dialog.cpp:50
bool in_dialog()
Definition: show_dialog.cpp:60
structure which will hide all current floating labels, and cause floating labels instantiated after i...
An abstract description of a rectangle with integer coordinates.
Definition: rect.hpp:47
mock_party p
#define h