home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_1254 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  6.3 KB  |  136 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. __copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net'
  5. __docformat__ = 'restructuredtext en'
  6. __license__ = 'GPL v3'
  7. from PyQt4.Qt import Qt, QDialog, QTableWidgetItem, QAbstractItemView
  8. from calibre import strftime
  9. from calibre.ebooks.metadata import authors_to_string, authors_to_sort_string, title_sort
  10. from calibre.gui2.dialogs.delete_matching_from_device_ui import Ui_DeleteMatchingFromDeviceDialog
  11. from calibre.utils.date import UNDEFINED_DATE
  12.  
  13. class tableItem(QTableWidgetItem):
  14.     
  15.     def __init__(self, text):
  16.         QTableWidgetItem.__init__(self, text)
  17.         self.setFlags(Qt.ItemIsEnabled)
  18.         self.sort = text.lower()
  19.  
  20.     
  21.     def __ge__(self, other):
  22.         return self.sort >= other.sort
  23.  
  24.     
  25.     def __lt__(self, other):
  26.         return self.sort < other.sort
  27.  
  28.  
  29.  
  30. class centeredTableItem(tableItem):
  31.     
  32.     def __init__(self, text):
  33.         tableItem.__init__(self, text)
  34.         self.setTextAlignment(Qt.AlignCenter)
  35.  
  36.  
  37.  
  38. class titleTableItem(tableItem):
  39.     
  40.     def __init__(self, text):
  41.         tableItem.__init__(self, text)
  42.         self.sort = title_sort(text.lower())
  43.  
  44.  
  45.  
  46. class authorTableItem(tableItem):
  47.     
  48.     def __init__(self, book):
  49.         tableItem.__init__(self, authors_to_string(book.authors))
  50.         if book.author_sort is not None:
  51.             self.sort = book.author_sort.lower()
  52.         else:
  53.             self.sort = authors_to_sort_string(book.authors).lower()
  54.  
  55.  
  56.  
  57. class dateTableItem(tableItem):
  58.     
  59.     def __init__(self, date):
  60.         if date is not None:
  61.             tableItem.__init__(self, strftime('%x', date))
  62.             self.sort = date
  63.         else:
  64.             tableItem.__init__(self, '')
  65.             self.sort = UNDEFINED_DATE
  66.  
  67.  
  68.  
  69. class DeleteMatchingFromDeviceDialog(QDialog, Ui_DeleteMatchingFromDeviceDialog):
  70.     
  71.     def __init__(self, parent, items):
  72.         QDialog.__init__(self, parent)
  73.         Ui_DeleteMatchingFromDeviceDialog.__init__(self)
  74.         self.setupUi(self)
  75.         self.explanation.setText('<p>' + _('All checked books will be <b>permanently deleted</b> from your device. Please verify the list.') + '</p>')
  76.         self.buttonBox.accepted.connect(self.accepted)
  77.         self.table.cellClicked.connect(self.cell_clicked)
  78.         self.table.setSelectionMode(QAbstractItemView.NoSelection)
  79.         self.table.setColumnCount(7)
  80.         self.table.setHorizontalHeaderLabels([
  81.             '',
  82.             _('Location'),
  83.             _('Title'),
  84.             _('Author'),
  85.             _('Date'),
  86.             _('Format'),
  87.             _('Path')])
  88.         rows = 0
  89.         for card in items:
  90.             rows += len(items[card][1])
  91.         
  92.         self.table.setRowCount(rows)
  93.         row = 0
  94.         for card in items:
  95.             (model, books) = items[card]
  96.             for id, book in books:
  97.                 item = QTableWidgetItem()
  98.                 item.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled)
  99.                 item.setCheckState(Qt.Checked)
  100.                 item.setData(Qt.UserRole, (model, id, book.path))
  101.                 self.table.setItem(row, 0, item)
  102.                 self.table.setItem(row, 1, tableItem(card))
  103.                 self.table.setItem(row, 2, titleTableItem(book.title))
  104.                 self.table.setItem(row, 3, authorTableItem(book))
  105.                 self.table.setItem(row, 4, dateTableItem(book.datetime))
  106.                 self.table.setItem(row, 5, centeredTableItem(book.path.rpartition('.')[2]))
  107.                 self.table.setItem(row, 6, tableItem(book.path))
  108.                 row += 1
  109.             
  110.         
  111.         self.table.setCurrentCell(0, 1)
  112.         self.table.resizeColumnsToContents()
  113.         self.table.setSortingEnabled(True)
  114.         self.table.sortByColumn(2, Qt.AscendingOrder)
  115.         self.table.setCurrentCell(0, 1)
  116.  
  117.     
  118.     def cell_clicked(self, row, col):
  119.         if col == 0:
  120.             self.table.setCurrentCell(row, 1)
  121.         
  122.  
  123.     
  124.     def accepted(self):
  125.         self.result = []
  126.         for row in range(self.table.rowCount()):
  127.             if self.table.item(row, 0).checkState() == Qt.Unchecked:
  128.                 continue
  129.             
  130.             (model, id, path) = self.table.item(row, 0).data(Qt.UserRole).toPyObject()
  131.             path = unicode(path)
  132.             self.result.append((model, id, path))
  133.         
  134.  
  135.  
  136.