Drag and drop

svn: r454
This commit is contained in:
Don Allingham
2001-10-10 02:07:47 +00:00
parent 0e3f433873
commit 7aef6c5340
7 changed files with 80 additions and 8 deletions

View File

@@ -3548,6 +3548,11 @@
<object>editPerson</object> <object>editPerson</object>
<last_modification_time>Tue, 27 Mar 2001 22:01:31 GMT</last_modification_time> <last_modification_time>Tue, 27 Mar 2001 22:01:31 GMT</last_modification_time>
</signal> </signal>
<signal>
<name>drag_data_received</name>
<handler>on_photolist_drag_data_received</handler>
<last_modification_time>Tue, 09 Oct 2001 20:50:19 GMT</last_modification_time>
</signal>
<selection_mode>GTK_SELECTION_SINGLE</selection_mode> <selection_mode>GTK_SELECTION_SINGLE</selection_mode>
<icon_width>100</icon_width> <icon_width>100</icon_width>
<row_spacing>20</row_spacing> <row_spacing>20</row_spacing>

View File

@@ -31,6 +31,7 @@ import string
# GTK/Gnome modules # GTK/Gnome modules
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
from GDK import *
from gtk import * from gtk import *
from gnome.ui import * from gnome.ui import *
import libglade import libglade
@@ -97,8 +98,9 @@ class EditPerson:
# widgets # widgets
self.window = self.get_widget("editPerson") self.window = self.get_widget("editPerson")
self.gallery_widget = self.top.get_widget("photolist")
self.gallery = PersonGallery(self, self.path, "i%s" % person.getId(), \ self.gallery = PersonGallery(self, self.path, "i%s" % person.getId(), \
self.top.get_widget("photolist"), self.db) self.gallery_widget, self.db)
self.notes_field = self.get_widget("personNotes") self.notes_field = self.get_widget("personNotes")
self.event_name_field = self.get_widget("eventName") self.event_name_field = self.get_widget("eventName")
self.event_place_field = self.get_widget("eventPlace") self.event_place_field = self.get_widget("eventPlace")

View File

@@ -33,6 +33,7 @@ import string
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
from gtk import * from gtk import *
from gnome.ui import * from gnome.ui import *
import GDK
import gnome.mime import gnome.mime
import libglade import libglade
import GdkImlib import GdkImlib
@@ -133,7 +134,7 @@ class ImageSelect:
photo = Photo() photo = Photo()
photo.setPath(name) photo.setPath(name)
photo.setDescription(description) photo.setDescription(description)
photo.setMimeType(gnome.mime.type_or_default(name,"unknown")) photo.setMimeType(gnome.mime.type_or_default_of_file(name,"unknown"))
self.savephoto(photo) self.savephoto(photo)
@@ -159,6 +160,19 @@ class Gallery(ImageSelect):
def __init__(self, dataobj, path, prefix, icon_list, db): def __init__(self, dataobj, path, prefix, icon_list, db):
ImageSelect.__init__(self, path, prefix, db) ImageSelect.__init__(self, path, prefix, db)
t = [
('STRING', 0, 0),
('text/plain',0,0),
('application/x-rootwin-drop',0,1)]
icon_list.drag_dest_set(DEST_DEFAULT_ALL, t, GDK.ACTION_COPY)
icon_list.connect("drag_data_received", self.on_photolist_drag_data_received)
icon_list.drag_source_set(GDK.BUTTON1_MASK|GDK.BUTTON3_MASK,t,\
GDK.ACTION_COPY)
icon_list.connect("drag_data_get", self.on_photolist_drag_data_get)
# Be paranoid - development only error messages # Be paranoid - development only error messages
assert dataobj.addPhoto, "Gallery data object must contain an addPhoto routine." assert dataobj.addPhoto, "Gallery data object must contain an addPhoto routine."
assert dataobj.getPhotoList, "Gallery data object must contain an getPhotoList routine." assert dataobj.getPhotoList, "Gallery data object must contain an getPhotoList routine."
@@ -216,7 +230,6 @@ class Gallery(ImageSelect):
self.add_thumbnail(photo) self.add_thumbnail(photo)
self.icon_list.thaw() self.icon_list.thaw()
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
# on_photo_select_icon - User clicked on a photo. Remember which one. # on_photo_select_icon - User clicked on a photo. Remember which one.
@@ -225,6 +238,36 @@ class Gallery(ImageSelect):
def on_photo_select_icon(self, obj,iconNumber,event): def on_photo_select_icon(self, obj,iconNumber,event):
self.selectedIcon = iconNumber self.selectedIcon = iconNumber
def on_photolist_drag_data_received(self,w, context, x, y, data, info, time):
if data and data.format == 8:
if data.data[0:5] == "file:":
name = string.strip(data.data[5:])
mime = gnome.mime.type_or_default_of_file(name,"unknown")
if mime[0:5] == "image":
photo = Photo()
photo.setPath(name)
photo.setMimeType(mime)
self.savephoto(photo)
else:
print name,mime
else:
if self.db.getObjectMap().has_key(data.data):
w.drag_finish(context, TRUE, FALSE, time)
oref = ObjectRef()
oref.setReference(self.db.findObjectNoMap(data.data))
self.dataobj.addPhoto(oref)
self.add_thumbnail(oref)
utils.modified()
else:
w.drag_finish(context, FALSE, FALSE, time)
def on_photolist_drag_data_get(self,w, context, selection_data, info, time):
if info == 1:
return
if self.selectedIcon != -1:
ref = self.dataobj.getPhotoList()[self.selectedIcon]
id = ref.getReference().getId()
selection_data.set(selection_data.target, 8, id)
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #

View File

@@ -25,6 +25,7 @@
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
from gtk import * from gtk import *
from gnome.ui import * from gnome.ui import *
import GDK
import libglade import libglade
import os import os

View File

@@ -610,13 +610,14 @@
<class>GtkNotebook</class> <class>GtkNotebook</class>
<child_name>GnomeDock:contents</child_name> <child_name>GnomeDock:contents</child_name>
<name>notebook1</name> <name>notebook1</name>
<can_focus>True</can_focus>
<signal> <signal>
<name>switch_page</name> <name>switch_page</name>
<handler>on_notebook1_switch_page</handler> <handler>on_notebook1_switch_page</handler>
<after>True</after> <after>True</after>
<last_modification_time>Fri, 20 Oct 2000 01:16:41 GMT</last_modification_time> <last_modification_time>Fri, 20 Oct 2000 01:16:41 GMT</last_modification_time>
</signal> </signal>
<show_tabs>False</show_tabs> <show_tabs>True</show_tabs>
<show_border>True</show_border> <show_border>True</show_border>
<tab_pos>GTK_POS_TOP</tab_pos> <tab_pos>GTK_POS_TOP</tab_pos>
<scrollable>False</scrollable> <scrollable>False</scrollable>
@@ -2444,8 +2445,6 @@
<name>preview</name> <name>preview</name>
<width>100</width> <width>100</width>
<height>100</height> <height>100</height>
<scaled_width>96</scaled_width>
<scaled_height>96</scaled_height>
</widget> </widget>
</widget> </widget>
@@ -2875,6 +2874,11 @@
<handler>on_media_list_select_row</handler> <handler>on_media_list_select_row</handler>
<last_modification_time>Tue, 09 Oct 2001 17:22:54 GMT</last_modification_time> <last_modification_time>Tue, 09 Oct 2001 17:22:54 GMT</last_modification_time>
</signal> </signal>
<signal>
<name>drag_data_get</name>
<handler>on_media_list_drag_data_get</handler>
<last_modification_time>Tue, 09 Oct 2001 21:02:46 GMT</last_modification_time>
</signal>
<columns>5</columns> <columns>5</columns>
<column_widths>33,331,104,168,80</column_widths> <column_widths>33,331,104,168,80</column_widths>
<selection_mode>GTK_SELECTION_SINGLE</selection_mode> <selection_mode>GTK_SELECTION_SINGLE</selection_mode>
@@ -2996,7 +3000,7 @@
<class>GtkLabel</class> <class>GtkLabel</class>
<child_name>Notebook:tab</child_name> <child_name>Notebook:tab</child_name>
<name>label256</name> <name>label256</name>
<label>label256</label> <label>Media</label>
<justify>GTK_JUSTIFY_CENTER</justify> <justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap> <wrap>False</wrap>
<xalign>0.5</xalign> <xalign>0.5</xalign>
@@ -6868,7 +6872,7 @@ Unknown
<width>400</width> <width>400</width>
<history_id>recentdbs</history_id> <history_id>recentdbs</history_id>
<max_saved>15</max_saved> <max_saved>15</max_saved>
<title>Open a GRAMPS Databases</title> <title>Open a GRAMPS Database</title>
<directory>True</directory> <directory>True</directory>
<modal>False</modal> <modal>False</modal>
<child> <child>

View File

@@ -3260,6 +3260,15 @@ def on_main_key_release_event(obj,event):
elif event.keyval == GDK.Insert: elif event.keyval == GDK.Insert:
load_new_person(obj) load_new_person(obj)
def on_media_list_drag_data_get(w, context, selection_data, info, time):
if info == 1:
return
if len(w.selection) > 0:
row = w.selection[0]
d = w.get_row_data(row)
id = d.getId()
selection_data.set(selection_data.target, 8, id)
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
# Main program # Main program
@@ -3307,6 +3316,8 @@ def main(arg):
dateArrow = gtop.get_widget("dateSort") dateArrow = gtop.get_widget("dateSort")
deathArrow = gtop.get_widget("deathSort") deathArrow = gtop.get_widget("deathSort")
t = [('STRING', 0, 0)]
media_list.drag_source_set(GDK.BUTTON1_MASK|GDK.BUTTON3_MASK,t,GDK.ACTION_COPY)
person_list.set_column_visibility(5,0) person_list.set_column_visibility(5,0)
person_list.set_column_visibility(6,0) person_list.set_column_visibility(6,0)
person_list.set_column_visibility(7,0) person_list.set_column_visibility(7,0)
@@ -3375,6 +3386,7 @@ def main(arg):
"on_main_key_release_event" : on_main_key_release_event, "on_main_key_release_event" : on_main_key_release_event,
"on_media_activate" : on_media_activate, "on_media_activate" : on_media_activate,
"on_media_list_select_row" : on_media_list_select_row, "on_media_list_select_row" : on_media_list_select_row,
"on_media_list_drag_data_get" : on_media_list_drag_data_get,
"on_places_activate" : on_places_activate, "on_places_activate" : on_places_activate,
"on_preferences_activate" : on_preferences_activate, "on_preferences_activate" : on_preferences_activate,
"on_remove_child_clicked" : on_remove_child_clicked, "on_remove_child_clicked" : on_remove_child_clicked,

View File

@@ -1262,6 +1262,11 @@
<object>marriageEditor</object> <object>marriageEditor</object>
<last_modification_time>Thu, 29 Mar 2001 13:59:27 GMT</last_modification_time> <last_modification_time>Thu, 29 Mar 2001 13:59:27 GMT</last_modification_time>
</signal> </signal>
<signal>
<name>drag_data_received</name>
<handler>on_photolist_drag_data_received</handler>
<last_modification_time>Tue, 09 Oct 2001 21:29:08 GMT</last_modification_time>
</signal>
<selection_mode>GTK_SELECTION_SINGLE</selection_mode> <selection_mode>GTK_SELECTION_SINGLE</selection_mode>
<icon_width>100</icon_width> <icon_width>100</icon_width>
<row_spacing>4</row_spacing> <row_spacing>4</row_spacing>