def create_item(self, component, coords=(), item=None, canvas=None, silently=False, **kwargs): canvas = canvas or self.canvas if item is None: opts = dict(**component.defaults) opts.update(kwargs) item = component(canvas, *coords, **opts) # generate a unique id item.name = self.generator.generate(component, self._ids) canvas._cv_items.append(item) item._prev_index = canvas._cv_items.index(item) node = canvas._cv_tree.add_as_node(item=item) item.bind("<ButtonRelease-1>", lambda e: self._handle_select(item, e), True) item.bind("<ButtonRelease-1>", lambda e: self._handle_end(item, e), True) item.bind("<Motion>", lambda e: self._handle_move(item, e), True) MenuUtils.bind_context(item, self._show_item_menu(item)) MenuUtils.bind_all_context(node, self._show_item_menu(item)) if not silently: self.studio.new_action( Action(lambda _: self.remove_items([item], silently=True), lambda _: self.restore_items([item]))) return item
def setup_widget(self): self.level = 0 self.layout = None self.recent_layout_info = None self._properties = get_properties(self) self.set_name(self.id) self.node = None self.__on_context = None self.last_menu_position = (0, 0) MenuUtils.bind_context(self, self.__handle_context_menu, add='+')