- Reverted sorting of circuits top-down because the solution
was inconsistent -> needs to be solved by proxy
- Provide a sample transformation for subcircuits without connections
(potential for refactoring!)
- better performance when changing layer properties (by deferred
execution of the callback)
- coloring of nets (net color has precedence)
- sorting of circuits top-down
- The deferred method scheduler is now automatically created
when required and when there is a QApplication
- QApplication and related have argv constructors
The reason was that for 0.25.1 "macro-editor-font-size" was allowed
to be an empty string (the default). Which meant: take default application
font size. In 0.25.2 this now was required to be a number and 0 was
the default for "auto" font size.
Two changes:
- The default is back to empty string ("0" is still allowed as default)
- The application was made safe against broken configuration files: an
error is printed to the log, but apart from that the application
will work (the configuration value is ignored however).
This is what's been done:
- remove the old double and single buffering /w mask approach
- modify the bitmap rendering so it's done in a offscreen
image before subsampling
(effect: rulers display smoothly in subsampling mode)
- refactoring the "device pixel ratio" topic:
Made the DPR a variable, viewport width is scaled up
to reflect the true image size, inserted #ifdef's for Qt4.
DISCLAIMER: I don't know whether this still works - I don't
have a Retina display :-(
Without this commit, bookmark menus got grayed out
on MacOS with Qt5 sometimes. Now, the implementation
of recent file menu, bookmark menu, macro menu and
the static main menu use the same framewkork which
includes a workaround for the disabled menu issue.
- ID's are used instead of pointers to identify menu items
vs. QAction's. This is a weak measure to enhance predictability.
- The file menu is built from abstract menu items instead with
native Qt objects. This way the bug fix applies both to
file menu items and the other menu entries
The main fix is:
- A menu sync is forced by emitting a focusWindowChanged event
from the application object. This forces the QCocoaMenuBar
implementation to update the system menu.
The issue is with "dllexport": previously, dllexport was present on
exposed templates tool (= visibility(default) for gcc/clang). This
ensured MacOS compatibility since then the typeinfo is corretly
shared and dynamic_cast/typeid works.
For Windows, the "dllexport" equivalent requires the template
instantiations to be declared "external" which is a coding nightmare.
The solution is to provide separate macros for real (non-specialized,
not explicitly instantiated) templates (.._PUBLIC_TEMPLATE) which
is defined as empty for Windows and "visiblity(default)" for gcc/clang.
1.) Startup issue:
This is solved by making sure templates with virtual functions
are made visible in the DSO. This way, dynamic_cast is possible
across DSO's.
Scary: clang/MacOS wants the forward declarations be declared visible as well.
2.) Menu issue:
The best solution is to have only one QMenuBar. The navigator
now gets a synthetic menu bar composed of QToolButtons.
The LLVM STL implementation does not recognize "typedef void iterator_traits"
as dummy declaration. It will fall back to an empty traits struct.
Using the default "forward_iterator_tag" for the iterator_traits solves
this compile issue.
The fix consisted of introducing "factory" type virtual
methods which ensure that a reference is held to the
returned object. This is important for implementing
factory methods in Python. Without this, the object
get destroyed before we have a chance to increment the
reference count.
This commit adds "permissive" mode to OASIS writer to allow
odd-width paths (which are rounded).
This commit contains in addition:
* The check for odd-width paths is done post-scaling, so
reducing the DBU is a workaround
* Unit tests for the RBA binding of SaveLayoutOptions
* Documentation updates on some SaveLayoutOptions attributes
* Using Ruby predicate notation for cif_blank_separator?
(note question mark) for consistency. The old notation is
still there but deprecated
* --permissive option on buddies command lines where applicable
In the setup dialog (Customize Menu page), there are check boxes
now by which menu entries and menus can be enabled or disabled.
CAUTION: don't disable the setup function :-)
Issue: macro definitions had to be synchronized for
custom key bindings. That's not possible for readonly
macros and breaks the architecture.
Now, there is a default binding and a custom binding:
the macros provide a default binding only and the custom
key binding can override this. This scheme is implemented
consistently, so now the "reset" function of the key
binding editor simply clears the custom binding.
Side effect: reset of individual key bindings is possible.
Another side effect: removing a key binding from an
item with a default one is not possible. Instead, redefine
it.
This is how to reproduce the bug: have a layout with two
layers. Select two shapes of different layers and delete them.
One layer is not updated and only after zooming/panning the
shape will disappear on this layer.
* Some bug fixes (for example, drag moves were resolved
into many tiny state changes)
* New buttons for navigation in toolbar (like web browser)
* Hierarchy level changes are included in navigation states
too
* Indicates whether layout has been manipulated (leading [+])
* Indicates current cell
* Tooltip in tab shows file path
* Tab title switches to active cellview
When instanced overlay, it wasn't possible to select
the "other" instances. This is fixed. (reference: Trac 1015).
In addition:
- The instance selection now shows the label
- Bugfix: the transient selection now really is disabled
(it was popping up once after selection happened)
- RBA::Marker#line_style has been added
Libraries now carry a technology association and
only libraries associated with the current technology
can be selected.
To enforce proper update, cancel() will be used upon
change of technology. This avoids side effects when
changing the technology without notifying the library
selection widgets.
The MainWindow::cancel method has been generalized to
cover the functionality of cm_cancel without the
exception handling.
Technologies and macros that come from packages
are indicated as such in their description texts
in the tech and macro editor.
Technologies and macros that come from packages
which are downloaded are readonly now. This will
prevent editing of downloaded packages.
- LayoutView should accept technology names that are valid only
- CellView now also sends an "active cellview changed" event when
loading a layout in "replace layout" mode.
Some bug fixes (description was not updated in tree,
base path of new tech was not set, dirs were not reused
for new tech).
Some enhancements (tech setup dialog's window state
is persisted etc.)
Resolved the dependencies between MainWindow, TechController
and MacroController somewhat more.
* The macro controller now listens to the tech controller
for the active technology
* The tech controller has more responsibility now
* Some functionality has been taken out of the MainWindow
and put into the controller's implementation
* Introduced "refresh" method of tech setup dialog
* Some refactoring -> tech management is part of
tech controller
* Macro category management moved to macro controller
The MacroController is the central facility for managing
macros and their views. The plugin framework has been
extended to support such a design.
In addition, some small bugs have been fixed related to
macro interpreters (specifically the DRC).
- Shortcuts are honored and have priority over
search initiation. This is in particular important
for "*".
- "/" initiates search without yielding a "/" in the
text edit box.
The respective new classes are RBA::Technology and
RBA::TechnologyComponent. This interface will replace
the current way of doing tech management from scripts
by using the "technology-data" configuration parameter.
Previously, the "technology-data" complex configuration
value was stored in the configuration file, but not
accessible from scripts through Application#set_config
and Applicatiob#get_config. It was as pseudo parameter
that wasn't dynamically connected to the application
state.
Now it's handled separately as if it was a normal
parameter. This is just an intermediate solution
required because this interface is the only one
through which tech data is accessible from scripts.
This crash started to happen with the bugfix
for the black-on-black tree expander icon.
It was caused by the styling that was attached
to the widgets in order to fix this. Apparently
Qt does not like to attach proxy styles dyna-
mically.
Now, the styling is applied globally and this
issue is fixed.
To enable the search feature just type into the layer list.
This change set also contains some more fixes:
* Tab/Backtab now is functional also before the
Display menu has been used the first time
* Arrow keys work from the cell list again
This feature includes:
* Enhancements to tl::GlobPattern
(exact mode, case insensitive)
TODO: UTF8 support
* Enhancements to DecoratedLineEdit
(ESC key handling, Tab key handling)
The effect was: when drawing a shape on a single layer, all
layers have been redrawn. This was changed such that only
the affected layer is actually redrawn.