mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Fix delegates to deal with formatted numbers
This commit is contained in:
parent
f209a7b079
commit
db78e9c45e
@ -249,6 +249,23 @@ class CcDateDelegate(QStyledItemDelegate): # {{{
|
|||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
class CcTextDelegate(QStyledItemDelegate): # {{{
|
class CcTextDelegate(QStyledItemDelegate): # {{{
|
||||||
|
'''
|
||||||
|
Delegate for text data.
|
||||||
|
'''
|
||||||
|
|
||||||
|
def createEditor(self, parent, option, index):
|
||||||
|
m = index.model()
|
||||||
|
col = m.column_map[index.column()]
|
||||||
|
editor = MultiCompleteLineEdit(parent)
|
||||||
|
editor.set_separator(None)
|
||||||
|
complete_items = sorted(list(m.db.all_custom(label=m.db.field_metadata.key_to_label(col))),
|
||||||
|
key=sort_key)
|
||||||
|
editor.update_items_cache(complete_items)
|
||||||
|
return editor
|
||||||
|
|
||||||
|
# }}}
|
||||||
|
|
||||||
|
class CcNumberDelegate(QStyledItemDelegate): # {{{
|
||||||
'''
|
'''
|
||||||
Delegate for text/int/float data.
|
Delegate for text/int/float data.
|
||||||
'''
|
'''
|
||||||
@ -256,25 +273,23 @@ class CcTextDelegate(QStyledItemDelegate): # {{{
|
|||||||
def createEditor(self, parent, option, index):
|
def createEditor(self, parent, option, index):
|
||||||
m = index.model()
|
m = index.model()
|
||||||
col = m.column_map[index.column()]
|
col = m.column_map[index.column()]
|
||||||
typ = m.custom_columns[col]['datatype']
|
if m.custom_columns[col]['datatype'] == 'int':
|
||||||
if typ == 'int':
|
|
||||||
editor = QSpinBox(parent)
|
editor = QSpinBox(parent)
|
||||||
editor.setRange(-100, 100000000)
|
editor.setRange(-100, 100000000)
|
||||||
editor.setSpecialValueText(_('Undefined'))
|
editor.setSpecialValueText(_('Undefined'))
|
||||||
editor.setSingleStep(1)
|
editor.setSingleStep(1)
|
||||||
elif typ == 'float':
|
else:
|
||||||
editor = QDoubleSpinBox(parent)
|
editor = QDoubleSpinBox(parent)
|
||||||
editor.setSpecialValueText(_('Undefined'))
|
editor.setSpecialValueText(_('Undefined'))
|
||||||
editor.setRange(-100., 100000000)
|
editor.setRange(-100., 100000000)
|
||||||
editor.setDecimals(2)
|
editor.setDecimals(2)
|
||||||
else:
|
|
||||||
editor = MultiCompleteLineEdit(parent)
|
|
||||||
editor.set_separator(None)
|
|
||||||
complete_items = sorted(list(m.db.all_custom(label=m.db.field_metadata.key_to_label(col))),
|
|
||||||
key=sort_key)
|
|
||||||
editor.update_items_cache(complete_items)
|
|
||||||
return editor
|
return editor
|
||||||
|
|
||||||
|
def setEditorData(self, editor, index):
|
||||||
|
m = index.model()
|
||||||
|
val = m.db.data[index.row()][m.custom_columns[m.column_map[index.column()]]['rec_index']]
|
||||||
|
editor.setValue(val)
|
||||||
|
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
class CcEnumDelegate(QStyledItemDelegate): # {{{
|
class CcEnumDelegate(QStyledItemDelegate): # {{{
|
||||||
|
@ -15,7 +15,7 @@ from PyQt4.Qt import QTableView, Qt, QAbstractItemView, QMenu, pyqtSignal, \
|
|||||||
from calibre.gui2.library.delegates import RatingDelegate, PubDateDelegate, \
|
from calibre.gui2.library.delegates import RatingDelegate, PubDateDelegate, \
|
||||||
TextDelegate, DateDelegate, CompleteDelegate, CcTextDelegate, \
|
TextDelegate, DateDelegate, CompleteDelegate, CcTextDelegate, \
|
||||||
CcBoolDelegate, CcCommentsDelegate, CcDateDelegate, CcTemplateDelegate, \
|
CcBoolDelegate, CcCommentsDelegate, CcDateDelegate, CcTemplateDelegate, \
|
||||||
CcEnumDelegate
|
CcEnumDelegate, CcNumberDelegate
|
||||||
from calibre.gui2.library.models import BooksModel, DeviceBooksModel
|
from calibre.gui2.library.models import BooksModel, DeviceBooksModel
|
||||||
from calibre.utils.config import tweaks, prefs
|
from calibre.utils.config import tweaks, prefs
|
||||||
from calibre.gui2 import error_dialog, gprefs
|
from calibre.gui2 import error_dialog, gprefs
|
||||||
@ -89,6 +89,7 @@ class BooksView(QTableView): # {{{
|
|||||||
self.cc_bool_delegate = CcBoolDelegate(self)
|
self.cc_bool_delegate = CcBoolDelegate(self)
|
||||||
self.cc_comments_delegate = CcCommentsDelegate(self)
|
self.cc_comments_delegate = CcCommentsDelegate(self)
|
||||||
self.cc_template_delegate = CcTemplateDelegate(self)
|
self.cc_template_delegate = CcTemplateDelegate(self)
|
||||||
|
self.cc_number_delegate = CcNumberDelegate(self)
|
||||||
self.display_parent = parent
|
self.display_parent = parent
|
||||||
self._model = modelcls(self)
|
self._model = modelcls(self)
|
||||||
self.setModel(self._model)
|
self.setModel(self._model)
|
||||||
@ -501,8 +502,10 @@ class BooksView(QTableView): # {{{
|
|||||||
self.tags_delegate)
|
self.tags_delegate)
|
||||||
else:
|
else:
|
||||||
self.setItemDelegateForColumn(cm.index(colhead), self.cc_text_delegate)
|
self.setItemDelegateForColumn(cm.index(colhead), self.cc_text_delegate)
|
||||||
elif cc['datatype'] in ('series', 'int', 'float'):
|
elif cc['datatype'] == 'series':
|
||||||
self.setItemDelegateForColumn(cm.index(colhead), self.cc_text_delegate)
|
self.setItemDelegateForColumn(cm.index(colhead), self.cc_text_delegate)
|
||||||
|
elif cc['datatype'] in ('int', 'float'):
|
||||||
|
self.setItemDelegateForColumn(cm.index(colhead), self.cc_number_delegate)
|
||||||
elif cc['datatype'] == 'bool':
|
elif cc['datatype'] == 'bool':
|
||||||
self.setItemDelegateForColumn(cm.index(colhead), self.cc_bool_delegate)
|
self.setItemDelegateForColumn(cm.index(colhead), self.cc_bool_delegate)
|
||||||
elif cc['datatype'] == 'rating':
|
elif cc['datatype'] == 'rating':
|
||||||
|
Loading…
x
Reference in New Issue
Block a user