Changelogs » Gaphor

PyUp Safety actively tracks 262,873 Python packages for vulnerabilities and notifies you when to upgrade.



  - Fix API compatibility: restore draw_all attribute with draw method


  - Allow for custom update context for Canvas
  - Render (GTK) background for the view
  - Allow FreeHandPainter to be a child of BoundingBoxPainter


  - Fix issue where port could not be updated when reconnecting two items
  - Documentation fixes
  - BoundingBoxPainter now takes an Item painter as its argument
  (composition over inheritance)


  - Fix issue where undo events for handle movements were not recorded


  - Drop support for Python 2.7


  - Improved support for Sequence Diagrams
  - Support multiple windows
  - Proper file icons on Mac and Linux
  - No longer a console on Windows
  - Support i18n
  - Improved search in tree view
  - "Show in Diagram" option in tree view popup menu
  - Internally, the Gaphor application is no longer a singleton
  - Overall a lot of code simplification
  - A fair share of bug fixes


  - Fix issue with placing popovers in the new


  - Fix issue where views are not rendered


  - Remove dependency on simplegeneric and decorator
  - Speed up rendering by using a back-buffer
  - Deprecate Handle.x and Handle.y, use Handle.pos instead


  - Remove dependency on zope.component and zope.interface libraries
  - Fix crash when running Gaphor with Wayland on Linux
  - Improved font rendering in macOS
  - Fix exceptions when renaming, deleting, or creating a package or diagram
  - Disable drag and drop from the selection tool
  - Fix many GTK deprecation warnings
  - Convert most tests to Pytest


  - Restore the alignment plugin
  - Fix corruption of Namespace during undo
  - Start the app as a Gtk.Application
  - Combine the UIManager service into the ActionManager
  - Fix Flatpak packages
  - Refactor the UML module to make it more atomic


  - Change license from LGPL 2.0 to Apache 2.0
  - Port to Python 3 with support for 3.5, 3.6, and 3.7
  - Python < 2.7 is no longer supported
  - Port from GTK+ 2 and PyGTK to GTK+ 3 with PyGObject
  - Migrate tests from Nose to PyTest with Tox
  - Reorganize project files
  - Overhaul the README
  - Add contributing guide and code of conduct
  - Adopt Black as code formatter
  - Add Continuous Integration with Travis and Read The Docs


  - Improved Python3 compatibility


  - Added Russian translation
  - Pango is used for text rendering, instead of the Cairo toy-api (seriously,
  that's what the docs say)
  - Small code improvements


  - New Docking widget layout
  - Improved componentized services
  - UIComponent rewrite (due to new interface)
  - ValueSpecification and subclasses are now treated as attribute. This
  saves a lot of object construction and Java-ish headaches.


  - Guides support from Gaphas 0.7.0
  - "hand written" drawing style
  - Keyboard shortcuts for toolbox selection
  - Fixed issue in undo transaction handling
  - Proper dialog when exiting with changed model


  - Fixed bugs related to diagrams loading.
  - Subsystem item is added (part of components).
  - Partition item, known as swimlanes, is added (part of actions).
  - Node item can group other nodes, artifacts and components.
  - Stereotype names shown in stereotype attribute compartments are centered.
  - Stereotype creating and applying is simplified.
  - Association ends stereotype editing is supported.
  - State item supports entry, exit and do activities.


  - Reintroduced assembly connections.
  - Stereotypes can have attributes.
  - Major speed improvements due to new notification system.


  - added desktop file and gaphor icons
  - update to gaphas 0.4


  - Transition to zope events completed.
  - state machines
  For a complete set of changes and fixes see:


  - undo/redo fixes
  - allow to create packages in model tree
  - improved messages on communication diagrams
  - improved text align algorithms
  - tagged values can be reordered and removed (like class attributes and
  - text entry used to on-diagram editing is much nicer, now


  - improved items's connection adapters
  - fixed comment line, comment, message and lifeline items connection
  adapters to implement UML specification more closely
  - items gluing speedup
  - property page is updated when association or other diagram line connects
  to appropriate diagram items
  - removing and reordering of class' attributes and operations is possible
  - association name and multiplicity editing improvements


  - support gaphas 0.3.0 API
  - bugfixes


  - Sequence diagrams
  - Non-UML drawing primitives (rectangles, ellipses, lines).
  - Major performance improvements in Gaphas 0.2.0.
  - Property editor
  - Lots of user interface tweaks
  - Services are loaded through Egg entry points.
  - New plugin infrastructure, based on setuptools.
  - gtk.UIManager is now used for menus.


  - New undo management system
  - Setuptools is used for installation and also within Gaphor
  - Depends on zope.component 3.4 and gaphas 0.1.3 (installed on as-needed basis)
  - Installable as Python Egg


  - New pure-python canvas implementation (gaphas)
  - Zope Adapters used for item connections
  - Undo managements temporarily disabled
  - Added loads of unit tests
  NOTE: if you have Zope 3 installed it's probably not a good idea to install
  Gaphor too, since Gaphor tries to install Zope3 packages too.
  Don't worry, you can run Gaphor perfectly well using the


  - support for automatic realization dependencies between components and
  - provided and required interfaces of component realizing classifiers are
  visible in Component.{provided,required} derived associations
  - missing icons added


  - actions: flow final, fork, join and object nodes
  - assembly connector
  - flows and also initial, flow final and activity final nodes can have names
  - flows can be split and merged using activity edge connectors
  - object inspector panel added
  - pdf file export
  - gaphorconvert utility, which allows easy batch conversion of diagrams
  into svg or pdf files
  - user interface fixes
  - require gtk+ 2.8.x


  - Fix bug in calculating bounding box for rotated text
  - Few minor updates


  - Views no longer lose reference to canvas on unrealize()
  - bug fix in log message


  - Painters are bound to a specific view, like tools
  - Introduced aspects for finding items and handles
  - New feature: Guides, for aligning elements
  - Free hand drawing style


  - Handlers are no longer called recursively for observed methods/properties.
  - removed enable_dispatching() and disable_dispatching() calls.
  - Made aspect code simpler.
  - Moved disconnect code from tool to aspect, as stated in Aspect's docstring.
  - Fixed issues in connections.
  - Lot's of fixes and testing has been done on the undo mechanism.


  - Split tools in tools and aspects, separating the _what_ from the _how_.
  For this, a dependency to the simplegeneric module is introduced.
  - Renamed VariablePoint to Position.
  - Handle is no longer inheriting from VariablePoint/Position.
  - Handle connections are no longer registered on the handle, but are
  maintained in the Canvas instance. This makes for much easier querying
  (e.g. which elements are attached to some element).
  Added a Table class to support this functionality.
  - Added a timeout property on the async decorator. The method is invoked
  the amunt of milliseconds after the first invocation.


  - Call Item._set_canvas after matrix update
  - Verify if value changed before marking variable as dirty.


  - allow to define connectable parts of item's (ports feature)
  - implemented default connection tool (thanks to ports feature)
  - line segment tool implemented (code taken from gaphor)
  - implemented Item.constraint method to simplify item's constraint
  - The canvas (-view) is no longer tied to the (0, 0) position. Scrolling can
  be done quite fluidly with the new PanTool implementation.
  - API changes
  - use positions instead of "x, y" pairs in all method calls


  - New and improved interface