43 lines
928 B
C++
43 lines
928 B
C++
/*
|
|
* Copyright 2016 - 2025 Gary Talent (gary@drinkingtea.net). All rights reserved.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <ox/event/signal.hpp>
|
|
#include <ox/std/memory.hpp>
|
|
|
|
#include <studio/widget.hpp>
|
|
#include "projecttreemodel.hpp"
|
|
|
|
namespace studio {
|
|
|
|
class ProjectExplorer: public Widget {
|
|
private:
|
|
ox::UPtr<ProjectTreeModel> m_treeModel;
|
|
turbine::Context &m_ctx;
|
|
|
|
public:
|
|
// slots
|
|
ox::Signal<ox::Error(ox::StringViewCR)> fileChosen;
|
|
ox::Signal<ox::Error(ox::StringViewCR)> addItem;
|
|
ox::Signal<ox::Error(ox::StringViewCR)> addDir;
|
|
ox::Signal<ox::Error(ox::StringViewCR)> deleteItem;
|
|
|
|
explicit ProjectExplorer(turbine::Context &ctx) noexcept;
|
|
|
|
void draw(StudioContext &ctx) noexcept override;
|
|
|
|
void setModel(ox::UPtr<ProjectTreeModel> &&model) noexcept;
|
|
|
|
ox::Error refreshProjectTreeModel(ox::StringViewCR = {}) noexcept;
|
|
|
|
[[nodiscard]]
|
|
ox::FileSystem *romFs() noexcept {
|
|
return rom(m_ctx);
|
|
}
|
|
|
|
};
|
|
|
|
}
|