add ManageKeyboardShortcuts to MasterEditor
This commit is contained in:
@@ -79,22 +79,6 @@ bool BeginCentered(const char* name) {
|
|||||||
return ImGui::Begin(name, nullptr, flags);
|
return ImGui::Begin(name, nullptr, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Function to switch the active tab in a tab bar
|
|
||||||
void SetTabBarTab(ImGuiTabBar* tab_bar, ImGuiID tab_id) {
|
|
||||||
if (tab_bar == NULL) return;
|
|
||||||
|
|
||||||
// Find the tab item with the specified tab_id
|
|
||||||
ImGuiTabItem* tab_item = &tab_bar->Tabs[tab_id];
|
|
||||||
tab_item->LastFrameVisible = -1;
|
|
||||||
tab_item->LastFrameSelected = -1;
|
|
||||||
tab_bar->VisibleTabId = tab_id;
|
|
||||||
tab_bar->VisibleTabWasSubmitted = true;
|
|
||||||
tab_bar->SelectedTabId = tab_id;
|
|
||||||
tab_bar->NextSelectedTabId = tab_id;
|
|
||||||
tab_bar->ReorderRequestTabId = tab_id;
|
|
||||||
tab_bar->CurrFrameVisible = -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool IsEditorActive(Editor* editor, std::vector<Editor*>& active_editors) {
|
bool IsEditorActive(Editor* editor, std::vector<Editor*>& active_editors) {
|
||||||
return std::find(active_editors.begin(), active_editors.end(), editor) !=
|
return std::find(active_editors.begin(), active_editors.end(), editor) !=
|
||||||
active_editors.end();
|
active_editors.end();
|
||||||
@@ -115,6 +99,8 @@ void MasterEditor::SetupScreen(std::shared_ptr<SDL_Renderer> renderer,
|
|||||||
absl::Status MasterEditor::Update() {
|
absl::Status MasterEditor::Update() {
|
||||||
NewMasterFrame();
|
NewMasterFrame();
|
||||||
|
|
||||||
|
ManageKeyboardShortcuts();
|
||||||
|
|
||||||
DrawYazeMenu();
|
DrawYazeMenu();
|
||||||
DrawFileDialog();
|
DrawFileDialog();
|
||||||
DrawStatusPopup();
|
DrawStatusPopup();
|
||||||
@@ -275,6 +261,20 @@ void MasterEditor::ManageActiveEditors() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MasterEditor::ManageKeyboardShortcuts() {
|
||||||
|
// If CMD + R is pressed, reload the top result of recent files
|
||||||
|
if (ImGui::IsKeyDown(ImGuiKey_R) &&
|
||||||
|
(ImGui::GetIO().KeyCtrl || ImGui::GetIO().KeySuper)) {
|
||||||
|
static RecentFilesManager manager("recent_files.txt");
|
||||||
|
manager.Load();
|
||||||
|
if (!manager.GetRecentFiles().empty()) {
|
||||||
|
auto front = manager.GetRecentFiles().front();
|
||||||
|
std::cout << "Reloading: " << front << std::endl;
|
||||||
|
OpenRomOrProject(front);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void MasterEditor::DrawFileDialog() {
|
void MasterEditor::DrawFileDialog() {
|
||||||
gui::FileDialogPipeline("ChooseFileDlgKey", ".sfc,.smc", std::nullopt, [&]() {
|
gui::FileDialogPipeline("ChooseFileDlgKey", ".sfc,.smc", std::nullopt, [&]() {
|
||||||
std::string filePathName = ImGuiFileDialog::Instance()->GetFilePathName();
|
std::string filePathName = ImGuiFileDialog::Instance()->GetFilePathName();
|
||||||
@@ -396,6 +396,17 @@ void MasterEditor::DrawYazeMenu() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MasterEditor::OpenRomOrProject(const std::string& filename) {
|
||||||
|
if (absl::StrContains(filename, ".yaze")) {
|
||||||
|
status_ = current_project_.Open(filename);
|
||||||
|
if (status_.ok()) {
|
||||||
|
status_ = OpenProject();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
status_ = rom()->LoadFromFile(filename);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void MasterEditor::DrawFileMenu() {
|
void MasterEditor::DrawFileMenu() {
|
||||||
static bool save_as_menu = false;
|
static bool save_as_menu = false;
|
||||||
static bool new_project_menu = false;
|
static bool new_project_menu = false;
|
||||||
@@ -413,14 +424,7 @@ void MasterEditor::DrawFileMenu() {
|
|||||||
} else {
|
} else {
|
||||||
for (const auto& filePath : manager.GetRecentFiles()) {
|
for (const auto& filePath : manager.GetRecentFiles()) {
|
||||||
if (MenuItem(filePath.c_str())) {
|
if (MenuItem(filePath.c_str())) {
|
||||||
if (absl::StrContains(filePath, ".yaze")) {
|
OpenRomOrProject(filePath);
|
||||||
status_ = current_project_.Open(filePath);
|
|
||||||
if (status_.ok()) {
|
|
||||||
status_ = OpenProject();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
status_ = rom()->LoadFromFile(filePath);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,6 +76,8 @@ class MasterEditor : public SharedRom,
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
void ManageActiveEditors();
|
void ManageActiveEditors();
|
||||||
|
void ManageKeyboardShortcuts();
|
||||||
|
void OpenRomOrProject(const std::string& filename);
|
||||||
|
|
||||||
void DrawFileDialog();
|
void DrawFileDialog();
|
||||||
void DrawStatusPopup();
|
void DrawStatusPopup();
|
||||||
|
|||||||
Reference in New Issue
Block a user