mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 15:37:46 +00:00
HackStudio: Add ProjectFile::create_if_needed
This commit is contained in:
parent
ba6cbf160b
commit
684cc5f027
2 changed files with 27 additions and 11 deletions
|
@ -37,17 +37,8 @@ ProjectFile::ProjectFile(const String& name)
|
||||||
|
|
||||||
GUI::TextDocument& ProjectFile::document() const
|
GUI::TextDocument& ProjectFile::document() const
|
||||||
{
|
{
|
||||||
if (!m_document) {
|
create_document_if_needed();
|
||||||
m_document = CodeDocument::create(m_name);
|
VERIFY(m_document);
|
||||||
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());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return *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;
|
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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,6 +44,7 @@ public:
|
||||||
const String& name() const { return m_name; }
|
const String& name() const { return m_name; }
|
||||||
|
|
||||||
GUI::TextDocument& document() const;
|
GUI::TextDocument& document() const;
|
||||||
|
CodeDocument& code_document() const;
|
||||||
|
|
||||||
int vertical_scroll_value() const;
|
int vertical_scroll_value() const;
|
||||||
void vertical_scroll_value(int);
|
void vertical_scroll_value(int);
|
||||||
|
@ -52,6 +53,7 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
explicit ProjectFile(const String& name);
|
explicit ProjectFile(const String& name);
|
||||||
|
void create_document_if_needed() const;
|
||||||
|
|
||||||
String m_name;
|
String m_name;
|
||||||
mutable RefPtr<CodeDocument> m_document;
|
mutable RefPtr<CodeDocument> m_document;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue