Hi Jim,
you can use master or any other branch, but without warranty.
The usual approach (and the one favoured by GitHub) is: features are developed in branches. When they are considered stable enough they are integrated into the master (pull request). Hence the master is kind of "latest greatest", but with a certain risk of being spoiled. There are also forks from other user with their own masters and branches. Don't confuse them with the ones from the KLayout project.
But eventually, when the master is considered to have a sufficient quality, a release is made by creating a release tag (https://github.com/KLayout/klayout/releases). A release is a snapshot which is then turned into Windows binaries, Linux packages, PyPI wheels etc. This this is a lengthy process and I don't want to do this too often.
Matthias
Hi Dave,
Initially I have tried to include a UI test framework into KLayout. I basically recorded all events and tried to play them back. While doing so I learned that it's pretty important to really mimic the events with all their followers ("…
Hi Su,
it's kind of difficult to give the formula in simple form here.
If you look at the source code you'll find the computation in dbMatrix.cc, lines 631 and following.
The computation boils down to solving a linear equation system with 8 varia…
Hi all,
sorry folks ... a was wrong.
QFormBuilder will only generate "QTableWidget_Native" objects, never "QTableWidget" objects. In other words: you cannot overwrite the key event handler, since there is not derived class. You…
Hi m1a2tank,
There is no "centers" feature yet. But unlike Calibre you can access the objects inside your layers while the DRC script runs. This happens through the "data" method which returns a RBA::Region object.
This allows …
Hi David,
Regarding 1.): you can't save them to GDS or the other layout formats, but the "sessions" are supposed to handle that. Sessions keep all the setup, including rulers, images, views, layer properties and so forth. All except the l…
Hi,
"sel.trans" will give you the transformation of the polygon into the current cell. "sel.trans.trans(p)" will transform a point into the current sel. Hence:
ply.each_edge do |ed| p1_s = sel.trans.trans(ed.p1) # -> will …
Hi all,
I hope I can shed some light on this.
First of all, the Qt binding classes basically mimic the C++ Qt classes. The C++ way to implement a key event handler is to derive a class from the given one and reimplement the key event handler. It's…
Hi Chris,
thanks for that comment.
If you want to have a deep look into the OASIS internals, you can use the OASIS dump tool: http://www.klayout.de/dump_oasis.html. But that is just one-way and you'll see all these nitty gritty bits you are probab…
Hi David,
you cannot modify the cell's instantiation point from within the cell. Instance and cell live in different spaces (instance in the host layout, cell in the library). So basically it's not possible to access the instances properties from w…
Hi David,
are you using 0.24 Python eval? There was an issue with subclasses passed to arguments of basic class type. This will hit here. It has been fixed in 0.24, but it may be there in 0.23 as well.
In fact, "obj" is not a QKeyEvent a…
Hi Maximus (nice name, BTW),
do you mean by script or manually?
By script:
RBA::Polygon::new(RBA::Box::new(left, bottom, right, top)) .transformed(RBA::ICplxTrans::new(1.0, rotation_angle_in_degree, false, 0, 0))
Manually: draw a box and rotat…
Hi Chris,
session loading and restoring is actually available already (MainWindow#save_session and MainWindow#restore_session). I just forgot that feature.
Regarding the CellView: actually, CellView is an object on it's own and basically is someth…
Hi David,
I did not use the macro name because macro names do not need to be unique. So there was a certain risk of name clashes. That's why it picks a unique name. Maybe I can use the macro name and make it unique in case of a name clash.
Matthias
Great work, David! Thanks a lot.
I'll test them against my (final stage, I promise) 0.24 version.
I tried to checkout the code but git says it's an empty repository. I'd offer to contribute to the sources too in case of bug fixes or enhancements.
…
Hi David,
thanks for providing the script.
I can confirm the issue with the missing background after running the script directly. I'd like to understand the reason, but on the other hand there seems to be a simple solution.
Thanks,
Matthias
Hi Chris,
regarding the path assignment: the CellView object is not directly linked to the actual view. It's a descriptor object which you can't modify, hence direct assignment of the path is not possible. But I admit that would we very intuitive. …
Hi Z Lim,
you mean, using the pixmap property still won't work? That is strange since it works with HTML.
That's strange since it means the resource is there but the ui loader is not able to access it, while the QLabel is. Are you sure you have re…
Hi David,
yes, you're right. I have fixed it for 0.24 already. Tonight there will be a new snapshot with this fix and the others you have mentioned in the other discussions.
Thanks again,
Matthias
Hi David,
thanks for mentioning this. I simply didn't have icon assignment for menus on my screen.
I was able to fix that issue, except when you try to create a top-level menu with an icon: apparently Qt does not like menu bar entries with an icon…
Hi David,
The symptoms you describe look like the return value of the "configure" method is not "false" - if it's true, the configuration events will basically be blocked with similar effects than you describe.
To prevent the t…
Hi David,
well, you'd need a way to watch the configuration settings. That's more or less the database holding the configuration parameters where various sources (including scripts) send their configuration requests to. Later these requests will be…
Hi Ines,
Sorry for the confusion: "is_valid?" is actually giving that internal error in 0.23. This is already fixed in the upcoming 0.24 version.
"is_null?" is not a bad choice in your case.
But be aware that there is a subtle…
Hi David,
the difference between both methods is that in the build-in DRC feature the DRCEngine object is created once per run while in your case it's being reused.
This has one specific effect in your case: The DRCEngine object tracks the output …
Hi,
the inst array will hold RBA::Instance objects which you can think of as pointers into the database. By calling their "delete" method the original instance in the database is deleted.
The pointers still exists, hence the inst members…
Hi Michael,
that's very likely related to the Ruby version used in the Windows binary. I am preparing a new major release currently which uses a different Ruby version and I'll check whether the problem is gone with that.
Thanks for mentioning the…
Hi David,
thanks for mentioning this.
Functionality wise there should not be a difference: they should still be executed automatically on startup. They are just not visible in the macro editor.
These files are actually playing a very special role…
Hi Chris,
thanks very much for the comments!
I just like to add that usually you won't need the manager object. The LayoutView#commit and LayoutView#transaction methods are usually sufficient:
# Begins the transaction (undo/redo support)view.tran…