From 298395ff58b834940297632e3c9ba42004878044 Mon Sep 17 00:00:00 2001 From: Dan Smith Date: Wed, 15 May 2024 18:30:39 -0700 Subject: [PATCH] Allow unsorting by clicking the header corner --- chirp/wxui/memedit.py | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/chirp/wxui/memedit.py b/chirp/wxui/memedit.py index 9ad42304..c97ead14 100644 --- a/chirp/wxui/memedit.py +++ b/chirp/wxui/memedit.py @@ -71,15 +71,19 @@ def __lt__(self, other): else: return self.value < other.value - sorted_values = sorted(( - (asc != bool( - super(ChirpGridTable, self).GetValue(realrow, col).strip()), - super(ChirpGridTable, self).GetValue(realrow, col), - realrow) - for realrow in range(0, self.GetRowsCount())), - reverse=not asc) - self._rowmap = dict((i, mapping[-1]) - for i, mapping in enumerate(sorted_values)) + if col < 0: + self._rowmap = {x: x for x in range(0, self.GetRowsCount())} + else: + sorted_values = sorted(( + (asc != bool( + super(ChirpGridTable, self).GetValue( + realrow, col).strip()), + super(ChirpGridTable, self).GetValue(realrow, col), + realrow) + for realrow in range(0, self.GetRowsCount())), + reverse=not asc) + self._rowmap = dict((i, mapping[-1]) + for i, mapping in enumerate(sorted_values)) self._rowmap_rev = {v: k for k, v in self._rowmap.items()} def GetValue(self, row, col): @@ -763,6 +767,8 @@ def __init__(self, radio, *a, **k): row_labels.Bind(wx.EVT_MOTION, self._rowheader_mouseover) col_labels = self._grid.GetGridColLabelWindow() col_labels.Bind(wx.EVT_MOTION, self._colheader_mouseover) + corner_label = self._grid.GetGridCornerLabelWindow() + corner_label.Bind(wx.EVT_LEFT_DOWN, self._sort_column) self._dragging_rows = None self._dc = wx.ScreenDC() @@ -1406,9 +1412,14 @@ def _resolve_offset(self, mem): return True def _sort_column(self, event): - col = event.GetCol() - cur = self._grid.GetSortingColumn() - asc = not self._grid.IsSortOrderAscending() if col == cur else True + if isinstance(event, wx.grid.GridEvent): + col = event.GetCol() + cur = self._grid.GetSortingColumn() + asc = not self._grid.IsSortOrderAscending() if col == cur else True + else: + col = -1 + asc = True + self._grid.SetSortingColumn(wx.NOT_FOUND, True) LOG.debug('Sorting col %s asc %s', col, asc) self._table.sort_via(col, asc) self.refresh()