def test_ui_scope(self): self.assertTrue(f.find_external_object("ceammc/ui.scope~")) self.assertTrue(f.find_external_object("ceammc/ui_scope~")) self.assertTrue(f.find_external_object("ui.scope~")) self.assertTrue(f.find_external_object("ui_scope~")) self.assertTrue(f.find_external_object("ui.scope")) self.assertTrue(f.find_external_object("ui_scope")) f.add_import("ceammc") self.assertTrue(f.find_external_object("ui.scope")) self.assertTrue(f.find_external_object("ui_scope")) self.assertTrue(f.find_external_object("ui.scope~")) self.assertTrue(f.find_external_object("ui_scope~")) args = dict() args['@size'] = '100x200' sc = f.make_by_name("ceammc/ui_scope~", **args) self.assertTrue(issubclass(sc.__class__, PdObject)) self.assertEqual(sc.width, 100) self.assertEqual(sc.height, 200) # default size sc = f.make_by_name("ceammc/ui_scope~") self.assertTrue(issubclass(sc.__class__, PdObject)) self.assertEqual(sc.width, 150) self.assertEqual(sc.height, 100)
def main(): arg_parser = argparse.ArgumentParser( description='PureData pddoc to html converter') arg_parser.add_argument('name', metavar='PDDOC', help="Documentation file in PDDOC format") arg_parser.add_argument('output', metavar='OUTNAME', nargs='?', default='', help="HTML output file name") args = vars(arg_parser.parse_args()) in_file = args['name'] output = args['output'] if not os.path.exists(in_file): logging.error("File not exists: \"%s\"", in_file) exit(1) if not output: output = os.path.splitext(os.path.basename(in_file))[0] + ".html" xml = parse_xml(in_file) if not xml: exit(1) css_file = "theme.css" factory.add_import('ceammc') pddoc = xml.getroot() for child_tag in pddoc: if child_tag.tag == "object": dobj = DocObject() dobj.from_xml(child_tag) v = HtmlDocVisitor() v.set_css_file(css_file) v.set_image_prefix(child_tag.attrib["name"]) v.set_search_dir(os.path.dirname(in_file)) # traverse doc dobj.traverse(v) # generate images v.generate_images() html_data = v.render() f = open(output, "w") f.write(html_data) f.close() # copy css theme file to current folder src_css = os.path.join(os.path.dirname(__file__), "../share", css_file) shutil.copyfile(src_css, css_file)
def test_parse_kwargs(self): factory.add_import("ceammc") self.p.parse('[ui.scope~ @size=300x400]') self.assertEqual(self.p.tokens[0].type, 'OBJECT') self.assertTrue(self.p.nodes[0].pd_object is not None) obj = self.p.nodes[0].pd_object self.assertTrue(issubclass(obj.__class__, PdObject)); self.assertEqual(obj.width, 300) self.assertEqual(obj.height, 400) self.assertEqual(obj.to_string(), 'ui.scope~ @size 300 400') self.assertEqual(obj.brect(), (20, 20, 300, 400))
def main(): arg_parser = argparse.ArgumentParser(description='PureData pddoc to Markdown converter') arg_parser.add_argument('name', metavar='PDDOC', help="Documentation file in PDDOC format") arg_parser.add_argument('output', metavar='OUTNAME', nargs='?', default='', help="Markdown output file name") arg_parser.add_argument('--locale', '-l', metavar='locale', default='EN', help='locale (currently EN or RU)') args = vars(arg_parser.parse_args()) in_file = args['name'] output = args['output'] if not os.path.exists(in_file): logging.error("File not exists: \"%s\"", in_file) exit(1) if not output: output = os.path.splitext(os.path.basename(in_file))[0] + ".md" xml = parse_xml(in_file) if not xml: exit(1) factory.add_import('ceammc') pddoc = xml.getroot() for child_tag in pddoc: if child_tag.tag == "object": dobj = DocObject() dobj.from_xml(child_tag) v = MarkdownVisitor(args['locale']) v.set_image_prefix(child_tag.attrib["name"]) v.set_search_dir(os.path.dirname(in_file)) # traverse doc dobj.traverse(v) # generate images v.generate_images() html_data = v.render() f = open(output, "w") f.write(html_data) f.close()
def main(): arg_parser = argparse.ArgumentParser( description='PureData pddoc C++ source generator') arg_parser.add_argument('name', metavar='PDDOC', help="Documentation file in PDDOC format") args = vars(arg_parser.parse_args()) in_file = args['name'] if not os.path.exists(in_file): logging.error("File not exists: \"%s\"", in_file) exit(1) xml = parse_xml(in_file) if not xml: exit(1) factory.add_import('ceammc') pddoc = xml.getroot() v = pddoc.xpath("//object/meta/description") if v is not None: print("obj.setDescription(\"{}\");".format(v[0].text)) authors = pddoc.xpath("//object/meta/authors/author") if authors is not None: for a in authors: print("obj.addAuthor(\"{}\");".format(a.text)) keywords = pddoc.xpath("//object/meta/keywords") if keywords is not None: kw = list(map(lambda x: f"\"{x}\"", keywords[0].text.split(" "))) print("obj.setKeywords({{{}}});".format(", ".join(kw))) category = pddoc.xpath("//object/meta/category") if category is not None: print("obj.setCategory(\"{}\");".format(category[0].text)) since = pddoc.xpath("//object/meta/since") if since is not None: cat = since[0].text.split(".")[:2] print("obj.setSinceVersion({}, {});".format(cat[0], cat[1]))
def main(): arg_parser = argparse.ArgumentParser( description='PureData pddoc to pd patch converter') arg_parser.add_argument('--website', '-w', metavar='URL', help='library website URL') arg_parser.add_argument('--license', '-l', metavar='license', help='library license') arg_parser.add_argument('--version', '-v', metavar='version', default='0.0', help='library version') arg_parser.add_argument('--force', '-f', action='store_true', help='force to overwrite existing file') arg_parser.add_argument('--xlet-db', metavar='PATH', action='append', help='inlet/outlet database file paths', default=[]) arg_parser.add_argument('name', metavar='PDDOC', help="Documentation file in PDDOC(XML) format") arg_parser.add_argument('output', metavar='OUTNAME', nargs='?', default='', help="Pd output patch file name") args = vars(arg_parser.parse_args()) in_file = args['name'] output = args['output'] # add input pddoc file dir to search path for abstractions PdObject.xlet_patch_finder.add_search_dir(os.path.dirname(in_file)) if not output: output = os.path.splitext(os.path.basename(in_file))[0] + "-help.pd" if os.path.exists(output) and not args['force']: print( "Error: file already exists: '{0}'. Use --force flag to overwrite." .format(output)) exit(1) add_xlet_db(args['xlet_db']) xml = parse_xml(in_file) if not xml: exit(1) factory.add_import('ceammc') pddoc = xml.getroot() for child_tag in pddoc: if child_tag.tag == "object": dobj = DocObject() dobj.from_xml(child_tag) x = XletDocVisitor() dobj.traverse(x) v = PdDocVisitor() if 'version' in args: v._version = args['version'] if 'license' in args: v._license['name'] = args['license'] if 'website' in args: v._website = args['website'] dobj.traverse(v) patch_data = v.render() if not patch_data: print("convertion error") exit(1) with open(output, 'w') as f: f.write(patch_data)
def main(): arg_parser = argparse.ArgumentParser(description='PureData pddoc to pd patch converter') arg_parser.add_argument('--website', '-w', metavar='URL', help='library website URL') arg_parser.add_argument('--license', '-l', metavar='license', help='library license') arg_parser.add_argument('--version', '-v', metavar='version', default='0.0', help='library version') arg_parser.add_argument('--force', '-f', action='store_true', help='force to overwrite existing file') arg_parser.add_argument('--xlet-db', metavar='PATH', action='append', help='inlet/outlet database file paths', default=[]) arg_parser.add_argument('name', metavar='PDDOC', help="Documentation file in PDDOC(XML) format") arg_parser.add_argument('output', metavar='OUTNAME', nargs='?', default='', help="Pd output patch file name") args = vars(arg_parser.parse_args()) in_file = args['name'] output = args['output'] if not output: output = os.path.splitext(os.path.basename(in_file))[0] + "-help.pd" if os.path.exists(output) and not args['force']: print("Error: file already exists: '{0}'. Use --force flag to overwrite.".format(output)) exit(1) add_xlet_db(args['xlet_db']) xml = parse_xml(in_file) if not xml: exit(1) factory.add_import('ceammc') pddoc = xml.getroot() for child_tag in pddoc: if child_tag.tag == "object": dobj = DocObject() dobj.from_xml(child_tag) x = XletDocVisitor() dobj.traverse(x) v = PdDocVisitor() if 'version' in args: v._version = args['version'] if 'license' in args: v._license['name'] = args['license'] if 'website' in args: v._website = args['website'] dobj.traverse(v) patch_data = v.render() if not patch_data: print("convertion error") exit(1) with open(output, 'w') as f: f.write(patch_data)
def main(): fmt_list = ("png", "pdf", "svg", "pd") arg_parser = argparse.ArgumentParser(description='PureData ascii doc to Pd/PDF/SVG converter') arg_parser.add_argument('--auto', '-a', help='calculate output image size', action='store_true') arg_parser.add_argument('--format', '-f', metavar='FMT', nargs=1, choices=fmt_list, help='output format ({0})'.format(",".join(fmt_list)), default=["pd"]) arg_parser.add_argument('--width', '-wd', metavar='X', type=int, nargs=1, help='image width in pixels', default=400) arg_parser.add_argument('--height', '-ht', metavar='X', type=int, nargs=1, help='image height in pixels', default=300) arg_parser.add_argument('--xlet-db', metavar='PATH', action='append', help='inlet/outlet database file path', default=[]) arg_parser.add_argument('input', metavar='INPUT', help="Documentation file in pd ascii format") arg_parser.add_argument('output', metavar='OUTPUT', nargs='?', default='', help="output file name") args = vars(arg_parser.parse_args()) in_file = args['input'] output = args['output'] wd = args['width'] ht = args['height'] fmt = args['format'][0] if not os.path.exists(in_file): logging.error("File not exists: \"%s\"", in_file) exit(1) for db_path in args['xlet_db']: if not os.path.exists(db_path): logging.warning("xlet database file not found: '%s'. skipping...", db_path) else: PdObject.xlet_calculator.add_db(db_path) if not output: output = os.path.splitext(os.path.basename(in_file))[0] + "." + fmt factory.add_import('ceammc') p = Parser() p.parse_file(in_file) cnv = Canvas(0, 0, wd, ht) cnv.type = Canvas.TYPE_WINDOW p.export(cnv) if fmt in ('png', 'pdf', 'svg'): if args['auto']: br_calc = cnv.brect_calc() cnv.traverse(br_calc) bbox = br_calc.brect() wd = bbox[2] + Parser.X_PAD * 2 ht = bbox[3] + Parser.Y_PAD * 2 painter = CairoPainter(wd, ht, output, fmt) cnv.draw(painter) elif fmt == 'pd': pd_exporter = PdExporter() cnv.traverse(pd_exporter) pd_exporter.save(output) else: print("Unknown output format: {0:s}".format(fmt))
def main(): fmt_list = ("png", "pdf", "svg", "pd") arg_parser = argparse.ArgumentParser( description='PureData ascii doc to Pd/PDF/SVG converter') arg_parser.add_argument('--auto', '-a', help='calculate output image size', action='store_true') arg_parser.add_argument('--format', '-f', metavar='FMT', nargs=1, choices=fmt_list, help='output format ({0})'.format( ",".join(fmt_list)), default=["pd"]) arg_parser.add_argument('--width', '-wd', metavar='X', type=int, nargs=1, help='image width in pixels', default=400) arg_parser.add_argument('--height', '-ht', metavar='X', type=int, nargs=1, help='image height in pixels', default=300) arg_parser.add_argument('--xlet-db', metavar='PATH', action='append', help='inlet/outlet database file path', default=[]) arg_parser.add_argument('input', metavar='INPUT', help="Documentation file in pd ascii format") arg_parser.add_argument('output', metavar='OUTPUT', nargs='?', default='', help="output file name") args = vars(arg_parser.parse_args()) in_file = args['input'] output = args['output'] wd = args['width'] ht = args['height'] fmt = args['format'][0] if not os.path.exists(in_file): logging.error("File not exists: \"%s\"", in_file) exit(1) for db_path in args['xlet_db']: if not os.path.exists(db_path): logging.warning("xlet database file not found: '%s'. skipping...", db_path) else: PdObject.xlet_calculator.add_db(db_path) if not output: output = os.path.splitext(os.path.basename(in_file))[0] + "." + fmt factory.add_import('ceammc') p = Parser() p.parse_file(in_file) cnv = Canvas(0, 0, wd, ht) cnv.type = Canvas.TYPE_WINDOW p.export(cnv) if fmt in ('png', 'pdf', 'svg'): if args['auto']: br_calc = cnv.brect_calc() cnv.traverse(br_calc) bbox = br_calc.brect() wd = bbox[2] + Parser.X_PAD * 2 ht = bbox[3] + Parser.Y_PAD * 2 painter = CairoPainter(wd, ht, output, fmt) cnv.draw(painter) elif fmt == 'pd': pd_exporter = PdExporter() cnv.traverse(pd_exporter) pd_exporter.save(output) else: print("Unknown output format: {0:s}".format(fmt))