RunicVTT Open Source Virtual Tabletop for TTRPG using P2P
Loading...
Searching...
No Matches
NoteEditorUI.h
Go to the documentation of this file.
1#pragma once
2#include "NotesManager.h"
3#include "imgui.h"
4#include "MarkdownRenderer.h"
5#include <vector>
6#include <unordered_map>
7#include <memory>
8#include "ImGuiToaster.h"
9#include "ChatManager.h"
10#include "UiTypingGuard.h"
11
13{
14public:
15 NoteEditorUI(std::shared_ptr<NotesManager> notes_manager, std::shared_ptr<ImGuiToaster> toaster);
16
17 void render();
18 void openNoteTab(const std::string& uuid);
19 void setActiveTable(std::optional<std::string> tableName);
20
21 void setVisible(bool v)
22 {
23 visible_ = v;
24 }
25 bool isVisible() const
26 {
27 return visible_;
28 }
29
30 bool openTabByUuid(const std::string& uuid);
31 void setChatManager(std::shared_ptr<ChatManager> chat_manager)
32 {
33 this->chat_manager = chat_manager;
34 }
35
36private:
37 std::shared_ptr<NotesManager> notes_manager;
38 std::shared_ptr<ImGuiToaster> toaster_;
39 std::shared_ptr<ChatManager> chat_manager;
41 bool visible_ = false;
42 float leftWidth_ = 260.f;
43
44 bool showCreatePopup_ = false;
45 bool showDeletePopup_ = false;
46 std::string pendingDeleteUuid_;
47
48 char createTitle_[128] = {0};
49 char createAuthor_[128] = {0};
50
51 std::vector<std::string> openTabs_; // UUIDs
53
54 struct TabState
55 {
56 std::string editBuffer;
57 bool bufferInit = false;
58 };
59 std::unordered_map<std::string, TabState> tabState_;
60
61 char searchBuf_[128] = {0};
62
63 void renderDirectory_(float height);
64 void renderTabsArea_(float width, float height);
65 void renderOneTab_(const std::string& uuid, float availW, float availH);
66
67 void actCreateNote_();
68 void actSaveNote_(const std::string& uuid);
69 void actDeleteNote_(const std::string& uuid);
70 void actSaveInboxToLocal_(const std::string& uuid);
71 void toggleOpenEditor_(const std::string& uuid);
72
73 void addTabIfMissing_(const std::string& uuid);
74 void openOrFocusTab(const std::string& uuid);
75 void closeTab_(int tabIndex);
76 bool filterMatch_(const Note& n) const;
77};
void actCreateNote_()
void setChatManager(std::shared_ptr< ChatManager > chat_manager)
void actSaveNote_(const std::string &uuid)
void setActiveTable(std::optional< std::string > tableName)
std::shared_ptr< ChatManager > chat_manager
std::shared_ptr< ImGuiToaster > toaster_
void renderTabsArea_(float width, float height)
void renderOneTab_(const std::string &uuid, float availW, float availH)
void toggleOpenEditor_(const std::string &uuid)
void closeTab_(int tabIndex)
void renderDirectory_(float height)
void actDeleteNote_(const std::string &uuid)
MarkdownRenderer md_
std::unordered_map< std::string, TabState > tabState_
std::vector< std::string > openTabs_
NoteEditorUI(std::shared_ptr< NotesManager > notes_manager, std::shared_ptr< ImGuiToaster > toaster)
char createAuthor_[128]
void addTabIfMissing_(const std::string &uuid)
bool filterMatch_(const Note &n) const
void actSaveInboxToLocal_(const std::string &uuid)
bool showCreatePopup_
void openNoteTab(const std::string &uuid)
std::shared_ptr< NotesManager > notes_manager
char searchBuf_[128]
bool isVisible() const
void openOrFocusTab(const std::string &uuid)
char createTitle_[128]
void setVisible(bool v)
bool openTabByUuid(const std::string &uuid)
bool showDeletePopup_
std::string pendingDeleteUuid_