// // Fluid Project header for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2025 by Bill Spitzak and others. // // This library is free software. Distribution and use rights are outlined in // the file "COPYING" which should have been included with this file. If this // file is missing or damaged, see the license at: // // https://www.fltk.org/COPYING.php // // Please see the following page on how to report bugs and issues: // // https://www.fltk.org/bugs.php // #ifndef FLUID_PROJECT_H #define FLUID_PROJECT_H #include "proj/undo.h" #include "proj/i18n.h" #include "nodes/Tree.h" #include // ---- project class declaration namespace fld { namespace app { class Layout_Preset; extern Layout_Preset *default_layout_preset; } // namespace app /** Data and settings for a FLUID project file. */ class Project { public: // Member Variables // Undo actions for this Project. proj::Undo undo; // Manage the node tree of the project. node::Tree tree; // Project internationalization. proj::I18n i18n; /// If set, generate code to include the header file form the c++ file int include_H_from_C; /// If set, handle keyboard shortcut Ctrl on macOS using Cmd instead int use_FL_COMMAND; /// Clear if UTF-8 characters in statics texts are written as escape sequences int utf8_in_src; /// If set, will not be included from the header code before anything else int avoid_early_includes; /// If set, command line overrides header file name in .fl file. int header_file_set; /// If set, command line overrides source code file name in .fl file. int code_file_set; /// later int write_mergeback_data; /// Filename of the current .fl project file const char *proj_filename; /// Hold the default extension for header files, or the entire filename if set via command line. char *header_file_name_; /// Hold the default extension for source code files, or the entire filename if set via command line. char *code_file_name_; /// Macro used in header file for #ifdef MACRO \n #defined MACRO \n ... \n #endif char *include_guard_; /// Used as a counter to set the .fl project dir as the current directory. int in_project_dir; /// Application work directory, stored here when temporarily changing to the source code directory. char app_work_dir_[FL_PATH_MAX]; /// Set if the current design has been modified compared to the associated .fl design file. int modflag; /// Set if the code files are older than the current design. int modflag_c; /// Currently used layout preset. app::Layout_Preset *layout; public: // Methods Project(); ~Project(); void reset(); void update_settings_dialog(); // Getters for file name settings const char *header_file_name() const { return header_file_name_; } const char *code_file_name() const { return code_file_name_; } const char *include_guard() const { return include_guard_; } // Setters for file name settings void set_header_file_name(const char *name); void set_code_file_name(const char *name); void set_include_guard(const char *guard); // Path computation methods - fill provided buffer void projectfile_path(char *buf, int bufsize) const; const char *projectfile_name() const; void codefile_path(char *buf, int bufsize) const; void codefile_name(char *buf, int bufsize) const; void headerfile_path(char *buf, int bufsize) const; void headerfile_name(char *buf, int bufsize) const; void stringsfile_path(char *buf, int bufsize) const; void stringsfile_name(char *buf, int bufsize) const; void basename(char *buf, int bufsize) const; void enter_project_dir(); void leave_project_dir(); void clear_filename(); void set_filename(const char *c); void write_strings(); void set_modflag(int mf, int mfc = -1); }; } // namespace fld #endif // FLUID_PROJECT_H