HackStudio: Add ProjectFile::create_if_needed

This commit is contained in:
Itamar 2021-03-05 17:21:01 +02:00 committed by Andreas Kling
parent ba6cbf160b
commit 684cc5f027
Notes: sideshowbarker 2024-07-18 21:41:16 +09:00
2 changed files with 27 additions and 11 deletions

View file

@ -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());
}
}
}

View file

@ -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<CodeDocument> m_document;