def handle(self):
        def refresh(percent, row):
            self._emitHandlerSignal(
                HandlerSignals.STATUS_BAR_MESSAGE,
                self.tr("Rebuilding thumbnails ({0}%)").format(percent))
            self._emitHandlerSignal(HandlerSignals.RESET_SINGLE_ROW, row)
            QtCore.QCoreApplication.processEvents()

        try:
            self._tool.checkActiveRepoIsNotNone()
            self._tool.checkActiveUserIsNotNone()

            rows = self._tool.gui.selectedRows()
            if len(rows) == 0:
                raise errors.MsgException(
                    self.tr("There are no selected items."))

            uow = self._tool.repo.createUnitOfWork()
            try:
                items = []
                for row in rows:
                    item = self._tool.gui.itemAtRow(row)
                    item.table_row = row
                    items.append(item)

                thread = threads.ThumbnailBuilderThread(self._tool.gui,
                                                        self._tool.repo,
                                                        items,
                                                        self._tool.itemsLock,
                                                        rebuild=True)

                self.connect(
                    thread, QtCore.SIGNAL("exception"), lambda exc_info:
                    show_exc_info(self._tool.gui,
                                  exc_info[1],
                                  details=format_exc_info(*exc_info)))
                self.connect(thread, QtCore.SIGNAL("progress"),
                             lambda percents, row: refresh(percents, row))
                self.connect(
                    thread, QtCore.SIGNAL("finished"),
                    lambda: self._emitHandlerSignal(
                        HandlerSignals.STATUS_BAR_MESSAGE,
                        self.tr("Rebuild thumbnails is done.")))
                thread.start()

            finally:
                uow.close()

            stats.sendEvent("items_table.rebuild_item_thumbnail")

        except Exception as ex:
            show_exc_info(self._tool.gui, ex)
    def handle(self):
        def refresh(percent, row):
            self._emitHandlerSignal(
                HandlerSignals.STATUS_BAR_MESSAGE,
                self.tr("Integrity fix {0}%").format(percent))
            self._emitHandlerSignal(HandlerSignals.RESET_SINGLE_ROW, row)
            QtCore.QCoreApplication.processEvents()

        try:
            self._tool.checkActiveRepoIsNotNone()
            self._tool.checkActiveUserIsNotNone()

            rows = self._tool.gui.selectedRows()
            if len(rows) == 0:
                raise errors.MsgException(
                    self.tr("There are no selected items."))

            items = []
            for row in rows:
                item = self._tool.gui.itemAtRow(row)
                item.table_row = row
                items.append(item)

            thread = threads.ItemIntegrityFixerThread(self._tool.gui,
                                                      self._tool.repo, items,
                                                      self._tool.itemsLock,
                                                      self.__strategy,
                                                      self._tool.user.login)

            self.connect(thread, QtCore.SIGNAL("progress"),
                         lambda percents, row: refresh(percents, row))
            self.connect(
                thread, QtCore.SIGNAL("finished"),
                lambda: self._emitHandlerSignal(
                    HandlerSignals.STATUS_BAR_MESSAGE,
                    self.tr("Integrity fixing is done.")))
            self.connect(
                thread, QtCore.SIGNAL("exception"), lambda exc_info:
                show_exc_info(self._tool.gui,
                              exc_info[1],
                              details=format_exc_info(*exc_info)))
            thread.start()

            stats.sendEvent("items_table.fix_item_integrity_error")

        except Exception as ex:
            show_exc_info(self._tool.gui, ex)
    def handle(self):

        def refresh(percent, row):
            self._emitHandlerSignal(HandlerSignals.STATUS_BAR_MESSAGE,
                self.tr("Rebuilding thumbnails ({0}%)").format(percent))
            self._emitHandlerSignal(HandlerSignals.RESET_SINGLE_ROW, row)
            QtCore.QCoreApplication.processEvents()

        try:
            self._tool.checkActiveRepoIsNotNone()
            self._tool.checkActiveUserIsNotNone()

            rows = self._tool.gui.selectedRows()
            if len(rows) == 0:
                raise errors.MsgException(self.tr("There are no selected items."))


            uow = self._tool.repo.createUnitOfWork()
            try:
                items = []
                for row in rows:
                    item = self._tool.gui.itemAtRow(row)
                    item.table_row = row
                    items.append(item)

                thread = threads.ThumbnailBuilderThread(
                    self._tool.gui, self._tool.repo, items, self._tool.itemsLock,
                    rebuild=True)

                self.connect(thread, QtCore.SIGNAL("exception"),
                    lambda exc_info: show_exc_info(
                        self._tool.gui, exc_info[1], details=format_exc_info(*exc_info)))
                self.connect(thread, QtCore.SIGNAL("progress"),
                    lambda percents, row: refresh(percents, row))
                self.connect(thread, QtCore.SIGNAL("finished"),
                    lambda: self._emitHandlerSignal(HandlerSignals.STATUS_BAR_MESSAGE,
                        self.tr("Rebuild thumbnails is done.")))
                thread.start()

            finally:
                uow.close()

            stats.sendEvent("items_table.rebuild_item_thumbnail")

        except Exception as ex:
            show_exc_info(self._tool.gui, ex)
    def handle(self):

        def refresh(percent, row):
            self._emitHandlerSignal(HandlerSignals.STATUS_BAR_MESSAGE,
                self.tr("Integrity fix {0}%").format(percent))
            self._emitHandlerSignal(HandlerSignals.RESET_SINGLE_ROW, row)
            QtCore.QCoreApplication.processEvents()

        try:
            self._tool.checkActiveRepoIsNotNone()
            self._tool.checkActiveUserIsNotNone()

            rows = self._tool.gui.selectedRows()
            if len(rows) == 0:
                raise errors.MsgException(self.tr("There are no selected items."))

            items = []
            for row in rows:
                item = self._tool.gui.itemAtRow(row)
                item.table_row = row
                items.append(item)

            thread = threads.ItemIntegrityFixerThread(
                self._tool.gui, self._tool.repo, items, self._tool.itemsLock, self.__strategy, self._tool.user.login)

            self.connect(thread, QtCore.SIGNAL("progress"),
                         lambda percents, row: refresh(percents, row))
            self.connect(thread, QtCore.SIGNAL("finished"),
                         lambda: self._emitHandlerSignal(HandlerSignals.STATUS_BAR_MESSAGE,
                                                         self.tr("Integrity fixing is done.")))
            self.connect(thread, QtCore.SIGNAL("exception"),
                         lambda exc_info: show_exc_info(self._tool.gui, exc_info[1],
                                                        details=format_exc_info(*exc_info)))
            thread.start()

            stats.sendEvent("items_table.fix_item_integrity_error")

        except Exception as ex:
            show_exc_info(self._tool.gui, ex)