def oos_item_prompt2(self, event): fgc = (0.752, 0.607, 0.349, 1) # orangish for text lblbgc = (0.231, 0.647, 0.541, .8) self.remove_widget(self.arrow) self.remove_widget(self.label) self.remove_widget(self.block) self.label = ColorLabel(text='Add a new date', pos_hint={ 'center_x': .48, 'center_y': .31 }, color=lblbgc, font_size='30dp', size_hint=(.57, .06), halign='center') self.label.set_bgcolor(.17, .34, .52, .95) self.add_widget(self.label) self.arrow = ArrowDown(pos_hint={'center_x': .25, 'center_y': .25}) self.add_widget(self.arrow)
def select_dep_prompt(self): lblbgc = (0.231, 0.647, 0.541, .8) #self.add_widget(self.layout) self.label = ColorLabel( text= "There are 4\nitems that need to\nbe checked in Dairy\n <Tap the box>", pos_hint={ 'center_x': .58, 'center_y': .65 }, font_size='30dp', color=lblbgc, size_hint=(.65, .2), halign='center') self.label.set_bgcolor(.17, .34, .52, .5) #self.label.text_size = self.label.size self.add_widget(self.label) self.arrow = Arrow(pos_hint={'center_x': .6, 'center_y': .8}) self.add_widget(self.arrow)
def ood_item_prompt2(self, event): lblbgc = (0.231, 0.647, 0.541, .8) self.remove_widget(self.arrow) self.remove_widget(self.label) self.remove_widget(self.block) self.label = ColorLabel(text='Add a new date, or mark oos', pos_hint={ 'center_x': .5, 'center_y': .35 }, color=lblbgc, font_size='30dp', size_hint=(1, .1), halign='center') self.label.set_bgcolor(.17, .34, .52, .95) self.add_widget(self.label) self.arrow = ArrowDown(pos_hint={'center_x': .25, 'center_y': .25}) self.add_widget(self.arrow) self.arrow2 = ArrowDown(pos_hint={'center_x': .75, 'center_y': .25}) self.add_widget(self.arrow2) self.done = True
def mark_item_prompt(self, *dt): lblbgc = (0.231, 0.647, 0.541, 1) self.remove_widget(self.arrow) self.remove_widget(self.label) self.remove_widget(self.block) self.add_widget(self.block) self.block.bind(on_press=self.mark_item_prompt2) self.label = ColorLabel( text='This item might need\nto be marked down\n<tap anywhere>', pos_hint={ 'center_x': .55, 'center_y': .57 }, font_size='30dp', color=lblbgc, size_hint=(.79, .17), halign='center') self.label.set_bgcolor(.17, .34, .52, .95) self.add_widget(self.label) self.arrow = Arrow(pos_hint={'center_x': .6, 'center_y': .7}) self.add_widget(self.arrow) self.block.unbind(on_press=self.oos_item_prompt2)
def oos_item_prompt(self): self.outstock_btn.unbind(on_press=self.next_item) lblbgc = (0.231, 0.647, 0.541, 1) self.label = ColorLabel( text='This item is Out of Stock\n<tap anywhere>', pos_hint={ 'center_x': .58, 'center_y': .6 }, font_size='30dp', color=lblbgc, size_hint=(.82, .14), halign='center') self.label.set_bgcolor(.17, .34, .52, .95) self.add_widget(self.label) self.arrow.pos_hint = {'center_x': .6, 'center_y': .7} self.add_widget(self.arrow) self.next_func = self.mark_item_prompt self.outstock_btn.bind(on_press=self.next_func) self.block.bind(on_press=self.oos_item_prompt2) self.add_widget(self.block) self.add_widget(self.skipbtn)
def ood_item_prompt(self, *dt): self.remove_widget(self.arrow) self.remove_widget(self.arrow2) self.remove_widget(self.label) self.remove_widget(self.block) lblbgc = (0.231, 0.647, 0.541, 1) self.add_widget(self.block) self.block.bind(on_press=self.ood_item_prompt2) self.label = ColorLabel( text='This item could be\nout of date\n<tap anywhere>', pos_hint={ 'center_x': .55, 'center_y': .56 }, font_size='30dp', color=lblbgc, size_hint=(.72, .13), halign='center') self.label.set_bgcolor(.17, .34, .52, .95) self.add_widget(self.label) self.arrow = Arrow(pos_hint={'center_x': .6, 'center_y': .7}) self.add_widget(self.arrow) self.block.unbind(on_press=self.move_item_prompt2)
def move_item_prompt2(self, event): lblbgc = (0.231, 0.647, 0.541, .8) self.remove_widget(self.arrow) self.remove_widget(self.arrow2) self.remove_widget(self.label) self.remove_widget(self.block) self.label = ColorLabel( text='Move marked products\nthen press Moved,\nor enter a new date', pos_hint={ 'center_x': .5, 'center_y': .37 }, color=lblbgc, font_size='28dp', size_hint=(.75, .22), halign='center') self.label.set_bgcolor(.17, .34, .52, .95) self.add_widget(self.label) self.arrow = ArrowDown(pos_hint={'center_x': .5, 'center_y': .25}) self.add_widget(self.arrow) self.arrow2 = ArrowDown(pos_hint={'center_x': .25, 'center_y': .25}) self.add_widget(self.arrow2) self.next_func = self.ood_item_prompt
class Tutorial(Screen): todo_deps = {'Dairy': {}} done = False def __init__(self, DepSelect, ItemViewer, sm, **kwargs): super(Tutorial, self).__init__(**kwargs) import time self.app = App.get_running_app() self.thread_running = False self.ItemViewer = ItemViewer self.sm = sm self.next_func = None self.hidebtn = Button() today = time.localtime() month = today.tm_mon day = today.tm_mday year = today.tm_year mark_day = ("%s/%s/%s" % (month, day + 5, year)) move_day = ("%s/%s/%s" % (month, day + 3, year)) ood_day = ("%s/%s/%s" % (month, day, year)) todo = { '050126008': { 'date': 0, 'desc': 'MILOS TEA, SWEET', 'ftype': 'oos', 'img': 'https://docs.google.com/uc?id=', 'price': '$0.00', 'upc': '9147504189' }, '606105020': { 'date': mark_day, 'desc': 'Nestle Milk Low Fat, Chocolate', 'ftype': 'mark', 'img': 'https://docs.google.com/uc?id=', 'price': '$0.00', 'upc': '2800077212' }, '050125029': { 'date': move_day, 'desc': 'FLORIDAS NATURAL ORANGE JUICE', 'ftype': 'move', 'img': 'https://docs.google.com/uc?id=', 'price': '$0.00', 'upc': '1630016824' }, '050119007': { 'date': ood_day, 'desc': 'YOPLAIT GO GURT YOGURT, LOW FAT, RASPBERRY, STRAWBERRY BANANA', 'ftype': 'ood', 'img': 'https://docs.google.com/uc?id=', 'price': '$0.00', 'upc': '7047013773' } } self.dep_list = {} self.dep_list['Dairy'] = ({ 'name': 'Dairy', 'todo': todo, 'todo_count': len(todo) }) self.DepSelect = DepSelect DepSelect.build_layout(self) #self.layout = RelativeLayout() self.block = Button(background_normal='', background_color=(0, 0, 0, .1)) with self.block.canvas: Color(1, 0, 0, -.3) Rectangle(pos=(200, 700), size=(100, 100)) #self.add_widget(self.block) #self.layout = RelativeLayout() fgc = (0.752, 0.607, 0.349, 1) # orangish for text bgc = (.90, .63, .47, .95) # orangish on grey button self.skipbtn = Button(text='Skip Tutorial', color=fgc, background_color=bgc, font_size='20dp', pos_hint={ 'center_x': .115, 'center_y': .4 }, size_hint=(.23, .05)) self.skipbtn.bind(on_press=self.skip_tutorial) self.add_widget(self.skipbtn) def hide_item(self, event): pass def back_pressed(self): self.app.exit() def pre_load_next_image(self, num): pass def skip_tutorial(self, *event): self.app.user['skip_tutorial'] = True self.app.save() self.sm.current = 'dep_select' def on_enter(self): #try: #self.add_widget(self.refresh_button) # for test # except AttributeError: # print('Attribute Error') # exit() self.select_dep_prompt() def select_dep_prompt(self): lblbgc = (0.231, 0.647, 0.541, .8) #self.add_widget(self.layout) self.label = ColorLabel( text= "There are 4\nitems that need to\nbe checked in Dairy\n <Tap the box>", pos_hint={ 'center_x': .58, 'center_y': .65 }, font_size='30dp', color=lblbgc, size_hint=(.65, .2), halign='center') self.label.set_bgcolor(.17, .34, .52, .5) #self.label.text_size = self.label.size self.add_widget(self.label) self.arrow = Arrow(pos_hint={'center_x': .6, 'center_y': .8}) self.add_widget(self.arrow) # Orb around #4 "You can see there are four items that need to be checked in dairy"<tap anywhere> # Orb around whole button "Tap the department to begin"<tap button> # facade department list@ for tutorial containing 1 of each ex # sm.current='item_viewer' def oos_item_prompt(self): self.outstock_btn.unbind(on_press=self.next_item) lblbgc = (0.231, 0.647, 0.541, 1) self.label = ColorLabel( text='This item is Out of Stock\n<tap anywhere>', pos_hint={ 'center_x': .58, 'center_y': .6 }, font_size='30dp', color=lblbgc, size_hint=(.82, .14), halign='center') self.label.set_bgcolor(.17, .34, .52, .95) self.add_widget(self.label) self.arrow.pos_hint = {'center_x': .6, 'center_y': .7} self.add_widget(self.arrow) self.next_func = self.mark_item_prompt self.outstock_btn.bind(on_press=self.next_func) self.block.bind(on_press=self.oos_item_prompt2) self.add_widget(self.block) self.add_widget(self.skipbtn) def oos_item_prompt2(self, event): fgc = (0.752, 0.607, 0.349, 1) # orangish for text lblbgc = (0.231, 0.647, 0.541, .8) self.remove_widget(self.arrow) self.remove_widget(self.label) self.remove_widget(self.block) self.label = ColorLabel(text='Add a new date', pos_hint={ 'center_x': .48, 'center_y': .31 }, color=lblbgc, font_size='30dp', size_hint=(.57, .06), halign='center') self.label.set_bgcolor(.17, .34, .52, .95) self.add_widget(self.label) self.arrow = ArrowDown(pos_hint={'center_x': .25, 'center_y': .25}) self.add_widget(self.arrow) # first dep list item is oos # Orb around new_date "This item is Out of stock so it needs a new date"<tap new_date> #self.open_datekeyboard(1) def mark_item_prompt(self, *dt): lblbgc = (0.231, 0.647, 0.541, 1) self.remove_widget(self.arrow) self.remove_widget(self.label) self.remove_widget(self.block) self.add_widget(self.block) self.block.bind(on_press=self.mark_item_prompt2) self.label = ColorLabel( text='This item might need\nto be marked down\n<tap anywhere>', pos_hint={ 'center_x': .55, 'center_y': .57 }, font_size='30dp', color=lblbgc, size_hint=(.79, .17), halign='center') self.label.set_bgcolor(.17, .34, .52, .95) self.add_widget(self.label) self.arrow = Arrow(pos_hint={'center_x': .6, 'center_y': .7}) self.add_widget(self.arrow) self.block.unbind(on_press=self.oos_item_prompt2) #self.add_widget(self.block) #self.add_widget(self.skipbtn) def mark_item_prompt2(self, event): lblbgc = (0.231, 0.647, 0.541, .8) self.remove_widget(self.arrow) self.remove_widget(self.label) self.remove_widget(self.block) self.label = ColorLabel( text= 'Mark applicable items\nthen press marked,\nor enter a new date', pos_hint={ 'center_x': .5, 'center_y': .37 }, color=lblbgc, font_size='30dp', size_hint=(.8, .22), halign='center') self.label.set_bgcolor(.17, .34, .52, .95) self.add_widget(self.label) self.arrow = ArrowDown(pos_hint={'center_x': .5, 'center_y': .25}) self.add_widget(self.arrow) self.arrow2 = ArrowDown(pos_hint={'center_x': .25, 'center_y': .25}) self.add_widget(self.arrow2) self.next_func = self.move_item_prompt # Orb around Marked button "After marking it down, press here to go to the next item<tap marked button> def move_item_prompt(self, *dt): self.remove_widget(self.label) self.remove_widget(self.arrow) self.remove_widget(self.arrow2) self.remove_widget(self.block) lblbgc = (0.231, 0.647, 0.541, 1) self.add_widget(self.block) self.block.bind(on_press=self.move_item_prompt2) self.label = ColorLabel( text= 'This item might need to be\nmoved to the markdown area\n<tap anywhere>', pos_hint={ 'center_x': .55, 'center_y': .56 }, font_size='28dp', color=lblbgc, size_hint=(.90, .17), halign='center') self.label.set_bgcolor(.17, .34, .52, .95) self.add_widget(self.label) self.arrow = Arrow(pos_hint={'center_x': .6, 'center_y': .7}) self.add_widget(self.arrow) self.block.unbind(on_press=self.mark_item_prompt2) def move_item_prompt2(self, event): lblbgc = (0.231, 0.647, 0.541, .8) self.remove_widget(self.arrow) self.remove_widget(self.arrow2) self.remove_widget(self.label) self.remove_widget(self.block) self.label = ColorLabel( text='Move marked products\nthen press Moved,\nor enter a new date', pos_hint={ 'center_x': .5, 'center_y': .37 }, color=lblbgc, font_size='28dp', size_hint=(.75, .22), halign='center') self.label.set_bgcolor(.17, .34, .52, .95) self.add_widget(self.label) self.arrow = ArrowDown(pos_hint={'center_x': .5, 'center_y': .25}) self.add_widget(self.arrow) self.arrow2 = ArrowDown(pos_hint={'center_x': .25, 'center_y': .25}) self.add_widget(self.arrow2) self.next_func = self.ood_item_prompt # Third item needs to be moved # Orb around Move this item? "This item needs to be moved to a markdown area"<tap anywhere> # Orb around Moved button "after moving it, press here to go to the next item<tap moved button> def ood_item_prompt(self, *dt): self.remove_widget(self.arrow) self.remove_widget(self.arrow2) self.remove_widget(self.label) self.remove_widget(self.block) lblbgc = (0.231, 0.647, 0.541, 1) self.add_widget(self.block) self.block.bind(on_press=self.ood_item_prompt2) self.label = ColorLabel( text='This item could be\nout of date\n<tap anywhere>', pos_hint={ 'center_x': .55, 'center_y': .56 }, font_size='30dp', color=lblbgc, size_hint=(.72, .13), halign='center') self.label.set_bgcolor(.17, .34, .52, .95) self.add_widget(self.label) self.arrow = Arrow(pos_hint={'center_x': .6, 'center_y': .7}) self.add_widget(self.arrow) self.block.unbind(on_press=self.move_item_prompt2) # Fourth item needs to be ood # Orb around ood message "This item needs to be pulled"<tap anywhere> # Orb around new date button "After pulling it, if all the items were ood\n # mark out of stock, otherwise, enter the new date # "<tap new date or oos> #self.open_datekeyboard(1) def ood_item_prompt2(self, event): lblbgc = (0.231, 0.647, 0.541, .8) self.remove_widget(self.arrow) self.remove_widget(self.label) self.remove_widget(self.block) self.label = ColorLabel(text='Add a new date, or mark oos', pos_hint={ 'center_x': .5, 'center_y': .35 }, color=lblbgc, font_size='30dp', size_hint=(1, .1), halign='center') self.label.set_bgcolor(.17, .34, .52, .95) self.add_widget(self.label) self.arrow = ArrowDown(pos_hint={'center_x': .25, 'center_y': .25}) self.add_widget(self.arrow) self.arrow2 = ArrowDown(pos_hint={'center_x': .75, 'center_y': .25}) self.add_widget(self.arrow2) self.done = True # Last item is NONE # Orb around Menu "Open the menu" <tap menu> # Orb around Change Department "Change to a different department that needs to be checked" <tap change department> # sm.current='tut_dep select' # make sure Dairy - (0) # Orb around the 0 "'Dairy' department is done being checked, and we are done with the tutorial. Good luck!<tap anywhere> # Reload to real dep_select def open_keyboard(self, event): self.remove_widget(self.arrow) self.remove_widget(self.label) self.app.date_keyboard.open(self.send_func) # Orb around month "First enter the month of expiration"<tap febuary> # Orb around 0 "Then enter first number for day"<tap 0> # Orb around 5 "Then enter second number for day"<tap 5> # Orb around send "Lastly send the date"<tap send date> # self.app.tut_date_keyboard.dismiss() def send_func(self, *args): self.next_item() def select_dep(self, event): # Don't actually load item viwer screen, simply remove all current widgets # and build layout for self!! ItemViewer = self.ItemViewer dep = 'Dairy' sm = self.sm self.queue = False self.todo = [] self.todo_num = 0 self.app.selected_dep = dep self.todo_deps[dep]['todo'] = [] self.todo_deps[dep]['hidden'] = [] self.todo_deps[dep]['queue'] = [] # Later this number can be pulled from storage if date is equal to today # along with return to where you left off popup self.todo_deps[dep]['num'] = 0 for i in self.dep_list[dep]['todo'].items(): if i[1]['date'] == 'hidden': self.todo_deps[dep]['hidden'].append(i) else: self.todo_deps[dep]['todo'].append(i) self.clear_widgets() ItemViewer.build_layout(self) #self.add_widget(self.refresh_button) # For test info = self.todo_deps[dep] self.todo = info['todo'] self.hidden = info['hidden'] self.todo_num = info['num'] self.queue = info['queue'] ItemViewer.re_product(self, self.get_product()) self.oos_item_prompt() def pre_load_next_images(self, *dt): pass def change_dep(self, event): pass def sign_out(self, event): pass def go_right(self, event): pass def go_left(self, event): pass def marked(self, event): self.next_item() def moved(self, event): self.next_item() def marknmove(self, event): pass def oos(self, event): self.next_item() def next_item(self): if self.done: self.skip_tutorial() return True else: self.ItemViewer.next_item(self) self.next_func() def re_product(self, product, *dt): self.ItemViewer.re_product(self, product) def get_product(self): try: return self.todo[self.todo_num] except IndexError: self.todo_num = 0 return self.todo[0]
class ItemViewer(Screen): todo = [] # Items that need action taken, taken from DepSelect.todo_deps thread_running = False todo_num = 0 queue = [] blank = ( '',{ 'date': '', 'desc': '', 'ftype': '', 'ghost': '', 'img': 'none', 'price': '', 'upc': '' } ) # Created a list with todo, last item is len-1 # With a list it can be skipped through and returned into(object): def __init__(self, **kwargs): super(ItemViewer, self).__init__(**kwargs) self.app = App.get_running_app() self.build_layout() self.re_product(self.blank) def on_enter(self): info = DepSelect.todo_deps[self.app.selected_dep] self.todo = info['todo'] self.hidden = info['hidden'] self.todo_num = info['num'] self.queue = info['queue'] self.re_product(self.get_product()) try: import admin importlib.reload(admin) admin.run(self) print('admin_user') except ModuleNotFoundError: pass def build_layout(self): #app.selected_dep lblbgc = (0.231, 0.647, 0.541, .8) # blueish for text fgc = (0.752, 0.607, 0.349, 1) # orangish for text bgc = (.90,.63,.47,.95) # orangish on grey button #bgc2 = (.90,.63,.47,.2) # (.40,.23,.07,.95) # blueish back for label bg #fgc = (0.231, 0.647, 0.541, 1) #fgc=(1,1,1,1) self.dropdown = DropDown() self.hidebtn = Button( text='Hide This Item', color=fgc, background_color=bgc, font_size='30dp', size_hint=(None, None), width=Window.width, height=Window.height/8 ) self.hidebtn.bind(on_press=self.hide_item) self.dropdown.add_widget(self.hidebtn) self.change_depbtn = Button( text='Change Department', color=fgc, background_color=bgc, font_size='30dp', size_hint=(None, None), width=Window.width, height=Window.height/8 ) self.change_depbtn.bind(on_press=self.change_dep) self.dropdown.add_widget(self.change_depbtn) self.sign_outbtn = Button( text='Sign Out', color=fgc, background_color=bgc, font_size='30dp', size_hint=(None, None), width=Window.width, height=Window.height/8 ) self.sign_outbtn.bind(on_press=self.sign_out) self.dropdown.add_widget(self.sign_outbtn) self.menubtn = Button( text='Menu', font_size='30dp', size_hint=(.9, .05), color=fgc, background_color=bgc, pos_hint={'center_x':.5, 'center_y':.075} ) self.menubtn.bind(on_release=self.dropdown.open) self.add_widget(self.menubtn) self.info=ColorLabel( color=fgc, font_size='25dp', size_hint=(.94, .05), pos_hint={'center_x':.5, 'center_y': .782} ) self.info.set_bgcolor(.40,.23,.07,.95) self.add_widget(self.info) self.rightbtn = Button( text='>>', color=lblbgc, background_color=(.17,.34,.52,.3), font_size='55dp', size_hint=(.2, .48), pos_hint={'center_x': .9, 'center_y': .48} ) self.rightbtn.bind(on_press=self.go_right) self.add_widget(self.rightbtn) self.leftbtn = Button( text='<<', color=lblbgc, background_color=(.17,.34,.52,.3), font_size='55dp', size_hint=(.2, .48), pos_hint={'center_x': .1, 'center_y': .48} ) self.leftbtn.bind(on_press=self.go_left) self.add_widget(self.leftbtn) self.section_id = ColorLabel( color=lblbgc, pos_hint={'center_y': .832, 'center_x': .5}, size_hint=(.96, .05), font_size='30dp' ) self.section_id.set_bgcolor(.17,.34,.52,.3) self.add_widget(self.section_id) self.product_desc = ColorLabel( pos_hint={'center_x': .5, 'center_y': .96}, font_size='23dp', # used to be 30 color=lblbgc, size_hint=(None, None), size=(Window.width, Window.height/9.5), halign='center' ) self.product_desc.set_bgcolor(.17,.34,.52,.5) self.product_desc.text_size = self.product_desc.size self.add_widget(self.product_desc) self.img = AsyncImage( pos_hint={'center_x': .5, 'center_y': .5}, size_hint=(.5, .5), allow_stretch=True ) self.add_widget(self.img) self.product_upc = ColorLabel( size_hint=(.98, .05), color=lblbgc, pos_hint={'center_y': .882, 'center_x': .5}, font_size='30dp', halign='left' ) self.product_upc.set_bgcolor(.17,.34,.52,.4) self.add_widget(self.product_upc) self.mark_btn = Button( text='Marked', color=fgc, background_color=bgc, font_size='30dp', size_hint=(.35, .12), pos_hint={'center_x':.5, 'center_y':.17} ) self.mark_btn.bind(on_press=self.marked) self.move_btn = Button( text='Moved', color=fgc, background_color=bgc, font_size='30dp', size_hint=(.35, .12), pos_hint={'center_x':.5, 'center_y':.17} ) self.move_btn.bind(on_press=self.moved) self.marknmove_btn = Button( text='Marked &\nMoved', color=fgc, background_color=bgc, font_size='30dp', size_hint=(.35, .12), pos_hint={'center_x':.5, 'center_y':.17} ) self.marknmove_btn.bind(on_press=self.marknmove) self.outstock_btn = Button( text='Out of\nStock', color=fgc, background_color=bgc, font_size='30dp', size_hint=(.33, .12), pos_hint={'center_x':.85, 'center_y':.17} ) self.outstock_btn.bind(on_press=self.oos) self.add_widget(self.outstock_btn) self.date_btn = Button( text='New\nDate', color=fgc, background_color=bgc, font_size='30dp', size_hint=(.33, .12), pos_hint={'center_x':.15, 'center_y':.17} ) self.date_btn.bind(on_press=self.open_keyboard) self.add_widget(self.date_btn) def pre_load_next_images(self, num): try: img = self.todo[num+1][1]['img'] if img != 'none': AsyncImage(source=img) except IndexError: pass def re_product(self, product, *dt): self.pr = product self.pre_load_next_images(self.todo_num) self.product_desc.text=self.pr[1]['desc'] # desc ftype = self.pr[1]['ftype'] # ftype self.remove_widget(self.mark_btn) self.remove_widget(self.move_btn) self.remove_widget(self.marknmove_btn) if ftype == 'oos': fmsg = 'Enter a date for this item?' elif ftype == 'mark': self.add_widget(self.mark_btn) fmsg = 'Mark this item?' elif ftype == 'move': self.add_widget(self.move_btn) fmsg = 'Move this item?' elif ftype == 'ood': fmsg = 'Out of Date?' elif ftype == 'movenmark': self.add_widget(self.marknmove_btn) fmsg = 'Mark & Move?' else: fmsg = 'None' self.info.text=("Date: %s %s" % (self.pr[1]['date'], fmsg)) # date / action word = self.pr[0] new_word = (word[0:3]+' - '+word[3:6]+' - '+word[6::]) self.section_id.text = new_word if self.pr[1]['img'] == 'none': self.img.color = [1, 1, 1, 0] else: self.img.color = [1, 1, 1, 1] self.img.source=self.pr[1]['img'] # img self.product_upc.text=self.pr[1]['upc'] # upc def change_dep(self, event): if self.thread_running: Clock.schedule_once(self.change_dep, .1) else: DepSelect.todo_deps[ self.app.selected_dep ]['queue'] = copy.deepcopy(self.queue) self.queue = [] self.dropdown.dismiss() self.re_product(self.blank) DepSelect.todo_deps[ self.app.selected_dep ]['num'] = self.todo_num sm.current = 'dep_select' def sign_out(self, event): global sm self.dropdown.dismiss() for i in sm.screens: sm.remove_widget(i) sm.add_widget(Login(name='login')) sm.current = 'login' def marked(self, event): self.mfuncs() def moved(self, event): self.mfuncs() def marknmove(self, event): self.mfuncs() def mfuncs(self): self.send_pr = self.pr t = Thread(target=self.post_item, args=(self.send_pr, self.todo_num)) t.daemon = True t.start() self.next_item() def oos(self, event): self.send_pr = self.pr if self.pr[1]['ftype'] == 'oos': self.next_item() else: self.send_pr[1]['ftype'] = 'oos' t = Thread(target=self.post_item, args=(self.send_pr, self.todo_num)) t.daemon = True t.start() self.next_item() def send_date(self, pr, date, *args): self.send_pr = pr self.send_pr[1]['date'] = date self.send_pr[1]['ftype'] = 'new_date' self.thread_running = True self.next_item() t = Thread(target=self.post_item, args=(self.send_pr, self.todo_num)) t.daemon = True t.start() def hide_item(self, event): self.send_pr = self.pr self.send_pr[1]['ftype'] = 'hide' t = Thread(target=self.post_item, args=(self.send_pr, self.todo_num)) t.daemon = True t.start() self.next_item() def post_item(self, *args): self.thread_running = True print("args", args) try: try: ftype = None pr = args[0] req = self.app.db.post_item(pr) if req.ok: try: ftype = req.json()['ftype'] # Possible breakpoint pr[1]['ftype'] = ftype if ftype == 'ok': self.app.department_list[self.app.selected_dep]['todo_count'] -= 1 elif ftype == 'oos': pr[1]['date'] = '0' else: self.queue.append(pr) except KeyError as e: print(e) TroublePop("Trouble connecting", partial(self.post_item, args[0], args[1])).open() else: TroublePop("Trouble connecting", partial(self.post_item, args[0], args[1])).open() except requests.exceptions.ConnectionError: TroublePop("Trouble connecting", partial(self.post_item, args[0], args[1])).open() except Exception: app = App.get_running_app() app.fb.capture_bug(format_exc(), app.id_token) print('ERROR IN THREAD\n\nERROR IN THREAD') self.thread_running = False def open_keyboard(self, event): self.app.date_keyboard.open(partial(self.send_date, self.pr)) def go_left(self, *event): if self.todo_num >= 1: self.todo_num-=1 self.re_product(self.get_product()) else: return False def go_right(self, event): self.next_item() def next_item(self, *dt): print(self.app.local_id) # where to deal with queue print('length of todo', len(self.todo)) if self.queue: print("There's a queue!") # Calling reproduct to build the screen self.re_product(self.todo[self.todo.index(self.queue.pop())]) else: if (self.todo_num + 1) == len(self.todo): # Reached end # Wait for thread to finish if self.thread_running: self.pr=('', {'desc': '', 'ftype': '', 'date': '', 'img': ''}) self.product_desc.text='' # desc self.info.text='' self.section_id.text='' self.product_upc.text='' self.remove_widget(self.mark_btn) self.remove_widget(self.move_btn) self.remove_widget(self.marknmove_btn) self.img.color = [1, 1, 1, 0] Clock.schedule_once(self.next_item, 1) else: self.todo_num = 0 Clock.schedule_once(partial(self.re_product, self.get_product()), .1) sm.current = 'dep_select' else: self.todo_num += 1 self.re_product(self.get_product()) def back_pressed(self): if self.go_left() == False: sm.current = 'dep_select' def get_product(self): try: return self.todo[self.todo_num] except IndexError: self.todo_num = 0 return self.todo[0]
def build_layout(self): #app.selected_dep lblbgc = (0.231, 0.647, 0.541, .8) # blueish for text fgc = (0.752, 0.607, 0.349, 1) # orangish for text bgc = (.90,.63,.47,.95) # orangish on grey button #bgc2 = (.90,.63,.47,.2) # (.40,.23,.07,.95) # blueish back for label bg #fgc = (0.231, 0.647, 0.541, 1) #fgc=(1,1,1,1) self.dropdown = DropDown() self.hidebtn = Button( text='Hide This Item', color=fgc, background_color=bgc, font_size='30dp', size_hint=(None, None), width=Window.width, height=Window.height/8 ) self.hidebtn.bind(on_press=self.hide_item) self.dropdown.add_widget(self.hidebtn) self.change_depbtn = Button( text='Change Department', color=fgc, background_color=bgc, font_size='30dp', size_hint=(None, None), width=Window.width, height=Window.height/8 ) self.change_depbtn.bind(on_press=self.change_dep) self.dropdown.add_widget(self.change_depbtn) self.sign_outbtn = Button( text='Sign Out', color=fgc, background_color=bgc, font_size='30dp', size_hint=(None, None), width=Window.width, height=Window.height/8 ) self.sign_outbtn.bind(on_press=self.sign_out) self.dropdown.add_widget(self.sign_outbtn) self.menubtn = Button( text='Menu', font_size='30dp', size_hint=(.9, .05), color=fgc, background_color=bgc, pos_hint={'center_x':.5, 'center_y':.075} ) self.menubtn.bind(on_release=self.dropdown.open) self.add_widget(self.menubtn) self.info=ColorLabel( color=fgc, font_size='25dp', size_hint=(.94, .05), pos_hint={'center_x':.5, 'center_y': .782} ) self.info.set_bgcolor(.40,.23,.07,.95) self.add_widget(self.info) self.rightbtn = Button( text='>>', color=lblbgc, background_color=(.17,.34,.52,.3), font_size='55dp', size_hint=(.2, .48), pos_hint={'center_x': .9, 'center_y': .48} ) self.rightbtn.bind(on_press=self.go_right) self.add_widget(self.rightbtn) self.leftbtn = Button( text='<<', color=lblbgc, background_color=(.17,.34,.52,.3), font_size='55dp', size_hint=(.2, .48), pos_hint={'center_x': .1, 'center_y': .48} ) self.leftbtn.bind(on_press=self.go_left) self.add_widget(self.leftbtn) self.section_id = ColorLabel( color=lblbgc, pos_hint={'center_y': .832, 'center_x': .5}, size_hint=(.96, .05), font_size='30dp' ) self.section_id.set_bgcolor(.17,.34,.52,.3) self.add_widget(self.section_id) self.product_desc = ColorLabel( pos_hint={'center_x': .5, 'center_y': .96}, font_size='23dp', # used to be 30 color=lblbgc, size_hint=(None, None), size=(Window.width, Window.height/9.5), halign='center' ) self.product_desc.set_bgcolor(.17,.34,.52,.5) self.product_desc.text_size = self.product_desc.size self.add_widget(self.product_desc) self.img = AsyncImage( pos_hint={'center_x': .5, 'center_y': .5}, size_hint=(.5, .5), allow_stretch=True ) self.add_widget(self.img) self.product_upc = ColorLabel( size_hint=(.98, .05), color=lblbgc, pos_hint={'center_y': .882, 'center_x': .5}, font_size='30dp', halign='left' ) self.product_upc.set_bgcolor(.17,.34,.52,.4) self.add_widget(self.product_upc) self.mark_btn = Button( text='Marked', color=fgc, background_color=bgc, font_size='30dp', size_hint=(.35, .12), pos_hint={'center_x':.5, 'center_y':.17} ) self.mark_btn.bind(on_press=self.marked) self.move_btn = Button( text='Moved', color=fgc, background_color=bgc, font_size='30dp', size_hint=(.35, .12), pos_hint={'center_x':.5, 'center_y':.17} ) self.move_btn.bind(on_press=self.moved) self.marknmove_btn = Button( text='Marked &\nMoved', color=fgc, background_color=bgc, font_size='30dp', size_hint=(.35, .12), pos_hint={'center_x':.5, 'center_y':.17} ) self.marknmove_btn.bind(on_press=self.marknmove) self.outstock_btn = Button( text='Out of\nStock', color=fgc, background_color=bgc, font_size='30dp', size_hint=(.33, .12), pos_hint={'center_x':.85, 'center_y':.17} ) self.outstock_btn.bind(on_press=self.oos) self.add_widget(self.outstock_btn) self.date_btn = Button( text='New\nDate', color=fgc, background_color=bgc, font_size='30dp', size_hint=(.33, .12), pos_hint={'center_x':.15, 'center_y':.17} ) self.date_btn.bind(on_press=self.open_keyboard) self.add_widget(self.date_btn)