diff --git a/gaphor/entrypoint.py b/gaphor/entrypoint.py index efcabd3df..ddc43d990 100644 --- a/gaphor/entrypoint.py +++ b/gaphor/entrypoint.py @@ -52,7 +52,7 @@ def init_entrypoints( if depcls: kwargs[dep] = init(dep, depcls) else: - logger.info( + logger.debug( f"Entrypont {name} parameter {dep} does not reference a resolved dependency" ) else: diff --git a/gaphor/plugins/diagramexport/__init__.py b/gaphor/plugins/diagramexport/__init__.py index 0e7998187..11c94fae8 100644 --- a/gaphor/plugins/diagramexport/__init__.py +++ b/gaphor/plugins/diagramexport/__init__.py @@ -26,14 +26,15 @@ class DiagramExport(Service, ActionProvider): Service for exporting diagrams as images (SVG, PNG, PDF). """ - def __init__(self, diagrams, properties, export_menu): + def __init__(self, diagrams=None, export_menu=None): self.diagrams = diagrams - self.properties = properties self.export_menu = export_menu - export_menu.add_actions(self) + if export_menu: + export_menu.add_actions(self) def shutdown(self): - self.export_menu.remove_actions(self) + if self.export_menu: + self.export_menu.remove_actions(self) def save_dialog(self, diagram, title, ext): diff --git a/gaphor/plugins/diagramexport/tests/test_diagramexport.py b/gaphor/plugins/diagramexport/tests/test_diagramexport.py index 1085262c3..a78b96a41 100644 --- a/gaphor/plugins/diagramexport/tests/test_diagramexport.py +++ b/gaphor/plugins/diagramexport/tests/test_diagramexport.py @@ -1,18 +1,12 @@ -from typing import Dict - import pytest -import gaphor.ui.menufragment from gaphor.diagram.general import Box from gaphor.plugins.diagramexport import DiagramExport @pytest.fixture def diagram_export(): - properties: Dict[str, str] = {} - export_menu = gaphor.ui.menufragment.MenuFragment() - - return DiagramExport(diagrams=None, properties=properties, export_menu=export_menu) + return DiagramExport(diagrams=None) @pytest.fixture diff --git a/gaphor/tools/gaphorconvert.py b/gaphor/tools/gaphorconvert.py index d22744234..4737ca0c7 100755 --- a/gaphor/tools/gaphorconvert.py +++ b/gaphor/tools/gaphorconvert.py @@ -5,13 +5,8 @@ import os import re import sys -import cairo -from gaphas.painter import BoundingBoxPainter -from gaphas.view import Context, View - from gaphor.application import Session from gaphor.core.modeling import Diagram -from gaphor.diagram.painter import ItemPainter from gaphor.storage import storage @@ -26,17 +21,7 @@ def pkg2dir(package): return "/".join(name) -def paint(view, cr): - view.painter.paint(Context(cairo=cr, items=view.canvas.get_all_items(), area=None)) - - -def main(argv=sys.argv[1:]): - def message(msg): - """ - Print message if user set verbose mode. - """ - if options.verbose: - print(msg, file=sys.stderr) +def parse_options(argv): usage = "usage: %prog [options] file1 file2..." @@ -73,11 +58,22 @@ def main(argv=sys.argv[1:]): " name includes package name; regular expressions are case insensitive", ) - (options, args) = parser.parse_args(argv) + options, args = parser.parse_args(argv) if not args: parser.print_help() + return options, args + + +def main(argv=sys.argv[1:]): + + options, args = parse_options(argv) + + def message(msg): + if options.verbose: + print(msg, file=sys.stderr) + session = Session( services=[ "event_manager", @@ -85,10 +81,12 @@ def main(argv=sys.argv[1:]): "element_factory", "element_dispatcher", "modeling_language", + "diagram_export", ] ) factory = session.get_service("element_factory") modeling_language = session.get_service("modeling_language") + diagram_export = session.get_service("diagram_export") name_re = None if options.regex: @@ -127,34 +125,11 @@ def main(argv=sys.argv[1:]): message(f"rendering: {pname} -> {outfilename}...") - view = View(diagram.canvas) - view.painter = ItemPainter() - view.bounding_box_painter = BoundingBoxPainter(view.painter) - - tmpsurface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 0, 0) - tmpcr = cairo.Context(tmpsurface) - view.update_bounding_box(tmpcr) - tmpcr.show_page() - tmpsurface.flush() - - w, h = view.bounding_box.width, view.bounding_box.height if options.format == "pdf": - surface = cairo.PDFSurface(outfilename, w, h) + diagram_export.save_pdf(outfilename, diagram) elif options.format == "svg": - surface = cairo.SVGSurface(outfilename, w, h) + diagram_export.save_svg(outfilename, diagram) elif options.format == "png": - surface = cairo.ImageSurface( - cairo.FORMAT_ARGB32, int(w + 1), int(h + 1) - ) + diagram_export.save_png(outfilename, diagram) else: - assert False, f"unknown format {options.format}" - cr = cairo.Context(surface) - view.matrix.translate(-view.bounding_box.x, -view.bounding_box.y) - paint(view, cr) - cr.show_page() - - if options.format == "png": - surface.write_to_png(outfilename) - - surface.flush() - surface.finish() + raise RuntimeError(f"Unknown file format: {options.format}")