Commit Graph

2903 Commits

Author SHA1 Message Date
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
Matthias Koefferlein 820c291623 WIP: salt package manager: features for installer
First steps towards installer support. Specifically:
- basic installation methods, basic framework
- file utilities for directory copy

Side effect: temp directories of unit tests are
now cleared prior to test run.
2017-03-21 22:20:24 +01:00
Matthias Koefferlein 10345eea73 Restyling of log viewer
Now the entries have icons telling the type of message.
This is more convenient when multi-line messages are
encountered.
2017-03-21 12:18:09 +01:00
Matthias Koefferlein 334fca3f76 WIP: checking of grain properties. 2017-03-21 11:24:45 +01:00
Matthias Koefferlein ec415d9251 WIP: functionality of package properties editor
Side effect: the log dialog now has an icon
indicating whether there are errors or warnings.

A new utility widget has been introduced to
attach log messages (warnings/errors) to
dialogs. This widget is a QToolButton that
is invisible initially. It provides warning
and errors channels and can be fed messages.
If errors or warnings are fed, the tool button
becomes visible. If (directly) embedded inside
a QFrame, the frame's background will turn
red to indicate the region of interest.

The button can be pushed to read the log.

The button is called lay::AlertLogButton
and is found in layLogViewerDialog.h.

TODO: move to layBasic.
2017-03-20 22:29:22 +01:00
Matthias Koefferlein faf8acb3d1 WIP: completer for name of dependency package 2017-03-20 17:53:47 +01:00
Matthias Koefferlein 5dab4b19ec WIP: some styling topics. 2017-03-20 10:07:39 +01:00
Matthias Koefferlein b34750f8cd WIP: salt package manager
New features like properties editor, proper
icon sizing, some styling etc.
2017-03-19 22:44:46 +01:00
Matthias Koefferlein 3f9f06a9b9 WIP: more information on packages 2017-03-19 00:42:09 +01:00
Matthias Koefferlein 3a6e4982c8 WIP: more functionality for Salt Package Manager 2017-03-18 22:36:33 +01:00
Matthias Koefferlein b8238a85f9 WIP: first steps towards package browser 2017-03-18 00:22:45 +01:00
Matthias Koefferlein 695a5d3169 WIP: Salt class and unit tests 2017-03-15 22:56:47 +01:00
Matthias Koefferlein c6833b2b67 Fixed a doc typo.
See https://www.klayout.de/forum/comments.php?DiscussionID=935&page=1#Comment_4292
2017-03-14 23:37:39 +01:00
Matthias Koefferlein 134534adca WIP: removal of grains/collections (needs unit tests). 2017-03-14 23:32:16 +01:00
Matthias Koefferlein 59dd36f692 WIP: grains collections for salt package manager. 2017-03-14 22:59:24 +01:00
Matthias Koefferlein 2953184b15 Fixed #6 (RVE DB reader and edges)
This solution will not only fix this issue but also turn
pairs of edges into "edge pair" objects. These objects
provide a somewhat better visualization for DRC violations
by connecting the edges with a filled region.

Single edges and clusters of more than two edges are
represented as individual edges.
2017-03-14 00:09:51 +01:00
Matthias Koefferlein b98afd5a8d WIP: next steps on package manager. 2017-03-13 23:55:57 +01:00
Matthias Koefferlein b16d8b9419 Completed unit tests for laySaltGrain.cc 2017-03-12 23:36:51 +01:00
Matthias Koefferlein e421026366 Started package manager development ('salt') 2017-03-12 23:26:04 +01:00
klayoutmatthias fea965a321 Enhanced styling of expander icon in tree view
Now it's compatible with the different selection styles
(some include the decoration, some don't)
2017-03-07 21:41:47 +01:00
klayoutmatthias e06224e00d Build fixed - one deleted header was still included. 2017-03-05 23:17:56 +01:00
Matthias Koefferlein 93024b4611 Qt binding build issues fixed
Split Qt namespace to enable build on WIN32
(no /bigobj on MinGW). Removed pseudo-constructors
with Qt::Initialization parameter.
2017-03-05 21:01:35 +01:00
Matthias Koefferlein 5f6c6a3264 Advanced search features for the cell selection form too
* Case sensitive/insensitive (persistent)
* Expressions yes/no (persistent)
* Clear button
* Tab keys to navigate between found cells
2017-03-05 00:57:51 +01:00
Matthias Koefferlein 7ddc6bf9df Bugfix: crash on exit
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.
2017-03-05 00:56:45 +01:00
klayoutmatthias af640086e6 Small fixes
- Qt5 binding was not properly including bindings for special types
- Macro editor: forward button wasn't autoRaise like the others
- DRC engine: gave deprecation warnings for Ruby 2.4 because Fixnum
  became deprecated. Now the implementation is more generic.
- Fixed some #includes for Qt5
2017-03-03 22:56:18 +01:00
Matthias Koefferlein 5c414ef0be Search feature for layer list
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
2017-03-02 23:45:37 +01:00
Matthias Koefferlein 08076de815 Merge branch 'master' of https://github.com/klayoutmatthias/klayout 2017-03-02 00:28:27 +01:00
Matthias Koefferlein 29727f597d Fixed the issue of dark tree expansion icons
Prior to this bug fix, the expansion icons were
not visible with a dark background on some platforms
(i.e. Gtk style, native Windows style).
2017-03-02 00:26:16 +01:00
klayoutmatthias 194a4cc4af Fixed #5 2017-02-28 23:26:47 +01:00
Matthias Koefferlein bf15e46c10 "Find cell" feature: just type into the cell list
This feature includes:
 * Enhancements to tl::GlobPattern
   (exact mode, case insensitive)
   TODO: UTF8 support
 * Enhancements to DecoratedLineEdit
   (ESC key handling, Tab key handling)
2017-02-28 22:24:14 +01:00
Matthias Koefferlein 8e22d7bba8 Bugfix: stop in debugger left it in unusable state
This happened if the script was stopped in the debugger.
Afterwards breakpoints were ignored.
2017-02-26 23:23:20 +01:00
Matthias Koefferlein f18ca83575 WIP: fixed a typo. 2017-02-25 01:47:45 +01:00
Matthias Koefferlein ae986d3234 Implemented #2 ([Simple]Polygon#extract_rad feature for Ruby/Python) 2017-02-25 01:35:14 +01:00
Matthias Koefferlein 85f048dd6d Bugfix: "save as" indicated "file was updated"
After "save as", the file was considered outdated
and KLayout offered to reload it. Now, KLayout is
silent.
2017-02-25 00:08:37 +01:00
Matthias Koefferlein 1f60e7729e Qt signals can be bound to functions with less args in Python
With this change it is possible to bind signals to functions
accepting less arguments. For example:

    def triggered():
      ...

    b = pya.QPushButton()
    b.clicked(triggered)
    b.emit_clicked(True)

wasn't working before since triggered() gets one parameter
(checked) and the call fails. Now, additional parameters are
ignored.
2017-02-24 23:48:47 +01:00
Matthias Koefferlein ede58ae728 Added a convenience method to RBA::Layout for creating a temp layer 2017-02-24 22:43:31 +01:00
Matthias Koefferlein 49be72e1a2 Fixed #3 (crash when dragging PCell dummy) 2017-02-23 23:59:16 +01:00
Matthias Koefferlein 55bac69a4a Drawing optimization: only redraw changed layers
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.
2017-02-23 23:33:07 +01:00
Matthias Koefferlein 83f12382e8 Refactoring: there is one Qt binding lib. 2017-02-23 01:19:02 +01:00
Matthias Koefferlein d66291af5b Fixed new implementation of Qt bindings for Qt5 2017-02-22 22:34:26 +01:00
Matthias Koefferlein 15babda953 Provide a proper solution for the bridge object
The bridge object (between QObject and gsi::ObjectBase)
needs to have Q_OBJECT. Otherwise findChild<T> won't
work for it.
2017-02-22 00:17:16 +01:00
Matthias Koefferlein 92fd33744d WIP: first solution for lost references issue
* The solution consists of attaching a bridge object
  to QObjects. If the host object is destroyed, the
  bridge object will notify the script client
* The bridge object attachment is optimized so it
  only happens if required (but still too often ...)
* The child object of QChildEvent gets a special
  handling since this object is almost dead in case
  of remove. This special handling consists of
  a special, stripped class which is used to
  only represent QObject in that particular case.
2017-02-21 23:47:48 +01:00
Matthias Koefferlein eea5da4ba6 Attempt to fix "GSI does not monitor lifetime of Qt objects" 2017-02-20 22:21:29 +01:00
Matthias Koefferlein bdcd76e9b5 Fixed #1 (https not supported) 2017-02-17 22:36:18 +01:00
Matthias Koefferlein 20f77d19d5 Enabled build on Ruby 2.2. 2017-02-17 22:32:43 +01:00
Matthias Koefferlein 8edaf8a62b Added more unit tests for recursive shape iter with complex regions. 2017-02-15 21:23:32 +01:00
Matthias Koefferlein 8c4013c500 Added some more unit tests. 2017-02-15 01:15:47 +01:00
Matthias Koefferlein 320e96f6da WIP complex regions for RecursiveShapeIterator
* Refactoring: no more "box+exclude" regions - they
  can be emulated using a NOT with the same result
* "confinement" of regions inside recursive shape
  iterators
* setters and getters for complex regions in GSI,
  confinement
* more unit tests, some bug fixes
2017-02-15 00:53:39 +01:00
Matthias Koefferlein fb6cf92b15 WIP on complex regions for RecursiveShapeIterator
- Added some tests
- Performance improvements for insert of
  regions into shapes
- Added LayoutLocker for that purpose
  (locks a layout against updates temporarily)
- Improved implementation on RecursiveShapeIterator
  with complex regions: will now check if a shape
  is really inside the region.
2017-02-14 00:13:57 +01:00
Matthias Koefferlein 282c6f70e2 Unit tests are passing again (no new tests yet). 2017-02-13 00:41:37 +01:00
Matthias Koefferlein 16b5e2f99c Added GSI support for complex search regions 2017-02-13 00:13:43 +01:00
Matthias Koefferlein f71fe1ff05 Initial implementation of complex regions for RecursiveShapeIterator. 2017-02-13 00:01:21 +01:00
Matthias Koefferlein 08676f0a01 Add private plugin data to .gitignore. 2017-02-12 16:54:05 +01:00
Matthias Koefferlein 6b9a41b269 Fixed XML output of test suite. 2017-02-12 16:42:15 +01:00
Matthias Koefferlein a1e8aaf6b8 Updated copyright note to 2017. 2017-02-12 15:28:14 +01:00
Matthias Koefferlein d38b1794d2 Tests with missing input data are skipped now 2017-02-12 15:27:12 +01:00
Matthias Koefferlein 7fa185a9b3 Added (empty) plugin directory, fixed main .pro file. 2017-02-12 14:17:18 +01:00
Matthias Koefferlein 1b98f9b0f9 Initialized repository with current sources. 2017-02-12 13:21:08 +01:00