Port: setMargin() reset() QStringList()

setMargin(): QLayout no longer has a setMargin() function, replace with
setContentsMargins()

reset(): QAbstractListModel no longer has reset(), replace with
beginResetModel(), endResetModel()

QStringList: No longer exists, a simply python list of strings works
instead
This commit is contained in:
Kovid Goyal 2014-04-11 21:41:59 +05:30
parent 5068f62f0f
commit f1842ae443
34 changed files with 148 additions and 92 deletions

View file

@ -6,6 +6,8 @@
__license__ = 'GPL v3'
__copyright__ = '2014, Kovid Goyal <kovid at kovidgoyal.net>'
# QT5XX: See why mouse wheel is not working in diff view
# QT5XX: Delete this file after migration is completed
import os

View file

@ -216,7 +216,7 @@ def add_empty(self, *args):
ids.append(db.import_book(mi, fmts))
self.gui.library_view.model().books_added(num)
if hasattr(self.gui, 'db_images'):
self.gui.db_images.reset()
self.gui.db_images.beginResetModel(), self.gui.db_images.endResetModel()
self.gui.tags_view.recount()
if ids:
ids.reverse()
@ -384,7 +384,7 @@ def _files_added(self, paths=[], names=[], infos=[], on_card=None):
self.gui.library_view.model().books_added(self._adder.number_of_books_added)
self.gui.library_view.set_current_row(0)
if hasattr(self.gui, 'db_images'):
self.gui.db_images.reset()
self.gui.db_images.beginResetModel(), self.gui.db_images.endResetModel()
self.gui.tags_view.recount()
if getattr(self._adder, 'merged_books', False):

View file

@ -79,7 +79,7 @@ def catalog_generated(self, job):
if job.failed:
return self.gui.job_exception(job)
id = self.gui.library_view.model().add_catalog(job.catalog_file_path, job.catalog_title)
self.gui.library_view.model().reset()
self.gui.library_view.model().beginResetModel(), self.gui.library_view.model().endResetModel()
if job.catalog_sync:
sync = dynamic.get('catalogs_to_be_synced', set([]))
sync.add(id)

View file

@ -75,7 +75,7 @@ def scheduled_recipe_fetched(self, job):
if ids_to_delete:
self.gui.library_view.model().delete_books_by_id(ids_to_delete)
self.gui.library_view.model().reset()
self.gui.library_view.model().beginResetModel(), self.gui.library_view.model().endResetModel()
sync = self.gui.news_to_be_synced
sync.add(id)
self.gui.news_to_be_synced = sync

View file

@ -261,7 +261,7 @@ def add_to_db(self, data):
'Added %(num)d book(s) automatically from %(src)s') %
dict(num=count, src=self.worker.path), 2000)
if hasattr(gui, 'db_images'):
gui.db_images.reset()
gui.db_images.beginResetModel(), gui.db_images.endResetModel()
if needs_rescan:
QTimer.singleShot(2000, self.dir_changed)

View file

@ -26,13 +26,14 @@ def __init__(self, parent=None):
def set_items(self, items):
items = [unicode(x.strip()) for x in items]
self.beginResetModel()
if len(items) < 2500:
self.items = sorted(items, key=sort_key)
self.sorting = QCompleter.UnsortedModel
else:
self.items = sorted(items, key=lambda x:x.lower())
self.sorting = QCompleter.CaseInsensitivelySortedModel
self.reset()
self.endResetModel()
def rowCount(self, *args):
return len(self.items)

View file

@ -15,7 +15,6 @@
from calibre.constants import isosx, get_osx_version
from calibre.utils.icu import sort_key, primary_startswith, primary_contains
from calibre.gui2 import NONE
from calibre.gui2.widgets import EnComboBox, LineEditECM
from calibre.utils.config import tweaks
@ -34,9 +33,10 @@ def set_items(self, items):
items = [unicode(x.strip()) for x in items]
items = [x for x in items if x]
items = tuple(sorted(items, key=self.sort_func))
self.beginResetModel()
self.all_items = self.current_items = items
self.current_prefix = ''
self.reset()
self.endResetModel()
def set_completion_prefix(self, prefix):
old_prefix = self.current_prefix
@ -44,14 +44,16 @@ def set_completion_prefix(self, prefix):
if prefix == old_prefix:
return
if not prefix:
self.beginResetModel()
self.current_items = self.all_items
self.reset()
self.endResetModel()
return
subset = prefix.startswith(old_prefix)
universe = self.current_items if subset else self.all_items
func = primary_startswith if tweaks['completion_mode'] == 'prefix' else containsq
self.beginResetModel()
self.current_items = tuple(x for x in universe if func(x, prefix))
self.reset()
self.endResetModel()
def rowCount(self, *args):
return len(self.current_items)
@ -62,7 +64,6 @@ def data(self, index, role):
return self.current_items[index.row()]
except IndexError:
pass
return NONE
def index_for_prefix(self, prefix):
for i, item in enumerate(self.current_items):

View file

@ -105,8 +105,14 @@ def subtitle(self, index):
return ''
def reset(self):
self.beginResetModel(), self.endResetModel()
def beginResetModel(self):
self.dataChanged.emit()
def endResetModel(self):
pass
def image(self, index):
return self.model.cover(index)

View file

@ -673,7 +673,7 @@ def _uninstall_clicked(self):
return
self._uninstall_plugin(display_plugin.name)
if self.proxy_model.filter_criteria in [FILTER_INSTALLED, FILTER_UPDATE_AVAILABLE]:
self.model.reset()
self.model.beginResetModel(), self.model.endResetModel()
self._select_and_focus_view()
else:
self._select_and_focus_view(change_selection=False)
@ -755,7 +755,7 @@ def rf():
display_plugin.uninstall_plugins = []
if self.proxy_model.filter_criteria in [FILTER_NOT_INSTALLED, FILTER_UPDATE_AVAILABLE]:
self.model.reset()
self.model.beginResetModel(), self.model.endResetModel()
self._select_and_focus_view()
else:
self.model.refresh_plugin(display_plugin)

View file

@ -57,8 +57,9 @@ def replace_by_title(self, title, script):
if x.get('title', False) == title:
urn = x.get('id')
if urn is not None:
self.beginResetModel()
self.recipe_model.update_custom_recipe(urn, title, script)
self.reset()
self.endResetModel()
def replace_many_by_title(self, scriptmap):
script_urn_map = {}
@ -71,16 +72,19 @@ def replace_many_by_title(self, scriptmap):
script_urn_map.update({urn: (title, script)})
if script_urn_map:
self.beginResetModel()
self.recipe_model.update_custom_recipes(script_urn_map)
self.reset()
self.endResetModel()
def add(self, title, script):
self.beginResetModel()
self.recipe_model.add_custom_recipe(title, script)
self.reset()
self.endResetModel()
def add_many(self, scriptmap):
self.beginResetModel()
self.recipe_model.add_custom_recipes(scriptmap)
self.reset()
self.endResetModel()
def remove(self, rows):
urns = []
@ -90,8 +94,9 @@ def remove(self, rows):
urns.append(urn)
except:
pass
self.beginResetModel()
self.recipe_model.remove_custom_recipes(urns)
self.reset()
self.endResetModel()
class UserProfiles(ResizableDialog, Ui_Dialog):

View file

@ -285,8 +285,9 @@ def add_fonts(self):
for f in files:
shutil.copyfile(f, os.path.join(dest, os.path.basename(f)))
self.font_scanner.do_scan()
self.m.beginResetModel()
self.build_font_list()
self.m.reset()
self.m.endResetModel()
self.view.setCurrentIndex(self.m.index(0))
if families:
for i, val in enumerate(self.families):

View file

@ -373,8 +373,9 @@ def find(self, query):
except ParseException:
ok = False
self.search_filter = val
self.beginResetModel()
self.search_done.emit(ok)
self.reset()
self.endResetModel()
# }}}
@ -459,7 +460,7 @@ def __init__(self, horizontal=False, size=48, parent=None):
if not horizontal:
self.layout().setAlignment(self._jobs, Qt.AlignHCenter)
self._jobs.setMargin(0)
self.layout().setMargin(0)
self.layout().setContentsMargins(0, 0, 0, 0)
self._jobs.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
self.setCursor(Qt.PointingHandCursor)
b = _('Click to see list of jobs')
@ -620,12 +621,12 @@ def hide_selected(self, *args):
return error_dialog(self, _('No job'),
_('No job selected'), show=True)
self.model.hide_jobs(rows)
self.proxy_model.reset()
self.proxy_model.beginResetModel(), self.proxy_model.endResetModel()
def hide_all(self, *args):
self.model.hide_jobs(list(xrange(0,
self.model.rowCount(QModelIndex()))))
self.proxy_model.reset()
self.proxy_model.beginResetModel(), self.proxy_model.endResetModel()
def show_hidden(self, *args):
self.model.show_hidden_jobs()

View file

@ -278,7 +278,7 @@ def col_idx(name):
self.headers[col] = self.custom_columns[col]['name']
self.build_data_convertors()
self.reset()
self.beginResetModel(), self.endResetModel()
self.database_changed.emit(db)
self.stop_metadata_backup()
self.start_metadata_backup()
@ -312,7 +312,7 @@ def refresh_rows(self, rows, current_row=-1):
def close(self):
self.db.close()
self.db = None
self.reset()
self.beginResetModel(), self.endResetModel()
def add_books(self, paths, formats, metadata, add_duplicates=False,
return_ids=False):
@ -351,7 +351,7 @@ def by_author(self):
def books_deleted(self):
self.count_changed()
self.reset()
self.beginResetModel(), self.endResetModel()
def delete_books(self, indices, permanent=False):
ids = map(self.id, indices)
@ -410,7 +410,7 @@ def highlight_ids(self, ids_to_highlight):
self.current_highlighted_idx = 0
else:
self.current_highlighted_idx = None
self.reset()
self.beginResetModel(), self.endResetModel()
def search(self, text, reset=True):
try:
@ -437,7 +437,7 @@ def search(self, text, reset=True):
return
self.last_search = text
if reset:
self.reset()
self.beginResetModel(), self.endResetModel()
if self.last_search:
# Do not issue search done for the null search. It is used to clear
# the search and count records for restrictions
@ -460,7 +460,7 @@ def _sort(self, label, order, reset):
self.about_to_be_sorted.emit(self.db.id)
self.db.data.incremental_sort([(label, order)])
if reset:
self.reset()
self.beginResetModel(), self.endResetModel()
self.sorted_on = (label, order)
self.sort_history.insert(0, self.sorted_on)
self.sorting_done.emit(self.db.index)
@ -469,16 +469,19 @@ def refresh(self, reset=True):
self.db.refresh(field=None)
self.resort(reset=reset)
def reset(self):
def beginResetModel(self):
self._clear_caches()
QAbstractTableModel.reset(self)
QAbstractTableModel.beginResetModel(self)
def reset(self):
self.beginResetModel(), self.endResetModel()
def resort(self, reset=True):
if not self.db:
return
self.db.multisort(self.sort_history[:tweaks['maximum_resort_levels']])
if reset:
self.reset()
self.beginResetModel(), self.endResetModel()
def research(self, reset=True):
self.search(self.last_search, reset=reset)
@ -1251,7 +1254,7 @@ def mark_for_deletion(self, job, rows, rows_are_ids=False):
db_items = [self.db[i] for i in db_indices if -1 < i < len(self.db)]
self.marked_for_deletion[job] = db_items
if rows_are_ids:
self.reset()
self.beginResetModel(), self.endResetModel()
else:
for row in rows:
indices = self.row_indices(row)
@ -1313,7 +1316,7 @@ def clear_ondevice(self, db_ids, to_what=None):
app_id = getattr(data, 'application_id', None)
if app_id is not None and app_id in db_ids:
data.in_library = to_what
self.reset()
self.beginResetModel(), self.endResetModel()
def flags(self, index):
if self.is_row_marked_for_deletion(index.row()):
@ -1350,7 +1353,7 @@ def search(self, text, reset=True):
self.map.append(i)
self.resort(reset=False)
if reset:
self.reset()
self.beginResetModel(), self.endResetModel()
self.last_search = text
if self.last_search:
self.searched.emit(True)
@ -1399,14 +1402,14 @@ def author_key(x):
if hasattr(keygen, 'db'):
keygen.db = None
if reset:
self.reset()
self.beginResetModel(), self.endResetModel()
def resort(self, reset=True):
if self.sorted_on:
self.sort(self.column_map.index(self.sorted_on[0]),
self.sorted_on[1], reset=False)
if reset:
self.reset()
self.beginResetModel(), self.endResetModel()
def columnCount(self, parent):
if parent and parent.isValid():

View file

@ -24,12 +24,13 @@ def __init__(self, plugin):
def initialize(self):
fields = self.plugin.touched_fields
self.beginResetModel()
self.fields = []
for x in fields:
if not x.startswith('identifier:') and x not in self.exclude:
self.fields.append(x)
self.fields.sort(key=lambda x:self.descs.get(x, x))
self.reset()
self.endResetModel()
def state(self, field, defaults=False):
src = self.prefs.defaults if defaults else self.prefs
@ -37,8 +38,9 @@ def state(self, field, defaults=False):
else Qt.Checked)
def restore_defaults(self):
self.beginResetModel()
self.overrides = dict([(f, self.state(f, True)) for f in self.fields])
self.reset()
self.endResetModel()
def commit(self):
ignored_fields = set([x for x in self.prefs['ignore_fields'] if x not in

View file

@ -227,8 +227,9 @@ def dategetter(x):
elif key == 4:
key = lambda x: bool(x.comments)
self.beginResetModel()
self.results.sort(key=key, reverse=order==Qt.AscendingOrder)
self.reset()
self.endResetModel()
# }}}
@ -658,7 +659,7 @@ def reset_covers(self, do_reset=True):
self.plugin_map[plugin] = [i+1]
if do_reset:
self.reset()
self.beginResetModel(), self.endResetModel()
def get_item(self, src, pmap, waiting=False):
sz = '%dx%d'%(pmap.width(), pmap.height())
@ -711,7 +712,7 @@ def keygen(x):
pmap[plugin] = [len(good)-1]
self.covers = good
self.plugin_map = pmap
self.reset()
self.beginResetModel(), self.endResetModel()
def pointer_from_index(self, index):
row = index.row() if hasattr(index, 'row') else index

View file

@ -714,8 +714,9 @@ def data(self, index, role):
return (kind, col, rule)
def add_rule(self, kind, col, rule):
self.beginResetModel()
self.rules.append((kind, col, rule))
self.reset()
self.endResetModel()
return self.index(len(self.rules)-1)
def replace_rule(self, index, kind, col, r):
@ -723,8 +724,9 @@ def replace_rule(self, index, kind, col, r):
self.dataChanged.emit(index, index)
def remove_rule(self, index):
self.beginResetModel()
self.rules.remove(self.rules[index.row()])
self.reset()
self.endResetModel()
def commit(self, prefs):
rules = []
@ -751,7 +753,8 @@ def move(self, idx, delta):
def clear(self):
self.rules = []
self.reset()
self.beginResetModel()
self.endResetModel()
def rule_to_html(self, kind, col, rule):
trans_kind = 'not found'

View file

@ -118,11 +118,12 @@ def setData(self, index, value, role):
def make_default(self, index):
if index.isValid():
self.beginResetModel()
row = index.row()
for x in self.accounts.values():
x[2] = False
self.accounts[self.account_order[row]][2] = True
self.reset()
self.endResetModel()
def add(self):
x = _('new email address')
@ -132,10 +133,11 @@ def add(self):
c += 1
y = x + str(c)
auto_send = len(self.accounts) < 1
self.beginResetModel()
self.accounts[y] = ['MOBI, EPUB', auto_send,
len(self.account_order) == 0]
self.account_order = sorted(self.accounts.keys())
self.reset()
self.endResetModel()
return self.index(self.account_order.index(y), 0)
def remove(self, index):
@ -152,7 +154,8 @@ def remove(self, index):
if not has_default and self.account_order:
self.accounts[self.account_order[0]][2] = True
self.reset()
self.beginResetModel()
self.endResetModel()
# }}}

View file

@ -8,7 +8,7 @@
import textwrap
from PyQt5.Qt import QComboBox, QStringList, Qt
from PyQt5.Qt import QComboBox, Qt
from calibre.gui2 import config as gui_conf
@ -32,7 +32,7 @@ def set_value(self, val):
if val not in history:
history.append(val)
self.clear()
self.addItems(QStringList(history))
self.addItems(history)
self.setCurrentIndex(self.findText(val, Qt.MatchFixedString))
def save_history(self, opt_name):

View file

@ -35,10 +35,11 @@ def __init__(self, db, parent=None):
self.changed = False
def initialize(self, use_defaults=False):
self.beginResetModel()
self.fields = [[x[0], x[1]] for x in
get_field_list(self.db.field_metadata,
use_defaults=use_defaults)]
self.reset()
self.endResetModel()
self.changed = True
def rowCount(self, *args):
@ -469,7 +470,8 @@ def commit(self, *args):
return rr
def refresh_gui(self, gui):
gui.library_view.model().reset()
m = gui.library_view.model()
m.beginResetModel(), m.endResetModel()
self.update_font_display()
gui.tags_view.reread_collapse_parameters()
gui.library_view.refresh_book_details()

View file

@ -30,11 +30,12 @@ def __init__(self, parent=None):
self.cover_overrides = {}
def initialize(self):
self.beginResetModel()
self.plugins = list(all_metadata_plugins())
self.plugins.sort(key=attrgetter('name'))
self.enabled_overrides = {}
self.cover_overrides = {}
self.reset()
self.endResetModel()
def rowCount(self, parent=None):
return len(self.plugins)
@ -135,12 +136,13 @@ def commit(self):
self.cover_overrides = {}
def restore_defaults(self):
self.beginResetModel()
self.enabled_overrides = dict([(p, (Qt.Unchecked if p.name in
default_disabled_plugins else Qt.Checked)) for p in self.plugins])
self.cover_overrides = dict([(p,
msprefs.defaults['cover_priorities'].get(p.name, 1))
for p in self.plugins])
self.reset()
self.endResetModel()
# }}}
@ -173,12 +175,13 @@ def initialize(self):
fields = set()
for p in all_metadata_plugins():
fields |= p.touched_fields
self.beginResetModel()
self.fields = []
for x in fields:
if not x.startswith('identifier:') and x not in self.exclude:
self.fields.append(x)
self.fields.sort(key=lambda x:self.descs.get(x, x))
self.reset()
self.endResetModel()
def state(self, field, defaults=False):
src = msprefs.defaults if defaults else msprefs
@ -201,16 +204,19 @@ def flags(self, index):
return ans | Qt.ItemIsUserCheckable
def restore_defaults(self):
self.beginResetModel()
self.overrides = dict([(f, self.state(f, Qt.Checked)) for f in self.fields])
self.reset()
self.endResetModel()
def select_all(self):
self.beginResetModel()
self.overrides = dict([(f, Qt.Checked) for f in self.fields])
self.reset()
self.endResetModel()
def clear_all(self):
self.beginResetModel()
self.overrides = dict([(f, Qt.Unchecked) for f in self.fields])
self.reset()
self.endResetModel()
def setData(self, index, val, role):
try:
@ -239,8 +245,9 @@ def user_default_state(self, field):
else Qt.Checked)
def select_user_defaults(self):
self.beginResetModel()
self.overrides = dict([(f, self.user_default_state(f)) for f in self.fields])
self.reset()
self.endResetModel()
def commit_user_defaults(self):
default_ignored_fields = set([x for x in msprefs['user_default_ignore_fields'] if x not in

View file

@ -37,8 +37,9 @@ def __init__(self, show_only_user_plugins=False):
def toggle_shown_plugins(self, show_only_user_plugins):
self.show_only_user_plugins = show_only_user_plugins
self.beginResetModel()
self.populate()
self.reset()
self.endResetModel()
def populate(self):
self._data = {}
@ -311,8 +312,9 @@ def add_plugin(self):
except NameConflict as e:
return error_dialog(self, _('Already exists'),
unicode(e), show=True)
self._plugin_model.beginResetModel()
self._plugin_model.populate()
self._plugin_model.reset()
self._plugin_model.endResetModel()
self.changed_signal.emit()
self.check_for_add_to_toolbars(plugin, previously_installed=plugin.name in installed_plugins)
info_dialog(self, _('Success'),
@ -371,8 +373,9 @@ def modify_plugin(self, op=''):
msg = _('Plugin <b>{0}</b> successfully removed').format(plugin.name)
if remove_plugin(plugin):
self._plugin_model.beginResetModel()
self._plugin_model.populate()
self._plugin_model.reset()
self._plugin_model.endResetModel()
self.changed_signal.emit()
info_dialog(self, _('Success'), msg, show=True,
show_copy_button=False)
@ -390,8 +393,9 @@ def update_plugins(self, not_installed=False):
mode = FILTER_NOT_INSTALLED if not_installed else FILTER_UPDATE_AVAILABLE
d = PluginUpdaterDialog(self.gui, initial_filter=mode)
d.exec_()
self._plugin_model.beginResetModel()
self._plugin_model.populate()
self._plugin_model.reset()
self._plugin_model.endResetModel()
self.changed_signal.emit()
if d.do_restart:
self.restart_now.emit()

View file

@ -112,9 +112,10 @@ def add(self, names):
for name in names:
if name is None or name.startswith('---'): continue
actions.append(self.name_to_action(name, self.gui))
self.beginResetModel()
self._data.extend(actions)
self._data.sort()
self.reset()
self.endResetModel()
def remove(self, indices, allowed):
rows = [i.row() for i in indices]
@ -128,13 +129,15 @@ def remove(self, indices, allowed):
for i, ac in enumerate(self._data):
if i not in remove:
ndata.append(ac)
self.beginResetModel()
self._data = ndata
self.reset()
self.endResetModel()
def restore_defaults(self):
current = gprefs.defaults[self.gprefs_name]
self.beginResetModel()
self._data = self.get_all_actions(current)
self.reset()
self.endResetModel()
class CurrentModel(BaseModel):
@ -172,8 +175,9 @@ def add(self, names):
else:
actions.append(ac)
self.beginResetModel()
self._data.extend(actions)
self.reset()
self.endResetModel()
return reject
def remove(self, indices):
@ -189,8 +193,9 @@ def remove(self, indices):
for i, ac in enumerate(self._data):
if i not in remove:
ndata.append(ac)
self.beginResetModel()
self._data = ndata
self.reset()
self.endResetModel()
return rejected
def commit(self):
@ -211,8 +216,9 @@ def commit(self):
def restore_defaults(self):
current = gprefs.defaults[self.gprefs_name]
self.beginResetModel()
self._data = [self.name_to_action(x, self.gui) for x in current]
self.reset()
self.endResetModel()
class ConfigWidget(ConfigWidgetBase, Ui_Form):

View file

@ -10,7 +10,7 @@
from functools import partial
from PyQt5.Qt import QComboBox, Qt, QLineEdit, QStringList, pyqtSlot, QDialog, \
from PyQt5.Qt import QComboBox, Qt, QLineEdit, pyqtSlot, QDialog, \
pyqtSignal, QCompleter, QAction, QKeySequence, QTimer, \
QString, QIcon, QMenu
@ -108,7 +108,7 @@ def initialize(self, opt_name, colorize=False, help_text=_('Search')):
for item in config[opt_name]:
if item not in items:
items.append(item)
self.addItems(QStringList(items))
self.addItems(items)
try:
self.line_edit.setPlaceholderText(help_text)
except:

View file

@ -10,7 +10,7 @@
from PyQt5.Qt import (
Qt, QMenu, QPoint, QIcon, QDialog, QGridLayout, QLabel, QLineEdit, QComboBox,
QDialogButtonBox, QSize, QVBoxLayout, QListWidget, QStringList, QRadioButton, QAction)
QDialogButtonBox, QSize, QVBoxLayout, QListWidget, QRadioButton, QAction)
from calibre.gui2 import error_dialog, question_dialog, gprefs
from calibre.gui2.dialogs.confirm_delete import confirm
@ -30,7 +30,7 @@ def __init__(self, names, txt, parent=None):
l.addWidget(la)
self._names = QListWidget(self)
self._names.addItems(QStringList(sorted(names, key=sort_key)))
self._names.addItems(sorted(names, key=sort_key))
self._names.setSelectionMode(self._names.ExtendedSelection)
l.addWidget(self._names)

View file

@ -186,7 +186,7 @@ def sort(self, col, order, reset=True):
lambda x: sort_key(unicode(self.data_as_text(x, col))),
descending)
if reset:
self.reset()
self.beginResetModel(), self.endResetModel()
class SearchFilter(SearchQueryParser):

View file

@ -85,7 +85,7 @@ def clear_results(self):
self.cover_pool.abort()
self.details_pool.abort()
self.total_changed.emit(self.rowCount())
self.reset()
self.beginResetModel(), self.endResetModel()
def add_result(self, result, store_plugin):
if result not in self.all_matches:
@ -287,7 +287,7 @@ def sort(self, col, order, reset=True):
descending)
self.reorder_matches()
if reset:
self.reset()
self.beginResetModel(), self.endResetModel()
def reorder_matches(self):
def keygen(x):

View file

@ -108,7 +108,7 @@ def sort(self, col, order, reset=True):
lambda x: sort_key(unicode(self.data_as_text(x, col))),
descending)
if reset:
self.reset()
self.beginResetModel(), self.endResetModel()
class SearchFilter(SearchQueryParser):

View file

@ -563,8 +563,9 @@ def dropMimeData(self, md, action, row, column, parent):
self.chars[x] = None
for x in reversed(codes):
self.chars.insert(row, x)
self.beginResetModel()
self.chars = [x for x in self.chars if x is not None]
self.reset()
self.endResetModel()
tprefs['charmap_favorites'] = list(self.chars)
return True
@ -651,8 +652,9 @@ def set_allow_drag_and_drop(self, enabled):
def show_chars(self, name, codes):
self.showing_favorites = name == _('Favorites')
self._model.beginResetModel()
self._model.chars = codes
self._model.reset()
self._model.endResetModel()
self.scrollToTop()
def mouseMoveEvent(self, ev):
@ -687,8 +689,9 @@ def context_menu(self, pos):
def restore_defaults(self):
del tprefs['charmap_favorites']
self.model().beginResetModel()
self.model().chars = list(tprefs['charmap_favorites'])
self.model().reset()
self.model().endResetModel()
def copy_to_clipboard(self, char_code):
c = QApplication.clipboard()
@ -702,8 +705,9 @@ def remove_from_favorites(self, char_code):
elif char_code in existing:
existing.remove(char_code)
tprefs['charmap_favorites'] = existing
self.model().beginResetModel()
self.model().chars.remove(char_code)
self.model().reset()
self.model().endResetModel()
class CharSelect(Dialog):

View file

@ -894,7 +894,7 @@ def __init__(self, parent=None, show_open_in_editor=False):
self.l = l = QHBoxLayout(self)
self.setLayout(l)
self.syncpos = 0
l.setMargin(0), l.setSpacing(0)
l.setContentsMargins(0, 0, 0, 0), l.setSpacing(0)
self.view = DiffSplit(self, show_open_in_editor=show_open_in_editor)
l.addWidget(self.view)
self.add_diff = self.view.add_diff

View file

@ -150,8 +150,9 @@ def build(self):
self.image_names.append(name)
def refresh(self):
self.beginResetModel()
self.build()
self.reset()
self.endResetModel()
def rowCount(self, *args):
return len(self.image_names)

View file

@ -417,11 +417,12 @@ def data(self, index, role):
def do_filter(self, text):
text = unicode(text)
self.beginResetModel()
self.filtered_searches = []
for i, search in enumerate(self.searches):
if primary_contains(text, search['name']):
self.filtered_searches.append(i)
self.reset()
self.endResetModel()
def move_entry(self, row, delta):
a, b = row, row + delta
@ -433,9 +434,10 @@ def move_entry(self, row, delta):
tprefs['saved_searches'] = self.searches
def add_searches(self, count=1):
self.beginResetModel()
self.searches = tprefs['saved_searches']
self.filtered_searches.extend(xrange(len(self.searches) - 1, len(self.searches) - 1 - count, -1))
self.reset()
self.endResetModel()
def remove_searches(self, rows):
rows = sorted(set(rows), reverse=True)

View file

@ -77,9 +77,10 @@ def previous_container(self):
return self.states[self.pos - 1].container
def open_book(self, container):
self.beginResetModel()
self.states = [State(container)]
self.pos = 0
self.reset()
self.endResetModel()
def truncate(self):
extra = self.states[self.pos+1:]

View file

@ -20,7 +20,7 @@
from calibre import prepare_string_for_xml, human_readable
from calibre.ebooks.oeb.polish.utils import lead_text, guess_type
from calibre.gui2 import error_dialog, choose_files, choose_save_file, NONE, info_dialog, choose_images
from calibre.gui2 import error_dialog, choose_files, choose_save_file, info_dialog, choose_images
from calibre.gui2.tweak_book import tprefs, current_container
from calibre.utils.icu import primary_sort_key, sort_key, primary_contains
from calibre.utils.matcher import get_char, Matcher
@ -452,7 +452,7 @@ def setup_ui(self):
Simply type in the characters:
{chars}
and press Enter.''').format(example=example, chars=chars))
hl.setMargin(50), hl.setAlignment(Qt.AlignTop | Qt.AlignHCenter)
hl.setContentsMargins(50, 50, 50, 50), hl.setAlignment(Qt.AlignTop | Qt.AlignHCenter)
l.addWidget(hl)
self.results = Results(self)
self.results.setVisible(False)
@ -554,15 +554,15 @@ def data(self, index, role):
return QVariant(self.items[index.row()])
if role == Qt.DisplayRole:
return QVariant('\xa0' * 20)
return NONE
def filter(self, query):
query = unicode(query or '')
self.beginResetModel()
if not query:
self.items = tuple((text, None) for text in self.names)
else:
self.items = tuple(self.matcher(query).iteritems())
self.reset()
self.endResetModel()
self.filtered.emit(not bool(query))
def find_name(self, name):

View file

@ -10,7 +10,7 @@
QCursor, QColor, QWidget, QPixmap, QSplitterHandle, QToolButton,
QVariant, Qt, pyqtSignal, QRegExp, QSize, QSplitter, QPainter,
QLineEdit, QComboBox, QPen, QGraphicsScene, QMenu, QStringListModel,
QCompleter, QStringList, QTimer, QRect, QGraphicsView, QByteArray)
QCompleter, QTimer, QRect, QGraphicsView, QByteArray)
from calibre.gui2 import (error_dialog, pixmap_to_data, gprefs,
warning_dialog)
@ -625,7 +625,7 @@ def store_name(self):
def initialize(self, name):
self._name = name
self.addItems(QStringList(history.get(self.store_name, [])))
self.addItems(history.get(self.store_name, []))
self.setEditText('')
self.lineEdit().editingFinished.connect(self.save_history)