diff --git a/newfol b/newfol index 5604b50..963781a 100755 --- a/newfol +++ b/newfol @@ -55,7 +55,7 @@ class KeyboardShortcuts(dict): self["meta d"] = "right" self["meta k"] = "left" self["meta g"] = "delete" - #self["meta y"] = "remove" + self["meta y"] = "remove" self["tab"] = "next-field" self["meta f"] = "next-field" self["meta j"] = "previous-field" @@ -774,22 +774,24 @@ class RecordListView(ListView): else: self._render_type = "urwid" def _delete_selected_record(self): - rec = self.items[self._get_selected_item_position()] - recs = list(filter(lambda x: x is not rec, DatabaseData().records)) - DatabaseData().records = recs - self.items = list(filter(lambda x: x is not rec, self.items)) - try: - self._delete_record(rec) - except: - pass - self.rerender(self.loop) + selected = self._get_selected_item_position() + rec = self.items[selected] + rec.deleted = True + self.render(self.loop) + self.listwalker.set_focus(selected) def _render_records(self, loop, title, recs, fields): self.loop = loop formatter = RecordFormatter(recs, fields) - content = urwid.SimpleListWalker([ - urwid.AttrMap(urwid.Text(text), "item", - "focused-item") - for text in formatter.format()]) + def attr_maps(formatter, recs): + pairs = zip(formatter.format(), recs) + result = [] + for text, rec in pairs: + attrs = ["item", "focused-item"] + if rec.deleted: + attrs = ["deleted", "focused-deleted"] + result.append(urwid.AttrMap(urwid.Text(text), *attrs)) + return result + content = urwid.SimpleListWalker(attr_maps(formatter, recs)) if self._render_type == "urwid": return self._render_listview(title, recs, content) elif self._render_type == "editor-ro": @@ -1057,6 +1059,8 @@ def start_curses(): palette = [ ('bg', 'black', 'yellow', '', 'black', '#ffa'), ('text', 'black', 'yellow', '', '#860', '#ffa'), + ('focused-deleted', 'dark gray', 'light red', '', '#666', '#a00'), + ('deleted', 'light red', 'dark gray', '', '#a00', '#666'), ('focused-item', 'yellow', 'black', '', '#ffa', '#860'), ('item', 'text'), ('description', 'text'),