From d64a42e17db9940ffacbb228782203a6db91038f Mon Sep 17 00:00:00 2001 From: Colin Hain <hain5252@gmail.com> Date: Thu, 26 Jan 2017 22:29:40 -0600 Subject: [PATCH] The combos, toast, coleslaw, and sauce is implemented. The extra strips and drinks are not because it would be the same implementation. --- main.py | 124 +++++++++++++++++++++++++++- order.kv | 240 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 359 insertions(+), 5 deletions(-) diff --git a/main.py b/main.py index da72251..5e6aba4 100644 --- a/main.py +++ b/main.py @@ -1,6 +1,7 @@ from kivy.app import App -from kivy.modules import inspector # For inspection. -from kivy.core.window import Window # For inspection. +from kivy.modules import inspector # For inspection. +from kivy.core.window import Window # For inspection. +from kivy.properties import NumericProperty, BooleanProperty __app_package__ = 'edu.unl.cse.soft161.order' __app__ = 'Order Meal' @@ -9,9 +10,126 @@ __flags__ = ['--bootstrap=sdl2', '--requirements=python2,kivy', '--orientation=l class OrderApp(App): + + total = NumericProperty(0) + sales_tax = NumericProperty(0) + subtotal = NumericProperty(0) + enable_toast_1 = BooleanProperty(True) + enable_toast_2 = BooleanProperty(True) + enable_toast_3 = BooleanProperty(True) + enable_coleslaw_1 = BooleanProperty(True) + enable_coleslaw_2 = BooleanProperty(True) + enable_coleslaw_3 = BooleanProperty(True) + enable_sauce_1 = BooleanProperty(True) + enable_sauce_2 = BooleanProperty(True) + enable_sauce_3 = BooleanProperty(True) + def build(self): - inspector.create_inspector(Window, self) # For inspection (press control-e to toggle). + inspector.create_inspector(Window, self) # For inspection (press control-e to toggle) + + def disable_toast(self): + if self.root.ids.toast_1.active: + self.enable_toast_2 = False + self.enable_toast_3 = False + if self.total >= .01: + self.subtotal -= .49 + self.sales_tax = self.subtotal * .07 + self.total = self.subtotal + self.sales_tax + elif self.root.ids.toast_2.active: + self.enable_toast_1 = False + self.enable_toast_3 = False + self.subtotal += .49 + self.sales_tax = self.subtotal * .07 + self.total = self.subtotal + self.sales_tax + elif self.root.ids.toast_3.active: + self.enable_toast_1 = False + self.enable_toast_2 = False + self.subtotal += .49 * 2 + self.sales_tax = self.subtotal * .07 + self.total = self.subtotal + self.sales_tax + + def disable_coleslaw(self): + if self.root.ids.coleslaw_1.active: + self.enable_coleslaw_2 = False + self.enable_coleslaw_3 = False + if self.total >= .01: + self.subtotal -= .49 + self.sales_tax = self.subtotal * .07 + self.total = self.subtotal + self.sales_tax + elif self.root.ids.coleslaw_2.active: + self.enable_coleslaw_1 = False + self.enable_coleslaw_3 = False + self.subtotal += .49 + self.sales_tax = self.subtotal * .07 + self.total = self.subtotal + self.sales_tax + elif self.root.ids.coleslaw_3.active: + self.enable_coleslaw_1 = False + self.enable_coleslaw_2 = False + self.subtotal += .49 * 2 + self.sales_tax = self.subtotal * .07 + self.total = self.subtotal + self.sales_tax + + def disable_sauce(self): + if self.root.ids.sauce_1.active: + self.enable_sauce_2 = False + self.enable_sauce_3 = False + if self.total >= .01: + self.subtotal -= .29 + self.sales_tax = self.subtotal * .07 + self.total = self.subtotal + self.sales_tax + elif self.root.ids.sauce_2.active: + self.enable_sauce_1 = False + self.enable_sauce_3 = False + self.subtotal += .29 + self.sales_tax = self.subtotal * .07 + self.total = self.subtotal + self.sales_tax + elif self.root.ids.sauce_3.active: + self.enable_sauce_1 = False + self.enable_sauce_2 = False + self.subtotal += .29 * 2 + self.sales_tax = self.subtotal * .07 + self.total = self.subtotal + self.sales_tax + + def combo(self): + if self.root.ids.combo_1.state == 'down': + self.subtotal += 6.38 + self.sales_tax += self.subtotal * .07 + self.total += self.subtotal + self.sales_tax + elif self.root.ids.combo_2.state == 'down': + self.subtotal += 5.98 + self.sales_tax = self.subtotal * .07 + self.total = self.subtotal + self.sales_tax + elif self.root.ids.combo_3.state == 'down': + self.subtotal += 6.98 + self.sales_tax = self.subtotal * .07 + self.total = self.subtotal + self.sales_tax + elif self.root.ids.combo_4.state == 'down': + self.subtotal += 9.98 + self.sales_tax = self.subtotal * .07 + self.total = self.subtotal + self.sales_tax + def reset(self): + self.total = 0 + self.sales_tax = 0 + self.subtotal = 0 + self.enable_toast_1 = True + self.enable_toast_2 = True + self.enable_toast_3 = True + self.root.ids.toast_1.active = False + self.root.ids.toast_2.active = False + self.root.ids.toast_3.active = False + self.enable_coleslaw_1 = True + self.enable_coleslaw_2 = True + self.enable_coleslaw_3 = True + self.root.ids.coleslaw_1.active = False + self.root.ids.coleslaw_2.active = False + self.root.ids.coleslaw_3.active = False + self.enable_sauce_1 = True + self.enable_sauce_2 = True + self.enable_sauce_3 = True + self.root.ids.sauce_1.active = False + self.root.ids.sauce_2.active = False + self.root.ids.sauce_3.active = False if __name__ == '__main__': app = OrderApp() diff --git a/order.kv b/order.kv index d23f974..b285640 100644 --- a/order.kv +++ b/order.kv @@ -1,4 +1,240 @@ BoxLayout: orientation: 'vertical' - Label: - text: '[Your meal-ordering GUI here]' + BoxLayout: + orientation: 'horizontal' + BoxLayout: + Button: + text: 'The Three Finger Combo' + id: combo_1 + on_press: app.combo() + BoxLayout: + Button: + text: 'The Chicken Sandwich Combo' + id: combo_2 + on_press: app.combo() + BoxLayout: + orientation: 'horizontal' + BoxLayout: + Button: + text: 'The Box Combo' + id: combo_3 + on_press: app.combo() + BoxLayout: + Button: + text: 'The Caniac Combo' + id: combo_4 + on_press: app.combo() + BoxLayout: + orientation: 'horizontal' + BoxLayout: + orientation: 'vertical' + Label: + text: 'Toast' + BoxLayout: + id: toast + orientation: 'horizontal' + Label: + text: 'No Toast' + font_size: 13.0 + CheckBox: + id: toast_1 + group: 'toast' + disabled: not app.enable_toast_1 + on_active: app.disable_toast() + BoxLayout: + Label: + text: '+1 Toast' + font_size: 13.0 + CheckBox: + id: toast_2 + group: 'toast' + disabled: not app.enable_toast_2 + on_active: app.disable_toast() + BoxLayout: + Label: + text: '+2 Toast' + font_size: 13.0 + CheckBox: + id: toast_3 + group: 'toast' + disabled: not app.enable_toast_3 + on_active: app.disable_toast() + BoxLayout: + orientation: 'vertical' + Label: + text: 'Coleslaw' + BoxLayout: + orientation: 'horizontal' + Label: + text: 'No Coleslaw' + font_size: 13.0 + CheckBox: + group: 'coleslaw' + id: coleslaw_1 + disabled: not app.enable_coleslaw_1 + on_active: app.disable_coleslaw() + BoxLayout: + Label: + text: '+1 Coleslaw' + font_size: 13.0 + CheckBox: + group: 'coleslaw' + id: coleslaw_2 + disabled: not app.enable_coleslaw_2 + on_active: app.disable_coleslaw() + BoxLayout: + Label: + text: '+2 Coleslaw' + font_size: 13.0 + CheckBox: + group: 'coleslaw' + id: coleslaw_3 + disabled: not app.enable_coleslaw_3 + on_active: app.disable_coleslaw() + BoxLayout: + orientation: 'vertical' + Label: + text: 'Sauce' + BoxLayout: + orientation: 'horizontal' + Label: + text: 'No Sauce' + font_size: 13.0 + CheckBox: + group: 'sauce' + id: sauce_1 + disabled: not app.enable_sauce_1 + on_active: app.disable_sauce() + BoxLayout: + Label: + text: '+1 Sauce' + font_size: 13.0 + CheckBox: + group: 'sauce' + id: sauce_2 + disabled: not app.enable_sauce_2 + on_active: app.disable_sauce() + BoxLayout: + Label: + text: '+2 Sauce' + font_size: 13.0 + CheckBox: + group: 'sauce' + id: sauce_3 + disabled: not app.enable_sauce_3 + on_active: app.disable_sauce() + BoxLayout: + orientation: 'vertical' + Label: + text: 'Chicken Strips' + BoxLayout: + orientation: 'horizontal' + Label: + text: '+2 Chicken Strips' + font_size: 13.0 + CheckBox: + group: 'strips' + BoxLayout: + Label: + text: '+3 Chicken Strips' + font_size: 13.0 + CheckBox: + group: 'strips' + BoxLayout: + Label: + text: '+4 Chicken Strips' + font_size: 13.0 + CheckBox: + group: 'strips' + BoxLayout: + orientation: 'horizontal' + Label: + text: '+5 Chicken Strips' + font_size: 13.0 + CheckBox: + group: 'strips' + BoxLayout: + Label: + text: '+20 Chicken Strips' + font_size: 13.0 + CheckBox: + group: 'strips' + BoxLayout: + Label: + text: '+50 Chicken Strips' + font_size: 13.0 + CheckBox: + group: 'strips' + BoxLayout: + orientation: 'vertical' + Label: + text: 'Drink Choice' + BoxLayout: + orientation: 'horizontal' + Label: + text: 'Lemonade' + font_size: 13.0 + CheckBox: + group: 'drinks' + BoxLayout: + Label: + text: 'Dr. Kelp' + font_size: 13.0 + CheckBox: + group: 'drinks' + BoxLayout: + Label: + text: 'Diet Dr.Kelp' + font_size: 13.0 + CheckBox: + group: 'drinks' + BoxLayout: + orientation: 'horizontal' + Label: + text: 'Pepsi' + font_size: 13.0 + CheckBox: + group: 'drinks' + BoxLayout: + Label: + text: 'Diet Pepsi' + font_size: 13.0 + CheckBox: + group: 'drinks' + BoxLayout: + Label: + text: 'Water' + font_size: 13.0 + CheckBox: + group: 'drinks' + BoxLayout: + Label: + text: 'Sm' + font_size: 13.0 + CheckBox: + group: 'drink_size' + Label: + text: 'Md' + font_size: 13.0 + CheckBox: + group: 'drink_size' + Label: + text: 'Lg' + font_size: 13.0 + CheckBox: + group: 'drink_size' + BoxLayout: + size_hint_y: .25 + BoxLayout: + Label: + text: 'Sales Tax: $' + str('{:0.2f}'.format(app.sales_tax)) + BoxLayout: + Button: + text: 'Reset' + on_press: app.reset() + Button: + text: 'Make Order' + on_press: app.reset() + BoxLayout: + Label: + text: 'Total: $' + str('{:0.2f}'.format(app.total)) -- GitLab