Пример #1
0
class RenameWindow(QtGui.QDialog):
    def __init__(self, parent, comic_archive_list, data_style, settings):
        super(RenameWindow, self).__init__(parent)

        uic.loadUi(ComicTaggerSettings.getUIFile('renamewindow.ui'), self)
        self.label.setText("Preview (based on {0} tags):".format(
            MetaDataStyle.name[data_style]))

        self.setWindowFlags(self.windowFlags() | QtCore.Qt.WindowSystemMenuHint
                            | QtCore.Qt.WindowMaximizeButtonHint)

        self.settings = settings
        self.comic_archive_list = comic_archive_list
        self.data_style = data_style

        self.btnSettings.clicked.connect(self.modifySettings)
        self.configRenamer()
        self.doPreview()

    def configRenamer(self):
        self.renamer = FileRenamer(None)
        self.renamer.setTemplate(self.settings.rename_template)
        self.renamer.setIssueZeroPadding(
            self.settings.rename_issue_number_padding)
        self.renamer.setSmartCleanup(
            self.settings.rename_use_smart_string_cleanup)

    def doPreview(self):
        self.rename_list = []
        while self.twList.rowCount() > 0:
            self.twList.removeRow(0)

        self.twList.setSortingEnabled(False)

        for ca in self.comic_archive_list:

            new_ext = None  # default
            if self.settings.rename_extension_based_on_archive:
                if ca.isZip():
                    new_ext = ".cbz"
                elif ca.isRar():
                    new_ext = ".cbr"

            md = ca.readMetadata(self.data_style)
            if md.isEmpty:
                md = ca.metadataFromFilename(self.settings.parse_scan_info)
            self.renamer.setMetadata(md)
            new_name = self.renamer.determineName(ca.path, ext=new_ext)

            row = self.twList.rowCount()
            self.twList.insertRow(row)
            folder_item = QtGui.QTableWidgetItem()
            old_name_item = QtGui.QTableWidgetItem()
            new_name_item = QtGui.QTableWidgetItem()

            item_text = os.path.split(ca.path)[0]
            folder_item.setFlags(QtCore.Qt.ItemIsSelectable
                                 | QtCore.Qt.ItemIsEnabled)
            self.twList.setItem(row, 0, folder_item)
            folder_item.setText(item_text)
            folder_item.setData(QtCore.Qt.ToolTipRole, item_text)

            item_text = os.path.split(ca.path)[1]
            old_name_item.setFlags(QtCore.Qt.ItemIsSelectable
                                   | QtCore.Qt.ItemIsEnabled)
            self.twList.setItem(row, 1, old_name_item)
            old_name_item.setText(item_text)
            old_name_item.setData(QtCore.Qt.ToolTipRole, item_text)

            new_name_item.setFlags(QtCore.Qt.ItemIsSelectable
                                   | QtCore.Qt.ItemIsEnabled)
            self.twList.setItem(row, 2, new_name_item)
            new_name_item.setText(new_name)
            new_name_item.setData(QtCore.Qt.ToolTipRole, new_name)

            dict_item = dict()
            dict_item['archive'] = ca
            dict_item['new_name'] = new_name
            self.rename_list.append(dict_item)

        # Adjust column sizes
        self.twList.setVisible(False)
        self.twList.resizeColumnsToContents()
        self.twList.setVisible(True)
        if self.twList.columnWidth(0) > 200:
            self.twList.setColumnWidth(0, 200)

        self.twList.setSortingEnabled(True)

    def modifySettings(self):
        settingswin = SettingsWindow(self, self.settings)
        settingswin.setModal(True)
        settingswin.showRenameTab()
        settingswin.exec_()
        if settingswin.result():
            self.configRenamer()
            self.doPreview()

    def accept(self):

        progdialog = QtGui.QProgressDialog("", "Cancel", 0,
                                           len(self.rename_list), self)
        progdialog.setWindowTitle("Renaming Archives")
        progdialog.setWindowModality(QtCore.Qt.WindowModal)
        progdialog.show()

        for idx, item in enumerate(self.rename_list):

            QtCore.QCoreApplication.processEvents()
            if progdialog.wasCanceled():
                break
            progdialog.setValue(idx)
            idx += 1
            progdialog.setLabelText(item['new_name'])

            if item['new_name'] == os.path.basename(item['archive'].path):
                print item['new_name'], "Filename is already good!"
                continue

            if not item['archive'].isWritable(check_rar_status=False):
                continue

            folder = os.path.dirname(os.path.abspath(item['archive'].path))
            new_abs_path = utils.unique_file(
                os.path.join(folder, item['new_name']))

            os.rename(item['archive'].path, new_abs_path)

            item['archive'].rename(new_abs_path)

        progdialog.close()

        QtGui.QDialog.accept(self)
Пример #2
0
class RenameWindow(QtGui.QDialog):
		
	def __init__( self, parent, comic_archive_list, data_style, settings ):
		super(RenameWindow, self).__init__(parent)
		
		uic.loadUi(ComicTaggerSettings.getUIFile('renamewindow.ui' ), self)
		self.label.setText("Preview (based on {0} tags):".format(MetaDataStyle.name[data_style]))

		self.setWindowFlags(self.windowFlags() |
									  QtCore.Qt.WindowSystemMenuHint |
									  QtCore.Qt.WindowMaximizeButtonHint)

		self.settings = settings
		self.comic_archive_list = comic_archive_list
		self.data_style = data_style
		
		self.btnSettings.clicked.connect( self.modifySettings )
		self.configRenamer()
		self.doPreview()

	def configRenamer( self ):
		self.renamer = FileRenamer( None )
		self.renamer.setTemplate( self.settings.rename_template )
		self.renamer.setIssueZeroPadding( self.settings.rename_issue_number_padding )
		self.renamer.setSmartCleanup( self.settings.rename_use_smart_string_cleanup )		
		
	def doPreview( self ):
		self.rename_list = []
		while self.twList.rowCount() > 0:
			self.twList.removeRow(0)

		self.twList.setSortingEnabled(False)
			
		for ca in self.comic_archive_list:

			new_ext = None  # default
			if self.settings.rename_extension_based_on_archive:
				if ca.isZip():
					new_ext = ".cbz"
				elif ca.isRar():
					new_ext = ".cbr"			

			md = ca.readMetadata(self.data_style)
			if md.isEmpty:
				md = ca.metadataFromFilename()
			self.renamer.setMetadata( md )
			new_name = self.renamer.determineName( ca.path, ext=new_ext )		

			row = self.twList.rowCount()
			self.twList.insertRow( row )
			folder_item =   QtGui.QTableWidgetItem()
			old_name_item = QtGui.QTableWidgetItem()
			new_name_item = QtGui.QTableWidgetItem()
			
			item_text = os.path.split(ca.path)[0]
			folder_item.setFlags(QtCore.Qt.ItemIsSelectable| QtCore.Qt.ItemIsEnabled)
			self.twList.setItem(row, 0, folder_item)
			folder_item.setText( item_text )
			folder_item.setData( QtCore.Qt.ToolTipRole, item_text )
					
			item_text = os.path.split(ca.path)[1]
			old_name_item.setFlags(QtCore.Qt.ItemIsSelectable| QtCore.Qt.ItemIsEnabled)
			self.twList.setItem(row, 1, old_name_item)
			old_name_item.setText( item_text )
			old_name_item.setData( QtCore.Qt.ToolTipRole, item_text )

			new_name_item.setFlags(QtCore.Qt.ItemIsSelectable| QtCore.Qt.ItemIsEnabled)
			self.twList.setItem(row, 2, new_name_item)
			new_name_item.setText( new_name )
			new_name_item.setData( QtCore.Qt.ToolTipRole, new_name )
			
			dict_item = dict()
			dict_item['archive'] = ca
			dict_item['new_name'] = new_name
			self.rename_list.append( dict_item)

		# Adjust column sizes
		self.twList.setVisible( False )
		self.twList.resizeColumnsToContents()
		self.twList.setVisible( True )
		if self.twList.columnWidth(0) > 200:
			self.twList.setColumnWidth(0, 200)
			
		self.twList.setSortingEnabled(True)
		
	def modifySettings( self ):
		settingswin = SettingsWindow( self, self.settings )
		settingswin.setModal(True)
		settingswin.showRenameTab()
		settingswin.exec_()
		if settingswin.result():
			self.configRenamer()
			self.doPreview()
				
	def accept( self ):

		progdialog = QtGui.QProgressDialog("", "Cancel", 0, len(self.rename_list), self)
		progdialog.setWindowTitle( "Renaming Archives" )
		progdialog.setWindowModality(QtCore.Qt.WindowModal)
		progdialog.show()

		for idx,item in enumerate(self.rename_list):

			QtCore.QCoreApplication.processEvents()
			if progdialog.wasCanceled():
				break
			progdialog.setValue(idx)
			idx += 1
			progdialog.setLabelText( item['new_name'] )
			
			if item['new_name'] == os.path.basename( item['archive'].path ):
				print item['new_name'] , "Filename is already good!"
				continue
			
			if not item['archive'].isWritable(check_rar_status=False):
				continue
			
			folder = os.path.dirname( os.path.abspath( item['archive'].path ) )
			new_abs_path = utils.unique_file( os.path.join( folder, item['new_name'] ) )
	
			os.rename( item['archive'].path, new_abs_path)
	
			item['archive'].rename( new_abs_path )
			
		progdialog.close()		

		QtGui.QDialog.accept(self)