示例#1
0
    def __init__(self,
                 master,
                 title,
                 message,
                 input="",
                 type_="str",
                 from_=None,
                 to_=None):

        Toplevel.__init__(self, master)
        self.master = master
        self.transient(master)
        Label(self, text=message, justify=LEFT).pack(expand=YES,
                                                     fill=BOTH,
                                                     side=TOP)

        if type_ == "int":
            self.entry = tkExtra.IntegerEntry(self)
            self.entry.insert(0, input)
            w = self.entry

        elif type_ == "float":
            self.entry = tkExtra.FloatEntry(self)
            self.entry.insert(0, input)
            w = self.entry

        elif type_ == "spin":
            self.entry = IntVar()
            self.entry.set(input)
            w = Spinbox(self, text=self.entry, from_=from_, to_=to_)

        else:  # default str
            self.entry = Entry(self)
            self.entry.insert(0, input)
            w = self.entry

        w.pack(padx=5, expand=YES, fill=X)

        frame = Frame(self)
        b = Button(frame, text="Cancel", command=self.cancel)
        b.pack(side=RIGHT, pady=5)
        b = Button(frame, text="Ok", command=self.ok)
        b.pack(side=RIGHT, pady=5)
        frame.pack(fill=X)

        self.input = None
        self.bind("<Return>", self.ok)
        self.bind("<Escape>", self.cancel)
        self.focus_set()
        w.focus_set()
示例#2
0
    def __init__(self, master, app):
        global wcsvar
        CNCRibbon.PageExLabelFrame.__init__(self, master, "State", app)
        self._gUpdate = False

        # State
        f = Frame(self())
        f.pack(side=TOP, fill=X)

        # ===
        col, row = 0, 0
        f2 = Frame(f)
        f2.grid(row=row, column=col, columnspan=5, sticky=EW)
        for p, w in enumerate(WCS):
            col += 1
            b = Radiobutton(f2,
                            text=w,
                            foreground="DarkRed",
                            font="Helvetica,14",
                            padx=1,
                            pady=1,
                            variable=wcsvar,
                            value=p,
                            indicatoron=FALSE,
                            activebackground="LightYellow",
                            command=self.wcsChange)
            b.pack(side=LEFT, fill=X, expand=YES)
            tkExtra.Balloon.set(b, _("Switch to workspace %s") % (w))
            self.addWidget(b)

        # Absolute or relative mode
        row += 1
        col = 0
        Label(f, text=_("Distance:")).grid(row=row, column=col, sticky=E)
        col += 1
        self.distance = tkExtra.Combobox(f,
                                         True,
                                         command=self.distanceChange,
                                         width=5,
                                         background="White")
        self.distance.fill(sorted(DISTANCE_MODE.values()))
        self.distance.grid(row=row, column=col, columnspan=2, sticky=EW)
        tkExtra.Balloon.set(self.distance, _("Distance Mode [G90,G91]"))
        self.addWidget(self.distance)

        # populate gstate dictionary
        self.gstate = {}  # $G state results widget dictionary
        for k, v in DISTANCE_MODE.items():
            self.gstate[k] = (self.distance, v)

        # Units mode
        col += 2
        Label(f, text=_("Units:")).grid(row=row, column=col, sticky=E)
        col += 1
        self.units = tkExtra.Combobox(f,
                                      True,
                                      command=self.unitsChange,
                                      width=5,
                                      background="White")
        self.units.fill(sorted(UNITS.values()))
        self.units.grid(row=row, column=col, sticky=EW)
        tkExtra.Balloon.set(self.units, _("Units [G20, G21]"))
        for k, v in UNITS.items():
            self.gstate[k] = (self.units, v)
        self.addWidget(self.units)

        # Tool
        row += 1
        col = 0
        Label(f, text=_("Tool:")).grid(row=row, column=col, sticky=E)

        col += 1
        self.toolEntry = tkExtra.IntegerEntry(f, background="White", width=5)
        self.toolEntry.grid(row=row, column=col, sticky=EW)
        tkExtra.Balloon.set(self.toolEntry, _("Tool number [T#]"))
        self.addWidget(self.toolEntry)

        col += 1
        b = Button(f, text=_("set"), command=self.setTool, padx=1, pady=1)
        b.grid(row=row, column=col, sticky=W)
        self.addWidget(b)

        # Plane
        col += 1
        Label(f, text=_("Plane:")).grid(row=row, column=col, sticky=E)
        col += 1
        self.plane = tkExtra.Combobox(f,
                                      True,
                                      command=self.planeChange,
                                      width=5,
                                      background="White")
        self.plane.fill(sorted(PLANE.values()))
        self.plane.grid(row=row, column=col, sticky=EW)
        tkExtra.Balloon.set(self.plane, _("Plane [G17,G18,G19]"))
        self.addWidget(self.plane)

        for k, v in PLANE.items():
            self.gstate[k] = (self.plane, v)

        # Feed mode
        row += 1
        col = 0
        Label(f, text=_("Feed:")).grid(row=row, column=col, sticky=E)

        col += 1
        self.feedRate = tkExtra.FloatEntry(f,
                                           background="White",
                                           disabledforeground="Black",
                                           width=5)
        self.feedRate.grid(row=row, column=col, sticky=EW)
        self.feedRate.bind('<Return>', self.setFeedRate)
        self.feedRate.bind('<KP_Enter>', self.setFeedRate)
        tkExtra.Balloon.set(self.feedRate, _("Feed Rate [F#]"))
        self.addWidget(self.feedRate)

        col += 1
        b = Button(f, text=_("set"), command=self.setFeedRate, padx=1, pady=1)
        b.grid(row=row, column=col, columnspan=2, sticky=W)
        self.addWidget(b)

        col += 1
        Label(f, text=_("Mode:")).grid(row=row, column=col, sticky=E)

        col += 1
        self.feedMode = tkExtra.Combobox(f,
                                         True,
                                         command=self.feedModeChange,
                                         width=5,
                                         background="White")
        self.feedMode.fill(sorted(FEED_MODE.values()))
        self.feedMode.grid(row=row, column=col, sticky=EW)
        tkExtra.Balloon.set(self.feedMode, _("Feed Mode [G93, G94, G95]"))
        for k, v in FEED_MODE.items():
            self.gstate[k] = (self.feedMode, v)
        self.addWidget(self.feedMode)

        # ---
        f.grid_columnconfigure(1, weight=1)
        f.grid_columnconfigure(4, weight=1)

        # Spindle
        f = Frame(self())
        f.pack(side=BOTTOM, fill=X)

        self.override = IntVar()
        self.override.set(100)
        self.spindle = BooleanVar()
        self.spindleSpeed = IntVar()

        col, row = 0, 0
        self.overrideCombo = tkExtra.Combobox(f,
                                              width=8,
                                              command=self.overrideComboChange)
        self.overrideCombo.fill(OVERRIDES)
        self.overrideCombo.grid(row=row, column=col, pady=0, sticky=EW)
        tkExtra.Balloon.set(self.overrideCombo, _("Select override type."))

        b = Button(f, text=_("Reset"), pady=0, command=self.resetOverride)
        b.grid(row=row + 1, column=col, pady=0, sticky=NSEW)
        tkExtra.Balloon.set(b, _("Reset override to 100%"))

        col += 1
        self.overrideScale = Scale(f,
                                   command=self.overrideChange,
                                   variable=self.override,
                                   showvalue=True,
                                   orient=HORIZONTAL,
                                   from_=25,
                                   to_=200,
                                   resolution=1)
        self.overrideScale.bind("<Double-1>", self.resetOverride)
        self.overrideScale.bind("<Button-3>", self.resetOverride)
        self.overrideScale.grid(row=row,
                                column=col,
                                rowspan=2,
                                columnspan=4,
                                sticky=EW)
        tkExtra.Balloon.set(
            self.overrideScale,
            _("Set Feed/Rapid/Spindle Override. Right or Double click to reset."
              ))

        self.overrideCombo.set(OVERRIDES[0])

        # ---
        row += 2
        col = 0
        b = Checkbutton(f,
                        text=_("Spindle"),
                        image=Utils.icons["spinningtop"],
                        command=self.spindleControl,
                        compound=LEFT,
                        indicatoron=False,
                        variable=self.spindle,
                        padx=1,
                        pady=0)
        tkExtra.Balloon.set(b, _("Start/Stop spindle (M3/M5)"))
        b.grid(row=row, column=col, pady=0, sticky=NSEW)
        self.addWidget(b)

        col += 1
        b = Scale(f,
                  variable=self.spindleSpeed,
                  command=self.spindleControl,
                  showvalue=True,
                  orient=HORIZONTAL,
                  from_=Utils.config.get("CNC", "spindlemin"),
                  to_=Utils.config.get("CNC", "spindlemax"))
        tkExtra.Balloon.set(b, _("Set spindle RPM"))
        b.grid(row=row, column=col, sticky=EW, columnspan=3)
        self.addWidget(b)

        f.grid_columnconfigure(1, weight=1)

        # Coolant control

        self.coolant = BooleanVar()
        self.mist = BooleanVar()
        self.flood = BooleanVar()

        row += 1
        col = 0
        Label(f, text=_("Coolant:")).grid(row=row, column=col, sticky=E)
        col += 1

        coolantDisable = Checkbutton(f,
                                     text=_("OFF"),
                                     command=self.coolantOff,
                                     indicatoron=False,
                                     variable=self.coolant,
                                     padx=1,
                                     pady=0)
        tkExtra.Balloon.set(coolantDisable, _("Stop cooling (M9)"))
        coolantDisable.grid(row=row, column=col, pady=0, sticky=NSEW)
        self.addWidget(coolantDisable)

        col += 1
        floodEnable = Checkbutton(f,
                                  text=_("Flood"),
                                  command=self.coolantFlood,
                                  indicatoron=False,
                                  variable=self.flood,
                                  padx=1,
                                  pady=0)
        tkExtra.Balloon.set(floodEnable, _("Start flood (M8)"))
        floodEnable.grid(row=row, column=col, pady=0, sticky=NSEW)
        self.addWidget(floodEnable)

        col += 1
        mistEnable = Checkbutton(f,
                                 text=_("Mist"),
                                 command=self.coolantMist,
                                 indicatoron=False,
                                 variable=self.mist,
                                 padx=1,
                                 pady=0)
        tkExtra.Balloon.set(mistEnable, _("Start mist (M7)"))
        mistEnable.grid(row=row, column=col, pady=0, sticky=NSEW)
        self.addWidget(mistEnable)
        f.grid_columnconfigure(1, weight=1)
示例#3
0
    def __init__(self, master, app):
        CNCRibbon.PageExLabelFrame.__init__(self, master, "State", _("State"),
                                            app)

        self._gUpdate = False

        # print("StateFrame self.app",self.app)

        # State
        frame = Tk.Frame(self())
        frame.pack(side=Tk.TOP, fill=Tk.X)

        col, row = 0, 0
        subframe = Tk.Frame(frame)
        subframe.grid(row=row, column=col, columnspan=5, sticky=Tk.EW)

        for p, w in enumerate(OCV.WCS):
            col += 1
            but = Tk.Radiobutton(subframe,
                                 text=w,
                                 foreground="DarkRed",
                                 font=OCV.FONT_STATE_WCS,
                                 padx=1,
                                 pady=1,
                                 variable=OCV.wcsvar,
                                 value=p,
                                 indicatoron=0,
                                 activebackground="LightYellow",
                                 command=self.wcsChange)

            but.pack(side=Tk.LEFT, fill=Tk.X, expand=Tk.YES)

            tkExtra.Balloon.set(but, _("Switch to workspace {0}").format(w))

            self.addWidget(but)

        row += 1

        label_text = (_("Distance:"), _("Units:"), _("Tool:"), _("Plane:"),
                      _("Feed:"), _("Mode:"), _("TLO:"), _("G92:"))
        label_pos = ((row, 0), (row, 3), (row + 1, 0), (row + 1, 3),
                     (row + 2, 0), (row + 2, 3), (row + 3, 0), (row + 3, 3))

        for idx, val in enumerate(label_text):
            lab = Tk.Label(frame,
                           text=label_text[idx],
                           font=OCV.FONT_STATE_BUT)

            lab.grid(row=label_pos[idx][0],
                     column=label_pos[idx][1],
                     sticky=Tk.E)

        # Absolute or relative mode
        col = 1

        self.distance = tkExtra.Combobox(
            frame,
            True,
            command=self.distanceChange,
            width=5,
            background=tkExtra.GLOBAL_CONTROL_BACKGROUND)

        self.distance.fill(sorted(OCV.DISTANCE_MODE.values()))
        self.distance.grid(row=row, column=col, columnspan=2, sticky=Tk.EW)

        bal_text = ""

        if OCV.IS_PY3 is True:
            g17_items = OCV.DISTANCE_MODE.items()
        else:
            g17_items = OCV.DISTANCE_MODE.viewitems()

        for key, val in g17_items:
            bal_text += "{0} > {1}\n".format(key, val)

        tkExtra.Balloon.set(self.distance,
                            _("Distance Mode:\n{0}".format(bal_text)))

        self.addWidget(self.distance)

        # populate gstate dictionary
        self.gstate = {}  # $G state results widget dictionary

        for key, val in g17_items:
            self.gstate[key] = (self.distance, val)

        col += 3

        self.units = tkExtra.Combobox(
            frame,
            True,
            command=self.unitsChange,
            width=5,
            background=tkExtra.GLOBAL_CONTROL_BACKGROUND)

        self.units.fill(sorted(OCV.UNITS.values()))
        self.units.grid(row=row, column=col, sticky=Tk.EW)

        bal_text = ""

        if OCV.IS_PY3 is True:
            unit_items = OCV.UNITS.items()
        else:
            unit_items = OCV.UNITS.viewitems()

        for key, val in unit_items:
            bal_text += "{0} > {1}\n".format(key, val)

        tkExtra.Balloon.set(self.units, _("Units:\n{0}".format(bal_text)))

        for key, val in unit_items:
            self.gstate[key] = (self.units, val)

        self.addWidget(self.units)

        # Tool
        row += 1
        col = 1
        self.toolEntry = tkExtra.IntegerEntry(
            frame, background=tkExtra.GLOBAL_CONTROL_BACKGROUND, width=5)

        self.toolEntry.grid(row=row, column=col, sticky=Tk.EW)

        tkExtra.Balloon.set(self.toolEntry, _("Tool number [T#]"))
        self.addWidget(self.toolEntry)

        col += 1

        but = Tk.Button(frame,
                        text=_("set"),
                        command=self.setTool,
                        padx=1,
                        pady=1)

        but.grid(row=row, column=col, sticky=Tk.W)
        self.addWidget(but)

        # Plane

        col += 2

        self.plane = tkExtra.Combobox(
            frame,
            True,
            command=self.planeChange,
            width=5,
            background=tkExtra.GLOBAL_CONTROL_BACKGROUND)

        self.plane.fill(sorted(OCV.PLANE.values()))
        self.plane.grid(row=row, column=col, sticky=Tk.EW)

        bal_text = ""

        if OCV.IS_PY3 is True:
            plane_items = OCV.PLANE.items()
        else:
            plane_items = OCV.PLANE.viewitems()

        for key, val in plane_items:
            bal_text += "{0} > {1}\n".format(key, val)

        tkExtra.Balloon.set(self.plane, _("Plane:\n{0}".format(bal_text)))

        self.addWidget(self.plane)

        for k, v in plane_items:
            self.gstate[k] = (self.plane, v)

        # Feed speed
        row += 1
        col = 1
        self.feed_rate = tkExtra.FloatEntry(
            frame,
            background=tkExtra.GLOBAL_CONTROL_BACKGROUND,
            disabledforeground="Black",
            width=5)

        self.feed_rate.grid(row=row, column=col, sticky=Tk.EW)
        self.feed_rate.bind('<Return>', self.setFeedRate)
        self.feed_rate.bind('<KP_Enter>', self.setFeedRate)

        tkExtra.Balloon.set(self.feed_rate, _("Feed Rate [F#]"))
        self.addWidget(self.feed_rate)

        col += 1

        but = Tk.Button(frame,
                        text=_("set"),
                        command=self.setFeedRate,
                        padx=1,
                        pady=1)

        but.grid(row=row, column=col, columnspan=2, sticky=Tk.W)
        self.addWidget(but)

        # Feed mode
        col += 2
        self.feedMode = tkExtra.Combobox(
            frame,
            True,
            command=self.feedModeChange,
            width=5,
            background=tkExtra.GLOBAL_CONTROL_BACKGROUND)

        self.feedMode.fill(sorted(OCV.FEED_MODE.values()))
        self.feedMode.grid(row=row, column=col, sticky=Tk.EW)

        bal_text = ""

        if OCV.IS_PY3 is True:
            feed_items = OCV.FEED_MODE.items()
        else:
            feed_items = OCV.FEED_MODE.viewitems()

        for key, val in feed_items:
            bal_text += "{0} > {1}\n".format(key, val)

        tkExtra.Balloon.set(self.feedMode,
                            _("Feed Mode:\n{0}".format(bal_text)))

        for key, val in feed_items:
            self.gstate[key] = (self.feedMode, val)

        self.addWidget(self.feedMode)

        # TLO
        row += 1
        col = 1

        self.tlo = tkExtra.FloatEntry(
            frame,
            background=tkExtra.GLOBAL_CONTROL_BACKGROUND,
            disabledforeground="Black",
            width=5)

        self.tlo.grid(row=row, column=col, sticky=Tk.EW)
        self.tlo.bind('<Return>', self.setTLO)
        self.tlo.bind('<KP_Enter>', self.setTLO)
        tkExtra.Balloon.set(self.tlo, _("Tool length offset [G43.1#]"))
        self.addWidget(self.tlo)

        col += 1

        but = Tk.Button(frame,
                        text=_("set"),
                        command=self.setTLO,
                        padx=1,
                        pady=1)

        but.grid(row=row, column=col, columnspan=2, sticky=Tk.W)
        self.addWidget(but)

        # g92
        col += 2

        self.g92 = Tk.Label(frame, text="")

        self.g92.grid(row=row, column=col, columnspan=3, sticky=Tk.EW)

        tkExtra.Balloon.set(self.g92, _("Set position [G92 X# Y# Z#]"))
        self.addWidget(self.g92)

        frame.grid_columnconfigure(1, weight=1)
        frame.grid_columnconfigure(4, weight=1)

        # Spindle
        frame1 = Tk.Frame(self())
        frame1.pack(side=Tk.BOTTOM, fill=Tk.X)

        self.override = Tk.IntVar()
        self.override.set(100)
        self.spindle = Tk.BooleanVar()
        self.spindleSpeed = Tk.IntVar()

        col, row = 0, 0

        self.overrideCombo = tkExtra.Combobox(frame1,
                                              width=8,
                                              command=self.overrideComboChange)

        self.overrideCombo.fill(OVERRIDES)
        self.overrideCombo.grid(row=row, column=col, pady=0, sticky=Tk.EW)

        tkExtra.Balloon.set(self.overrideCombo, _("Select override type."))

        but = Tk.Button(frame1,
                        text=_("Reset"),
                        pady=0,
                        command=self.resetOverride)

        but.grid(row=row + 1, column=col, pady=0, sticky=Tk.NSEW)

        tkExtra.Balloon.set(but, _("Reset override to 100%"))

        col += 1

        self.overrideScale = Tk.Scale(frame1,
                                      command=self.overrideChange,
                                      variable=self.override,
                                      showvalue=True,
                                      orient=Tk.HORIZONTAL,
                                      from_=25,
                                      to_=200,
                                      resolution=1)

        self.overrideScale.bind("<Double-1>", self.resetOverride)
        self.overrideScale.bind("<Button-3>", self.resetOverride)

        self.overrideScale.grid(row=row,
                                column=col,
                                rowspan=2,
                                columnspan=4,
                                sticky=Tk.EW)
        tkExtra.Balloon.set(
            self.overrideScale,
            _("Set Feed/Rapid/Spindle Override. Right or Double click to reset."
              ))

        self.overrideCombo.set(OVERRIDES[0])

        row += 2
        col = 0

        but = Tk.Checkbutton(frame1,
                             text=_("Spindle"),
                             image=OCV.icons["spinningtop"],
                             command=self.spindleControl,
                             compound=Tk.LEFT,
                             indicatoron=0,
                             variable=self.spindle,
                             padx=1,
                             pady=0)

        tkExtra.Balloon.set(but, _("Start/Stop spindle (M3/M5)"))

        but.grid(row=row, column=col, pady=0, sticky=Tk.NSEW)
        self.addWidget(but)

        col += 1
        but = Tk.Scale(frame1,
                       variable=self.spindleSpeed,
                       command=self.spindleControl,
                       showvalue=True,
                       orient=Tk.HORIZONTAL,
                       from_=OCV.config.get("CNC", "spindlemin"),
                       to_=OCV.config.get("CNC", "spindlemax"))

        tkExtra.Balloon.set(but, _("Set spindle RPM"))
        but.grid(row=row, column=col, sticky=Tk.EW, columnspan=3)
        self.addWidget(but)

        frame1.grid_columnconfigure(1, weight=1)

        # Coolant control
        self.coolant = Tk.BooleanVar()
        self.mist = Tk.BooleanVar()
        self.flood = Tk.BooleanVar()

        row += 1
        col = 0
        Tk.Label(frame1, text=_("Coolant:")).grid(row=row,
                                                  column=col,
                                                  sticky=Tk.E)

        col += 1

        coolantDisable = Tk.Checkbutton(frame1,
                                        text=_("OFF"),
                                        command=self.coolantOff,
                                        indicatoron=0,
                                        variable=self.coolant,
                                        padx=1,
                                        pady=0)

        tkExtra.Balloon.set(coolantDisable, _("Stop cooling (M9)"))
        coolantDisable.grid(row=row, column=col, pady=0, sticky=Tk.NSEW)
        self.addWidget(coolantDisable)

        col += 1

        floodEnable = Tk.Checkbutton(frame1,
                                     text=_("Flood"),
                                     command=self.coolantFlood,
                                     indicatoron=0,
                                     variable=self.flood,
                                     padx=1,
                                     pady=0)

        tkExtra.Balloon.set(floodEnable, _("Start flood (M8)"))
        floodEnable.grid(row=row, column=col, pady=0, sticky=Tk.NSEW)
        self.addWidget(floodEnable)

        col += 1

        mistEnable = Tk.Checkbutton(frame1,
                                    text=_("Mist"),
                                    command=self.coolantMist,
                                    indicatoron=0,
                                    variable=self.mist,
                                    padx=1,
                                    pady=0)

        tkExtra.Balloon.set(mistEnable, _("Start mist (M7)"))
        mistEnable.grid(row=row, column=col, pady=0, sticky=Tk.NSEW)
        self.addWidget(mistEnable)

        frame1.grid_columnconfigure(1, weight=1)