* src/DataViews/_NoteView.py: enable shortcuts and drag-and-drop.
* src/Bookmarks.py (NoteBookmarks.make_label): better note label. * src/DisplayTabs/_NoteModel.py: better note label for preview. * src/DisplayTabs/_NoteTab.py: enable accepting drag-and-drop notes. * src/ScratchPad.py: ScratchPadNote added. * src/DdTargets.py: NOTE_LINK added. 2007-03-28 Zsolt Foldvari <zfoldvar@users.sourceforge.net> svn: r8334
This commit is contained in:
@@ -1,3 +1,11 @@
|
|||||||
|
2007-03-28 Zsolt Foldvari <zfoldvar@users.sourceforge.net>
|
||||||
|
* src/DataViews/_NoteView.py: enable shortcuts and drag-and-drop.
|
||||||
|
* src/Bookmarks.py (NoteBookmarks.make_label): better note label.
|
||||||
|
* src/DisplayTabs/_NoteModel.py: better note label for preview.
|
||||||
|
* src/DisplayTabs/_NoteTab.py: enable accepting drag-and-drop notes.
|
||||||
|
* src/ScratchPad.py: ScratchPadNote added.
|
||||||
|
* src/DdTargets.py: NOTE_LINK added.
|
||||||
|
|
||||||
2007-03-28 Zsolt Foldvari <zfoldvar@users.sourceforge.net>
|
2007-03-28 Zsolt Foldvari <zfoldvar@users.sourceforge.net>
|
||||||
* src/DataViews/_NoteView.py: put back column editor support.
|
* src/DataViews/_NoteView.py: put back column editor support.
|
||||||
* src/GrampsDb/_GrampsDbBase.py (get_note_column_order): fix default
|
* src/GrampsDb/_GrampsDbBase.py (get_note_column_order): fix default
|
||||||
|
@@ -391,7 +391,9 @@ class NoteBookmarks(ListBookmarks) :
|
|||||||
|
|
||||||
def make_label(self,handle):
|
def make_label(self,handle):
|
||||||
obj = self.dbstate.db.get_note_from_handle(handle)
|
obj = self.dbstate.db.get_note_from_handle(handle)
|
||||||
name = obj.get().replace('\n', ' ')[:80]
|
name = obj.get().replace('\n', ' ')
|
||||||
|
if len(name) > 40:
|
||||||
|
name = name[:40]+"..."
|
||||||
return ("%s [%s]" % (name, obj.gramps_id), obj)
|
return ("%s [%s]" % (name, obj.gramps_id), obj)
|
||||||
|
|
||||||
def connect_signals(self):
|
def connect_signals(self):
|
||||||
|
@@ -38,13 +38,15 @@ import gtk
|
|||||||
# gramps modules
|
# gramps modules
|
||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
from RelLib import Note
|
|
||||||
import PageView
|
import PageView
|
||||||
import DisplayModels
|
import DisplayModels
|
||||||
import Utils
|
import Utils
|
||||||
import Errors
|
import Errors
|
||||||
import Bookmarks
|
import Bookmarks
|
||||||
import Config
|
import Config
|
||||||
|
import ColumnOrder
|
||||||
|
from RelLib import Note
|
||||||
|
from DdTargets import DdTargets
|
||||||
from QuestionDialog import QuestionDialog, ErrorDialog
|
from QuestionDialog import QuestionDialog, ErrorDialog
|
||||||
from Filters.SideBar import NoteSidebarFilter
|
from Filters.SideBar import NoteSidebarFilter
|
||||||
from Editors import EditNote, DeleteNoteQuery
|
from Editors import EditNote, DeleteNoteQuery
|
||||||
@@ -82,12 +84,12 @@ class NoteView(PageView.ListView):
|
|||||||
'note-update' : self.row_update,
|
'note-update' : self.row_update,
|
||||||
'note-delete' : self.row_delete,
|
'note-delete' : self.row_delete,
|
||||||
'note-rebuild' : self.build_tree,
|
'note-rebuild' : self.build_tree,
|
||||||
}
|
}
|
||||||
|
|
||||||
self.func_list = {
|
self.func_list = {
|
||||||
# '<CONTROL>J' : self.jump,
|
'<CONTROL>J' : self.jump,
|
||||||
# '<CONTROL>BackSpace' : self.key_delete,
|
'<CONTROL>BackSpace' : self.key_delete,
|
||||||
}
|
}
|
||||||
|
|
||||||
PageView.ListView.__init__(
|
PageView.ListView.__init__(
|
||||||
self, _('Notes'), dbstate, uistate, column_names,
|
self, _('Notes'), dbstate, uistate, column_names,
|
||||||
@@ -110,9 +112,10 @@ class NoteView(PageView.ListView):
|
|||||||
self.add_action('FilterEdit', None, _('Note Filter Editor'),
|
self.add_action('FilterEdit', None, _('Note Filter Editor'),
|
||||||
callback=self.filter_editor,)
|
callback=self.filter_editor,)
|
||||||
|
|
||||||
def column_editor(self, obj):
|
def drag_info(self):
|
||||||
import ColumnOrder
|
return DdTargets.NOTE_LINK
|
||||||
|
|
||||||
|
def column_editor(self, obj):
|
||||||
ColumnOrder.ColumnOrder(
|
ColumnOrder.ColumnOrder(
|
||||||
_('Select Note Columns'),
|
_('Select Note Columns'),
|
||||||
self.uistate,
|
self.uistate,
|
||||||
|
@@ -120,6 +120,7 @@ class _DdTargets(object):
|
|||||||
self.MEDIAOBJ = _DdType(self,'mediaobj')
|
self.MEDIAOBJ = _DdType(self,'mediaobj')
|
||||||
self.MEDIAREF = _DdType(self,'mediaref')
|
self.MEDIAREF = _DdType(self,'mediaref')
|
||||||
self.DATA = _DdType(self,'data_tuple')
|
self.DATA = _DdType(self,'data_tuple')
|
||||||
|
self.NOTE_LINK = _DdType(self,'note-link')
|
||||||
|
|
||||||
self.PERSON_LINK = _DdType(self,'person-link')
|
self.PERSON_LINK = _DdType(self,'person-link')
|
||||||
self.PERSON_LINK_LIST = _DdType(self,'person-link-list')
|
self.PERSON_LINK_LIST = _DdType(self,'person-link-list')
|
||||||
@@ -133,23 +134,26 @@ class _DdTargets(object):
|
|||||||
# List of all types that are used between
|
# List of all types that are used between
|
||||||
# gramps widgets but should not be exported
|
# gramps widgets but should not be exported
|
||||||
# to non gramps widgets.
|
# to non gramps widgets.
|
||||||
self._all_gramps_types = [self.URL,
|
self._all_gramps_types = [
|
||||||
self.EVENT,
|
self.URL,
|
||||||
self.ATTRIBUTE,
|
self.EVENT,
|
||||||
self.ADDRESS,
|
self.ATTRIBUTE,
|
||||||
self.LOCATION,
|
self.ADDRESS,
|
||||||
self.SOURCEREF,
|
self.LOCATION,
|
||||||
self.EVENTREF,
|
self.SOURCEREF,
|
||||||
self.NAME,
|
self.EVENTREF,
|
||||||
self.REPOREF,
|
self.NAME,
|
||||||
self.MEDIAOBJ,
|
self.REPOREF,
|
||||||
self.MEDIAREF,
|
self.MEDIAOBJ,
|
||||||
self.REPO_LINK,
|
self.MEDIAREF,
|
||||||
self.PLACE_LINK,
|
self.REPO_LINK,
|
||||||
self.SOURCE_LINK,
|
self.PLACE_LINK,
|
||||||
self.PERSON_LINK,
|
self.SOURCE_LINK,
|
||||||
self.PERSON_LINK_LIST,
|
self.PERSON_LINK,
|
||||||
self.PERSONREF]
|
self.PERSON_LINK_LIST,
|
||||||
|
self.PERSONREF,
|
||||||
|
self.NOTE_LINK,
|
||||||
|
]
|
||||||
|
|
||||||
self.CHILD = _DdType(self,'child')
|
self.CHILD = _DdType(self,'child')
|
||||||
self.SPOUSE = _DdType(self,'spouse')
|
self.SPOUSE = _DdType(self,'spouse')
|
||||||
|
@@ -39,8 +39,11 @@ class NoteModel(gtk.ListStore):
|
|||||||
self.db = db
|
self.db = db
|
||||||
for handle in note_list:
|
for handle in note_list:
|
||||||
note = self.db.get_note_from_handle(handle)
|
note = self.db.get_note_from_handle(handle)
|
||||||
|
text = note.get().replace('\n', ' ')
|
||||||
|
if len(text) > 80:
|
||||||
|
text = text[:80]+"..."
|
||||||
self.append(row=[
|
self.append(row=[
|
||||||
str(note.get_type()),
|
str(note.get_type()),
|
||||||
note.get().replace('\n', ' ')[:80],
|
text,
|
||||||
handle,
|
handle,
|
||||||
])
|
])
|
||||||
|
@@ -26,6 +26,14 @@
|
|||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
from gettext import gettext as _
|
from gettext import gettext as _
|
||||||
|
import cPickle as pickle
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# GTK/Gnome modules
|
||||||
|
#
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
import gtk
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
@@ -39,6 +47,7 @@ from DisplayTabs import log
|
|||||||
from _NoteModel import NoteModel
|
from _NoteModel import NoteModel
|
||||||
from _EmbeddedList import EmbeddedList
|
from _EmbeddedList import EmbeddedList
|
||||||
from Editors import EditNote
|
from Editors import EditNote
|
||||||
|
from DdTargets import DdTargets
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
@@ -64,6 +73,18 @@ class NoteTab(EmbeddedList):
|
|||||||
self.data = data
|
self.data = data
|
||||||
EmbeddedList.__init__(self, dbstate, uistate, track,
|
EmbeddedList.__init__(self, dbstate, uistate, track,
|
||||||
_("Notes"), NoteModel)
|
_("Notes"), NoteModel)
|
||||||
|
|
||||||
|
self.tree.drag_dest_set(gtk.DEST_DEFAULT_ALL,
|
||||||
|
[DdTargets.NOTE_LINK.target()],
|
||||||
|
gtk.gdk.ACTION_COPY)
|
||||||
|
self.tree.connect('drag_data_received', self.on_drag_data_received)
|
||||||
|
|
||||||
|
def on_drag_data_received(self, widget, context, x, y,
|
||||||
|
selection, info, time):
|
||||||
|
"""Insert the received note to the note list of current object.
|
||||||
|
"""
|
||||||
|
(drag_type, idval, obj, val) = pickle.loads(selection.data)
|
||||||
|
self.add_callback(obj)
|
||||||
|
|
||||||
def get_editor(self):
|
def get_editor(self):
|
||||||
pass
|
pass
|
||||||
|
@@ -281,6 +281,39 @@ class ScratchPadPlace(ScratchPadWrapper):
|
|||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
class ScratchPadNote(ScratchPadWrapper):
|
||||||
|
|
||||||
|
DROP_TARGETS = [DdTargets.NOTE_LINK]
|
||||||
|
DRAG_TARGET = DdTargets.NOTE_LINK
|
||||||
|
ICON = LINK_PIC
|
||||||
|
|
||||||
|
def __init__(self,dbstate,obj):
|
||||||
|
ScratchPadWrapper.__init__(self,dbstate,obj)
|
||||||
|
self._type = _("Note")
|
||||||
|
|
||||||
|
(drag_type, idval, handle, val) = pickle.loads(obj)
|
||||||
|
|
||||||
|
value = self._db.get_note_from_handle(handle)
|
||||||
|
|
||||||
|
self._title = value.get_gramps_id()
|
||||||
|
note = value.get().replace('\n', ' ')
|
||||||
|
if len(note) > 80:
|
||||||
|
self._value = note[:80]+"..."
|
||||||
|
else:
|
||||||
|
self._value = note
|
||||||
|
|
||||||
|
def tooltip(self):
|
||||||
|
global escape
|
||||||
|
return ""
|
||||||
|
|
||||||
|
def is_valid(self):
|
||||||
|
data = pickle.loads(self._obj)
|
||||||
|
handle = data[2]
|
||||||
|
obj = self._db.get_note_from_handle(handle)
|
||||||
|
if obj:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
class ScratchPadFamilyEvent(ScratchPadGrampsTypeWrapper):
|
class ScratchPadFamilyEvent(ScratchPadGrampsTypeWrapper):
|
||||||
|
|
||||||
DROP_TARGETS = [DdTargets.FAMILY_EVENT]
|
DROP_TARGETS = [DdTargets.FAMILY_EVENT]
|
||||||
@@ -958,6 +991,7 @@ class ScratchPadListView:
|
|||||||
self.register_wrapper_class(ScratchPersonLinkList)
|
self.register_wrapper_class(ScratchPersonLinkList)
|
||||||
self.register_wrapper_class(ScratchPadPersonRef)
|
self.register_wrapper_class(ScratchPadPersonRef)
|
||||||
self.register_wrapper_class(ScratchPadText)
|
self.register_wrapper_class(ScratchPadText)
|
||||||
|
self.register_wrapper_class(ScratchPadNote)
|
||||||
|
|
||||||
def register_wrapper_class(self,wrapper_class):
|
def register_wrapper_class(self,wrapper_class):
|
||||||
for drop_target in wrapper_class.DROP_TARGETS:
|
for drop_target in wrapper_class.DROP_TARGETS:
|
||||||
|
Reference in New Issue
Block a user