def changeColor(self, event=None): items = list(map(int,self.curselection())) if not items: self.winfo_toplevel().event_generate("<<Status>>",data="Nothing is selected") return # Find initial color bid,lid = self._items[items[0]] try: rgb, color = tkExtra.askcolor( title=_("Color"), initialcolor=self.gcode[bid].color, parent=self) except TclError: color = None if color is None: return blocks = [] undoinfo = [] for i in reversed(items): bid,lid = self._items[i] if lid is not None: if bid in blocks: continue blocks.append(bid) oldColor = self.gcode[bid].color undoinfo.append(self.gcode.setBlockColorUndo(bid, oldColor)) if undoinfo: self.gcode.addUndo(undoinfo) for bid in blocks: self.gcode[bid].color = color self.winfo_toplevel().event_generate("<<Modified>>") self.winfo_toplevel().event_generate("<<Status>>",data="Changed color of block")