def edit(self, event=None): active = self.index(ACTIVE) txt = self.get(active) if event: x = event.x else: x = 0 ypos = self.yview()[0] bid, lid = self._items[active] if lid is None: txt0 = txt txt = self.gcode[bid].name() self.set(active, txt) edit = tkExtra.InPlaceEdit(self, select=False, bg=self.cget("bg")) else: edit = tkExtra.InPlaceEdit(self, x=x, select=False, bg=self.cget("bg")) if edit.value is None or edit.value == txt: if lid is None: self.set(active, txt0) self.itemconfig(active, background=BLOCK_COLOR) if not self.gcode[bid].enable: self.itemconfig(active, foreground=DISABLE_COLOR) return if isinstance(lid, int): self.gcode.addUndo(self.gcode.setLineUndo(bid, lid, edit.value)) self.set(active, edit.value) if edit.value and edit.value[0] in ("(", "%"): self.itemconfig(active, foreground=COMMENT_COLOR) elif isinstance(lid, Tab): # try: block = self.gcode[bid] tid = block.tabs.index(lid) params = Tab.parse(edit.value) self.gcode.addUndo(self.gcode.tabSetUndo(bid, tid, params)) # except: # pass else: self.gcode.addUndo(self.gcode.setBlockNameUndo(bid, edit.value)) self.set(active, self.gcode[bid].header()) self.itemconfig(active, background=BLOCK_COLOR) if not self.gcode[bid].enable: self.itemconfig(active, foreground=DISABLE_COLOR) self.yview_moveto(ypos) self.winfo_toplevel().event_generate("<<Modified>>")
def newFolder(self): self.fileList.insert( END, (_("NewFolder"), _DIR_TYPE, 0, time.strftime(_TIME_FORMAT, time.localtime(time.time())))) self.fileList.see(END) self.fileList.selection_clear(0, END) self.fileList.selection_set(END) self.fileList.activate(END) edit = tkExtra.InPlaceEdit(self.fileList.lists[0]) if edit.value: try: os.mkdir(os.path.join(self.path, edit.value)) except OSError: messagebox.showerror(_("Error"), _("Error creating folder \"%s\"") % (edit.value), parent=self) self.fileList.delete(END) return self.fileList.selection_set(END) self.fileList.see(END) self.fileList.setColor(END, COLORS.get(_DIR_TYPE)) self.select() else: try: self.fileList.delete(END) except TclError: pass
def edit(self, event=None): active = self.index(ACTIVE) txt = self.get(active) if event: x = event.x else: x = 0 ypos = self.yview()[0] bid, lid = self._items[active] if lid is None: txt0 = txt txt = self.gcode[bid].name() self.set(active, txt) edit = tkExtra.InPlaceEdit(self, select=False, bg=self.cget("bg")) else: edit = tkExtra.InPlaceEdit(self, x=x, select=False, bg=self.cget("bg")) if edit.value is None or edit.value == txt: if lid is None: self.set(active, txt0) self.itemconfig(active, background=BLOCK_COLOR) if not self.gcode[bid].enable: self.itemconfig(active, foreground=DISABLE_COLOR) return if lid is None: self.gcode.addUndo(self.gcode.setBlockNameUndo(bid, edit.value)) else: self.gcode.addUndo(self.gcode.setLineUndo(bid, lid, edit.value)) if lid is None: self.set(active, self.gcode[bid].header()) self.itemconfig(active, background=BLOCK_COLOR) if not self.gcode[bid].enable: self.itemconfig(active, foreground=DISABLE_COLOR) else: self.set(active, edit.value) if edit.value and edit.value[0] in ("(", "%"): self.itemconfig(active, foreground=COMMENT_COLOR) self.yview_moveto(ypos) self.app.event_generate("<<Modified>>")
def edit(self, event=None): """Edit active item""" active = self.index(Tk.ACTIVE) txt = self.get(active) if event: x_pos = event.x else: x_pos = 0 ypos = self.yview()[0] bid, lid = self._items[active] if lid is None: txt0 = txt txt = self.gcode[bid].name() self.set(active, txt) edit = tkExtra.InPlaceEdit(self, select=False, bg=self.cget("bg")) else: edit = tkExtra.InPlaceEdit(self, x=x_pos, select=False, bg=self.cget("bg")) if edit.value is None or edit.value == txt: if lid is None: self.set(active, txt0) self.itemconfig(active, background=OCV.COLOR_BLOCK) if not self.gcode[bid].enable: self.itemconfig(active, foreground=OCV.COLOR_DISABLE) return if isinstance(lid, int): self.gcode.addUndo(self.gcode.setLineUndo(bid, lid, edit.value)) self.set(active, edit.value) if edit.value and edit.value[0] in ("(", "%"): self.itemconfig(active, foreground=OCV.COLOR_COMMENT) else: self.gcode.addUndo(self.gcode.setBlockNameUndo(bid, edit.value)) self.set(active, self.gcode[bid].header()) self.itemconfig(active, background=OCV.COLOR_BLOCK) if not self.gcode[bid].enable: self.itemconfig(active, foreground=OCV.COLOR_DISABLE) self.yview_moveto(ypos) self.winfo_toplevel().event_generate("<<Modified>>")
def insertLine(self, event=None): active = self.index(ACTIVE) if active is None: return if len(self._items)==0: self.insertBlock() return bid, lid = self._items[active] active += 1 self.insert(active,"") self.selection_clear(0,END) self.activate(active) self.selection_set(active) self.see(active) edit = tkExtra.InPlaceEdit(self, bg=self.cget("bg")) ypos = self.yview()[0] self.delete(active) if edit.value is None: # Cancel and leave active -= 1 self.activate(active) self.selection_set(active) self.see(active) return self.insert(active, edit.value) self.selection_set(active) self.activate(active) if edit.value and edit.value[0] in ("(","%"): self.itemconfig(active, foreground=COMMENT_COLOR) self.yview_moveto(ypos) # Add line into code # Correct pointers if lid is None: lid = 0 else: lid += 1 self.gcode.addUndo(self.gcode.insLineUndo(bid, lid, edit.value)) self._items.insert(active, (bid, lid)) for i in range(active+1,len(self._items)): b,l = self._items[i] if b != bid: break if isinstance(l,int): self._items[i] = (b,l+1) for i in range(bid+1, len(self._blockPos)): if self._blockPos[i] is not None: self._blockPos[i] += 1 # shift all blocks below by one self.winfo_toplevel().event_generate("<<Modified>>")
def insertLine(self, event=None): active = self.index(ACTIVE) if active is None: return if len(self._items)==0: self.insertBlock() return bid, lid = self._items[active] # Add new line if the last Tab is selected if isinstance(lid,Tab): block = self.gcode[bid] tid = block.tabs.index(lid) if tid == len(block.tabs)-1: lid = 0 else: return active += 1 self.insert(active,"") self.selection_clear(0,END) self.activate(active) self.selection_set(active) self.see(active) edit = tkExtra.InPlaceEdit(self, bg=self.cget("bg")) ypos = self.yview()[0] self.delete(active) if edit.value is None: # Cancel and leave active -= 1 self.activate(active) self.selection_set(active) self.see(active) return self.insert(active, edit.value) self.selection_set(active) self.activate(active) if edit.value and edit.value[0] in ("(","%"): self.itemconfig(active, foreground=COMMENT_COLOR) self.yview_moveto(ypos) # Correct pointers self._items.insert(active, (bid, lid+1)) for i in range(bid+1, len(self._blockPos)): if self._blockPos[i] is not None: self._blockPos[i] += 1 # shift all blocks below by one self.gcode.addUndo(self.gcode.insLineUndo(bid, lid+1, edit.value)) self.app.event_generate("<<Modified>>")
def rename(self, event=None): fn = self.fileList.lists[0].get(ACTIVE) edit = tkExtra.InPlaceEdit(self.fileList.lists[0]) if edit.value and edit.value != fn: try: os.rename(os.path.join(self.path, fn), os.path.join(self.path, edit.value)) except OSError: messagebox.showerror(_("Error"), _("Error renaming \"%s\" to \"%s\"") \ %(fn, edit.value), parent=self) self.select()
def insertLine(self, event=None): active = self.index(ACTIVE) if active is None: return bid, lid = self._items[active] active += 1 self.insert(active, "") self.selection_clear(0, END) self.activate(active) self.selection_set(active) self.see(active) edit = tkExtra.InPlaceEdit(self, bg=self.cget("bg")) ypos = self.yview()[0] self.delete(active) if edit.value is None: # Cancel and leave active -= 1 self.activate(active) self.selection_set(active) self.see(active) return self.insert(active, edit.value) self.selection_set(active) self.activate(active) if edit.value and edit.value[0] in ("(", "%"): self.itemconfig(active, foreground="Blue") self.yview_moveto(ypos) # Correct pointers self._items.insert(active, (bid, lid + 1)) for i in range(bid + 1, len(self._blockPos)): self._blockPos[i] += 1 # shift all blocks below by one self.gcode.addUndo(self.gcode.insLineUndo(bid, lid + 1, edit.value)) self.event_generate("<<Modified>>")
def edit(self, event=None, rename=False): lb = self.master.listbox.lists[1] if event is None or event.type=="2": keyboard = True else: keyboard = False if keyboard: # keyboard event active = lb.index(ACTIVE) else: active = lb.nearest(event.y) self.master.listbox.activate(active) ypos = lb.yview()[0] # remember y position save = lb.get(ACTIVE) n, t, d, l = self.variables[active] if t == "int": edit = tkExtra.InPlaceInteger(lb) elif t in ("float", "mm"): edit = tkExtra.InPlaceFloat(lb) elif t == "bool": edit = None value = int(lb.get(active) == Unicode.BALLOT_BOX) if value: lb.set(active, Unicode.BALLOT_BOX_WITH_X) else: lb.set(active, Unicode.BALLOT_BOX) elif t == "list": edit = tkExtra.InPlaceList(lb, values=self.listdb[n]) elif t == "db": if n=="name": # Current database if rename: edit = tkExtra.InPlaceEdit(lb) else: edit = tkExtra.InPlaceList(lb, values=self.names()) else: # Refers to names from another database tool = self.master[n] names = tool.names() names.insert(0,"") edit = tkExtra.InPlaceList(lb, values=names) elif t == "text": edit = InPlaceText(lb) elif "," in t: choices = [""] choices.extend(t.split(",")) edit = tkExtra.InPlaceList(lb, values=choices) elif t == "file": edit = tkExtra.InPlaceFile(lb, save=False) elif t == "output": edit = tkExtra.InPlaceFile(lb, save=True) elif t == "color": edit = tkExtra.InPlaceColor(lb) if edit.value is not None: try: lb.itemconfig(ACTIVE, background=edit.value) except TclError: pass else: edit = tkExtra.InPlaceEdit(lb) if edit is not None: value = edit.value if value is None: return if value == save: if edit.lastkey == "Up": self._editPrev() elif edit.lastkey in ("Return", "KP_Enter", "Down"): self._editNext() return if t == "int": try: value = int(value) except ValueError: value = "" elif t in ("float","mm"): try: value = float(value) if t=="mm" and self.master.inches: value *= 25.4 except ValueError: value = "" if n=="name" and not rename: if self.makeCurrent(value): self.populate() else: self[n] = value if self.update(): self.populate() self.master.listbox.selection_set(active) self.master.listbox.activate(active) self.master.listbox.yview_moveto(ypos) if edit is not None and not rename: if edit.lastkey == "Up": self._editPrev() elif edit.lastkey in ("Return", "KP_Enter", "Down"): self._editNext()