Edouard Tisserant [Wed, 01 Jun 2022 09:15:26 +0200] rev 3506
SVGHMI: update generated xslt.
Edouard Tisserant [Wed, 01 Jun 2022 09:14:19 +0200] rev 3505
SVGHMI: Add support for fixed X range (duration) on XY garph.
Edouard Tisserant [Wed, 01 Jun 2022 09:12:59 +0200] rev 3504
SVGHMI: add widget update rate limit on variable change.
Edouard Tisserant [Wed, 01 Jun 2022 09:09:13 +0200] rev 3503
SVGHMI: fix parsing of floating point and negative min and max limits in widget label syntax.
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 13 Jun 2022 19:22:31 +0200] rev 3502
Fix typos breaking IDE
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 13 Jun 2022 18:05:12 +0200] rev 3501
Added preliminary CLI. Supports building a project, transfering and running on PLC.
Edouard Tisserant <edouard.tisserant@gmail.com> [Thu, 26 May 2022 23:41:10 +0200] rev 3500
IDE: fix exception happening in debug mode when logging process termination.
Edouard Tisserant <edouard.tisserant@gmail.com> [Thu, 26 May 2022 23:39:30 +0200] rev 3499
SVGHMI: Adapt to Inkscape 0.92 "-e" replaced by "-o" in 1.2, and workaround access right problem when generating thumbnails.
Edouard Tisserant <edouard.tisserant@gmail.com> [Wed, 25 May 2022 20:00:31 +0200] rev 3498
Various fixes to make svghmi_traffic_light example bahave on windows.
Edouard Tisserant <edouard.tisserant@gmail.com> [Wed, 25 May 2022 09:18:37 +0200] rev 3497
IDE: fix saveAs dialog
Edouard Tisserant <edouard.tisserant@gmail.com> [Wed, 25 May 2022 09:12:58 +0200] rev 3496
IDE: fix permission checking on windows for IDE project directory.
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 23 May 2022 18:12:30 +0200] rev 3495
SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 23 May 2022 18:11:31 +0200] rev 3494
IDE/Windows: Find Inkscape binary even if Inkscape was installed for current user only.
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 23 May 2022 18:10:13 +0200] rev 3493
IDE: Workaround exception caused by dead C/C++ swig-wrapped object when debug still try to update view after close.
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 23 May 2022 16:27:56 +0200] rev 3492
IDE: better permission checking when opening a project.
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 30 May 2022 15:30:51 +0200] rev 3491
Merge changes from default to wxPython4 branch
Edouard Tisserant [Mon, 30 May 2022 12:44:04 +0200] rev 3490
SVGHMI: more fixes for XY graph + add XY graph test.
Edouard Tisserant [Thu, 26 May 2022 12:11:42 +0200] rev 3489
SVGHMI: Seems inkscape doesn't necessarily use tspan inside of text anymore.
Edouard Tisserant [Wed, 25 May 2022 10:00:24 +0200] rev 3488
SVGHMI: multiple fixes in XY graph widget. WIP.
Edouard Tisserant [Wed, 25 May 2022 09:55:36 +0200] rev 3487
SVGHMI: fix dropdown widget in case it is used as language selection widget
global i18n definitions changed but widget wasn't updated accordingly.
Edouard Tisserant [Wed, 25 May 2022 09:52:50 +0200] rev 3486
SVGHMI: prevent exception with date/time formating in sprintf.js if lang wasn't already set.
Edouard Tisserant [Wed, 25 May 2022 09:51:22 +0200] rev 3485
SVGHMI: Add forEach to local copy of pythonic.js
Edouard Tisserant [Wed, 11 May 2022 12:12:16 +0200] rev 3484
SVGHMI: many fixes on xy trend graph. WIP.
Edouard Tisserant <edouard.tisserant@gmail.com> [Thu, 26 May 2022 23:41:10 +0200] rev 3483
IDE: fix exception happening in debug mode when logging process termination.
Edouard Tisserant <edouard.tisserant@gmail.com> [Thu, 26 May 2022 23:39:30 +0200] rev 3482
SVGHMI: Adapt to Inkscape 0.92 "-e" replaced by "-o" in 1.2, and workaround access right problem when generating thumbnails.
Edouard Tisserant <edouard.tisserant@gmail.com> [Wed, 25 May 2022 20:00:31 +0200] rev 3481
Various fixes to make svghmi_traffic_light example bahave on windows.
Edouard Tisserant <edouard.tisserant@gmail.com> [Wed, 25 May 2022 09:18:37 +0200] rev 3480
IDE: fix saveAs dialog
Edouard Tisserant <edouard.tisserant@gmail.com> [Wed, 25 May 2022 09:12:58 +0200] rev 3479
IDE: fix permission checking on windows for IDE project directory.
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 23 May 2022 18:12:30 +0200] rev 3478
SVGHMI: fix active/inactive being swapped in ToggleButton
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 23 May 2022 18:11:31 +0200] rev 3477
IDE/Windows: Find Inkscape binary even if Inkscape was installed for current user only.
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 23 May 2022 18:10:13 +0200] rev 3476
IDE: Workaround exception caused by dead C/C++ swig-wrapped object when debug still try to update view after close.
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 23 May 2022 16:27:56 +0200] rev 3475
IDE: better permission checking when opening a project.
Edouard Tisserant [Fri, 06 May 2022 11:04:54 +0200] rev 3474
SVGHMI: fix syntax problems in xygraph
Edouard Tisserant [Fri, 06 May 2022 11:04:17 +0200] rev 3473
SVGHMI: fix widget's update frequency forcing : syntax checking was enforcing unit and js code was using undefined variables
Edouard Tisserant [Fri, 06 May 2022 11:02:03 +0200] rev 3472
SVGHMI: fix syntax error in sprintf.js and force makefile to regen xslt files when sprintf.js changes
Edouard Tisserant [Fri, 06 May 2022 11:01:07 +0200] rev 3471
SVGHMI: fix test/projects/svghmi "unspecified" frequency that was actualy specified...
Edouard Tisserant [Thu, 05 May 2022 11:52:24 +0200] rev 3470
SVGHMI: Add premature implementation of XY chart.
Edouard Tisserant [Fri, 06 May 2022 11:04:17 +0200] rev 3469
SVGHMI: fix widget's update frequency forcing : syntax checking was enforcing unit and js code was using undefined variables
Edouard Tisserant [Fri, 06 May 2022 11:02:03 +0200] rev 3468
SVGHMI: fix syntax error in sprintf.js and force makefile to regen xslt files when sprintf.js changes
Edouard Tisserant [Fri, 06 May 2022 11:01:07 +0200] rev 3467
SVGHMI: fix test/projects/svghmi "unspecified" frequency that was actualy specified...
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 17 May 2022 14:49:23 +0200] rev 3466
merge default
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 17 May 2022 13:22:20 +0200] rev 3465
Tests: No need to archive test results before uploading them as action artifacts.
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 17 May 2022 12:34:39 +0200] rev 3464
Tests: ...
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 17 May 2022 12:24:59 +0200] rev 3463
Tests: re-enable running test in github action, now that docker image should be cached.
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 17 May 2022 09:22:16 +0200] rev 3462
Tests: temporary disable problematic part, to force action to succeed so caching can happen.
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 17 May 2022 08:25:09 +0200] rev 3461
Tests: give test directory when creating container, not when running test.
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 17 May 2022 07:27:24 +0200] rev 3460
Tests: fix docker image export for GitHub Action caching.
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 16 May 2022 21:40:44 +0200] rev 3459
Tests: More fixes amd enhancments to run tests on Github Actions
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 16 May 2022 13:01:54 +0200] rev 3458
Tests: use script rather than alias so that bash doesn't need to be interactive shell with a TTY
etisserant <edouard.tisserant@gmail.com> [Mon, 16 May 2022 07:00:21 +0200] rev 3457
Tests: remove -it from docker invocation
Workaround "The input device is not a TTY" error on Github Action.
etisserant <edouard.tisserant@gmail.com> [Mon, 16 May 2022 00:10:30 +0200] rev 3456
Create run_tests_in_docker.yml
Edouard Tisserant [Thu, 05 May 2022 11:48:43 +0200] rev 3455
SVGHMI: Add support for forcing widget update frequency with period longer than a second. As an example, "HMI:Display|10s@/myvar" updates variable every 10 seconds.
Edouard Tisserant [Thu, 05 May 2022 10:37:36 +0200] rev 3454
SVGHMI: cosmetic fixes + removed dead code
Edouard Tisserant [Thu, 05 May 2022 10:35:29 +0200] rev 3453
SVGHMI: allow widgets to disable clipping on variables given with min and max. Setting this.clip = false disables clipping.
Edouard Tisserant [Thu, 05 May 2022 10:31:16 +0200] rev 3452
SVGHMI: allow designating widget's sub-elements as main element child rather than descendant. Names staring with "/" in yslt call to labels() only match direct widget childs.
Edouard Tisserant [Thu, 05 May 2022 10:24:56 +0200] rev 3451
SVGHMI: add localized Date and Time support to sprintf.js. Use with "%D" or "%2.1D" format style.
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 06 May 2022 14:44:32 +0200] rev 3450
Minor changes to README.md
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 06 May 2022 14:40:33 +0200] rev 3449
wxPython4 sequels: usual naming problem in grid cell change events, non kw-args to menu.Append and event not being skipped.
Edouard Tisserant <edouard.tisserant@gmail.com> [Thu, 07 Apr 2022 15:28:24 +0200] rev 3448
Tests: Fix missing <br/> in generated html report.
Edouard Tisserant <edouard.tisserant@gmail.com> [Thu, 07 Apr 2022 07:40:32 +0200] rev 3447
Tests: add HTML report generation and a workaround to bad exception handling in sikuli.
In case of exception in python code, and since a thread is running
to observe stdout, sikuli was never terminated after an exception.
Unfortunately sys.exepthook doesn't work in that version of jython/sikuli.
Test are now written inside functions witch are passed to run_test to deal
with exception.
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 29 Mar 2022 08:50:01 +0200] rev 3446
Tests: refactored sikuli based test
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 29 Mar 2022 08:30:03 +0200] rev 3445
IDE: Postpone execution of keyboard shortcut commands when given while previous command is still being executed, to prevent CTR/builder jamming.
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 29 Mar 2022 08:19:46 +0200] rev 3444
IDE: in case of unhandled exception, write bug report to given log file, so that test report can have it.
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 22 Mar 2022 14:51:30 +0100] rev 3443
Merged default's changes in wxPython4 branch
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 22 Mar 2022 14:50:46 +0100] rev 3442
Tests: fix project edit test sikuli IDE test.
Background click based on bitmap matching doesn't work.
Grid dots are not good match candidates.
Rendering probably affected by virtual display's bpp or rasterizer approximations.
Edouard Tisserant [Wed, 02 Mar 2022 11:23:50 +0100] rev 3441
runtime, retain: remove forgotten debug code.
Edouard Tisserant [Wed, 02 Mar 2022 11:22:55 +0100] rev 3440
Runtime: removing dead code
Edouard Tisserant [Tue, 15 Feb 2022 11:09:39 +0100] rev 3439
IDE: removed one (last ?) wx.NewId() that was called on each opening of project tree popup menu
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 11 Mar 2022 14:43:37 +0100] rev 3438
Tests: Re-introduced pytest based tests. Fixed them a bit, commented-out otherwise. Application tests only runs with logging test, and PLCOpenEditor tests seem broken.
Edouard Tisserant <edouard.tisserant@gmail.com> [Sat, 05 Mar 2022 11:14:00 +0100] rev 3437
Tests: Enhance robustness of stdout driven waiting state in Sikuli based tests.
Some tests were randomly passing, because from time to time waiting for idle was skiped. It was combination of multiple problems :
- buffering on stdout (now use readline + flush for each write to log)
- it is sometime required to wait for activity before waiting for timeout added "WaitForChangeAndIdle" to "stdoutIdleObserver"
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 28 Feb 2022 21:53:14 +0100] rev 3436
Tests: add an IDE test that relies on image matching.
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 28 Feb 2022 21:46:37 +0100] rev 3435
Tests: re-introduce xvfb+x11vnc target in Makefile : xvfb_sikuli
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 28 Feb 2022 21:29:46 +0100] rev 3434
Fix sequel of wxPython 4 port : double click on tab wasn't maximizing and was showing exception.
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 25 Feb 2022 14:04:09 +0100] rev 3433
Tests: Makefile's PIPESTATUS turned into small letters (wrong vim shortcut ?) leading to always passing tests.
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 18 Feb 2022 15:12:06 +0100] rev 3432
Tests: Various enhancements in Makefile and sikuli common python code.
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 18 Feb 2022 15:00:04 +0100] rev 3431
Tests: Added BEREMIZPYTHONPATH to point to Python interpreter to use for tests.
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 18 Feb 2022 14:56:54 +0100] rev 3430
Documentation/comment fix.
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 18 Feb 2022 14:51:58 +0100] rev 3429
IDE: Fix one more sequel of wxPython4 port : typo in editors/TextViewer.py
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 15 Feb 2022 16:10:19 +0100] rev 3428
Tests: Add a Makefile variable to allow changing standalone headless X server command (Xvfb by default)
Edouard Tisserant <edouard.tisserant@gmail.com> [Sun, 13 Feb 2022 21:21:14 +0100] rev 3427
Merge default head that was only merged in wxPython4
Edouard Tisserant <edouard.tisserant@gmail.com> [Sun, 13 Feb 2022 21:05:19 +0100] rev 3426
merged default
Edouard Tisserant <edouard.tisserant@gmail.com> [Sun, 13 Feb 2022 21:01:27 +0100] rev 3425
Add Docker image definition as reference platform to run IDE tests.
Edouard Tisserant <edouard.tisserant@gmail.com> [Sun, 13 Feb 2022 20:59:42 +0100] rev 3424
Tests: added tests/Makefile and a first test in tests/ide_tests. Test requires sikuli and Xvfb or Xnest.
Edouard Tisserant <edouard.tisserant@gmail.com> [Sun, 13 Feb 2022 20:53:00 +0100] rev 3423
IDE: Add -l or --log command line parameter to give a file where all content witten to console window will be appended. File can be /dev/stdout.
Edouard Tisserant <edouard.tisserant@gmail.com> [Wed, 02 Feb 2022 20:27:17 +0100] rev 3422
Merge default
Edouard Tisserant [Mon, 24 Jan 2022 11:14:56 +0100] rev 3421
IDE: follow-up on change in 83ed4ea362db - added workaround when matiec generated files contain unexpected characters.
Edouard Tisserant [Thu, 20 Jan 2022 11:39:05 +0100] rev 3420
Runtime : force using monotonic time in Timer (threading). Prevent watchdog to trigger when changing system time.
Edouard Tisserant [Thu, 20 Jan 2022 11:16:52 +0100] rev 3419
SVGHMI: remove debug code
Edouard Tisserant [Wed, 19 Jan 2022 11:41:37 +0100] rev 3418
SVGHMI: update generated XSLT
Edouard Tisserant [Wed, 19 Jan 2022 11:41:04 +0100] rev 3417
SVGHMI: fix again appication of frequency value when given in label. Use it on PushButton instance in svghmi test.
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 25 Jan 2022 17:05:14 +0100] rev 3416
TESTS: moved non-automated tests Beremiz projects stored as directories in /tests to new directory /tests/projects
etisserant <edouard.tisserant@gmail.com> [Tue, 25 Jan 2022 16:37:16 +0100] rev 3415
Create README.md in tests
Edouard Tisserant <edouard.tisserant@gmail.com> [Wed, 19 Jan 2022 08:56:16 +0100] rev 3414
SVGHMI: update generated xslt, and svghmi test project files
Edouard Tisserant <edouard.tisserant@gmail.com> [Wed, 19 Jan 2022 08:53:49 +0100] rev 3413
SVGHMI: Add pushbutton widget, that can take reflect short press in variable, but has no garantee on consistency.
Edouard Tisserant <edouard.tisserant@gmail.com> [Wed, 19 Jan 2022 08:51:45 +0100] rev 3412
SVGHMI: Fixed support for frequency parsing in widget label
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 18 Jan 2022 11:35:05 +0100] rev 3411
Merge
Edouard Tisserant [Tue, 18 Jan 2022 10:57:43 +0100] rev 3410
SVGHMI: update generated xslt
Edouard Tisserant [Tue, 18 Jan 2022 10:57:11 +0100] rev 3409
SVGHMI test: add special commandline to launch chromium as new intependent window, without GPU acceleration.
Edouard Tisserant [Tue, 18 Jan 2022 10:55:14 +0100] rev 3408
SVGHMI: add syntax for widget update frequency in widget label: HMI:WidgetType|freq:arg0:arg1@path
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 17 Jan 2022 15:17:47 +0100] rev 3407
OPC-UA client: "static" class was forgotten for open62541 client structure preventing multiple client.
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 17 Jan 2022 15:15:00 +0100] rev 3406
OPC-UA: cosmetic fix and armless typo
Edouard Tisserant <edouard.tisserant@gmail.com> [Sun, 16 Jan 2022 17:00:58 +0100] rev 3405
Merged default in wxPython4, include runtimeLists
Edouard Tisserant <edouard.tisserant@gmail.com> [Sun, 16 Jan 2022 16:59:40 +0100] rev 3404
Merge
Edouard Tisserant [Fri, 14 Jan 2022 11:40:22 +0100] rev 3403
SVGHMI: added ListSwitch widget
Edouard Tisserant <edouard.tisserant@gmail.com> [Sun, 16 Jan 2022 16:57:56 +0100] rev 3402
Merged RuntimeLists branch
Edouard Tisserant <edouard.tisserant@gmail.com> [Sun, 16 Jan 2022 16:55:27 +0100] rev 3401
Close RuntimeLists branch
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 27 Dec 2021 19:21:59 +0100] rev 3400
Fix bug introduced in previous commit : dual link list wasn't append and remove wasn't implemented correctly. Removed debug code, enhanced variable names and comments.
Edouard Tisserant [Thu, 23 Dec 2021 11:36:37 +0100] rev 3399
SVGHMI: optimization of C part : stop traversing the whole HMI tree, use dual linked list for subscriptions and single linked list for changes from HMI. Intermediate commit, still crashing in some cases.
Edouard Tisserant [Thu, 16 Dec 2021 08:32:58 +0100] rev 3398
Xenomai runtime: ensure that __DEBUG global variable is set when resuming debug.
Edouard Tisserant [Thu, 16 Dec 2021 08:15:34 +0100] rev 3397
SVGHMI: Adapt svghmi.c to changes in UnpackVar
Edouard Tisserant [Wed, 15 Dec 2021 11:56:34 +0100] rev 3396
Runtime: Now retain uses a list based on data available in VARIABLES.csv instead of traversing the whole instance tree looking for RETAIN flag.
Edouard Tisserant [Thu, 09 Dec 2021 10:21:45 +0100] rev 3395
RUNTIME: Variable forcing now uses limited list and buffer instead of systematical instance tree traversal and in-tree "fvalue" to keep track of forced value for pointed variables (external, located). Pointer swapping is performed when forcing externals and located, with backup being restored when forcing is reset. Retain still uses tree traversal.
Edouard Tisserant [Wed, 01 Dec 2021 09:54:02 +0100] rev 3394
RUNTIME: Variable trace now uses limited list and buffer instead of flags in instance tree that was requiring systematical instance tree traversal, and worst size buffer. Forcing and retain still use tree traversal.
Edouard Tisserant [Tue, 30 Nov 2021 09:52:42 +0100] rev 3393
SVGHMI: more accurate filtering of elements to unlink or not
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 30 Nov 2021 18:43:10 +0100] rev 3392
OPC-UA client: generated code now take UA_Variants on the stack directly, avoid useless allocation on write, and unalloc implicitely allocated data on read
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 30 Nov 2021 18:43:10 +0100] rev 3391
OPC-UA client: generated code now take UA_Variants on the stack directly, avoid useless allocation on write, and unalloc implicitely allocated data on read
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 16 Nov 2021 20:31:11 +0100] rev 3390
IDE: Tutorial/Example menu was broken : path of project being open was the same for all menu entries.
Edouard Tisserant <edouard.tisserant@gmail.com> [Wed, 17 Nov 2021 09:20:16 +0100] rev 3389
IDE: Tutorial/Example menu was broken, probably after a merge. Menu (and corresponding code) was duplicated. Also, path of project beeing open was the same for all menu entries.
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 16 Nov 2021 20:10:50 +0100] rev 3388
Fix bug when updating data in variable panel.
Grid event naming CHANGE->CHANGING was wrong. CHANGE->CHANGED is the way to go.
Edouard Tisserant [Mon, 08 Nov 2021 14:10:36 +0100] rev 3387
SVGHMI: update tests/evghmi to reflect/test latest changes. update generated XSLT.
Edouard Tisserant [Mon, 08 Nov 2021 14:09:44 +0100] rev 3386
SVGHMI: multiple non significant changes: doc fixes, modern style access to attributes, enforce double quotes around member name in object literals.
Edouard Tisserant [Mon, 08 Nov 2021 14:06:29 +0100] rev 3385
SVGHMI: Changes /CURRENT_PAGE_* behaviour to prevent problem whith multiclient : all clients were switching page when one was jumping.
- now PLC have to prefix page name with "!" to order page switch.
- HMI do not prefix with "!" when jumping, this avoiding looping incidently
- In case of multiple client:
CURRENT_PAGE reflects current page of last client hwo did jump
Setting CURRENT_PAGE with "!" affects all clients simultaneously
Edouard Tisserant [Mon, 08 Nov 2021 14:03:21 +0100] rev 3384
SVGHMI: changes that should fix some corner cases about unlinking and discardable element that still didn't show until now.
- list that would have been declared in some groups could have been discarded.
- elements to be unlinked were comuted based on filtering $hmi_elements, whereas $hmi_widget already filtered list
Edouard Tisserant [Thu, 04 Nov 2021 12:03:43 +0100] rev 3383
SVGHMI: update generated XSLT
Edouard Tisserant [Thu, 04 Nov 2021 12:02:08 +0100] rev 3382
merged
Edouard Tisserant [Thu, 04 Nov 2021 12:00:50 +0100] rev 3381
SVGHMI: add CURRENT_PAGE_{location} global variable to reflect currently visible page. If PLC wites some valid page reference in that variable, it triggers page switch. Additionally, fixed /HEARTBEAT being subscribed systematically by JS code even when wtchdog is not enabled.
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 02 Nov 2021 08:36:06 +0100] rev 3380
Follow-up on 83ed4ea362db 'IDE: prevent invoking matiec when IEC code did not change since last build' : build unconditionally after clean
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 29 Oct 2021 18:20:03 +0200] rev 3379
merged
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 29 Oct 2021 18:07:28 +0200] rev 3378
OPC-UA: fix types in model not being preserved after reload of CSV file, leading to exception when changing selection lists content.
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 29 Oct 2021 18:00:54 +0200] rev 3377
OPC-UA: Removed more "LocalizedText()", this time in selected variable list
Edouard Tisserant [Fri, 29 Oct 2021 11:49:22 +0200] rev 3376
IDE: prevent invoking matiec when IEC code did not change since last build.
Edouard Tisserant [Fri, 29 Oct 2021 10:27:31 +0200] rev 3375
SVGHMI: prevent systematic rebuild when there are multiple instances of SVGHMI CTN.
Edouard Tisserant [Fri, 29 Oct 2021 09:45:39 +0200] rev 3374
SVGHMI: optimize HMI tree handling C code to lower CPU usage when traversing large trees
Edouard Tisserant [Tue, 26 Oct 2021 11:41:03 +0200] rev 3373
merged
Edouard Tisserant [Thu, 21 Oct 2021 09:45:21 +0200] rev 3372
SVGHMI: prevents watchdog being triggered when SVGHMI is empty.
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 22 Oct 2021 12:48:22 +0200] rev 3371
Backed out changeset c646a1f0fb0b - was on wrong branch
Edouard Tisserant <edouard.tisserant@gmail.com> [Thu, 21 Oct 2021 20:56:05 +0200] rev 3370
Make OPC-UA client compatible with wxPython3, util wxPython4 branch deserve to be merged
Edouard Tisserant <edouard.tisserant@gmail.com> [Thu, 21 Oct 2021 20:56:05 +0200] rev 3369
Make OPC-UA client compatible with wxPython3, util wxPython4 branch deserve to be merged
Edouard Tisserant <edouard.tisserant@gmail.com> [Thu, 21 Oct 2021 13:18:18 +0200] rev 3368
IDE: Enforce wxPython3 menu appending syntax in default branch... (Fixes exception at startup)
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 19 Oct 2021 13:09:45 +0200] rev 3367
OPCUA: fix display names appearing with a "LocalizedText(" prefix when browsing localized server.
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 19 Oct 2021 12:58:22 +0200] rev 3366
OPCUA: Add browsing of variables exposed by client when selecting location from variable panel.
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 18 Oct 2021 20:41:31 +0200] rev 3365
OPCUA client: fix handling of string type Node Identifier
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 18 Oct 2021 12:40:53 +0200] rev 3364
Add OPC-UA simple synchronous client extension.
This extension uses python-opcua to growse server nodes, and generates runtime C code that use open62541.
- python-opcua must be available in python path (i.e. "import opcua" must succeed). Can be installed from pypi with "python2 -m pip install opcua --user" .
- at build time, open62541 is expected to be build in "open62541" directory, aside "beremiz" directory.
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 04 Oct 2021 07:55:57 +0200] rev 3363
SVGHMI: update test/svghmi to reflect latest changes
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 04 Oct 2021 07:52:54 +0200] rev 3362
SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 04 Oct 2021 07:41:18 +0200] rev 3361
SVGHMI: remove "value" element in meter and circularbar widget. Adding support for printf like formating make widget label too heavy. It is better to use Display widget instead.
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 04 Oct 2021 07:38:46 +0200] rev 3360
SVGHMI: Move sprintf.js out of widget_display.ysl2 since it is used in other widgets as well
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 01 Oct 2021 23:19:04 +0200] rev 3359
Dropped SVGUI, deprecated and replaced by SVGHMI. Transformed traffic_lights exemple so that it uses SVGHMI instead.
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 01 Oct 2021 15:36:09 +0200] rev 3358
SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 01 Oct 2021 15:34:04 +0200] rev 3357
SVGHMI: simplication in ScrollBar widget JS code
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 01 Oct 2021 15:32:38 +0200] rev 3356
SVGHMI: Added PathSlider widget
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 01 Oct 2021 02:54:35 +0200] rev 3355
SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 01 Oct 2021 02:52:25 +0200] rev 3354
SVGHMI: add files missing in ee9e98c856a : Add TextList widget, add support for TextList in DropDown widget, move List, TextStyleList and TextList widget code in dedicated file with documentation.
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 20 Sep 2021 15:43:10 +0200] rev 3353
SVGHMI: add test for Dropdown using TextList
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 20 Sep 2021 15:42:17 +0200] rev 3352
SVGHMI: Add TextList widget, add support for TextList in DropDown widget, move List, TextStyleList and TextList widget code in dedicated file with documentation.
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 13 Sep 2021 22:23:14 +0200] rev 3351
IDE: Add a "Tutorials and Examples" sub menu to "File" menu to directly open projects in /exemples directory. Move 'python' and 'first_steps' projecvts from /tests to /exemple
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 13 Sep 2021 17:57:47 +0200] rev 3350
WxPython 3.x -> 4.x : removed exception on stdout when closing at IDE frame
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 10 Sep 2021 14:48:07 +0200] rev 3349
Tests/svghmi_scrollbar: Fix variables names and remove useless "OnStart OnStop OnWatchdog" to use defaults.
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 10 Sep 2021 14:44:20 +0200] rev 3348
IDE/windows: Avoid exception on quit caused by runtime being killed without disconnecting.
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 10 Sep 2021 14:42:46 +0200] rev 3347
Runtime/unix: Fix typo preventing start of Pyro server
Edouard Tisserant <edouard.tisserant@gmail.com> [Thu, 09 Sep 2021 21:52:27 +0200] rev 3346
Fix SVGHMI exception when running on Windows, missing ENODATA in errno.
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 07 Sep 2021 09:08:40 +0200] rev 3345
Runtime: avoids using "pipe to self" bailout unblocking trick on windows, since select() only takes sockets.
Edouard Tisserant [Wed, 20 Oct 2021 08:57:07 +0200] rev 3344
Merge deafult in wxPython4
Edouard Tisserant [Tue, 19 Oct 2021 15:15:03 +0200] rev 3343
Merge changes about wamp reconnecting options, and added missing parts so that these changes make sense.
dgaberscek [Mon, 11 Oct 2021 09:04:53 +0200] rev 3342
Fixed Wamp reconnect on lost connection.
Edouard Tisserant [Tue, 19 Oct 2021 09:41:48 +0200] rev 3341
SVGHMI: force MaxConnections sum back to zero, preventing it to grow indefinitely on each build.
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 19 Oct 2021 13:09:45 +0200] rev 3340
OPCUA: fix display names appearing with a "LocalizedText(" prefix when browsing localized server.
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 19 Oct 2021 12:58:22 +0200] rev 3339
OPCUA: Add browsing of variables exposed by client when selecting location from variable panel.
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 18 Oct 2021 20:41:31 +0200] rev 3338
OPCUS client: fix handling of string type Node Identifier
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 18 Oct 2021 12:40:53 +0200] rev 3337
Add OPC-UA simple synchronous client extension.
This extension uses python-opcua to growse server nodes, and generates runtime C code that use open62541.
- python-opcua must be available in python path (i.e. "import opcua" must succeed). Can be installed from pypi with "python2 -m pip install opcua --user" .
- at build time, open62541 is expected to be build in "open62541" directory, aside "beremiz" directory.
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 18 Oct 2021 12:34:30 +0200] rev 3336
IDE: fix wxpython4 sequel : project "add" menu was having no extension entry visible.
Edouard Tisserant [Fri, 08 Oct 2021 09:13:02 +0200] rev 3335
Prevent exception when asking for CSV dump while variable traces are still empty
Edouard Tisserant [Fri, 08 Oct 2021 09:11:55 +0200] rev 3334
Fix wrong comment
Edouard Tisserant [Wed, 06 Oct 2021 10:45:06 +0200] rev 3333
Fixed two exceptions happening when interacting with viewer(s) in debug mode, when debug data is still not initialized.
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 04 Oct 2021 07:55:57 +0200] rev 3332
SVGHMI: update test/svghmi to reflect latest changes
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 04 Oct 2021 07:52:54 +0200] rev 3331
SVGHMI: Update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 04 Oct 2021 07:41:18 +0200] rev 3330
SVGHMI: remove "value" element in meter and circularbar widget. Adding support for printf like formating make widget label too heavy. It is better to use Display widget instead.
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 04 Oct 2021 07:38:46 +0200] rev 3329
SVGHMI: Move sprintf.js out of widget_display.ysl2 since it is used in other widgets as well
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 01 Oct 2021 23:19:04 +0200] rev 3328
Dropped SVGUI, deprecated and replaced by SVGHMI. Transformed traffic_lights exemple so that it uses SVGHMI instead.
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 01 Oct 2021 17:44:52 +0200] rev 3327
Merge from default
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 01 Oct 2021 15:36:09 +0200] rev 3326
SVGHMI: Update generated XSLT (PathSlider widget)
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 01 Oct 2021 15:34:04 +0200] rev 3325
SVGHMI: simplication in ScrollBar widget JS code
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 01 Oct 2021 15:32:38 +0200] rev 3324
SVGHMI: Added PathSlider widget
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 01 Oct 2021 02:54:35 +0200] rev 3323
SVGHMI: update generated xslt (List related changes)
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 01 Oct 2021 02:52:25 +0200] rev 3322
SVGHMI: add files missing in ee9e98c856a : Add TextList widget, add support for TextList in DropDown widget, move List, TextStyleList and TextList widget code in dedicated file with documentation.
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 20 Sep 2021 15:43:10 +0200] rev 3321
SVGHMI: add test for Dropdown using TextList
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 20 Sep 2021 15:42:17 +0200] rev 3320
SVGHMI: Add TextList widget, add support for TextList in DropDown widget, move List, TextStyleList and TextList widget code in dedicated file with documentation.
Edouard Tisserant [Thu, 16 Sep 2021 09:40:36 +0200] rev 3319
Sequel to 95fe62bfe920 : Copy description when DnD variables from Globals in resources and configuration variable panels to POUs, now including ST/IL POUs.
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 13 Sep 2021 22:23:14 +0200] rev 3318
IDE: Add a "Tutorials and Examples" sub menu to "File" menu to directly open projects in /exemples directory. Move 'python' and 'first_steps' projecvts from /tests to /exemple
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 13 Sep 2021 17:57:47 +0200] rev 3317
WxPython 3.x -> 4.x : removed exception on stdout when closing at IDE frame
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 13 Sep 2021 13:02:52 +0200] rev 3316
Merged default
Edouard Tisserant [Mon, 13 Sep 2021 12:19:17 +0200] rev 3315
Xenomai runtime: more verbose error message when problem with RT-Pipes.
Edouard Tisserant [Mon, 13 Sep 2021 12:18:08 +0200] rev 3314
Re-introduce sertup.py from Ivan Tyagov, accidentally deleted during SVGHMI branch merge
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 10 Sep 2021 14:48:07 +0200] rev 3313
Tests/svghmi_scrollbar: Fix variables names and remove useless "OnStart OnStop OnWatchdog" to use defaults.
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 10 Sep 2021 14:44:20 +0200] rev 3312
IDE/windows: Avoid exception on quit caused by runtime being killed without disconnecting.
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 10 Sep 2021 14:42:46 +0200] rev 3311
Runtime/unix: Fix typo preventing start of Pyro server
Edouard Tisserant <edouard.tisserant@gmail.com> [Thu, 09 Sep 2021 21:52:27 +0200] rev 3310
Fix SVGHMI exception when running on Windows, missing ENODATA in errno.
Edouard Tisserant <edouard.tisserant@gmail.com> [Thu, 09 Sep 2021 09:37:03 +0200] rev 3309
Workaround missing "IsMaximized" attribute for AuiPaneInfo in wxPython 4.1.0
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 07 Sep 2021 09:08:40 +0200] rev 3308
Runtime: avoids using "pipe to self" bailout unblocking trick on windows, since select() only takes sockets.
Edouard Tisserant <edouard.tisserant@gmail.com> [Sun, 05 Sep 2021 15:24:14 +0200] rev 3307
More WxPython 3.x->4.x API update
Edouard Tisserant <edouard.tisserant@gmail.com> [Sun, 05 Sep 2021 05:43:17 +0200] rev 3306
Workaround RubberBand drawing problem on GTK3
Edouard Tisserant <edouard.tisserant@gmail.com> [Sun, 05 Sep 2021 05:03:36 +0200] rev 3305
Depricated PyGridCellEditor becomes GridCellEditor
Edouard Tisserant <edouard.tisserant@gmail.com> [Sun, 05 Sep 2021 05:01:34 +0200] rev 3304
Fix exception when canvas becomes null because of window resize, and avoid useless parameter+condition in GetLogicalDC
Edouard Tisserant <edouard.tisserant@gmail.com> [Thu, 02 Sep 2021 22:18:14 +0200] rev 3303
Preliminary support for WxPython 4.1.0. Needs more testing. Grid selection/focus seems broken, and probably many other bugs hidden in dialogs and editors.
Edouard Tisserant <edouard.tisserant@gmail.com> [Thu, 02 Sep 2021 21:36:29 +0200] rev 3302
Merge SVGHMI in default
Edouard Tisserant <edouard.tisserant@gmail.com> [Thu, 02 Sep 2021 21:37:10 +0200] rev 3301
Close SVGHMI branch
Edouard Tisserant [Mon, 30 Aug 2021 09:39:23 +0200] rev 3300
Copy description when DnD variables from Globals in resources and configuration variable panels to POUs. Also prevent making exception in case some other DropSource wouldn't provide description.
Edouard Tisserant [Fri, 27 Aug 2021 11:31:32 +0200] rev 3299
SVGHMI: Allow toggling fulscreen mode my right click or long press.
Edouard Tisserant [Tue, 24 Aug 2021 11:12:41 +0200] rev 3298
Xenomai runtime: fixed bugs introduced in e3db472b0dfb (RT->nRT wakeup) + other small typos
Edouard Tisserant <edouard.tisserant@gmail.com> [Sat, 21 Aug 2021 11:02:09 +0200] rev 3297
IDE: systematically log command when launching process (was not showing in case of LOCAL:// runtime being launched)
Edouard Tisserant <edouard.tisserant@gmail.com> [Sat, 21 Aug 2021 10:54:13 +0200] rev 3296
Win32 runtime: fix build with gcc 9.3.0 from msys2
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 17 Aug 2021 12:29:36 +0200] rev 3295
Runtime+SVGHMI: Add generic wakeup of threads from PLC thread to windows implementation of plc_main.c. Also added nRT_reschedule to abstract sched_yield.
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 16 Aug 2021 22:49:08 +0200] rev 3294
Runtime+SVGHMI: Added a generic way to wakeup non-real-time threads from real-time PLC thread. Replace SVGHMI specific calls in Linux and Xenomai implementations of plc_main.c. Fixed xenomai build, xeno-config making problems with --no-auto-init argument.
Edouard Tisserant [Thu, 29 Jul 2021 11:59:28 +0200] rev 3293
Runtime: Better handling of nested strings in spawn_subprocess commandline parsing
Edouard Tisserant <edouard.tisserant@gmail.com> [Thu, 29 Jul 2021 08:25:26 +0200] rev 3292
IDE: Fixed use of RingBuffers in variable traces graphs when switching to 2D trend graph.
Edouard Tisserant [Mon, 26 Jul 2021 10:20:39 +0200] rev 3291
IDE: On windows, align better "reset to default" button in CTN config panel.
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 26 Jul 2021 08:42:26 +0200] rev 3290
SVGHMI: Fix detection of library without instance and instances without library. Added one more widget in the widget library. Renamed "view_name" in "name" in commands substitutions.
Edouard Tisserant [Fri, 23 Jul 2021 13:16:15 +0200] rev 3289
SVGHMI: Fix missing "OnWatchdog" in XSD, accidentally deleted in earlier commit.
Edouard Tisserant [Fri, 23 Jul 2021 13:15:19 +0200] rev 3288
IDE: Add a "undo" button for each field in CTN config panel to reset to default value.
Edouard Tisserant [Thu, 22 Jul 2021 12:03:34 +0200] rev 3287
SVGHMI: detect watchdog abuse (more than one HMI instance with watchdog) at build time
Edouard Tisserant [Thu, 22 Jul 2021 12:02:50 +0200] rev 3286
SVGHMI: code refactoring allowing more in depth customization for substitution on start/stop/restart commands, and default SVG choice.
Edouard Tisserant [Tue, 20 Jul 2021 10:52:25 +0200] rev 3285
Runtime: more robust loading of Wamp config, specially in case config file was corrupted.
Edouard Tisserant [Tue, 20 Jul 2021 09:43:35 +0200] rev 3284
SVGHMI: add arguments to pass to ressource factory when attaching rerssource to svghmi root
Edouard Tisserant [Tue, 20 Jul 2021 09:12:45 +0200] rev 3283
SVGHMI: fix typo in slider widget
Edouard Tisserant [Thu, 15 Jul 2021 11:50:44 +0200] rev 3282
Runtime: Handle errors in user's python code more gracefully : make exceptions and allow repair.
Edouard Tisserant [Thu, 15 Jul 2021 11:48:02 +0200] rev 3281
SVGHMI: Fixed halting problem when there is no session opened.
Edouard Tisserant [Tue, 13 Jul 2021 16:19:07 +0200] rev 3280
SVGHMI: Widget lib: small doc fix.
Edouard Tisserant [Tue, 13 Jul 2021 16:18:37 +0200] rev 3279
SVGHMI: DnD UI: Use widget's short description, initially forgoten.
Edouard Tisserant [Tue, 13 Jul 2021 16:16:58 +0200] rev 3278
SVGHMI: Fixed typo on session manager unregister, leading to wrong count of sessions and then exceptions when creating more session than allowed in protocol options. Also added more safety check in protocol in case session would be missing.
Edouard Tisserant [Tue, 13 Jul 2021 16:13:21 +0200] rev 3277
SVGHMI: set some boundaries for watchdog timings and max connection count.
Edouard Tisserant [Tue, 13 Jul 2021 16:12:15 +0200] rev 3276
SVGHMI: update generated xslt
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 12 Jul 2021 23:26:14 +0200] rev 3275
SVGHMI: fixed bug introduced in 7bdb766c2a4d, typo breaking meter widget
Edouard Tisserant [Mon, 12 Jul 2021 16:29:55 +0200] rev 3274
SVGHMI: default library path, default page when starting a SVGHMI project, error page when no SVG present
Edouard Tisserant [Mon, 12 Jul 2021 14:13:29 +0200] rev 3273
SVGHMI: finished multiclient support. Still needs more testing.
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 12 Jul 2021 10:07:52 +0200] rev 3272
SVGHMI: Fixed iterator in session manager. Getting closer to working multiclient, to be continued.
Edouard Tisserant [Fri, 09 Jul 2021 15:47:43 +0200] rev 3271
SVGHMI: Fixing last commit's multiclient implementation, in case of watchdog. To be continued, since multiclient still fail...
Edouard Tisserant [Wed, 07 Jul 2021 16:31:13 +0200] rev 3270
SVGHMI: Implemented multiserver+multiclient, but only tested with single client and single server for now. To be continued...
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 05 Jul 2021 10:51:02 +0200] rev 3269
SVGHMI: More configuration parameters : network interface, TCP port, URL path and watchdog enabling.
Edouard Tisserant <edouard.tisserant@gmail.com> [Thu, 01 Jul 2021 14:33:14 +0200] rev 3268
SVGHMI: Added a way to distinguish watchdog-enabled HMI from multi-client HMI in URL.
Edouard Tisserant <edouard.tisserant@gmail.com> [Wed, 30 Jun 2021 15:51:59 +0200] rev 3267
SVGHMI: Prepare accepting multiple clients on multiple HMI: Use POULibrary new capability to add variables to PLC Configuration. Now heartbeat and HMI tree root are added by the library part of SVGHMI, and not by each instance.