From 684cc5f0274f5cd1f5ce2bd169057a53e9f723b8 Mon Sep 17 00:00:00 2001 From: Itamar Date: Fri, 5 Mar 2021 17:21:01 +0200 Subject: [PATCH] HackStudio: Add ProjectFile::create_if_needed --- Userland/DevTools/HackStudio/ProjectFile.cpp | 36 ++++++++++++++------ Userland/DevTools/HackStudio/ProjectFile.h | 2 ++ 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/Userland/DevTools/HackStudio/ProjectFile.cpp b/Userland/DevTools/HackStudio/ProjectFile.cpp index 989632b480..07f6ed8d34 100644 --- a/Userland/DevTools/HackStudio/ProjectFile.cpp +++ b/Userland/DevTools/HackStudio/ProjectFile.cpp @@ -37,17 +37,8 @@ ProjectFile::ProjectFile(const String& name) GUI::TextDocument& ProjectFile::document() const { - if (!m_document) { - m_document = CodeDocument::create(m_name); - auto file_or_error = Core::File::open(m_name, Core::File::ReadOnly); - if (file_or_error.is_error()) { - warnln("Couldn't open '{}': {}", m_name, file_or_error.error()); - // This is okay though, we'll just go with an empty document and create the file when saving. - } else { - auto& file = *file_or_error.value(); - m_document->set_text(file.read_all()); - } - } + create_document_if_needed(); + VERIFY(m_document); return *m_document; } @@ -71,4 +62,27 @@ void ProjectFile::horizontal_scroll_value(int horizontal_scroll_value) m_horizontal_scroll_value = horizontal_scroll_value; } +CodeDocument& ProjectFile::code_document() const +{ + create_document_if_needed(); + VERIFY(m_document); + return *m_document; +} + +void ProjectFile::create_document_if_needed() const +{ + if (m_document) + return; + + m_document = CodeDocument::create(m_name); + auto file_or_error = Core::File::open(m_name, Core::File::ReadOnly); + if (file_or_error.is_error()) { + warnln("Couldn't open '{}': {}", m_name, file_or_error.error()); + // This is okay though, we'll just go with an empty document and create the file when saving. + } else { + auto& file = *file_or_error.value(); + m_document->set_text(file.read_all()); + } +} + } diff --git a/Userland/DevTools/HackStudio/ProjectFile.h b/Userland/DevTools/HackStudio/ProjectFile.h index c679cd79e0..29c7ea8777 100644 --- a/Userland/DevTools/HackStudio/ProjectFile.h +++ b/Userland/DevTools/HackStudio/ProjectFile.h @@ -44,6 +44,7 @@ public: const String& name() const { return m_name; } GUI::TextDocument& document() const; + CodeDocument& code_document() const; int vertical_scroll_value() const; void vertical_scroll_value(int); @@ -52,6 +53,7 @@ public: private: explicit ProjectFile(const String& name); + void create_document_if_needed() const; String m_name; mutable RefPtr m_document;