neoGFX
Cross-platform C++ app/game engine
Loading...
Searching...
No Matches
modal_task.hpp
Go to the documentation of this file.
1
// modal_task.hpp
2
/*
3
neogfx C++ App/Game Engine
4
Copyright (c) 2015, 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/event_processing_context.hpp
>
24
#include <
neogfx/gui/widget/i_widget.hpp
>
25
#include <
neogfx/gui/window/i_window.hpp
>
26
27
namespace
neogfx
28
{
29
template
<
typename
T,
typename
... TaskArgs>
30
inline
T
modal_task
(
i_widget
& aParent, std::string
const
& aTaskName, TaskArgs&&... aTaskArgs)
31
{
32
aParent.
root
().
modal_enable
(
false
);
33
auto
result = std::async(std::forward<TaskArgs>(aTaskArgs)...);
34
event_processing_context
epc{ aTaskName };
35
while
(result.wait_for(std::chrono::seconds{ 0 }) != std::future_status::ready)
36
epc.
process_events
();
37
aParent.
root
().
modal_enable
(
true
);
38
return
result.get();
39
}
40
}
neogfx::event_processing_context
Definition
event_processing_context.hpp:30
neogfx::event_processing_context::process_events
bool process_events() override
neogfx::i_widget
Definition
i_widget.hpp:50
neogfx::i_widget::root
virtual const i_window & root() const =0
neogfx::i_window::modal_enable
virtual void modal_enable(bool aEnable)=0
event_processing_context.hpp
i_widget.hpp
i_window.hpp
neogfx
Definition
action.hpp:28
neogfx::modal_task
T modal_task(i_widget &aParent, std::string const &aTaskName, TaskArgs &&... aTaskArgs)
Definition
modal_task.hpp:30
neogfx.hpp
include
neogfx
app
modal_task.hpp
Generated by
1.9.8