Procházet zdrojové kódy

added button to clear all data and shortcut keys to clear/save

Daniel Sheffield před 3 roky
rodič
revize
7cc66e764f
1 změnil soubory, kde provedl 18 přidání a 3 odebrání
  1. 18 3
      app/activities/TransactionEditor.py

+ 18 - 3
app/activities/TransactionEditor.py

@@ -28,6 +28,11 @@ class TransactionEditor(FocusWidget):
             self.advance_focus()
         elif key == 'shift tab':
             self.advance_focus(reverse=True)
+        elif key == 'ctrl delete':
+            self.clear()
+            self.update()
+        elif key == 'insert':
+            self.save_and_clear_cb()
         else:
             return super().keypress(size, key)
 
@@ -88,6 +93,7 @@ class TransactionEditor(FocusWidget):
             on_state_change=self.apply_organic_state
         )
         self.query_manager = query_manager
+        self.save_and_clear_cb = save_and_clear_cb
         self._init_data(fields)
         self.layout = layout
         self.side_pane = side_pane
@@ -110,7 +116,11 @@ class TransactionEditor(FocusWidget):
         header = urwid.Text(u'Fill Transaction', 'center')
         _copyright = urwid.Text(COPYRIGHT, 'center')
         done_button = urwid.Button(('streak', u'Done'))
-        urwid.connect_signal(done_button, 'click', lambda w: save_and_clear_cb())
+        clear_button = urwid.Button(('streak', u'Clear'))
+        urwid.connect_signal(done_button, 'click', lambda _: save_and_clear_cb())
+        urwid.connect_signal(clear_button, 'click', lambda _: [
+            self.clear(), self.update()
+        ])
         banner = urwid.Pile([
             urwid.Padding(header, 'center', width=('relative', 100)),
             urwid.Padding(_copyright, 'center', width=('relative', 100)),
@@ -160,12 +170,16 @@ class TransactionEditor(FocusWidget):
         widget = urwid.Pile([
             banner,
             urwid.Divider(),
-            urwid.Columns((main_pane_widget, side_pane_widget),
+            urwid.Columns([
+                    main_pane_widget, side_pane_widget
+                ],
                 dividechars=2,
             ),
             *[ fields[c] if c is not None else urwid.Divider() for c in self.bottom_pane ],
             urwid.Divider(),
-            done_button,
+            urwid.Columns([
+                (8, done_button), urwid.Divider(), (9, clear_button)
+            ])
         ])
         widget = urwid.Filler(widget, 'top') 
         widget = urwid.AttrMap(widget, 'bg')
@@ -173,5 +187,6 @@ class TransactionEditor(FocusWidget):
             [2, 0, 1, 0],
             [4,],
             [5,],
+            [6, 1],
             [7,],
         ])