Skip to content

Commit 0ab4e80

Browse files
Add USER_INCLUDES region for custom header includes in generated code
1 parent 3117e0b commit 0ab4e80

3 files changed

Lines changed: 19 additions & 0 deletions

File tree

core/code_generator.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,10 @@ def generate_header_for_interface(self, iface: Interface, project: Project) -> s
7777
#include <string>
7878
#include <vector>
7979
80+
// [[[USER_INCLUDES]]]
81+
// Add custom header includes here
82+
{iface.user_code.header_includes}// [[[END_USER_INCLUDES]]]
83+
8084
class LawnApp;
8185
8286
namespace Sexy
@@ -225,6 +229,10 @@ def generate_cpp_for_interface(self, iface: Interface, project: Project) -> str:
225229
{interface_includes}
226230
{action_includes}
227231
232+
// [[[USER_INCLUDES]]]
233+
// Add custom header includes here
234+
{iface.user_code.cpp_includes}// [[[END_USER_INCLUDES]]]
235+
228236
using namespace Sexy;
229237
230238
"""

core/code_parser.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,13 +65,15 @@ def extract_from_files(cls, header_path: str, cpp_path: str) -> ProjectCode:
6565
with open(header_path, 'r', encoding='utf-8') as f:
6666
header = f.read()
6767
blocks = cls.extract_blocks(header)
68+
code.header_includes = blocks.get('USER_INCLUDES', '')
6869
code.declarations = blocks.get('USER_DECLARATIONS', '')
6970

7071
if cpp_path and os.path.exists(cpp_path):
7172
with open(cpp_path, 'r', encoding='utf-8') as f:
7273
cpp = f.read()
7374
blocks = cls.extract_blocks(cpp)
7475

76+
code.cpp_includes = blocks.get('USER_INCLUDES', '')
7577
code.init_code = blocks.get('USER_INIT', '')
7678
code.destroy_code = blocks.get('USER_DESTROY', '')
7779
code.draw_code = blocks.get('USER_DRAW', '')
@@ -98,6 +100,7 @@ def extract_from_cs_file(cls, cs_path: str) -> ProjectCode:
98100
cs_content = f.read()
99101
blocks = cls.extract_blocks(cs_content)
100102

103+
code.cpp_includes = blocks.get('USER_INCLUDES', '')
101104
code.declarations = blocks.get('USER_DECLARATIONS', '')
102105
code.init_code = blocks.get('USER_INIT', '')
103106
code.destroy_code = blocks.get('USER_DESTROY', '')

core/project.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ def __post_init__(self):
3030

3131
@dataclass
3232
class ProjectCode:
33+
header_includes: str = ""
34+
cpp_includes: str = ""
3335
declarations: str = ""
3436
init_code: str = ""
3537
destroy_code: str = ""
@@ -288,6 +290,8 @@ def to_dict(self) -> dict:
288290
},
289291
"root_widget_ids": iface.root_widget_ids,
290292
"user_code": {
293+
"header_includes": iface.user_code.header_includes,
294+
"cpp_includes": iface.user_code.cpp_includes,
291295
"declarations": iface.user_code.declarations,
292296
"init_code": iface.user_code.init_code,
293297
"destroy_code": iface.user_code.destroy_code,
@@ -365,6 +369,8 @@ def from_dict(self, data: dict):
365369
iface.root_widget_ids = idata.get("root_widget_ids", [])
366370
uc = idata.get("user_code", {})
367371
iface.user_code = ProjectCode(
372+
header_includes=uc.get("header_includes", ""),
373+
cpp_includes=uc.get("cpp_includes", ""),
368374
declarations=uc.get("declarations", ""),
369375
init_code=uc.get("init_code", ""),
370376
destroy_code=uc.get("destroy_code", ""),
@@ -409,6 +415,8 @@ def from_dict(self, data: dict):
409415
iface.root_widget_ids = data.get("root_widget_ids", [])
410416
uc = data.get("user_code", {})
411417
iface.user_code = ProjectCode(
418+
header_includes=uc.get("header_includes", ""),
419+
cpp_includes=uc.get("cpp_includes", ""),
412420
declarations=uc.get("declarations", ""),
413421
init_code=uc.get("init_code", ""),
414422
destroy_code=uc.get("destroy_code", ""),

0 commit comments

Comments
 (0)