The Battle for Wesnoth
1.21.0-dev
Loading...
Searching...
No Matches
gui
widgets
spinner.hpp
Go to the documentation of this file.
1
/*
2
Copyright (C) 2023 - 2025
3
by babaissarkar(Subhraman Sarkar) <sbmskmm@protonmail.com>
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
#include "
gui/widgets/container_base.hpp
"
19
20
#include "
gui/core/widget_definition.hpp
"
21
#include "
gui/core/window_builder.hpp
"
22
23
#include "
gui/widgets/text_box.hpp
"
24
25
26
namespace
gui2
27
{
28
29
// ------------ WIDGET -----------{
30
31
32
namespace
implementation
33
{
34
struct
builder_spinner;
35
}
36
37
class
spinner
:
public
container_base
38
{
39
friend
struct
implementation::builder_spinner
;
40
41
public
:
42
explicit
spinner
(
const
implementation::builder_spinner
& builder);
43
44
/** See @ref container_base::set_self_active. */
45
virtual
void
set_self_active
(
const
bool
active)
override
;
46
47
/***** ***** ***** setters / getters for members ***** ****** *****/
48
49
/** See @ref styled_widget::get_active. */
50
virtual
bool
get_active
()
const override
;
51
52
/** See @ref styled_widget::get_state. */
53
virtual
unsigned
get_state
()
const override
;
54
55
bool
can_wrap
()
const override
;
56
57
void
set_value
(
const
int
val);
58
59
int
get_value
();
60
61
void
prev
()
62
{
63
// Allow negatives?
64
if
(
get_value
() > 0) {
65
set_value
(
get_value
() -
step_size_
);
66
}
else
{
67
if
(
invalid_
) {
68
set_value
(0);
69
}
70
}
71
}
72
73
void
next
()
74
{
75
int
val =
get_value
();
76
if
(!
invalid_
) {
77
// No max value
78
set_value
(val +
step_size_
);
79
}
else
{
80
set_value
(0);
81
}
82
}
83
84
private
:
85
/**
86
* Possible states of the widget.
87
*
88
* Note the order of the states must be the same as defined in settings.hpp.
89
*/
90
enum
state_t
{
91
ENABLED
,
92
DISABLED
,
93
};
94
95
// It's not needed for now so keep it disabled, no definition exists yet.
96
// void set_state(const state_t state);
97
98
/**
99
* Current state of the widget.
100
*
101
* The state of the widget determines what to render and how the widget
102
* reacts to certain 'events'.
103
*/
104
state_t
state_
;
105
106
/** The grid that holds the content. */
107
std::unique_ptr<grid>
content_grid_
;
108
109
int
step_size_
;
110
111
/** If the entered data is invalid. */
112
bool
invalid_
;
113
114
text_box
*
get_internal_text_box
();
115
116
void
finalize_setup
();
117
118
public
:
119
/** Static type getter that does not rely on the widget being constructed. */
120
static
const
std::string&
type
();
121
122
private
:
123
/***** ***** ***** inherited ****** *****/
124
125
/** Inherited from styled_widget, implemented by REGISTER_WIDGET. */
126
virtual
const
std::string&
get_control_type
()
const override
;
127
128
/***** ***** ***** signal handlers ***** ****** *****/
129
130
void
signal_handler_left_button_down
(
const
event::ui_event
event);
131
};
132
133
// }---------- DEFINITION ---------{
134
135
struct
spinner_definition
:
public
styled_widget_definition
136
{
137
explicit
spinner_definition
(
const
config
&
cfg
);
138
139
struct
resolution
:
public
resolution_definition
140
{
141
explicit
resolution
(
const
config
&
cfg
);
142
143
builder_grid_ptr
grid
;
144
};
145
};
146
147
// }---------- BUILDER -----------{
148
149
namespace
implementation
150
{
151
152
struct
builder_spinner
:
public
builder_styled_widget
153
{
154
explicit
builder_spinner
(
const
config
&
cfg
);
155
156
using
builder_styled_widget::build
;
157
158
virtual
std::unique_ptr<widget>
build
()
const override
;
159
};
160
161
}
// namespace implementation
162
163
// }------------ END --------------
164
165
}
// namespace gui2
config
A config object defines a single node in a WML file, with access to child nodes.
Definition
config.hpp:157
gui2::container_base
A generic container base class.
Definition
container_base.hpp:32
gui2::spinner
Definition
spinner.hpp:38
gui2::spinner::prev
void prev()
Definition
spinner.hpp:61
gui2::spinner::invalid_
bool invalid_
If the entered data is invalid.
Definition
spinner.hpp:112
gui2::spinner::next
void next()
Definition
spinner.hpp:73
gui2::spinner::content_grid_
std::unique_ptr< grid > content_grid_
The grid that holds the content.
Definition
spinner.hpp:107
gui2::spinner::get_value
int get_value()
Definition
spinner.cpp:64
gui2::spinner::state_
state_t state_
Current state of the widget.
Definition
spinner.hpp:104
gui2::spinner::finalize_setup
void finalize_setup()
Definition
spinner.cpp:90
gui2::spinner::step_size_
int step_size_
Definition
spinner.hpp:109
gui2::spinner::set_value
void set_value(const int val)
Definition
spinner.cpp:56
gui2::spinner::signal_handler_left_button_down
void signal_handler_left_button_down(const event::ui_event event)
Definition
spinner.cpp:119
gui2::spinner::get_active
virtual bool get_active() const override
See styled_widget::get_active.
Definition
spinner.cpp:104
gui2::spinner::get_internal_text_box
text_box * get_internal_text_box()
Definition
spinner.cpp:51
gui2::spinner::can_wrap
bool can_wrap() const override
See widget::can_wrap.
Definition
spinner.cpp:114
gui2::spinner::get_control_type
virtual const std::string & get_control_type() const override
Inherited from styled_widget, implemented by REGISTER_WIDGET.
gui2::spinner::type
static const std::string & type()
Static type getter that does not rely on the widget being constructed.
gui2::spinner::state_t
state_t
Possible states of the widget.
Definition
spinner.hpp:90
gui2::spinner::DISABLED
@ DISABLED
Definition
spinner.hpp:92
gui2::spinner::ENABLED
@ ENABLED
Definition
spinner.hpp:91
gui2::spinner::set_self_active
virtual void set_self_active(const bool active) override
See container_base::set_self_active.
Definition
spinner.cpp:99
gui2::spinner::get_state
virtual unsigned get_state() const override
See styled_widget::get_state.
Definition
spinner.cpp:109
gui2::text_box
A widget that allows the user to input text in single line.
Definition
text_box.hpp:125
container_base.hpp
cfg
const config * cfg
Definition
faction_select.cpp:44
gui2::event::ui_event
ui_event
The event sent to the dispatcher.
Definition
handler.hpp:115
gui2
Generic file dialog.
Definition
draw_manager.hpp:21
gui2::builder_grid_ptr
std::shared_ptr< builder_grid > builder_grid_ptr
Definition
window_builder.hpp:146
implementation
Contains the implementation details for lexical_cast and shouldn't be used directly.
gui2::implementation::builder_spinner
Definition
spinner.hpp:153
gui2::implementation::builder_spinner::build
virtual std::unique_ptr< widget > build() const override
Definition
spinner.cpp:157
gui2::implementation::builder_styled_widget
Definition
styled_widget.hpp:514
gui2::implementation::builder_styled_widget::build
virtual std::unique_ptr< widget > build() const=0
gui2::resolution_definition
Definition
widget_definition.hpp:50
gui2::spinner_definition::resolution
Definition
spinner.hpp:140
gui2::spinner_definition::resolution::grid
builder_grid_ptr grid
Definition
spinner.hpp:143
gui2::spinner_definition
Definition
spinner.hpp:136
gui2::styled_widget_definition
Definition
widget_definition.hpp:84
text_box.hpp
widget_definition.hpp
window_builder.hpp
Generated by
1.9.8