Scroll Module area instead of replacing widgets

Change-Id: Id06eaabee294e032a71e7b28255a9b818763737e
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/30638
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
This commit is contained in:
Alexander Zaft 2023-03-09 13:43:36 +01:00 committed by Markus Zolliker
parent 23c9aa6038
commit d8621bdc2c
2 changed files with 11 additions and 39 deletions

View File

@ -102,12 +102,12 @@ class ModuleItem(QTreeWidgetItem):
class ModuleOverview(QTreeWidget): class ModuleOverview(QTreeWidget):
itemChanged = pyqtSignal(str, str, str, str) # current module/param, prev module/param
itemChanged = pyqtSignal(str, str)
def __init__(self, node, parent=None): def __init__(self, node, parent=None):
super().__init__(parent) super().__init__(parent)
self._node = node self._node = node
self._modules = {} self._modules = {}
self.last_was_clear = False
#self.setHeaderHidden(True) #self.setHeaderHidden(True)
#self.setChildIndicatorPolicy(QTreeWidgetItem.DontShowIndicator) #self.setChildIndicatorPolicy(QTreeWidgetItem.DontShowIndicator)
@ -145,15 +145,7 @@ class ModuleOverview(QTreeWidget):
return super().mouseReleaseEvent(event) return super().mouseReleaseEvent(event)
def handleCurrentItemChanged(self, current, previous): def handleCurrentItemChanged(self, current, previous):
if previous is None or self.last_was_clear: self.itemChanged.emit(current.module, current.param or '')
pmod = ''
pparam = ''
self.last_was_clear = False
else:
pmod = previous.module
pparam = previous.param or ''
cparam = current.param or ''
self.itemChanged.emit(current.module, cparam, pmod, pparam)
def setToDisconnected(self): def setToDisconnected(self):
for module in self._modules.values(): for module in self._modules.values():
@ -184,8 +176,6 @@ class ModuleOverview(QTreeWidget):
selected = self.selectedItems() selected = self.selectedItems()
if not selected: if not selected:
return return
prev = selected[0]
pmod, pparam = prev.module, prev.param
self.clearSelection() self.clearSelection()
self.itemChanged.emit('', '', pmod, pparam) self.itemChanged.emit('', '')
self.last_was_clear = True self.last_was_clear = True

View File

@ -6,7 +6,6 @@ from frappy.gui.qt import QCursor, QFont, QFontMetrics, QIcon, QInputDialog, \
toHtmlEscaped toHtmlEscaped
from frappy.errors import SECoPError from frappy.errors import SECoPError
from frappy.gui.modulectrl import ModuleCtrl
from frappy.gui.moduleoverview import ModuleOverview from frappy.gui.moduleoverview import ModuleOverview
from frappy.gui.modulewidget import ModuleWidget from frappy.gui.modulewidget import ModuleWidget
from frappy.gui.paramview import ParameterView from frappy.gui.paramview import ParameterView
@ -98,7 +97,6 @@ class NodeWidget(QWidget):
self.detailed = False self.detailed = False
self._modules = OrderedDict() self._modules = OrderedDict()
self._detailedModules = {}
self._detailedParams = {} self._detailedParams = {}
self._activePlots = {} self._activePlots = {}
@ -127,16 +125,10 @@ class NodeWidget(QWidget):
widget.showDetails(self.detailed) widget.showDetails(self.detailed)
self.noPlots.connect(widget.plotsPresent) self.noPlots.connect(widget.plotsPresent)
self._modules[module] = widget self._modules[module] = widget
details = ModuleCtrl(node, module)
self._detailedModules[module] = details
viewLayout.addWidget(details)
details.setHidden(True)
self._detailedParams[module] = {} self._detailedParams[module] = {}
for param in node.getParameters(module): for param in node.getParameters(module):
view = ParameterView(node, module, param) view = ParameterView(node, module, param)
self._detailedParams[module][param] = view self._detailedParams[module][param] = view
view.setHidden(True)
viewLayout.addWidget(view)
viewLayout.addWidget(widget) viewLayout.addWidget(widget)
self._initNodeInfo() self._initNodeInfo()
@ -178,24 +170,14 @@ class NodeWidget(QWidget):
def getSecNode(self): def getSecNode(self):
return self._node return self._node
def changeViewContent(self, module, param, prevmod, prevparam): def changeViewContent(self, module, param):
if prevmod == '': if module == '' and param == '':
for mod in self._modules.values(): return # for now, don't do anything when resetting selection
mod.setHidden(True) if param == '':
elif prevparam == '': self.view.ensureWidgetVisible(self._modules[module])
self._detailedModules[prevmod].setHidden(True)
else: else:
self._detailedParams[prevmod][prevparam].setHidden(True) pw = self._modules[module]._paramWidgets[param][0]
if module == '': self.view.ensureWidgetVisible(pw)
# no module -> reset to overview
for mod in self._modules.values():
mod.setHidden(False)
elif param == '':
# set to single module view
self._detailedModules[module].setHidden(False)
else:
# set to single param view
self._detailedParams[module][param].setHidden(False)
def _treeContextMenu(self, pos): def _treeContextMenu(self, pos):
index = self.tree.indexAt(pos) index = self.tree.indexAt(pos)