Commit Graph

207 Commits

Author SHA1 Message Date
Matthias Koefferlein 986cb7f0c2 Fixed an uninitialized memory issue (thanks, Stefan!) 2017-07-10 20:49:52 +02:00
Matthias Koefferlein 02819c5f1e Hash functions and fuzzy compare for RBA
RBA now provides a hash method for Box, Edge, EdgePair, Trans,
Polygon, SimplePolygon, CellInstArray, LayerInfo, Path, Text,
Point and Vector.

eql? is mapped to ==.

==, != and < act "fuzzy" for the double-typed variants.

Hence, these objects can be used as hash keys now.
2017-07-09 22:40:56 +02:00
Matthias Koefferlein 8396463daf Added text support in DRC
- A new constructor for RBA::Region has been provided to
  create text markers from a shape iterator
- The DRC framework has been enhanced with a "text" function
2017-07-07 00:02:52 +02:00
Matthias Koefferlein 801f83f09c Added DRC test suite and "smoothed" function for DRC 2017-07-06 23:02:11 +02:00
Matthias Koefferlein 14e1c0d5bd Reverted snap implementation to use micrometer unit objects. 2017-07-05 00:18:50 +02:00
Matthias Koefferlein 8910828726 More consistent definition of precision for double types
The double types (DCoord, DPoint, DVector ...) support a
more consistent equivalence criterion now. This supports
micron-unit objects without loss of precision.

Before this fix, the precision used for 0.01 which was
basically implying a resolution of 10nm for micrometer-unit
double objects.
2017-07-04 23:50:30 +02:00
Matthias Koefferlein 18f79dde67 First fix - adjusted accuracy for micron units
But: floating points coordinates are used internally for
size - hence dbPolygon:20 test is failing.
2017-07-02 23:33:23 +02:00
Matthias Koefferlein 24b213df40 Fixed a potential segfault because of static initialization order. 2017-07-02 22:42:53 +02:00
Matthias Koefferlein 798425c564 OASIS reader bugfix (PROPVALUE forward refs in lists) 2017-07-02 19:45:02 +02:00
Matthias Koefferlein 9c33a73086 Some indication of selected state also for single-position rulers. 2017-07-02 19:21:38 +02:00
Matthias Koefferlein b6b604ff93 'goto position' now shows a single-cross ruler on the target place. 2017-07-02 19:21:04 +02:00
Matthias Koefferlein d83c420c0a Better support for delete-while-iterate on stable vectors 2017-07-02 19:19:55 +02:00
Matthias Koefferlein 78cdec4d68 WIP: rulers
- some refactoring
- auto-registration of cross and measure rulers
2017-07-02 02:19:38 +02:00
Matthias Koefferlein 86e2b8cad1 WIP: auto-measurement rulers
- More tests on the snapping functions
- Bugfixes and enhancements for ruler features
2017-07-01 23:07:33 +02:00
Matthias Koefferlein 4ebfb24fca Ruler's auto-measure function improved
Already a very useful feature.
First tests added for snap feature.
2017-07-01 10:03:47 +02:00
Matthias Koefferlein c263878a4b WIP: rulers and auto measure
* Fixed snapping - don't use double objects with micron units
* Implemented first version of auto measure - needs improvement.
2017-06-30 00:03:21 +02:00
Matthias Koefferlein 919de1af01 Ruler enhancements
* There is a ruler mode now
* Ruler templates can have categories
* Ruler templates can be defined from RBA/pya
* Single-click annotations are implemented already
2017-06-28 23:17:02 +02:00
Matthias Koefferlein e30f1b6a34 Added unit tests for RBA::Annotation. Plus fixed a bug in the compare function. 2017-06-28 21:39:06 +02:00
Matthias Koefferlein d0427184e4 Fixed a typo. 2017-06-27 23:30:03 +02:00
Matthias Koefferlein 1b3a49e043 Advanced rules now working. 2017-06-27 23:16:59 +02:00
Matthias Koefferlein 9398b5373a WIP: enhanced annotations - ellipses, text alignment etc. Some things aren't working yet! 2017-06-27 00:54:31 +02:00
Matthias Koefferlein 61ef30f9ad Enhanced layout statistics form
The form offers a detailed shape statistics page.
2017-06-25 22:10:12 +02:00
Matthias Koefferlein da07e51257 Bugfix: macro editor bracket detection failed
On Ruby, a syntax highlighter element could contain
duplicate brackets, so that such an expression

  ((a+1)+1)

was not handled correctly. The solution is to treat
each individual character inside the elements but
skip comment and string elements.
2017-06-25 11:30:24 +02:00
Matthias Koefferlein 93713d19e1 Ruby integration and debugger enhancements
- Massive performance improvement with debugger - trace was
  eventually clearing the file to id map.
- UI updates on debugger did not happen because delayed
  execution of functions got disabled.
2017-06-21 01:37:07 +02:00
Matthias Koefferlein 96c150a4ee Fixed #13 (OASIS reader performance on forward-ref PROPSTRING) 2017-06-20 22:05:22 +02:00
Matthias Koefferlein 88a3068a0b More abilities for native plugins
This commit is a preparation for native plugins. It adds
the ability to register for autorun and autorun-early
for native, binary extensions.

Plus, the search path for binary extensions was modified
so it does not need to be ABI specific (i.e. without -gcc).
This prepares for a plugin scheme which uses a C-only API
and does not impose ABI compatibility requirements.
2017-06-19 22:33:37 +02:00
Matthias Koefferlein 19777e5629 Provide a more elaborate interface for native plugins
With this interface, plugins will be able to specify
their version, register autorun functions and more.
2017-06-19 01:02:49 +02:00
Matthias Koefferlein 5ee781a93f Reactivated some from_xy methods for backward compatibility 2017-06-17 16:53:01 +02:00
Matthias Koefferlein 9ff1a76f94 Added some convenience methods for transformations
* Reactivated (deprecated) from_xtrans methods for backward
  compatibility
* Added more flavours of "trans" and "*" (like transformation of
  boxes)
2017-06-17 16:45:01 +02:00
Matthias Koefferlein 7e6dfdf5b4 Another tiny performance enhancement. 2017-06-17 16:01:09 +02:00
Matthias Koefferlein b0fbbadd83 A small performance improvement (by avoiding intermediate objects) 2017-06-17 00:32:00 +02:00
Matthias Koefferlein 07b973a312 RBA performance
Some small performance improvement by avoiding calls to "initialize"
where not required.
2017-06-16 22:28:36 +02:00
Matthias Koefferlein afcacf5b1f WIP: brought down the time for call variant determination by caching. 2017-06-12 23:23:13 +02:00
Matthias Koefferlein c891d06ac3 Some performance enhancement (~30%) of RBA/PYA
This was achieved by separating the methods into
constructors and callbacks, hence there are less iterations
required when lookup up the latter.
2017-06-12 00:31:00 +02:00
Matthias Koefferlein a5d9bbb3d1 WIP: fast replacement for rb_gc_register_address/rb_gc_unregister_address. 2017-06-05 23:26:10 +02:00
Matthias Koefferlein 1bc0243c0a Unit tests fixed
The "active_cellview_changed" event was issued multiple times.
This fix avoids this redundancy.
2017-06-05 22:27:49 +02:00
Matthias Koefferlein dbdb46c5cb A small optimization for instance marker drawing. 2017-06-05 19:07:18 +02:00
Matthias Koefferlein cb296a802e Bugfix: instance selection cycling wasn't working
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
2017-06-05 18:58:24 +02:00
Matthias Koefferlein 1b0dcb5bf9 Better installation feedback for package manager
Now the confirmation dialog stays open and will show a log with the
installation progress and results.

The "marked" icon has been changed to look a bit less painted.
2017-06-05 12:54:09 +02:00
Matthias Koefferlein 46fccb99bc WIP on Salt package manager
- made WebDAV implementation compatible with Git's SVN API
- bugfix: parallel requests were not supported on tl::HttpStream
2017-06-05 03:16:29 +02:00
Matthias Koefferlein 2f82a8d853 Bugfix: new package is selected after it is created 2017-06-04 00:24:55 +02:00
Matthias Koefferlein edf7caa2fb Enhanced Salt package capabilities
* Salt packages can host native Ruby and Python
  libraries now. The "ruby_lib" and "python_lib"
  templates provide such native libraries.
  This way we can basically wrap every native
  extension in such a package.
* Ability to supply binary plugins through
  Salt packages as well.
2017-05-27 22:32:55 +02:00
Matthias Koefferlein f41e849e2f A little refactoring and polishing of the Salt Manager dialog. 2017-05-26 23:47:36 +02:00
Matthias Koefferlein e08e3459af Set the default salt mine URL to the final one
+ fixed a WIN32 build error.
2017-05-17 22:22:27 +02:00
Matthias Koefferlein 60cfbd9c6f Merge branch 'salt' 2017-05-07 23:55:22 +02:00
Matthias Koefferlein 9b42049abe clang compatibility
Fixed some compile issues with clang and
some warnings.
2017-05-07 23:52:20 +02:00
Matthias Koefferlein 88e753e86f Fixed some typos and bugs in the Salt templates 2017-04-29 01:59:19 +02:00
Matthias Koefferlein eca08cbd99 Added many Salt templates. 2017-04-29 01:40:32 +02:00
Matthias Koefferlein f79b14d0e4 Salt: added font, macro and mymacro templates.
Fixed two small bugs in the properties dialog (accept
wasn't possible if the doc link could not be read)
and remove_from_collection (infinite loop).
2017-04-26 23:19:36 +02:00
Matthias Koefferlein b3e823ca28 Fixed the timers for measuring read sorting times (out of band fix) 2017-04-25 23:41:36 +02:00
Matthias Koefferlein 1091ea6d5b Technology specific libraries
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.
2017-04-23 19:30:55 +02:00
Matthias Koefferlein 01e5c607fc WIP: sort packages by their dependencies
This fix ensures that packages satisfying dependencies
for other packages come before these in the flat package order.
This is in particular important for macro packages where those
supplying libraries need to be executed before the ones
that use these.
2017-04-23 18:22:06 +02:00
Matthias Koefferlein 1a9b5ead09 WIP: documentation URL's of packages can be relative
If the documentation URL is relative it's either
taken relative to the package installation path or
to the download URL. This means that documentation
can be inside the package now.
2017-04-22 23:32:59 +02:00
Matthias Koefferlein 0b7beee12d WIP: indicating of packages in tech and macros
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.
2017-04-22 22:47:08 +02:00
Matthias Koefferlein 561ce8797e WIP: some restyling of the salt manager dialog. 2017-04-22 22:03:40 +02:00
Matthias Koefferlein 1f92b89e16 WIP: Don't allow to edit downloaded packages. 2017-04-22 21:56:37 +02:00
Matthias Koefferlein 42756a76f6 WIP: API version of packages is checked now. 2017-04-22 21:45:49 +02:00
Matthias Koefferlein 38f60ad3fd WIP: package manager lists file details now, API version added 2017-04-22 21:30:39 +02:00
Matthias Koefferlein 7e1e75ebf0 Salt manager dialog: UI enhancements
* refresh function for salt mine
* Split "new" tab into "updates" and "new installations"
* A warning icon in the tab when updates are available
2017-04-22 18:09:12 +02:00
Matthias Koefferlein 6ba251cf2a WIP: Added font controller
This enables font packages: packages can now provide fonts by
featuring a "fonts" directory with the font layouts.

This commit also adds the capability to dynamically add fonts.
The Glyphs system is decoupled from the application's system
path and the BASIC.TEXT PCell parameters are non-cached to
enable dynamic updates.
2017-04-22 00:03:58 +02:00
Matthias Koefferlein 0078ee5334 Fixed a build issue on gcc 4.4.7 (improper use of typename) 2017-04-20 21:30:50 +02:00
Matthias Koefferlein a7038282ce WIP: Library controller plus a bugfix
The bug was that a crash happened when a package was deleted.

Essentially that was an effect of too many message boxes asking
to run autorun macros (also a bug - solved by deferred execution
of the macro update). This is solved by putting the salt model
into a "under construction" state while the model is not updated
yet.
2017-04-20 00:09:53 +02:00
Matthias Koefferlein 9c2c3301cf File watcher: ignore missing files/folders to prevent 'deleted' events later. 2017-04-20 00:09:03 +02:00
Matthias Koefferlein 2dd03c0e37 Removed some artifical styling. 2017-04-20 00:08:31 +02:00
Matthias Koefferlein d5bf24666f WIP: technologies now are synced with salt
- The technology list now is synched with the salt package
  manager so it's basically possible to include technologies
  into packages.

This checkin also contains:

- A "NoDeferredMethods" class that blocks execution of deferred
  methods in a region of code (preferably around message boxes).
  This prevents side effects when message boxes are shown and
  deferred methods are processed because of this.
  That prevention method is used in the macro controller when
  asking whether to execute autorun macros (that happens in
  slots and must not interfere with deferred methods).
  It's also used to protect the exception handlers.

- The tech manager dialog's refresh function used to crash
  because of an invalid tech pointer.
2017-04-18 23:58:24 +02:00
Matthias Koefferlein 4460819a6c Macro editor now acts on more file changes
- Adding/removing folders to packages now will
  make them appear/disappear automatically in the macro
  editor.
- Adding and removing files from folders will make
  them appear/disappear in the macro tree.
2017-04-18 01:07:10 +02:00
Matthias Koefferlein b3abb276a4 WIP: integration of salt controller for macros
This enables defintion of macros within salt packages
(this is probably the most important application).
2017-04-17 18:24:59 +02:00
Matthias Koefferlein 59dadcdd38 WIP: small bug fixes
- 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.
2017-04-17 18:22:36 +02:00
Matthias Koefferlein 88487a001f Integration of Salt with another controller 2017-04-16 23:03:33 +02:00
Matthias Koefferlein 209b16f3ea Merge branch 'salt' into controllers 2017-04-16 21:05:06 +02:00
Matthias Koefferlein 516c3ff925 WIP: tech controller and tech setup dialog
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.)
2017-04-16 00:27:28 +02:00
Matthias Koefferlein 6b6b45714f WIP: controllers (tech + macro)
The tech controller now is indenpendent from the
macro controller. The macro controller is responsible for
pulling it's data from the tech controller. It's initialized
after the tech controller so it can do so.

The macro controller is also responsible to building the
menus.

The tech controller issues events that the macro controller
can listen to.
2017-04-15 23:07:40 +02:00
Matthias Koefferlein 430d140016 WIP: some bug fixes. 2017-04-15 18:50:51 +02:00
Matthias Koefferlein e6f696b8dc WIP: bugfixed tech controller, more refactoring
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
2017-04-15 17:51:04 +02:00
Matthias Koefferlein 5b422440a1 WIP: technologies are file based by default now
* Introduced "refresh" method of tech setup dialog
* Some refactoring -> tech management is part of
  tech controller
* Macro category management moved to macro controller
2017-04-15 01:03:24 +02:00
Matthias Koefferlein 83b2c150d9 Fixed a segfault in batch mode. 2017-04-11 23:34:55 +02:00
Matthias Koefferlein 018516b0de Fixed #11 (Ruby 2.0.0 compatibility) 2017-04-10 19:27:29 +02:00
Matthias Koefferlein 7a5e7e8187 Fixed #10. 2017-04-09 23:08:26 +02:00
Matthias Koefferlein 9563d13bf3 WIP: introduced technology controller
The technology controller is a further abstraction and
is derived from the TechnologySelector. It will act
together with the MacroController and supply technology
specific information. Macros are part of that.
2017-04-08 22:32:08 +02:00
Matthias Koefferlein 683be55104 Fixed build without Ruby/Python 2017-04-07 22:18:47 +02:00
Matthias Koefferlein abb5424ece WIP: introducing MacroController
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).
2017-04-05 00:20:32 +02:00
Matthias Koefferlein 90693f9f67 Some enhancements on cell and layer search
- 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.
2017-04-03 00:01:32 +02:00
Matthias Koefferlein b3b0ce066e Fixed some issues around the help index
- Now the help index can be installed with the app
  Fallback is auto-generated index in app folder.
- The index can be generated by script with
  RBA::HelpSource#create_index_file
- The index is read only when the help dialog
  is opened (reduces start time)
2017-04-02 23:30:11 +02:00
Matthias Koefferlein dd4b873d64 Fixed some compiler warnings and some small refactoring 2017-04-01 23:18:04 +02:00
Matthias Koefferlein 50df9e5b21 Provide Ruby/Python binding for technology definitions
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.
2017-04-01 00:45:55 +02:00
Matthias Koefferlein 47aa38421a Unique library named to avoid name conflicts
The libraries generated are called libklayout_x now
(instead of libx). This avoid name conflicts with
"libdb.so" on some systems for example.
2017-03-31 00:23:12 +02:00
Matthias Koefferlein e35e9fe8f7 Tech data accessible as "technology-data" config value
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.
2017-03-30 00:11:09 +02:00
Matthias Koefferlein a24e6d94a9 Fixed #9 (DEF reader issue: "Invalid orientation specification") 2017-03-29 23:37:06 +02:00
Matthias Koefferlein 3598898997 Fixed #7 (Support "is_dirty?" predicate for RBA::CellView) 2017-03-29 22:13:09 +02:00
Matthias Koefferlein 7228efc7bd WIP: various enhancements for salt manager
* double-click
* salt mine context menu
* bug fixes
* etc.
2017-03-27 23:55:26 +02:00
Matthias Koefferlein cb589dc2d3 WIP: downloading of packages
- Support for WebDAV
- Download manager implemented
- Apply button functionality implemented

(needs testing)
2017-03-27 15:46:01 +02:00
Matthias Koefferlein d98495c18a WIP: new features for HTTP streams. 2017-03-26 23:27:51 +02:00
Matthias Koefferlein a5d0461284 WIP: removed obsolete method. 2017-03-26 23:26:45 +02:00
Matthias Koefferlein 9e2c4cb927 WIP: marked mode, update required message 2017-03-26 01:02:40 +01:00
Matthias Koefferlein b72655c94b WIP: preview download and search feature in package manager 2017-03-25 23:33:07 +01:00
Matthias Koefferlein fee806704d WIP: combined installation and browser dialog 2017-03-25 10:15:24 +01:00
Matthias Koefferlein d160a5c27c WIP: delete function, installation dialog (first steps) 2017-03-25 00:08:17 +01:00
Matthias Koefferlein 10b09c3575 WIP: create packages from templates
Now, packages are actually created.
2017-03-23 23:46:25 +01:00
Matthias Koefferlein 4a90479187 WIP: package template selection dialog
Plus some initial package templates (without files).
2017-03-23 22:19:13 +01:00
Matthias Koefferlein 1353c9dfb0 WIP: download capabilities for salt grains. 2017-03-21 22:53:04 +01:00