This commit is contained in:
Kovid Goyal 2015-04-26 23:01:40 +05:30
commit 124d946cfb
2 changed files with 15 additions and 6 deletions

View File

@ -836,6 +836,10 @@ class RulesModel(QAbstractListModel): # {{{
else: else:
continue continue
break break
if action_name == Rule.INVALID_CONDITION:
return (
_('<li>The condition using column <b>%(col)s</b> is <b>invalid</b>')
% dict(col=c))
return ( return (
_('<li>If the <b>%(col)s</b> column <b>%(action)s</b> value: <b>%(val)s</b>') % dict( _('<li>If the <b>%(col)s</b> column <b>%(action)s</b> value: <b>%(val)s</b>') % dict(
col=c, action=action_name, val=prepare_string_for_xml(v))) col=c, action=action_name, val=prepare_string_for_xml(v)))
@ -864,7 +868,7 @@ class EditRules(QWidget): # {{{
self.add_button = QPushButton(QIcon(I('plus.png')), _('Add Rule'), self.add_button = QPushButton(QIcon(I('plus.png')), _('Add Rule'),
self) self)
self.remove_button = QPushButton(QIcon(I('minus.png')), self.remove_button = QPushButton(QIcon(I('minus.png')),
_('Remove Rule'), self) _('Remove Rule(s)'), self)
self.add_button.clicked.connect(self.add_rule) self.add_button.clicked.connect(self.add_rule)
self.remove_button.clicked.connect(self.remove_rule) self.remove_button.clicked.connect(self.remove_rule)
l.addWidget(self.add_button, l.rowCount(), 0) l.addWidget(self.add_button, l.rowCount(), 0)
@ -873,7 +877,7 @@ class EditRules(QWidget): # {{{
self.g = g = QGridLayout() self.g = g = QGridLayout()
self.rules_view = QListView(self) self.rules_view = QListView(self)
self.rules_view.doubleClicked.connect(self.edit_rule) self.rules_view.doubleClicked.connect(self.edit_rule)
self.rules_view.setSelectionMode(self.rules_view.SingleSelection) self.rules_view.setSelectionMode(self.rules_view.ExtendedSelection)
self.rules_view.setAlternatingRowColors(True) self.rules_view.setAlternatingRowColors(True)
self.rtfd = RichTextDelegate(parent=self.rules_view, max_width=400) self.rtfd = RichTextDelegate(parent=self.rules_view, max_width=400)
self.rules_view.setItemDelegate(self.rtfd) self.rules_view.setItemDelegate(self.rtfd)
@ -1003,11 +1007,12 @@ class EditRules(QWidget): # {{{
error_dialog(self, _('No rule selected'), error_dialog(self, _('No rule selected'),
_('No rule selected for %s.')%txt, show=True) _('No rule selected for %s.')%txt, show=True)
return None return None
return rows[0] return sorted(rows, reverse=True)
def remove_rule(self): def remove_rule(self):
row = self.get_selected_row(_('removal')) rows = self.get_selected_row(_('removal'))
if row is not None: if rows is not None:
for row in rows:
self.model.remove_rule(row) self.model.remove_rule(row)
self.changed.emit() self.changed.emit()

View File

@ -17,6 +17,8 @@ class Rule(object): # {{{
SIGNATURE = '# BasicColorRule():' SIGNATURE = '# BasicColorRule():'
INVALID_CONDITION = _('INVALID CONDITION')
def __init__(self, fm, color=None): def __init__(self, fm, color=None):
self.color = color self.color = color
self.fm = fm self.fm = fm
@ -28,6 +30,8 @@ class Rule(object): # {{{
v = self.validate_condition(col, action, val) v = self.validate_condition(col, action, val)
if v: if v:
raise ValueError(v) raise ValueError(v)
if self.apply_condition((col, action, val)) is None:
action = self.INVALID_CONDITION
self.conditions.append((col, action, val)) self.conditions.append((col, action, val))
def validate_condition(self, col, action, val): def validate_condition(self, col, action, val):