diff --git a/fileselectionlist.py b/fileselectionlist.py
index af80e74..b588b72 100644
--- a/fileselectionlist.py
+++ b/fileselectionlist.py
@@ -58,6 +58,7 @@ class FileInfo( ):
class FileSelectionList(QWidget):
selectionChanged = pyqtSignal(QVariant)
+ listCleared = pyqtSignal()
def __init__(self, parent , settings ):
super(FileSelectionList, self).__init__(parent)
@@ -71,7 +72,47 @@ class FileSelectionList(QWidget):
self.setAcceptDrops(True)
self.twList.itemSelectionChanged.connect( self.itemSelectionChangedCB )
+
+ self.setContextMenuPolicy(Qt.ActionsContextMenu)
+
+ selectAllAction = QAction("Select All", self)
+ invertSelectionAction = QAction("Invert Selection", self)
+ removeAction = QAction("Remove Selected Items", self)
+
+ selectAllAction.triggered.connect(self.selectAll)
+ removeAction.triggered.connect(self.removeSelection)
+ self.addAction(selectAllAction)
+ self.addAction(removeAction)
+
+ def selectAll( self ):
+ self.twList.setRangeSelected( QTableWidgetSelectionRange ( 0, 0, self.twList.rowCount()-1, 1 ), True )
+
+ def removeSelection( self ):
+ row_list = []
+ for item in self.twList.selectedItems():
+ if item.column() == 0:
+ row_list.append(item.row())
+
+ if len(row_list) == 0:
+ return
+
+ row_list.sort()
+ row_list.reverse()
+
+ self.twList.itemSelectionChanged.disconnect( self.itemSelectionChangedCB )
+
+ for i in row_list:
+ self.twList.removeRow(i)
+
+ self.twList.itemSelectionChanged.connect( self.itemSelectionChangedCB )
+
+ if self.twList.rowCount() > 0:
+ self.twList.selectRow(0)
+ else:
+ self.listCleared.emit()
+
+
def dragEnterEvent(self, event):
self.droppedFiles = None
if event.mimeData().hasUrls():
diff --git a/fileselectionlist.ui b/fileselectionlist.ui
index 8bba869..2c3895e 100644
--- a/fileselectionlist.ui
+++ b/fileselectionlist.ui
@@ -19,6 +19,9 @@
true
+
+ QAbstractItemView::ExtendedSelection
+
QAbstractItemView::SelectRows
diff --git a/pagelisteditor.py b/pagelisteditor.py
index 8e477b0..8e3ac30 100644
--- a/pagelisteditor.py
+++ b/pagelisteditor.py
@@ -82,8 +82,7 @@ class PageListEditor(QWidget):
self.pages_list = None
self.page_loader = None
- self.current_pixmap = QPixmap(os.path.join(ComicTaggerSettings.baseDir(), 'graphics/nocover.png' ))
- self.setDisplayPixmap( 0, 0)
+ self.resetPage()
# Add the entries to the manga combobox
self.comboBox.addItem( "", "" )
@@ -107,6 +106,10 @@ class PageListEditor(QWidget):
self.pre_move_row = -1
self.first_front_page = None
+ def resetPage( self ):
+ self.current_pixmap = QPixmap(os.path.join(ComicTaggerSettings.baseDir(), 'graphics/nocover.png' ))
+ self.setDisplayPixmap( 0, 0)
+
def moveCurrentUp( self ):
row = self.listWidget.currentRow()
if row > 0:
@@ -238,7 +241,9 @@ class PageListEditor(QWidget):
def setData( self, comic_archive, pages_list ):
self.comic_archive = comic_archive
self.pages_list = pages_list
-
+
+ self.listWidget.itemSelectionChanged.disconnect( self.changePage )
+
self.listWidget.clear()
for p in pages_list:
item = QListWidgetItem( self.listEntryText( p ) )
@@ -246,8 +251,9 @@ class PageListEditor(QWidget):
item.setData(Qt.UserRole, (p, ))
self.listWidget.addItem( item )
- self.listWidget.setCurrentRow ( 0 )
self.first_front_page = self.getFirstFrontCover()
+ self.listWidget.itemSelectionChanged.connect( self.changePage )
+ self.listWidget.setCurrentRow ( 0 )
def listEntryText(self, page_dict):
text = page_dict['Image']
diff --git a/taggerwindow.py b/taggerwindow.py
index f34310f..0196c81 100644
--- a/taggerwindow.py
+++ b/taggerwindow.py
@@ -105,10 +105,11 @@ class TaggerWindow( QtGui.QMainWindow):
gridlayout.addWidget( self.fileSelectionList )
self.fileSelectionList.selectionChanged.connect( self.fileListSelectionChanged )
+ self.fileSelectionList.listCleared.connect( self.fileListCleared )
# ATB: Disable the list for now...
- self.splitter.setSizes([100,0])
- self.splitter.setHandleWidth(0)
- self.splitter.handle(1).setDisabled(True)
+ #self.splitter.setSizes([100,0])
+ #self.splitter.setHandleWidth(0)
+ #self.splitter.handle(1).setDisabled(True)
#---------------------------
@@ -117,26 +118,15 @@ class TaggerWindow( QtGui.QMainWindow):
self.lblCover.setPixmap(QtGui.QPixmap(os.path.join(ComicTaggerSettings.baseDir(), 'graphics/nocover.png' )))
- #print platform.system(), platform.release()
- self.dirtyFlag = False
self.data_style = settings.last_selected_data_style
- #set up a default metadata object
- self.metadata = GenericMetadata()
- self.comic_archive = None
-
- self.configMenus()
- self.statusBar()
- self.updateAppTitle()
self.setAcceptDrops(True)
- self.updateMenus()
- self.droppedFile = None
-
- self.page_browser = None
- self.page_loader = None
-
+ self.configMenus()
+ self.statusBar()
self.populateComboBoxes()
+ self.resetApp()
+
# set up some basic field validators
validator = QtGui.QIntValidator(1900, 2099, self)
self.lePubYear.setValidator(validator)
@@ -197,6 +187,24 @@ class TaggerWindow( QtGui.QMainWindow):
# defer the actual close in the app loop thread
QtCore.QTimer.singleShot(200, self.close)
+ def resetApp( self ):
+
+ self.lblCover.setPixmap(QtGui.QPixmap(os.path.join(ComicTaggerSettings.baseDir(), 'graphics/nocover.png' )))
+
+ self.comic_archive = None
+ self.dirtyFlag = False
+ self.clearForm()
+ self.pageListEditor.resetPage()
+
+ self.updateAppTitle()
+ self.updateMenus()
+ self.updateInfoBox()
+
+ self.droppedFile = None
+ self.page_browser = None
+ self.page_loader = None
+
+
def updateAppTitle( self ):
if self.comic_archive is None:
@@ -537,7 +545,14 @@ class TaggerWindow( QtGui.QMainWindow):
def updateInfoBox( self ):
ca = self.comic_archive
-
+
+ if ca is None:
+ self.lblFilename.setText( "" )
+ self.lblArchiveType.setText( "" )
+ self.lblTagList.setText( "" )
+ self.lblPageCount.setText( "" )
+ return
+
filename = os.path.basename( ca.path )
filename = os.path.splitext(filename)[0]
filename = FileNameParser().fixSpaces(filename)
@@ -1430,3 +1445,6 @@ class TaggerWindow( QtGui.QMainWindow):
self.metadata = GenericMetadata()
self.loadCurrentArchive()
+
+ def fileListCleared( self ):
+ self.resetApp()
\ No newline at end of file
diff --git a/taggerwindow.ui b/taggerwindow.ui
index 50beaf1..bcd79e2 100644
--- a/taggerwindow.ui
+++ b/taggerwindow.ui
@@ -322,7 +322,11 @@
-
-
+
+
+ false
+
+
-
@@ -332,7 +336,11 @@
-
-
+
+
+ false
+
+
-
@@ -342,7 +350,11 @@
-
-
+
+
+ false
+
+
-
@@ -352,7 +364,11 @@
-
-
+
+
+ false
+
+
-
@@ -368,7 +384,11 @@
-
-
+
+
+ false
+
+
-
@@ -378,7 +398,11 @@
-
-
+
+
+ false
+
+
-
@@ -388,7 +412,11 @@
-
-
+
+
+ false
+
+
-
@@ -398,7 +426,11 @@
-
-
+
+
+ false
+
+
-
@@ -452,6 +484,9 @@
0
+
+ false
+
@@ -466,7 +501,11 @@
-
-
+
+
+ false
+
+
@@ -1080,7 +1119,7 @@
0
0
968
- 28
+ 25