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)
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
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.
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
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
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
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.
Edouard Tisserant [Mon, 11 Mar 2019 13:51:07 +0100] rev 2521
Long due merge
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
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
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Fri, 01 Mar 2019 16:55:16 +0300] rev 2518
Fix section styling in code editor (python and c extensions) if non-latin symbols are used in the code
Problem exists even if non-latin characters are placed in comments.
Close #76
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 21 Feb 2019 11:39:50 +0300] rev 2517
update localization template
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 21 Feb 2019 11:27:16 +0300] rev 2516
merge
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 21 Feb 2019 11:25:58 +0300] rev 2515
updated list of translators
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 21 Feb 2019 11:25:03 +0300] rev 2514
update translations from https://www.transifex.com/beremiz/beremiz-ide
added Basque (eu) and Vietnamese (Viet Nam) (vi_VN) translations
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 21 Feb 2019 10:58:37 +0300] rev 2513
Add SpinButtons for integer and floating point variables in ForceVariableDialog
it allows to change variable value using only mouse.
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 21 Feb 2019 10:17:38 +0300] rev 2512
Fix non-marking as manually forced floating point variable if the value isn't integer
For example, if user in debug variable panel set any floating point
variable to 34.3, then it's not shown as forced (blue color) and user
can't release this enforcement.
If user changes the value to 34.0, then enforcement shows
correctly. This is done because binary representation of floating point
numbers in IDE and runtime can be slightly different (double vs float)
and as a result values aren't equal.
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 14 Feb 2019 10:27:24 +0300] rev 2511
Don't close ForceVariableDialog if user entered wrong new value
return back to edit field in this case
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 14 Feb 2019 10:19:30 +0300] rev 2510
Additional fix for rewrite ForceVariableDialog commit (9076249f)
fix following backtrace:
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/wx-3.0-gtk3/wx/_core.py", line 16765, in <lambda>
lambda event: event.callable(*event.args, **event.kw) )
File "/home/developer/WorkData/PLC/beremiz/beremiz/controls/DebugVariablePanel/DebugVariableViewer.py", line 232, in HandleButton
button.ProcessCallback()
File "/home/developer/WorkData/PLC/beremiz/beremiz/controls/DebugVariablePanel/GraphButton.py", line 156, in ProcessCallback
self.Callback()
File "/home/developer/WorkData/PLC/beremiz/beremiz/controls/DebugVariablePanel/DebugVariableViewer.py", line 350, in OnForceButton
self.ForceValue(self.ItemsDict.values()[0])
File "/home/developer/WorkData/PLC/beremiz/beremiz/controls/DebugVariablePanel/DebugVariableViewer.py", line 428, in ForceValue
dialog.GetValue())
File "/home/developer/WorkData/PLC/beremiz/beremiz/dialogs/ForceVariableDialog.py", line 232, in GetValue
return GetTypeValue[self.IEC_Type](wx.TextEntryDialog.GetValue(self))
TypeError: unbound method GetValue() must be called with TextEntryDialog instance as first argument (got ForceVariableDialog instance instead)
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 14 Feb 2019 10:02:58 +0300] rev 2509
Fix redraw problems in preview frames and debug panel
The problem was that direct call of RefreshView (now DrawView) doesn't
generate EVT_PAINT (at least on GNU/Linux with Wayland and wxgtk build
with gtk3+ support).
Now RefreshView simply triggers EVT_PAINT and EVT_PAINT handler does actual work.
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 14 Feb 2019 09:44:19 +0300] rev 2508
Rewrite ForceVariableDialog. It's not based on wx.TextEntryDialog
Don't customize standard wx.TextEntryDialog on the fly, implement your
own dialog for that with expected behavior and without any hacks.
Mario de Sousa <msousa@fe.up.pt> [Wed, 13 Feb 2019 13:35:48 +0000] rev 2507
merge updates to modbus/mb_runtime.c
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 14 Jan 2019 12:30:32 +0300] rev 2506
fix 'SaveAs' in case of overwriting existing project
Traceback (most recent call last):
File "/home/developer/WorkData/PLC/beremiz/beremiz/BeremizIDE.py", line 959, in OnSaveProjectAsMenu
self.CTR.SaveProjectAs()
File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 600, in SaveProjectAs
self.SaveProject(old_project_path)
File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 579, in SaveProject
self._getProjectFilesPath(self.ProjectPath))
File "/usr/lib/python2.7/shutil.py", line 200, in copytree
os.makedirs(dst)
File "/usr/lib/python2.7/os.py", line 157, in makedirs
mkdir(name, mode)
OSError: [Errno 17] File exists: '/tmp/tests/project_files'
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 14 Jan 2019 12:17:48 +0300] rev 2505
fix 'SaveAs' to non-empty directory and directory without write permissions
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 12 Jan 2019 15:02:17 +0300] rev 2504
fix problems with recursive beremiz.h inclusion
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 12 Jan 2019 13:57:16 +0300] rev 2503
remove LogMessage prototype from plc_main_head.c
it's not needed, because prototype is included in beremiz.h
But it caused problems with TARGET_LOGGING_DISABLE.
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 07 Jan 2019 23:28:28 +0300] rev 2502
merge
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sun, 06 Jan 2019 03:11:39 +0300] rev 2501
Make online debug optional
It could be useful for very small targets like Atmega (Arduino) and
for target bring-up there developer want to have running PLC program,
but has not implemented runtime communication yet.
TARGET_DEBUG_AND_RETAIN_DISABLE - completely disable debug and retain
functionality. Previously named TARGET_DEBUG_DISABLE.
TARGET_ONLINE_DEBUG_DISABLE - can be used to enable retain
functionality (no define TARGET_DEBUG_AND_RETAIN_DISABLE is used), but disable
online debug with corresponding RAM/FLASH overhead.
TARGET_LOGGING_DISABLE - disables logging functionality from runtime and PLC program
TARGET_EXT_SYNC_DISABLE - disables PLC program synchronization with
external events. For example, it could be used to synchronize several
PLCs that control motors for different axes.
By default all these options are off.
To test generate program for Generic target, put following files in
project files directory and run build.sh after generating PLC program.
This is very easy to integrate into makefile (Generic target).
[------------- build.sh --------------------------]
files=$(find $PWD/../build -iname '*.c' | grep -v POUS.c)
arm-none-eabi-gcc \
-DTARGET_DEBUG_AND_RETAIN_DISABLE \
-DTARGET_ONLINE_DEBUG_DISABLE \
-DTARGET_LOGGING_DISABLE \
-DTARGET_EXT_SYNC_DISABLE \
-flto -ffunction-sections -fdata-sections -I../../../../matiec/lib/C \
$files \
main.c \
-Wl,--Map=./program.map,--cref \
-nodefaultlibs --specs=nano.specs -Wl,--static -Wl,--gc-section -Wl,--start-group -lc -lm -lnosys -lgcc -Wl,--end-group
[------------------------------------------------]
[------------- main.c --------------------------]
#ifndef TARGET_DEBUG_AND_RETAIN_DISABLE
void Retain(void){}
void InValidateRetainBuffer(void){}
void ValidateRetainBuffer(void){}
#endif
extern void __run(void);
int main(void)
{
for(;;) {
__run();
// sleep common_ticktime__ ns
// add common_ticktime__ ns to __CURRENT_TIME
}
return 0;
}
[------------------------------------------------]