mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Reverted Widget in __init__.py and moved functionality to search_and_replace.py by subclassing set_value_handler, get_value_handler and connect_gui_obj_handler
This commit is contained in:
parent
9fc6dc6878
commit
051d7c71c2
@ -10,7 +10,7 @@ import textwrap, codecs, importlib
|
||||
from functools import partial
|
||||
|
||||
from PyQt4.Qt import QWidget, QSpinBox, QDoubleSpinBox, QLineEdit, QTextEdit, \
|
||||
QCheckBox, QComboBox, Qt, QIcon, pyqtSignal, QLabel, QTableWidget
|
||||
QCheckBox, QComboBox, Qt, QIcon, pyqtSignal, QLabel
|
||||
|
||||
from calibre.customize.conversion import OptionRecommendation
|
||||
from calibre.ebooks.conversion.config import load_defaults, \
|
||||
@ -160,15 +160,6 @@ class Widget(QWidget):
|
||||
return g.xpath if g.xpath else None
|
||||
elif isinstance(g, RegexEdit):
|
||||
return g.regex if g.regex else None
|
||||
elif isinstance(g, QTableWidget):
|
||||
import json
|
||||
ans = []
|
||||
for row in xrange(0, g.rowCount()):
|
||||
colItems = []
|
||||
for col in xrange(0, g.columnCount()):
|
||||
colItems.append(unicode(g.item(row, col).text()))
|
||||
ans.append(colItems)
|
||||
return json.dumps(ans)
|
||||
else:
|
||||
raise Exception('Can\'t get value from %s'%type(g))
|
||||
|
||||
@ -196,8 +187,6 @@ class Widget(QWidget):
|
||||
elif isinstance(g, (XPathEdit, RegexEdit)):
|
||||
g.edit.editTextChanged.connect(f)
|
||||
g.edit.currentIndexChanged.connect(f)
|
||||
elif isinstance(g, QTableWidget):
|
||||
g.cellChanged.connect(f)
|
||||
else:
|
||||
raise Exception('Can\'t connect %s'%type(g))
|
||||
|
||||
@ -231,23 +220,6 @@ class Widget(QWidget):
|
||||
g.setCheckState(Qt.Checked if bool(val) else Qt.Unchecked)
|
||||
elif isinstance(g, (XPathEdit, RegexEdit)):
|
||||
g.edit.setText(val if val else '')
|
||||
elif isinstance(g, (QTableWidget)):
|
||||
import json
|
||||
try:
|
||||
rowItems = json.loads(val)
|
||||
if not isinstance(rowItems, list):
|
||||
rowItems = []
|
||||
except:
|
||||
rowItems = []
|
||||
|
||||
|
||||
g.setRowCount(len(rowItems))
|
||||
|
||||
for row, colItems in enumerate(rowItems):
|
||||
for col, cellValue in enumerate(colItems):
|
||||
newItem = g.itemPrototype().clone()
|
||||
newItem.setText(cellValue)
|
||||
g.setItem(row,col, newItem)
|
||||
else:
|
||||
raise Exception('Can\'t set value %s in %s'%(repr(val),
|
||||
unicode(g.objectName())))
|
||||
|
@ -4,10 +4,10 @@ __license__ = 'GPL 3'
|
||||
__copyright__ = '2011, John Schember <john@nachtimwald.com>'
|
||||
__docformat__ = 'restructuredtext en'
|
||||
|
||||
import re
|
||||
import re, json
|
||||
|
||||
from PyQt4.QtCore import SIGNAL, Qt
|
||||
from PyQt4.QtGui import QTableWidgetItem, QFileDialog
|
||||
from PyQt4.QtGui import QTableWidget, QTableWidgetItem, QFileDialog
|
||||
from calibre.gui2.convert.search_and_replace_ui import Ui_Form
|
||||
from calibre.gui2.convert import Widget
|
||||
from calibre.gui2 import error_dialog
|
||||
@ -123,3 +123,36 @@ class SearchAndReplaceWidget(Widget, Ui_Form):
|
||||
_('Invalid regular expression: %s')%err, show=True)
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
# Options handling
|
||||
|
||||
def connect_gui_obj_handler(self, g, slot):
|
||||
if isinstance(g, QTableWidget):
|
||||
g.cellChanged.connect(slot)
|
||||
|
||||
def get_value_handler(self, g):
|
||||
ans = []
|
||||
for row in xrange(0, g.rowCount()):
|
||||
colItems = []
|
||||
for col in xrange(0, g.columnCount()):
|
||||
colItems.append(unicode(g.item(row, col).text()))
|
||||
ans.append(colItems)
|
||||
return json.dumps(ans)
|
||||
|
||||
def set_value_handler(self, g, val):
|
||||
try:
|
||||
rowItems = json.loads(val)
|
||||
if not isinstance(rowItems, list):
|
||||
rowItems = []
|
||||
except:
|
||||
rowItems = []
|
||||
|
||||
g.setRowCount(len(rowItems))
|
||||
|
||||
for row, colItems in enumerate(rowItems):
|
||||
for col, cellValue in enumerate(colItems):
|
||||
newItem = g.itemPrototype().clone()
|
||||
newItem.setText(cellValue)
|
||||
g.setItem(row,col, newItem)
|
||||
return True
|
||||
|
Loading…
x
Reference in New Issue
Block a user