Пример #1
0
    def __init__(self, master, labeltext="Wähle die Menge:", seltext="Select", whole=1, frac="", unit="ounce", callback=None):
        super(AmountScreen, self).__init__(master, class_="Amount")
        self.master = master
        self.callback = callback
        fracvals = ["", "1/8", "1/4", "1/3", "3/8", "1/2", "5/8", "2/3", "3/4", "7/8"]
        unitvals = ["dash", "ml", "tsp", "tbsp", "ounce", "cup"]
        self.bgcolor = master.bgcolor
        self.configure(bg=self.bgcolor)

        lbl = Label(self, text=labeltext)
        self.wholespin = TouchSpinner(self, width=40, value=whole, minval=0, maxval=99, incdecval=1, justify=RIGHT)
        self.fracspin = TouchSpinner(self, width=40, value=frac, values=fracvals)
        self.unitspin = TouchSpinner(self, width=40, value=unit, values=unitvals, justify=LEFT)
        selbtn = RectButton(self, text=seltext, width=120, command=self.handle_button_select)
        backbtn = RectButton(self, text="\u23ce", width=120, command=self.handle_button_back)

        lbl.grid(column=1, row=1, columnspan=3, padx=20, pady=10, sticky=N+E+W)
        self.wholespin.grid(column=1, row=2, padx=5, pady=20, sticky=N+E)
        self.fracspin.grid(column=2, row=2, padx=5, pady=20, sticky=N)
        self.unitspin.grid(column=3, row=2, padx=5, pady=20, sticky=N+W)
        selbtn.grid(column=1, row=9, padx=20, pady=10, sticky=S+W)
        backbtn.grid(column=3, row=9, padx=20, pady=10, sticky=S+E)

        self.columnconfigure(0, weight=1)
        self.columnconfigure(4, weight=1)
        self.rowconfigure(0, minsize=10)
        self.rowconfigure(8, weight=1)
        self.rowconfigure(10, minsize=10)
Пример #2
0
    def __init__(self, master, succ_screen=None, labeltext="Enter Passcode:", set_pass=None):
        self.entered_code = ""
        self.success_screen = succ_screen
        self.labeltext = labeltext
        self.set_pass = set_pass
        super(LockScreen, self).__init__(master)

        self.lbl = Label(self, text=self.labeltext, font="Helvetica 24")
        numbtns = {}
        for i in range(10):
            numbtns[i] = RectButton(self, text="%d" % i, width=40, height=40, command=lambda x=i:self.handle_button_num(x))
        delbtn = RectButton(self, text="\u232b", width=40, height=40, command=self.handle_button_del)
        if self.set_pass:
            setbtn = RectButton(self, text="Set", width=120, command=self.handle_button_set)
            setbtn.grid(column=0, row=9, columnspan=2, padx=10, pady=10, sticky=S+W)
        backbtn = RectButton(self, text="\u23ce", width=120, command=self.handle_button_back)
        self.lbl.grid(column=0, row=1, columnspan=5, padx=10, pady=10, sticky=N+E+W)
        for x in range(3):
            for y in range(3):
                numbtns[x+y*3+1].grid(column=x+1, row=y+2, padx=10, pady=10)
        numbtns[0].grid(column=2, row=5, padx=10, pady=10)
        delbtn.grid(column=3, row=5, padx=10, pady=10)
        backbtn.grid(column=3, row=9, columnspan=2, padx=10, pady=10, sticky=S+E)

        self.columnconfigure(0, weight=1)
        self.columnconfigure(1, weight=0)
        self.columnconfigure(2, weight=0)
        self.columnconfigure(3, weight=0)
        self.columnconfigure(4, weight=1)
        self.rowconfigure(0, minsize=10)
        self.rowconfigure(8, weight=1)
        self.rowconfigure(9, minsize=10)
        self.update_label()
Пример #3
0
    def __init__(self, master, feed):
        super(FeedEditScreen, self).__init__(master)
        self.master = master
        self.feed = feed
        self.avail = IntVar()
        self.avail.set(1 if feed.avail else 0)
        self.bgcolor = master.bgcolor
        self.configure(bg=self.bgcolor)

        self.lbl = Label(self, text="Zutat #%d: %s" % (feed.motor_num, feed.getName()))
        renamebtn = RectButton(self, text="Zutat umbenennen", width=150, command=self.handle_button_rename)
        calibbtn = RectButton(self, text="Calibration", width=150, command=self.handle_button_calib)
        self.feedbtn = RectButton(self, text="Start Feed", width=150, command=self.handle_button_feed)
        enbtn = TouchCheckbox(self, text="Available", variable=self.avail, command=self.handle_button_enable)
        self.proofspin = TouchSpinner(self, width=150, value=self.feed.proof, minval=0, maxval=100, incdecval=1, format="Alkohol: %d", changecmd=self.handle_proof_change)
        self.remainingspin = TouchSpinner(self, width=150, value=self.feed.remaining, minval=0, maxval=5000, incdecval=50, format="Restinhalt: %d", changecmd=self.handle_remaining_change)
        backbtn = RectButton(self, text="\u23ce", width=120, command=self.handle_button_back)

        self.lbl.grid(column=1, row=1, columnspan=2, pady=20, sticky=E+W)
        renamebtn.grid(column=1, row=2, padx=20, pady=10, sticky=E+W)
        #calibbtn.grid(column=1, row=3, padx=20, pady=10, sticky=E+W)
        #self.feedbtn.grid(column=1, row=4, padx=20, pady=10, sticky=E+W)
        self.remainingspin.grid(column=1, row=3, rowspan=3, padx=20, pady=10)
        enbtn.grid(column=2, row=2, padx=20, pady=10, sticky=E+W)
        self.proofspin.grid(column=2, row=3, rowspan=3, padx=20, pady=10)
        backbtn.grid(column=2, row=9, columnspan=3, padx=20, pady=10, sticky=S+E)

        self.columnconfigure(0, weight=1)
        self.columnconfigure(3, weight=1)
        self.rowconfigure(0, minsize=10)
        self.rowconfigure(8, weight=1)
        self.rowconfigure(10, minsize=10)
Пример #4
0
 def __init__(self, master):
     super(ShutdownScreen, self).__init__(master)
     quitbtn = RectButton(self,
                          text="Quit Tikibot",
                          command=self.handle_button_quit)
     bootbtn = RectButton(self,
                          text="Reboot System",
                          command=self.handle_button_restart)
     offbtn = RectButton(self,
                         text="Shutdown System",
                         command=self.handle_button_off)
     backbtn = RectButton(self,
                          text="\u23ce",
                          width=120,
                          command=self.handle_button_back)
     quitbtn.grid(column=1, row=1, pady=10, sticky=N + E + W)
     bootbtn.grid(column=1, row=2, pady=20, sticky=N + E + W)
     offbtn.grid(column=1, row=3, pady=10, sticky=N + E + W)
     backbtn.grid(column=1, row=9, pady=10, sticky=S + E)
     self.columnconfigure(0, weight=1, minsize=20)
     self.columnconfigure(3, minsize=20)
     self.rowconfigure(0, minsize=10)
     self.rowconfigure(8, weight=1)
     self.rowconfigure(9, minsize=10)
     self.bgcolor = master.bgcolor
     self.configure(bg=self.bgcolor)
Пример #5
0
    def __init__(self, master, callback=None, labeltext='Information', cols=1):
        super(InformationScreen, self).__init__(master)
        self.master = master
        self.bgcolor = master.bgcolor
        self.configure(bg=self.bgcolor)
        self.callback = callback  # if callback else self.handle_button_select
        self.buttons = []
        if labeltext:
            self.upperframe = Label(self, text=labeltext, fg="green")
            self.upperframe.grid(row=0, column=0, pady=(5, 0), sticky='nw')

        self.buttonframe = Frame(self)
        self.buttonframe.grid(row=1, column=0, pady=(5, 0), sticky='nw')
        self.buttonframe.grid_rowconfigure(0, weight=1)
        self.buttonframe.grid_columnconfigure(0, weight=1)
        # Set grid_propagate to False to allow 5-by-5 buttons resizing later
        self.buttonframe.grid_propagate(False)

        # Add a canvas in that frame
        self.canvas = Canvas(self.buttonframe, bg=self.bgcolor)
        self.canvas.grid(row=0, column=0, sticky="news")

        # Link a scrollbar to the canvas
        self.vsb = Scrollbar(self.buttonframe,
                             orient="vertical",
                             command=self.canvas.yview,
                             width=40,
                             troughcolor="#98B17C",
                             bg="#F6E70A",
                             activebackground="#FFFC74")
        self.vsb.grid(row=0, column=1, sticky='ns')
        self.canvas.configure(yscrollcommand=self.vsb.set)

        # Create a frame to contain the buttons
        self.frame_buttons = Frame(self.canvas, bg=self.bgcolor)
        self.canvas.create_window((0, 0),
                                  window=self.frame_buttons,
                                  anchor='nw')

        self.update_buttons()

        if callable(getattr(self, "handle_button_new", None)):
            newbtn = RectButton(self.botomframe,
                                text="\u002b",
                                width=40,
                                command=self.handle_button_new)
            newbtn.grid(column=1, row=98, sticky=S + W)
        self.bottomframe = Label(self, fg="red")
        self.bottomframe.grid(row=2, column=0, pady=(3, 0), sticky='se')
        backbtn = RectButton(self.bottomframe,
                             text="\u23ce",
                             width=120,
                             command=self.handle_button_back)
        backbtn.grid(column=3, row=0, sticky='se')
Пример #6
0
    def __init__(self, master, recipe):
        super(PourScreen, self).__init__(master, class_="Pour")
        self.master = master
        self.recipe = recipe
        self.pouricon = self.master.get_image("PourIcon.gif")
        self.desc = Text(self, width=32, state=DISABLED)
        lbl = Label(self, text="Amount to dispense:")
        upbtn = RectButton(self,
                           text="+",
                           width=120,
                           repeatdelay=500,
                           repeatinterval=100,
                           command=self.handle_button_up)
        self.selbtn = Button(self,
                             text="\nPour\n6 oz",
                             image=self.pouricon,
                             compound=CENTER,
                             width=120,
                             height=160,
                             command=self.handle_button_sel)
        dnbtn = RectButton(self,
                           text="−",
                           width=120,
                           repeatdelay=500,
                           repeatinterval=100,
                           command=self.handle_button_dn)
        backbtn = RectButton(self,
                             text="\u23ce",
                             width=120,
                             command=self.handle_button_back)

        self.desc.grid(column=1, row=1, rowspan=7, sticky=N + S + E + W)
        lbl.grid(column=3, row=1, sticky=N)
        upbtn.grid(column=3, row=3, sticky=S)
        self.selbtn.grid(column=3, row=4, pady=5, sticky=N + S)
        dnbtn.grid(column=3, row=5, sticky=N)
        backbtn.grid(column=3, row=7, sticky=S)

        self.grid_columnconfigure(0, minsize=20)
        self.grid_columnconfigure(1, weight=2)
        self.grid_columnconfigure(2, minsize=20)
        self.grid_columnconfigure(3, weight=1)
        self.grid_columnconfigure(4, minsize=20)
        self.grid_rowconfigure(0, minsize=20)
        self.grid_rowconfigure(2, minsize=20)
        self.grid_rowconfigure(6, minsize=40)
        self.grid_rowconfigure(7, weight=1)
        self.grid_rowconfigure(8, minsize=20)

        if self.master.use_metric:
            self.set_amount(25 * int(recipe.totalVolume() / 25 + 0.5))
        else:
            self.set_amount(int(recipe.totalVolume() / OZ + 0.5))
Пример #7
0
    def __init__(self, master, amount, turns, pumpcount=1):
        super(CleanScreen, self).__init__(master)
        self.master = master
        self.last_disp = 0.0
        self.pumpnumber = 0
        self.turn = 0
        self.amount = amount
        self.turns = turns
        self.pumpcount = pumpcount
        self.stopCleaning = False
        self.desc = Text(self, relief=FLAT, wrap=NONE, state=DISABLED)
        backbtn = RectButton(self,
                             text="Abbruch",
                             command=self.handle_button_back)
        self.bgcolor = master.bgcolor
        self.configure(bg=self.bgcolor)

        self.desc.grid(column=0, row=0, sticky=N + E + W + S)
        backbtn.grid(column=0, row=1, padx=10, pady=10, sticky=E + W + S)

        self.grid_columnconfigure(0, weight=1)
        self.grid_rowconfigure(0, weight=1)
        try:
            self.ser.readData()
        except:
            try:
                self.ser = SerialConnection()
                self.ser.readData()
            except:
                logging.debug("Verbindung nicht moeglich")
        self.next_Pump()
Пример #8
0
 def __init__(self, master):
     super(DumpScreen, self).__init__(master)
     self.master = master
     self.lbl = Label(self, text="Dumping all feeds")
     self.backbtn = RectButton(self, text="Stop", command=self.handle_button_back)
     self.lbl.pack(side=TOP, fill=BOTH, expand=1)
     self.backbtn.pack(side=BOTTOM, fill=X, padx=10, pady=10)
     for feed in SupplyFeed.getAll():
         feed.startFeed()
Пример #9
0
 def __init__(self, master):
     super(ConfigScreen, self).__init__(master)
     self.use_metric = IntVar()
     self.use_metric.set(1 if self.master.use_metric else 0)
     feedsbtn = RectButton(self,
                           text="Zutaten ändern",
                           command=self.handle_button_feeds)
     recipesbtn = RectButton(self,
                             text="Rezepte ändern",
                             command=self.handle_button_recipes)
     fillbtn = RectButton(self,
                          text="Fülle alle Schläuche",
                          command=self.handle_button_fill)
     emptybtn = RectButton(self,
                           text="Leere alle Schläuche",
                           command=self.handle_button_empty)
     cleanbtn = RectButton(self,
                           text="Spüle alle Pumpen",
                           command=self.handle_button_clean)
     unitbtn = TouchCheckbox(self,
                             text="Metrische Einheiten",
                             variable=self.use_metric,
                             command=self.handle_button_metric)
     chpassbtn = RectButton(self,
                            text="Passcode ändern",
                            command=self.handle_button_chpass)
     shutdownbtn = RectButton(self,
                              text="Shutdown",
                              command=self.handle_button_shutdown)
     backbtn = RectButton(self,
                          text="\u23ce",
                          width=120,
                          command=self.handle_button_back)
     feedsbtn.grid(column=1, row=1, padx=20, pady=10, sticky=N + E + W)
     recipesbtn.grid(column=1, row=2, padx=20, pady=10, sticky=N + E + W)
     emptybtn.grid(column=1, row=3, padx=20, pady=10, sticky=N + E + W)
     unitbtn.grid(column=1, row=4, padx=20, pady=10, sticky=N + W)
     chpassbtn.grid(column=2, row=1, padx=20, pady=10, sticky=N + E + W)
     shutdownbtn.grid(column=2, row=2, padx=20, pady=10, sticky=N + E + W)
     cleanbtn.grid(column=2, row=3, padx=20, pady=10, sticky=N + E + W)
     fillbtn.grid(column=2, row=4, padx=20, pady=10, sticky=N + E + W)
     backbtn.grid(column=3, row=9, padx=20, pady=10, sticky=S + E)
     self.columnconfigure(0, minsize=20)
     self.columnconfigure(1, weight=1)
     self.columnconfigure(2, weight=1)
     self.columnconfigure(4, minsize=20)
     self.rowconfigure(0, minsize=10)
     self.rowconfigure(8, weight=1)
     self.rowconfigure(9, minsize=10)
     self.bgcolor = master.bgcolor
     self.configure(bg=self.bgcolor)
     self.amount = -20
     self.turns = 2
Пример #10
0
 def update_buttons(self):
     for btn in self.buttons:
         btn.forget()
         btn.destroy()
     types = Recipe.getTypeNames()
     colsarr = [1, 2, 3, 2, 3, 3, 4]
     maxcols = colsarr[len(types)]
     col, row = 1, 1
     for type_ in types:
         img = self.master.get_image(Recipe.getTypeIcon(type_))
         cmd = lambda typ=type_: self.handle_type_button(typ)
         btn = Button(self,
                      text=type_,
                      compound=TOP,
                      image=img,
                      command=cmd,
                      width=160)
         btn.grid(column=col, row=row, padx=5, pady=5)
         self.buttons.append(btn)
         col += 1
         if col > maxcols:
             col = 1
             row += 1
             self.rowconfigure(row, weight=0)
     img = self.master.get_image("IngredientsIcon.gif")
     btn = Button(self,
                  text="By Ingredient",
                  compound=TOP,
                  image=img,
                  command=self.handle_button_ingredients,
                  width=160)
     btn.grid(column=col, row=row, padx=5, pady=5)
     self.buttons.append(btn)
     confbtn = RectButton(self,
                          text="\u2699",
                          command=self.handle_button_conf,
                          width=15,
                          height=20)
     confbtn.grid(column=maxcols,
                  row=row,
                  columnspan=2,
                  rowspan=2,
                  sticky=S + E)
     self.buttons.append(confbtn)
     self.columnconfigure(0, weight=1)
     for col in range(maxcols):
         self.columnconfigure(col + 1, weight=0)
     self.columnconfigure(maxcols + 1, weight=1)
     self.columnconfigure(maxcols + 2, weight=0)
     self.columnconfigure(maxcols + 3, weight=0)
     self.rowconfigure(0, weight=1)
     self.rowconfigure(1, weight=0)
     self.rowconfigure(row + 1, weight=1)
     self.rowconfigure(row + 2, weight=0)
     self.rowconfigure(row + 3, weight=0)
Пример #11
0
    def __init__(self,
                 master,
                 value=0,
                 values=None,
                 minval=0,
                 maxval=100,
                 incdecval=1,
                 format="%s",
                 justify=CENTER,
                 **kwargs):
        super(TouchSpinner, self).__init__(master, class_="TouchSpinner")
        self.master = master
        self.value = value
        self.values = values
        self.min_value = minval
        self.max_value = maxval
        self.format = format
        self.justify = justify
        self.incdecval = incdecval
        self.changecmd = None

        self.upbtn = RectButton(self,
                                text="+",
                                repeatdelay=500,
                                repeatinterval=100,
                                command=self._button_up)
        self.vallbl = Label(self, text=format % value, justify=justify)
        self.dnbtn = RectButton(self,
                                text="−",
                                repeatdelay=500,
                                repeatinterval=100,
                                command=self._button_dn)

        self.upbtn.pack(side=TOP, fill=X)
        self.dnbtn.pack(side=BOTTOM, fill=X)
        self.vallbl.pack(side=LEFT, fill=BOTH, expand=1)

        self.config(**kwargs)
        self._refresh_label()
Пример #12
0
 def __init__(self, master, items, callback=None, labeltext=None, cols=3):
     super(SelectScreen, self).__init__(master)
     self.master = master
     self.callback = callback if callback else self.handle_button_select
     self.buttons = []
     if labeltext:
         self.grid_rowconfigure(0, minsize=10)
         lbl = Label(self, text=labeltext)
         lbl.grid(column=1, row=1, columnspan=cols * 2 - 1, sticky=N + W)
         self.grid_rowconfigure(2, minsize=10)
     self.update_buttons(items, cols=cols)
     if callable(getattr(self, "handle_button_new", None)):
         newbtn = RectButton(self,
                             text="\u2795",
                             width=40,
                             command=self.handle_button_new)
         newbtn.grid(column=1, row=98, sticky=S + W)
     backbtn = RectButton(self,
                          text="\u23ce",
                          width=120,
                          command=self.handle_button_back)
     backbtn.grid(column=cols * 2 - 1, row=98, sticky=S + E)
     self.grid_rowconfigure(97, weight=1)
     self.grid_rowconfigure(99, minsize=10)
Пример #13
0
 def __init__(self, master, text=""):
     super(NotifyScreen, self).__init__(master)
     self.master = master
     lbl = Label(self, text=text, font="Helvetica 24")
     backbtn = RectButton(self,
                          text="\u23ce",
                          width=120,
                          command=self.handle_button_back)
     lbl.grid(column=1, row=1, sticky=E + W)
     backbtn.grid(column=1, row=3, sticky=S + E)
     self.grid_columnconfigure(0, minsize=10)
     self.grid_columnconfigure(1, weight=1)
     self.grid_columnconfigure(9, minsize=10)
     self.grid_rowconfigure(0, minsize=10)
     self.grid_rowconfigure(1, weight=1)
     self.grid_rowconfigure(9, minsize=10)
Пример #14
0
    def __init__(self, master, recipe, amount):
        super(DispensingScreen, self).__init__(master)
        self.master = master
        self.recipe = recipe
        self.last_disp = 0.0
        self.desc = Text(self, relief=FLAT, wrap=NONE, state=DISABLED)
        backbtn = RectButton(self,
                             text="Cancel",
                             command=self.handle_button_back)

        self.desc.grid(column=0, row=0, sticky=N + E + W + S)
        backbtn.grid(column=0, row=1, padx=10, pady=10, sticky=E + W + S)

        self.grid_columnconfigure(0, weight=1)
        self.grid_rowconfigure(0, weight=1)
        recipe.startDispensing(amount)
        self.pid = self.after(UPDATE_MS, self.update_screen)
Пример #15
0
 def __init__(self, master):
     super(ConfigScreen, self).__init__(master)
     self.use_metric = IntVar()
     self.use_metric.set(1 if self.master.use_metric else 0)
     feedsbtn = RectButton(self,
                           text="Manage Feeds",
                           command=self.handle_button_feeds)
     recipesbtn = RectButton(self,
                             text="Manage Recipes",
                             command=self.handle_button_recipes)
     dumpbtn = RectButton(self,
                          text="Dump All Feeds",
                          command=self.handle_button_dump)
     unitbtn = TouchCheckbox(self,
                             text="Metric Units",
                             variable=self.use_metric,
                             command=self.handle_button_metric)
     chpassbtn = RectButton(self,
                            text="Change Passcode",
                            command=self.handle_button_chpass)
     shutdownbtn = RectButton(self,
                              text="Shutdown",
                              command=self.handle_button_shutdown)
     backbtn = RectButton(self,
                          text="\u23ce",
                          width=120,
                          command=self.handle_button_back)
     feedsbtn.grid(column=1, row=1, padx=20, pady=10, sticky=N + E + W)
     recipesbtn.grid(column=1, row=2, padx=20, pady=10, sticky=N + E + W)
     dumpbtn.grid(column=1, row=3, padx=20, pady=10, sticky=N + E + W)
     unitbtn.grid(column=1, row=4, padx=20, pady=10, sticky=N + W)
     chpassbtn.grid(column=2, row=1, padx=20, pady=10, sticky=N + E + W)
     shutdownbtn.grid(column=2, row=2, padx=20, pady=10, sticky=N + E + W)
     backbtn.grid(column=2, row=9, padx=20, pady=10, sticky=S + E)
     self.columnconfigure(0, minsize=20)
     self.columnconfigure(1, weight=1)
     self.columnconfigure(2, weight=1)
     self.columnconfigure(4, minsize=20)
     self.rowconfigure(0, minsize=10)
     self.rowconfigure(8, weight=1)
     self.rowconfigure(9, minsize=10)
Пример #16
0
    def __init__(self,
                 master,
                 items_cb,
                 label_text="",
                 add_cb=None,
                 del_cb=None,
                 edit_cb=None,
                 raise_cb=None,
                 lower_cb=None,
                 add_lbl="\u2795",
                 del_lbl="\u2796",
                 edit_lbl="\u270e",
                 raise_lbl="\u2b06",
                 lower_lbl="\u2b07",
                 extra_btns=None):
        super(ListScreen, self).__init__(master)
        self.master = master
        self.items_cb = items_cb
        self.add_cb = add_cb
        self.del_cb = del_cb
        self.edit_cb = edit_cb
        self.raise_cb = raise_cb
        self.lower_cb = lower_cb
        self.extra_btns = []
        self.items = []

        btnwidth = 150
        if label_text:
            self.lbl = Label(self, text=label_text)
        self.upbtn = RectButton(self,
                                text="\u25b2",
                                state=DISABLED,
                                repeatdelay=500,
                                repeatinterval=100,
                                command=self.handle_button_up)
        self.lbox = Listbox(self,
                            width=40,
                            height=5,
                            fg="#000000",
                            bg="#ffffff")
        self.dnbtn = RectButton(self,
                                text="\u25bc",
                                state=DISABLED,
                                repeatdelay=500,
                                repeatinterval=100,
                                command=self.handle_button_dn)
        if self.add_cb:
            self.addbtn = RectButton(self,
                                     text=add_lbl,
                                     width=btnwidth,
                                     command=self.handle_button_add)
        if self.edit_cb:
            self.editbtn = RectButton(self,
                                      text=edit_lbl,
                                      width=btnwidth,
                                      command=self.handle_button_edit)
        if self.del_cb:
            self.delbtn = RectButton(self,
                                     text=del_lbl,
                                     width=btnwidth,
                                     command=self.handle_button_del)
        if self.raise_cb:
            self.raisebtn = RectButton(self,
                                       text=raise_lbl,
                                       width=btnwidth,
                                       command=self.handle_button_raise)
        if self.lower_cb:
            self.lowerbtn = RectButton(self,
                                       text=lower_lbl,
                                       width=btnwidth,
                                       command=self.handle_button_lower)
        if extra_btns:
            self.extra_btns = []
            for d in extra_btns:
                txt = d['name']
                cb = d['callback']
                en = d.get('enable_cb', None)
                btn = RectButton(
                    self,
                    text=txt,
                    width=btnwidth,
                    command=lambda x=cb: self.handle_button_extra(x))
                btn.en_cb = en
                self.extra_btns.append(btn)
        backbtn = RectButton(self,
                             text="\u23ce",
                             width=120,
                             command=self.handle_button_back)
        self.lbox.bind('<<ListboxSelect>>', self.listbox_select)

        if label_text:
            self.lbl.grid(column=1, row=1, columnspan=3, sticky=N + W)
        self.upbtn.grid(column=1, row=2, sticky=S + E + W)
        self.lbox.grid(column=1,
                       row=3,
                       rowspan=95,
                       padx=2,
                       pady=1,
                       sticky=N + S + E + W)
        self.dnbtn.grid(column=1, row=98, sticky=N + E + W)
        if self.add_cb:
            self.addbtn.grid(column=3, row=3, pady=5, sticky=N + W)
        if self.edit_cb:
            self.editbtn.grid(column=3, row=4, pady=5, sticky=N + W)
        if self.del_cb:
            self.delbtn.grid(column=3, row=5, pady=5, sticky=N + W)
        if self.raise_cb:
            self.raisebtn.grid(column=3, row=7, pady=5, sticky=N + W)
        if self.lower_cb:
            self.lowerbtn.grid(column=3, row=8, pady=5, sticky=N + W)
        for n, btn in enumerate(self.extra_btns):
            btn.grid(column=3, row=10 + n, pady=5, sticky=N + W)
        backbtn.grid(column=3, row=98, sticky=S + E)

        self.columnconfigure(0, minsize=10)
        self.columnconfigure(1, weight=1)
        self.columnconfigure(2, minsize=10)
        self.columnconfigure(3, weight=1)
        self.columnconfigure(4, minsize=10)

        self.rowconfigure(0, minsize=10)
        self.rowconfigure(6, weight=1)
        self.rowconfigure(9, weight=1)
        self.rowconfigure(97, weight=1)
        self.rowconfigure(99, minsize=10)

        self.update_listbox()
Пример #17
0
    def __init__(self, master, recipe):
        super(PourScreen, self).__init__(master, class_="Pour")
        self.master = master
        self.bgcolor = master.bgcolor
        self.configure(bg=self.bgcolor)
        self.recipe = recipe
        self.pouricon = self.master.get_image("PourIconStart.png")
        self.pouriconsmall = self.master.get_image("PourIconSmall.png")
        self.pouriconmiddle = self.master.get_image("PourIconMiddle.png")
        self.pouriconbig = self.master.get_image("PourIconBig.png")
        self.desc = Text(self, width=32, state=DISABLED)
        #lbl = Label(self, text="Zubereitungsmenge:")
        #upbtn = RectButton(self, text="+", width=120, repeatdelay=500, repeatinterval=100, command=self.handle_button_up)
        self.smallbtn = Button(self,
                               text="",
                               image=self.pouriconsmall,
                               compound=CENTER,
                               width=120,
                               height=110,
                               command=self.handle_button_small)
        self.middlebtn = Button(self,
                                text="",
                                image=self.pouriconmiddle,
                                compound=CENTER,
                                width=120,
                                height=110,
                                command=self.handle_button_middle)
        self.bigbtn = Button(self,
                             text="",
                             image=self.pouriconbig,
                             compound=CENTER,
                             width=120,
                             height=120,
                             command=self.handle_button_big)
        self.selbtn = Button(self,
                             text="\n\n6 ml",
                             image=self.pouricon,
                             compound=CENTER,
                             width=120,
                             height=110,
                             command=self.handle_button_sel)
        #dnbtn = RectButton(self, text="−", width=120, repeatdelay=500, repeatinterval=100, command=self.handle_button_dn)
        backbtn = RectButton(self,
                             text="\u23ce",
                             width=120,
                             command=self.handle_button_back)

        self.desc.grid(column=1, row=1, rowspan=7, sticky=N + S + E + W)
        #lbl.grid(column=3, row=1, sticky=N)
        self.smallbtn.grid(column=3, row=1, sticky=N + E + W)
        self.middlebtn.grid(column=3, row=2, sticky=N + E + W)
        self.bigbtn.grid(column=3, row=3, sticky=N + E + W)
        self.selbtn.grid(column=3, row=4, sticky=N + E + W)
        #dnbtn.grid(column=3, row=5, sticky=N)
        backbtn.grid(column=3, row=7, sticky=S + E + W)

        self.grid_columnconfigure(0, minsize=20)
        self.grid_columnconfigure(1, weight=2)
        self.grid_columnconfigure(2, minsize=20)
        self.grid_columnconfigure(3, weight=1)
        self.grid_columnconfigure(4, minsize=20)
        self.grid_rowconfigure(0, minsize=20)
        self.grid_rowconfigure(2, minsize=20)
        self.grid_rowconfigure(6, minsize=40)
        self.grid_rowconfigure(7, weight=1)
        self.grid_rowconfigure(8, minsize=20)

        if self.master.use_metric:
            self.set_amount(25 * int(recipe.totalVolume() / 25 + 0.5))
        else:
            self.set_amount(int(recipe.totalVolume() / OZ + 0.5))
Пример #18
0
    def __init__(self, master, label="Enter text:", defval="", callback=None):
        self.callback = callback if callback else self.master.screen_pop
        self.label_txt = label
        self.curr_kbfr = None
        self.kbframes = []
        super(AlphaScreen, self).__init__(master, class_="Alpha")

        if self.label_txt:
            self.lbl = Label(self, text=self.label_txt, font="Helvetica 24")
        self.entry = Entry(self, width=30, font="Helvetica 24")
        self.entry.delete(0, END)
        self.entry.insert(0, defval)
        self.entry.icursor(END)

        if self.label_txt:
            self.lbl.pack(side=TOP, fill=X, expand=0, padx=10, pady=20)
        self.entry.pack(side=TOP, fill=NONE, expand=1)

        keyboards = [
            [["q", "u", "e", "r", "t", "y", "u", "i", "o", "p"],
             ["a", "s", "d", "f", "g", "h", "j", "k", "l"],
             ["ABC", "z", "x", "c", "v", "b", "n", "m", "\u232b"],
             ["123", "\u2190", "\u2192", "Space", "Cancel", "Enter"]],
            [["Q", "U", "E", "R", "T", "Y", "U", "I", "O", "P"],
             ["A", "S", "D", "F", "G", "H", "J", "K", "L"],
             ["abc", "Z", "X", "C", "V", "B", "N", "M", "\u232b"],
             ["123", "\u2190", "\u2192", "Space", "Cancel", "Enter"]],
            [["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"],
             ["-", "/", ":", ";", "(", ")", "$", "&", "@", '"'],
             ["abc", ".", ",", "?", "!", "'", "\u232b"],
             ["*%^", "\u2190", "\u2192", "Space", "Cancel", "Enter"]],
            [["[", "]", "{", "}", "#", "%", "^", "*", "+", "="],
             [
                 "_", "\\", "|", "~", "<", ">", "\u20ac", "\u00a3", "\u00a5",
                 '\u00b7'
             ], ["abc", ".", ",", "?", "!", "'", "\u232b"],
             ["123", "\u2190", "\u2192", "Space", "Cancel", "Enter"]],
        ]
        key_widths = {
            "\u2190": 50,
            "\u2192": 50,
            "Space": 500,
            "Cancel": 150,
            "Enter": 150,
        }
        for kb in keyboards:
            kbfr = Frame(self)
            self.kbframes.append(kbfr)
            for keyrow in kb:
                rowfr = Frame(kbfr)
                for col, key in enumerate(keyrow):
                    keywidth = key_widths.get(key, 100)
                    keybtn = RectButton(
                        rowfr,
                        text="%s" % key,
                        height=40,
                        repeatdelay=500,
                        repeatinterval=100,
                        command=lambda x=key: self.handle_button_key(x))
                    keybtn.grid(column=col,
                                row=0,
                                sticky=E + W,
                                padx=5,
                                pady=5)
                    rowfr.columnconfigure(col, weight=keywidth)
                rowfr.pack(side=TOP, fill=X, expand=1)
        self.change_kb(1)
Пример #19
0
    def __init__(self, master, feed):
        super(CalibScreen, self).__init__(master)
        self.master = master
        self.feed = feed
        self.dispensed = 0.0
        self.target_ml = 0.0
        self.duty_cycle = 1.0
        self.dispensing = False
        self.start_pid = None
        self.stop_pid = None

        lbl = Label(self,
                    text="Feed #%d: %s" % (feed.motor_num, feed.getName()))
        self.dutyspin = TouchSpinner(self,
                                     width=150,
                                     value=100,
                                     minval=10,
                                     maxval=100,
                                     incdecval=5,
                                     format="Duty: %d%%")
        self.amntspin = TouchSpinner(self,
                                     width=150,
                                     value=100,
                                     minval=25,
                                     maxval=500,
                                     incdecval=25,
                                     format="Amount: %d ml")
        self.pourbtn = RectButton(self,
                                  text="Pour",
                                  width=150,
                                  command=self.handle_button_pour)
        self.flowspin = TouchSpinner(self,
                                     width=150,
                                     value=feed.remaining,
                                     minval=0.1,
                                     maxval=50.0,
                                     incdecval=0.1,
                                     format="Flow: %.1f ml/s",
                                     changecmd=self._remaining_change)
        self.overspin = TouchSpinner(self,
                                     width=150,
                                     value=feed.pulse_overage,
                                     minval=0.0,
                                     maxval=2.0,
                                     incdecval=0.01,
                                     format="Pulse: %.2f ml",
                                     changecmd=self._overage_change)
        self.displbl = Label(self, text="")
        backbtn = RectButton(self,
                             text="\u23ce",
                             width=120,
                             command=self.handle_button_back)

        lbl.grid(column=1,
                 row=1,
                 columnspan=3,
                 padx=20,
                 pady=10,
                 sticky=N + E + W)
        self.dutyspin.grid(column=1, row=2, padx=20, pady=20, sticky=N)
        self.amntspin.grid(column=2, row=2, padx=20, pady=20, sticky=N)
        self.pourbtn.grid(column=3, row=2, padx=20, pady=20, sticky=N)
        self.flowspin.grid(column=1, row=3, padx=20, pady=20, sticky=N)
        self.overspin.grid(column=2, row=3, padx=20, pady=20, sticky=N)
        self.displbl.grid(column=3, row=3, padx=20, pady=20, sticky=N)
        backbtn.grid(column=1,
                     row=9,
                     columnspan=4,
                     padx=20,
                     pady=10,
                     sticky=S + E)

        self.columnconfigure(0, weight=1)
        self.columnconfigure(4, weight=1)
        self.rowconfigure(0, minsize=10)
        self.rowconfigure(8, weight=1)
        self.rowconfigure(10, minsize=10)
Пример #20
0
    def __init__(
            self,
            master,
            items_cb,
            label_text="",
            add_cb=None,
            del_cb=None,
            edit_cb=None,
            raise_cb=None,
            lower_cb=None,
            #en_ckb=None,
            rem_sp=None,
            ep_cb=None,
            add_lbl="\u002b",
            del_lbl="\u2212",
            edit_lbl="\u270e",
            raise_lbl="\u2b06",
            lower_lbl="\u2b07",
            ep_lbl="Export PDF",
            extra_btns=None):
        super(ListScreen, self).__init__(master)
        self.master = master
        self.bgcolor = master.bgcolor
        self.configure(bg=self.bgcolor)
        self.items_cb = items_cb
        self.add_cb = add_cb
        self.del_cb = del_cb
        self.edit_cb = edit_cb
        self.raise_cb = raise_cb
        self.lower_cb = lower_cb
        self.rem_sp = rem_sp
        self.ep_cb = ep_cb
        self.sel_rem = 700
        self.extra_btns = []
        self.items = []

        btnwidth = 150
        if label_text:
            self.lbl = Label(self, text=label_text)
        self.upbtn = RectButton(self,
                                text="\u25b2",
                                state=DISABLED,
                                repeatdelay=500,
                                repeatinterval=100,
                                command=self.handle_button_up)
        self.lbox = Listbox(self,
                            width=40,
                            height=5,
                            fg="#000000",
                            bg="#ffffff")
        self.dnbtn = RectButton(self,
                                text="\u25bc",
                                state=DISABLED,
                                repeatdelay=500,
                                repeatinterval=100,
                                command=self.handle_button_dn)
        if self.add_cb:
            self.addbtn = RectButton(self,
                                     text=add_lbl,
                                     width=btnwidth,
                                     command=self.handle_button_add)
        if self.edit_cb:
            self.editbtn = RectButton(self,
                                      text=edit_lbl,
                                      width=btnwidth,
                                      command=self.handle_button_edit)
        if self.del_cb:
            self.delbtn = RectButton(self,
                                     text=del_lbl,
                                     width=btnwidth,
                                     command=self.handle_button_del)
        if self.raise_cb:
            self.raisebtn = RectButton(self,
                                       text=raise_lbl,
                                       width=btnwidth,
                                       command=self.handle_button_raise)
        if self.lower_cb:
            self.lowerbtn = RectButton(self,
                                       text=lower_lbl,
                                       width=btnwidth,
                                       command=self.handle_button_lower)
        if self.rem_sp:
            self.remainspin = TouchSpinner(
                self,
                width=150,
                value=self.sel_rem,
                minval=-50,
                maxval=5000,
                incdecval=50,
                format="Restinhalt: %d",
                changecmd=self.handle_remaining_change)
        if self.ep_cb:
            self.epbtn = RectButton(self,
                                    text=ep_lbl,
                                    width=btnwidth,
                                    command=self.handle_button_ep)

        if extra_btns:
            self.extra_btns = []
            for d in extra_btns:
                txt = d['name']
                cb = d['callback']
                btn = RectButton(
                    self,
                    text=txt,
                    width=btnwidth,
                    command=lambda x=cb: self.handle_button_extra(x))
                btn.en_cb = en
                self.extra_btns.append(btn)
        backbtn = RectButton(self,
                             text="\u23ce",
                             width=120,
                             command=self.handle_button_back)
        self.lbox.bind('<<ListboxSelect>>', self.listbox_select)

        if label_text:
            self.lbl.grid(column=1, row=1, columnspan=3, sticky=N + W)
        self.upbtn.grid(column=1, row=2, sticky=S + E + W)
        self.lbox.grid(column=1,
                       row=3,
                       rowspan=95,
                       padx=2,
                       pady=1,
                       sticky=N + S + E + W)
        self.dnbtn.grid(column=1, row=98, sticky=N + E + W)
        if self.add_cb:
            self.addbtn.grid(column=3, row=3, pady=5, sticky=N + W)
        if self.edit_cb:
            self.editbtn.grid(column=3, row=4, pady=5, sticky=N + W)
        if self.del_cb:
            self.delbtn.grid(column=3, row=5, pady=5, sticky=N + W)
        if self.raise_cb:
            self.raisebtn.grid(column=3, row=7, pady=5, sticky=N + W)
        if self.lower_cb:
            self.lowerbtn.grid(column=3, row=8, pady=5, sticky=N + W)
        if self.rem_sp:
            self.remainspin.grid(column=3, row=13, rowspan=3, padx=20, pady=10)
        if self.ep_cb:
            self.epbtn.grid(column=3, row=16, pady=5, sticky=N + W)

        for n, btn in enumerate(self.extra_btns):
            btn.grid(column=3, row=15 + n, pady=5, sticky=N + W)
        backbtn.grid(column=3, row=98, sticky=S + E)

        self.columnconfigure(0, minsize=10)
        self.columnconfigure(1, weight=1)
        self.columnconfigure(2, minsize=10)
        self.columnconfigure(3, weight=1)
        self.columnconfigure(4, minsize=10)

        self.rowconfigure(0, minsize=10)
        self.rowconfigure(6, weight=1)
        self.rowconfigure(9, weight=1)
        self.rowconfigure(97, weight=1)
        self.rowconfigure(99, minsize=10)

        self.update_listbox()
Пример #21
0
    def __init__(self, master, recipe):
        super(RecipeEditScreen, self).__init__(master)
        self.master = master
        self.recipe = recipe
        self.newfeed = None

        self.renamebtn = RectButton(self,
                                    text="Recipe: %s" % recipe.getName(),
                                    width=200,
                                    justify=LEFT,
                                    command=self.handle_button_rename)
        self.retypebtn = RectButton(self,
                                    text="Category: %s" % recipe.getType(),
                                    width=200,
                                    justify=LEFT,
                                    command=self.handle_button_retype)
        self.upbtn = RectButton(self,
                                text="\u25b2",
                                state=DISABLED,
                                repeatdelay=500,
                                repeatinterval=100,
                                command=self.handle_button_up)
        self.ingrlb = Listbox(self, width=40, height=5)
        self.dnbtn = RectButton(self,
                                text="\u25bc",
                                state=DISABLED,
                                repeatdelay=500,
                                repeatinterval=100,
                                command=self.handle_button_dn)
        self.ingradd = RectButton(self,
                                  text="\u2795",
                                  width=50,
                                  command=self.handle_button_ingr_add)
        self.ingramt = RectButton(self,
                                  text="\u270e",
                                  width=50,
                                  command=self.handle_button_ingr_amt)
        self.ingrdel = RectButton(self,
                                  text="\u2796",
                                  width=50,
                                  command=self.handle_button_ingr_del)
        backbtn = RectButton(self,
                             text="\u23ce",
                             width=120,
                             command=self.handle_button_back)
        self.ingrlb.bind('<<ListboxSelect>>', self.ingredient_listbox_select)

        self.renamebtn.grid(column=1, row=1, pady=10, sticky=N + E + W)
        self.retypebtn.grid(column=3, row=1, pady=10, sticky=N + E + W)
        self.upbtn.grid(column=1, row=3, sticky=S + E + W)
        self.ingrlb.grid(column=1,
                         row=4,
                         rowspan=5,
                         padx=2,
                         pady=1,
                         sticky=N + S + E + W)
        self.dnbtn.grid(column=1, row=9, sticky=N + E + W)
        self.ingradd.grid(column=3, row=5, pady=10, sticky=N + W)
        self.ingramt.grid(column=3, row=6, pady=0, sticky=N + W)
        self.ingrdel.grid(column=3, row=7, pady=10, sticky=N + W)
        backbtn.grid(column=3, row=9, sticky=S + E)

        self.columnconfigure(0, minsize=10)
        self.columnconfigure(1, weight=1)
        self.columnconfigure(2, minsize=10)
        self.columnconfigure(3, weight=1)
        self.columnconfigure(4, minsize=10)

        self.rowconfigure(0, minsize=10)
        self.rowconfigure(2, minsize=15)
        self.rowconfigure(4, weight=1)
        self.rowconfigure(8, weight=1)
        self.rowconfigure(99, minsize=10)
        self.update_ingr_listbox()