Skip to content

Commit

Permalink
Make tree headers movable and save user ordering. (#822)
Browse files Browse the repository at this point in the history
  • Loading branch information
IdrisMiles committed Oct 28, 2020
1 parent babaa38 commit f0a596d
Show file tree
Hide file tree
Showing 14 changed files with 87 additions and 9 deletions.
20 changes: 19 additions & 1 deletion cuegui/cuegui/AbstractTreeWidget.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ def __init__(self, parent):
self.setAlternatingRowColors(True)

self.setSortingEnabled(True)
self.header().setSectionsMovable(False)
self.header().setSectionsMovable(True)
self.header().setStretchLastSection(True)
self.sortByColumn(0, QtCore.Qt.AscendingOrder)

Expand Down Expand Up @@ -528,3 +528,21 @@ def setColumnVisibility(self, settings):
for col in range(len(settings)):
if col <= self.columnCount():
self.setColumnHidden(col, settings[col])

################################################################################
# Allow the user to move columns and remember position
################################################################################

def getColumnOrder(self):
settings = {}
header = self.header()
for col in range(header.count()):
settings[col] = header.logicalIndex(col)
return settings

def setColumnOrder(self, settings):
header = self.header()
cols = sorted(settings.keys(), key=lambda x: int(x))
for col in cols:
old_col = header.visualIndex(settings[col])
header.moveSection(int(old_col), int(col))
6 changes: 6 additions & 0 deletions cuegui/cuegui/FrameMonitor.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,12 @@ def getColumnVisibility(self):
def setColumnVisibility(self, settings):
self.frameMonitorTree.setColumnVisibility(settings)

def getColumnOrder(self):
return self.frameMonitorTree.getColumnOrder()

def setColumnOrder(self, settings):
self.frameMonitorTree.setColumnOrder(settings)

def filterLayersFromDoubleClick(self, layerNames):
self._filterLayersHandleByLayer(layerNames)

Expand Down
6 changes: 6 additions & 0 deletions cuegui/cuegui/HostMonitor.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,12 @@ def getColumnVisibility(self):
def setColumnVisibility(self, settings):
self.hostMonitorTree.setColumnVisibility(settings)

def getColumnOrder(self):
return self.hostMonitorTree.getColumnOrder()

def setColumnOrder(self, settings):
self.hostMonitorTree.setColumnOrder(settings)

# ==============================================================================
# Text box to filter by host name
# ==============================================================================
Expand Down
6 changes: 6 additions & 0 deletions cuegui/cuegui/LimitsWidget.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,12 @@ def getColumnVisibility(self):
def setColumnVisibility(self, settings):
self.__monitorLimits.setColumnVisibility(settings)

def getColumnOrder(self):
return self.__monitorLimits.getColumnOrder()

def setColumnOrder(self, settings):
self.__monitorLimits.setColumnOrder(settings)


class LimitsTreeWidget(cuegui.AbstractTreeWidget.AbstractTreeWidget):
def __init__(self, parent):
Expand Down
6 changes: 6 additions & 0 deletions cuegui/cuegui/ProcMonitor.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,12 @@ def getColumnVisibility(self):
def setColumnVisibility(self, settings):
self.procMonitorTree.setColumnVisibility(settings)

def getColumnOrder(self):
return self.procMonitorTree.getColumnOrder()

def setColumnOrder(self, settings):
self.procMonitorTree.setColumnOrder(settings)

# ==============================================================================
# Text box to load procs by hostname
# ==============================================================================
Expand Down
6 changes: 6 additions & 0 deletions cuegui/cuegui/SubscriptionsWidget.py
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,12 @@ def getColumnVisibility(self):
def setColumnVisibility(self, settings):
self.__monitorSubscriptions.setColumnVisibility(settings)

def getColumnOrder(self):
return self.__monitorSubscriptions.getColumnOrder()

def setColumnOrder(self, settings):
self.__monitorSubscriptions.setColumnOrder(settings)


class SubscriptionsTreeWidget(cuegui.AbstractTreeWidget.AbstractTreeWidget):
def __init__(self, parent):
Expand Down
5 changes: 4 additions & 1 deletion cuegui/cuegui/plugins/AllocationsPlugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,10 @@ def __init__(self, parent):

self.pluginRegisterSettings([("columnVisibility",
self.__monitorAllocations.getColumnVisibility,
self.__monitorAllocations.setColumnVisibility)])
self.__monitorAllocations.setColumnVisibility),
("columnOrder",
self.__monitorAllocations.getColumnOrder,
self.__monitorAllocations.setColumnOrder)])

################################################################################
# Allocations
Expand Down
5 changes: 4 additions & 1 deletion cuegui/cuegui/plugins/LimitsPlugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,7 @@ def __init__(self, parent):

self.pluginRegisterSettings([("columnVisibility",
self.__limitsWidget.getColumnVisibility,
self.__limitsWidget.setColumnVisibility)])
self.__limitsWidget.setColumnVisibility),
("columnOrder",
self.__limitsWidget.getColumnOrder,
self.__limitsWidget.setColumnOrder)])
5 changes: 4 additions & 1 deletion cuegui/cuegui/plugins/MonitorCuePlugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,10 @@ def __init__(self, parent):
self.__monitorCue.setColumnVisibility),
("columnWidths",
self.__monitorCue.getColumnWidths,
self.__monitorCue.setColumnWidths)])
self.__monitorCue.setColumnWidths),
("columnOrder",
self.__monitorCue.getColumnOrder,
self.__monitorCue.setColumnOrder)])

self.addShows([os.getenv('SHOW')])

Expand Down
8 changes: 7 additions & 1 deletion cuegui/cuegui/plugins/MonitorHostsPlugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,4 +54,10 @@ def __init__(self, parent):
self.__monitorHosts.setColumnVisibility),
("procColumnVisibility",
self.__monitorProcs.getColumnVisibility,
self.__monitorProcs.setColumnVisibility)])
self.__monitorProcs.setColumnVisibility),
("hostColumnOrder",
self.__monitorHosts.getColumnOrder,
self.__monitorHosts.setColumnOrder),
("procColumnOrder",
self.__monitorProcs.getColumnOrder,
self.__monitorProcs.setColumnOrder)])
8 changes: 7 additions & 1 deletion cuegui/cuegui/plugins/MonitorJobDetailsPlugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,13 @@ def __init__(self, parent):
self.__monitorFrames.setColumnWidths),
("layerColumnWidths",
self.__monitorLayers.getColumnWidths,
self.__monitorLayers.setColumnWidths)])
self.__monitorLayers.setColumnWidths),
("frameColumnOrder",
self.__monitorFrames.getColumnOrder,
self.__monitorFrames.setColumnOrder),
("layerColumnOrder",
self.__monitorLayers.getColumnOrder,
self.__monitorLayers.setColumnOrder)])

def handleLayerFilter(self, names):
self.__monitorFrames.filterLayersFromDoubleClick(names)
Expand Down
5 changes: 4 additions & 1 deletion cuegui/cuegui/plugins/MonitorJobsPlugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,10 @@ def __init__(self, parent):
self.jobMonitor.setColumnVisibility),
("columnWidths",
self.jobMonitor.getColumnWidths,
self.jobMonitor.setColumnWidths)])
self.jobMonitor.setColumnWidths),
("columnOrder",
self.jobMonitor.getColumnOrder,
self.jobMonitor.setColumnOrder)])

def addJob(self, object):
if cuegui.Utils.isProc(object):
Expand Down
5 changes: 4 additions & 1 deletion cuegui/cuegui/plugins/ShowsPlugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,7 @@ def __init__(self, parent):

self.pluginRegisterSettings([("columnVisibility",
self.__showsWidget.getColumnVisibility,
self.__showsWidget.setColumnVisibility)])
self.__showsWidget.setColumnVisibility),
("columnOrder",
self.__showsWidget.getColumnOrder,
self.__showsWidget.setColumnOrder)])
5 changes: 4 additions & 1 deletion cuegui/cuegui/plugins/SubscriptionsPlugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,4 +53,7 @@ def __init__(self, parent):
self.__subscriptionsWidget.setShow),
("columnVisibility",
self.__subscriptionsWidget.getColumnVisibility,
self.__subscriptionsWidget.setColumnVisibility)])
self.__subscriptionsWidget.setColumnVisibility),
("columnOrder",
self.__subscriptionsWidget.getColumnOrder,
self.__subscriptionsWidget.setColumnOrder)])

0 comments on commit f0a596d

Please sign in to comment.