Changeset View
Changeset View
Standalone View
Standalone View
space_view3d_math_vis/utils.py
| Context not available. | |||||
| # <pep8 compliant> | # <pep8 compliant> | ||||
| from bpy.props import BoolProperty | |||||
| def console_namespace(): | def console_namespace(): | ||||
| import console_python | import console_python | ||||
| get_consoles = console_python.get_console | get_consoles = console_python.get_console | ||||
| Context not available. | |||||
| return console.locals | return console.locals | ||||
| return {} | return {} | ||||
| def is_display_list(listvar): | |||||
| from mathutils import Vector | |||||
| for var in listvar: | |||||
| if type(var) is not Vector: | |||||
| return False | |||||
| return True | |||||
| class VarStates: | |||||
| states = {} | |||||
| def get(self, key, default): | |||||
| return self.states.get(key, default) | |||||
| def delete(self, key): | |||||
| if key in self.states: | |||||
| del self.states[key] | |||||
| def is_visible(self, key): | |||||
| if key in self.states: | |||||
| disp, lock = self.states[key] | |||||
| return disp | |||||
| return True | |||||
| def toggle_display_state(self, key): | |||||
| if key in self.states: | |||||
| disp, lock = self.states[key] | |||||
| self.states[key] = [not disp, lock] | |||||
| else: | |||||
| self.states[key]=[False, False] | |||||
| def is_locked(self, key): | |||||
| if key in self.states: | |||||
| disp, lock = self.states[key] | |||||
| return lock | |||||
| return False | |||||
| def toggle_lock_state(self, key): | |||||
| if key in self.states: | |||||
| disp, lock = self.states[key] | |||||
| self.states[key] = [disp, not lock] | |||||
| else: | |||||
| self.states[key] = [True, True] | |||||
| var_states = VarStates() | |||||
| def get_math_data(): | |||||
| from mathutils import Matrix, Vector, Quaternion, Euler | |||||
| locals = console_namespace() | |||||
| if not locals: | |||||
| return {} | |||||
| vars = {} | |||||
| for key, var in locals.items(): | |||||
| if key[0] == "_" or not var: | |||||
| continue | |||||
| if type(var) in [Matrix, Vector, Quaternion, Euler]: | |||||
lijenstina: spaces around equals
In both cases the assignment is the same. Is that intentional? | |||||
Not Done Inline Actionsyes. I had it first structured a bit different, but i got a hint from another python developer that i should do it like above. I could replace this by an or but wouldnt that make the code less easy to read? gaiaclary: yes. I had it first structured a bit different, but i got a hint from another python developer… | |||||
Done Inline Actionsspace before the \ mont29: space before the `\` | |||||
| vars[key]=type(var) | |||||
Done Inline ActionsUse sets rather than lists here ({tuple, list} etc.) mont29: Use sets rather than lists here (`{tuple, list}` etc.) | |||||
| elif type(var) in [tuple, list] and is_display_list(var): | |||||
| vars[key]=type(var) | |||||
Done Inline Actions= & spaces… mont29: `=` & spaces… | |||||
| return vars | |||||
| def cleanup_math_data(): | |||||
| from mathutils import Matrix, Vector, Quaternion, Euler | |||||
| locals = console_namespace() | |||||
| if not locals: | |||||
| return | |||||
| vars = get_math_data() | |||||
| for key in vars.keys(): | |||||
| if var_states.is_locked(key): | |||||
| continue | |||||
| del locals[key] | |||||
| var_states.delete(key) | |||||
| def console_math_data(): | def console_math_data(): | ||||
| from mathutils import Matrix, Vector, Quaternion, Euler | from mathutils import Matrix, Vector, Quaternion, Euler | ||||
| Context not available. | |||||
| if key[0] == "_": | if key[0] == "_": | ||||
| continue | continue | ||||
| disp, lock = var_states.get(key, [True, False]) | |||||
| if not disp: | |||||
| continue | |||||
| var_type = type(var) | var_type = type(var) | ||||
| if var_type is Matrix: | if var_type is Matrix: | ||||
| Context not available. | |||||
| data_quat[key] = var | data_quat[key] = var | ||||
| elif var_type is Euler: | elif var_type is Euler: | ||||
| data_euler[key] = var | data_euler[key] = var | ||||
| elif var_type in {list, tuple}: | elif var_type in {list, tuple} and is_display_list(var): | ||||
| if var: | data_vector_array[key] = var | ||||
| ok = True | |||||
| for item in var: | |||||
| if type(item) is not Vector: | |||||
| ok = False | |||||
| break | |||||
| if ok: | |||||
| data_vector_array[key] = var | |||||
| return data_matrix, data_quat, data_euler, data_vector, data_vector_array | return data_matrix, data_quat, data_euler, data_vector, data_vector_array | ||||
| Context not available. | |||||
spaces around equals
In both cases the assignment is the same. Is that intentional?