Merge pull request #1513 from MoritzBrueckner/themes

Load themes from canvas
This commit is contained in:
Lubos Lenco 2019-12-14 13:33:13 +01:00 committed by GitHub
commit d6f32d1bc5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 45 additions and 18 deletions

View file

@ -21,23 +21,35 @@ class CanvasScript extends Trait {
iron.data.Data.getBlob(canvasName + '.json', function(blob:kha.Blob) {
iron.data.Data.getFont(font, function(f:kha.Font) {
var c:TCanvas = haxe.Json.parse(blob.toString());
cui = new Zui({font: f, theme: zui.Themes.light});
if (c.assets == null || c.assets.length == 0) canvas = c;
// Load canvas assets
else {
var loaded = 0;
for (asset in c.assets) {
var file = asset.name;
iron.data.Data.getImage(file, function(image:kha.Image) {
Canvas.assetMap.set(asset.id, image);
if (++loaded >= c.assets.length) canvas = c;
});
}
iron.data.Data.getBlob('_themes.json', function(tBlob:kha.Blob) {
if (tBlob.get_length() != 0) {
Canvas.themes = haxe.Json.parse(tBlob.toString());
} else {
trace("\"_themes.json\" is empty! Using default theme instead.");
}
if (Canvas.themes.length == 0) {
Canvas.themes.push(zui.Themes.light);
}
iron.data.Data.getFont(font, function(f:kha.Font) {
var c:TCanvas = haxe.Json.parse(blob.toString());
if (c.theme == null) c.theme = Canvas.themes[0].NAME;
cui = new Zui({font: f, theme: Canvas.getTheme(c.theme)});
if (c.assets == null || c.assets.length == 0) canvas = c;
// Load canvas assets
else {
var loaded = 0;
for (asset in c.assets) {
var file = asset.name;
iron.data.Data.getImage(file, function(image:kha.Image) {
Canvas.assetMap.set(asset.id, image);
if (++loaded >= c.assets.length) canvas = c;
});
}
}
});
});
});
@ -65,12 +77,12 @@ class CanvasScript extends Trait {
for (e in canvas.elements) if (e.name == name) return e;
return null;
}
// Returns canvas array of elements
public function getElements():Array<TElement> {
return canvas.elements;
}
// Set visibility of all elements of canvas
// Set visibility of all elements of canvas
public function setCanvasVisibility(bool: Bool){
for(e in canvas.elements) e.visible = bool;
}

View file

@ -2047,6 +2047,8 @@ class ArmoryExporter:
for x in self.output['traits']:
ArmoryExporter.import_traits.append(x['class_name'])
self.export_canvas_themes()
# Write embedded data references
if len(assets.embedded_data) > 0:
self.output['embedded_datas'] = []
@ -2460,6 +2462,17 @@ class ArmoryExporter:
x['props'].append(value)
o['traits'].append(x)
def export_canvas_themes(self):
path_themes = os.path.join(arm.utils.get_fp(), 'Bundled', 'canvas')
file_theme = os.path.join(path_themes, "_themes.json")
# If there is a canvas but no _themes.json, create it so that
# CanvasScript.hx works
if os.path.exists(path_themes) and not os.path.exists(file_theme):
with open(file_theme, "w+"):
pass
assets.add(file_theme)
def add_softbody_mod(self, o, bobject, soft_mod, soft_type):
ArmoryExporter.export_physics = True
phys_pkg = 'bullet' if bpy.data.worlds['Arm'].arm_physics_engine == 'Bullet' else 'oimo'

View file

@ -295,6 +295,8 @@ def fetch_script_names():
if os.path.isdir(canvas_path):
os.chdir(canvas_path)
for file in glob.glob('*.json'):
if file == "_themes.json":
continue
wrd.arm_canvas_list.add().name = file.rsplit('.')[0]
os.chdir(get_fp())