def __init__(self, parent, operation_stack_cb): EditjeDetails.__init__( self, parent, operation_stack_cb, group="editje/collapsable/part_properties") self.title = "animation" self._transitions = ['None', 'Linear', 'Sinusoidal', 'Accelerate', 'Decelerate'] self._header_table = PropertyTable( parent, "animation name", self.header_prop_value_changed) self.content_set("part_name.swallow", self._header_table) self.focus_custom_chain_set([self._header_table, self._box]) prop = Property(parent, "name") wid = WidgetEntry(self) wid.tooltip_set("Unique animation name.") prop.widget_add("n", wid) self._header_table.property_add(prop) prop = Property(parent, "length") wid = WidgetEntry(self) wid.disabled_set(True) wid.type_float() #wid.parser_in = lambda x: str(x) #wid.parser_out = lambda x: float(x) wid.tooltip_set("Time lenght of animation<br>in seconds.") prop.widget_add("l", wid) self._header_table.property_add(prop) prop = Property(parent, "current") wid = WidgetEntry(self) wid.disabled_set(True) wid.tooltip_set("Time of current keyframe<br>in seconds.") prop.widget_add("c", wid) self["main"].property_add(prop) prop = Property(parent, "previous") wid = WidgetEntry(self) wid.disabled_set(True) wid.tooltip_set("Time of previous keyframe<br>in seconds.") prop.widget_add("p", wid) self["main"].property_add(prop) prop = Property(parent, "next") wid = WidgetEntry(self) wid.disabled_set(True) wid.tooltip_set("Time of next keyframe<br>in seconds.") prop.widget_add("n", wid) self["main"].property_add(prop) prop = Property(parent, "transition") wid = WidgetCombo(parent) for null, i in enumerate(self._transitions): wid.item_add(i) wid.tooltip_set("Transition effect to interpolation<br>" "between the previous keyframe<br>and this.") prop.widget_add("type", wid) wid = WidgetEntry(self) wid.disabled_set(True) wid.type_float() #wid.parser_in = lambda x: str(x) #wid.parser_out = lambda x: float(x) wid.tooltip_set("Transition time between the<br>" "previous keyframe and this,<br>in seconds.") prop.widget_add("length", wid) self["main"].property_add(prop) self._parent.main_edje.signal_callback_add("timestop", "*", self._timeline_cb) self._parent.main_edje.signal_callback_add("timeremove", "*", self._timeremove_cb) self.e.callback_add("animation.removed", self._removed) self.e.animation.callback_add("animation.changed", self._update) self.e.animation.callback_add("animation.unselected", self._removed) self.e.animation.callback_add("state.added", self._timestop_add) self.e.animation.callback_add("frame.changed", self._update_states)
def __init__(self, parent, operation_stack_cb): EditjeDetails.__init__(self, parent, operation_stack_cb, group="editje/collapsable/part_state") self.title = "signal" self._parent = parent self._actions_added = 0 self._header_table = PropertyTable(parent, "signal name", self._header_prop_value_changed) self.content_set("part_state.swallow", self._header_table) self.focus_custom_chain_set([self._header_table, self._box]) prop = Property(parent, "name") wid = WidgetEntry(self) wid.tooltip_set("Unique signal name.") prop.widget_add("n", wid) self._header_table.property_add(prop) popup_hide_cb_list = [(self.e.signal, "program.unselected"), (self.e.signal, "program.changed")] prop = Property(parent, "signal") wid = WidgetSignal(self, popup_hide_object_signal_list=popup_hide_cb_list) wid.tooltip_set( "Signal to be received.", "Click to select one common" "<br>signal to be received.") prop.widget_add("s", wid) self["main"].property_add(prop) def parts_get(): return self.e.parts def animations_get(): return self.e.animations self._prop_source_animations = Property(parent, "source") wid = WidgetSource(self, "Animation list", animations_get, popup_hide_cb_list) wid.tooltip_set( "Accepted signal source.", "Click to select one " "existent<br>animation as source.") self._prop_source_animations.widget_add("s", wid) self["main"].property_add(self._prop_source_animations) self["main"].property_del("source") self._prop_source_parts = Property(parent, "source") wid = WidgetSource(self, "Parts list", parts_get, popup_hide_cb_list) wid.tooltip_set("Accepted signal source.", "Click to select one " "existent<br>part as source.") self._prop_source_parts.widget_add("s", wid) self["main"].property_add(self._prop_source_parts) prop = Property(parent, "delay") wid = WidgetEntry(self) wid.parser_in = lambda x: str(x) wid.parser_out = lambda x: float(x) wid.tooltip_set( "Fixed delay to do the action in seconds. The<br>total " "delay is sum off fixed and variable delays.") prop.widget_add("delay", wid) wid = WidgetEntry(self) wid.parser_in = lambda x: str(x) wid.parser_out = lambda x: float(x) wid.tooltip_set( "Variable delay to do the action in seconds. Will<br>be" " selected one random value between 0 and this.") prop.widget_add("range", wid) self["main"].property_add(prop) self.group_add("api") prop = Property(parent, "export") wid = WidgetBoolean(self) wid.tooltip_set("Add this part to exported signals.") prop.widget_add("export", wid) self["api"].property_add(prop) self._prop_api_name = Property(parent, "name") wid = WidgetEntry(self) wid.tooltip_set("Export name of signal.") self._prop_api_name.widget_add("name", wid) self["api"].property_add(self._prop_api_name) self._prop_api_description = Property(parent, "description") wid = WidgetEntry(self) wid.tooltip_set("Description of exported signal.") self._prop_api_description.widget_add("description", wid) self["api"].property_add(self._prop_api_description) self.group_add("actions") self.group_add("out") prop = Property(parent, "signal") wid = WidgetSignal(self, popup_hide_object_signal_list=popup_hide_cb_list) wid.tooltip_set("Signal to be emmited.", "Click to select one common " "signal to be emmited.") prop.widget_add("s", wid) self["out"].property_add(prop) prop = Property(parent, "source") wid = WidgetSource(self, "Parts list", parts_get, popup_hide_cb_list) wid.tooltip_set("Name registered as signal source.", "Click to select " "one existent<br>part as source.") prop.widget_add("s", wid) self["out"].property_add(prop) self.e.callback_add("signal.added", self._update) self.e.callback_add("signal.removed", self._removed) self.e.callback_add("group.changed", self._removed) self.e.signal.callback_add("program.changed", self._update) self.e.signal.callback_add("program.name.changed", self._update) self.e.signal.callback_add("program.unselected", self._removed) self.open = True self.open_disable = True self.show() self.__notification = None
def __init__(self, parent, operation_stack_cb): EditjeDetails.__init__(self, parent, operation_stack_cb, group="editje/collapsable/part_properties") self.title = "animation" self._transitions = [ 'None', 'Linear', 'Sinusoidal', 'Accelerate', 'Decelerate' ] self._header_table = PropertyTable(parent, "animation name", self.header_prop_value_changed) self.content_set("part_name.swallow", self._header_table) self.focus_custom_chain_set([self._header_table, self._box]) prop = Property(parent, "name") wid = WidgetEntry(self) wid.tooltip_set("Unique animation name.") prop.widget_add("n", wid) self._header_table.property_add(prop) prop = Property(parent, "length") wid = WidgetEntry(self) wid.disabled_set(True) wid.type_float() #wid.parser_in = lambda x: str(x) #wid.parser_out = lambda x: float(x) wid.tooltip_set("Time lenght of animation<br>in seconds.") prop.widget_add("l", wid) self._header_table.property_add(prop) prop = Property(parent, "current") wid = WidgetEntry(self) wid.disabled_set(True) wid.tooltip_set("Time of current keyframe<br>in seconds.") prop.widget_add("c", wid) self["main"].property_add(prop) prop = Property(parent, "previous") wid = WidgetEntry(self) wid.disabled_set(True) wid.tooltip_set("Time of previous keyframe<br>in seconds.") prop.widget_add("p", wid) self["main"].property_add(prop) prop = Property(parent, "next") wid = WidgetEntry(self) wid.disabled_set(True) wid.tooltip_set("Time of next keyframe<br>in seconds.") prop.widget_add("n", wid) self["main"].property_add(prop) prop = Property(parent, "transition") wid = WidgetCombo(parent) for null, i in enumerate(self._transitions): wid.item_add(i) wid.tooltip_set("Transition effect to interpolation<br>" "between the previous keyframe<br>and this.") prop.widget_add("type", wid) wid = WidgetEntry(self) wid.disabled_set(True) wid.type_float() #wid.parser_in = lambda x: str(x) #wid.parser_out = lambda x: float(x) wid.tooltip_set("Transition time between the<br>" "previous keyframe and this,<br>in seconds.") prop.widget_add("length", wid) self["main"].property_add(prop) self._parent.main_edje.signal_callback_add("timestop", "*", self._timeline_cb) self._parent.main_edje.signal_callback_add("timeremove", "*", self._timeremove_cb) self.e.callback_add("animation.removed", self._removed) self.e.animation.callback_add("animation.changed", self._update) self.e.animation.callback_add("animation.unselected", self._removed) self.e.animation.callback_add("state.added", self._timestop_add) self.e.animation.callback_add("frame.changed", self._update_states)
def __init__(self, parent, operation_stack_cb): EditjeDetails.__init__(self, parent, operation_stack_cb) self.title = "group" self.open_disable = True prop = Property(parent, "min") wid = WidgetEntry(self) wid.type_int() wid.tooltip_set("Minimum group<br>width in pixels.") prop.widget_add("w", wid) wid = WidgetEntry(self) wid.type_int() wid.tooltip_set("Minimum group<br>height in pixels.") prop.widget_add("h", wid) self["main"].property_add(prop) self.e.callback_add("group.min.changed", self._min_update) prop = Property(parent, "max") wid = WidgetEntry(self) wid.type_int() wid.tooltip_set("Maximum group<br>width in pixels.<br>0 = disabled") prop.widget_add("w", wid) wid = WidgetEntry(self) wid.type_int() wid.tooltip_set("Maximum group<br>height in pixels.<br>0 = disabled") prop.widget_add("h", wid) self["main"].property_add(prop) self.e.callback_add("group.max.changed", self._max_update) prop = Property(parent, "current") wid = WidgetEntry(self) wid.type_int() wid.tooltip_set("Actual group<br>width in pixels.") prop.widget_add("w", wid) wid = WidgetEntry(self) wid.type_int() wid.tooltip_set("Actual group<br>height in pixels.") prop.widget_add("h", wid) self["main"].property_add(prop) self.e.callback_add("group.size.changed", self._group_update)
def _text_props_create(self): self.group_add("text") # missing: text_class # not implemented in edje_edit: min, max prop = Property(self._parent, "text") wid = WidgetEntry(self) wid.tooltip_set("Set the text of part.") prop.widget_add("t", wid) self["text"].property_add(prop) prop = Property(self._parent, "font") wid = WidgetFont(self._parent, \ self._fnt_new_fnt_cb, self._fnt_list_get_cb, \ self._workfile_name_get_cb) wid.tooltip_set("Change the text's font.") prop.widget_add("f", wid) self["text"].property_add(prop) prop = Property(self._parent, "size") wid = WidgetEntry(self) wid.type_int() #wid.parser_in = lambda x: str(x) #wid.parser_out = lambda x: int(x) wid.tooltip_set("Change text font's size.") prop.widget_add("s", wid) self["text"].property_add(prop) prop = Property(self._parent, "fit") prop.widget_add("x", WidgetBoolean(self)) prop.widget_add("y", WidgetBoolean(self)) self["text"].property_add(prop) prop = Property(self._parent, "align") wid = WidgetEntry(self) wid.type_float() #wid.parser_in = lambda x: str(x) #wid.parser_out = lambda x: float(x) wid.tooltip_set("Text horizontal align.<br>0.0 = left 1.0 = right") prop.widget_add("x", wid) wid = WidgetEntry(self) wid.type_float() #wid.parser_in = lambda x: str(x) #wid.parser_out = lambda x: float(x) wid.tooltip_set("Text vertical align.<br>0.0 = top 1.0 = bottom") prop.widget_add("y", wid) self["text"].property_add(prop) prop = Property(self._parent, "elipsis") wid = WidgetEntry(self) wid.type_float() #wid.parser_in = lambda x: str(x) #wid.parser_out = lambda x: float(x) wid.tooltip_set("Cut text if biggest then part's area.<br>" "0.0 = fix the left side 1.0 = right side") prop.widget_add("e", wid) self["text"].property_add(prop) prop = Property(self._parent, "color2") wid = WidgetColor(self, self.e) wid.tooltip_set( "Text shadow color.<br>" "Enter color in integers or<br>" "in Hexa notation.", "Preview of text shadow color.<br>" "Click to edit it.") prop.widget_add("c", wid) self["text"].property_add(prop) prop = Property(self._parent, "color3") wid = WidgetColor(self, self.e) wid.tooltip_set( "Text outline color.<br>" "Enter color in integers or<br>" "in Hexa notation.", "Preview of text outline color.<br>" "Click to edit it.") prop.widget_add("c", wid) self["text"].property_add(prop)
def _common_props_create(self): prop = Property(self._parent, "min") wid = WidgetEntry(self) wid.type_int() #wid.parser_in = lambda x: str(x) #wid.parser_out = lambda x: int(x) wid.tooltip_set("Minimum part<br>width in pixels.") prop.widget_add("w", wid) wid = WidgetEntry(self) wid.type_int() #wid.parser_in = lambda x: str(x) #wid.parser_out = lambda x: int(x) wid.tooltip_set("Minimum part<br>height in pixels.") prop.widget_add("h", wid) self["main"].property_add(prop) prop = Property(self._parent, "max") wid = WidgetEntry(self) wid.type_int() #wid.parser_in = lambda x: str(x) #wid.parser_out = lambda x: int(x) wid.tooltip_set("Maximum part<br>width in pixels.<br>0 = disabled") prop.widget_add("w", wid) wid = WidgetEntry(self) wid.type_int() #wid.parser_in = lambda x: str(x) #wid.parser_out = lambda x: int(x) wid.tooltip_set("Maximum part<br>height in pixels.<br>0 = disabled") prop.widget_add("h", wid) self["main"].property_add(prop) # 'step' not implemented in edje_edit prop = Property(self._parent, "current") wid = WidgetEntry(self) wid.disabled_set(True) wid.type_int() #wid.parser_in = lambda x: str(x) #wid.parser_out = lambda x: int(x) wid.tooltip_set("Current part<br>height in pixels.") prop.widget_add("w", wid) wid = WidgetEntry(self) wid.disabled_set(True) wid.type_int() #wid.parser_in = lambda x: str(x) #wid.parser_out = lambda x: int(x) wid.tooltip_set("Current part<br>width in pixels.") prop.widget_add("h", wid) self["main"].property_add(prop) prop = Property(self._parent, "visible") wid = WidgetBoolean(self) wid.tooltip_set("Change part's visibility.") prop.widget_add("v", wid) self["main"].property_add(prop) prop = Property(self._parent, "align") wid = WidgetEntry(self) wid.type_float() #wid.parser_in = lambda x: str(x) #wid.parser_out = lambda x: float(x) wid.tooltip_set("Part horizontal align.<br>0.0 = left 1.0 = right") prop.widget_add("x", wid) wid = WidgetEntry(self) wid.type_float() #wid.parser_in = lambda x: str(x) #wid.parser_out = lambda x: float(x) wid.tooltip_set("Part vertical align.<br>0.0 = top 1.0 = bottom") prop.widget_add("y", wid) self["main"].property_add(prop) # 'fixed' not implemented in edje_edit # 'aspect' and 'aspect_preference' missing prop = Property(self._parent, "color") wid = WidgetColor(self, self.e) wid.tooltip_set( "Part main color.<br>" "Enter color in integers or<br>" "in Hexa notation.", "Preview of main color.<br>" "Click to edit it.") prop.widget_add("c", wid) self["main"].property_add(prop)
def __init__(self, parent, operation_stack_cb): EditjeDetails.__init__(self, parent, operation_stack_cb, group="editje/collapsable/part_state") self.title = "signal" self._parent = parent self._actions_added = 0 self._header_table = PropertyTable(parent, "signal name", self._header_prop_value_changed) self.content_set("part_state.swallow", self._header_table) self.focus_custom_chain_set([self._header_table, self._box]) prop = Property(parent, "name") wid = WidgetEntry(self) wid.tooltip_set("Unique signal name.") prop.widget_add("n", wid) self._header_table.property_add(prop) popup_hide_cb_list = [(self.e.signal, "program.unselected"), (self.e.signal, "program.changed")] prop = Property(parent, "signal") wid = WidgetSignal(self, popup_hide_object_signal_list=popup_hide_cb_list) wid.tooltip_set("Signal to be received.", "Click to select one common" "<br>signal to be received.") prop.widget_add("s", wid) self["main"].property_add(prop) def parts_get(): return self.e.parts def animations_get(): return self.e.animations self._prop_source_animations = Property(parent, "source") wid = WidgetSource(self, "Animation list", animations_get, popup_hide_cb_list) wid.tooltip_set("Accepted signal source.", "Click to select one " "existent<br>animation as source.") self._prop_source_animations.widget_add("s", wid) self["main"].property_add(self._prop_source_animations) self["main"].property_del("source") self._prop_source_parts = Property(parent, "source") wid = WidgetSource(self, "Parts list", parts_get, popup_hide_cb_list) wid.tooltip_set("Accepted signal source.", "Click to select one " "existent<br>part as source.") self._prop_source_parts.widget_add("s", wid) self["main"].property_add(self._prop_source_parts) prop = Property(parent, "delay") wid = WidgetEntry(self) wid.parser_in = lambda x: str(x) wid.parser_out = lambda x: float(x) wid.tooltip_set( "Fixed delay to do the action in seconds. The<br>total " "delay is sum off fixed and variable delays." ) prop.widget_add("delay", wid) wid = WidgetEntry(self) wid.parser_in = lambda x: str(x) wid.parser_out = lambda x: float(x) wid.tooltip_set( "Variable delay to do the action in seconds. Will<br>be" " selected one random value between 0 and this." ) prop.widget_add("range", wid) self["main"].property_add(prop) self.group_add("api") prop = Property(parent, "export") wid = WidgetBoolean(self) wid.tooltip_set("Add this part to exported signals.") prop.widget_add("export", wid) self["api"].property_add(prop) self._prop_api_name = Property(parent, "name") wid = WidgetEntry(self) wid.tooltip_set("Export name of signal.") self._prop_api_name.widget_add("name", wid) self["api"].property_add(self._prop_api_name) self._prop_api_description = Property(parent, "description") wid = WidgetEntry(self) wid.tooltip_set("Description of exported signal.") self._prop_api_description.widget_add("description", wid) self["api"].property_add(self._prop_api_description) self.group_add("actions") self.group_add("out") prop = Property(parent, "signal") wid = WidgetSignal(self, popup_hide_object_signal_list=popup_hide_cb_list) wid.tooltip_set("Signal to be emmited.", "Click to select one common " "signal to be emmited.") prop.widget_add("s", wid) self["out"].property_add(prop) prop = Property(parent, "source") wid = WidgetSource(self, "Parts list", parts_get, popup_hide_cb_list) wid.tooltip_set("Name registered as signal source.", "Click to select " "one existent<br>part as source.") prop.widget_add("s", wid) self["out"].property_add(prop) self.e.callback_add("signal.added", self._update) self.e.callback_add("signal.removed", self._removed) self.e.callback_add("group.changed", self._removed) self.e.signal.callback_add("program.changed", self._update) self.e.signal.callback_add("program.name.changed", self._update) self.e.signal.callback_add("program.unselected", self._removed) self.open = True self.open_disable = True self.show() self.__notification = None
def _text_props_create(self): self.group_add("text") # missing: text_class # not implemented in edje_edit: min, max prop = Property(self._parent, "text") wid = WidgetEntry(self) wid.tooltip_set("Set the text of part.") prop.widget_add("t", wid) self["text"].property_add(prop) prop = Property(self._parent, "font") wid = WidgetFont(self._parent, \ self._fnt_new_fnt_cb, self._fnt_list_get_cb, \ self._workfile_name_get_cb) wid.tooltip_set("Change the text's font.") prop.widget_add("f", wid) self["text"].property_add(prop) prop = Property(self._parent, "size") wid = WidgetEntry(self) wid.type_int() #wid.parser_in = lambda x: str(x) #wid.parser_out = lambda x: int(x) wid.tooltip_set("Change text font's size.") prop.widget_add("s", wid) self["text"].property_add(prop) prop = Property(self._parent, "fit") prop.widget_add("x", WidgetBoolean(self)) prop.widget_add("y", WidgetBoolean(self)) self["text"].property_add(prop) prop = Property(self._parent, "align") wid = WidgetEntry(self) wid.type_float() #wid.parser_in = lambda x: str(x) #wid.parser_out = lambda x: float(x) wid.tooltip_set("Text horizontal align.<br>0.0 = left 1.0 = right") prop.widget_add("x", wid) wid = WidgetEntry(self) wid.type_float() #wid.parser_in = lambda x: str(x) #wid.parser_out = lambda x: float(x) wid.tooltip_set("Text vertical align.<br>0.0 = top 1.0 = bottom") prop.widget_add("y", wid) self["text"].property_add(prop) prop = Property(self._parent, "elipsis") wid = WidgetEntry(self) wid.type_float() #wid.parser_in = lambda x: str(x) #wid.parser_out = lambda x: float(x) wid.tooltip_set("Cut text if biggest then part's area.<br>" "0.0 = fix the left side 1.0 = right side") prop.widget_add("e", wid) self["text"].property_add(prop) prop = Property(self._parent, "color2") wid = WidgetColor(self, self.e) wid.tooltip_set("Text shadow color.<br>" "Enter color in integers or<br>" "in Hexa notation.", "Preview of text shadow color.<br>" "Click to edit it.") prop.widget_add("c", wid) self["text"].property_add(prop) prop = Property(self._parent, "color3") wid = WidgetColor(self, self.e) wid.tooltip_set("Text outline color.<br>" "Enter color in integers or<br>" "in Hexa notation.", "Preview of text outline color.<br>" "Click to edit it.") prop.widget_add("c", wid) self["text"].property_add(prop)
def _common_props_create(self): prop = Property(self._parent, "min") wid = WidgetEntry(self) wid.type_int() #wid.parser_in = lambda x: str(x) #wid.parser_out = lambda x: int(x) wid.tooltip_set("Minimum part<br>width in pixels.") prop.widget_add("w", wid) wid = WidgetEntry(self) wid.type_int() #wid.parser_in = lambda x: str(x) #wid.parser_out = lambda x: int(x) wid.tooltip_set("Minimum part<br>height in pixels.") prop.widget_add("h", wid) self["main"].property_add(prop) prop = Property(self._parent, "max") wid = WidgetEntry(self) wid.type_int() #wid.parser_in = lambda x: str(x) #wid.parser_out = lambda x: int(x) wid.tooltip_set("Maximum part<br>width in pixels.<br>0 = disabled") prop.widget_add("w", wid) wid = WidgetEntry(self) wid.type_int() #wid.parser_in = lambda x: str(x) #wid.parser_out = lambda x: int(x) wid.tooltip_set("Maximum part<br>height in pixels.<br>0 = disabled") prop.widget_add("h", wid) self["main"].property_add(prop) # 'step' not implemented in edje_edit prop = Property(self._parent, "current") wid = WidgetEntry(self) wid.disabled_set(True) wid.type_int() #wid.parser_in = lambda x: str(x) #wid.parser_out = lambda x: int(x) wid.tooltip_set("Current part<br>height in pixels.") prop.widget_add("w", wid) wid = WidgetEntry(self) wid.disabled_set(True) wid.type_int() #wid.parser_in = lambda x: str(x) #wid.parser_out = lambda x: int(x) wid.tooltip_set("Current part<br>width in pixels.") prop.widget_add("h", wid) self["main"].property_add(prop) prop = Property(self._parent, "visible") wid = WidgetBoolean(self) wid.tooltip_set("Change part's visibility.") prop.widget_add("v", wid) self["main"].property_add(prop) prop = Property(self._parent, "align") wid = WidgetEntry(self) wid.type_float() #wid.parser_in = lambda x: str(x) #wid.parser_out = lambda x: float(x) wid.tooltip_set("Part horizontal align.<br>0.0 = left 1.0 = right") prop.widget_add("x", wid) wid = WidgetEntry(self) wid.type_float() #wid.parser_in = lambda x: str(x) #wid.parser_out = lambda x: float(x) wid.tooltip_set("Part vertical align.<br>0.0 = top 1.0 = bottom") prop.widget_add("y", wid) self["main"].property_add(prop) # 'fixed' not implemented in edje_edit # 'aspect' and 'aspect_preference' missing prop = Property(self._parent, "color") wid = WidgetColor(self, self.e) wid.tooltip_set("Part main color.<br>" "Enter color in integers or<br>" "in Hexa notation.", "Preview of main color.<br>" "Click to edit it.") prop.widget_add("c", wid) self["main"].property_add(prop)