diff --git a/maxdiff/patch_printer.py b/maxdiff/patch_printer.py index ceac85a..1076987 100644 --- a/maxdiff/patch_printer.py +++ b/maxdiff/patch_printer.py @@ -374,50 +374,58 @@ def get_parameters_string_block(patcher: dict) -> str: """ parameters = patcher["parameters"] parameters_string = "" - for key, value in parameters.items(): - if key in ["parameter_overrides", "parameterbanks"]: + for bankindex, bank in parameters.items(): + if bankindex in ["parameter_overrides", "parameterbanks"]: continue - parsed_key = key - if key.startswith("obj"): - id_tokens = key.split("::") + parsed_key = bankindex + if bankindex.startswith("obj"): + id_tokens = bankindex.split("::") parsed_key = get_object_names_from_ids_recursive(id_tokens, patcher["boxes"]) - parameters_string += f"\t{parsed_key}: {value}" + parameters_string += f"\t{parsed_key}: {bank}" if ( "parameter_overrides" in parameters - and key in parameters["parameter_overrides"] + and bankindex in parameters["parameter_overrides"] ): - override = parameters["parameter_overrides"][key] + override = parameters["parameter_overrides"][bankindex] override_print = [ override.get("parameter_longname", "-"), override.get("parameter_shortname", "-"), str(override.get("parameter_linknames", "-")), ] - for key2, value2 in override.items(): - if key2 in [ + for key, value in override.items(): + if key in [ "parameter_longname", "parameter_shortname", "parameter_linknames", ]: continue - override_print.append(f"{key2}: {value2}") + override_print.append(f"{key}: {value}") parameters_string += f" > override > {str(override_print)}" parameters_string += "\n" if "parameterbanks" in parameters: parameters_string += "banks:\n" - for key, value in parameters["parameterbanks"].items(): - parameters_string += ( - f"\t{value['index']}" - + (f" ({value['name']})" if value["name"] != "" else "") - + f": {value['parameters']}" - ) + for bankindex, bank in parameters["parameterbanks"].items(): + for key, value in bank.items(): + parameters_string += "\t" + if key == "index": + parameters_string += f"{value}:" + elif key == "name": + parameters_string += f"({value})" if value != "" else "" + elif key == "parameters": + parameters_string += f"encoders: {bank['parameters']}" + elif key == "buttons": + parameters_string += f"buttons: {bank['buttons']}" + else: + parameters_string += f"{value}" + parameters_string += "\n" - return f"parameters:\n{parameters_string}\n" + return f"parameters:\n{parameters_string}" def get_dependency_cache_string_block(dependency_cache: list): diff --git a/maxdiff/tests/test_baselines/Test.amxd.txt b/maxdiff/tests/test_baselines/Test.amxd.txt index c800dd2..99bd229 100644 --- a/maxdiff/tests/test_baselines/Test.amxd.txt +++ b/maxdiff/tests/test_baselines/Test.amxd.txt @@ -14,7 +14,7 @@ parameters: [live.dial]: ['live.dial[1]', 'live.dial', 0] inherited_shortname: 1 banks: - 0 (MyBank): ['live.dial', 'InsideBpatcher', '-', '-', '-', '-', '-', '-'] + 0: (MyBank) encoders: ['live.dial', 'InsideBpatcher', '-', '-', '-', '-', '-', '-'] buttons: ['live.text', '-', '-', '-', '-', '-', '-', 'live.menu'] dependency_cache: {'name': 'AbstractionWithParameter.maxpat', 'bootpath': '~/maxdevtools/maxdiff/tests/test_files', 'type': 'JSON', 'implicit': 1} {'name': 'MyAbstraction.maxpat', 'bootpath': '~/maxdevtools/maxdiff/tests/test_files', 'type': 'JSON', 'implicit': 1} @@ -22,10 +22,12 @@ dependency_cache: {'name': 'TestScript.js', 'bootpath': '~/maxdevtools/maxdiff/tests/test_files', 'type': 'TEXT', 'implicit': 1} {'name': 'VisibleBang.js', 'bootpath': '~/maxdevtools/maxdiff/tests/test_files', 'type': 'TEXT', 'implicit': 1} {'name': 'beat-icon.svg', 'bootpath': '~/maxdevtools/maxdiff/tests/test_files', 'type': 'svg', 'implicit': 1} + {'name': 'collContent.txt', 'bootpath': '~/maxdevtools/maxdiff/tests/test_files', 'type': 'TEXT', 'implicit': 1} {'name': 'fpic.png', 'bootpath': '~/maxdevtools/maxdiff/tests/test_files', 'type': 'PNG', 'implicit': 1} {'name': 'hz-icon.svg', 'bootpath': '~/maxdevtools/maxdiff/tests/test_files', 'type': 'svg', 'implicit': 1} {'name': 'my-maxnode-basic.js', 'bootpath': '~/maxdevtools/maxdiff/tests/test_files', 'type': 'TEXT', 'implicit': 1} {'name': 'myTestTable', 'bootpath': '~/maxdevtools/maxdiff/tests/test_files', 'type': 'TEXT', 'implicit': 1} + {'name': 'mystorage.json', 'bootpath': '~/maxdevtools/maxdiff/tests/test_files', 'type': 'JSON', 'implicit': 1} {'name': 'myxfade.genjit', 'bootpath': '~/maxdevtools/maxdiff/tests/test_files', 'type': 'gJIT', 'implicit': 1} {'name': 'shakerkicksnare.aif', 'bootpath': '~/maxdevtools/maxdiff/tests/test_files', 'type': 'AIFF', 'implicit': 1} {'name': 'times3.gendsp', 'bootpath': '~/maxdevtools/maxdiff/tests/test_files', 'type': 'gDSP', 'implicit': 1} @@ -69,8 +71,8 @@ appversion: 9.0.10-x64-1 | rect: [91, 153, 1288, 310] | openrect: [0, 0, 0, 169] [node.script my-maxnode-basic.js] autostart: 0 | defer: 0 | watch: 0 | textfile: {'filename': 'my-maxnode-basic.js', 'flags': 0, 'embed': 0, 'autowatch': 1} [comment JSUI using script file] bubble: 1 [jsui] filename: VisibleBang.js - [live.menu] pictures: [hz-icon.svg, beat-icon.svg] | remapsvgcolors: 1 | parameter: | usepicture: 1 | usesvgviewbox: 1 - [live.text] pictures: [hz-icon.svg, beat-icon.svg] | remapsvgcolors: 1 | parameter: | usepicture: 1 | usesvgviewbox: 1 + [live.menu] pictures: [hz-icon.svg, beat-icon.svg] | remapsvgcolors: 1 | parameter: | usepicture: 1 | usesvgviewbox: 1 + [live.text] pictures: [hz-icon.svg, beat-icon.svg] | remapsvgcolors: 1 | parameter: | usepicture: 1 | usesvgviewbox: 1 [playlist~] basictuning: 440 | clipheight: 28.0 | data: {'clips': [{'absolutepath': 'shakerkicksnare.aif', 'filename': 'shakerkicksnare.aif', 'filekind': 'audiofile', 'id': 'u400003311', 'loop': 1, 'content_state': {'loop': 1}}]} | mode: basic | originallength: [0, ticks] | originaltempo: 120.0 | quality: basic [pictslider] bkgndpict: fpic.png | clickedimage: 0 | knobpict: fpic.png [pictctrl] name: fpic.png diff --git a/maxdiff/tests/test_files/Test.amxd b/maxdiff/tests/test_files/Test.amxd index df8df08..a77c841 100644 Binary files a/maxdiff/tests/test_files/Test.amxd and b/maxdiff/tests/test_files/Test.amxd differ