diff --git a/comictaggerlib/fileselectionlist.py b/comictaggerlib/fileselectionlist.py index fe9b13d..5c35aaf 100644 --- a/comictaggerlib/fileselectionlist.py +++ b/comictaggerlib/fileselectionlist.py @@ -31,7 +31,10 @@ from settings import ComicTaggerSettings from comicarchive import ComicArchive from comicarchive import MetaDataStyle from genericmetadata import GenericMetadata, PageType +from optionalmsgdialog import OptionalMessageDialog import utils +import platform +import os class FileTableWidget( QTableWidget ): @@ -172,7 +175,6 @@ class FileSelectionList(QWidget): def addPathList( self, pathlist ): filelist = utils.get_recursive_filelist( pathlist ) - # we now have a list of files to add progdialog = QProgressDialog("", "Cancel", 0, len(filelist), self) @@ -196,6 +198,21 @@ class FileSelectionList(QWidget): firstAdded = row progdialog.close() + if self.settings.show_no_unrar_warning and self.settings.unrar_exe_path == "" and platform.system() != "Windows": + for f in filelist: + ext = os.path.splitext(f)[1].lower() + if ext == ".rar" or ext ==".cbr": + checked = OptionalMessageDialog.msg( self, "No unrar tool", + """ + It looks like you've tried to load at least one CBR or RAR file.

+ In order for ComicTagger to read this kind of file, you will have to configure + the location of the unrar tool in the settings. Until then, ComicTagger + will not be able recognize these kind of files. + """ + ) + self.settings.show_no_unrar_warning = not checked + break + if firstAdded is not None: self.twList.selectRow(firstAdded) else: @@ -226,7 +243,17 @@ class FileSelectionList(QWidget): return True r = r + 1 - return False + return False + + def getCurrentListRow( self, path ): + r = 0 + while r < self.twList.rowCount(): + ca = self.getArchiveByRow( r ) + if ca.path == path: + return r + r = r + 1 + + return -1 def addPathItem( self, path): path = unicode( path ) @@ -234,7 +261,7 @@ class FileSelectionList(QWidget): #print "processing", path if self.isListDupe(path): - return None + return self.getCurrentListRow(path) ca = ComicArchive( path, self.settings.rar_exe_path ) diff --git a/comictaggerlib/settings.py b/comictaggerlib/settings.py index aebb934..590ebff 100644 --- a/comictaggerlib/settings.py +++ b/comictaggerlib/settings.py @@ -98,6 +98,7 @@ class ComicTaggerSettings: self.show_disclaimer = True self.dont_notify_about_this_version = "" self.ask_about_usage_stats = True + self.show_no_unrar_warning = True #filename parsing settings self.parse_scan_info = True @@ -242,6 +243,8 @@ class ComicTaggerSettings: self.dont_notify_about_this_version = self.config.get( 'dialogflags', 'dont_notify_about_this_version' ) if self.config.has_option('dialogflags', 'ask_about_usage_stats'): self.ask_about_usage_stats = self.config.getboolean( 'dialogflags', 'ask_about_usage_stats' ) + if self.config.has_option('dialogflags', 'show_no_unrar_warning'): + self.show_no_unrar_warning = self.config.getboolean( 'dialogflags', 'show_no_unrar_warning' ) if self.config.has_option('comicvine', 'use_series_start_as_volume'): self.use_series_start_as_volume = self.config.getboolean( 'comicvine', 'use_series_start_as_volume' ) @@ -329,6 +332,7 @@ class ComicTaggerSettings: self.config.set( 'dialogflags', 'show_disclaimer', self.show_disclaimer ) self.config.set( 'dialogflags', 'dont_notify_about_this_version', self.dont_notify_about_this_version ) self.config.set( 'dialogflags', 'ask_about_usage_stats', self.ask_about_usage_stats ) + self.config.set( 'dialogflags', 'show_no_unrar_warning', self.show_no_unrar_warning ) if not self.config.has_section( 'filenameparser' ): self.config.add_section( 'filenameparser' )