Exemple #1
0
    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>>")
Exemple #2
0
 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
Exemple #3
0
    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>>")
Exemple #4
0
    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>>")
Exemple #5
0
	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>>")
Exemple #6
0
	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>>")
Exemple #7
0
 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()
Exemple #8
0
    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>>")
Exemple #9
0
	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()