mirror of
https://github.com/SatDump/SatDump
synced 2026-08-13 17:47:30 -04:00
73 lines
No EOL
2 KiB
C++
73 lines
No EOL
2 KiB
C++
#pragma once
|
|
|
|
/**
|
|
* @file dsp_flowgraph_handler.h
|
|
* @brief DSP Flowgraph Handler for use in the GUI
|
|
*/
|
|
|
|
#include "dsp/flowgraph/flowgraph.h"
|
|
#include "handlers/handler.h"
|
|
#include "imgui/imnodes/imnodes_internal.h"
|
|
#include "utils/imgui_context_wrapper.h"
|
|
#include "utils/task_queue.h"
|
|
|
|
namespace satdump
|
|
{
|
|
namespace handlers
|
|
{
|
|
/**
|
|
* @brief DSP Flowgraph handler
|
|
* Holds a flowgraph and handles all rendering
|
|
* and controls.
|
|
*
|
|
* Also handles saving/loading graphs in CBOR format.
|
|
*/
|
|
class DSPFlowGraphHandler : public Handler
|
|
{
|
|
public:
|
|
/**
|
|
* @brief Constructor, optionally loading an existing flowgraph.
|
|
* @param file optional file to load
|
|
*/
|
|
DSPFlowGraphHandler(std::string file = "");
|
|
|
|
/**
|
|
* @brief Destructor
|
|
*/
|
|
~DSPFlowGraphHandler();
|
|
|
|
private:
|
|
//! @brief Context for zoom
|
|
ImNodesContext *imnode_ctx = nullptr;
|
|
ContainedContext ctx;
|
|
|
|
//! @brief Currently open file
|
|
std::string current_file = "";
|
|
|
|
//! @brief Actual flowgraph
|
|
ndsp::flowgraph::Flowgraph flowgraph;
|
|
|
|
//! @brief Thread the flowgraph runs in
|
|
std::thread flow_thread;
|
|
|
|
//! @brief Task queue for async save/load etc
|
|
TaskQueue tq;
|
|
|
|
//! @brief Node search string
|
|
std::string node_search = "";
|
|
|
|
private:
|
|
//! @brief Name of variable to add
|
|
std::string to_add_var_name;
|
|
|
|
public:
|
|
void drawMenu();
|
|
void drawContents(ImVec2 win_size);
|
|
void drawMenuBar();
|
|
|
|
std::string getName() { return current_file == "" ? "DSP Flowgraph" : std::filesystem::path(current_file).stem().string(); }
|
|
|
|
std::string getID() { return "dsp_flowgraph_handler"; }
|
|
};
|
|
} // namespace handlers
|
|
} // namespace satdump
|