- Fixed cursor staying busy when adding images

- Added documentation to methods
- Fixed traceback when adding media files
This commit is contained in:
Arjan Schrijver 2013-03-14 11:36:59 +01:00
parent c420a6fc67
commit 441296d808
2 changed files with 77 additions and 4 deletions

View File

@ -359,7 +359,7 @@ class MediaManagerItem(QtGui.QWidget):
duplicates_found = True duplicates_found = True
else: else:
files_added = True files_added = True
full_list.append(file) full_list.append(filename)
if full_list and files_added: if full_list and files_added:
if target_group is None: if target_group is None:
self.listView.clear() self.listView.clear()

View File

@ -152,6 +152,9 @@ class ImageMediaItem(MediaManagerItem):
self.listView.addAction(self.replaceAction) self.listView.addAction(self.replaceAction)
def addCustomContextActions(self): def addCustomContextActions(self):
"""
Add custom actions to the context menu
"""
create_widget_action(self.listView, separator=True) create_widget_action(self.listView, separator=True)
create_widget_action(self.listView, create_widget_action(self.listView,
text=UiStrings().AddGroup, text=UiStrings().AddGroup,
@ -163,10 +166,16 @@ class ImageMediaItem(MediaManagerItem):
triggers=self.onFileClick) triggers=self.onFileClick)
def addStartHeaderBar(self): def addStartHeaderBar(self):
"""
Add custom buttons to the start of the toolbar
"""
self.addGroupAction = self.toolbar.add_toolbar_action(u'addGroupAction', self.addGroupAction = self.toolbar.add_toolbar_action(u'addGroupAction',
icon=u':/images/image_new_group.png', triggers=self.onAddGroupClick) icon=u':/images/image_new_group.png', triggers=self.onAddGroupClick)
def addEndHeaderBar(self): def addEndHeaderBar(self):
"""
Add custom buttons to the end of the toolbar
"""
self.replaceAction = self.toolbar.add_toolbar_action(u'replaceAction', self.replaceAction = self.toolbar.add_toolbar_action(u'replaceAction',
icon=u':/slides/slide_blank.png', triggers=self.onReplaceClick) icon=u':/slides/slide_blank.png', triggers=self.onReplaceClick)
self.resetAction = self.toolbar.add_toolbar_action(u'resetAction', self.resetAction = self.toolbar.add_toolbar_action(u'resetAction',
@ -175,6 +184,9 @@ class ImageMediaItem(MediaManagerItem):
def recursively_delete_group(self, image_group): def recursively_delete_group(self, image_group):
""" """
Recursively deletes a group and all groups and images in it Recursively deletes a group and all groups and images in it
``image_group``
The ImageGroups instance of the group that will be deleted
""" """
images = self.manager.get_all_objects(ImageFilenames, ImageFilenames.group_id == image_group.id) images = self.manager.get_all_objects(ImageFilenames, ImageFilenames.group_id == image_group.id)
for image in images: for image in images:
@ -229,6 +241,12 @@ class ImageMediaItem(MediaManagerItem):
def add_sub_groups(self, group_list, parent_group_id): def add_sub_groups(self, group_list, parent_group_id):
""" """
Recursively add subgroups to the given parent group in a QTreeWidget Recursively add subgroups to the given parent group in a QTreeWidget
``group_list``
The List object that contains all QTreeWidgetItems
``parent_group_id``
The ID of the group that will be added recursively
""" """
image_groups = self.manager.get_all_objects(ImageGroups, ImageGroups.parent_id == parent_group_id) image_groups = self.manager.get_all_objects(ImageGroups, ImageGroups.parent_id == parent_group_id)
image_groups.sort(cmp=locale_compare, key=lambda group_object: group_object.group_name) image_groups.sort(cmp=locale_compare, key=lambda group_object: group_object.group_name)
@ -248,6 +266,15 @@ class ImageMediaItem(MediaManagerItem):
def fill_groups_combobox(self, combobox, parent_group_id=0, prefix=''): def fill_groups_combobox(self, combobox, parent_group_id=0, prefix=''):
""" """
Recursively add groups to the combobox in the 'Add group' dialog Recursively add groups to the combobox in the 'Add group' dialog
``combobox``
The QComboBox to add the options to
``parent_group_id``
The ID of the group that will be added
``prefix``
A string containing the prefix that will be added in front of the groupname for each level of the tree
""" """
if parent_group_id is 0: if parent_group_id is 0:
combobox.clear() combobox.clear()
@ -259,6 +286,15 @@ class ImageMediaItem(MediaManagerItem):
self.fill_groups_combobox(combobox, image_group.id, prefix + ' ') self.fill_groups_combobox(combobox, image_group.id, prefix + ' ')
def expand_group(self, group_id, root_item=None): def expand_group(self, group_id, root_item=None):
"""
Expand groups in the widget recursively
``group_id``
The ID of the group that will be expanded
``root_item``
This option is only used for recursion purposes
"""
return_value = False return_value = False
if root_item is None: if root_item is None:
root_item = self.listView.invisibleRootItem() root_item = self.listView.invisibleRootItem()
@ -275,6 +311,15 @@ class ImageMediaItem(MediaManagerItem):
def loadFullList(self, images, initial_load=False, open_group=None): def loadFullList(self, images, initial_load=False, open_group=None):
""" """
Replace the list of images and groups in the interface. Replace the list of images and groups in the interface.
``images``
A List of ImageFilenames objects that will be used to reload the mediamanager list
``initial_load``
When set to False, the busy cursor and progressbar will be shown while loading images
``open_group``
ImageGroups object of the group that must be expanded after reloading the list in the interface
""" """
if not initial_load: if not initial_load:
self.application.set_busy_cursor() self.application.set_busy_cursor()
@ -316,11 +361,14 @@ class ImageMediaItem(MediaManagerItem):
def validateAndLoad(self, files, target_group=None): def validateAndLoad(self, files, target_group=None):
""" """
Process a list for files either from the File Dialog or from Drag and Process a list for files either from the File Dialog or from Drag and Drop.
Drop. This method is overloaded from MediaManagerItem. This method is overloaded from MediaManagerItem.
``files`` ``files``
The files to be loaded. A List of strings containing the filenames of the files to be loaded
``target_group``
The QTreeWidgetItem of the group that will be the parent of the added files
""" """
self.loadList(files, target_group) self.loadList(files, target_group)
last_dir = os.path.split(unicode(files[0]))[0] last_dir = os.path.split(unicode(files[0]))[0]
@ -329,6 +377,15 @@ class ImageMediaItem(MediaManagerItem):
def loadList(self, images, target_group=None, initial_load=False): def loadList(self, images, target_group=None, initial_load=False):
""" """
Add new images to the database. This method is called when adding images using the Add button or DnD. Add new images to the database. This method is called when adding images using the Add button or DnD.
``images``
A List of strings containing the filenames of the files to be loaded
``target_group``
The QTreeWidgetItem of the group that will be the parent of the added files
``initial_load``
When set to False, the busy cursor and progressbar will be shown while loading images
""" """
self.application.set_busy_cursor() self.application.set_busy_cursor()
self.main_window.displayProgressBar(len(images)) self.main_window.displayProgressBar(len(images))
@ -392,8 +449,21 @@ class ImageMediaItem(MediaManagerItem):
self.save_new_images_list(images, group_id=parent_group.id, reload_list=False) self.save_new_images_list(images, group_id=parent_group.id, reload_list=False)
self.loadFullList(self.manager.get_all_objects(ImageFilenames, order_by_ref=ImageFilenames.filename), self.loadFullList(self.manager.get_all_objects(ImageFilenames, order_by_ref=ImageFilenames.filename),
initial_load=initial_load, open_group=parent_group) initial_load=initial_load, open_group=parent_group)
self.application.set_normal_cursor()
def save_new_images_list(self, images_list, group_id=0, reload_list=True): def save_new_images_list(self, images_list, group_id=0, reload_list=True):
"""
Convert a list of image filenames to ImageFilenames objects and save them in the database.
``images_list``
A List of strings containing image filenames
``group_id``
The ID of the group to save the images in
``reload_list``
This boolean is set to True when the list in the interface should be reloaded after saving the new images
"""
for filename in images_list: for filename in images_list:
if type(filename) is not str and type(filename) is not unicode: if type(filename) is not str and type(filename) is not unicode:
continue continue
@ -409,6 +479,9 @@ class ImageMediaItem(MediaManagerItem):
def dnd_move_internal(self, target): def dnd_move_internal(self, target):
""" """
Handle drag-and-drop moving of images within the media manager Handle drag-and-drop moving of images within the media manager
``target``
This contains the QTreeWidget that is the target of the DnD action
""" """
items_to_move = self.listView.selectedItems() items_to_move = self.listView.selectedItems()
# Determine group to move images to # Determine group to move images to