|
@@ -14,9 +14,6 @@ from app.db_utils import (
|
|
QueryManager,
|
|
QueryManager,
|
|
get_insert_product_statement
|
|
get_insert_product_statement
|
|
)
|
|
)
|
|
-from app.widgets import (
|
|
|
|
- SuggestionPopup,
|
|
|
|
-)
|
|
|
|
from app.activities import (
|
|
from app.activities import (
|
|
show_or_exit,
|
|
show_or_exit,
|
|
ActivityManager,
|
|
ActivityManager,
|
|
@@ -85,15 +82,6 @@ def _apply_choice_callback(activity_manager, base, name, widget, value):
|
|
base.apply_choice(name)(widget, value)
|
|
base.apply_choice(name)(widget, value)
|
|
activity_manager.show(base.update())
|
|
activity_manager.show(base.update())
|
|
|
|
|
|
-def _show_suggestions_callback(activity_manager, base, name, options):
|
|
|
|
- cur = activity_manager.current()
|
|
|
|
- activity_manager.show(
|
|
|
|
- activity_manager.create(SuggestionPopup, None,
|
|
|
|
- cur, name, options,
|
|
|
|
- lambda w,x: _apply_choice_callback(activity_manager, base, name, w, x),
|
|
|
|
- lambda: activity_manager.show(cur)
|
|
|
|
- ))
|
|
|
|
-
|
|
|
|
def _insert_new_product_callback(activity_manager, query_manager, product, category, group):
|
|
def _insert_new_product_callback(activity_manager, query_manager, product, category, group):
|
|
activity_manager.app.log.write(
|
|
activity_manager.app.log.write(
|
|
'{};\n'.format(get_insert_product_statement(product, category, group)))
|
|
'{};\n'.format(get_insert_product_statement(product, category, group)))
|
|
@@ -110,11 +98,12 @@ def _new_product_callback(
|
|
activity_manager.show(
|
|
activity_manager.show(
|
|
activity_manager.create(NewProduct, 'new_product',
|
|
activity_manager.create(NewProduct, 'new_product',
|
|
query_manager, cur, name, txn.data,
|
|
query_manager, cur, name, txn.data,
|
|
- lambda t: _autocomplete_callback(activity_manager, query_manager, 'new_product', t, data),
|
|
|
|
|
|
+ lambda t, open_pop_up_cb: _autocomplete_callback(activity_manager, query_manager, 'new_product', t, data, open_pop_up_cb),
|
|
txn.apply_changes,
|
|
txn.apply_changes,
|
|
lambda product, category, group: _insert_new_product_callback(
|
|
lambda product, category, group: _insert_new_product_callback(
|
|
activity_manager, query_manager, product, category, group),
|
|
activity_manager, query_manager, product, category, group),
|
|
- lambda: activity_manager.show(cur)
|
|
|
|
|
|
+ lambda: activity_manager.show(cur),
|
|
|
|
+ lambda name, widget, value: _apply_choice_callback(activity_manager, 'new_product', name, widget, value)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
|
|
@@ -122,11 +111,13 @@ def _autocomplete_callback(
|
|
activity_manager: ActivityManager,
|
|
activity_manager: ActivityManager,
|
|
query_manager: QueryManager,
|
|
query_manager: QueryManager,
|
|
base: str,
|
|
base: str,
|
|
- name: str, data: dict
|
|
|
|
|
|
+ name: str, data: dict,
|
|
|
|
+ open_pop_up_cb,
|
|
):
|
|
):
|
|
options = query_manager.unique_suggestions(name, **data)
|
|
options = query_manager.unique_suggestions(name, **data)
|
|
if len(options) > 0:
|
|
if len(options) > 0:
|
|
- _show_suggestions_callback(activity_manager, base, name, options)
|
|
|
|
|
|
+ open_pop_up_cb(options)
|
|
|
|
+
|
|
elif len(options) == 0 and activity_manager.current() is not activity_manager.get('new_product'):
|
|
elif len(options) == 0 and activity_manager.current() is not activity_manager.get('new_product'):
|
|
if name in ('product', 'category', 'group'):
|
|
if name in ('product', 'category', 'group'):
|
|
_new_product_callback(activity_manager, query_manager, name, data)
|
|
_new_product_callback(activity_manager, query_manager, name, data)
|
|
@@ -213,11 +204,12 @@ query_manager = QueryManager(cur, display)
|
|
activity_manager.create(TransactionEditor, 'transaction',
|
|
activity_manager.create(TransactionEditor, 'transaction',
|
|
query_manager, cols, grid_layout, side_pane, bottom_pane,
|
|
query_manager, cols, grid_layout, side_pane, bottom_pane,
|
|
lambda: _save_and_clear_callback(activity_manager),
|
|
lambda: _save_and_clear_callback(activity_manager),
|
|
- lambda name, data: _autocomplete_callback(activity_manager, query_manager, 'transaction', name, data))
|
|
|
|
|
|
+ lambda name, data, open_pop_up_cb: _autocomplete_callback(activity_manager, query_manager, 'transaction', name, data, open_pop_up_cb),
|
|
|
|
+ lambda name, widget, value: _apply_choice_callback(activity_manager, 'transaction', name, widget, value))
|
|
|
|
|
|
app = GroceryTransactionEditor(activity_manager, cur, log)
|
|
app = GroceryTransactionEditor(activity_manager, cur, log)
|
|
|
|
|
|
-loop = urwid.MainLoop(app, palette, unhandled_input=show_or_exit)
|
|
|
|
|
|
+loop = urwid.MainLoop(app, palette, unhandled_input=show_or_exit, pop_ups=True)
|
|
loop.run()
|
|
loop.run()
|
|
|
|
|
|
cur.close()
|
|
cur.close()
|