Files
viseq/src/app-manager.h
T
2026-01-12 00:16:36 +01:00

45 lines
1.1 KiB
C++

#pragma once
#include "interaction-manager.h"
#include "nlohmann/json.hpp"
#include "canvas.h"
#include "graph-manager.h"
#include "midi-node.h"
#include "signal-manager.h"
#include "state.h"
#include "ui.h"
#include <memory>
using json = nlohmann::json;
namespace VISEQ::APP {
class AppManager{
public:
AppManager() : im(gm->getPtr(), sm->getPtr(), canvas), ui(sm->getPtr(), gm->getPtr()) {}
std::mutex mutex;
std::shared_ptr<APP::State> state = APP::State::get();
std::shared_ptr<CANVAS::Canvas> canvas = std::make_shared<CANVAS::Canvas>();
std::shared_ptr<GraphManager> gm = std::make_shared<GraphManager>();
std::shared_ptr<SIGNAL::SignalManager> sm = std::make_shared<SIGNAL::SignalManager>(gm->getPtr(), &mutex);
VISEQ::INTERACTION::InteractionManager im;
UI::AppUI ui;
void init();
void close();
void startSignals();
void loadState();
void updateMidiPorts();
void update();
void draw();
void drawUI();
};
NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(AppManager, gm, sm)
}