Changelogs » Gaphor



- Drop support for Python 2.7


- 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 temporaly 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 splitted 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