diff --git a/src/app/core/core.cmake b/src/app/core/core.cmake index a1f89a5f..4afed1ab 100644 --- a/src/app/core/core.cmake +++ b/src/app/core/core.cmake @@ -4,7 +4,7 @@ set( app/core/controller.cc app/core/labeling.cc app/emu/emulator.cc - app/core/message.cc + app/core/project.cc app/core/utils/file_util.cc ) diff --git a/src/app/core/project.cc b/src/app/core/project.cc new file mode 100644 index 00000000..508d4ec0 --- /dev/null +++ b/src/app/core/project.cc @@ -0,0 +1,58 @@ +#include "project.h" + +namespace yaze { +namespace app { + +absl::Status Project::Open(const std::string &project_path) { + filepath = project_path; + name = project_path.substr(project_path.find_last_of("/") + 1); + + std::ifstream in(project_path); + + if (!in.good()) { + return absl::InternalError("Could not open project file."); + } + + std::string line; + std::getline(in, name); + std::getline(in, filepath); + std::getline(in, rom_filename_); + std::getline(in, code_folder_); + std::getline(in, labels_filename_); + std::getline(in, keybindings_file); + + while (std::getline(in, line)) { + if (line == kEndOfProjectFile) { + break; + } + } + + in.close(); + + return absl::OkStatus(); +} + +absl::Status Project::Save() { + RETURN_IF_ERROR(CheckForEmptyFields()); + + std::ofstream out(filepath + "/" + name + ".yaze"); + if (!out.good()) { + return absl::InternalError("Could not open project file."); + } + + out << name << std::endl; + out << filepath << std::endl; + out << rom_filename_ << std::endl; + out << code_folder_ << std::endl; + out << labels_filename_ << std::endl; + out << keybindings_file << std::endl; + + out << kEndOfProjectFile << std::endl; + + out.close(); + + return absl::OkStatus(); +} + +} // namespace app +} // namespace yaze diff --git a/src/app/core/project.h b/src/app/core/project.h index 3b020e29..c6b691fe 100644 --- a/src/app/core/project.h +++ b/src/app/core/project.h @@ -37,54 +37,8 @@ struct Project : public core::ExperimentFlags { return absl::OkStatus(); } - absl::Status Open(const std::string &project_path) { - filepath = project_path; - name = project_path.substr(project_path.find_last_of("/") + 1); - - std::ifstream in(project_path); - - if (!in.good()) { - return absl::InternalError("Could not open project file."); - } - - std::string line; - std::getline(in, name); - std::getline(in, filepath); - std::getline(in, rom_filename_); - std::getline(in, code_folder_); - std::getline(in, labels_filename_); - - while (std::getline(in, line)) { - if (line == kEndOfProjectFile) { - break; - } - } - - in.close(); - - return absl::OkStatus(); - } - - absl::Status Save() { - RETURN_IF_ERROR(CheckForEmptyFields()); - - std::ofstream out(filepath + "/" + name + ".yaze"); - if (!out.good()) { - return absl::InternalError("Could not open project file."); - } - - out << name << std::endl; - out << filepath << std::endl; - out << rom_filename_ << std::endl; - out << code_folder_ << std::endl; - out << labels_filename_ << std::endl; - - out << kEndOfProjectFile << std::endl; - - out.close(); - - return absl::OkStatus(); - } + absl::Status Open(const std::string &project_path); + absl::Status Save(); absl::Status CheckForEmptyFields() { if (name.empty() || filepath.empty() || rom_filename_.empty() || @@ -104,6 +58,7 @@ struct Project : public core::ExperimentFlags { std::string rom_filename_ = ""; std::string code_folder_ = ""; std::string labels_filename_ = ""; + std::string keybindings_file = ""; }; } // namespace app