@@ -230,11 +230,13 @@ def insert(self, position, obj):
230
230
func = lambda : super (ModificationNotifier , self ).insert (position , obj )
231
231
self .__fire_change ("insert" , obj , func )
232
232
233
- def _reorder (self , childlist , value , new_index ):
234
- func = lambda : super (ModificationNotifier , self )._reorder (childlist , new_index )
235
- if hasattr (self , "pseudo_values" ):
236
- func = lambda : reorder_value (self .parent , value , new_index )
237
- return self .__fire_change ("reorder" , (childlist , value , new_index ), func )
233
+ def _reorder (self , obj_list , new_index ):
234
+ if not hasattr (self .parent , "pseudo_values" ):
235
+ func = lambda : reorder (self , obj_list , new_index )
236
+ return self .__fire_change ("reorder" , (self , new_index ), func )
237
+ else :
238
+ func = lambda : reorder_value (self , self .parent , new_index )
239
+ return self .__fire_change ("reorder" , (self , new_index ), func )
238
240
239
241
240
242
def remove_value (prop , pseudo ):
@@ -259,7 +261,7 @@ def remove_value(prop, pseudo):
259
261
prop .values = cp_val
260
262
261
263
262
- def reorder_value (prop , value , new_index ):
264
+ def reorder_value (value , prop , new_index ):
263
265
"""
264
266
Reorder a property value and its corresponding pseudo_value.
265
267
:param prop: odml Property augmented to fit odml-ui.
@@ -276,6 +278,19 @@ def reorder_value(prop, value, new_index):
276
278
prop .values = new_v_list
277
279
278
280
281
+ def reorder (obj , obj_list , new_index ):
282
+ """
283
+ Reorder a property or section.
284
+ :param obj: odml Property or Section.
285
+ :param obj_list: list with parent's properties/sections.
286
+ :param new_index: new position of the element.
287
+ """
288
+
289
+ parent = obj .parent
290
+ old_index = obj_list .index (obj )
291
+ parent .remove (obj_list [old_index ])
292
+ parent .insert (new_index if new_index < old_index else (new_index - 1 ), obj )
293
+
279
294
# create a separate global Event listeners for each class
280
295
# and provide ModificationNotifier Capabilities
281
296
name = "event"
0 commit comments