コード例 #1
0
ファイル: __init__.py プロジェクト: mklauber/Curator
    def handle_T_key(self):
        # Get the File objects corresponding to the selected thumbnails
        files = File.select().where(
            File.md5 << [item.Text for item in self.get_selected_thumbs()])

        # Determine the existing tags for these files.
        old_tags = Metadata.filter(Metadata.file << files,
                                   Metadata.field.not_in(['import-time']))
        old_tags = sorted(
            list(set(['%s:"%s"' % (t.field, t.value) for t in old_tags])))

        dialog = wx.TextEntryDialog(None,
                                    "Tags:",
                                    "Modifiy Tags",
                                    value=", ".join(old_tags))
        if dialog.ShowModal() == wx.ID_OK:

            # Determine the new tags for these files.
            new_tags = dialog.GetValue()
            new_tags = [t.strip() for t in new_tags.split(",")]

            # Add any new tags that have been added.
            for token in set(new_tags) - set(old_tags):
                # Determine the actual field and tags
                if ':' in token:
                    field, value = token.split(':', 1)
                else:
                    field, value = 'tag', token
                value = value.strip('"')
                # Create records for all selected files.
                for file in files:
                    try:
                        Metadata(file=file, field=field, value=value).save()
                    except IntegrityError:
                        pass

            # Remove any tags that were removed.
            removed_tags = list(set(old_tags) - set(new_tags))
            # Add any new tags that have been added.
            for token in set(old_tags) - set(new_tags):
                # Determine the actual field and tags
                if ':' in token:
                    field, value = token.split(':', 1)
                else:
                    field, value = 'tag', token
                # Create records for all selected files.
                value = value.strip('"')
                Metadata.delete().where(Metadata.file << files,
                                        Metadata.field == field,
                                        Metadata.value == value).execute()
        # Repaint the tag list.
        self.update_tags()
コード例 #2
0
ファイル: __init__.py プロジェクト: mklauber/Curator
    def handle_T_key(self):
                # Get the File objects corresponding to the selected thumbnails
        files = File.select().where(File.md5 << [item.Text for item in self.get_selected_thumbs()])

        # Determine the existing tags for these files.
        old_tags = Metadata.filter(Metadata.file << files, Metadata.field.not_in(['import-time']))
        old_tags = sorted(list(set(['%s:"%s"' % (t.field, t.value) for t in old_tags])))

        dialog = wx.TextEntryDialog(None, "Tags:", "Modifiy Tags", value=", ".join(old_tags))
        if dialog.ShowModal() == wx.ID_OK:

            # Determine the new tags for these files.
            new_tags = dialog.GetValue()
            new_tags = [t.strip() for t in new_tags.split(",")]

            # Add any new tags that have been added.
            for token in set(new_tags) - set(old_tags):
                # Determine the actual field and tags
                if ':' in token:
                    field, value = token.split(':', 1)
                else:
                    field, value = 'tag', token
                value = value.strip('"')
                # Create records for all selected files.
                for file in files:
                    try:
                        Metadata(file=file, field=field, value=value).save()
                    except IntegrityError:
                        pass

            # Remove any tags that were removed.
            removed_tags = list(set(old_tags) - set(new_tags))
            # Add any new tags that have been added.
            for token in set(old_tags) - set(new_tags):
                # Determine the actual field and tags
                if ':' in token:
                    field, value = token.split(':', 1)
                else:
                    field, value = 'tag', token
                # Create records for all selected files.
                value = value.strip('"')
                Metadata.delete().where(Metadata.file << files,
                                        Metadata.field == field,
                                        Metadata.value == value).execute()
        # Repaint the tag list.
        self.update_tags()