# Copyright (C) 2007-2015 various contributors (see AUTHORS) # # This file is part of Python-EFL. # # Python-EFL is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 3 of the License, or (at your option) any later version. # # Python-EFL is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this Python-EFL. If not, see . cdef class Program(object): cdef EdjeEdit edje cdef const char *name def __init__(self, EdjeEdit e not None, name not None): if isinstance(name, unicode): name = name.encode("UTF-8") self.edje = e self.name = eina_stringshare_add(name) def __dealloc__(self): eina_stringshare_del(self.name) property name: def __get__(self): return _ctouni(self.name) def __set__(self, newname): self.rename(newname) def rename(self, newname not None): cdef Eina_Bool ret if isinstance(newname, unicode): newname = newname.encode("UTF-8") ret = edje_edit_program_name_set(self.edje.obj, self.name, newname if newname is not None else NULL) if ret == 0: return False eina_stringshare_replace(&self.name, newname) return True def edje_get(self): return self.edje def run(self): return bool(edje_edit_program_run(self.edje.obj, self.name)) # XXX TODO: add (or better convert) all this to properties # like is done in Part() def source_get(self): cdef const char *s s = edje_edit_program_source_get(self.edje.obj, self.name) ret = _ctouni(s) edje_edit_string_free(s) return ret def source_set(self, source): if isinstance(source, unicode): source = source.encode("UTF-8") return bool(edje_edit_program_source_set(self.edje.obj, self.name, source if source is not None else NULL)) def signal_get(self): cdef const char *s s = edje_edit_program_signal_get(self.edje.obj, self.name) ret = _ctouni(s) edje_edit_string_free(s) return ret def signal_set(self, signal): if isinstance(signal, unicode): signal = signal.encode("UTF-8") return bool(edje_edit_program_signal_set(self.edje.obj, self.name, signal if signal is not None else NULL)) def in_from_get(self): return edje_edit_program_in_from_get(self.edje.obj, self.name) def in_from_set(self, double f): return bool(edje_edit_program_in_from_set(self.edje.obj, self.name, f)) def in_range_get(self): return edje_edit_program_in_range_get(self.edje.obj, self.name) def in_range_set(self, double r): return bool(edje_edit_program_in_range_set(self.edje.obj, self.name, r)) def action_get(self): return edje_edit_program_action_get(self.edje.obj, self.name) def action_set(self, action): if isinstance(action, unicode): action = action.encode("UTF-8") return bool(edje_edit_program_action_set(self.edje.obj, self.name, action)) def targets_get(self): cdef Eina_List *lst lst = edje_edit_program_targets_get(self.edje.obj, self.name) ret = eina_list_strings_to_python_list(lst) edje_edit_string_list_free(lst) return ret def target_add(self, target): if isinstance(target, unicode): target = target.encode("UTF-8") return bool(edje_edit_program_target_add(self.edje.obj, self.name, target if target is not None else NULL)) def target_del(self, target): if isinstance(target, unicode): target = target.encode("UTF-8") return bool(edje_edit_program_target_del(self.edje.obj, self.name, target if target is not None else NULL)) def targets_clear(self): return bool(edje_edit_program_targets_clear(self.edje.obj, self.name)) def afters_get(self): cdef Eina_List *lst lst = edje_edit_program_afters_get(self.edje.obj, self.name) ret = eina_list_strings_to_python_list(lst) edje_edit_string_list_free(lst) return ret def after_add(self, after): if isinstance(after, unicode): after = after.encode("UTF-8") return bool(edje_edit_program_after_add(self.edje.obj, self.name, after if after is not None else NULL)) def after_del(self, after): if isinstance(after, unicode): after = after.encode("UTF-8") return bool(edje_edit_program_after_del(self.edje.obj, self.name, after if after is not None else NULL)) def afters_clear(self): return bool(edje_edit_program_afters_clear(self.edje.obj, self.name)) def state_get(self): cdef const char *s s = edje_edit_program_state_get(self.edje.obj, self.name) ret = _ctouni(s) edje_edit_string_free(s) return ret def state_set(self, state): if isinstance(state, unicode): state = state.encode("UTF-8") return bool(edje_edit_program_state_set(self.edje.obj, self.name, state if state is not None else NULL)) def value_get(self): return edje_edit_program_value_get(self.edje.obj, self.name) def value_set(self, double v): return bool(edje_edit_program_value_set(self.edje.obj, self.name, v)) def state2_get(self): cdef const char *s s = edje_edit_program_state2_get(self.edje.obj, self.name) ret = _ctouni(s) edje_edit_string_free(s) return ret def state2_set(self, state): if isinstance(state, unicode): state = state.encode("UTF-8") return bool(edje_edit_program_state2_set(self.edje.obj, self.name, state if state is not None else NULL)) def value2_get(self): return edje_edit_program_value2_get(self.edje.obj, self.name) def value2_set(self, double v): return bool(edje_edit_program_value2_set(self.edje.obj, self.name, v)) def transition_get(self): return edje_edit_program_transition_get(self.edje.obj, self.name) def transition_set(self, t): return bool(edje_edit_program_transition_set(self.edje.obj, self.name, t)) def transition_time_get(self): return edje_edit_program_transition_time_get(self.edje.obj, self.name) def transition_time_set(self, double t): return bool(edje_edit_program_transition_time_set(self.edje.obj, self.name, t)) property api: def __get__(self): cdef: const char *name const char *desc name = edje_edit_program_api_name_get(self.edje.obj, self.name) desc = edje_edit_program_api_description_get(self.edje.obj, self.name) n, d = _ctouni(name), _ctouni(desc) edje_edit_string_free(name) edje_edit_string_free(desc) return (n, d) def __set__(self, value): cdef object name, desc name, desc = value if isinstance(name, unicode): name = name.encode("UTF-8") if isinstance(desc, unicode): desc = desc.encode("UTF-8") edje_edit_program_api_name_set(self.edje.obj, self.name, name if name is not None else NULL) edje_edit_program_api_description_set(self.edje.obj, self.name, desc if desc is not None else NULL) property script: def __get__(self): cdef char *code code = edje_edit_script_program_get(self.edje.obj, self.name) ret = _touni(code) free(code) return ret def __set__(self, code): if isinstance(code, unicode): code = code.encode("UTF-8") edje_edit_script_program_set(self.edje.obj, self.name, code if code is not None else NULL) def __del__(self): edje_edit_script_program_set(self.edje.obj, self.name, NULL)