Skip to content

Commit 334cc8a

Browse files
author
Sebastian
committed
Release 1.8.7.5
Added button to show/hide signal-list Added legend to signal-list Added clear cache button fixed plugin-stream bug fixed plotline-styling
1 parent 9d3e4bf commit 334cc8a

25 files changed

+2936
-744
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# RealTime OpenControl (RTOC)
22

3-
### Version 1.8.2
3+
### Version 1.8.7.5
44

55
[**This README is available in GERMAN here.**](misc/README_german.md)
66

RTOC.egg-info/PKG-INFO

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Metadata-Version: 1.2
22
Name: RTOC
3-
Version: 1.8.6
3+
Version: 1.8.7.5
44
Summary: RealTime OpenControl
55
Home-page: https://github.com/Haschtl/RealTimeOpenControl
66
Author: Sebastian Keller

RTOC.egg-info/SOURCES.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,8 @@ RTOC/data/ui/icons/icons8-stornieren-480.png
9797
RTOC/data/ui/icons/invert.png
9898
RTOC/data/ui/icons/labels.png
9999
RTOC/data/ui/icons/legend.png
100+
RTOC/data/ui/icons/list.png
101+
RTOC/data/ui/icons/list_dark.png
100102
RTOC/data/ui/icons/measure.png
101103
RTOC/data/ui/icons/mittlere_prioritaet.png
102104
RTOC/data/ui/icons/mittlere_prioritaet_grey.png
@@ -179,6 +181,7 @@ RTOC/data/ui/icons/dark/up_arrow.png
179181
RTOC/data/ui/icons/dark/up_arrow_disabled.png
180182
RTOC/lang/en_en.qm
181183
RTOC/lang/en_en.ts
184+
RTOC/lang/en_en_old.ts
182185
RTOC/plugins/Generator.py
183186
RTOC/plugins/NetWoRTOC.py
184187
RTOC/plugins/Funktionsgenerator/gen_function.ui

RTOC/LoggerPlugin.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,13 @@ def stream(self, *args, **kwargs):
4848
for idx, arg in enumerate(args):
4949
if idx == 0:
5050
y = arg
51-
kwargs['x'] = [time.time()]*len(y)
51+
if type(y) == list:
52+
kwargs['x'] = [time.time()]*len(y)
53+
else:
54+
kwargs['x'] = [time.time()]
5255
self.__cb(*args, **kwargs)
56+
else:
57+
print('ERROR: cannot stream signals. No callback connected')
5358

5459
def plot(self, x=[], y=[], *args, **kwargs):
5560
dataname = kwargs.get('sname', "noName")

RTOC/RTLogger.py

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,9 @@ def handleTcpLogger(self, loggerDict):
383383
loggerDict[call]['starttime'] = self.starttime
384384
loggerDict[call]['telegram_token'] = self.config['telegram_token']
385385
loggerDict[call]['telegram_bot'] = self.config['telegram_bot']
386-
loggerDict[call]['signal_memory'] = self.logger.getSignalSize()
386+
size, maxsize = self.getSignalSize()
387+
loggerDict[call]['signal_memory'] = size
388+
loggerDict[call]['signal_memory_limit'] = maxsize
387389
return loggerDict
388390

389391
def getPluginDict(self):
@@ -410,12 +412,12 @@ def startPlugin(self, name, callback=None, remote=True):
410412
try:
411413
if name in self.devicenames.keys():
412414
fullname = self.devicenames[name]
413-
if callback is None:
414-
self.pluginObjects[name] = importlib.import_module(
415-
fullname).Plugin(self.addDataCallback, self.plot, self.addNewEvent)
416-
else:
417-
self.pluginObjects[name] = importlib.import_module(
418-
fullname).Plugin(callback, self.addNewEvent)
415+
# if callback is None:
416+
self.pluginObjects[name] = importlib.import_module(
417+
fullname).Plugin(self.addDataCallback, self.plot, self.addNewEvent)
418+
# else:
419+
# self.pluginObjects[name] = importlib.import_module(
420+
# fullname).Plugin(callback, self.addNewEvent)
419421
self.analysePlugin(self.pluginObjects[name], name)
420422
self.pluginStatus[name] = True
421423
print("PLUGIN: " + name+' connected\n')
@@ -779,6 +781,10 @@ def addDataCallback(self, datasY=[], *args, **kwargs):
779781
if idx == 4:
780782
createCallback = arg
781783

784+
if type(datasY) == float or type(datasY) == int:
785+
datasY = [datasY]
786+
print('Warning: You should stream a list of signals, not a single signal')
787+
782788
if type(datasY) == list:
783789
if datasX == [None]:
784790
datasX = [None]*len(datasY)
@@ -1058,6 +1064,13 @@ def load_config(self):
10581064
# with open(self.config['documentfolder']+"/config.json", 'w', encoding="utf-8") as fp:
10591065
# json.dump(conf, fp, sort_keys=False, indent=4, separators=(',', ': '))
10601066

1067+
def clearCache(self):
1068+
self.config = defaultconfig
1069+
self.save_config()
1070+
filename = self.config['documentfolder']+"/plotStyles.json"
1071+
if os.path.exists(filename):
1072+
os.remove(filename)
1073+
10611074
def save_config(self):
10621075
self.config["deviceWidget"] = True
10631076
self.config["pluginsWidget"] = False
@@ -1110,14 +1123,15 @@ def getSignalNames(self, id):
11101123
return [[''], ['']]
11111124

11121125
def getSignalSize(self):
1126+
maxsize = len(self.signals)*(2*(self.maxLength*8+64)+16)
11131127
outerlayer = sys.getsizeof(self.signals)
11141128
innerlayer = 0
11151129
for sig in self.signals:
11161130
innerlayer += sys.getsizeof(sig)
11171131
innerlayer += sys.getsizeof(sig[0])*2
11181132
innerlayer += sys.getsizeof(list(sig[0]))*2
11191133
size = outerlayer + innerlayer
1120-
return size
1134+
return size, maxsize
11211135

11221136
def check_for_updates(self):
11231137
import xmlrpc.client

RTOC/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
from .data import *
22

33
name = "RTOC"
4-
__version__ = "1.8.6"
4+
__version__ = "1.8.7.5"

RTOC/__main__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ def main():
3232
'RTOC.py [-h, -s] [-r <Remoteadress>]\n -h: Hilfe\n-s: TCP-Server ohne GUI\n-r <Remoteadresse>: TCP-Client zu RTOC-Server\n-p: Starte TCP-Server auf anderem Port (Standart: 5050)')
3333
sys.exit()
3434
elif opt == '-s':
35-
logger = RTLogger.RTLogger(True, port)
35+
logger = RTLogger(True, port)
3636
#runInBackground()
3737
while logger.run:
3838
time.sleep(1)

RTOC/data/Actions.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ def connectButtons(self):
4545
self.aboutAction.triggered.connect(self.showAboutMessage)
4646
self.checkUpdatesAction.triggered.connect(self.checkUpdates)
4747

48+
self.clearCacheAction.triggered.connect(self.clearCache)
49+
4850
self.searchEdit.textChanged.connect(self.filterDevices)
4951

5052
def toggleTcpServer(self):
@@ -279,3 +281,9 @@ def checkUpdates(self):
279281
info = self.tr('Um die Version zu überprüfen, installiere RTOC mit "pip3 install RTOC"')
280282

281283
pyqtlib.info_message(self.tr('Version'), text, info)
284+
285+
def clearCache(self):
286+
ok = pyqtlib.alert_message(self.tr('Cache leeren'), self.tr('Wollen Sie wirklich den Cache leeren?'), self.tr('Dadurch gehen gespeicherte Ploteinstellungen sowie Einstellungen verloren.'))
287+
if ok:
288+
self.plotStyles = {}
289+
self.logger.clearCache()

RTOC/data/RTPlotActions.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ def initPlotWidget(self):
4444
200, 200, 200), fill=(200, 200, 200, 50), html=None) # ,
4545
self.plot.addItem(self.plotMouseLabel, ignoreBounds = True)
4646

47+
self.hideSignalsButton.clicked.connect(self.hideSignalList)
48+
4749
def initPlotViewWidget(self):
4850
self.plotViewWidget = QtWidgets.QWidget()
4951
uic.loadUi(packagedir+"/ui/plotViewWidget.ui", self.plotViewWidget)
@@ -84,6 +86,12 @@ def initPlotViewWidget(self):
8486
self.gridViewWidget.yCheckbox.clicked.connect(self.gridYAction)
8587
self.gridViewWidget.alphaSlider.valueChanged.connect(self.gridAlphaAction)
8688

89+
def hideSignalList(self):
90+
if self.hideSignalsButton.isChecked():
91+
self.widget_2.show()
92+
else:
93+
self.widget_2.hide()
94+
8795
def gridXAction(self):
8896
value = self.gridViewWidget.xCheckbox.isChecked()
8997
self.grid[0] = value
@@ -361,7 +369,7 @@ def filterDevices(self, tex):
361369
tex = tex+';'
362370
tex = tex.replace('; ', ';')
363371
for item in self.signalTreeWidgetItems:
364-
sig = self.treeWidget.itemWidget(item, 0)
372+
sig = self.treeWidget.itemWidget(item, 1)
365373
found = False
366374
for text in tex.split(';'):
367375
# print(text)

RTOC/data/RTPlotWidget.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,8 @@ def addSignalRAW(self, signalObject):
165165
self.treeWidget.setItemWidget(self.signalTreeWidgetItems[idx], 0, self.signalObjects[idx])
166166
self.treeWidget.setItemWidget(
167167
self.signalTreeWidgetItems[idx], 1, self.signalObjects[idx].label)
168+
#self.treeWidget.resizeColumnToContents(0)
169+
#self.treeWidget.resizeColumnToContents(1)
168170
self.deviceTreeWidgetItems[self.devices.index(devicename)].setExpanded(True)
169171
self.updateCountLabel()
170172

@@ -212,11 +214,15 @@ def addSignal(self, devicename, signalname, id, unit):
212214
self.treeWidget.setItemWidget(self.signalTreeWidgetItems[idx], 0, self.signalObjects[idx])
213215
self.treeWidget.setItemWidget(
214216
self.signalTreeWidgetItems[idx], 1, self.signalObjects[idx].label)
217+
218+
#self.treeWidget.resizeColumnToContents(0)
219+
#self.treeWidget.resizeColumnToContents(1)
215220
self.deviceTreeWidgetItems[self.devices.index(devicename)].setExpanded(True)
216221
self.updateCountLabel()
217222

218223
def updateCountLabel(self):
219-
self.countLabel.setText(self.tr("Signale: ")+str(len(self.signalObjects))+' ('+lib.bytes_to_str(self.logger.getSignalSize())+')')
224+
size, maxsize = self.logger.getSignalSize()
225+
self.countLabel.setText(self.tr("Signale: ")+str(len(self.signalObjects))+' ('+lib.bytes_to_str(size)+'/'+lib.bytes_to_str(maxsize)+')')
220226

221227
def startDragTreeWidget(self, actions):
222228
self.self._drag_info = {"oldWidget": "", "newWidget": "", "signalObjects": []}

0 commit comments

Comments
 (0)