From: Enlightenment S. <no-...@en...> - 2010-02-01 21:33:13
|
Log: Better handling of requirements before adding/renaming things, by fidencio Author: sachiel Date: 2010-02-01 13:33:06 -0800 (Mon, 01 Feb 2010) New Revision: 45787 Modified: trunk/editje/editje/actions_box.py trunk/editje/editje/editable.py trunk/editje/editje/editable_part.py trunk/editje/editje/editje.py trunk/editje/editje/error_notify.py trunk/editje/editje/groupselector.py trunk/editje/editje/openfile.py Modified: trunk/editje/editje/actions_box.py =================================================================== --- trunk/editje/editje/actions_box.py 2010-02-01 21:09:47 UTC (rev 45786) +++ trunk/editje/editje/actions_box.py 2010-02-01 21:33:06 UTC (rev 45787) @@ -50,7 +50,7 @@ btn.show() self.pack_end(btn) - def action_enable_set(self, label, value): + def action_disabled_set(self, label, value): bt = self._actions.get(label) if bt: - bt.disabled_set(not value) + bt.disabled_set(value) Modified: trunk/editje/editje/editable.py =================================================================== --- trunk/editje/editje/editable.py 2010-02-01 21:09:47 UTC (rev 45786) +++ trunk/editje/editje/editable.py 2010-02-01 21:33:06 UTC (rev 45787) @@ -77,7 +77,6 @@ group = property(_group_get, _group_set) - # FIXME: not working yet! def group_add(self, grp_name): if not self._edje: @@ -89,10 +88,15 @@ def group_rename(self, name): if not self._group: - return + return False + if not name: + return False + if self._edje.group_exist(name): + return False self._edje_group.rename(name) self._group = name + return True # GROUP Min/Max Modified: trunk/editje/editje/editable_part.py =================================================================== --- trunk/editje/editje/editable_part.py 2010-02-01 21:09:47 UTC (rev 45786) +++ trunk/editje/editje/editable_part.py 2010-02-01 21:33:06 UTC (rev 45787) @@ -65,6 +65,8 @@ name = property(_name_get, _name_set) def rename(self, name): + if not name: + return False if self._name != name: old_name = self._part.name self._part.name = name Modified: trunk/editje/editje/editje.py =================================================================== --- trunk/editje/editje/editje.py 2010-02-01 21:09:47 UTC (rev 45786) +++ trunk/editje/editje/editje.py 2010-02-01 21:33:06 UTC (rev 45787) @@ -190,7 +190,8 @@ def _group_name_changed(self, obj, *args, **kwargs): new_name = obj.entry_get().replace("<br>", "") - self.e.group_rename(new_name) + if not self.e.group_rename(new_name): + obj.entry_set(self.e.group) def _toolbar_filename_cb(self, emissor, data): self.main_edje.part_text_set("details_filename", data) Modified: trunk/editje/editje/error_notify.py =================================================================== --- trunk/editje/editje/error_notify.py 2010-02-01 21:09:47 UTC (rev 45786) +++ trunk/editje/editje/error_notify.py 2010-02-01 21:33:06 UTC (rev 45787) @@ -59,6 +59,9 @@ def action_add(self, label, func_cb, icon=None, data=None): self._actions.action_add(label, func_cb, icon, data) + def action_disabled_set(self, label, disabled): + self._actions.action_disabled_set(label, disabled) + def pack_end(self, obj): self._table.pack_before(obj, self._actions) Modified: trunk/editje/editje/groupselector.py =================================================================== --- trunk/editje/editje/groupselector.py 2010-02-01 21:09:47 UTC (rev 45786) +++ trunk/editje/editje/groupselector.py 2010-02-01 21:33:06 UTC (rev 45787) @@ -195,9 +195,6 @@ if new_grp_cb: def group_added(cb_func): name = self._grp_name_entry.entry - if not name: - self.notify("Please name the group to be created.") - return success = cb_func(name) if not success: @@ -210,7 +207,8 @@ self.page_add("new_group", "Create a new group", "Enter a name for a new group in the file.", separator=True) - self._grp_name_entry = NameEntry(self) + self._grp_name_entry = NameEntry(self, + changed_cb=self._name_changed_cb) self.content_add("new_group", self._grp_name_entry) self._grp_name_entry.show() self.action_add("new_group", "Cancel", self.goto, "group_list") @@ -261,3 +259,14 @@ self._groups_list.file = file_ # if group: # self._groups_list.selection = group + + def _name_changed_cb(self, obj): + self._name_chaged = True + self._check_name() + + def _check_name(self): + name = self._grp_name_entry.entry + if name: + self.action_disabled_set("Create", False) + else: + self.action_disabled_set("Create", True) Modified: trunk/editje/editje/openfile.py =================================================================== --- trunk/editje/editje/openfile.py 2010-02-01 21:09:47 UTC (rev 45786) +++ trunk/editje/editje/openfile.py 2010-02-01 21:33:06 UTC (rev 45787) @@ -251,8 +251,9 @@ evas.EVAS_HINT_EXPAND) self._new_entry.size_hint_align_set(evas.EVAS_HINT_FILL, 0.5) sc.content_set(self._new_entry) + self._new_entry.callback_changed_add(self._name_changed_cb) self._new_entry.show() - + self._notification.action_add("Cancel", self._notify_abort) self._notification.action_add("Create", self._new_popup_create) @@ -260,6 +261,7 @@ def _new_popup_create(self, bt, mode=None): name = self._new_entry.entry_get() + if not name.endswith(".edj"): name += ".edj" file = os.path.join(self._fs.path, name) @@ -301,3 +303,14 @@ editje = Editje(self._swapfile) editje.show() self._cancel(None) + + def _name_changed_cb(self, obj): + self._name_chaged = True + self._check_name() + + def _check_name(self): + name = self._new_entry.entry_get() + if name: + self._notification.action_disabled_set("Create", False) + else: + self._notification.action_disabled_set("Create", True) |
From: Enlightenment S. <no-...@en...> - 2010-02-03 14:01:42
|
Log: Hide properties when last part/anim/signal is removed, by fidencio Author: sachiel Date: 2010-02-03 06:01:33 -0800 (Wed, 03 Feb 2010) New Revision: 45830 Modified: trunk/editje/editje/animations.py trunk/editje/editje/details_part.py trunk/editje/editje/details_state.py trunk/editje/editje/prop.py trunk/editje/editje/signals.py Modified: trunk/editje/editje/animations.py =================================================================== --- trunk/editje/editje/animations.py 2010-02-03 11:18:00 UTC (rev 45829) +++ trunk/editje/editje/animations.py 2010-02-03 14:01:33 UTC (rev 45830) @@ -84,11 +84,19 @@ self._parent.main_edje.signal_callback_add("timestop", "*", self._timeline_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._update) self.e.animation.callback_add("state.added", self._timestop_add) self.e.animation.callback_add("state.changed", self._update_states) + def _removed(self, emissor, data): + self._header_table["name"].value = None + self["main"]["current"].hide_value() + self["main"]["previous"].hide_value() + self["main"]["next"].hide_value() + self["main"]["transition"].hide_value() + def _update(self, emissor, data): self._header_table["name"].value = data self._header_table["length"].value = "%.1gs" % self.e.animation.length @@ -117,20 +125,26 @@ def _update_states(self, emissor, data): step = self.e.animation.state + self["main"]["current"].show_value() self["main"]["current"].value = str(step) + prev = self.e.animation.state_prev() + self["main"]["previous"].show_value() if prev is None: prev = 0.0 self["main"]["previous"].value = "None" else: self["main"]["previous"].value = str(prev) + next = self.e.animation.state_next() + self["main"]["next"].show_value() if next is None: self["main"]["next"].value = "None" else: self["main"]["next"].value = str(next) t = self._transitions[self.e.animation.program.transition] + self["main"]["transition"].show_value() self["main"]["transition"].value = (t, str(step - prev)) sig = "ts,%.1g,selected" % self.e.animation.state Modified: trunk/editje/editje/details_part.py =================================================================== --- trunk/editje/editje/details_part.py 2010-02-03 11:18:00 UTC (rev 45829) +++ trunk/editje/editje/details_part.py 2010-02-03 14:01:33 UTC (rev 45830) @@ -33,6 +33,7 @@ self.e.part.callback_add("part.changed", self._part_update) self.e.part.callback_add("name.changed", self._part_update) + self.e.part.callback_add("part.unselected", self._part_removed) self.title_set("part properties") @@ -45,7 +46,7 @@ prop = Property(parent, "name") wid = WidgetEntry(self) - wid.disabled_set(False) + wid.disabled_set(True) prop.widget_add("n", wid) self._header_table.property_add(prop) @@ -112,6 +113,7 @@ def _part_update(self, emissor, data): if not self.e.part._part: return + self._header_table["name"].value = self.e.part.name type = self._part_type_to_text(self.e.part._part.type) self._header_table["type"].value = type @@ -120,21 +122,41 @@ self.group_hide("textblock") if self.e.part._part.type == edje.EDJE_PART_TYPE_TEXT: self._update_text_props() - self.group_show("textblock") + def _part_removed(self, emissor, data): + self._header_table["name"].value = None + self._header_table["type"].value = None + + self.main_hide() + self.group_hide("textblock") + if not self.e.part._part: + return + + self["main"]["clip_to"].hide_value() + self["main"]["mouse_events"].hide_value() + self["main"]["repeat_events"].hide_value() + if self.e.part._part.type == edje.EDJE_PART_TYPE_TEXT: + self["textblock"]["effect"].hide_value() + def _update_common_props(self): self.main_hide() + clipper = self.e.part._part.clip_to + self["main"]["clip_to"].show_value() if clipper: self["main"]["clip_to"].value = clipper else: self["main"]["clip_to"].value = "" + + self["main"]["mouse_events"].show_value() self["main"]["mouse_events"].value = self.e.part._part.mouse_events + + self["main"]["repeat_events"].show_value() self["main"]["repeat_events"].value = self.e.part._part.repeat_events self.main_show() def _update_text_props(self): - self.group_hide("textblock") + self["textblock"]["effect"].show_value() self["textblock"]["effect"].value = self._effects[self.e.part._part.effect] self.group_show("textblock") Modified: trunk/editje/editje/details_state.py =================================================================== --- trunk/editje/editje/details_state.py 2010-02-03 11:18:00 UTC (rev 45829) +++ trunk/editje/editje/details_state.py 2010-02-03 14:01:33 UTC (rev 45830) @@ -102,6 +102,8 @@ self._part_update) self.e.part.callback_add("part.renamed", self._part_update) + self.e.part.callback_add("part.unselected", + self._part_removed) self.e.part.state.callback_add("state.changed", self._state_changed_cb) self.e.part.state.callback_add("rel1x.changed", @@ -223,6 +225,17 @@ self._update() self.open() + def _part_removed(self, emissor, data): + if not self.e.part: + return + + if self._animmode: + self._header_table["name"].value = None + self._header_table["type"].value = None + else: + self._header_table["state"].value = None + self._hide_all() + def _part_type_to_text(self, type): parttypes = ['NONE', 'RECTANGLE', 'TEXT', 'IMAGE', 'SWALLOW', 'TEXTBLOCK', 'GRADIENT', 'GROUP', 'BOX', 'TABLE', Modified: trunk/editje/editje/prop.py =================================================================== --- trunk/editje/editje/prop.py 2010-02-03 11:18:00 UTC (rev 45829) +++ trunk/editje/editje/prop.py 2010-02-03 14:01:33 UTC (rev 45830) @@ -122,14 +122,26 @@ name = property(_name_get) - def show(self): + def show_label(self): self._label_obj.show() + + def show_value(self): self._value_obj.show() - def hide(self): + def show(self): + self.show_label() + self.show_value() + + def hide_label(self): self._label_obj.hide() + + def hide_value(self): self._value_obj.hide() + def hide(self): + self.hide_label() + self.hide_value() + def _label_obj_get(self): return self._label_obj Modified: trunk/editje/editje/signals.py =================================================================== --- trunk/editje/editje/signals.py 2010-02-03 11:18:00 UTC (rev 45829) +++ trunk/editje/editje/signals.py 2010-02-03 14:01:33 UTC (rev 45830) @@ -265,12 +265,23 @@ prop.widget_add("s", WidgetSource(self)) self["out"].property_add(prop) + self.e.callback_add("signal.removed", self._removed) self.e.signal.callback_add("program.changed",self._update) + def _removed(self, emissor, data): + self._header_table["name"].value = None + self["main"]["signal"].hide_value() + self["main"]["source"].hide_value() + self["main"]["delay"].hide_value() + self["main"]["action"].hide_value() + self["out"]["signal"].hide_value() + self["out"]["source"].hide_value() + def _update(self, emissor, data): self._header_table["name"].value = data signal = self.e.signal.signal + self["main"]["signal"].show_value() if signal: self["main"]["signal"].value = signal else: @@ -278,16 +289,18 @@ self["main"]["signal"].value = "" source = self.e.signal.source + self["main"]["source"].show_value() if source: self["main"]["source"].value = source else: self.e.signal.source = "" self["main"]["source"].value = "" + self["main"]["delay"].show_value() self["main"]["delay"].value = self.e.signal.in_time action = self.e.signal._program.action_get() - + self["main"]["action"].show_value() if action == edje.EDJE_ACTION_TYPE_NONE: self["main"]["action"].show() self.group_hide("out") @@ -304,12 +317,14 @@ self.group_show("out") state = self.e.signal._program.state_get() + self["out"]["signal"].show_value() if state: self["out"]["signal"].value = state else: self["out"]["signal"].value = "" state = self.e.signal._program.state2_get() + self["out"]["source"].show_value() if state: self["out"]["source"].value = state else: |
From: Enlightenment S. <no-...@en...> - 2010-02-03 16:46:02
|
Log: Better default names for parts Author: sachiel Date: 2010-02-03 08:45:55 -0800 (Wed, 03 Feb 2010) New Revision: 45840 Modified: trunk/editje/editje/newpart.py trunk/editje/editje/widgets_list.py Modified: trunk/editje/editje/newpart.py =================================================================== --- trunk/editje/editje/newpart.py 2010-02-03 16:13:19 UTC (rev 45839) +++ trunk/editje/editje/newpart.py 2010-02-03 16:45:55 UTC (rev 45840) @@ -222,11 +222,13 @@ def _default_name_set(self, name): if self._name_changed: return - count = 0 + max = 0 for p in self._parent.e.parts: if p.startswith(name): - count += 1 - self._part_name_entry.entry = name + "%.2d" % count + num = int(p[len(name):]) + if num > max: + max = num + self._part_name_entry.entry = name + "%.2d" % (max + 1) edje.message_signal_process() self._name_changed = False Modified: trunk/editje/editje/widgets_list.py =================================================================== --- trunk/editje/editje/widgets_list.py 2010-02-03 16:13:19 UTC (rev 45839) +++ trunk/editje/editje/widgets_list.py 2010-02-03 16:45:55 UTC (rev 45840) @@ -126,11 +126,13 @@ type_name = "" - count = 0 + max = 0 for p in self._parent.e.parts: if p.startswith(label): - count += 1 - name = label + "%.2d" % count + num = int(p[len(label):]) + if num > max: + max = num + name = label + "%.2d" % (max + 1) if (edje_type == edje.EDJE_PART_TYPE_EXTERNAL): type_name = type.name |
From: Enlightenment S. <no-...@en...> - 2010-02-03 16:50:47
|
Log: Trigger update on new signal. Fixes problems when adding a signal with the same name as one just deleted. By fidencio Author: sachiel Date: 2010-02-03 08:50:41 -0800 (Wed, 03 Feb 2010) New Revision: 45841 Modified: trunk/editje/editje/signals.py Modified: trunk/editje/editje/signals.py =================================================================== --- trunk/editje/editje/signals.py 2010-02-03 16:45:55 UTC (rev 45840) +++ trunk/editje/editje/signals.py 2010-02-03 16:50:41 UTC (rev 45841) @@ -265,6 +265,7 @@ prop.widget_add("s", WidgetSource(self)) self["out"].property_add(prop) + self.e.callback_add("signal.added", self._update) self.e.callback_add("signal.removed", self._removed) self.e.signal.callback_add("program.changed",self._update) |
From: Enlightenment S. <no-...@en...> - 2010-02-03 18:35:45
|
Log: Even better default names, not being so lazy to match. Author: sachiel Date: 2010-02-03 10:35:37 -0800 (Wed, 03 Feb 2010) New Revision: 45842 Modified: trunk/editje/editje/newpart.py trunk/editje/editje/widgets_list.py Modified: trunk/editje/editje/newpart.py =================================================================== --- trunk/editje/editje/newpart.py 2010-02-03 16:50:41 UTC (rev 45841) +++ trunk/editje/editje/newpart.py 2010-02-03 18:35:37 UTC (rev 45842) @@ -15,6 +15,7 @@ # You should have received a copy of the GNU Lesser General Public # License along with Editje. If not, see # <http://www.gnu.org/licenses/>. +import re import evas import edje @@ -224,7 +225,7 @@ return max = 0 for p in self._parent.e.parts: - if p.startswith(name): + if re.match("%s\d{2,}" % name, p): num = int(p[len(name):]) if num > max: max = num Modified: trunk/editje/editje/widgets_list.py =================================================================== --- trunk/editje/editje/widgets_list.py 2010-02-03 16:50:41 UTC (rev 45841) +++ trunk/editje/editje/widgets_list.py 2010-02-03 18:35:37 UTC (rev 45842) @@ -16,6 +16,8 @@ # You should have received a copy of the GNU Lesser General Public # License along with Editje. If not, see # <http://www.gnu.org/licenses/>. +import re + import evas import edje import elementary @@ -128,7 +130,7 @@ max = 0 for p in self._parent.e.parts: - if p.startswith(label): + if re.match("%s\d{2,}" % label, p): num = int(p[len(label):]) if num > max: max = num |
From: Enlightenment S. <no-...@en...> - 2010-02-04 15:24:20
|
Log: Work around a segv when closing the run window. Author: sachiel Date: 2010-02-04 07:24:14 -0800 (Thu, 04 Feb 2010) New Revision: 45874 Modified: trunk/editje/editje/editje.py Modified: trunk/editje/editje/editje.py =================================================================== --- trunk/editje/editje/editje.py 2010-02-04 14:52:30 UTC (rev 45873) +++ trunk/editje/editje/editje.py 2010-02-04 15:24:14 UTC (rev 45874) @@ -223,10 +223,11 @@ def _run_cb(self, obj, emission, source): def _test_window_closed(obj): self.e.group_size = w.size - obj.delete() + #obj.delete() self.block(False) w = elementary.Window("edje-test", elementary.ELM_WIN_BASIC) w.callback_destroy_add(_test_window_closed) + w.autodel_set(True) w.resize(*self.e.group_size) w.title_set("Edje Test") b = elementary.Background(w) |
From: Enlightenment S. <no-...@en...> - 2010-02-04 15:26:05
|
Log: Handle exception on invalid input for color widget Author: sachiel Date: 2010-02-04 07:25:58 -0800 (Thu, 04 Feb 2010) New Revision: 45876 Modified: trunk/editje/editje/details_widget_color.py Modified: trunk/editje/editje/details_widget_color.py =================================================================== --- trunk/editje/editje/details_widget_color.py 2010-02-04 15:25:10 UTC (rev 45875) +++ trunk/editje/editje/details_widget_color.py 2010-02-04 15:25:58 UTC (rev 45876) @@ -119,10 +119,13 @@ a = 255 except Exception, e: return - r = int(r) - g = int(g) - b = int(b) - a = int(a) + try: + r = int(r) + g = int(g) + b = int(b) + a = int(a) + except Exception, e: + return self.color = (r, g, b, a) self.rect.color_class_set("colorpicker.sample", r, g, b, a, 0, 0, 0, 0, 0, 0, 0, 0) |
From: Enlightenment S. <no-...@en...> - 2010-02-04 15:32:08
|
Log: Remove dead code Author: sachiel Date: 2010-02-04 07:25:10 -0800 (Thu, 04 Feb 2010) New Revision: 45875 Modified: trunk/editje/editje/details.py Modified: trunk/editje/editje/details.py =================================================================== --- trunk/editje/editje/details.py 2010-02-04 15:24:14 UTC (rev 45874) +++ trunk/editje/editje/details.py 2010-02-04 15:25:10 UTC (rev 45875) @@ -126,50 +126,3 @@ elif key in self._subgroups: return self._subgroups[key]["table"] raise KeyError(key) - - def _aux_geometry_parse_in(self, param): - return ("%dx%d" % param, ) - - def _aux_geometry_parse_out(self, param): - try: - w, h = param.replace(" ", "x").split("x") - if w == '': - w = 0 - else: - w = int(w) - if h == '': - h = 0 - else: - h = int(h) - except Exception, e: - return None - return (w, h) - - def _aux_parse_int_out(self, param): - try: - return int(param) - except Exception, e: - return None - - def _aux_parse_float_out(self, param): - try: - return float(param) - except Exception, e: - return None - - def _aux_splitted_parse_in(self, param): - return map(str, param) - - def _aux_splitted_parse_int_out(self, *param): - try: - ret = map(int, param) - except Exception, e: - return None - return ret - - def _aux_splitted_parse_float_out(self, *param): - try: - ret = map(float, param) - except Exception, e: - return None - return ret |
From: Enlightenment S. <no-...@en...> - 2010-02-09 19:47:50
|
Log: remove unused file Author: sachiel Date: 2010-02-09 11:47:43 -0800 (Tue, 09 Feb 2010) New Revision: 46017 Removed: trunk/editje/editje/collapselist.py Modified: trunk/editje/editje/Makefile.am Modified: trunk/editje/editje/Makefile.am =================================================================== --- trunk/editje/editje/Makefile.am 2010-02-09 19:11:33 UTC (rev 46016) +++ trunk/editje/editje/Makefile.am 2010-02-09 19:47:43 UTC (rev 46017) @@ -7,7 +7,6 @@ animations.py \ clist.py \ collapsable.py \ -collapselist.py \ colorpicker.py \ controller.py \ desktop_handler.py \ |
From: Enlightenment S. <no-...@en...> - 2010-02-23 19:39:11
|
Log: Use a single scroller on the right sidebar Author: sachiel Date: 2010-02-23 11:39:02 -0800 (Tue, 23 Feb 2010) New Revision: 46400 Modified: trunk/editje/editje/details.py trunk/editje/editje/editje.py Modified: trunk/editje/editje/details.py =================================================================== --- trunk/editje/editje/details.py 2010-02-23 18:43:06 UTC (rev 46399) +++ trunk/editje/editje/details.py 2010-02-23 19:39:02 UTC (rev 46400) @@ -16,14 +16,15 @@ # License along with Editje. If not, see # <http://www.gnu.org/licenses/>. +import edje import elementary from prop import PropertyTable -class EditjeDetails(elementary.Layout): +class EditjeDetails(edje.Edje): def __init__(self, parent, group="editje/collapsable/default"): - elementary.Layout.__init__(self, parent) + edje.Edje.__init__(self, parent.evas_get()) self.file_set(parent.theme, group) self._parent = parent @@ -32,24 +33,38 @@ self._proptable._value_changed = self.prop_value_changed self.e = parent.e + self._min_size_collapsed = self.size_min_calc() + self._min_size = self._min_size_collapsed + + self._opened = False + self._box = elementary.Box(parent) self._box.pack_end(self._proptable) self._box.size_hint_weight_set(1.0, 0.0) self._box.size_hint_align_set(-1.0, 0.0) self._box.show() - scr = elementary.Scroller(parent) - scr.style_set("editje.collapsable") - scr.bounce_set(0, 0) - scr.content_set(self._box) - scr.show() - self.content_set("cl.content", scr) + self.content_set("cl.content", self._box) self.size_hint_weight_set(1.0, 0.0) self.size_hint_align_set(-1.0, -1.0) + self.size_hint_min_set(*self._min_size_collapsed) self.edje_get().signal_callback_add("cl,*", "editje/collapsable", self._header_toggle_cb) self._subgroups = dict() + def _size_hint_changed_cb(self, obj): + self._min_size = self.size_min_calc() + if self._opened: + self.size_hint_min_set(*self._min_size) + + def content_set(self, part, obj): + obj.on_changed_size_hints_add(self._size_hint_changed_cb) + self.part_swallow(part, obj) + self._min_size = self.size_min_calc() + + def edje_get(self): + return self + def open(self): self.edje_get().signal_emit("mouse,clicked,1", "cl.header.open") @@ -117,8 +132,13 @@ def _header_toggle_cb(self, obj, emission, source): if emission == "cl,opened": self.size_hint_weight_set(1.0, 1.0) + self.size_hint_min_set(*self._min_size) + self._opened = True elif emission == "cl,closed": self.size_hint_weight_set(1.0, 0.0) + self.size_hint_min_set(*self._min_size_collapsed) + self._opened = False + self.calc_force() def __getitem__(self, key): if key == "main": Modified: trunk/editje/editje/editje.py =================================================================== --- trunk/editje/editje/editje.py 2010-02-23 18:43:06 UTC (rev 46399) +++ trunk/editje/editje/editje.py 2010-02-23 19:39:02 UTC (rev 46400) @@ -426,6 +426,14 @@ ico.show() self._modes_selector.icon = ico + def _set_scrolled_contents(self, box): + scr = elementary.Scroller(self) + scr.style_set("editje.collapsable") + scr.bounce_set(False, False) + scr.content_set(box) + scr.show() + return scr + # Parts def _parts_init(self): @@ -475,8 +483,6 @@ self.group_details = GroupDetails(self) self.group_details.open() - self.group_details.size_hint_weight_set(0, 0) - self.group_details.size_hint_align_set(-1, -1) box.pack_end(self.group_details) self.group_details.show() @@ -495,7 +501,7 @@ box.pack_end(self.part_state_details) self.part_state_details.show() - return box + return self._set_scrolled_contents(box) # Animations @@ -567,7 +573,7 @@ box.pack_end(self.anim_state_details) self.anim_state_details.show() - return box + return self._set_scrolled_contents(box) # Signals @@ -598,9 +604,21 @@ list.show() # Sidebar - sidebar = SignalDetails(self) - sidebar.open() - sidebar.show() + sidebar = self._signals_sidebar_create() self._mode_add("Signals", "editje/icon/signal", toolbar, mainbar, sidebar) + + def _signals_sidebar_create(self): + box = CollapsablesBox(self) + box.size_hint_weight_set(1.0, 0.0) + box.size_hint_align_set(-1.0, 0.0) + box.show() + + signal_details = SignalDetails(self) + signal_details.open() + signal_details.show() + + box.pack_end(signal_details) + + return self._set_scrolled_contents(box) |
From: Enlightenment S. <no-...@en...> - 2010-03-11 20:31:32
|
Log: use simpler strings to avoid artifacts in the about dialog Author: sachiel Date: 2010-03-11 12:31:24 -0800 (Thu, 11 Mar 2010) New Revision: 47141 Modified: trunk/editje/editje/about.py Modified: trunk/editje/editje/about.py =================================================================== --- trunk/editje/editje/about.py 2010-03-11 20:19:51 UTC (rev 47140) +++ trunk/editje/editje/about.py 2010-03-11 20:31:24 UTC (rev 47141) @@ -70,19 +70,19 @@ copyright = elementary.Label(self) copyright.label_set( -"""Editje is free software: you can redistribute it and/or modify it <br> -under the terms of the GNU Lesser General Public License as <br> -published by the Free Software Foundation, either version 3 of the<br> -License, or (at your option) any later version. <br> - <br> -Editje is distributed in the hope that it will be useful, <br> -but WITHOUT ANY WARRANTY; without even the implied warranty of <br> -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the <br> -GNU Lesser General Public License for more details. <br> - <br> -You should have received a copy of the GNU Lesser General Public <br> -License along with Editje. If not, see <br> -http://www.gnu.org/licenses/ <br>""") +"Editje is free software: you can redistribute it and/or modify it <br>" +"under the terms of the GNU Lesser General Public License as <br>" +"published by the Free Software Foundation, either version 3 of the<br>" +"License, or (at your option) any later version. <br>" +" <br>" +"Editje is distributed in the hope that it will be useful, <br>" +"but WITHOUT ANY WARRANTY; without even the implied warranty of <br>" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the <br>" +"GNU Lesser General Public License for more details. <br>" +" <br>" +"You should have received a copy of the GNU Lesser General Public <br>" +"License along with Editje. If not, see <br>" +"http://www.gnu.org/licenses/ <br>") copyright.show() sc.content_set(copyright) |
From: Enlightenment S. <no-...@en...> - 2010-03-23 08:19:26
|
Log: Also remove the part name from the directory when it gets deleted, so when a new part with the same name is added, it gets its viewport created. Author: sachiel Date: 2010-03-23 01:19:18 -0700 (Tue, 23 Mar 2010) New Revision: 47385 Modified: trunk/editje/editje/desktop_parts_manager.py Modified: trunk/editje/editje/desktop_parts_manager.py =================================================================== --- trunk/editje/editje/desktop_parts_manager.py 2010-03-23 06:41:17 UTC (rev 47384) +++ trunk/editje/editje/desktop_parts_manager.py 2010-03-23 08:19:18 UTC (rev 47385) @@ -137,7 +137,7 @@ part_obj = self._edje.part_object_get(part) self.parts[part] = part_obj viewport = PartViewport(self._canvas, self, part_obj) - viewport.on_del_add(self._part_delete) + viewport.on_del_add(self._part_delete, part) self.viewports[part_obj] = viewport self.parts_name[viewport] = part self.member_add(viewport) @@ -147,13 +147,14 @@ part_obj = self._edje.part_object_get(part) self.parts[part] = part_obj viewport = PartViewport(self._canvas, self, part_obj) - viewport.on_del_add(self._part_delete) + viewport.on_del_add(self._part_delete, part) viewport.stack_update() self.viewports[part_obj] = viewport self.parts_name[viewport] = part self.member_add(viewport) - def _part_delete(self, viewport): + def _part_delete(self, viewport, part_name): + del self.parts[part_name] del self.parts_name[viewport] del self.viewports[viewport._part] |
From: Enlightenment S. <no-...@en...> - 2010-03-24 09:20:57
|
Log: Fix part selection after it is renamed Author: sachiel Date: 2010-03-24 02:20:49 -0700 (Wed, 24 Mar 2010) New Revision: 47415 Modified: trunk/editje/editje/desktop.py trunk/editje/editje/desktop_parts_manager.py Modified: trunk/editje/editje/desktop.py =================================================================== --- trunk/editje/editje/desktop.py 2010-03-24 08:54:59 UTC (rev 47414) +++ trunk/editje/editje/desktop.py 2010-03-24 09:20:49 UTC (rev 47415) @@ -40,6 +40,7 @@ self.e.callback_add("part.added", self._part_added) self.e.part.callback_add("part.changed", self._part_load) self.e.part.callback_add("part.unselected", self._part_load) + self.e.part.callback_add("name.changed", self._part_rename) self.e.part.state.callback_add("state.rel1.changed", self._rel1_load) self.e.part.state.callback_add("state.rel2.changed", self._rel2_load) @@ -71,6 +72,9 @@ def _part_added(self, emissor, data): self._view.manager.parts_manager.part_load(data) + def _part_rename(self, emissor, data): + self._view.manager.parts_manager.part_rename(*data) + def _rel1_load(self, emissor, data): self._view.part_rel1_set(data) Modified: trunk/editje/editje/desktop_parts_manager.py =================================================================== --- trunk/editje/editje/desktop_parts_manager.py 2010-03-24 08:54:59 UTC (rev 47414) +++ trunk/editje/editje/desktop_parts_manager.py 2010-03-24 09:20:49 UTC (rev 47415) @@ -137,7 +137,7 @@ part_obj = self._edje.part_object_get(part) self.parts[part] = part_obj viewport = PartViewport(self._canvas, self, part_obj) - viewport.on_del_add(self._part_delete, part) + viewport.on_del_add(self._part_delete) self.viewports[part_obj] = viewport self.parts_name[viewport] = part self.member_add(viewport) @@ -147,14 +147,22 @@ part_obj = self._edje.part_object_get(part) self.parts[part] = part_obj viewport = PartViewport(self._canvas, self, part_obj) - viewport.on_del_add(self._part_delete, part) + viewport.on_del_add(self._part_delete) viewport.stack_update() self.viewports[part_obj] = viewport self.parts_name[viewport] = part self.member_add(viewport) - def _part_delete(self, viewport, part_name): - del self.parts[part_name] + def part_rename(self, old_name, new_name): + p = self.parts.get(old_name) + if not p: + return + self.parts[new_name] = p + self.parts_name[self.viewports[p]] = new_name + del self.parts[old_name] + + def _part_delete(self, viewport): + del self.parts[self.parts_name[viewport]] del self.parts_name[viewport] del self.viewports[viewport._part] |
From: Enlightenment S. <no-...@en...> - 2010-03-25 00:59:21
|
Log: Don't duplicate default state when copying Author: sachiel Date: 2010-03-24 17:59:14 -0700 (Wed, 24 Mar 2010) New Revision: 47440 Modified: trunk/editje/editje/objects_data.py Modified: trunk/editje/editje/objects_data.py =================================================================== --- trunk/editje/editje/objects_data.py 2010-03-25 00:23:55 UTC (rev 47439) +++ trunk/editje/editje/objects_data.py 2010-03-25 00:59:14 UTC (rev 47440) @@ -94,7 +94,8 @@ for state in self["states"].values(): name = state.name half_name = name.split(None, 1)[0] - obj.state_add(half_name) + if half_name != "default": + obj.state_add(half_name) state.apply_to(obj.state_get(name)) return True |
From: Enlightenment S. <no-...@en...> - 2010-03-26 06:48:02
|
Log: Select everything when entry gets focused, makes editing easier Author: sachiel Date: 2010-03-25 23:47:55 -0700 (Thu, 25 Mar 2010) New Revision: 47483 Modified: trunk/editje/editje/details_widget_color.py trunk/editje/editje/details_widget_entry.py Modified: trunk/editje/editje/details_widget_color.py =================================================================== --- trunk/editje/editje/details_widget_color.py 2010-03-26 06:46:54 UTC (rev 47482) +++ trunk/editje/editje/details_widget_color.py 2010-03-26 06:47:55 UTC (rev 47483) @@ -41,6 +41,8 @@ self.entry.callback_activated_add(self._entry_activate_cb) self.entry.callback_changed_add(self._entry_changed_cb) self.entry.callback_double_clicked_add(self._dblclick_cb) + self.entry.callback_focused_add(self._focused_cb) + self.entry.callback_unfocused_add(self._unfocused_cb) self.entry.show() self.scr = elementary.Scroller(parent) @@ -139,6 +141,12 @@ def _dblclick_cb(self, obj): self.entry.select_all() + def _focused_cb(self, obj): + self.entry.select_all() + + def _unfocused_cb(self, obj): + self.entry.select_none() + def _sample_clicked_cb(self, obj, event): self.picker.current_color_set(*self.color) self.pop.show() Modified: trunk/editje/editje/details_widget_entry.py =================================================================== --- trunk/editje/editje/details_widget_entry.py 2010-03-26 06:46:54 UTC (rev 47482) +++ trunk/editje/editje/details_widget_entry.py 2010-03-26 06:47:55 UTC (rev 47483) @@ -33,6 +33,8 @@ self.entry.callback_activated_add(self._entry_activate_cb) self.entry.callback_changed_add(self._entry_changed_cb) self.entry.callback_double_clicked_add(self._dblclick_cb) + self.entry.callback_focused_add(self._focused_cb) + self.entry.callback_unfocused_add(self._unfocused_cb) self.entry.show() self.obj = elementary.Scroller(parent) @@ -71,6 +73,12 @@ # set entry in invalid mode pass + def _focused_cb(self, obj): + self.entry.select_all() + + def _unfocused_cb(self, obj): + self.entry.select_none() + def _dblclick_cb(self, obj): self.entry.select_all() |
From: Enlightenment S. <no-...@en...> - 2010-03-26 09:34:55
|
Log: Hack around a weird focus issue. Now we can create groups right from the start Author: sachiel Date: 2010-03-26 02:34:47 -0700 (Fri, 26 Mar 2010) New Revision: 47487 Modified: trunk/editje/editje/groupselector.py Modified: trunk/editje/editje/groupselector.py =================================================================== --- trunk/editje/editje/groupselector.py 2010-03-26 08:08:52 UTC (rev 47486) +++ trunk/editje/editje/groupselector.py 2010-03-26 09:34:47 UTC (rev 47487) @@ -157,11 +157,14 @@ scroller.content_set(self._name) self._name.show() - self._name.focus() + #self._name.focus() self.pack_end(self._entry_bx) self.pack_end(self._status_lb) + def focus(self): + self._name.focus() + def _entry_set(self, value): self._name.entry_set(value) @@ -304,6 +307,7 @@ def _goto_new_group(self): self.goto("new_group", alt_bg_style=True) + self._grp_name_entry.focus() def _goto_preview(self): self._preview.group_set(self._groups_list.file, |
From: Enlightenment S. <no-...@en...> - 2010-03-30 08:33:10
|
Log: Animations now work on the chosen parts. Non selected parts are left untouched. This allows cretion of animations that can run simultaneously. Author: sachiel Date: 2010-03-30 01:33:01 -0700 (Tue, 30 Mar 2010) New Revision: 47583 Modified: trunk/editje/editje/animations.py trunk/editje/editje/clist.py trunk/editje/editje/details_state.py trunk/editje/editje/editable.py trunk/editje/editje/editable_animation.py trunk/editje/editje/editable_program.py trunk/editje/editje/editje.py Modified: trunk/editje/editje/animations.py =================================================================== --- trunk/editje/editje/animations.py 2010-03-30 05:42:56 UTC (rev 47582) +++ trunk/editje/editje/animations.py 2010-03-30 08:33:01 UTC (rev 47583) @@ -17,6 +17,7 @@ import edje import evas +import elementary from details import EditjeDetails from details_widget_entry import WidgetEntry @@ -24,17 +25,20 @@ from prop import Property, PropertyTable from floater import Wizard from clist import CList +from parts import PartsList from groupselector import NameEntry from operation import Operation +from error_notify import ErrorNotify class AnimationsList(CList): - def __init__(self, parent, new_anim_cb, anims_list_cb): + def __init__(self, parent, new_anim_cb, anims_list_cb, parts_list_cb): CList.__init__(self, parent) self.e = parent.e self._new_anim_cb = new_anim_cb self._anims_list_cb = anims_list_cb + self._parts_list_cb = parts_list_cb self._options_load() self.options = True @@ -97,7 +101,8 @@ def _new_cb(self, obj, emission, source): anim_wiz = NewAnimationWizard( self._parent, new_anim_cb=self._new_anim_cb, - anims_list_cb=self._anims_list_cb) + anims_list_cb=self._anims_list_cb, + parts_list_cb=self._parts_list_cb) anim_wiz.open() def _remove_cb(self, obj, emission, source): @@ -105,8 +110,82 @@ self.e.animation_del(i[0]) +class AnimationsPartsList(PartsList): + def __init__(self, parent, editable_grp, operation_stack_cb): + PartsList.__init__(self, parent, editable_grp, operation_stack_cb) + + self._remove_confirmation = None + + self._edit_grp.animation.callback_add("animation.changed", + self._animation_changed_cb) + self._edit_grp.animation.callback_add("animation.unselected", + self._animation_changed_cb) + + def _animation_changed_cb(self, emissor, data): + # Nasty hack + self._parts_update_cb(None, self._edit_grp.parts) + + def _parts_update_cb(self, emissor, data): + if not self._edit_grp.animation.name: + PartsList._parts_update_cb(self, emissor, data) + return + + parts = data + self.clear() + for p in parts[::-1]: + chk = elementary.Check(self._parent) + chk.state_set(self._edit_grp.animation.parts.get(p)) + chk.callback_changed_add(self._check_changed_cb, p) + chk.show() + self.add_full(p, end=chk) + self.go() + + def _part_added_cb(self, emissor, data): + if not self._edit_grp.animation.name: + PartsList._part_added_cb(self, emissor, data) + return + + chk = elementary.Check(self._parent) + chk.state_set(False) + chk.callback_changed_add(self._check_changed_cb, data) + chk.show() + self.add_full(data, end=chk) + self.go() + + def _check_changed_cb(self, obj, part): + if obj.state: + self._edit_grp.animation.part_add(part) + else: + # FIXME: Take the confirmation out of this function + self._notification = ErrorNotify(self, + elementary.ELM_NOTIFY_ORIENT_CENTER) + self._notification.title = "Part Removal" + lb = elementary.Label(self._notification) + lb.label_set("Are you sure you want to remove<br>" + "this part from the animation?") + lb.show() + self._notification.pack_end(lb) + self._notification.action_add("Remove", + self._confirm_remove_cb, data=part) + self._notification.action_add("Cancel", + self._cancel_remove_cb, data=obj) + self._notification.show() + + def _confirm_remove_cb(self, btn, part): + self._edit_grp.animation.part_remove(part) + self._notification_delete() + + def _cancel_remove_cb(self, btn, chk): + self._notification_delete() + chk.state = True + + def _notification_delete(self): + self._notification.delete() + self._notification = None + + class NewAnimationWizard(Wizard): - def __init__(self, parent, new_anim_cb=None, anims_list_cb=None): + def __init__(self, parent, new_anim_cb=None, anims_list_cb=None, parts_list_cb=None): if not new_anim_cb or not anims_list_cb: raise TypeError("You must set callbacks for animations retrieval" " and creation on NewAnimationWizard objects.") @@ -124,6 +203,24 @@ self.content_add("default", self._anim_name_entry) self._anim_name_entry.show() + lbl = elementary.Label(self) + lbl.label_set("Select the parts to use in the animation. An empty selection will use all parts.") + self.content_add("default", lbl) + lbl.show() + + self._parts_list = elementary.List(self) + self._parts_list.size_hint_weight_set(evas.EVAS_HINT_EXPAND, + evas.EVAS_HINT_EXPAND) + self._parts_list.size_hint_align_set(evas.EVAS_HINT_FILL, + evas.EVAS_HINT_FILL) + if parts_list_cb: + for p in parts_list_cb(): + self._parts_list.item_append(p) + self._parts_list.multi_select = True + self._parts_list.go() + self.content_add("default", self._parts_list) + self._parts_list.show() + self.alternate_background_set(True) self.action_add("default", "Cancel", self._cancel) @@ -161,7 +258,14 @@ def _add(self): name = self._anim_name_entry.entry - success = self._new_anim_cb(name) + its = self._parts_list.selected_items_get() + if not its: + parts = None + else: + parts = [] + for it in its: + parts.append(it.label_get()) + success = self._new_anim_cb(name, parts) if success: self.close() else: Modified: trunk/editje/editje/clist.py =================================================================== --- trunk/editje/editje/clist.py 2010-03-30 05:42:56 UTC (rev 47582) +++ trunk/editje/editje/clist.py 2010-03-30 08:33:01 UTC (rev 47583) @@ -47,15 +47,19 @@ self._list.clear() def add(self, item, data=None): - if not self._items.get(item): - i = self._list.item_append(item, None, None, None, data) - self._items[item] = i - self.event_emit("item.added", item) - if self._selected.get(item): - i.selected = True - if not self._first: - self._first = i + self.add_full(item, data=data) + def add_full(self, item, icon=None, end=None, data=None): + if self._items.get(item): + return + i = self._list.item_append(item, icon, end, None, data) + self._items[item] = i + self.event_emit("item.added", item) + if self._selected.get(item): + i.selected = True + if not self._first: + self._first = i + def remove(self, item): i = self._items.get(item) if i: Modified: trunk/editje/editje/details_state.py =================================================================== --- trunk/editje/editje/details_state.py 2010-03-30 05:42:56 UTC (rev 47582) +++ trunk/editje/editje/details_state.py 2010-03-30 08:33:01 UTC (rev 47583) @@ -496,6 +496,8 @@ def _update_do(self): self._update_schedule = None self._hide_all() + if not self.e.part.state.name: + return self._update_common() self.main_show() self.group_show("rel1") @@ -762,7 +764,6 @@ self, parent, operation_stack_cb, img_new_img_cb, img_list_get_cb, img_id_get_cb, fnt_new_fnt_cb, fnt_list_get_cb, fnt_id_get_cb, workfile_name_get_cb, part_object_get_cb, group) - self.anim = None def _header_init(self, parent): self.title = "part properties" @@ -785,6 +786,8 @@ self.e.animation.callback_add("animation.changed", self._anim_selected) self.e.animation.callback_add("animation.unselected", self._anim_unselected) + self.e.animation.callback_add("part.added", self._anim_parts_changed) + self.e.animation.callback_add("part.removed", self._anim_parts_changed) self._state_copy_button = StateCopyButton(self.e) @@ -813,6 +816,16 @@ self._hide_all() self.hide() + def _check_and_show(self): + anim = self.e.animation + part = self.e.part + ret = anim.name and anim.part_belongs(part.name) + if ret: + self._show() + else: + self._hide() + return ret + def _part_update(self, emissor, data): if self.part_evas: self.part_evas.on_resize_del(self._size_changed) @@ -821,30 +834,29 @@ self.part_evas.on_resize_add(self._size_changed) self._size_changed(self.part_evas) - if self.anim: - self._show() + self._check_and_show() def _part_unselected(self, emissor, data): if self.part_evas: self.part_evas.on_resize_del(self._size_changed) self.part_evas = None + self.part_edje = None self._hide() def _anim_selected(self, emissor, data): - self.anim = True + self._check_and_show() - if self.part_edje: - self._show() - def _anim_unselected(self, emissor, data): - self.anim = None self._hide() + def _anim_parts_changed(self, emissor, data): + self._check_and_show() + def _state_changed_cb(self, emissor, data): if not data: return self.part_edje.state_selected_set(data) self.state = self.e.part.state._state - if self.anim: + if self._check_and_show(): self._update() Modified: trunk/editje/editje/editable.py =================================================================== --- trunk/editje/editje/editable.py 2010-03-30 05:42:56 UTC (rev 47582) +++ trunk/editje/editje/editable.py 2010-03-30 08:33:01 UTC (rev 47583) @@ -40,8 +40,8 @@ self._group = "" self._edje = None + self.part = EditablePart(self) self.animation = EditableAnimation(self) - self.part = EditablePart(self) self.signal = EditableProgram(self) self._size = None @@ -434,7 +434,7 @@ self.programs)) self.event_emit("animations.changed", self.animations) - def animation_add(self, name): + def animation_add(self, name, parts=None): if name in self._animations: return False @@ -457,7 +457,9 @@ prevstatename = "default 0.00" statename = startname + " 0.00" - for p in self.parts: + if not parts: + parts = self.parts + for p in parts: prog.target_add(p) part = self._edje.part_get(p) part.state_add(startname) Modified: trunk/editje/editje/editable_animation.py =================================================================== --- trunk/editje/editje/editable_animation.py 2010-03-30 05:42:56 UTC (rev 47582) +++ trunk/editje/editje/editable_animation.py 2010-03-30 08:33:01 UTC (rev 47583) @@ -35,6 +35,7 @@ self._name = "" self.timestops = None + self._parts_init() self._states_init() self.program = EditableProgram(self.e) @@ -134,6 +135,67 @@ def stop(self): self.e._edje.signal_emit("animation,stop", self._name) + # Parts + def _parts_init(self): + self.parts = {} + self.e.part.callback_add("name.changed", self._part_rename_cb) + self.callback_add("animation.changed", self._parts_reload_cb) + self.callback_add("animation.unselected", self._parts_reload_cb) + + def _parts_reload_cb(self, emissor, data): + self.parts = {} + if not data: + return + + prog = self.e.program_get("@%s@0.00" % self._name) + for t in prog.targets: + self.parts[t] = True + + def _part_rename_cb(self, emissor, data): + old_name, new_name = data + p = self.parts.get(old_name) + if not p: + return + self.parts[new_name] = True + del self.parts[old_name] + + def part_add(self, part): + if part in self.parts: + return + + progname = "@%s@0.00" % self._name + prog = self.e.program_get(progname) + prog.target_add(part) + p = self.e._edje.part_get(part) + p.state_copy("default 0.00", progname) + self.parts[part] = True + + # Re-set current state to make sure everything is consistent + self._state_set(self._current) + + self.event_emit("part.added", part) + + def part_remove(self, part): + if part not in self.parts: + return + + p = self.e._edje.part_get(part) + p.state_selected_set("default 0.00") + if p.name == self.e.part.name: + self.e.part.state.name = "" + for t in self.timestops: + progname = "@%s@%.2f" % (self._name, t) + st = progname + " 0.00" + prog = self.e.program_get(progname) + prog.target_del(part) + p.state_del(st) + + del self.parts[part] + self.event_emit("part.removed", part) + + def part_belongs(self, part): + return part in self.parts + # States def _states_init(self): self.timestops = [] @@ -187,7 +249,7 @@ prog.state_set(name) prog.transition = edje.EDJE_TWEEN_MODE_LINEAR prog.transition_time = time - prev - for p in self.e.parts: + for p in self.parts.iterkeys(): prog.target_add(p) part = self.e._edje.part_get(p) part.state_add(name) @@ -246,6 +308,12 @@ nextprog = self.e.program_get(nextname) nextprog.transition_time = next - prev + # Delete states from parts + statename = progname + " 0.00" + for p in self.parts.iterkeys(): + part = self.e._edje.part_get(p) + part.state_del(statename) + self.timestops.pop(idx) self.event_emit("state.removed", time) @@ -271,15 +339,16 @@ self._current = time self.program.name = "@%s@%.2f" % (self._name, time) statename = self.program.name + " 0.00" - self.e.part.state.name = statename - for p in self.e.parts: + for p in self.parts.iterkeys(): part = self.e._edje.part_get(p) if part.state_exist(statename): part.state_selected_set(statename) else: self._part_state_create(part) part.state_selected_set(statename) - self.e.part.state.name = statename + #self.e.part.state.name = statename # Why is this here? + if self.e.part.name in self.parts: + self.e.part.state.name = statename self.event_emit("state.changed", self.e.part.state.name) def _state_get(self): Modified: trunk/editje/editje/editable_program.py =================================================================== --- trunk/editje/editje/editable_program.py 2010-03-30 05:42:56 UTC (rev 47582) +++ trunk/editje/editje/editable_program.py 2010-03-30 08:33:01 UTC (rev 47583) @@ -98,6 +98,9 @@ def target_add(self, target): return self._program.target_add(target) + def target_del(self, target): + return self._program.target_del(target) + def targets_clear(self): self._program.targets_clear() Modified: trunk/editje/editje/editje.py =================================================================== --- trunk/editje/editje/editje.py 2010-03-30 05:42:56 UTC (rev 47582) +++ trunk/editje/editje/editje.py 2010-03-30 08:33:01 UTC (rev 47583) @@ -35,7 +35,7 @@ from details_state import PartStateDetails, PartAnimStateDetails from parts import PartsList -from animations import AnimationDetails, AnimationsList +from animations import AnimationDetails, AnimationsList, AnimationsPartsList from signals import SignalsList, SignalDetails from widgets_list import WidgetsList @@ -741,20 +741,23 @@ evas.EVAS_HINT_FILL) mainbar.show() - def new_anim_cb(name): - return self.e.animation_add(name) + def new_anim_cb(name, parts): + return self.e.animation_add(name, parts) def anims_list_cb(): return self.e.animations - list = AnimationsList(self, new_anim_cb, anims_list_cb) + def parts_list_cb(): + return self.e.parts + + list = AnimationsList(self, new_anim_cb, anims_list_cb, parts_list_cb) list.options = True list.title = "Animations" list.open = True mainbar.pack_end(list) list.show() - list = PartsList(self, self.e, self._operation_stack) + list = AnimationsPartsList(self, self.e, self._operation_stack) list.title = "Parts" list.open = True mainbar.pack_end(list) |
From: Enlightenment S. <no-...@en...> - 2010-04-07 17:08:27
|
Log: Match changes in Edje_Edit. Several bugs may (and have, actually) be introduced, sorry about that. Author: sachiel Date: 2010-04-07 10:08:20 -0700 (Wed, 07 Apr 2010) New Revision: 47814 Modified: trunk/editje/editje/details_state.py trunk/editje/editje/details_widget_states.py trunk/editje/editje/editable.py trunk/editje/editje/editable_animation.py trunk/editje/editje/editable_part.py trunk/editje/editje/editable_state.py trunk/editje/editje/editje.py trunk/editje/editje/objects_data.py Modified: trunk/editje/editje/details_state.py =================================================================== --- trunk/editje/editje/details_state.py 2010-04-07 17:06:07 UTC (rev 47813) +++ trunk/editje/editje/details_state.py 2010-04-07 17:08:20 UTC (rev 47814) @@ -41,14 +41,15 @@ def _floater_list_items_update(self): list = [] for s in self.e.part.states: - list.append((s, s)) + lbl = "%s %.2f" % s + list.append((lbl, s)) return list def _floater_title_init(self): self._floater.title_set("State Selection") def value_set(self, value): - self.e.part.state.copy_from(value) + self.e.part.state.copy_from(*value) class PartStateDetails(EditjeDetails): @@ -140,12 +141,12 @@ self.part_evas = self._part_object_get_cb(self.part_edje.name) self.part_evas.on_resize_add(self._size_changed) self._size_changed(self.part_evas) - state = self.part_edje.state_selected_get() - if state == "(null) 0.00": - state = "default 0.00" - self._header_table["state"].value = state + state, val = self.part_edje.state_selected_get() + if state == "(null)": + state = "default" + self._header_table["state"].value = "%s %.2f" % (state, val) self._header_table["state"].show_value() - self.state = self.part_edje.state_get(state) + self.state = self.part_edje.state_get(state, val) self._update() self.show() @@ -435,11 +436,11 @@ def _state_changed_cb(self, emissor, data): if not data: return - self.part_edje.state_selected_set(data) + self.part_edje.state_selected_set(*data) self.state = self.e.part.state._state prop = self._header_table.get("state") if prop: - prop.value = data + prop.value = "%s %.2f" % data self._update() def _state_common_props_changed_cb(self, emissor, data): @@ -451,24 +452,24 @@ # select 1st if self.e.part.name != part_name: self.e.part.name = part_name - self.e.part.state.name = old_name + self.e.part.state.name = old_name[0] part = self.e.part_get(part_name) - if (part.state_exist(new_name)) or old_name == "default 0.00": + if (part.state_exist(*new_name)) or old_name == ["default", 0.0]: return False # rename later - return self.e.part.state.rename(new_name) + return self.e.part.state.rename(*new_name) part = self.e.part.name old_name = self.e.part.state.name - entry_val = st_widget.value.split(None, 1) - if len(entry_val) == 1: - new_name = entry_val[0] + " 0.00" + new_name = st_widget.value.split(None, 1) + if len(new_name) == 1: + new_name[1] = 0.0 else: - new_name = " ".join(entry_val) + new_name[1] = float(new_name[1]) if state_rename(part, old_name, new_name): op = Operation("state renaming") @@ -478,7 +479,7 @@ self._operation_stack_cb(op) else: # TODO: notify the user of renaming failure - st_widget.value = old_name + st_widget.value = "%s %.2f" % old_name def _hide_all(self): self.main_hide() @@ -823,7 +824,7 @@ self._part_type_to_text(self.part_edje.type) self._header_table["type"].show_value() self.edje_get().signal_emit("cl,option,enable", "editje") - self.state = self.part_edje.state_get(state) + self.state = self.part_edje.state_get(*state) self._update() self.show() @@ -876,7 +877,7 @@ def _state_changed_cb(self, emissor, data): if not data: return - self.part_edje.state_selected_set(data) + self.part_edje.state_selected_set(*data) self.state = self.e.part.state._state if self._check_and_show(): self._update() Modified: trunk/editje/editje/details_widget_states.py =================================================================== --- trunk/editje/editje/details_widget_states.py 2010-04-07 17:06:07 UTC (rev 47813) +++ trunk/editje/editje/details_widget_states.py 2010-04-07 17:08:20 UTC (rev 47814) @@ -61,7 +61,8 @@ ico = Icon(self.states) ico.file_set(self.theme_file, "editje/icon/confirm") ico.scale_set(0, 0) - it = self.states.item_append(s, None, ico, self._show_actions, s) + lbl = "%s %.2f" % s + it = self.states.item_append(lbl, None, ico, self._show_actions, s) self.states.go() def _state_add_new_cb(self, popup, data): @@ -75,42 +76,37 @@ def _state_newname(self): max = 0 - cur_state = self._edit_grp.part.state.name.split(None, 1) + cur_state = self._edit_grp.part.state.name if re.match("[a-zA-Z]*\d{2,}", cur_state[0]): cur = cur_state[0][:-2] else: cur = cur_state[0] - for p in self._edit_grp.part.states: - state = p.split(None, 1) + for state in self._edit_grp.part.states: if re.match("%s\d{2,}" % cur, state[0]): num = int(state[0][len(cur):]) if num > max: max = num - nst = cur + "%.2d" % (max + 1) + " 0.00" + nst = cur + "%.2d" % (max + 1) return nst # if st_to state does not exist for the part, it is created def _part_state_copy_from(self, part_name, st_from, st_to): self._edit_grp.part.name = part_name - # FIXME: one can't add states with only value (float #) - # differing, right now. this is the reason for this fscking "half" - # thing - to_half_name = st_to.split(None, 1)[0] pt = self._edit_grp.part_get(part_name) - existed = pt.state_exist(st_to) + existed = pt.state_exist(*st_to) # FIXME: totally don't know why state_copy was not working for the # latter case, return here when things change underneath. also fix # the ugly event emitions if not existed: - r = pt.state_copy(st_from, to_half_name) + r = pt.state_copy(st_from[0], st_from[1], st_to[0], st_to[1]) self._edit_grp.part.event_emit("state.added", st_to) - self._edit_grp.part.state.name = to_half_name + " 0.00" + self._edit_grp.part.state.name = st_to else: - st = pt.state_get(st_to) - r = st.copy_from(st_from) + st = pt.state_get(*st_to) + r = st.copy_from(*st_from) self._edit_grp.part.state.event_emit("state.changed", st_to) def _remove_state_internal(self, state): @@ -119,18 +115,24 @@ return False if state == self._edit_grp.part.state.name: - self._edit_grp.part.state.name = "default 0.00" - self._edit_grp.part.state_del(state) + self._edit_grp.part.state.name = ("default", 0.00) + self._edit_grp.part.state_del(*state) return True def _states_added_cb(self, popup, data): new_state = self.newstate_entry.entry + tmp = new_state.split(None, 1) + if len(tmp) == 1: + new_state = (tmp[0], 0.0) + else: + new_state = (tmp[0], float(tmp[1])) + part_name = self._edit_grp.part.name part = self._edit_grp.part_get(part_name) curr_state = self._edit_grp.part.state.name - if part.state_exist(new_state): + if part.state_exist(*new_state): # FIXME: notify the user of it somehow return @@ -145,17 +147,18 @@ self.close() def _is_default(self, state): - return state == "default 0.00" + if type(state) == str: + return state == "default 0.00" + return state == ("default", 0.00) def _state_restore(self, part_name, state_save, readd=False): self._edit_grp.part.name = part_name st_name = state_save.name - half_name = st_name.split(None, 1)[0] if readd: - self._edit_grp.part.state_add(half_name) + self._edit_grp.part.state_add(*st_name) - state = self._edit_grp.part_get(part_name).state_get(st_name) + state = self._edit_grp.part_get(part_name).state_get(*st_name) state_save.apply_to(state) # FIXME: ugly hacks @@ -184,7 +187,7 @@ def _remove_state_cb(self, btn, state_name): part_name = self._edit_grp.part.name part = self._edit_grp.part_get(part_name) - st_obj = part.state_get(state_name) + st_obj = part.state_get(*state_name) st_class = self._state_class_from_part_type_get(part) state_save = st_class(st_obj) @@ -206,13 +209,13 @@ part_name = self._edit_grp.part.name curr_state = self._edit_grp.part.state.name part = self._edit_grp.part_get(part_name) - st_obj = part.state_get(curr_state) + st_obj = part.state_get(*curr_state) st_class = self._state_class_from_part_type_get(part) state_save = st_class(st_obj) self._part_state_copy_from(part_name, st_from, curr_state) - op = Operation("state copying (%s into %s)" % (st_from, curr_state)) + op = Operation("state copying (%s into %s)" % (st_from[0], curr_state[0])) op.redo_callback_add( self._part_state_copy_from, part_name, st_from, curr_state) op.undo_callback_add(self._state_restore, part_name, state_save) @@ -239,12 +242,13 @@ return btn def _show_actions(self, it, ti, state): + strstate = "%s %.2f" % state self.actions_box = Box(self._pop) name_box = Box(self._pop) lb_state = Label(self._pop) lb_state.label_set("<b>State: ") lb_name = Label(self._pop) - lb_name.label_set(state) + lb_name.label_set(strstate) name_box.horizontal_set(True) name_box.pack_end(lb_state) lb_state.show() Modified: trunk/editje/editje/editable.py =================================================================== --- trunk/editje/editje/editable.py 2010-04-07 17:06:07 UTC (rev 47813) +++ trunk/editje/editje/editable.py 2010-04-07 17:08:20 UTC (rev 47814) @@ -465,8 +465,8 @@ prog.source = name prog.after_add("@%s@end" % name) - prevstatename = "default 0.00" - statename = startname + " 0.00" + prevstatename = "default" + statename = startname if not parts: parts = self.parts for p in parts: Modified: trunk/editje/editje/editable_animation.py =================================================================== --- trunk/editje/editje/editable_animation.py 2010-04-07 17:06:07 UTC (rev 47813) +++ trunk/editje/editje/editable_animation.py 2010-04-07 17:08:20 UTC (rev 47814) @@ -70,7 +70,7 @@ self._name = "" for p in self.e.parts: part = self.e._edje.part_get(p) - part.state_selected_set("default 0.00") + part.state_selected_set("default") self.event_emit("animation.unselected") def _name_get(self): @@ -102,10 +102,10 @@ if not part: #prog.target_del(pp) TODO: binding continue - state = part.state_get(p + " 0.00") + state = part.state_get(p) if not state: continue - state.name_set(p2 + " 0.00") + state.name_set(p2) if time == "0.00": prog.source_set(name) @@ -167,7 +167,7 @@ prog = self.e.program_get(progname) prog.target_add(part) p = self.e._edje.part_get(part) - p.state_copy("default 0.00", progname) + p.state_copy("default", 0.0, progname, 0.0) self.parts[part] = True # Re-set current state to make sure everything is consistent @@ -182,7 +182,7 @@ p = self.e._edje.part_get(part) p.state_selected_set("default 0.00") if p.name == self.e.part.name: - self.e.part.state.name = "" + self.e.part.state.name = None for t in self.timestops: progname = "@%s@%.2f" % (self._name, t) st = progname + " 0.00" @@ -240,8 +240,8 @@ name = "@%s@%.2f" % (self._name, time) # States - prevstatename = prevname + " 0.00" - statename = name + " 0.00" + prevstatename = prevname + statename = name # Create self.e.program_add(name) @@ -309,25 +309,25 @@ nextprog.transition_time = next - prev # Delete states from parts - statename = progname + " 0.00" + statename = progname for p in self.parts.iterkeys(): part = self.e._edje.part_get(p) - part.state_del(statename) + part.state_del(statename, 0.0) self.timestops.pop(idx) self.event_emit("state.removed", time) def _part_state_create(self, part): statename = self.program.name - orig_state = "default 0.00" + orig_state = "default" time_idx = 0 while time_idx <= self._current_idx: time = self.timestops[time_idx] - name = "@%s@%.2f 0.00" % (self._name, time) + name = "@%s@%.2f" % (self._name, time) if part.state_exist(name): orig_state = name else: - part.state_copy(orig_state, statename) + part.state_copy(orig_state, 0.0, statename, 0.0) time_idx += 1 self.program.target_add(part.name) @@ -338,7 +338,7 @@ self._current_idx = self.timestops.index(time) self._current = time self.program.name = "@%s@%.2f" % (self._name, time) - statename = self.program.name + " 0.00" + statename = self.program.name for p in self.parts.iterkeys(): part = self.e._edje.part_get(p) if part.state_exist(statename): Modified: trunk/editje/editje/editable_part.py =================================================================== --- trunk/editje/editje/editable_part.py 2010-04-07 17:06:07 UTC (rev 47813) +++ trunk/editje/editje/editable_part.py 2010-04-07 17:08:20 UTC (rev 47814) @@ -105,26 +105,28 @@ def _states_reload_cb(self, emissor, data): if data and self._part: - self.states = filter(lambda x: not x.startswith("@"), - self._part.states) + self.states = [] + for s in filter(lambda x: not x.startswith("@"), self._part.states): + n, v = s.split(None) + self.states.append((n, float(v))) else: self.states = [] self.event_emit("states.changed") - def state_add(self, name): + def state_add(self, name, value=0.0): if not self.name: return False - self._part.state_add(name) - self.event_emit("state.added", name) + self._part.state_add(name, value) + self.event_emit("state.added", (name, value)) return True - def state_del(self, name): + def state_del(self, name, value=0.0): if not self.name: return False - self._part.state_del(name) - self.event_emit("state.removed", name) + self._part.state_del(name, value) + self.event_emit("state.removed", (name, value)) return True def _mouse_events_set(self, value): Modified: trunk/editje/editje/editable_state.py =================================================================== --- trunk/editje/editje/editable_state.py 2010-04-07 17:06:07 UTC (rev 47813) +++ trunk/editje/editje/editable_state.py 2010-04-07 17:08:20 UTC (rev 47814) @@ -24,6 +24,7 @@ self._edit_grp = editable_part.e self.name = None + self.value = 0.0 self.callback_add("state.changed", self._rel1_inform) self.callback_add("state.changed", self._rel2_inform) @@ -43,23 +44,40 @@ if not part_name: self.name = None + self.value = 0.0 return part = self._edit_grp.part_get(part_name) - st_name = part.state_selected_get() - if st_name == "(null) 0.00": - st_name = "default 0.00" + st_name, st_val = part.state_selected_get() + if st_name == "(null)": + st_name = "default" # forcing last condition at name setter self._name = None - self.name = st_name + self.name = st_name, st_val # Name - def _name_set(self, value): + def _name_set(self, st): + name = None + value = None + if type(st) == list or type(st) == tuple: + if len(st) == 2: + name, value = st + else: + name = st[0] + value = 0.0 + elif type(st) == str: + tmp = st.split(None, 1) + name = tmp[0] + if len(tmp) == 2: + value = float(tmp[1]) + else: + value = 0.0 def null(): self._state = None self._name = None + self.value = 0.0 if not self._edit_grp.edje: null() @@ -70,46 +88,50 @@ null() return - if not value: + if not name: null() # not sure if useful, but leaving for now self.event_emit("state.unselected") return - if self._name == value: + if self._name == name and self.value == value: return part = self._edit_grp.part_get(part_name) - self._state = part.state_get(value) + self._state = part.state_get(name, value) if self._state: - self._name = value - self.event_emit("state.changed", self._name) + self._name = name + self.value = value + self.event_emit("state.changed", (self._name, self.value)) def _name_get(self): - return self._name + return self._name, self.value name = property(_name_get, _name_set) - def rename(self, new_name): + def rename(self, new_name, new_value=None): if not self.name or not new_name: return False - r = self._state.name_set(new_name) + if new_value is None: + new_value = self.value + + r = self._state.name_set(new_name, new_value) if r: - self.event_emit("state.renamed", self._name) - self._name_set(new_name) + self.event_emit("state.renamed", (self._name, self.value)) + self._name_set((new_name, new_value)) return r - def copy_from(self, state): + def copy_from(self, state, value=0.0): if not self.name: return False - r = self._state.copy_from(state) + r = self._state.copy_from(state, value) if not r: return False - self.event_emit("state.changed", self._name) + self.event_emit("state.changed", (self._name, self.value)) return True def _rel1_inform(self, emissor, data): Modified: trunk/editje/editje/editje.py =================================================================== --- trunk/editje/editje/editje.py 2010-04-07 17:06:07 UTC (rev 47813) +++ trunk/editje/editje/editje.py 2010-04-07 17:08:20 UTC (rev 47814) @@ -666,9 +666,9 @@ for p_name, s_name in self._prevstates: real_part = self.e._edje.part_get(p_name) - real_part.state_selected_set(s_name) + real_part.state_selected_set(*s_name) if p_name == self.e.part.name: - self.e.part.state.name = s_name + self.e.part.state.name = s_name[0] del self._prevstates def anim_save(anim): Modified: trunk/editje/editje/objects_data.py =================================================================== --- trunk/editje/editje/objects_data.py 2010-04-07 17:06:07 UTC (rev 47813) +++ trunk/editje/editje/objects_data.py 2010-04-07 17:08:20 UTC (rev 47814) @@ -72,11 +72,13 @@ elif self._type == edje.EDJE_PART_TYPE_EXTERNAL: self._class = StateExternal - states = dict() + states = [] self["states"] = states - for state_name in obj.states: - state = obj.state_get(state_name) - states[state_name] = self._class(state) + for st in obj.states: + state_name, state_val = st.split(None, 1) + state_val = float(state_val) + state = obj.state_get(state_name, state_val) + states.append(self._class(state)) def _type_get(self): return self._type @@ -111,12 +113,11 @@ #obj.drag_confine = dragable["confine"] #obj.drag_event = dragable["events"] - for state in self["states"].values(): - name = state.name - half_name = name.split(None, 1)[0] - if half_name != "default": - obj.state_add(half_name) - state.apply_to(obj.state_get(name)) + for state in self["states"]: + name, val = state.name, state.value + if not obj.state_exist(name, val): + obj.state_add(name, val) + state.apply_to(obj.state_get(name, val)) return True @@ -143,6 +144,8 @@ def __init__(self, obj): Object.__init__(self, obj.name) + self.value = obj.value + self["visible"] = obj.visible self["align"] = obj.align self["min"] = obj.min @@ -201,7 +204,7 @@ return True def source_get(self, indent=""): - ret = indent + 'description { state: "%s";\n' % self.name + ret = indent + 'description { state: "%s" %.2f;\n' % self.name ret += indent + ' visible: %d;\n' % int(self["visible"]) ret += indent + ' align: %f %f;\n' % self["align"] ret += indent + ' min: %d %d;\n' % self["min"] @@ -595,7 +598,7 @@ part = edj.part_get(target) if not part: continue - state_name = name + " 0.00" + state_name = name part.state_add(state_name) state = part.state_get(state_name) if not state: |
From: Enlightenment S. <no-...@en...> - 2010-04-20 20:07:00
|
Log: Handle keys in dialogs. Still some things to do here, like connecting activate callbacks from entries to whatever action is needed. Author: sachiel Date: 2010-04-20 13:06:53 -0700 (Tue, 20 Apr 2010) New Revision: 48180 Modified: trunk/editje/editje/about.py trunk/editje/editje/animations.py trunk/editje/editje/desktop.py trunk/editje/editje/desktop_parts_manager.py trunk/editje/editje/editje.py trunk/editje/editje/filewizard.py trunk/editje/editje/floater.py trunk/editje/editje/groupselector.py trunk/editje/editje/parts.py trunk/editje/editje/signals.py Modified: trunk/editje/editje/about.py =================================================================== --- trunk/editje/editje/about.py 2010-04-20 20:03:05 UTC (rev 48179) +++ trunk/editje/editje/about.py 2010-04-20 20:06:53 UTC (rev 48180) @@ -85,4 +85,4 @@ copyright.show() sc.content_set(copyright) - self.action_add("default", "Close", self.close) + self.action_add("default", "Close", self.close, key="Escape") Modified: trunk/editje/editje/animations.py =================================================================== --- trunk/editje/editje/animations.py 2010-04-20 20:03:05 UTC (rev 48179) +++ trunk/editje/editje/animations.py 2010-04-20 20:06:53 UTC (rev 48180) @@ -250,8 +250,8 @@ self.alternate_background_set(True) - self.action_add("default", "Cancel", self._cancel) - self.action_add("default", "Add", self._add) + self.action_add("default", "Cancel", self._cancel, key="Escape") + self.action_add("default", "Add", self._add, key="Return") self.action_disabled_set("default", "Add", True) self._new_anim_cb = new_anim_cb Modified: trunk/editje/editje/desktop.py =================================================================== --- trunk/editje/editje/desktop.py 2010-04-20 20:03:05 UTC (rev 48179) +++ trunk/editje/editje/desktop.py 2010-04-20 20:06:53 UTC (rev 48180) @@ -203,6 +203,11 @@ self.parent_view.on_resize_add(self._padding_init) + self.on_key_down_add(self._key_down_cb) + + def _key_down_cb(self, obj, event): + print event.keyname + def _handlers_init(self): #Hilight self.highlight = PartHighlight(self) Modified: trunk/editje/editje/desktop_parts_manager.py =================================================================== --- trunk/editje/editje/desktop_parts_manager.py 2010-04-20 20:03:05 UTC (rev 48179) +++ trunk/editje/editje/desktop_parts_manager.py 2010-04-20 20:06:53 UTC (rev 48180) @@ -73,6 +73,7 @@ self.hide() def _select(self, part, event): + self.focus_set(True) self._manager.select(self._manager.parts_name[self]) Modified: trunk/editje/editje/editje.py =================================================================== --- trunk/editje/editje/editje.py 2010-04-20 20:03:05 UTC (rev 48179) +++ trunk/editje/editje/editje.py 2010-04-20 20:06:53 UTC (rev 48180) @@ -84,7 +84,7 @@ self._clipboard = None - self.on_key_down_add(self.key_down) + self.main_layout.on_key_down_add(self.key_down) def key_down(self, win, event): key = event.keyname Modified: trunk/editje/editje/filewizard.py =================================================================== --- trunk/editje/editje/filewizard.py 2010-04-20 20:03:05 UTC (rev 48179) +++ trunk/editje/editje/filewizard.py 2010-04-20 20:06:53 UTC (rev 48180) @@ -50,8 +50,8 @@ self._add_file_list_header() self.content_add("file_list", self._file_list) - self.action_add("file_list", "Close", self.close) - self.action_add("file_list", "New", self._goto_add_new_file) + self.action_add("file_list", "Close", self.close, key="Escape") + self.action_add("file_list", "New", self._goto_add_new_file, key="n") self._file_list.callback_selected_add(self._goto_preview) @@ -60,8 +60,9 @@ self._add_new_file_page_created = True self._add_add_new_file_header() - self.action_add("add_new_file", "Go To List", self._back) - self.action_add("add_new_file", "Add", self._new_file_added) + self.action_add("add_new_file", "Go To List", self._back, key="Escape") + self.action_add("add_new_file", "Add", self._new_file_added, + key="Return") self._file_selector_add() self.content_add("add_new_file", self._fs) @@ -73,9 +74,11 @@ self._add_files_to_preview() - self.action_add("file_preview", "Go To List", self._back) - self.action_add("file_preview", "Delete", self._delete_file) - self.action_add("file_preview", "Select", self._file_selected) + self.action_add("file_preview", "Go To List", self._back, key="Escape") + self.action_add("file_preview", "Delete", self._delete_file, + key="Delete") + self.action_add("file_preview", "Select", self._file_selected, + key="Return") def goto(self, page, alt_bg_style=None): Wizard.goto(self, page) Modified: trunk/editje/editje/floater.py =================================================================== --- trunk/editje/editje/floater.py 2010-04-20 20:03:05 UTC (rev 48179) +++ trunk/editje/editje/floater.py 2010-04-20 20:06:53 UTC (rev 48180) @@ -182,6 +182,37 @@ func(self, udata) +class WizardAction(Button): + def __init__(self, parent, label, func, key=None, data=None): + Button.__init__(self, parent) + self.label_set(label) + self.callback_clicked_add(self.__action_btn_clicked) + self.size_hint_weight_set(evas.EVAS_HINT_EXPAND, + evas.EVAS_HINT_EXPAND) + self.size_hint_align_set(evas.EVAS_HINT_FILL, + evas.EVAS_HINT_FILL) + + self._func = func + self._data = data + self._key = key + + def _key_get(self): + return self._key + + key = property(_key_get) + + def __action_btn_clicked(self, obj): + self() + + def __call__(self): + if self.disabled_get(): + return + if self._data: + self._func(self._data) + else: + self._func() + + # TODO: move this class elsewhere class Wizard(InnerWindow): default_width = 500 @@ -203,6 +234,8 @@ self.__layout.size_hint_min_set(self.__width, self.__height) self.__layout.size_hint_max_set(self.__width, self.__height) + self.on_key_down_add(self.__key_down_cb) + self.__layout.show() InnerWindow.content_set(self, self.__layout) @@ -212,6 +245,7 @@ self.__pager.show() self.__pages = {} + self.__current_page = None self.__notification = None def _subtitle_text_set(self, value): @@ -265,6 +299,7 @@ self.title_text = title self.subtitle_text = subtitle self.__pager.content_push(box) + self.__current_page = name def content_add(self, pg_name, c): page = self.__pages.get(pg_name) @@ -273,19 +308,13 @@ content.pack_end(c) # TODO: add support for equal-named actions on a page, if needed - def action_add(self, pg_name, label, func_cb, data=None, icon=None): + def action_add(self, pg_name, label, func_cb, data=None, icon=None, + key=None): page = self.__pages.get(pg_name) if page: title, subtitle, box, content, actions, action_btns = page - btn = Button(self._parent) - btn.label_set(label) - btn.callback_clicked_add(self.__action_btn_clicked) - btn.size_hint_weight_set(evas.EVAS_HINT_EXPAND, - evas.EVAS_HINT_EXPAND) - btn.size_hint_align_set(evas.EVAS_HINT_FILL, - evas.EVAS_HINT_FILL) - btn.data["clicked"] = (func_cb, data) + btn = WizardAction(self._parent, label, func_cb, key, data) if icon: ico = Icon(self._parent) @@ -304,13 +333,14 @@ title, subtitle, box, content, actions, action_btns = page action_btns[label].disabled_set(disabled) - def goto(self, page): - page = self.__pages.get(page) + def goto(self, page_name): + page = self.__pages.get(page_name) if page: title, subtitle, box, content, actions, action_btns = page self.title_text = title self.subtitle_text = subtitle self.__pager.content_promote(box) + self.__current_page = page_name def notify(self, message): if self.__notification: @@ -341,6 +371,7 @@ _instance = self self._parent.block(True) InnerWindow.show(self) + self.focus_set(True) def hide(self): global _instance @@ -357,9 +388,12 @@ self.hide() self.delete() - def __action_btn_clicked(self, obj, *args, **kwargs): - func, data = obj.data["clicked"] - if data: - func(data) - else: - func() + def __key_down_cb(self, obj, event): + page = self.__pages.get(self.__current_page) + if not page: + return + acts = page[-1] + for a in acts.itervalues(): + if a.key == event.keyname: + a() + return Modified: trunk/editje/editje/groupselector.py =================================================================== --- trunk/editje/editje/groupselector.py 2010-04-20 20:03:05 UTC (rev 48179) +++ trunk/editje/editje/groupselector.py 2010-04-20 20:06:53 UTC (rev 48180) @@ -263,8 +263,8 @@ self.content_add("group_list", self._groups_list) self._groups_list.show() if not switch_only: - self.action_add("group_list", "Cancel", self.close) - self.action_add("group_list", "New", self._goto_new_group) + self.action_add("group_list", "Cancel", self.close, key="Escape") + self.action_add("group_list", "New", self._goto_new_group, key="n") def group_added(cb_func): name = self._grp_name_entry.entry @@ -283,17 +283,22 @@ changed_cb=self._name_changed_cb) self.content_add("new_group", self._grp_name_entry) self._grp_name_entry.show() - self.action_add("new_group", "Cancel", self.goto, "group_list") - self.action_add("new_group", "Create", group_added, new_grp_cb) + self.action_add("new_group", "Cancel", self.goto, "group_list", + key="Escape") + self.action_add("new_group", "Create", group_added, new_grp_cb, + key="Return") self.page_add("group_preview", "Group preview", "Delete or start editing this group.") self._preview = PreviewFrame(self) self.content_add("group_preview", self._preview) self._preview.show() - self.action_add("group_preview", "Cancel", self._goto_group_list) - self.action_add("group_preview", "Delete", self._delete_group) - self.action_add("group_preview", "Open", self._group_selected) + self.action_add("group_preview", "Cancel", self._goto_group_list, + key="Escape") + self.action_add("group_preview", "Delete", self._delete_group, + key="Delete") + self.action_add("group_preview", "Open", self._group_selected, + key="Return") self.goto("group_list") Modified: trunk/editje/editje/parts.py =================================================================== --- trunk/editje/editje/parts.py 2010-04-20 20:03:05 UTC (rev 48179) +++ trunk/editje/editje/parts.py 2010-04-20 20:06:53 UTC (rev 48180) @@ -380,8 +380,8 @@ self.content_add("default", self._ext_list) self._ext_list.show() - self.action_add("default", "Cancel", self._cancel) - self.action_add("default", "Add", self._add) + self.action_add("default", "Cancel", self._cancel, key="Escape") + self.action_add("default", "Add", self._add, key="Return") self.action_disabled_set("default", "Add", True) edje.message_signal_process() Modified: trunk/editje/editje/signals.py =================================================================== --- trunk/editje/editje/signals.py 2010-04-20 20:03:05 UTC (rev 48179) +++ trunk/editje/editje/signals.py 2010-04-20 20:06:53 UTC (rev 48180) @@ -113,6 +113,8 @@ self._file_set(theme_file, "editje/list/signal_type_buttons") self._labels_set() + self.on_mouse_down_add(self._mouse_down_cb) + def _file_set(self, file_, group): edje.Edje.file_set(self, file_, group) @@ -142,7 +144,10 @@ elif emission == "general_sig,selected": self._type_select_cb(edje.EDJE_ACTION_TYPE_SIGNAL_EMIT) + def _mouse_down_cb(self, obj, event): + self.focus_set(True) + class NewSignalWizard(Wizard): def __init__(self, parent, new_sig_cb=None, sigs_list_cb=None): if not new_sig_cb or not sigs_list_cb: @@ -170,8 +175,8 @@ self.content_add("default", self._types_btns) self._types_btns.show() - self.action_add("default", "Cancel", self._cancel) - self.action_add("default", "Create", self._add) + self.action_add("default", "Cancel", self._cancel, key="Escape") + self.action_add("default", "Create", self._add, key="Return") self.action_disabled_set("default", "Create", True) self._new_sig_cb = new_sig_cb |
From: Enlightenment S. <no-...@en...> - 2010-04-20 22:13:24
|
Log: Update references to groups when renaming or deleting a group. Author: sachiel Date: 2010-04-20 15:13:17 -0700 (Tue, 20 Apr 2010) New Revision: 48189 Modified: trunk/editje/editje/editable.py trunk/editje/editje/editje.py Modified: trunk/editje/editje/editable.py =================================================================== --- trunk/editje/editje/editable.py 2010-04-20 22:12:15 UTC (rev 48188) +++ trunk/editje/editje/editable.py 2010-04-20 22:13:17 UTC (rev 48189) @@ -87,7 +87,7 @@ self._edje and self._edje.delete() self._edje = None self._edje_group = None - elif value != self._group: + else: self._edje = EdjeEdit( self._canvas, file=self._swapfile.workfile, group=value) self._edje_group = self._edje.current_group Modified: trunk/editje/editje/editje.py =================================================================== --- trunk/editje/editje/editje.py 2010-04-20 22:12:15 UTC (rev 48188) +++ trunk/editje/editje/editje.py 2010-04-20 22:13:17 UTC (rev 48189) @@ -291,7 +291,7 @@ if self.group != selection: self._operation_stack_clean() - self.group = selection + self.group = selection return True |
From: Enlightenment S. <no-...@en...> - 2010-04-23 14:34:47
|
Log: Fix adding groups after saving the file, by Masaki Author: sachiel Date: 2010-04-23 07:34:38 -0700 (Fri, 23 Apr 2010) New Revision: 48246 Modified: trunk/editje/editje/editable.py Modified: trunk/editje/editje/editable.py =================================================================== --- trunk/editje/editje/editable.py 2010-04-23 10:32:15 UTC (rev 48245) +++ trunk/editje/editje/editable.py 2010-04-23 14:34:38 UTC (rev 48246) @@ -336,6 +336,12 @@ if self._edje.save_all(): self._swapfile.save() self.event_emit("saved") + # FIXME: Workaround that solves a probably bug on + # swapfile class that don't allow to add a new group after saving + # the file being edited + self._edje = EdjeEdit( + self._canvas, file=self._swapfile.workfile, + group=self._group) else: self.event_emit("saved.error") |
From: Enlightenment S. <no-...@en...> - 2010-04-26 17:21:18
|
Log: No need to add the value to the state name Author: sachiel Date: 2010-04-26 10:21:12 -0700 (Mon, 26 Apr 2010) New Revision: 48334 Modified: trunk/editje/editje/editable.py Modified: trunk/editje/editje/editable.py =================================================================== --- trunk/editje/editje/editable.py 2010-04-26 16:51:03 UTC (rev 48333) +++ trunk/editje/editje/editable.py 2010-04-26 17:21:12 UTC (rev 48334) @@ -583,7 +583,7 @@ for pp in prog.targets: part = self._edje.part_get(pp) if part: - part.state_del(p + " 0.00") + part.state_del(p) self.program_del(p) self.program_del(stopname) self.event_emit("animation.removed", name) |
From: Enlightenment S. <no-...@en...> - 2010-04-26 22:42:02
|
Log: Set default state on parts when deleting an animation. Author: sachiel Date: 2010-04-26 15:41:55 -0700 (Mon, 26 Apr 2010) New Revision: 48351 Modified: trunk/editje/editje/editable.py Modified: trunk/editje/editje/editable.py =================================================================== --- trunk/editje/editje/editable.py 2010-04-26 22:35:49 UTC (rev 48350) +++ trunk/editje/editje/editable.py 2010-04-26 22:41:55 UTC (rev 48351) @@ -583,6 +583,7 @@ for pp in prog.targets: part = self._edje.part_get(pp) if part: + part.state_selected_set("default") part.state_del(p) self.program_del(p) self.program_del(stopname) |
From: Enlightenment S. <no-...@en...> - 2010-04-27 22:39:38
|
Log: oops.. sneaky debug Author: sachiel Date: 2010-04-27 15:39:30 -0700 (Tue, 27 Apr 2010) New Revision: 48369 Modified: trunk/editje/editje/desktop.py Modified: trunk/editje/editje/desktop.py =================================================================== --- trunk/editje/editje/desktop.py 2010-04-27 21:15:34 UTC (rev 48368) +++ trunk/editje/editje/desktop.py 2010-04-27 22:39:30 UTC (rev 48369) @@ -203,7 +203,7 @@ self.parent_view.on_resize_add(self._padding_init) - self.on_key_down_add(self._key_down_cb) + #self.on_key_down_add(self._key_down_cb) def _key_down_cb(self, obj, event): print event.keyname |
From: Enlightenment S. <no-...@en...> - 2010-04-28 18:55:12
|
Log: Turn the partlist widget into a generic buttonlist. Add group property for parts of type GROUP. By Thiago Masaki. Author: sachiel Date: 2010-04-28 11:55:03 -0700 (Wed, 28 Apr 2010) New Revision: 48400 Added: trunk/editje/editje/details_widget_button_list.py Removed: trunk/editje/editje/details_widget_partlist.py Modified: trunk/editje/editje/Makefile.am trunk/editje/editje/details_part.py trunk/editje/editje/details_state.py trunk/editje/editje/details_widget_actionslist.py trunk/editje/editje/editable.py Modified: trunk/editje/editje/Makefile.am =================================================================== --- trunk/editje/editje/Makefile.am 2010-04-28 18:51:27 UTC (rev 48399) +++ trunk/editje/editje/Makefile.am 2010-04-28 18:55:03 UTC (rev 48400) @@ -29,7 +29,7 @@ details_widget_entry_button.py \ details_widget_entry_button_list.py \ details_widget_font.py \ -details_widget_partlist.py \ +details_widget_button_list.py \ details_widget_signals.py \ details_widget_source.py \ details_widget_states.py \ Modified: trunk/editje/editje/details_part.py =================================================================== --- trunk/editje/editje/details_part.py 2010-04-28 18:51:27 UTC (rev 48399) +++ trunk/editje/editje/details_part.py 2010-04-28 18:55:03 UTC (rev 48400) @@ -21,7 +21,7 @@ from details_widget_entry import WidgetEntry from details_widget_boolean import WidgetBoolean from details_widget_combo import WidgetCombo -from details_widget_partlist import WidgetPartList +from details_widget_button_list import WidgetButtonList from prop import Property, PropertyTable from operation import Operation @@ -80,7 +80,7 @@ return self.e.part.name prop = Property(parent, "clip_to") - prop.widget_add("to", WidgetPartList( + prop.widget_add("to", WidgetButtonList( self, "Clipper selection", parts_get, sel_part_get)) self["main"].property_add(prop) prop = Property(parent, "mouse_events") @@ -100,10 +100,24 @@ wid.item_add(self._effects[i]) prop.widget_add("e", wid) self["textblock"].property_add(prop) - # Missing properties: source*, entry_mode, select_mode, multiline + # Missing properties: sources of text block, entry_mode, + # select_mode, multiline + self.group_add("group") + def groups_get(): + return self.e.groups + def sel_group_get(): + return self.e.group + + prop = Property(parent, "source") + prop.widget_add("src", WidgetButtonList( + self, "group source selection", groups_get, sel_group_get)) + self["group"].property_add(prop) + + self.main_hide() self.group_hide("textblock") + self.group_hide("group") self.open_disable = False self.open = True @@ -151,6 +165,8 @@ self._prop_value_common_changed(prop_name, prop_value) elif group_name == "textblock": self._prop_value_text_changed(prop_name, prop_value) + elif group_name == "group": + self._prop_value_group_changed(prop_name, prop_value) def _prop_value_common_changed(self, prop, value): args = [["main"], [prop], [value], [None], [False], [None]] @@ -171,6 +187,12 @@ [None], [False], [lambda x: self._effects[x]]] self._prop_change_do("text part effects setting", *args) + def _prop_value_group_changed(self, prop, value): + if prop !="source": + return + args = [["group"], [prop], [value], [None], [False], [None]] + self._prop_change_do("part group source setting", *args) + def _part_update(self, emissor, data): if not self.e.part.name: return @@ -183,6 +205,7 @@ self._update_common_props() self.group_hide("textblock") + self.group_hide("group") if self.e.part.type == edje.EDJE_PART_TYPE_EXTERNAL: source = self.e.part.source @@ -208,6 +231,9 @@ if self.e.part.type == edje.EDJE_PART_TYPE_TEXT: self._update_text_props() + if self.e.part.type == edje.EDJE_PART_TYPE_GROUP: + self._update_group_props() + self.show() def _header_extra_hide(self): @@ -225,12 +251,15 @@ self._header_extra_hide() self.main_hide() self.group_hide("textblock") + self.group_hide("group") self["main"]["clip_to"].hide_value() self["main"]["mouse_events"].hide_value() self["main"]["repeat_events"].hide_value() if self.e.part.type == edje.EDJE_PART_TYPE_TEXT: self["textblock"]["effect"].hide_value() + elif self.e.part.type == edje.EDJE_PART_TYPE_GROUP: + self["group"]["source"].hide_value() self.hide() @@ -261,8 +290,18 @@ self["textblock"]["effect"].show_value() self.group_show("textblock") + def _update_group_props(self): + source = self.e.part._part.source + if source: + self["group"]["source"].value = source + else: + self["group"]["source"].value = "" + self["group"]["source"].show_value() + self.group_show("group") + def _part_type_to_text(self, type): parttypes = ['NONE', 'RECTANGLE', 'TEXT', 'IMAGE', 'SWALLOW', 'TEXTBLOCK', 'GRADIENT', 'GROUP', 'BOX', 'TABLE', 'EXTERNAL'] return parttypes[type] + Modified: trunk/editje/editje/details_state.py =================================================================== --- trunk/editje/editje/details_state.py 2010-04-28 18:51:27 UTC (rev 48399) +++ trunk/editje/editje/details_state.py 2010-04-28 18:55:03 UTC (rev 48400) @@ -25,7 +25,7 @@ from details_widget_combo import WidgetCombo from details_widget_entry import WidgetEntry from details_widget_font import WidgetFont -from details_widget_partlist import WidgetPartList +from details_widget_button_list import WidgetButtonList from details_widget_states import WidgetStates from prop import Property, PropertyTable from filewizard import ImageSelectionWizard @@ -370,10 +370,10 @@ return self.e.part.name prop = Property(self._parent, "to") - prop.widget_add("x", WidgetPartList(self, rel_to_box_title, - parts_get, sel_part_get)) - prop.widget_add("y", WidgetPartList(self, rel_to_box_title, - parts_get, sel_part_get)) + prop.widget_add("x", WidgetButtonList(self, rel_to_box_title, + parts_get, sel_part_get)) + prop.widget_add("y", WidgetButtonList(self, rel_to_box_title, + parts_get, sel_part_get)) self["rel1"].property_add(prop) prop = Property(self._parent, "relative") @@ -406,10 +406,10 @@ self.group_title_set("rel2", "bottom-right") prop = Property(self._parent, "to") - prop.widget_add("x", WidgetPartList(self, rel_to_box_title, - parts_get, sel_part_get)) - prop.widget_add("y", WidgetPartList(self, rel_to_box_title, - parts_get, sel_part_get)) + prop.widget_add("x", WidgetButtonList(self, rel_to_box_title, + parts_get, sel_part_get)) + prop.widget_add("y", WidgetButtonList(self, rel_to_box_title, + parts_get, sel_part_get)) self["rel2"].property_add(prop) prop = Property(self._parent, "relative") Modified: trunk/editje/editje/details_widget_actionslist.py =================================================================== --- trunk/editje/editje/details_widget_actionslist.py 2010-04-28 18:51:27 UTC (rev 48399) +++ trunk/editje/editje/details_widget_actionslist.py 2010-04-28 18:55:03 UTC (rev 48400) @@ -15,11 +15,11 @@ # You should have received a copy of the GNU Lesser General Public # License along with Editje. If not, see <http://www.gnu.org/licenses/>. -from details_widget_partlist import WidgetPartList +from details_widget_button_list import WidgetButtonList from floater_opener import FloaterListOpener -class WidgetActionsList(WidgetPartList): +class WidgetActionsList(WidgetButtonList): def _floater_list_items_update(self): list = [] for item in self._list_get_cb(): Modified: trunk/editje/editje/editable.py =================================================================== --- trunk/editje/editje/editable.py 2010-04-28 18:51:27 UTC (rev 48399) +++ trunk/editje/editje/editable.py 2010-04-28 18:55:03 UTC (rev 48400) @@ -695,3 +695,8 @@ if saved_states: relatives[p] = saved_states return relatives + + def _groups_get(self): + return edje.file_collection_list(self._swapfile.workfile) + + groups = property(_groups_get) |