Skip to content
Snippets Groups Projects
Commit d4e08c0e authored by Elnur Ismailzada's avatar Elnur Ismailzada
Browse files

Renamed Audacity3 classes to Au3

parent 0c006e09
No related branches found
No related tags found
No related merge requests found
Showing
with 100 additions and 101 deletions
......@@ -26,13 +26,11 @@ set(MODULE_SRC
${CMAKE_CURRENT_LIST_DIR}/au3wrapmodule.h
${CMAKE_CURRENT_LIST_DIR}/wxtypes_convert.h
${CMAKE_CURRENT_LIST_DIR}/audacity3project.cpp
${CMAKE_CURRENT_LIST_DIR}/audacity3project.h
${CMAKE_CURRENT_LIST_DIR}/audacity3playback.cpp
${CMAKE_CURRENT_LIST_DIR}/audacity3playback.h
${CMAKE_CURRENT_LIST_DIR}/au3project.cpp
${CMAKE_CURRENT_LIST_DIR}/au3project.h
${CMAKE_CURRENT_LIST_DIR}/iau3wavepainter.h
${CMAKE_CURRENT_LIST_DIR}/iaudacity3playback.h
${CMAKE_CURRENT_LIST_DIR}/iaudacity3audiooutput.h
${CMAKE_CURRENT_LIST_DIR}/iau3playback.h
${CMAKE_CURRENT_LIST_DIR}/iau3audiooutput.h
${CMAKE_CURRENT_LIST_DIR}/mocks/au3settingsmock.cpp
${CMAKE_CURRENT_LIST_DIR}/mocks/au3settingsmock.h
......@@ -49,8 +47,10 @@ set(MODULE_SRC
${CMAKE_CURRENT_LIST_DIR}/internal/au3wavepainter.h
${CMAKE_CURRENT_LIST_DIR}/internal/WaveformScale.cpp
${CMAKE_CURRENT_LIST_DIR}/internal/WaveformScale.h
${CMAKE_CURRENT_LIST_DIR}/internal/audacity3audiooutput.cpp
${CMAKE_CURRENT_LIST_DIR}/internal/audacity3audiooutput.h
${CMAKE_CURRENT_LIST_DIR}/internal/au3playback.cpp
${CMAKE_CURRENT_LIST_DIR}/internal/au3playback.h
${CMAKE_CURRENT_LIST_DIR}/internal/au3audiooutput.cpp
${CMAKE_CURRENT_LIST_DIR}/internal/au3audiooutput.h
)
# ==================================
......
#include "audacity3project.h"
#include "au3project.h"
#include "libraries/lib-project/Project.h"
#include "libraries/lib-project-file-io/ProjectFileIO.h"
......@@ -35,26 +35,26 @@ static au::processing::TrackType trackType(const Track* track)
return au::processing::TrackType::Undefined;
}
struct au::au3::Audacity3ProjectData
struct au::au3::Au3ProjectData
{
std::shared_ptr<AudacityProject> project;
AudacityProject& projectRef() { return *project.get(); }
};
Audacity3Project::Audacity3Project()
Au3Project::Au3Project()
{
m_data = std::make_shared<Audacity3ProjectData>();
m_data = std::make_shared<Au3ProjectData>();
}
std::shared_ptr<Audacity3Project> Audacity3Project::create()
std::shared_ptr<Au3Project> Au3Project::create()
{
std::shared_ptr<Audacity3Project> p = std::make_shared<Audacity3Project>();
std::shared_ptr<Au3Project> p = std::make_shared<Au3Project>();
p->m_data->project = AudacityProject::Create();
return p;
}
bool Audacity3Project::load(const muse::io::path_t& filePath)
bool Au3Project::load(const muse::io::path_t& filePath)
{
auto& projectFileIO = ProjectFileIO::Get(m_data->projectRef());
std::string sstr = filePath.toStdString();
......@@ -70,7 +70,7 @@ bool Audacity3Project::load(const muse::io::path_t& filePath)
return bParseSuccess;
}
bool Audacity3Project::save(const muse::io::path_t& filePath, const bool fromSaveAs)
bool Au3Project::save(const muse::io::path_t& filePath, const bool fromSaveAs)
{
//! TODO AU4
// auto& projectFileIO = ProjectFileIO::Get(m_data->projectRef());
......@@ -81,13 +81,13 @@ bool Audacity3Project::save(const muse::io::path_t& filePath, const bool fromSav
return false;
}
void Audacity3Project::close()
void Au3Project::close()
{
auto& projectFileIO = ProjectFileIO::Get(m_data->projectRef());
projectFileIO.CloseProject();
}
std::string Audacity3Project::title() const
std::string Au3Project::title() const
{
if (!m_data->project) {
return std::string();
......@@ -96,7 +96,7 @@ std::string Audacity3Project::title() const
return wxToStdSting(m_data->project->GetProjectName());
}
muse::async::NotifyList<au::processing::Track> Audacity3Project::trackList() const
muse::async::NotifyList<au::processing::Track> Au3Project::trackList() const
{
muse::async::NotifyList<au::processing::Track> au4tracks;
au4tracks.setNotify(m_trackChangedNotifier.notify());
......@@ -116,7 +116,7 @@ muse::async::NotifyList<au::processing::Track> Audacity3Project::trackList() con
return au4tracks;
}
muse::async::NotifyList<au::processing::Clip> Audacity3Project::clipList(const au::processing::TrackId& trackId) const
muse::async::NotifyList<au::processing::Clip> Au3Project::clipList(const au::processing::TrackId& trackId) const
{
const WaveTrack* waveTrack = DomAccessor::findWaveTrack(m_data->projectRef(), TrackId(trackId));
IF_ASSERT_FAILED(waveTrack) {
......@@ -134,7 +134,7 @@ muse::async::NotifyList<au::processing::Clip> Audacity3Project::clipList(const a
return clips;
}
uintptr_t Audacity3Project::au3ProjectPtr() const
uintptr_t Au3Project::au3ProjectPtr() const
{
return reinterpret_cast<uintptr_t>(m_data->project.get());
}
#ifndef AU_AU3WRAP_AUDACITY3PROJECT_H
#define AU_AU3WRAP_AUDACITY3PROJECT_H
#ifndef AU_AU3WRAP_AU3PROJECT_H
#define AU_AU3WRAP_AU3PROJECT_H
#include <memory>
#include <string>
......@@ -10,14 +10,14 @@
#include "processing/dom/track.h"
namespace au::au3 {
struct Audacity3ProjectData;
class Audacity3Project
struct Au3ProjectData;
class Au3Project
{
public:
Audacity3Project();
Au3Project();
static std::shared_ptr<Audacity3Project> create();
static std::shared_ptr<Au3Project> create();
bool load(const muse::io::path_t& filePath);
bool save(const muse::io::path_t& fileName, const bool fromSaveAs);
......@@ -32,9 +32,9 @@ public:
private:
std::shared_ptr<Audacity3ProjectData> m_data;
std::shared_ptr<Au3ProjectData> m_data;
mutable muse::async::ChangedNotifier<processing::Track> m_trackChangedNotifier;
};
}
#endif // AU_AU3WRAP_AUDACITY3PROJECT_H
#endif // AU_AU3WRAP_AU3PROJECT_H
......@@ -29,12 +29,12 @@
#include "mocks/au3settingsmock.h"
#include "modularity/ioc.h"
#include "internal/wxlogwrap.h"
#include "internal/processinginteraction.h"
#include "internal/au3wavepainter.h"
#include "modularity/ioc.h"
#include "audacity3playback.h"
#include "internal/au3playback.h"
#include "log.h"
......@@ -48,9 +48,9 @@ std::string Au3WrapModule::moduleName() const
void Au3WrapModule::registerExports()
{
m_playback = std::make_shared<Audacity3Playback>();
m_playback = std::make_shared<Au3Playback>();
ioc()->registerExport<IAudacity3Playback>(moduleName(), m_playback);
ioc()->registerExport<IAu3Playback>(moduleName(), m_playback);
ioc()->registerExport<processing::IProcessingInteraction>(moduleName(), new ProcessingInteraction());
ioc()->registerExport<IAu3WavePainter>(moduleName(), new Au3WavePainter());
}
......
......@@ -26,7 +26,7 @@
namespace au::au3 {
class WxLogWrap;
class Audacity3Playback;
class Au3Playback;
class Au3WrapModule : public muse::modularity::IModuleSetup
{
public:
......@@ -40,7 +40,7 @@ private:
WxLogWrap* m_wxLog = nullptr;
std::shared_ptr<Audacity3Playback> m_playback;
std::shared_ptr<Au3Playback> m_playback;
};
}
......
......@@ -13,10 +13,10 @@
#include "playback/audiotypes.h"
namespace au::au3 {
class IAudacity3AudioOutput
class IAu3AudioOutput
{
public:
virtual ~IAudacity3AudioOutput() = default;
virtual ~IAu3AudioOutput() = default;
virtual muse::async::Promise<float> playbackVolume() const = 0;
virtual void setPlaybackVolume(float volume) = 0;
......@@ -25,7 +25,7 @@ public:
virtual muse::async::Promise<au::audio::AudioSignalChanges> playbackSignalChanges() const = 0;
};
using IAudacity3AudioOutputPtr = std::shared_ptr<IAudacity3AudioOutput>;
using IAu3AudioOutputPtr = std::shared_ptr<IAu3AudioOutput>;
}
#endif // AU_AU3WRAP_IAUDACITYAUDIOOUTPUT_H
/*
* Audacity: A Digital Audio Editor
*/
#ifndef AU_AU3WRAP_IAUDACITY3PLAYBACK_H
#define AU_AU3WRAP_IAUDACITY3PLAYBACK_H
#ifndef AU_AU3WRAP_IAU3PLAYBACK_H
#define AU_AU3WRAP_IAU3PLAYBACK_H
#include "global/async/promise.h"
#include "global/async/channel.h"
......@@ -11,14 +11,14 @@
#include "playback/audiotypes.h"
#include "iaudacity3audiooutput.h"
#include "iau3audiooutput.h"
namespace au::au3 {
class IAudacity3Playback : MODULE_EXPORT_INTERFACE
class IAu3Playback : MODULE_EXPORT_INTERFACE
{
INTERFACE_ID(IAudacity3Playback)
INTERFACE_ID(IAu3Playback)
public:
virtual ~IAudacity3Playback() = default;
virtual ~IAu3Playback() = default;
virtual void play() = 0;
virtual void seek(const audio::msecs_t newPositionMsecs) = 0;
......@@ -33,9 +33,9 @@ public:
virtual muse::async::Channel<audio::msecs_t> playbackPositionMsecs() const = 0;
virtual muse::async::Channel<audio::PlaybackStatus> playbackStatusChanged() const = 0;
virtual std::shared_ptr<IAudacity3AudioOutput> audioOutput() const = 0;
virtual std::shared_ptr<IAu3AudioOutput> audioOutput() const = 0;
};
using IAudacity3PlaybackPtr = std::shared_ptr<IAudacity3Playback>;
using IAu3PlaybackPtr = std::shared_ptr<IAu3Playback>;
}
#endif // AU_AU3WRAP_IAUDACITY3PLAYBACK_H
#endif // AU_AU3WRAP_IAU3PLAYBACK_H
......@@ -2,7 +2,7 @@
* Audacity: A Digital Audio Editor
*/
#include "audacity3audiooutput.h"
#include "au3audiooutput.h"
#include "types/ret.h"
#include "global/async/async.h"
......@@ -15,7 +15,7 @@ using namespace muse;
using namespace muse::async;
using namespace au::au3;
muse::async::Promise<au::audio::volume_dbfs_t> Audacity3AudioOutput::playbackVolume() const
muse::async::Promise<au::audio::volume_dbfs_t> Au3AudioOutput::playbackVolume() const
{
return muse::async::Promise<float>([](auto resolve, auto /*reject*/) {
float inputVolume;
......@@ -29,7 +29,7 @@ muse::async::Promise<au::audio::volume_dbfs_t> Audacity3AudioOutput::playbackVol
});
}
void Audacity3AudioOutput::setPlaybackVolume(float volume)
void Au3AudioOutput::setPlaybackVolume(float volume)
{
muse::async::Async::call(this, [this, volume]() {
float inputVolume;
......@@ -45,12 +45,12 @@ void Audacity3AudioOutput::setPlaybackVolume(float volume)
});
}
muse::async::Channel<au::audio::volume_dbfs_t> Audacity3AudioOutput::playbackVolumeChanged() const
muse::async::Channel<au::audio::volume_dbfs_t> Au3AudioOutput::playbackVolumeChanged() const
{
return m_playbackVolumeChanged;
}
muse::async::Promise<au::audio::AudioSignalChanges> Audacity3AudioOutput::playbackSignalChanges() const
muse::async::Promise<au::audio::AudioSignalChanges> Au3AudioOutput::playbackSignalChanges() const
{
return muse::async::Promise<audio::AudioSignalChanges>([](auto, auto reject) {
muse::Ret ret = make_ret(muse::Ret::Code::NotImplemented);
......
......@@ -2,15 +2,15 @@
* Audacity: A Digital Audio Editor
*/
#ifndef AU_AU3WRAP_AUDIOOUTPUT_H
#define AU_AU3WRAP_AUDIOOUTPUT_H
#ifndef AU_AU3WRAP_AU3AUDIOOUTPUT_H
#define AU_AU3WRAP_AU3AUDIOOUTPUT_H
#include "global/async/asyncable.h"
#include "../iaudacity3audiooutput.h"
#include "../iau3audiooutput.h"
namespace au::au3 {
class Audacity3AudioOutput : public IAudacity3AudioOutput, public muse::async::Asyncable
class Au3AudioOutput : public IAu3AudioOutput, public muse::async::Asyncable
{
public:
muse::async::Promise<float> playbackVolume() const override;
......@@ -24,4 +24,4 @@ private:
};
}
#endif // AU_AU3WRAP_AUDIOOUTPUT_H
#endif // AU_AU3WRAP_AU3AUDIOOUTPUT_H
/*
* Audacity: A Digital Audio Editor
*/
#include "audacity3playback.h"
#include "au3playback.h"
#include "libraries/lib-time-frequency-selection/SelectedRegion.h"
#include "libraries/lib-track/Track.h"
......@@ -14,18 +14,18 @@
#include "wxtypes_convert.h"
#include "internal/audacity3audiooutput.h"
#include "internal/au3audiooutput.h"
#include "log.h"
using namespace au::au3;
void Audacity3Playback::init()
void Au3Playback::init()
{
m_audioOutputPtr = std::make_shared<Audacity3AudioOutput>();
m_audioOutputPtr = std::make_shared<Au3AudioOutput>();
}
void Audacity3Playback::play()
void Au3Playback::play()
{
//! NOTE: copied from ProjectAudioManager::PlayPlayRegion
......@@ -186,7 +186,7 @@ void Audacity3Playback::play()
}
}
void Audacity3Playback::seek(const audio::msecs_t newPositionMsecs)
void Au3Playback::seek(const audio::msecs_t newPositionMsecs)
{
AudacityProject& project = projectRef();
......@@ -194,7 +194,7 @@ void Audacity3Playback::seek(const audio::msecs_t newPositionMsecs)
playRegion.SetStart(newPositionMsecs);
}
void Audacity3Playback::stop()
void Au3Playback::stop()
{
//! NOTE: copied from ProjectAudioManager::Stop
bool stopStream = true;
......@@ -217,7 +217,7 @@ void Audacity3Playback::stop()
gAudioIO->SetPaused(false);
}
void Audacity3Playback::pause()
void Au3Playback::pause()
{
if (!canStopAudioStream()) {
return;
......@@ -228,7 +228,7 @@ void Audacity3Playback::pause()
gAudioIO->SetPaused(true);
}
void Audacity3Playback::resume()
void Au3Playback::resume()
{
if (!canStopAudioStream()) {
return;
......@@ -239,13 +239,13 @@ void Audacity3Playback::resume()
gAudioIO->SetPaused(false);
}
void Audacity3Playback::setDuration(const audio::msecs_t durationMsec)
void Au3Playback::setDuration(const audio::msecs_t durationMsec)
{
UNUSED(durationMsec);
NOT_IMPLEMENTED;
}
muse::async::Promise<bool> Audacity3Playback::setLoop(const audio::msecs_t fromMsec, const audio::msecs_t toMsec)
muse::async::Promise<bool> Au3Playback::setLoop(const audio::msecs_t fromMsec, const audio::msecs_t toMsec)
{
UNUSED(fromMsec);
UNUSED(toMsec);
......@@ -257,32 +257,32 @@ muse::async::Promise<bool> Audacity3Playback::setLoop(const audio::msecs_t fromM
});
}
void Audacity3Playback::resetLoop()
void Au3Playback::resetLoop()
{
}
muse::async::Channel<au::audio::msecs_t> Audacity3Playback::playbackPositionMsecs() const
muse::async::Channel<au::audio::msecs_t> Au3Playback::playbackPositionMsecs() const
{
return m_playbackPositionMsecsChanged;
}
muse::async::Channel<au::audio::PlaybackStatus> Audacity3Playback::playbackStatusChanged() const
muse::async::Channel<au::audio::PlaybackStatus> Au3Playback::playbackStatusChanged() const
{
return m_playbackStatusChanged;
}
IAudacity3AudioOutputPtr Audacity3Playback::audioOutput() const
IAu3AudioOutputPtr Au3Playback::audioOutput() const
{
return m_audioOutputPtr;
}
AudacityProject& Audacity3Playback::projectRef() const
AudacityProject& Au3Playback::projectRef() const
{
AudacityProject* project = reinterpret_cast<AudacityProject*>(globalContext()->currentProject()->au3ProjectPtr());
return *project;
}
bool Audacity3Playback::canStopAudioStream() const
bool Au3Playback::canStopAudioStream() const
{
auto gAudioIO = AudioIO::Get();
AudacityProject& project = projectRef();
......@@ -291,7 +291,7 @@ bool Audacity3Playback::canStopAudioStream() const
|| gAudioIO->GetOwningProject().get() == &project;
}
TransportSequences Audacity3Playback::makeTransportTracks(TrackList& trackList, bool selectedOnly, bool nonWaveToo)
TransportSequences Au3Playback::makeTransportTracks(TrackList& trackList, bool selectedOnly, bool nonWaveToo)
{
TransportSequences result;
{
......
/*
* Audacity: A Digital Audio Editor
*/
#ifndef AU_AU3WRAP_AUDACITY3PLAYBACK_H
#define AU_AU3WRAP_AUDACITY3PLAYBACK_H
#ifndef AU_AU3WRAP_AU3PLAYBACK_H
#define AU_AU3WRAP_AU3PLAYBACK_H
#include "async/asyncable.h"
......@@ -10,15 +10,15 @@
#include "actions/iactionsdispatcher.h"
#include "context/iglobalcontext.h"
#include "iaudacity3playback.h"
#include "iaudacity3audiooutput.h"
#include "iau3playback.h"
#include "iau3audiooutput.h"
class AudacityProject;
class TrackList;
struct TransportSequences;
namespace au::au3 {
class Audacity3Playback : public IAudacity3Playback, public muse::async::Asyncable
class Au3Playback : public IAu3Playback, public muse::async::Asyncable
{
muse::Inject<au::context::IGlobalContext> globalContext;
......@@ -38,7 +38,7 @@ public:
muse::async::Channel<audio::msecs_t> playbackPositionMsecs() const override;
muse::async::Channel<audio::PlaybackStatus> playbackStatusChanged() const override;
IAudacity3AudioOutputPtr audioOutput() const override;
IAu3AudioOutputPtr audioOutput() const override;
private:
AudacityProject& projectRef() const;
......@@ -49,8 +49,8 @@ private:
mutable muse::async::Channel<audio::msecs_t> m_playbackPositionMsecsChanged;
mutable muse::async::Channel<audio::PlaybackStatus> m_playbackStatusChanged;
IAudacity3AudioOutputPtr m_audioOutputPtr;
IAu3AudioOutputPtr m_audioOutputPtr;
};
}
#endif // AU_AU3WRAP_AUDACITY3PLAYBACK_H
#endif // AU_AU3WRAP_AU3PLAYBACK_H
......@@ -11,7 +11,7 @@
#include "context/iglobalcontext.h"
#include "iinteractive.h"
#include "au3wrap/iaudacity3playback.h"
#include "au3wrap/iau3playback.h"
#include "../iplaybackcontroller.h"
......@@ -21,7 +21,7 @@ class PlaybackController : public IPlaybackController, public muse::actions::Act
INJECT_STATIC(muse::actions::IActionsDispatcher, dispatcher)
INJECT_STATIC(au::context::IGlobalContext, globalContext)
INJECT_STATIC(muse::IInteractive, interactive)
INJECT_STATIC(au3::IAudacity3Playback, au3Playback)
INJECT_STATIC(au3::IAu3Playback, au3Playback)
public:
void init();
......
......@@ -7,7 +7,7 @@
#include <QString>
#include "modularity/ioc.h"
#include "au3wrap/iaudacity3playback.h"
#include "au3wrap/iau3playback.h"
#include "playbacktoolbarabstractitem.h"
......@@ -18,7 +18,7 @@ class PlaybackToolBarLevelItem : public PlaybackToolBarAbstractItem
Q_PROPERTY(int level READ level WRITE setLevel NOTIFY levelChanged FINAL)
muse::Inject<au3::IAudacity3Playback> playback;
muse::Inject<au3::IAu3Playback> playback;
public:
explicit PlaybackToolBarLevelItem(const muse::ui::UiAction& action, const ItemType& type, QObject* parent = nullptr);
......
#include "processingproject.h"
#include "au3wrap/audacity3project.h"
#include "au3wrap/au3project.h"
#include "log.h"
......@@ -9,7 +9,7 @@ using namespace au::processing;
ProcessingProject::ProcessingProject() {}
void ProcessingProject::setAudacity3Project(std::shared_ptr<au::au3::Audacity3Project> au3)
void ProcessingProject::setAudacity3Project(std::shared_ptr<au::au3::Au3Project> au3)
{
m_au3 = au3;
}
......
......@@ -8,7 +8,7 @@
#include "track.h"
namespace au::au3 {
class Audacity3Project;
class Au3Project;
}
namespace au::processing {
......@@ -18,8 +18,8 @@ class ProcessingProject
public:
ProcessingProject();
void setAudacity3Project(std::shared_ptr<au::au3::Audacity3Project> au3);
const std::shared_ptr<au::au3::Audacity3Project>& audacity3Project() const { return m_au3; }
void setAudacity3Project(std::shared_ptr<au::au3::Au3Project> au3);
const std::shared_ptr<au::au3::Au3Project>& audacity3Project() const { return m_au3; }
muse::async::NotifyList<Track> trackList() const;
muse::async::NotifyList<Clip> clipList(const TrackId& trackId) const;
......@@ -31,7 +31,7 @@ public:
private:
std::shared_ptr<au::au3::Audacity3Project> m_au3;
std::shared_ptr<au::au3::Au3Project> m_au3;
mutable std::map<TrackId, muse::async::ChangedNotifier<Clip>> m_clipsChanged;
};
......
#include "audacityproject.h"
#include "au3wrap/audacity3project.h"
#include "au3wrap/au3project.h"
#include "iprojectautosaver.h"
#include "projecterrors.h"
#include "global/io/ioretcodes.h"
......@@ -61,7 +61,7 @@ muse::Ret Audacity4Project::doLoad(const io::path_t& path, bool forceMode, const
UNUSED(forceMode);
UNUSED(format);
m_au3Project = au3::Audacity3Project::create();
m_au3Project = au3::Au3Project::create();
bool isLoaded = m_au3Project->load(path);
if (!isLoaded) {
LOGE() << "Failed load:" << path;
......
......@@ -2,12 +2,12 @@
#define AU_PROJECT_AUDACITYPROJECT_H
#include "../iaudacityproject.h"
#include "au3wrap/audacity3project.h"
#include "au3wrap/au3project.h"
#include "modularity/ioc.h"
#include "io/ifilesystem.h"
namespace au::au3 {
class Audacity3Project;
class Au3Project;
}
namespace au::project {
......@@ -27,7 +27,7 @@ namespace au::project {
//!
//! There is also a project from AU3 (::AudacityProject),
//! through which we receive a lot of data using the AU3 implementation.
//! And a wrapper in AU4 for this project (au::au3::Audacity3Project)
//! And a wrapper in AU4 for this project (au::au3::Au3Project)
//! A wrapper is needed for two reasons:
//! * Technical - the AU3 code is strongly linked at the linking level,
//! it cannot be used in parts, therefore, to avoid duplication of symbols,
......@@ -85,7 +85,7 @@ private:
bool m_isImported = false;
bool m_needAutoSave = false;
std::shared_ptr<au::au3::Audacity3Project> m_au3Project;
std::shared_ptr<au::au3::Au3Project> m_au3Project;
au::processing::ProcessingProjectPtr m_processingProject;
};
......
......@@ -20,7 +20,6 @@ public:
void registerExports() override;
void resolveImports() override;
void registerUiTypes() override;
void registerResources() override;
void onInit(const muse::IApplication::RunMode& mode) override;
private:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment