Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
scoped_juce_qapplication.h
1// SPDX-FileCopyrightText: © 2025 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#pragma once
5
6#include <QObject>
7#include <QTimer>
8
9#include "helpers/scoped_qcoreapplication.h"
10
11#include <juce_wrapper.h>
12
13namespace zrythm::test_helpers
14{
20class ScopedJuceQApplication : public ScopedQCoreApplication
21{
22public:
23 ScopedJuceQApplication ()
24 {
25 QObject::connect (&timer_, &QTimer::timeout, qApp, [] () {
26 juce::MessageManager::getInstance ()->runDispatchLoopUntil (10);
27 });
28 timer_.start ();
29 juce::MessageManager::getInstance ()->runDispatchLoopUntil (0);
30 }
31 ~ScopedJuceQApplication () = default;
32 ScopedJuceQApplication (const ScopedJuceQApplication &) = delete;
33 ScopedJuceQApplication &operator= (const ScopedJuceQApplication &) = delete;
34 ScopedJuceQApplication (ScopedJuceQApplication &&) = delete;
35 ScopedJuceQApplication &operator= (ScopedJuceQApplication &&) = delete;
36
37private:
38 juce::ScopedJuceInitialiser_GUI initializer_;
39 QTimer timer_;
40};
41
42}