mirror of
https://github.com/Insality/druid.git
synced 2025-09-28 18:42:19 +02:00
Solve #119 Add script for create custom component
This commit is contained in:
50
editor_scripts/create_druid_component.py
Normal file
50
editor_scripts/create_druid_component.py
Normal file
@@ -0,0 +1,50 @@
|
||||
# @license MIT, Insality 2021
|
||||
# @source https://github.com/Insality/druid
|
||||
|
||||
import os
|
||||
import sys
|
||||
import deftree
|
||||
|
||||
current_filepath = os.path.abspath(os.path.dirname(__file__))
|
||||
TEMPLATE_FILE = open(current_filepath + "/component_template.lua", "r")
|
||||
|
||||
def to_camel_case(snake_str):
|
||||
components = snake_str.split('_')
|
||||
return ''.join(x.title() for x in components[0:])
|
||||
|
||||
def main():
|
||||
filename = sys.argv[1]
|
||||
print("Create Druid component from gui file", filename)
|
||||
tree = deftree.parse(filename)
|
||||
root = tree.get_root()
|
||||
|
||||
output_directory = os.path.dirname(filename)
|
||||
output_filename = os.path.splitext(os.path.basename(filename))[0]
|
||||
|
||||
output_full_path = os.path.join(output_directory, output_filename + ".lua")
|
||||
is_already_exists = os.path.exists(output_full_path)
|
||||
if is_already_exists:
|
||||
print("Error: The file is already exists")
|
||||
print("File:", output_full_path)
|
||||
return
|
||||
|
||||
component_name = to_camel_case(output_filename)
|
||||
component_type = output_filename
|
||||
scheme_list = []
|
||||
# Gather nodes from GUI scene
|
||||
for node in root.iter_elements("nodes"):
|
||||
name = node.get_attribute("id").value
|
||||
scheme_list.append("\t" + name.upper() + " = \"" + name + "\"")
|
||||
|
||||
filedata = TEMPLATE_FILE.read()
|
||||
filedata = filedata.replace("{COMPONENT_NAME}", component_name)
|
||||
filedata = filedata.replace("{COMPONENT_TYPE}", component_type)
|
||||
filedata = filedata.replace("{SCHEME_LIST}", ",\n".join(scheme_list))
|
||||
|
||||
output_file = open(output_full_path, "w")
|
||||
output_file.write(filedata)
|
||||
output_file.close()
|
||||
print("Success: The file is created")
|
||||
print("File:", output_full_path)
|
||||
|
||||
main()
|
Reference in New Issue
Block a user