neoGFX
Cross-platform C++ app/game engine
Loading...
Searching...
No Matches
settings_dialog.hpp
Go to the documentation of this file.
1
// settings_dialog.hpp
2
/*
3
neogfx C++ App/Game Engine
4
Copyright (c) 2020 Leigh Johnston. All Rights Reserved.
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 3 of the License, or
9
(at your option) any later version.
10
11
This program is distributed in the hope that it will be useful,
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
GNU General Public License for more details.
15
16
You should have received a copy of the GNU General Public License
17
along with this program. If not, see <http://www.gnu.org/licenses/>.
18
*/
19
20
#pragma once
21
22
#include <
neogfx/neogfx.hpp
>
23
#include <
neogfx/app/settings.hpp
>
24
#include <
neogfx/gui/dialog/dialog.hpp
>
25
#include <
neogfx/gui/widget/tree_view.hpp
>
26
#include <
neogfx/gui/widget/framed_widget.hpp
>
27
28
namespace
neogfx
29
{
30
class
i_setting_widget_factory
:
public
i_reference_counted
31
{
32
public
:
33
struct
unsupported_setting_type
: std::runtime_error {
unsupported_setting_type
() : std::runtime_error{
"neogfx::i_setting_widget_factory::unsupported_setting_type"
} {} };
34
public
:
35
typedef
i_setting_widget_factory
abstract_type
;
36
public
:
37
virtual
~i_setting_widget_factory
() =
default
;
38
public
:
39
virtual
void
create_widget
(
neolib::i_setting
& aSetting,
i_layout
& aLayout,
i_string
const
& aFormat,
sink
& aSink,
i_ref_ptr<i_widget>
& aResult)
const
= 0;
40
// helpers
41
public
:
42
ref_ptr<i_widget>
create_widget
(
neolib::i_setting
& aSetting,
i_layout
& aLayout,
i_string
const
& aFormat,
sink
& aSink)
const
43
{
44
ref_ptr<i_widget>
result;
45
create_widget
(aSetting, aLayout, aFormat, aSink, result);
46
return
result;
47
}
48
};
49
50
class
settings_dialog
:
public
dialog
51
{
52
meta_object
(
dialog
)
53
public
:
54
settings_dialog
(
neolib::i_settings
& aSettings,
ref_ptr<i_setting_widget_factory>
aWidgetFactory = {},
ref_ptr<i_setting_icons>
aIcons = {});
55
settings_dialog
(
i_widget
& aParent,
neolib::i_settings
& aSettings,
ref_ptr<i_setting_widget_factory>
aWidgetFactory = {},
ref_ptr<i_setting_icons>
aIcons = {});
56
~settings_dialog
();
57
private
:
58
void
init();
59
private
:
60
neolib::i_settings
& iSettings;
61
62
ref_ptr<i_setting_widget_factory>
iWidgetFactory;
63
ref_ptr<i_setting_icons>
iIcons;
64
sink
iSink;
65
horizontal_layout
iLayout;
66
tree_view
iTree;
67
framed_scrollable_widget
iDetails;
68
vertical_layout
iDetailLayout;
69
texture
iBackground;
70
};
71
}
neogfx::dialog
Definition
dialog.hpp:37
neogfx::horizontal_layout
Definition
horizontal_layout.hpp:29
neogfx::i_layout
Definition
i_layout.hpp:231
neogfx::i_setting_widget_factory
Definition
settings_dialog.hpp:31
neogfx::i_setting_widget_factory::~i_setting_widget_factory
virtual ~i_setting_widget_factory()=default
neogfx::i_setting_widget_factory::create_widget
ref_ptr< i_widget > create_widget(neolib::i_setting &aSetting, i_layout &aLayout, i_string const &aFormat, sink &aSink) const
Definition
settings_dialog.hpp:42
neogfx::i_setting_widget_factory::abstract_type
i_setting_widget_factory abstract_type
Definition
settings_dialog.hpp:35
neogfx::i_setting_widget_factory::create_widget
virtual void create_widget(neolib::i_setting &aSetting, i_layout &aLayout, i_string const &aFormat, sink &aSink, i_ref_ptr< i_widget > &aResult) const =0
neogfx::i_widget
Definition
i_widget.hpp:50
neogfx::scrollable_widget< framed_widget< widget<> > >
neogfx::settings_dialog
Definition
settings_dialog.hpp:51
neogfx::texture
Definition
texture.hpp:35
neogfx::tree_view
Definition
tree_view.hpp:30
neogfx::vertical_layout
Definition
vertical_layout.hpp:27
neolib::i_ref_ptr
Definition
i_reference_counted.hpp:78
neolib::i_reference_counted
Definition
i_reference_counted.hpp:58
neolib::i_setting
Definition
i_setting.hpp:50
neolib::i_settings
Definition
i_settings.hpp:64
neolib::i_string
Definition
i_string.hpp:49
neolib::ref_ptr
Definition
reference_counted.hpp:185
neolib::sink
Definition
i_event.hpp:255
dialog.hpp
framed_widget.hpp
neogfx
Definition
action.hpp:28
settings.hpp
meta_object
#define meta_object(...)
Definition
i_object.hpp:28
neogfx.hpp
neogfx::i_setting_widget_factory::unsupported_setting_type
Definition
settings_dialog.hpp:33
neogfx::i_setting_widget_factory::unsupported_setting_type::unsupported_setting_type
unsupported_setting_type()
Definition
settings_dialog.hpp:33
tree_view.hpp
include
neogfx
gui
dialog
settings_dialog.hpp
Generated by
1.9.8