@ -156,24 +156,22 @@ class SessionTreeController(object):
#TODO: save sorting in user-wide qt application settings
#TODO: save sorting in user-wide qt application settings
#We remember sorting via signals layoutAboutToBeChanged and restore via layoutChanged
#We remember sorting via signals layoutAboutToBeChanged and restore via layoutChanged
self . sortByColumn = 0 #by name
self . sortByColumnValue = 0 #by name
self . sortDescending = 0 # Qt::SortOrder which is 0 for ascending and 1 for descending
self . sortDescendingValue = 0 # Qt::SortOrder which is 0 for ascending and 1 for descending
self . treeWidget . header ( ) . setSortIndicator ( 0 , 0 ) #Hack/Workaround. On startup it is not enough to set sorting. New items will be added in a random position. Maybe that is our async network adding.
self . treeWidget . header ( ) . setSortIndicator ( 0 , 0 ) #Hack/Workaround. On startup it is not enough to set sorting. New items will be added in a random position. Maybe that is our async network adding.
#self.treeWidget.sortByColumn(self.sortByColumn, self.sortDescending)
#self.treeWidget.sortByColumn(self.sortByColumnValue , self.sortDescendingValue )
api . callbacks . sessionsChanged . append ( self . _reactCallback_sessionsChanged )
api . callbacks . sessionsChanged . append ( self . _reactCallback_sessionsChanged )
api . callbacks . sessionLocked . append ( self . _reactCallback_sessionLocked )
api . callbacks . sessionLocked . append ( self . _reactCallback_sessionLocked )
api . callbacks . sessionFileChanged . append ( self . _reactCallback_sessionFileChanged )
api . callbacks . sessionFileChanged . append ( self . _reactCallback_sessionFileChanged )
self . treeWidget . itemDoubleClicked . connect ( self . _reactSignal_itemDoubleClicked )
self . treeWidget . itemDoubleClicked . connect ( self . _reactSignal_itemDoubleClicked )
self . treeWidget . customContextMenuRequested . connect ( self . contextMenu )
self . treeWidget . customContextMenuRequested . connect ( self . contextMenu )
self . treeWidget . model ( ) . layoutAboutToBeChanged . connect ( self . _reactSignal_rememberSorting )
self . treeWidget . model ( ) . layoutAboutToBeChanged . connect ( self . _reactSignal_rememberSorting )
self . treeWidget . model ( ) . layoutChanged . connect ( self . _reactSignal_restoreSorting )
#self.treeWidget.model().layoutChanged.connect(self._reactSignal_restoreSorting )
self . mainWindow . ui . button_new_session . clicked . connect ( self . _reactSignal_newSession )
self . mainWindow . ui . button_new_session . clicked . connect ( self . _reactSignal_newSession )
self . mainWindow . ui . button_load_selected_session . clicked . connect ( self . _reactSignal_openSelected )
self . mainWindow . ui . button_load_selected_session . clicked . connect ( self . _reactSignal_openSelected )
logger . info ( " Full View Session Chooser ready " )
logger . info ( " Full View Session Chooser ready " )
def _reactCallback_sessionFileChanged ( self , name : str , timestamp : str ) :
def _reactCallback_sessionFileChanged ( self , name : str , timestamp : str ) :
@ -197,7 +195,7 @@ class SessionTreeController(object):
self . treeWidget . resizeColumnToContents ( i )
self . treeWidget . resizeColumnToContents ( i )
#Make the name column a few pixels wider
#Make the name column a few pixels wider
self . treeWidget . setColumnWidth ( 0 , self . treeWidget . columnWidth ( 0 ) + 25 )
self . treeWidget . setColumnWidth ( 0 , self . treeWidget . columnWidth ( 0 ) + 25 )
self . treeWidget . sortByColumn ( self . sortByColumn , self . sortDescending )
self . treeWidget . sortItems ( self . sortByColumnValue , self . sortDescendingValue )
def _addItemNested ( self , sessionDict : dict ) :
def _addItemNested ( self , sessionDict : dict ) :
@ -327,11 +325,13 @@ class SessionTreeController(object):
api . sessionRename ( nsmSessionName , widget . result )
api . sessionRename ( nsmSessionName , widget . result )
def _reactSignal_rememberSorting ( self , * args ) :
def _reactSignal_rememberSorting ( self , * args ) :
self . sortByColumn = self . treeWidget . header ( ) . sortIndicatorSection ( )
self . sortByColumnValue = self . treeWidget . header ( ) . sortIndicatorSection ( )
self . sortDescending = self . treeWidget . header ( ) . sortIndicatorOrder ( )
self . sortDescendingValue = self . treeWidget . header ( ) . sortIndicatorOrder ( )
def _reactSignal_restoreSorting ( self , * args ) :
def _reactSignal_restoreSorting ( self , * args ) :
self . treeWidget . sortByColumn ( self . sortByColumn , self . sortDescending )
""" Do not use as signal!!! Will lead to infinite recursion since Qt 5.12.2 """
#self.treeWidget.sortItems(self.sortByColumnValue, self.sortDescendingValue)
raise RuntimeError ( )
def _reactSignal_nestedFlatChanged ( self , checkStatus : bool ) :
def _reactSignal_nestedFlatChanged ( self , checkStatus : bool ) :
""" #flat does not create directory items but changes the session name to dir/foo/bar """
""" #flat does not create directory items but changes the session name to dir/foo/bar """
@ -342,4 +342,5 @@ class SessionTreeController(object):
#And rebuild the items without fetching new data.
#And rebuild the items without fetching new data.
if self . _cachedSessionDicts : #not startup
if self . _cachedSessionDicts : #not startup
self . _reactCallback_sessionsChanged ( self . _cachedSessionDicts )
self . _reactCallback_sessionsChanged ( self . _cachedSessionDicts )
self . treeWidget . sortByColumn ( self . sortByColumn , self . sortDescending )
self . treeWidget . sortItems ( self . sortByColumnValue , self . sortDescendingValue )