mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-07-13 03:01:48 +08:00
49 lines
873 B
C++
49 lines
873 B
C++
#ifndef BUSYCURSORJOB_HPP
|
|
#define BUSYCURSORJOB_HPP
|
|
|
|
#include "Job.hpp"
|
|
|
|
#include <wx/utils.h>
|
|
|
|
namespace Slic3r { namespace GUI {
|
|
|
|
struct CursorSetterRAII
|
|
{
|
|
Job::Ctl &ctl;
|
|
CursorSetterRAII(Job::Ctl &c) : ctl{c}
|
|
{
|
|
ctl.call_on_main_thread([] { wxBeginBusyCursor(); });
|
|
}
|
|
~CursorSetterRAII()
|
|
{
|
|
ctl.call_on_main_thread([] { wxEndBusyCursor(); });
|
|
}
|
|
};
|
|
|
|
template<class JobSubclass>
|
|
class BusyCursored: public Job {
|
|
JobSubclass m_job;
|
|
|
|
public:
|
|
template<class... Args>
|
|
BusyCursored(Args &&...args) : m_job{std::forward<Args>(args)...}
|
|
{}
|
|
|
|
void process(Ctl &ctl) override
|
|
{
|
|
CursorSetterRAII cursor_setter{ctl};
|
|
m_job.process(ctl);
|
|
}
|
|
|
|
void finalize(bool canceled, std::exception_ptr &eptr) override
|
|
{
|
|
m_job.finalize(canceled, eptr);
|
|
}
|
|
};
|
|
|
|
|
|
}
|
|
}
|
|
|
|
#endif // BUSYCURSORJOB_HPP
|