def add_widget_to_parent(self, widget, target, from_undo=False, from_kv=False, kv_str='', extra_args={}): '''This function is used to add the widget to the target. :param from_undo: this action is comming from undo :param target: target will receive the widget :param widget: widget to be added ''' added = False if widget is None: return False with self.sandbox: if target is None: self.root = widget self.sandbox.add_widget(widget) widget.size = self.sandbox.size added = True else: if extra_args and self.from_drag: self.drag_wigdet(widget, target, extra_args=extra_args) else: target.add_widget(widget) added = True if not added: return False self.widgettree.refresh() if not from_kv: if not kv_str and hasattr(widget, '_KD_KV_STR'): kv_str = widget._KD_KV_STR del widget._KD_KV_STR self.kv_code_input.add_widget_to_parent(widget, target, kv_str=kv_str) if not from_undo: root = App.get_running_app().root root.undo_manager.push_operation( WidgetOperation('add', widget, target, self, ''))
def remove_widget_from_parent(self, widget, from_undo=False, from_kv=False): '''This function is used to remove widget its parent. :param from_undo: is comming from an undo action :param widget: widget to be removed ''' parent = None d = get_designer() if not widget: return removed_str = '' if not from_kv: removed_str = self.kv_code_input.remove_widget_from_parent(widget) if widget != self.root: parent = widget.parent if parent is None and hasattr(widget, 'KD__last_parent'): parent = widget.KD__last_parent if isinstance(parent.parent, Carousel): parent.parent.remove_widget(widget) elif isinstance(parent, ScreenManager): if isinstance(widget, Screen): parent.remove_widget(widget) else: parent.real_remove_widget(widget) else: parent.remove_widget(widget) else: self.root.parent.remove_widget(self.root) self.root = None # if is designer if hasattr(d, 'ui_creator'): d.ui_creator.widgettree.refresh() if not from_undo and hasattr(d, 'ui_creator'): d.undo_manager.push_operation( WidgetOperation('remove', widget, parent, self, removed_str))
def add_widget_to_parent(self, widget, target, from_undo=False, from_kv=False, kv_str='', extra_args={}): '''This function is used to add the widget to the target. ''' added = False if target is None: with self.sandbox: self.root = widget self.sandbox.add_widget(widget) widget.size = self.sandbox.size added = True else: with self.sandbox: if extra_args and self.from_drag: self.drag_wigdet(widget, target, extra_args=extra_args) else: target.add_widget(widget) added = True if not added: return False self.widgettree.refresh() if not from_kv: self.kv_code_input.add_widget_to_parent(widget, target, kv_str=kv_str) if not from_undo: root = App.get_running_app().root root.undo_manager.push_operation( WidgetOperation('add', widget, target, self, ''))
def remove_widget_from_parent(self, widget, from_undo=False, from_kv=False): '''This function is used to remove widget its parent. ''' parent = None root = App.get_running_app().root if not widget: return removed_str = '' if not from_kv: removed_str = self.kv_code_input.remove_widget_from_parent( widget, parent) if widget != self.root: parent = widget.parent if isinstance(parent.parent, Carousel): parent.parent.remove_widget(widget) elif isinstance(parent, ScreenManager): if isinstance(widget, Screen): parent.remove_widget(widget) else: parent.real_remove_widget(widget) else: parent.remove_widget(widget) else: self.root.parent.remove_widget(self.root) self.root = None # self.tree.delete(widget) if root is not None: root.ui_creator.widgettree.refresh() if not from_undo and root is not None: root.undo_manager.push_operation( WidgetOperation('remove', widget, parent, self, removed_str))