Mon, 18 Mar 2019 12:10:36 +0300merge
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 18 Mar 2019 12:10:36 +0300] rev 2548
merge

Mon, 18 Mar 2019 12:09:41 +0300check_source.sh: fix sed error: -e expression #1, char 25: Invalid range end
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 18 Mar 2019 12:09:41 +0300] rev 2547
check_source.sh: fix sed error: -e expression #1, char 25: Invalid range end

Warning happen only if old sed (4.4) is used.

Mon, 18 Mar 2019 12:07:49 +0300Fix pylint warning [C0325(superfluous-parens), ] Unnecessary parens after u'if' keyword
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 18 Mar 2019 12:07:49 +0300] rev 2546
Fix pylint warning [C0325(superfluous-parens), ] Unnecessary parens after u'if' keyword

************* Module runtime.PLCObject
runtime/PLCObject.py:609: [C0325(superfluous-parens), ] Unnecessary parens after u'if' keyword

Wed, 13 Mar 2019 15:58:34 +0300Update Beremiz dependencies because of added PYROS:// support
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 13 Mar 2019 15:58:34 +0300] rev 2545
Update Beremiz dependencies because of added PYROS:// support

Wed, 13 Mar 2019 15:54:17 +0300Fix header and convert comments to docstrings in PSK_Adapter
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 13 Mar 2019 15:54:17 +0300] rev 2544
Fix header and convert comments to docstrings in PSK_Adapter

Wed, 13 Mar 2019 15:43:45 +0300Fix Pyro work with SSL wrapper (sslpsk)
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 13 Mar 2019 15:43:45 +0300] rev 2543
Fix Pyro work with SSL wrapper (sslpsk)

Following error was shown in Beremiz console:
PYRO connecting to URI : PYROS://127.0.0.1:3001#beremiz
Exception while connecting to 'PYROS://127.0.0.1:3001#beremiz': non-zero flags not allowed in calls to recv() on <class 'ssl.SSLSocket'>
Connection failed to PYROS://127.0.0.1:3001#beremiz!

Reason is that Pyro calls socket recv() with MSGWAITALL flag, that causes ValueError exception.

https://docs.python.org/2/library/ssl.html
recv(), recv_into() (but passing a non-zero flags argument is not allowed)

Wed, 13 Mar 2019 14:27:24 +0300Fix crash in runtime if PSK secret is missing
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 13 Mar 2019 14:27:24 +0300] rev 2542
Fix crash in runtime if PSK secret is missing

./Beremiz_service.py -s $PWD/psk2.txt -n beremiz /tmp/beremiz
Beremiz_service: 1.2-1378c18402c3+

Traceback (most recent call last):
File "./Beremiz_service.py", line 511, in <module>
ensurePSK(servicename, PSKpath)
File "/home/developer/WorkData/PLC/beremiz/beremiz/runtime/Stunnel.py", line 32, in ensurePSK
PSKgen(ID, PSKpath)
File "/home/developer/WorkData/PLC/beremiz/beremiz/runtime/Stunnel.py", line 23, in PSKgen
call(restart_stunnel_cmdline)
File "/home/developer/WorkData/PLC/beremiz/beremiz/runtime/spawn_subprocess.py", line 116, in call
pid = posix_spawn.posix_spawnp(cmd[0], cmd)
File "/home/developer/.local/lib/python2.7/site-packages/posix_spawn/_impl.py", line 120, in posix_spawnp
return _posix_spawn(lib.posix_spawnp, *args, **kwargs)
File "/home/developer/.local/lib/python2.7/site-packages/posix_spawn/_impl.py", line 111, in _posix_spawn
_check_error(res, path)
File "/home/developer/.local/lib/python2.7/site-packages/posix_spawn/_impl.py", line 10, in _check_error
raise OSError(errno, os.strerror(errno), path)
OSError: [Errno 2] No such file or directory: '/etc/init.d/S50stunnel'

Wed, 13 Mar 2019 14:14:31 +0300Update build instruction for BACNet in README
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 13 Mar 2019 14:14:31 +0300] rev 2541
Update build instruction for BACNet in README

in r3189 Steve added new feature to bacnet-stack: network port - to
access configuration and properties of network ports of a device.
https://sourceforge.net/p/bacnet/code/3189/

It's not implemented by Beremiz.

Wed, 13 Mar 2019 14:11:13 +0300Replace md5 module with hashlib
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 13 Mar 2019 14:11:13 +0300] rev 2540
Replace md5 module with hashlib

fix following pylint error:

************* Module connectors.ConnectorBase
connectors/ConnectorBase.py:7: [W1648(bad-python3-import), ] Module moved in Python 3
************* Module runtime.PLCObject
runtime/PLCObject.py:33: [W1648(bad-python3-import), ] Module moved in Python 3

Wed, 13 Mar 2019 11:51:40 +0300Remove execute attributes from runtime/PLCObject.py
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 13 Mar 2019 11:51:40 +0300] rev 2539
Remove execute attributes from runtime/PLCObject.py

Wed, 13 Mar 2019 11:49:46 +0300Fix typo
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 13 Mar 2019 11:49:46 +0300] rev 2538
Fix typo

Wed, 13 Mar 2019 11:47:03 +0300Fix various pylint and pep8 errors
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 13 Mar 2019 11:47:03 +0300] rev 2537
Fix various pylint and pep8 errors

Check basic code-style problems for PEP-8
pep8 version: 2.4.0
./connectors/PYRO/__init__.py:57:43: E261 at least two spaces before inline comment
./connectors/SchemeEditor.py:29:21: E128 continuation line under-indented for visual indent
./controls/IDBrowser.py:101:23: E127 continuation line over-indented for visual indent
./controls/IDBrowser.py:102:23: E127 continuation line over-indented for visual indent

Check for problems using pylint ...
No config file found, using default configuration
pylint 1.9.4,
astroid 1.6.5
Python 2.7.16rc1 (default, Feb 18 2019, 11:05:09)
[GCC 8.2.0]
Use multiple threads for pylint
Using config file /home/developer/WorkData/PLC/beremiz/beremiz/.pylint
************* Module connectors.PYRO_dialog
connectors/PYRO_dialog.py:9: [W0611(unused-import), ] Unused import wx
************* Module connectors
connectors/__init__.py:32: [W1652(deprecated-types-field), ] Accessing a deprecated fields on the types module
connectors/__init__.py:32: [C0411(wrong-import-order), ] standard import "from types import ClassType" should be placed before "from connectors.ConnectorBase import ConnectorBase"
************* Module connectors.PYRO.PSK_Adapter
connectors/PYRO/PSK_Adapter.py:7: [C0411(wrong-import-order), ] standard import "import ssl" should be placed before "import sslpsk"
************* Module connectors.SchemeEditor
connectors/SchemeEditor.py:29: [C0330(bad-continuation), ] Wrong continued indentation (add 1 space).
wx.ALIGN_CENTER_VERTICAL),
^|
connectors/SchemeEditor.py:42: [W0631(undefined-loop-variable), SchemeEditor.__init__] Using possibly undefined loop variable 'tag'
************* Module runtime.WampClient
runtime/WampClient.py:138: [W1612(unicode-builtin), WampSession.onJoin] unicode built-in referenced
runtime/WampClient.py:154: [W1612(unicode-builtin), WampSession.publishWithOwnID] unicode built-in referenced
runtime/WampClient.py:346: [W1612(unicode-builtin), PublishEvent] unicode built-in referenced
runtime/WampClient.py:351: [W1612(unicode-builtin), PublishEventWithOwnID] unicode built-in referenced
runtime/WampClient.py:31: [W0611(unused-import), ] Unused str imported from builtins as text
************* Module runtime.PLCObject
runtime/PLCObject.py:35: [W1648(bad-python3-import), ] Module moved in Python 3
runtime/PLCObject.py:35: [C0411(wrong-import-order), ] standard import "import md5" should be placed before "from six.moves import xrange"
runtime/PLCObject.py:36: [C0411(wrong-import-order), ] standard import "from tempfile import mkstemp" should be placed before "from six.moves import xrange"
runtime/PLCObject.py:37: [C0411(wrong-import-order), ] standard import "import shutil" should be placed before "from six.moves import xrange"
runtime/PLCObject.py:38: [C0411(wrong-import-order), ] standard import "from functools import wraps, partial" should be placed before "from six.moves import xrange"
************* Module runtime.Worker
runtime/Worker.py:12: [W1648(bad-python3-import), ] Module moved in Python 3
************* Module runtime.spawn_subprocess
runtime/spawn_subprocess.py:125: [C0325(superfluous-parens), ] Unnecessary parens after 'print' keyword
runtime/spawn_subprocess.py:130: [C0325(superfluous-parens), ] Unnecessary parens after 'print' keyword
runtime/spawn_subprocess.py:125: [E1601(print-statement), ] print statement used
runtime/spawn_subprocess.py:130: [E1601(print-statement), ] print statement used
************* Module controls.IDBrowser
controls/IDBrowser.py:101: [C0330(bad-continuation), ] Wrong continued indentation (remove 5 spaces).
if self.isManager
| ^
controls/IDBrowser.py:102: [C0330(bad-continuation), ] Wrong continued indentation (remove 5 spaces).
else dv.DATAVIEW_CELL_INERT),
| ^
************* Module Beremiz_service
Beremiz_service.py:34: [W0611(unused-import), ] Unused import __builtin__

Wed, 13 Mar 2019 10:19:30 +0300Fix invalid python3 syntax
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 13 Mar 2019 10:19:30 +0300] rev 2536
Fix invalid python3 syntax

Syntax checking using python3 ...
Python 3.7.2+
File "./connectors/PYRO/__init__.py", line 76
except Exception, e:
^
SyntaxError: invalid syntax

Syntax error in ./connectors/PYRO/__init__.py
File "./connectors/PYRO/PSK_Adapter.py", line 40
except ProtocolError, x:
^
SyntaxError: invalid syntax

Syntax error in ./s.py
File "./runtime/Worker.py", line 67
raise _job.exc_info[0], _job.exc_info[1], _job.exc_info[2]
^
SyntaxError: invalid syntax

Wed, 13 Mar 2019 10:02:11 +0300Exclude pyjslib.py from python3 syntax correction check
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 13 Mar 2019 10:02:11 +0300] rev 2535
Exclude pyjslib.py from python3 syntax correction check

pyjs doesn't support python3 and it's unmaintained.
async is a new keyword introduced in python 3.7.

./tests/tools/check_source.sh
Syntax checking using python3 ...
Python 3.7.2+

Syntax error in ./runtime/Worker.py
File "./svgui/pyjs/lib/pyjslib.py", line 24
def import_module(path, parent_module, module_name, dynamic=1, async=False):
^
SyntaxError: invalid syntax

Wed, 13 Mar 2019 09:56:37 +0300revert occasionally committed changed first_steps project.
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 13 Mar 2019 09:56:37 +0300] rev 2534
revert occasionally committed changed first_steps project.

project was changed by commit:
update translations from https://www.transifex.com/beremiz/beremiz-ide (756d02cf78db)

Mon, 18 Mar 2019 07:13:04 +0000Merged in masterschlumpf/beremiz/generate-button (pull request #38)
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 18 Mar 2019 07:13:04 +0000] rev 2533
Merged in masterschlumpf/beremiz/generate-button (pull request #38)

"Generate Prgram" button

Approved-by: Andrey Skvortsov <andrej.skvortzov@gmail.com>

Fri, 15 Mar 2019 18:27:43 +0100Create a "Generate Program As..." menu to make the "Generate Program" toolbutton even more useful. generate-button
Schlumpf <schlumpf@kr-ll.de> [Fri, 15 Mar 2019 18:27:43 +0100] rev 2532
Create a "Generate Program As..." menu to make the "Generate Program" toolbutton even more useful.

The behaviour is the same as "Save" and "Save As...". Now "Generate Program" uses the last filename
if known and "Generate Progam As..." asks every time.

Fri, 15 Mar 2019 17:34:24 +0100Add "Generate Program" to toolbar in PLCOpenEditor standalone mode. generate-button
Schlumpf <schlumpf@kr-ll.de> [Fri, 15 Mar 2019 17:34:24 +0100] rev 2531
Add "Generate Program" to toolbar in PLCOpenEditor standalone mode.

Currently you can find the "Generate Program" action only in the file menu,
but this action is very often used in standalone mode, so I added toolbuffon.

Fri, 22 Mar 2019 11:10:37 +0100Merged search in CTN branch
Edouard Tisserant [Fri, 22 Mar 2019 11:10:37 +0100] rev 2530
Merged search in CTN branch

Fri, 22 Mar 2019 11:09:41 +0100Finished adding search in python and C files. Stripped debug code and useless comments. Close branch search_in_CTN
Edouard Tisserant [Fri, 22 Mar 2019 11:09:41 +0100] rev 2529
Finished adding search in python and C files. Stripped debug code and useless comments. Close branch

Fri, 22 Mar 2019 10:57:04 +0100WIP adding searching capabilities in python files. was done : search_in_CTN
Edouard Tisserant [Fri, 22 Mar 2019 10:57:04 +0100] rev 2528
WIP adding searching capabilities in python files. was done :
- added search in body of Code File Tree Nodes (moved editor code so that we CTN search can have the same sections text layout as editor to search in)

Thu, 21 Mar 2019 14:00:26 +0100WIP adding searching capabilities in python files. was done : search_in_CTN
Edouard Tisserant [Thu, 21 Mar 2019 14:00:26 +0100] rev 2527
WIP adding searching capabilities in python files. was done :
- added search in global variables used by Code File Tree Nodes

Thu, 21 Mar 2019 13:10:49 +0100WIP adding searching capabilities in python files. was done : search_in_CTN
Edouard Tisserant [Thu, 21 Mar 2019 13:10:49 +0100] rev 2526
WIP adding searching capabilities in python files. was done :
- fixed highlighting search result in text body of CTN code editor.

Thu, 21 Mar 2019 13:04:26 +0100WIP adding searching capabilities in python files. was done : search_in_CTN
Edouard Tisserant [Thu, 21 Mar 2019 13:04:26 +0100] rev 2525
WIP adding searching capabilities in python files. was done :
- change stub search results to trigger highlighting un variable panel
- trying to highlight in CTN code file editors -> problem with EditorPanel not having self.VariableEditor set...
- added highlight capability to CTN's CodeFileEditor's VariablePanel

Wed, 20 Mar 2019 11:34:41 +0100WIP adding searching capabilities in python files. was done : search_in_CTN
Edouard Tisserant [Wed, 20 Mar 2019 11:34:41 +0100] rev 2524
WIP adding searching capabilities in python files. was done :
- fixed stub CTN search results so that they can be accepted by search result panel
- worked on search result panel so that it can display those CTN results
- made search result panel display correctly stub search result, for variables and body matches
- EditProjectElement now opens CTN node as well as PlcOpen project nodes

Fri, 15 Mar 2019 14:11:49 +0100WIP adding searching capabilities in python files: search_in_CTN
Edouard Tisserant [Fri, 15 Mar 2019 14:11:49 +0100] rev 2523
WIP adding searching capabilities in python files:
- Added recursive Search capability to config tree nodes
- Added stub search to code editors, for test

Mon, 11 Mar 2019 17:20:15 +0100Fixed more pylint reports :
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 11 Mar 2019 17:20:15 +0100] rev 2522
Fixed more pylint reports :
connectors/__init__.py:31: [W1652(deprecated-types-field), ] Accessing a deprecated fields on the types module
in fact, it should have been unused import.

Mon, 11 Mar 2019 13:51:07 +0100Long due merge
Edouard Tisserant [Mon, 11 Mar 2019 13:51:07 +0100] rev 2521
Long due merge

Tue, 05 Mar 2019 11:43:20 +0300Fix backtrace on printing localized (non-ascii) error message in PLCGenerator.
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 05 Mar 2019 11:43:20 +0300] rev 2520
Fix backtrace on printing localized (non-ascii) error message in PLCGenerator.

traceback:
File "C:\Beremiz\targets\st\beremiz\..\..\..\beremiz\beremiz\BeremizIDE.py", line 811, in OnMenu
getattr(self.CTR, method)()
File "C:\Beremiz\targets\st\beremiz\..\..\..\beremiz\beremiz\ProjectController.py", line 1134, in _Build
IECGenRes = self._Generate_SoftPLC()
File "C:\Beremiz\targets\st\beremiz\..\..\..\beremiz\beremiz\ProjectController.py", line 746, in _Generate_SoftPLC
if self._Generate_PLC_ST():
File "C:\Beremiz\targets\st\beremiz\..\..\..\beremiz\beremiz\ProjectController.py", line 763, in _Generate_PLC_ST
self._getIECgeneratedcodepath())
File "C:\Beremiz\targets\st\beremiz\..\..\..\beremiz\beremiz\PLCControler.py", line 466, in GenerateProgram
errors.append(str(ex))
<type 'exceptions.UnicodeEncodeError'>: 'ascii' codec can't encode characters in position 0-9: ordinal not in range(128)
Fix backtrace on printing localized (non-ascii) error message in PLCGenerator.

traceback:
File "C:\Beremiz\targets\st\beremiz\..\..\..\beremiz\beremiz\BeremizIDE.py", line 811, in OnMenu
getattr(self.CTR, method)()
File "C:\Beremiz\targets\st\beremiz\..\..\..\beremiz\beremiz\ProjectController.py", line 1134, in _Build
IECGenRes = self._Generate_SoftPLC()
File "C:\Beremiz\targets\st\beremiz\..\..\..\beremiz\beremiz\ProjectController.py", line 746, in _Generate_SoftPLC
if self._Generate_PLC_ST():
File "C:\Beremiz\targets\st\beremiz\..\..\..\beremiz\beremiz\ProjectController.py", line 763, in _Generate_PLC_ST
self._getIECgeneratedcodepath())
File "C:\Beremiz\targets\st\beremiz\..\..\..\beremiz\beremiz\PLCControler.py", line 466, in GenerateProgram
errors.append(str(ex))
<type 'exceptions.UnicodeEncodeError'>: 'ascii' codec can't encode characters in position 0-9: ordinal not in range(128)


Close #67

Tue, 05 Mar 2019 11:19:36 +0300Fix crash if LD input contact isn't connected
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 05 Mar 2019 11:19:36 +0300] rev 2519
Fix crash if LD input contact isn't connected

Traceback (most recent call last):
File "/home/developer/WorkData/PLC/beremiz/beremiz/BeremizIDE.py", line 339, in OnMethod
obj.CTR.CallMethod('_'+meth)
File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 1996, in CallMethod
getattr(self, method)()
File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 1134, in _Build
IECGenRes = self._Generate_SoftPLC()
File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 746, in _Generate_SoftPLC
if self._Generate_PLC_ST():
File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 763, in _Generate_PLC_ST
self._getIECgeneratedcodepath())
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCControler.py", line 456, in GenerateProgram
self.ProgramChunks = GenerateCurrentProgram(self, self.Project, errors, warnings)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1762, in GenerateCurrentProgram
generator.GenerateProgram()
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 478, in GenerateProgram
self.GeneratePouProgram(pou_name)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 260, in GeneratePouProgram
program = pou_program.GenerateProgram(pou)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1718, in GenerateProgram
self.ComputeProgram(pou)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1028, in ComputeProgram
self.GenerateBlock(instance, block_infos, body, None)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1144, in GenerateBlock
expression = self.ComputeExpression(body, connections, executionOrderId > 0)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1373, in ComputeExpression
paths = self.GeneratePaths(connections, body, order, to_inout)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1344, in GeneratePaths
elif isinstance(result[0], list):
IndexError: list index out of range


Close #70