Ease of use

edited June 2012 in KLayout Development
Hi Matthias,

I've been using KLayout to do a fair amount of layout recently and I have some suggestions to make it more convenient. The forum is quite big now, so maybe some items already have solutions and I missed it? Anyway, here goes:

Paste. I would like (as setup option maybe) to be able to paste without the view changing. For duplicating objects using Cut and Paste especially, it is inconvenient that the view changes on Paste.

Duplicate. I find myself using Cut and Paste together to make a duplicate, very often. In Inkscape and some other programs there is Ctrl-D Duplicate to do that. any chance?

Properties. Maybe its a windows build thing, but I'd like [Enter] key to do Apply, or alternatively, Apply and close form - for me it does nothing in this form.

Window recall. Like in Virtuoso, it would be really useful to press a key to go back around a short stack of (e.g. 5) window magnifications and positions - for example, zoom in to see (a), do something, fit design to window, zoom in to see (b), press "w" twice to go back to (a), then "W" twice to go back to (b) etc.

Round corners. Icing on a very nice cake? It would be really smart if round corners could modify existing radiused corners even in shapes which have some sharp corners. So let's say we have a square with three corners, but one is radiused. It would be a real time saver if Round Corners algorithm could resize the already round corner, but leave the sharp corners untouched. It could restrict its operation to radii where the angle between vertices was small (depending on curve sides), or perhaps to a single radius that fits the higher number of vertices etc, but in theory it can be visualised so it could be automated?

Now for the big one - controlling edit-in-place?

Systems like Virtuoso rigidly constrain edit in place to one level at a time and even state the edit level cell view in the banner. KLayout's approach is more powerful but more risky too.

I wonder if it would be possible to provide a simple visible toggle to control the edit context? Often it would be useful to edit just level 1, even while viewing more levels - in other words to turn off the KLayout's default global all-displayed-levels edit-in-place. Too often this powerful feature can cause accidental edits. My suggestion would be a simple (to use, perhaps not to code...) toggle to turn on or off the multi-level edit in place facility.

Are any of these possible?


  • edited 11:32PM


    Of course at least some of them are possible :-)

    Let me just comment - maybe there are some solutions already:

    • Paste not changing the view: I'd simply add a configuration option which controls that. That should not be a big deal.
    • Duplicate: nice suggestion and should be easy to implement. But Ctrl+D is already taken (however, you can configure it as you like)
    • Apply: in 0.22 (which I still hope I will release soon), "Ok" will do "Apply and close"
    • Windows recall: Tab and Shift+Tab should do that (or: Display/Previous State and Display/Next State). Or didn't I understand the intention of that request?
    • Corner rounding: I have to look into the code, whether that is possible. Actually it is somewhat complex to derive radii from a polygon which is snapped to the database unit grid in a numerically stable fashion. Assuming that I have a polygon which is the output of a previous rounding operation makes that somewhat easier.
    • Controlling edit in place: In the View menu there is a check box "Select Top Level Objects". If that check box is checked, only top-level objects are selected and it is not possible to edit a cell below. Maybe that already is a solution?

    Anyway, thank you for that heap of input.

    Best regards,


  • edited 11:32PM

    Thank you for your quick replies.

    KLayout Windows recall: better than my recall - I must be getting old - but not quite there? Previous State (zoom_menu.last_display_state) works reliably, but Next equivalent seems broken. Sometimes it works for a short while, often it does nothing at all. Bug?

    Corner rounding. Your assumption is very reasonable and should make the job more feasible. Maybe any angle >>22.5° didn't come from your algorithm in the first place, so can be assumed to be a "don't-round" corner. It'd be nice if at least 45° and 90° corners could be preserved.

    Select Top Level Objects. Doh!! That's exactly what I wanted, but I never guessed from the names. First, it's not so much "view" as select mode, so I didn't look in View menu. Second, yes, it's also in Editor Options, but the level I wanted to edit was level 1, I guessed "top level" was 0 and wondered what that function was for, thinking Edit-Parent rather than Don't-Edit-in-Place. This is Cadence thinking, where edit-in-place can e.g. select and edit at level 5 while displaying levels 2-32 or whatever. The KL feature works okay, now know where to find it. It's not just me, I have a colleague who also never found this option...

    Another colleague has asked, could KLayout have a selection status displayed, e.g. in the centre under the layout window? His favourite 1980s software always displays the selection count. KLayout could show a selection count, and if it's a single selection it could also show the same information that shows when hovering pre-selection e.g.

    Selected 1: Path(W=1000 #Points=6) on 6/0 in DA01@1

    In fact, in the above, would it be possible to display the layer view name instead, if there is only one? This could be useful in properties forms too, or failing that, the layers palette could show numbers as well as names. Often when editing I want to see the link between a selection property 6/0 and layer view name, without looking for it or having to always remember.

    Final (for now...) ease of use suggestion, I've mentioned before bit can't remember if you were looking at it, separate x and y grids values? Again, Cadence inspired, but very useful. It can cause trouble with diagonal moves but user should select "Manhatten".

    Maybe it's just the Asperger's talking, but I think Manhatten could be the wrong name here? Your Manhattan seems more like "orthogonal", i.e. increment only x OR y. For me Manhatten implies the distance or route between two points moving in X AND/OR Y. The Manhatten connection between two arbitrary points is an orthogonal L shape with special cases of | and -. So, normally, to a Cadence user, Manhattan is an path constraint that can be used with orthogonal/diagonal/any_angle create or edit. Does this make sense?

    No - Thank YOU - for your brilliant software. It's gratifying to have even a small chance to help make it better in any way.

    Cheers, Brendan.
  • edited 11:32PM
    Ah! I just found differing x and y grids can be specified in Editor Options, Other Grid... e.g: 0.95,0.6. Thank you!

    Could x,y grids could be incorporated into global grid list in Setup as well, e.g. 5,1,(0.95,0.6),0.5,0.25,?
  • edited 11:32PM

    Hi Brendan,

    thanks for all that input, I have to digest that :-)

    I'll have a look at the "Next state" problem. At first glance it looks Ok. There may be two pitfalls: once you have changed the view manually, "Next" state is no longer available. Second, if you are using "Tab", the key might be caught by some dialog. I have to figure out if that is the case.

    You're right with the "View" menu: it turned into some kind of "quick access options" menu. Maybe I should rename it to "Options" or something like that. And maybe there is a better name for "top level". Any suggestions?

    The next version will also show more information about the selected objects. Showing a layer name for a layer is complicated by the fact that there are two kind of names: the alias name that is displayed in the layer list and the database name which comes from the file (i.e. for DXF or OASIS). GDS does not have a database name that's why the layer/datatype is shown. Since showing the alias name in that case is quite a frequent request I shall have a look whether that is possible to display the alias in that case.

    And finally: different grids for x and y are available in the editor options, that's right. I had some reason for not providing them globally, but I can't recall. The global grid is used in other places as well (i.e. rulers) and there was some conflict transformation variants. I'll have to check that.

    Thanks and best regards,


  • edited 11:32PM
    Hi Matthias,

    I get it - it was my user error/misunderstanding. In Cadence there was a ring of five views. Next was always available. If you reached the most recent view then pressing "Next" again would jump to a location five views old. Because it was a small ring or stack, this view usually made sense too - the user didn't get lost in ancient history. I jumped to the conclusion KL would be similar, but now I realise your stack is deeper and doesn't loop. I'll work with it and see how it goes. You might like to try the Cadence method, but maybe your method is better.

    "Select Top Level Objects". It might be clearer to offer "Enable Selection In Present Level Only" or flipped to "Enable Selection in Full Displayed Hierarchy" or just "Select/Edit in-Place"? Just suggestions.

    Aliases. My workaround is to include the layer number in the layer view name (## another layer), so it's always there to see. If aliases can't be used then I can continue with the workaround, but it would be better if the base layer numbers could be automatically displayed in the palette - a simple toggle could hide them when not needed. If aliases can be used, it might still be good to have optional layer numbers in the palette: Swatch, no., name.


Sign In or Register to comment.