diff --git a/src/calibre/devices/prs505/sony_cache.py b/src/calibre/devices/prs505/sony_cache.py index 5d4cf1d10a..a0057d8ec9 100644 --- a/src/calibre/devices/prs505/sony_cache.py +++ b/src/calibre/devices/prs505/sony_cache.py @@ -326,9 +326,10 @@ class XMLCache(object): if record is None: record = self.create_text_record(root, i, book.lpath) self.update_text_record(record, book, path, i) - bl_pmap = playlist_map[i] - self.update_playlists(i, root, booklist, bl_pmap, - collections_attributes) + + bl_pmap = playlist_map[i] + self.update_playlists(i, root, booklist, bl_pmap, + collections_attributes) self.fix_ids() diff --git a/src/calibre/gui2/library/delegates.py b/src/calibre/gui2/library/delegates.py index c1e4915db1..d908ed01b4 100644 --- a/src/calibre/gui2/library/delegates.py +++ b/src/calibre/gui2/library/delegates.py @@ -17,7 +17,7 @@ from PyQt4.Qt import QColor, Qt, QModelIndex, QSize, \ from calibre.gui2 import UNDEFINED_QDATE from calibre.gui2.widgets import EnLineEdit, TagsLineEdit -from calibre.utils.date import now +from calibre.utils.date import now, format_date from calibre.utils.config import tweaks from calibre.gui2.dialogs.comments_dialog import CommentsDialog @@ -98,7 +98,7 @@ class DateDelegate(QStyledItemDelegate): # {{{ d = val.toDate() if d == UNDEFINED_QDATE: return '' - return d.toString('dd MMM yyyy') + return format_date(d.toPyDate(), 'dd MMM yyyy') def createEditor(self, parent, option, index): qde = QStyledItemDelegate.createEditor(self, parent, option, index) @@ -121,7 +121,7 @@ class PubDateDelegate(QStyledItemDelegate): # {{{ format = tweaks['gui_pubdate_display_format'] if format is None: format = 'MMM yyyy' - return d.toString(format) + return format_date(d.toPyDate(), format) def createEditor(self, parent, option, index): qde = QStyledItemDelegate.createEditor(self, parent, option, index) @@ -195,7 +195,7 @@ class CcDateDelegate(QStyledItemDelegate): # {{{ d = val.toDate() if d == UNDEFINED_QDATE: return '' - return d.toString(self.format) + return format_date(d.toPyDate(), self.format) def createEditor(self, parent, option, index): qde = QStyledItemDelegate.createEditor(self, parent, option, index) diff --git a/src/calibre/gui2/library/views.py b/src/calibre/gui2/library/views.py index e5c6ffd5f7..bae4950de0 100644 --- a/src/calibre/gui2/library/views.py +++ b/src/calibre/gui2/library/views.py @@ -8,7 +8,8 @@ __docformat__ = 'restructuredtext en' import os from functools import partial -from PyQt4.Qt import QTableView, Qt, QAbstractItemView, QMenu, pyqtSignal +from PyQt4.Qt import QTableView, Qt, QAbstractItemView, QMenu, pyqtSignal, \ + QModelIndex from calibre.gui2.library.delegates import RatingDelegate, PubDateDelegate, \ TextDelegate, DateDelegate, TagsDelegate, CcTextDelegate, \ @@ -288,6 +289,12 @@ class BooksView(QTableView): # {{{ old_state['sort_history'] = tweaks['sort_columns_at_startup'] self.apply_state(old_state) + + # Resize all rows to have the correct height + if self.model().rowCount(QModelIndex()) > 0: + self.resizeRowToContents(0) + self.verticalHeader().setDefaultSectionSize(self.rowHeight(0)) + self.was_restored = True # }}} diff --git a/src/calibre/gui2/ui.py b/src/calibre/gui2/ui.py index 3f67e4184c..6ed51d3eff 100644 --- a/src/calibre/gui2/ui.py +++ b/src/calibre/gui2/ui.py @@ -642,13 +642,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): self.location_view.setCurrentIndex(self.location_view.model().index(0)) - self._add_filesystem_book = Dispatcher(self.__add_filesystem_book) - v = self.library_view - if v.model().rowCount(None) > 1: - v.resizeRowToContents(0) - height = v.rowHeight(0) - self.library_view.verticalHeader().setDefaultSectionSize(height) self.keyboard_interrupt.connect(self.quit, type=Qt.QueuedConnection) def do_edit_categories(self): diff --git a/src/calibre/utils/date.py b/src/calibre/utils/date.py index a43927c9c5..dc84e6acf4 100644 --- a/src/calibre/utils/date.py +++ b/src/calibre/utils/date.py @@ -6,6 +6,7 @@ __license__ = 'GPL v3' __copyright__ = '2010, Kovid Goyal ' __docformat__ = 'restructuredtext en' +import re from datetime import datetime from dateutil.parser import parse @@ -113,3 +114,27 @@ def utcnow(): def utcfromtimestamp(stamp): return datetime.utcfromtimestamp(stamp).replace(tzinfo=_utc_tz) + +def format_date(dt, format): + ''' Return a date formatted as a string using a subset of Qt's formatting codes ''' + def format_day(mo): + l = len(mo.group(0)) + if l == 1: return '%d'%dt.day + if l == 2: return '%02d'%dt.day + if l == 3: return dt.strftime('%a') + return dt.strftime('%A') + + def format_month(mo): + l = len(mo.group(0)) + if l == 1: return '%d'%dt.month + if l == 2: return '%02d'%dt.month + if l == 3: return dt.strftime('%b') + return dt.strftime('%B') + + def format_year(mo): + if len(mo.group(0)) == 2: return '%02d'%(dt.year % 100) + return '%04d'%dt.year + + format = re.sub('d{1,4}', format_day, format) + format = re.sub('M{1,4}', format_month, format) + return re.sub('yyyy|yy', format_year, format)