Skip to content

Commit f0a596d

Browse files
authored
Make tree headers movable and save user ordering. (#822)
1 parent babaa38 commit f0a596d

14 files changed

+87
-9
lines changed

cuegui/cuegui/AbstractTreeWidget.py

+19-1
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ def __init__(self, parent):
8888
self.setAlternatingRowColors(True)
8989

9090
self.setSortingEnabled(True)
91-
self.header().setSectionsMovable(False)
91+
self.header().setSectionsMovable(True)
9292
self.header().setStretchLastSection(True)
9393
self.sortByColumn(0, QtCore.Qt.AscendingOrder)
9494

@@ -528,3 +528,21 @@ def setColumnVisibility(self, settings):
528528
for col in range(len(settings)):
529529
if col <= self.columnCount():
530530
self.setColumnHidden(col, settings[col])
531+
532+
################################################################################
533+
# Allow the user to move columns and remember position
534+
################################################################################
535+
536+
def getColumnOrder(self):
537+
settings = {}
538+
header = self.header()
539+
for col in range(header.count()):
540+
settings[col] = header.logicalIndex(col)
541+
return settings
542+
543+
def setColumnOrder(self, settings):
544+
header = self.header()
545+
cols = sorted(settings.keys(), key=lambda x: int(x))
546+
for col in cols:
547+
old_col = header.visualIndex(settings[col])
548+
header.moveSection(int(old_col), int(col))

cuegui/cuegui/FrameMonitor.py

+6
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,12 @@ def getColumnVisibility(self):
9292
def setColumnVisibility(self, settings):
9393
self.frameMonitorTree.setColumnVisibility(settings)
9494

95+
def getColumnOrder(self):
96+
return self.frameMonitorTree.getColumnOrder()
97+
98+
def setColumnOrder(self, settings):
99+
self.frameMonitorTree.setColumnOrder(settings)
100+
95101
def filterLayersFromDoubleClick(self, layerNames):
96102
self._filterLayersHandleByLayer(layerNames)
97103

cuegui/cuegui/HostMonitor.py

+6
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,12 @@ def getColumnVisibility(self):
7777
def setColumnVisibility(self, settings):
7878
self.hostMonitorTree.setColumnVisibility(settings)
7979

80+
def getColumnOrder(self):
81+
return self.hostMonitorTree.getColumnOrder()
82+
83+
def setColumnOrder(self, settings):
84+
self.hostMonitorTree.setColumnOrder(settings)
85+
8086
# ==============================================================================
8187
# Text box to filter by host name
8288
# ==============================================================================

cuegui/cuegui/LimitsWidget.py

+6
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,12 @@ def getColumnVisibility(self):
6969
def setColumnVisibility(self, settings):
7070
self.__monitorLimits.setColumnVisibility(settings)
7171

72+
def getColumnOrder(self):
73+
return self.__monitorLimits.getColumnOrder()
74+
75+
def setColumnOrder(self, settings):
76+
self.__monitorLimits.setColumnOrder(settings)
77+
7278

7379
class LimitsTreeWidget(cuegui.AbstractTreeWidget.AbstractTreeWidget):
7480
def __init__(self, parent):

cuegui/cuegui/ProcMonitor.py

+6
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,12 @@ def getColumnVisibility(self):
7777
def setColumnVisibility(self, settings):
7878
self.procMonitorTree.setColumnVisibility(settings)
7979

80+
def getColumnOrder(self):
81+
return self.procMonitorTree.getColumnOrder()
82+
83+
def setColumnOrder(self, settings):
84+
self.procMonitorTree.setColumnOrder(settings)
85+
8086
# ==============================================================================
8187
# Text box to load procs by hostname
8288
# ==============================================================================

cuegui/cuegui/SubscriptionsWidget.py

+6
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,12 @@ def getColumnVisibility(self):
141141
def setColumnVisibility(self, settings):
142142
self.__monitorSubscriptions.setColumnVisibility(settings)
143143

144+
def getColumnOrder(self):
145+
return self.__monitorSubscriptions.getColumnOrder()
146+
147+
def setColumnOrder(self, settings):
148+
self.__monitorSubscriptions.setColumnOrder(settings)
149+
144150

145151
class SubscriptionsTreeWidget(cuegui.AbstractTreeWidget.AbstractTreeWidget):
146152
def __init__(self, parent):

cuegui/cuegui/plugins/AllocationsPlugin.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,10 @@ def __init__(self, parent):
5050

5151
self.pluginRegisterSettings([("columnVisibility",
5252
self.__monitorAllocations.getColumnVisibility,
53-
self.__monitorAllocations.setColumnVisibility)])
53+
self.__monitorAllocations.setColumnVisibility),
54+
("columnOrder",
55+
self.__monitorAllocations.getColumnOrder,
56+
self.__monitorAllocations.setColumnOrder)])
5457

5558
################################################################################
5659
# Allocations

cuegui/cuegui/plugins/LimitsPlugin.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,7 @@ def __init__(self, parent):
3939

4040
self.pluginRegisterSettings([("columnVisibility",
4141
self.__limitsWidget.getColumnVisibility,
42-
self.__limitsWidget.setColumnVisibility)])
42+
self.__limitsWidget.setColumnVisibility),
43+
("columnOrder",
44+
self.__limitsWidget.getColumnOrder,
45+
self.__limitsWidget.setColumnOrder)])

cuegui/cuegui/plugins/MonitorCuePlugin.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,10 @@ def __init__(self, parent):
8282
self.__monitorCue.setColumnVisibility),
8383
("columnWidths",
8484
self.__monitorCue.getColumnWidths,
85-
self.__monitorCue.setColumnWidths)])
85+
self.__monitorCue.setColumnWidths),
86+
("columnOrder",
87+
self.__monitorCue.getColumnOrder,
88+
self.__monitorCue.setColumnOrder)])
8689

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

cuegui/cuegui/plugins/MonitorHostsPlugin.py

+7-1
Original file line numberDiff line numberDiff line change
@@ -54,4 +54,10 @@ def __init__(self, parent):
5454
self.__monitorHosts.setColumnVisibility),
5555
("procColumnVisibility",
5656
self.__monitorProcs.getColumnVisibility,
57-
self.__monitorProcs.setColumnVisibility)])
57+
self.__monitorProcs.setColumnVisibility),
58+
("hostColumnOrder",
59+
self.__monitorHosts.getColumnOrder,
60+
self.__monitorHosts.setColumnOrder),
61+
("procColumnOrder",
62+
self.__monitorProcs.getColumnOrder,
63+
self.__monitorProcs.setColumnOrder)])

cuegui/cuegui/plugins/MonitorJobDetailsPlugin.py

+7-1
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,13 @@ def __init__(self, parent):
8080
self.__monitorFrames.setColumnWidths),
8181
("layerColumnWidths",
8282
self.__monitorLayers.getColumnWidths,
83-
self.__monitorLayers.setColumnWidths)])
83+
self.__monitorLayers.setColumnWidths),
84+
("frameColumnOrder",
85+
self.__monitorFrames.getColumnOrder,
86+
self.__monitorFrames.setColumnOrder),
87+
("layerColumnOrder",
88+
self.__monitorLayers.getColumnOrder,
89+
self.__monitorLayers.setColumnOrder)])
8490

8591
def handleLayerFilter(self, names):
8692
self.__monitorFrames.filterLayersFromDoubleClick(names)

cuegui/cuegui/plugins/MonitorJobsPlugin.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,10 @@ def __init__(self, parent):
7979
self.jobMonitor.setColumnVisibility),
8080
("columnWidths",
8181
self.jobMonitor.getColumnWidths,
82-
self.jobMonitor.setColumnWidths)])
82+
self.jobMonitor.setColumnWidths),
83+
("columnOrder",
84+
self.jobMonitor.getColumnOrder,
85+
self.jobMonitor.setColumnOrder)])
8386

8487
def addJob(self, object):
8588
if cuegui.Utils.isProc(object):

cuegui/cuegui/plugins/ShowsPlugin.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,7 @@ def __init__(self, parent):
3939

4040
self.pluginRegisterSettings([("columnVisibility",
4141
self.__showsWidget.getColumnVisibility,
42-
self.__showsWidget.setColumnVisibility)])
42+
self.__showsWidget.setColumnVisibility),
43+
("columnOrder",
44+
self.__showsWidget.getColumnOrder,
45+
self.__showsWidget.setColumnOrder)])

cuegui/cuegui/plugins/SubscriptionsPlugin.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,7 @@ def __init__(self, parent):
5353
self.__subscriptionsWidget.setShow),
5454
("columnVisibility",
5555
self.__subscriptionsWidget.getColumnVisibility,
56-
self.__subscriptionsWidget.setColumnVisibility)])
56+
self.__subscriptionsWidget.setColumnVisibility),
57+
("columnOrder",
58+
self.__subscriptionsWidget.getColumnOrder,
59+
self.__subscriptionsWidget.setColumnOrder)])

0 commit comments

Comments
 (0)