2092: Problems when no database is open. Partial fix. Fix tags menu when

there is no database and stop accessing database for tags filter
dropdown when there is no database.
This commit is contained in:
kulath 2016-06-29 16:22:13 +01:00
parent 721cfa1a1c
commit 2886583689
2 changed files with 18 additions and 14 deletions

View File

@ -209,12 +209,13 @@ class SidebarFilter(DbGUIElement):
Called when the tag list needs to be rebuilt. Called when the tag list needs to be rebuilt.
""" """
self.__tag_list = [] self.__tag_list = []
for handle in self.dbstate.db.get_tag_handles(sort_handles=True): if self.dbstate.db is not None and self.dbstate.db.is_open():
tag = self.dbstate.db.get_tag_from_handle(handle) for handle in self.dbstate.db.get_tag_handles(sort_handles=True):
# for python3 this returns a byte object, so conversion needed tag = self.dbstate.db.get_tag_from_handle(handle)
if not isinstance(handle, str): # for python3 this returns a byte object, so conversion needed
handle = handle.decode('utf-8') if not isinstance(handle, str):
self.__tag_list.append((tag.get_name(), handle)) handle = handle.decode('utf-8')
self.__tag_list.append((tag.get_name(), handle))
self.on_tags_changed([item[0] for item in self.__tag_list]) self.on_tags_changed([item[0] for item in self.__tag_list])
def on_tags_changed(self, tag_list): def on_tags_changed(self, tag_list):

View File

@ -113,6 +113,7 @@ class Tags(DbGUIElement):
self.__tag_list = [] self.__tag_list = []
dbstate.connect('database-changed', self._db_changed) dbstate.connect('database-changed', self._db_changed)
dbstate.connect('no-database', self.tag_disable)
self._build_tag_menu() self._build_tag_menu()
@ -128,10 +129,11 @@ class Tags(DbGUIElement):
""" """
Remove the UI and action groups for the tag menu. Remove the UI and action groups for the tag menu.
""" """
self.uistate.uimanager.remove_ui(self.tag_id) if self.tag_id is not None:
self.uistate.uimanager.remove_action_group(self.tag_action) self.uistate.uimanager.remove_ui(self.tag_id)
self.uistate.uimanager.ensure_update() self.uistate.uimanager.remove_action_group(self.tag_action)
self.tag_id = None self.uistate.uimanager.ensure_update()
self.tag_id = None
def _db_changed(self, db): def _db_changed(self, db):
""" """
@ -181,9 +183,10 @@ class Tags(DbGUIElement):
Called when the tag list needs to be rebuilt. Called when the tag list needs to be rebuilt.
""" """
self.__tag_list = [] self.__tag_list = []
for handle in self.db.get_tag_handles(sort_handles=True): if self.db is not None and self.db.is_open():
tag = self.db.get_tag_from_handle(handle) for handle in self.db.get_tag_handles(sort_handles=True):
self.__tag_list.append((tag.get_name(), tag.get_handle())) tag = self.db.get_tag_from_handle(handle)
self.__tag_list.append((tag.get_name(), tag.get_handle()))
self.update_tag_menu() self.update_tag_menu()
def update_tag_menu(self): def update_tag_menu(self):
@ -203,7 +206,7 @@ class Tags(DbGUIElement):
""" """
actions = [] actions = []
if self.db is None: if self.db is None or not self.db.is_open():
self.tag_ui = '' self.tag_ui = ''
self.tag_action = ActionGroup(name='Tag') self.tag_action = ActionGroup(name='Tag')
return return