|
@@ -123,6 +123,8 @@ class RecipeEditor(FocusWidget):
|
|
|
|
|
|
if getattr(self._w.original_widget, 'original_widget', None) is None:
|
|
|
return super().keypress(size, key)
|
|
|
+ _c = self.container.get_focus_path()
|
|
|
+ _p = next((w[1] for w,p in self.iter_focus_paths() if p == _c))
|
|
|
|
|
|
if key == 'tab':
|
|
|
self.advance_focus()
|
|
@@ -133,7 +135,9 @@ class RecipeEditor(FocusWidget):
|
|
|
elif key == 'ctrl w':
|
|
|
self.save()
|
|
|
else:
|
|
|
- return super().keypress(size, key)
|
|
|
+ if _p.keypress((size[0],) if getattr(_p, 'contents', None) is None else size, key):
|
|
|
+ return super().keypress(size, key)
|
|
|
+ return
|
|
|
|
|
|
def apply_choice(self, name, value):
|
|
|
self.apply_changes(name, value)
|
|
@@ -437,7 +441,7 @@ class RecipeEditor(FocusWidget):
|
|
|
FloatEdit(('bg', f''), default=ingredient[1]),
|
|
|
AutoCompleteEdit(('bg', f'unit#{idx}'), edit_text=ingredient[2]),
|
|
|
) for idx, ingredient in enumerate(recipe['ingredients'])
|
|
|
- ] if len(recipe['ingredients']) else [ ]
|
|
|
+ ]
|
|
|
|
|
|
self.organic = NoTabCheckBox(('bg', "Organic"), state='mixed')
|
|
|
self.instructions = Edit('', edit_text=recipe['instructions'] or u'', multiline=True, allow_tab=True)
|
|
@@ -473,10 +477,9 @@ class RecipeEditor(FocusWidget):
|
|
|
Padding(_copyright, 'center', width=('relative', 100)),
|
|
|
])
|
|
|
banner = AttrMap(banner, 'banner')
|
|
|
-
|
|
|
+
|
|
|
left_pane, middle_pane, right_pane, gutter = self.init_ingredients()
|
|
|
|
|
|
-
|
|
|
self.components = {
|
|
|
'top_pane': Columns([
|
|
|
(9, Pile([
|
|
@@ -501,7 +504,6 @@ class RecipeEditor(FocusWidget):
|
|
|
'left_pane': (12, left_pane),
|
|
|
'gutter': (8, gutter)
|
|
|
}
|
|
|
- self.add_ingredient()
|
|
|
|
|
|
widget = Pile([
|
|
|
banner,
|
|
@@ -534,4 +536,5 @@ class RecipeEditor(FocusWidget):
|
|
|
],
|
|
|
)
|
|
|
)
|
|
|
+ self.add_ingredient()
|
|
|
self.update()
|