[wiican] Added drag'n'drop facilities to mapping manager dialog
- From: J. Félix Ontañón <felixonta src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [wiican] Added drag'n'drop facilities to mapping manager dialog
- Date: Sat, 27 Nov 2010 19:02:33 +0000 (UTC)
commit 8453e82eabfb6b5201c7de35ba1bda207a8d5f6b
Author: J. Félix Ontañón <fontanon emergya es>
Date: Sat Nov 27 20:01:31 2010 +0100
Added drag'n'drop facilities to mapping manager dialog
data/mapping.ui | 1 +
wiican/ui/managerdlg.py | 42 +++++++++++++++++++++++++++++++++++++++++-
2 files changed, 42 insertions(+), 1 deletions(-)
---
diff --git a/data/mapping.ui b/data/mapping.ui
index 07a8ad4..6b95967 100644
--- a/data/mapping.ui
+++ b/data/mapping.ui
@@ -137,6 +137,7 @@
<property name="search_column">1</property>
<property name="tooltip_column">2</property>
<signal name="row_activated" handler="mapping_list_row_activated_cb"/>
+ <signal name="drag_data_received" handler="mapping_list_drag_data_received_cb"/>
<signal name="key_release_event" handler="mapping_list_key_release_event_cb"/>
<child>
<object class="GtkTreeViewColumn" id="treeviewcolumn3">
diff --git a/wiican/ui/managerdlg.py b/wiican/ui/managerdlg.py
index 1808d0d..fa800c5 100644
--- a/wiican/ui/managerdlg.py
+++ b/wiican/ui/managerdlg.py
@@ -52,6 +52,13 @@ class MappingManagerDialog(object):
self.mapping_store = builder.get_object('mapping_store')
self.mapping_list = builder.get_object('mapping_list')
+ # Enable Drag&Drop
+ target_entries = [('catalog', gtk.TARGET_SAME_WIDGET, 0)]
+ self.mapping_list.enable_model_drag_source(gtk.gdk.BUTTON1_MASK,
+ target_entries, gtk.gdk.ACTION_MOVE)
+ self.mapping_list.enable_model_drag_dest(target_entries,
+ gtk.gdk.ACTION_MOVE)
+
for mapping_id, mapping in mapping_manager.items():
# Prevent for loading a not found icon path
icon_path = mapping.get_icon()
@@ -60,7 +67,8 @@ class MappingManagerDialog(object):
icon = gtk.gdk.pixbuf_new_from_file_at_size(icon_path, 24, 24)
visible = mapping_manager.is_visible(mapping_id)
- mapping_name = '<b>%s</b>\n<i>%s</i>' % (mapping.get_name(), mapping.get_comment())
+ mapping_name = '<b>%s</b>\n<i>%s</i>' % (mapping.get_name(),
+ mapping.get_comment())
self.mapping_store.append([icon, mapping_name,
mapping.get_comment(), visible, mapping_id])
@@ -282,3 +290,35 @@ class MappingManagerDialog(object):
model.swap(selected, next)
mapping_manager.swap_mapping_order(model[selected][MAPPING_ID_COL],
model[next][MAPPING_ID_COL])
+
+ def mapping_list_drag_data_received_cb(self, treeview, context, x, y,
+ selection, info, etime):
+
+ selection = self.mapping_list.get_selection()
+ model, selected = selection.get_selected()
+ data = [model[selected][ICON_COL], model[selected][NAME_COL], \
+ model[selected][COMMENT_COL], model[selected][VISIBLE_COL], \
+ model[selected][MAPPING_ID_COL]]
+
+ drop_info = treeview.get_dest_row_at_pos(x, y)
+ if drop_info:
+ path, position = drop_info
+ iter = model.get_iter(path)
+ if position in (gtk.TREE_VIEW_DROP_BEFORE,
+ gtk.TREE_VIEW_DROP_INTO_OR_BEFORE):
+ model.insert_before(iter, data)
+ mapping_manager.swap_mapping_order(model[iter][MAPPING_ID_COL],
+ model[selected][MAPPING_ID_COL])
+ else:
+ model.insert_after(iter, data)
+ mapping_manager.swap_mapping_order(model[iter][MAPPING_ID_COL],
+ model[selected][MAPPING_ID_COL], True)
+ else:
+ model.append(data)
+ mapping_manager.swap_mapping_order(
+ mapping_manager.options['mapping_sort'][-1],
+ model[selected][MAPPING_ID_COL], True)
+
+ if context.action == gtk.gdk.ACTION_MOVE:
+ context.finish(True, True, etime)
+ return
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]