Commit Graph

968 Commits

Author SHA1 Message Date
Matthias Koefferlein 160cceb7b5 Pressing Ctrl key while drawing a box forces it into a square 2026-01-11 23:46:11 +01:00
Matthias Koefferlein c0059959b8 Two small improvements
1. point-like selections use pan-to-selection instead of zoom-to-selection
2. Drawing texts on hidden layers: one warning less about drawing on a hidden layer
2025-12-22 23:09:38 +01:00
Matthias Koefferlein 1e8321d8fb Merge branch 'master' into issue-2224 2025-12-07 22:30:37 +01:00
Matthias Köfferlein b7bda218b6
Merge pull request #2228 from KLayout/bugfix/issue-2220
Fixing issue #2220 (select fails to select from 2nd layout when two a…
2025-12-07 22:29:08 +01:00
Matthias Köfferlein 4f30ad36db
Merge pull request #2242 from KLayout/bugfix/issue-2234
Bugfix/issue 2234
2025-12-07 22:28:51 +01:00
Matthias Köfferlein 9fbaf8fb14
Merge pull request #2232 from KLayout/bugfix/issue-2221
Bugfix/issue 2221
2025-12-07 22:27:37 +01:00
Matthias Köfferlein 590bc91359
Merge pull request #2226 from KLayout/bugfix/issue-2219
Issue #2219 (drawing of empty cells)
2025-12-07 22:27:24 +01:00
Matthias Köfferlein b8ff75d6a4
Merge pull request #2225 from KLayout/feature/issue-2214
Implemented a solution for issue #2214
2025-12-07 22:27:08 +01:00
Matthias Koefferlein 389a0996fd Messages can have priorities now. The net tracer uses higher-priority messages to make the 'click on second/first point' message more persistent. The have infinite lifetime now. 2025-12-03 22:11:54 +01:00
Matthias Koefferlein fc4a8b92b0 First bug fixes
* Only check for layers in the selected stack - this
  avoids problems with "masking" pin shapes for example
* Use shape transformation for shapes inside hierarchy
2025-12-02 23:00:07 +01:00
Matthias Koefferlein cdaf34cd77 Implementing change of layer accross all shape types
Plus: simplify behavior of "change all" button, so it
is not turned on or off.
2025-12-02 00:05:42 +01:00
Matthias Koefferlein bc835adf64 Fixed issue #2221 (restoring 'save' behavior on 'save all')
'save all' now behaves like 'save' on all layouts by respecting
the application-wide writer options.

In addition, a weird feature was fixed: when using 'save' for the
first time, old versions were freezing the writer options and changing the
application-wide options did not have an effect on views after
they were saved the first time.

Now, this behavior only applies to "save as" and a popup is shown
in the top of the layout view indicating that from now on the
special options apply. This way, special options can be picked
in "save as" and they will remain valid during the next "save".
2025-11-27 21:57:13 +01:00
Matthias Koefferlein bbaaa14b2c Bringing 'save all' on the same level than 'same'
- Taking the technology's settings for save options
- Deploying "libname", e.g. for GDS2
2025-11-22 23:57:40 +01:00
Matthias Koefferlein 7026cad2c1 Fixing issue #2220 (select fails to select from 2nd layout when two are loaded in same panel) 2025-11-22 22:35:16 +01:00
Matthias Koefferlein 12b74517a6 Issue #2219 (drawing of empty cells)
1. Optimiziation - not more than one empty cell per pixel
   This is not very efficient on the available test cases.
2. Introducing a virtual dimension for the empty cells
   for the purpose of label scaling.
   With this, the labels are scaled (if a scalable font
   is selected) and not drawn when becoming very small.
   The parameter is found in the setup pages under
   Display/Cells.
2025-11-20 23:05:35 +01:00
Matthias Koefferlein dd8cc8973f Implemented a solution for issue #2214
- The mouse release event's button mask reflects the
  keyboard modifiers at the time the button was released
- Same for click event
- Selection tool and partial selection uses the buttons
  from the release event
- New bitmap mask constants are available to extract the
  keyboard modifiers and mouse buttons from the button mask.
- Documentation was enhanced
2025-11-20 20:36:48 +01:00
Matthias Koefferlein 131a7bdf6e Fixing issue #2210 (snap behavior for auto-measure) 2025-11-16 15:05:55 +01:00
Matthias Koefferlein 25d396023a Refinement of snap, fixed tests 2025-11-11 00:21:28 +01:00
Matthias Koefferlein ea3e1e98b7 Better snapping to vertexes - important for center point snapping 2025-11-10 23:21:28 +01:00
Matthias Koefferlein dd9b38a92f Refactoring of Python module build system, now based on configuration files mostly. 2025-11-09 17:46:25 +01:00
Matthias Koefferlein 7d0912db17 Fixing unit tests after change of snap behavior 2025-11-02 00:00:11 +01:00
Matthias Koefferlein ddc847ac1f Object snapping: now snapping to edge centers for polygons and boxes, snapping to box centers 2025-11-01 16:44:40 +01:00
Matthias Köfferlein 3a069427cd
Merge pull request #2202 from KLayout/bugfix/issue-2201
Fixed issue #2201 (trace path)
2025-10-26 16:35:43 +01:00
Matthias Koefferlein b454d2ae42 Fixed issue #2201 (trace path)
* you can zoom in now to select the end point. Problem was
  actually that zooming in was a problem when the start point
  went out of the viewport

In addition:
* Messages are sticky now ("Click on second point")
* "Esc" will cancel path trace mode
* The cursor switches back to normal after tracing
2025-10-25 23:12:22 +02:00
Matthias Koefferlein e6e85ab3b3 FIxing issue #2194 (can't attach key binding to 'forward'/'backward') 2025-10-23 21:49:24 +02:00
Matthias Koefferlein 564111af77 Merge branch 'master' of github.com:KLayout/klayout 2025-10-23 19:21:26 +02:00
Matthias Koefferlein b4371d14ca Fixing TextInfo bbox in case of oversampling 2025-10-23 19:19:06 +02:00
Matthias Köfferlein df261559b0
Merge pull request #2189 from KLayout/feature/issue-2180
Feature/issue 2180
2025-10-21 21:52:41 +02:00
Matthias Koefferlein a1d6ff9a3c Selectability follows visibility 2025-10-20 22:57:03 +02:00
Matthias Köfferlein 0ce335d8cf
Merge pull request #2192 from KLayout/bugfix/issue-2191
Implemented a fix for issue #2191 (LIBNAME not saved)
2025-10-19 19:45:37 +02:00
Matthias Köfferlein af667ef6bf
Merge pull request #2187 from KLayout/feature/issue-2175
Solution for issue #2175
2025-10-19 19:45:26 +02:00
Matthias Köfferlein 295ce2a340
Merge pull request #2186 from KLayout/feature/issue-2174
Fixed issue #2174 - two new events
2025-10-19 19:45:15 +02:00
Matthias Koefferlein 937e557564 Implemented a fix for issue #2191 (LIBNAME not saved)
The fix consists of moving that options into the case-specific
options like DBU, instead of having it in the format-specific,
default writer options. So they can be specified on a per-case
basis and taken from the current layout by default.

Specifically:
* SaveLayoutOptions#gds2_libname is deprecated and replaced
  by SaveLayoutOptions#libname
* -ol (buddy tools) is no longer format specific
* The GDS writer takes SaveLayoutOptions#libname, and
  if empty, substitutes by the current libname. As last
  resort, "LIB" is used, because LIBNAME cannot be an
  empty string.
* The libname got removed from the global writer options UI
* In the "Save As" options dialog, it now is part of the global
  options and initialized with the current layout's libname.
2025-10-19 13:36:07 +02:00
Matthias Koefferlein 19dc5e8edb Implemented a solution for #2180
Implements a new option to show/hide unresolved references
(ghost cells). The option is found in "Display/Cells"
in the Setup dialog and also in the View menu.
2025-10-18 23:40:50 +02:00
Matthias Koefferlein 0016710573 Preparations: more planes, for ghost cells too 2025-10-18 23:06:23 +02:00
Matthias Koefferlein c927ed121b Solution for issue #2175
The solution consists of a new object, namely "TextInfo"
which allows deriving the true label bounding box from a
Text or DText object. See class documentation for details.
2025-10-18 19:26:17 +02:00
Matthias Koefferlein 3ca88ebfcb Fixed issue #2174 - two new events
1.) LayoutView#on_current_layer_changed(iter)
"iter" is the iterator pointing to the new current layer
Is called after the current layer (the highlighted layer)
changed.

2.) LayoutView#on_selected_layers_changed
Is called after the selected layer set changed.
2025-10-18 15:46:10 +02:00
Matthias Köfferlein 5c11f9201a
Merge pull request #2177 from KLayout/bugfix/issue-2173
Issue #2173 fixed
2025-10-18 13:51:13 +02:00
Matthias Koefferlein 572fa7db18 Issue #2173 fixed
- on_selection_changed is issued on "del"
- it is also issued on "reduce selection to highlighted ones" in property dialog
2025-10-12 21:29:39 +02:00
Matthias Koefferlein 31ddbe24fa Fixed a potential crash on application exit that was discovered during debugging 2025-09-28 16:25:35 +02:00
Matthias Koefferlein 292f6f84c6 Fixing issue #2162 (crash on selection + query)
Problem was that changing the active cellview index by clicking
on a specific item in the properties dialog cause a "clear_selection".
That interfered with the code of the properties dialog that
expects a static selection.

Fixed by disabling the events that lead to "clear_selection".
Side effect is that under these circumstances the active_cellview_changed
event is not triggered which also prevents side effects due to
scripts hooking into that event.
2025-09-28 16:14:11 +02:00
Matthias Koefferlein de72b05334 Moving code around so that laybasic can again be host for Plugin class - this enables putting that into the Python module without having Qt. 2025-09-24 23:17:43 +02:00
Matthias Koefferlein 97b6d82358 Moving lay.ButtonState, KeyCode and Cursor to Qt-less space again 2025-09-24 22:28:07 +02:00
Matthias Koefferlein 788dd2b1bc Fixing non-Qt builds 2025-09-09 22:36:41 +02:00
Matthias Koefferlein e4789f7f1b Enhanced object snapping for box edit mode - other corners snap too second order 2025-09-09 21:52:40 +02:00
Matthias Koefferlein 879df5a85b [consider merging] LayoutView#clear_layer_list preserves layer list name now 2025-09-09 19:38:18 +02:00
Matthias Koefferlein e2b5c29131 Some refactoring, bug fix 2025-09-08 19:30:07 +02:00
Matthias Koefferlein 20a3dbeaf8 Some refactoring (generalizing edt:: functions, basing move tool on lay::EditorService and support for 'tab' key (calls 'move by') 2025-09-08 18:54:00 +02:00
Matthias Koefferlein 7fd01a64f6 WIP: adding tab key to move tool (calls 'move by' menu), enhancing 'move_to' and 'move_by' dialogs. 2025-09-07 23:54:40 +02:00
Matthias Koefferlein aa9d951cf7 Fixing build for old Qt versions 2025-09-07 21:43:23 +02:00
Matthias Koefferlein e6692a2fd0 Added LayoutView#layer_list_name as read access for LayoutView#rename_layer_list 2025-09-04 19:59:57 +02:00
Matthias Koefferlein 7f29cf91df Removing GSI methods which are no longer required as they are included in the base class now, added + fixed GSI unit tests for LayoutView 2025-09-04 19:50:51 +02:00
Matthias Koefferlein b9115fc0a2 WIP: Enhancements to EditorOptionsPages API
- Make RBA::LayoutViewBase derived from Dispatcher, so we can pass LayoutView
  to methods asking for a dispatcher
- For this, the Dispatcher needs to be the first base class of LayoutViewBase
  and gsiDeclLayDispatcher is moved to laybasic
- API for editor options pages and message passing (callbacks)
2025-09-03 00:02:18 +02:00
Matthias Koefferlein 0447080d17 WIP: polishing geometry of modal editor options widget 2025-09-02 21:21:00 +02:00
Matthias Koefferlein a24e2431a2 WIP: automatically calling ungrab_mouse on deactivation of plugin 2025-09-02 20:28:55 +02:00
Matthias Koefferlein 2b04ecb1f7 WIP: experimental - modal editor options pages 2025-09-02 00:45:42 +02:00
Matthias Koefferlein 53a7414757 Merge branch 'master' into devel 2025-08-31 21:53:43 +02:00
Matthias Koefferlein 1e570351fb Refactoring (GSI base class for EditorOptionsPage), preparations for 'focus_page' feature 2025-08-31 20:37:48 +02:00
Matthias Koefferlein 4d9f924466 Refactoring: providing GSI binding to plugin base class, so the super implementation can be called. 2025-08-31 17:49:13 +02:00
Matthias Koefferlein 7f7a5bd3ac Bugfix: properly integrating newborn plugins 2025-08-30 18:55:16 +02:00
Matthias Koefferlein 340c1ef6e9 Some refactoring, editor options are shown more consistently now
Specifically, in move mode, now the editor options
are shown too. This makes sense as some of these
options there are also effective in move mode.
2025-08-30 18:39:41 +02:00
Matthias Koefferlein 7d2113ffe1 Some debugging, tests added 2025-08-30 00:34:35 +02:00
Matthias Koefferlein c77a732875 WIP: more features exposed for plugins (snapping) 2025-08-28 23:38:04 +02:00
Matthias Koefferlein 90e25a7b75 WIP: debugging and polishing editor options pages interface for plugins 2025-08-27 00:12:55 +02:00
Matthias Koefferlein c5d5557072 WIP: debugging config page setup in plugins 2025-08-26 22:36:48 +02:00
Matthias Koefferlein 88178fabd9 [consider merging] Bugfix on Plugin registration
This bug happened when a plugin package was installed. In
this case, the plugin was installed dynamically. The effect
was for example that the grid in a view became invisible.
Problem was, that the plugin registration re-generated all
plugins from the view, but did not reconfigure them. Hence
the grid had the default setting which was invisible grid.
2025-08-26 21:06:25 +02:00
Matthias Koefferlein 9e0d1d7ea7 WIP: new GSI declarations 2025-08-25 23:06:18 +02:00
Matthias Koefferlein acfc2aae09 WIP: preparing integration of editor options pages and config pages into plugin API 2025-08-25 00:04:56 +02:00
Matthias Koefferlein ac9a589d6f WIP: two convenience methods for plugin API 2025-08-24 22:29:47 +02:00
Matthias Koefferlein 26682c1a38 Trying again to fix Windows builds 2025-08-24 21:54:42 +02:00
Matthias Koefferlein 2806efd803 Trying again to fix Windows builds 2025-08-24 21:43:59 +02:00
Matthias Koefferlein 4821a5d71a [consider merging] Bugfix on Plugin registration
This bug happened when a plugin package was installed. In
this case, the plugin was installed dynamically. The effect
was for example that the grid in a view became invisible.
Problem was, that the plugin registration re-generated all
plugins from the view, but did not reconfigure them. Hence
the grid had the default setting which was invisible grid.
2025-08-23 17:33:11 +02:00
Matthias Koefferlein 39c8e0ca15 WIP: some refactoring, introducing cut layer in via definition 2025-08-18 22:53:45 +02:00
Matthias Koefferlein 61ee2305eb [consider merging] Fixed marker display - don't render error layers, that's more difficult because of font selection etc., use contour for text labels 2025-08-16 22:35:41 +02:00
Matthias Koefferlein 5bd74b73bb Enhancement: 'select highlighted objects' from properties dialog (object tree context menu) 2025-08-15 17:06:33 +02:00
Matthias Koefferlein 872eaabb75 Enhancement: 'relative' option of properties dialog is persisted now. 2025-08-15 15:24:00 +02:00
Matthias Koefferlein ef2b164e1a Bugfix: properly supporting Undo on 'apply technology' (layer properties were cleared) 2025-08-15 15:00:10 +02:00
Matthias Koefferlein 513f87c07f Reverted drawing of text strings to text plane for cell names as then 'hide texts' would disable them. 2025-08-12 23:38:33 +02:00
Matthias Koefferlein 55171859cf Fixed display under presence of layer transformations 2025-08-10 21:34:17 +02:00
Matthias Koefferlein fdb28800f7 Introducing fallback transformation variants for empty layer lists. This allows editing layouts without any layers and only instances. 2025-08-10 21:29:53 +02:00
Matthias Koefferlein 7667932a00 Some adjustments:
* Fixed instance marker when the cell is made from empty ones only
* 'fit' will include empty instances
2025-08-10 16:49:51 +02:00
Matthias Koefferlein 0e263ff4d8 Implemented solution for #2110 (small cells and ghost cells)
The solution consists of a second path to bounding boxes of
cells - namely "bbox_with_empty". This bounding box is a
(0,0;0,0)-box if the cell is empty. Correspondingly, empty
and ghost cells are displayed as single points. Ghost cells
also behave like hidden cells now.
2025-08-10 15:33:50 +02:00
Matthias Koefferlein 2c873bcbce WIP 2025-08-10 15:15:50 +02:00
Matthias Koefferlein 0bc904515c WIP 2025-08-10 15:13:10 +02:00
Matthias Koefferlein 75125b7a85 WIP 2025-08-10 14:34:22 +02:00
Matthias Koefferlein 1c15d851ee WIP 2025-08-10 13:59:26 +02:00
Matthias Koefferlein 786d231acd WIP 2025-08-10 13:51:47 +02:00
Matthias Koefferlein 651fc8cbc7 WIP 2025-08-10 13:49:22 +02:00
Matthias Koefferlein b4bbc26d6a WIP 2025-08-10 13:43:19 +02:00
Matthias Koefferlein 29cc603466 WIP 2025-08-09 23:54:01 +02:00
Matthias Koefferlein e6fa072bee Fixing 'tap' feature
After introducing the "do not select shapes
or instances if they overlap the viewport entirely"
feature, 'tap' was not finding shapes which extended
beyond the view's borders.

This got fixed and for 'tap', such shapes are
considered again.
2025-07-18 23:00:23 +02:00
Matthias Köfferlein ba640b6d04
Merge pull request #2039 from KLayout/feature/issue-2016
First attempt to implement a solution for issue #2016
2025-05-22 19:22:32 +02:00
Matthias Koefferlein 2bd82af6fe Provide a solution of feature request #2024
- There is a new configuration page entry called
  "Min spacing" for the grid. The default value is 4.
  The value specifies the grid min spacing in
  units of UI font height.
- A bugfix is included: the ruler now is drawn after
  the grid, hence is not hidden by it (specifically
  in checkerboard pattern mode)
- To allow bigger grid spacing, the ruler now
  is allowed to grow bigger than before.
2025-04-26 16:52:39 +02:00
Matthias Koefferlein aa12448747 First attempt to implement a solution for issue #2016
The implementation will not update the PCell on
property sheet edits of the guiding shape
if lazy evaluation is requested. Still, changes
are committed to the PCell on committing the
property page.
2025-04-05 20:35:11 +02:00
Matthias Koefferlein 87e7d8e493 Merge branch 'master' into devel 2025-03-06 19:35:32 +01:00
Matthias Koefferlein 2e150980d5 Bugfix: 'Save all' was not updating the dirty state in the panel tabs 2025-03-02 22:12:18 +01:00
Matthias Koefferlein 414a06c70f Bugfix: tab title was not updated when current cell is renamed 2025-03-02 20:54:00 +01:00
Matthias Koefferlein f3bed8d4f2 Merge branch 'master' into devel 2025-01-25 21:41:30 +01:00
Matthias Koefferlein 2b2eb2e524 Fixed issue #1976 (crash on cross mode, lw > 1 and oversampling) 2025-01-22 00:24:57 +01:00
Matthias Koefferlein 73dc31244a Merge branch 'master' into devel 2025-01-04 21:51:37 +01:00