Add bookmark-list-changed signal

This commit is contained in:
Christopher Horn 2022-09-05 16:27:39 -04:00 committed by Nick Hall
parent 7b5c381b8f
commit caa2560b11
3 changed files with 81 additions and 94 deletions

View File

@ -20,35 +20,86 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# #
#------------------------------------------------------------------------- """
# DbBookmarks Class
# class DbBookmarks """
#
#-------------------------------------------------------------------------
class DbBookmarks:
def __init__(self, default=[]):
self.bookmarks = list(default) # want a copy (not an alias)
def set(self, new_list): from ..utils.callback import Callback
# -------------------------------------------------------------------------
#
# DbBookmarks class
#
# -------------------------------------------------------------------------
class DbBookmarks(Callback):
"""
Simple class for tracking a list of bookmarked objects
"""
__signals__ = {"bookmark-list-changed": None}
def __init__(self, default=None):
super().__init__()
self.bookmarks = default or []
def load(self, new_list):
"""
Quietly load the bookmark list.
"""
self.bookmarks = list(new_list) self.bookmarks = list(new_list)
def set(self, new_list):
"""
Set the bookmark list.
"""
self.bookmarks = list(new_list)
self.emit("bookmark-list-changed")
def get(self): def get(self):
"""
Return the bookmark list.
"""
return self.bookmarks return self.bookmarks
def append(self, item): def append(self, item):
"""
Append an item to the end of the list.
"""
self.bookmarks.append(item) self.bookmarks.append(item)
self.emit("bookmark-list-changed")
def append_list(self, blist): def append_list(self, blist):
"""
Append a list of items to the end of the list.
"""
self.bookmarks += blist self.bookmarks += blist
self.emit("bookmark-list-changed")
def remove(self, item): def remove(self, item):
"""
Remove an item from the list.
"""
self.bookmarks.remove(item) self.bookmarks.remove(item)
self.emit("bookmark-list-changed")
def pop(self, item): def pop(self, index):
return self.bookmarks.pop(item) """
Pop an item from the list.
"""
item = self.bookmarks.pop(index)
self.emit("bookmark-list-changed")
return item
def insert(self, pos, item): def insert(self, pos, item):
"""
Insert a new item into the list.
"""
self.bookmarks.insert(pos, item) self.bookmarks.insert(pos, item)
self.emit("bookmark-list-changed")
def close(self): def close(self):
"""
Close the list by deleting it.
"""
del self.bookmarks del self.bookmarks

View File

@ -63,6 +63,7 @@ from functools import wraps
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
from .base import DbReadBase from .base import DbReadBase
from .bookmarks import DbBookmarks
from .dbconst import DBLOGNAME from .dbconst import DBLOGNAME
from ..errors import HandleError from ..errors import HandleError
from ..utils.callback import Callback from ..utils.callback import Callback
@ -72,71 +73,6 @@ from ..const import GRAMPS_LOCALE as glocale
LOG = logging.getLogger(DBLOGNAME) LOG = logging.getLogger(DBLOGNAME)
#-------------------------------------------------------------------------
#
# class DbBookmarks
#
#-------------------------------------------------------------------------
class Bookmarks:
"""
Dummy Bookmarks class. This needs to be defined here, because get is used to
return the bookmark.
"""
def __init__(self, default=[]):
"""
Initialise the bookmark, either with a copy of the passed list, or with
an empty list.
"""
self.bookmarks = list(default) # want a copy (not an alias)
def set(self, new_list):
"""
Set the bookmark to a new list
"""
self.bookmarks = list(new_list)
def get(self):
"""
Get the current bookmark list
"""
return self.bookmarks
def append(self, item):
"""
Append a bookmark to the list
"""
self.bookmarks.append(item)
def append_list(self, blist):
"""
Append a list of bookmarks to the bookmark
"""
self.bookmarks += blist
def remove(self, item):
"""
Remove an item from the bookmark
"""
self.bookmarks.remove(item)
def pop(self, item):
"""
Pop an item off the bookmark list, returning the popped item
"""
return self.bookmarks.pop(item)
def insert(self, pos, item):
"""
Insert an item at a specified place in thebookmark list
"""
self.bookmarks.insert(pos, item)
def close(self):
"""
Close the bookmark, deleting the data.
"""
del self.bookmarks
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
# some magic, see http://stackoverflow.com/questions/11349183/how-to-wrap-every- # some magic, see http://stackoverflow.com/questions/11349183/how-to-wrap-every-
@ -224,15 +160,15 @@ class DummyDb(M_A_M_B("NewBaseClass", (DbReadBase, Callback, object,), {})):
self.db_is_open = False self.db_is_open = False
self.readonly = True self.readonly = True
self.name_formats = [] self.name_formats = []
self.bookmarks = Bookmarks() self.bookmarks = DbBookmarks()
self.family_bookmarks = Bookmarks() self.family_bookmarks = DbBookmarks()
self.event_bookmarks = Bookmarks() self.event_bookmarks = DbBookmarks()
self.place_bookmarks = Bookmarks() self.place_bookmarks = DbBookmarks()
self.citation_bookmarks = Bookmarks() self.citation_bookmarks = DbBookmarks()
self.source_bookmarks = Bookmarks() self.source_bookmarks = DbBookmarks()
self.repo_bookmarks = Bookmarks() self.repo_bookmarks = DbBookmarks()
self.media_bookmarks = Bookmarks() self.media_bookmarks = DbBookmarks()
self.note_bookmarks = Bookmarks() self.note_bookmarks = DbBookmarks()
self.owner = Researcher() self.owner = Researcher()
def get_feature(self, feature): def get_feature(self, feature):

View File

@ -592,15 +592,15 @@ class DbGeneric(DbWriteBase, DbReadBase, UpdateCallback, Callback):
self.owner = self._get_metadata('researcher', default=Researcher()) self.owner = self._get_metadata('researcher', default=Researcher())
# Load bookmarks # Load bookmarks
self.bookmarks.set(self._get_metadata('bookmarks')) self.bookmarks.load(self._get_metadata('bookmarks'))
self.family_bookmarks.set(self._get_metadata('family_bookmarks')) self.family_bookmarks.load(self._get_metadata('family_bookmarks'))
self.event_bookmarks.set(self._get_metadata('event_bookmarks')) self.event_bookmarks.load(self._get_metadata('event_bookmarks'))
self.source_bookmarks.set(self._get_metadata('source_bookmarks')) self.source_bookmarks.load(self._get_metadata('source_bookmarks'))
self.citation_bookmarks.set(self._get_metadata('citation_bookmarks')) self.citation_bookmarks.load(self._get_metadata('citation_bookmarks'))
self.repo_bookmarks.set(self._get_metadata('repo_bookmarks')) self.repo_bookmarks.load(self._get_metadata('repo_bookmarks'))
self.media_bookmarks.set(self._get_metadata('media_bookmarks')) self.media_bookmarks.load(self._get_metadata('media_bookmarks'))
self.place_bookmarks.set(self._get_metadata('place_bookmarks')) self.place_bookmarks.load(self._get_metadata('place_bookmarks'))
self.note_bookmarks.set(self._get_metadata('note_bookmarks')) self.note_bookmarks.load(self._get_metadata('note_bookmarks'))
# Custom type values # Custom type values
self.event_names = self._get_metadata('event_names', set()) self.event_names = self._get_metadata('event_names', set())