Skip to content

Commit

Permalink
Allow unsorting by clicking the header corner
Browse files Browse the repository at this point in the history
  • Loading branch information
kk7ds committed May 16, 2024
1 parent 27fbd8e commit 298395f
Showing 1 changed file with 23 additions and 12 deletions.
35 changes: 23 additions & 12 deletions chirp/wxui/memedit.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down Expand Up @@ -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()
Expand Down Expand Up @@ -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()
Expand Down

0 comments on commit 298395f

Please sign in to comment.