diff --git a/src/calibre/gui2/dialogs/config.py b/src/calibre/gui2/dialogs/config.py index e328ce641d..1dd6cc061e 100644 --- a/src/calibre/gui2/dialogs/config.py +++ b/src/calibre/gui2/dialogs/config.py @@ -3,7 +3,8 @@ __copyright__ = '2008, Kovid Goyal ' import os, re, time from PyQt4.QtGui import QDialog, QMessageBox, QListWidgetItem, QIcon, \ - QDesktopServices, QVBoxLayout, QLabel, QPlainTextEdit + QDesktopServices, QVBoxLayout, QLabel, QPlainTextEdit, \ + QStringListModel from PyQt4.QtCore import SIGNAL, QTimer, Qt, QSize, QVariant, QUrl from calibre.constants import islinux, iswindows @@ -17,6 +18,22 @@ from calibre.ebooks import BOOK_EXTENSIONS from calibre.ebooks.epub.iterator import is_supported from calibre.library import server_config +class CategoryModel(QStringListModel): + + def __init__(self, *args): + QStringListModel.__init__(self, *args) + self.setStringList([_('General'), _('Interface'), _('Advanced'), + _('Content\nServer')]) + self.icons = list(map(QVariant, map(QIcon, + [':/images/dialog_information.svg', ':/images/lookfeel.svg', + ':/images/view.svg', ':/images/network-server.svg']))) + + def data(self, index, role): + if role == Qt.DecorationRole: + return self.icons[index.row()] + return QStringListModel.data(self, index, role) + + class ConfigDialog(QDialog, Ui_Dialog): def __init__(self, window, db, server=None): @@ -24,10 +41,10 @@ class ConfigDialog(QDialog, Ui_Dialog): Ui_Dialog.__init__(self) self.ICON_SIZES = {0:QSize(48, 48), 1:QSize(32,32), 2:QSize(24,24)} self.setupUi(self) - self.item1 = QListWidgetItem(QIcon(':/images/metadata.svg'), _('General'), self.category_list) - self.item2 = QListWidgetItem(QIcon(':/images/lookfeel.svg'), _('Interface'), self.category_list) - self.item3 = QListWidgetItem(QIcon(':/images/view.svg'), _('Advanced'), self.category_list) - self.item4 = QListWidgetItem(QIcon(':/images/network-server.svg'), _('Content\nServer'), self.category_list) + self._category_model = CategoryModel() + + self.connect(self.category_view, SIGNAL('activated(QModelIndex)'), lambda i: self.stackedWidget.setCurrentIndex(i.row())) + self.category_view.setModel(self._category_model) self.db = db self.server = server path = prefs['library_path'] @@ -120,6 +137,7 @@ class ConfigDialog(QDialog, Ui_Dialog): self.priority.setCurrentIndex(p) self.priority.setVisible(iswindows) self.priority_label.setVisible(iswindows) + self.category_view.setCurrentIndex(self._category_model.index(0)) def up_column(self): idx = self.columns.currentRow() diff --git a/src/calibre/gui2/dialogs/config.ui b/src/calibre/gui2/dialogs/config.ui index 55c52a5fd3..cf7562d73f 100644 --- a/src/calibre/gui2/dialogs/config.ui +++ b/src/calibre/gui2/dialogs/config.ui @@ -6,7 +6,7 @@ 0 0 - 709 + 800 563 @@ -21,12 +21,12 @@ - - - - 140 - 16777215 - + + + + 1 + 0 + @@ -34,43 +34,43 @@ true - - true - - - Qt::ScrollBarAlwaysOff - - - Qt::ScrollBarAlwaysOff - true + + false + 48 48 - - QListView::Static + + QAbstractItemView::ScrollPerItem + + + QAbstractItemView::ScrollPerPixel QListView::TopToBottom - - false - - 25 + 20 - QListView::IconMode + QListView::ListMode + + + 100 + 0 + + 0 @@ -801,8 +801,8 @@ accept() - 235 - 671 + 239 + 558 157 @@ -817,8 +817,8 @@ reject() - 303 - 671 + 307 + 558 286 @@ -826,21 +826,5 @@ - - category_list - currentRowChanged(int) - stackedWidget - setCurrentIndex(int) - - - 142 - 117 - - - 256 - 7 - - - diff --git a/src/calibre/gui2/main.py b/src/calibre/gui2/main.py index 0386e7875c..91c608c7af 100644 --- a/src/calibre/gui2/main.py +++ b/src/calibre/gui2/main.py @@ -332,7 +332,7 @@ class Main(MainWindow, Ui_MainWindow): self.scheduler = Scheduler(self) self.action_news.setMenu(self.scheduler.news_menu) self.connect(self.action_news, SIGNAL('triggered(bool)'), self.scheduler.show_dialog) - + self.location_view.setCurrentIndex(self.location_view.model().index(0)) def test_server(self, *args): if self.content_server.exception is not None: diff --git a/src/calibre/library/database2.py b/src/calibre/library/database2.py index c9984032e6..96293a2270 100644 --- a/src/calibre/library/database2.py +++ b/src/calibre/library/database2.py @@ -1055,7 +1055,7 @@ class LibraryDatabase2(LibraryDatabase): (mi.title, mi.authors[0])) id = obj.lastrowid self.data.books_added([id], self.conn) - self.set_path(id, True) + self.set_path(id, index_is_id=True) self.conn.commit() self.set_metadata(id, mi)