Merge pull request #1513 from MoritzBrueckner/themes
Load themes from canvas
This commit is contained in:
commit
d6f32d1bc5
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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())
|
||||
|
||||
|
|
Loading…
Reference in a new issue