def sort(item)
if current = selection.selected
if current.type == 'Array'
parent = current.parent
ary = Editor.model2data(current)
order, reverse = ask_for_order
order or return
begin
block = eval "lambda { |x| #{order} }"
if reverse
ary.sort! { |a,b| block[b] <=> block[a] }
else
ary.sort! { |a,b| block[a] <=> block[b] }
end
rescue => e
Editor.error_dialog(self, "Failed to sort Array with #{order}: #{e}!")
else
Editor.data2model(ary, model, parent) do |m|
m.insert_before(parent, current)
end
model.remove(current)
expand_collapse(parent)
window.change
toplevel.display_status("Array has been sorted.")
end
else
toplevel.display_status("Only Array nodes can be sorted!")
end
else
toplevel.display_status("Select an Array to sort first!")
end
end