1.) Copy & Cut will now take the selection from
the transient selection if no real selection is present
2.) Hence, Copy & Cut are always enabled
3.) The same if true for duplicate
4.) Move interactive will also act immediately on the transient
selection.
The tech group is a new XML tag "<group>...</group>".
This tag is editable in the tech "general" page as "Group".
If non-empty, a submenu will be created in the tech selector
menu for all techs with the same group.
To restrict the requirements to a specific Python, Ruby or Qt
major version it's now possible to use "python2", "python3", "ruby1",
"ruby2", "qt4" and "qt5" features.
Like this:
<api-version>python2 2.7</api-version>
will require python >=2.7.0, but Python 3 is not allowed.
The solution is to extend the api-version field.
"0.26.1" is KLayout API >= 0.26.1
"ruby" means: Ruby required
"python 2.6.0" means: Python required with at least 2.6.0
"0.26.1; ruby; python 2.6.0" means: all of this together
In addition, the version has been set to 0.26.1 now.
Consistent behavior for file paths for images too.
Plus: image paths are not kept as absolute paths
inside the session.
This makes regeneration of images stable.
The help link wasn't working for File/Setup/Rulers/Templates
("here"). Also: if clicked from the model "Ruler and annotations setup"
the link was working but the help window wasn't usable. The modal
setup dialog was hiding the help window.
Three mode menu items appear in "Targets for Key Binding"
in the setup dialog and can be bound to a key.
"Move Interactive" will immediately start moving the
selection.
"Paste Interactive" and "Duplicate Interactive" will
paste and then immediately start moving.
Remaining issue: when Paste or Duplicate moves are
cancelled the pasted objects will still be there and
at the original location. So they are may be hard to
see. Also with Undo, two undo items are there: Paste
and Move.
When a "create instance" operation with a library cell
was undone the following issue could be seen: as the library
cell might create new layers in the target layout, these
needed to be undone when the operation was reverted.
But then the canvas bit planes got messed up because the
"LayoutView::set_view_ops" call was missing. Now this
happens inside the manipulation functions for deleting
and inserting layers. This should also reduce the
necessity to call LayoutView::update_content explicitly.
New convenience functions are provided which simplify
manipulation of key bindings and menu item visibility
configuration strings. AbstractMenu#pack_key_binding
and AbstractMenu#unpack_key_binding turn a path/key
map into a single string and back. The string format
is the same than for the key-binding configuration key.
The same is provided for the menu item visibilily
with AbstractMenu#pack_menu_item_visible and
Abstract#unpack_menu_item_visible.
For a backward compatible solution, a key binding
target of '' still means "take default". For
"nothing", a new pseudo-key "none" was defined.
For scripting, this value is available as
constant "Action#NoShortCut".