Commit Graph

410 Commits

Author SHA1 Message Date
Matthias Koefferlein c7fcd18413 Fixed #115 (Reader options are not persisted). 2018-04-17 00:56:53 +02:00
Matthias Koefferlein 1e2f8a0ce5 Fixed #112 (Salt package repo relative paths)
This patch also includes:
 * A segfault fixed that happend on some errors
 * package URL's are resolved relative to the
   salt mine URL if one is given.
2018-04-10 21:40:07 +02:00
Matthias Koefferlein 3495f9c698 Fixed #110 (ut_runner not working on MacOS) 2018-04-08 01:27:22 +02:00
Matthias Koefferlein a7446dd0dc Fixed #106 (Search & replace help page enhancements) 2018-03-31 13:39:35 +02:00
Matthias Koefferlein 21e2af2a97 Fixed #102 (Potential issue while upgrading from .25.1 to .25.2)
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).
2018-03-20 18:52:00 +01:00
Matthias Koefferlein 415d52f35d Fixed some issues found by Coverity scan. 2018-03-19 18:24:09 +01:00
Matthias Koefferlein 13062292fe Modified solution for the segfault mentioned in ticket #85 (@thomaslima: thanks for the root cause analysis) 2018-03-16 10:05:09 +01:00
Matthias Koefferlein 3ae71d7e72 Bugfix: properly initialize new config value 2018-03-12 20:47:33 +01:00
Matthias Köfferlein dc5792d768
Merge pull request #87 from lightwave-lab/open-with-macos
Open with macos
2018-03-11 22:08:49 +01:00
Matthias Koefferlein 5fbc20702e Macro editor enhancements (stop on exceptions)
This commit tries to address #85 and provide these features:
 - dynamic configuration of the macro IDE behaviour
 - side effect: a new entry in the setup dialog for the
   IDE settings
 - "stop on exceptions" can be taught to ignore certain files
2018-03-11 21:58:59 +01:00
Thomas Ferreira de Lima 8ec78a99a9 open with working properly in MacOS. 2018-03-07 12:54:01 -05:00
Thomas Ferreira de Lima c82bb445ac testing file open event 2018-03-07 11:07:29 -05:00
Matthias Koefferlein 6f0ecd3d9c Show tip window once for non-standard background combination mode. 2018-02-27 21:59:52 +01:00
Matthias Koefferlein eea53b3091 Fixed #79 (Macro Editor: Replace function enabled also for read-only macros) 2018-02-23 23:04:21 +01:00
Matthias Koefferlein 2f46f0d1c6 Fixed some issues found with Coverity. 2018-02-21 00:21:19 +01:00
Matthias Koefferlein 6a762db29b Reworked bookmark menu implementation to avoid MacOS menu issue
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.
2018-02-10 18:41:05 +01:00
Matthias Koefferlein 396d0263d4 Some changes to work around MacOS menu issues
- 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.
2018-02-08 16:33:54 -08:00
Matthias Koefferlein fb69dfd866 Fixed HTML version of class documentation - links to methods have not been working properly. 2018-02-04 19:07:33 +01:00
Matthias Koefferlein ccb76a9f09 Merge remote-tracking branch 'remotes/origin/master' 2018-01-27 01:31:47 +01:00
Matthias Koefferlein 705056675a Fixed a potential crash in the package manager on computing dependencies 2018-01-26 16:28:25 -08:00
Matthias Koefferlein 475bf6eb83 Small bug fixes in the package manager
- Remove button wasn't enabled if multiple packages
  were selected
- A potential crash on removing packages was fixed
2018-01-27 01:05:25 +01:00
Matthias Koefferlein 53328d1767 Merge branch 'macos-build' from kazzz 2018-01-14 17:29:59 +01:00
Matthias Koefferlein 2de6b691b4 64bit coordinate support enhanced
- int128 to string support for output
- unit tests
- some compiler issues fixed
2018-01-10 22:12:55 +01:00
Matthias Köfferlein 9a141a3fc8
Merge pull request #60 from klayoutmatthias/master
Fixed #53 by introducing a scroll area around the 'about' text.
2018-01-07 20:51:27 +01:00
Matthias Koefferlein a63ef901aa Fixed #53 by introducing a scroll area around the 'about' text. 2018-01-07 20:49:22 +01:00
Matthias Koefferlein 8eb3f5e6ce Fixed #59 (async download of package index and details) 2018-01-07 10:22:47 +01:00
Matthias Koefferlein 55be7d78e7 Merge remote-tracking branch 'matthias-origin/async-reader' into macos-build-on-master 2018-01-06 17:10:35 -08:00
Matthias Koefferlein 8003d1bb47 Merge branch 'master' into macos-build-on-master 2018-01-02 23:37:45 +01:00
Matthias Koefferlein ffb56335fb Updated copyright note to 2018. 2018-01-01 21:08:06 +01:00
klayoutmatthias 7e0f1522ac Windows build compatibility
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.
2018-01-01 18:55:11 +01:00
Matthias Koefferlein b7a18b3278 Added method to derive application path for MacOS (/proc isn't there on MacOS) 2017-12-31 09:55:23 -08:00
matthias 063811edc4 Solved the clang/MacOS startup failure and menu issue
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.
2017-12-30 15:22:16 -08:00
Matthias Koefferlein 7715d924ee Fixed #42 (headless mode support with Qt5/-zz) 2017-12-27 21:44:14 +01:00
Matthias Koefferlein 87531dadcc Fixed #48 (Cancel does not reset current tool) 2017-12-27 21:33:38 +01:00
Matthias Koefferlein 84cf46bcd2 Fixed an issue with the new process_events implementation: compiler resolution did not work well for the two types - one them them reimplemented and the other not. 2017-12-27 19:54:06 +01:00
Matthias Koefferlein 7a28389bf1 Fixed Windows build. 2017-12-27 18:27:18 +01:00
Matthias Koefferlein c63a47dd89 Added tests for klayout app
This commit also contains some important fixes:
 * Option -wd wasn't working
 * Relative layout file paths in session files are resolved as relative
   to the session file. On writing, absolute paths are used, so this
   change only affects session files build intentionally.

Plus:
 * Program version is available in unit tests too
 * Fixed a typo in the RBA::Expression documentation
2017-12-27 17:52:35 +01:00
Matthias Koefferlein 9906565013 Further refactoring - more functionality for GUI/non-GUI application classes. 2017-12-26 00:03:40 +01:00
Matthias Koefferlein bbb1514184 WIP: some refactoring. 2017-12-25 22:35:16 +01:00
Matthias Koefferlein 53d2557ba5 First steps towards fix. Needs review.
The patch is based on splitting the application class into
two incarnations - one for GUI capability and one without.

GSI binding happens dynamically based on the mode chosen.
We can do so because the application class is the first one
to become active and can decide the mode by itself.

In general, the application class carries too much functionality
and splitting is a task for the future. Right now, the functionality
is inside the base class and the derived classes basically only
configure the base class.

A better design would be to drop the QApplication inheritance in
the RBA::Application class hierarchy and provide access to the
QApplication object through qapp_gui getter.
2017-12-25 00:51:06 +01:00
Matthias Koefferlein 4f3c745790 Updated the wording of some documentation texts and fixed some errors there. 2017-12-20 22:11:42 +01:00
Kazunari Sekigawa bded8f9fa4 When KLayout 0.25 is built with Qt 5.8.0 or later, this workaround is not required.
This refs #1.
2017-12-12 20:50:23 +09:00
Matthias Koefferlein 2cd5d68db2 Build enhancements
Qt <4.7 is partially supported now:
 * Without Qt bindings (build.sh -without-qtbinding ...)
 * With reduced functionality (i.e. package manager won't work)

Build compatibility with STL-less Qt installations
2017-12-05 22:26:30 +01:00
Matthias Koefferlein 1bb662b9ed Fixed #21 (Autorun(-early) doesn't seem to run when lym files are inside a package) 2017-12-02 18:48:28 +01:00
Matthias Koefferlein b5e6423c8d Added tooltips and filter to menu customization dialog 2017-11-05 09:23:24 +01:00
klayoutmatthias 4cbb98745d Merge branch 'master' of www.klayout.org:/home/matthias/klayout 2017-11-01 22:11:08 +01:00
klayoutmatthias ccf6570d46 Crash handler does not pop up window in batch mode now. 2017-11-01 22:10:23 +01:00
Matthias Koefferlein ea5920bda4 Fixed ut_runner
- Implict macros were not disabled as they should
- This revealed that DRC scripts could not run with -rx
2017-11-01 18:20:45 +01:00
Matthias Koefferlein 226f39c920 Fixed build on older gcc versions. 2017-10-31 22:30:23 +01:00
Matthias Koefferlein 3c3c3a0b87 Apply custom hidden flags also to menu items created from macros. 2017-10-31 09:38:29 +01:00
Matthias Koefferlein b1e83e0bdb New feature: customizable menu items (hide/show)
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 :-)
2017-10-29 17:39:49 +01:00
Matthias Koefferlein c4fe283c2d Changed wording of key binding string in macro properties form. 2017-10-29 13:44:29 +01:00
Matthias Koefferlein 26ecc6e1a6 Rework: custom/default key bindings
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.
2017-10-29 13:34:57 +01:00
Matthias Koefferlein 8a8fc18bb0 Use real macro names when generating the menu paths. 2017-10-29 10:47:01 +01:00
Matthias Koefferlein 998ea6df10 RBA::Macro#name and RBA::Action#menu 2017-10-29 09:58:30 +01:00
Matthias Koefferlein c5017c811e Bugfix: avoid data loss in macro editor
The bug was this:
- A macro is opened and modified in the macro IDE
- The directory which the macro is kept in is touched
Effect: the macro was reloaded and the edits were discarded.
2017-10-28 22:37:52 +02:00
Matthias Koefferlein cb29a2d790 Fixed output of stdout to macro IDE log
No additional newlines are inserted on flush -
this enhances compatibility with unit test framework.
2017-10-28 21:13:46 +02:00
Matthias Koefferlein 6364530c69 Show native paths in macro IDE too
So far, only the macro paths (macros/pymacros/drc)
are shown. With this fix, also the native paths
like "ruby" and "python" are listed.
2017-10-23 21:45:58 +02:00
Matthias Koefferlein 1a97771c25 Bugfix: modal help dialogs properly show the text panel now. 2017-10-22 23:35:20 +02:00
Matthias Koefferlein 4cbfec9c35 New feature: allow group generation in menu paths. 2017-10-22 23:06:42 +02:00
Matthias Koefferlein ba7e9da5a6 Bugfix: package details were not updated. 2017-10-20 22:49:59 +02:00
Matthias Koefferlein 4ca24df814 Package manager enhancements
* marked icon
* multiple selection
* hidden flag for repository
* background color of package list black always
* consolidation of package list - identical packages are
  reduced to the latest one
2017-10-19 00:16:34 +02:00
Matthias Koefferlein 63e28be152 Establish a Ruby/Python path from packages also in -b mode. 2017-10-13 21:38:36 +02:00
Matthias Koefferlein 615ba36836 Bugfix: take download URL as source for packages also for relative URLs
Plus: diagnostics for HTTP access.
2017-10-12 21:08:19 +02:00
Matthias Koefferlein b3ffa23499 Relative paths for includes in package index files
Plus: inhibt some deferred methods during processEvent (i.e. progress reporting,
HTTP/HTTPS download).
2017-10-10 21:04:52 +02:00
Matthias Koefferlein 06a1002e25 Fixed build. 2017-10-09 23:49:41 +02:00
Matthias Koefferlein 51fca6be05 Relative package URL's don't take the repo index filename 2017-10-09 23:21:29 +02:00
Matthias Koefferlein 93b30364d9 Tiny bugfix: don't waste CPU time in a dialog exec loop. 2017-10-09 00:21:13 +02:00
Matthias Koefferlein 6c952921ea Added tokens to salt grain info. 2017-10-09 00:11:55 +02:00
Matthias Koefferlein c50fe8cb57 Some bug fixes and doc updates
* LEF/DEF: bugfix - the tech options were not
  visible
* Doc update: new main window snapshot
* LEF/DEF import: doc update
2017-10-08 22:43:07 +02:00
Matthias Koefferlein f27f187142 Updated doc. 2017-10-03 17:52:01 +02:00
Matthias Koefferlein 6f51c0be2e Added useful feature: include other paths in sami
This way you can include other repositories into
the Salt.Mine XML:

  <salt-mine>
    <salt-grain>
      ...
    </salt-grain>
    <include>http://from.other.source/repository.xml</include>
  </salt-mine>
2017-10-03 17:47:40 +02:00
Matthias Koefferlein 469eb47068 More consistent definition of Ruby/Python path with less invalid components. 2017-10-03 17:32:37 +02:00
Matthias Koefferlein ff73583d26 Bugfix: custom paths were not stored correctly
Now, if a path is stored with a category (i.e. mypath:macros),
the path is not modified. Instead, the path is taken as is
for the specific category.

Only unspecific paths are taken for by mypath/macros,
mypath/pymacros etc.
2017-10-03 16:49:28 +02:00
Matthias Koefferlein c077feb3d5 Some refactoring of package manager, new features
* Moved tlSystemPaths into lay namespace where it belongs
* Doc updates
* New command line switch -y and -yd for unattended installation
* Download URL's can be relative to salt.mine URL
* KLAYOUT_HOME environment variable to make ~/.klayout configurable
* Better error messages on XML parser on file/stream read errors
  (specifically from http/https)
2017-10-03 14:19:01 +02:00
Matthias Koefferlein 407c967de4 Updated doc. 2017-10-03 01:12:46 +02:00
Matthias Koefferlein e8a29ac612 Updated doc. 2017-10-02 23:17:19 +02:00
Matthias Koefferlein c99dbebf0a Updated package manager doc. 2017-10-02 00:25:29 +02:00
Matthias Koefferlein 5eb8172c57 Fixed layout on web site. 2017-10-01 22:32:31 +02:00
Matthias Koefferlein 44d2ea5c25 Some doc enhancements. 2017-10-01 22:21:01 +02:00
Matthias Koefferlein 368c5cf3ca Fixed some small issues. 2017-09-27 23:25:51 +02:00
Matthias Koefferlein 7e7a5ce030 Some enhancements/bug fixes for package manager 2017-09-27 00:16:43 +02:00
Matthias Koefferlein 59dd9896e0 Bugfix: second exit was ignored after not committing the first. 2017-09-23 13:20:58 +02:00
Matthias Koefferlein 8b1e76ed0b Bugfix: XOR was segfaulting when the window was closed during run
This fix consists of multiple parts:
 * Actual closing of the window is deferred until excecution is over
 * weak pointers in XOR for view so the view can be destroyed with
   out not knowing
 * The "keep data" message is not shown when the application window
   was closed.
2017-09-23 13:17:26 +02:00
Matthias Koefferlein f1cfe207ff Don't show break exceptions 2017-09-23 13:16:55 +02:00
Matthias Koefferlein 8cd612ba36 Don't show file changed notifications while an operation is ongoing
Reloading a file during operations is usually fatal.

+ Enhanced the "show all hierarchy levels tip window."
2017-09-21 22:07:37 +02:00
Matthias Koefferlein daacd9ea6f Added a hint about 'show all hierarchy levels off', so that new users have a chance to change this setting. 2017-09-20 23:18:09 +02:00
Matthias Koefferlein d64a427180 Fixed layout of layout statistics form. 2017-09-20 22:57:16 +02:00
Matthias Koefferlein 083e1d75e9 Finished defailed XOR progress. 2017-09-20 21:39:24 +02:00
Matthias Koefferlein 3e37c0bf7b First version of XOR progress visualization. 2017-09-20 01:22:25 +02:00
Matthias Koefferlein 468c3f4952 Assistant has a left-side content panel now. 2017-09-08 00:25:17 +02:00
Matthias Koefferlein 41e8c58869 A function to reset the window state (View menu) 2017-09-06 23:36:04 +02:00
Matthias Koefferlein 31084d83ce Bugfix for key bindings
Now, aliases are taken into account: when a path points
to the same function than another path, the key bindings
are synchronized.
2017-09-03 22:34:34 +02:00
Matthias Koefferlein dfbe0b3122 Enhanced crash handler on Linux
* Override Ruby's crash handler to stop blaming Ruby for
  KLayout segfaults ...
* Using addr2line on Linux to obtain DWARF debug info
  if available
* A more elaborate crash handler dialog
2017-09-03 19:26:52 +02:00
Matthias Koefferlein cfe8375be0 Unit test refactoring
Move ut framework to tl, so there are less complex
dependencies.
2017-09-03 01:54:11 +02:00
Matthias Koefferlein be6bf6a259 Display state navigation enhanced
* 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
2017-09-02 20:51:07 +02:00
Matthias Koefferlein 3499c3856a Show more info in tab and window titles
* Indicates whether layout has been manipulated (leading [+])
* Indicates current cell
* Tooltip in tab shows file path
* Tab title switches to active cellview
2017-08-29 01:13:49 +02:00
Matthias Koefferlein 992307a915 More on build: proper library versioning, rc file used through RC_FILE, deployment on Linux. 2017-08-27 17:44:41 +02:00
Matthias Koefferlein 56ca1899b5 Finished refactoring of unit tests. Now they are modularized. 2017-08-27 08:33:02 +02:00
Matthias Koefferlein 016bb865ee Fixed a few build issues. 2017-08-27 00:16:46 +02:00
Matthias Koefferlein 000917d2c9 Refactoring: moved unit tests to libraries for some libs (ut modularization) 2017-08-26 22:44:31 +02:00
Matthias Koefferlein e5c6bd9e29 Added DRC unit tests. 2017-08-23 11:53:44 +02:00
Matthias Koefferlein c0afa4bf58 Refactoring of resources and modules. 2017-08-23 09:58:39 +02:00
Matthias Koefferlein cbc5697253 Refactored Macro and MacroCollection into lym library for better reuse. 2017-08-22 23:39:55 +02:00
Matthias Koefferlein 55e797ffaf Provide proper INSTALL targets for .pro files
Plus: reduce compiler warnings
2017-08-21 02:33:45 +02:00
Matthias Koefferlein 0accc84367 Bugfix: package installation wasn't working from scratch
* Create the "salt" package directory as well - not just the
  package folder
* Include the package folder in the error message
* A better indication of what to do in the Apply button message
2017-08-14 21:29:10 +02:00
Matthias Koefferlein 0e5a2afdf9 Added an icon 2017-08-12 15:40:52 +02:00
Matthias Koefferlein 36ccea8242 Fixed a doc typo. 2017-08-08 01:27:55 +02:00
Matthias Koefferlein a2d690ba63 Generalized exe name in version string. 2017-08-06 23:12:01 +02:00
Matthias Koefferlein 7ddc0d6b39 Added missing file 2017-08-06 18:32:04 +02:00
Matthias Koefferlein f940c00a24 Updated documentation. 2017-08-06 16:45:52 +02:00
Matthias Koefferlein a8ac6aafe7 Updated doc and some images. 2017-08-06 00:38:45 +02:00
Matthias Koefferlein 287deaa574 Fixed some documentation typos. 2017-08-05 22:20:25 +02:00
Matthias Koefferlein 5b6b800e9d Updated documentation. 2017-08-05 22:13:00 +02:00
Matthias Koefferlein d6ca13f220 Updated documentation 2017-08-04 23:13:07 +02:00
Matthias Koefferlein cf48b39b89 Updated documentation 2017-08-03 21:57:48 +02:00
Matthias Koefferlein 6660c3f7d0 Updated documentation. 2017-08-03 21:43:53 +02:00
Matthias Koefferlein 4f48cd5dab Updated documentation 2017-08-03 21:21:59 +02:00
Matthias Koefferlein 9539de9fec Updated documentation 2017-08-02 23:11:13 +02:00
Matthias Koefferlein 824a7f9eb5 Bugfix: multiple message boxes on file change
The effect was: while a message box was open
to indicate a change of a file, new file changes
accumulated new message boxes. Now, the message
boxes won't accumulate and new file changes
are recognized after the message box is closed
and files were reloaded. Changes not acknowledged
by reloaded are presented again if changes were
seen while the message box was open.
2017-07-31 23:43:10 +02:00
Matthias Koefferlein ffeacd4630 Small bugfix: save options on tech setup page
The effect was: when not having save options in the technology
setup (for example, when migrating from 0.24 to 0.25), it was
not possible to edit the save options page in the technology
manager because the data slot of the save options wasn't
initialized.
2017-07-31 23:13:36 +02:00
Matthias Koefferlein a76fccf57b Updated some documentation. 2017-07-29 11:37:58 +02:00
klayoutmatthias c442202ca4 Enabled Windows build on Qt5. 2017-07-23 23:36:29 +02:00
Matthias Koefferlein 7d31825b11 DRC: added collect*, select and each methods. 2017-07-17 21:36:29 +02:00
Matthias Koefferlein 43359195ea DRC: corners function
Plus: a new RBA binding for decompose_convex/trapezoids that delivers a region.
2017-07-16 00:03:45 +02:00
Matthias Koefferlein cf6aef46e5 Some enhancements for DRC
- modified definition of texts with the ability to produce
  point-like edge objects
- middle and extent_refs methods for center point and other
  references.
2017-07-13 23:38:36 +02:00
Matthias Koefferlein df46aabb2e Added an optional cellname parameter for the 'report' function in DRC. 2017-07-12 21:11:45 +02:00
Matthias Koefferlein ca71384a9a Fixed the images of the DRC doc. 2017-07-11 00:48:54 +02:00
Matthias Koefferlein e2bcac657a Implemented LayerInfo for DRC input/output
- Added a "layers" function too
- Updated tests
- Updated documentation
2017-07-11 00:36:51 +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 24b213df40 Fixed a potential segfault because of static initialization order. 2017-07-02 22:42:53 +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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 b98afd5a8d WIP: next steps on package manager. 2017-03-13 23:55:57 +01:00
Matthias Koefferlein e421026366 Started package manager development ('salt') 2017-03-12 23:26:04 +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 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 a1e8aaf6b8 Updated copyright note to 2017. 2017-02-12 15:28:14 +01:00
Matthias Koefferlein 1b98f9b0f9 Initialized repository with current sources. 2017-02-12 13:21:08 +01:00