Skip to content

Commit 8b093c6

Browse files
committed
Merge branch 'develop' into feature/multipleQuickNav
2 parents 80a79fb + fc14709 commit 8b093c6

File tree

2 files changed

+40
-15
lines changed

2 files changed

+40
-15
lines changed

addon/globalPlugins/webAccess/gui/rule/manager.py

Lines changed: 38 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
import queueHandler
4242
import ui
4343

44-
from ...ruleHandler import GestureScope, Rule, Result, Zone, ruleTypes
44+
from ...ruleHandler import Criteria, GestureScope, Rule, Result, Selector, Zone, ruleTypes
4545
from ...utils import guarded
4646
from ...webModuleHandler import getEditableWebModule, save
4747
from .. import ContextualDialog, showContextualDialog, stripAccel
@@ -85,7 +85,13 @@ def show(context, parent=None):
8585
TreeItemData = namedtuple("TreeItemData", ("label", "obj", "children"))
8686

8787

88-
def getCriteriaLabel(criteria):
88+
def getCriteriaOrSelectorLabel(criteriaOrSelector):
89+
if isinstance(criteriaOrSelector, Criteria):
90+
criteria = criteriaOrSelector
91+
selector = None
92+
elif isinstance(criteriaOrSelector, Selector):
93+
selector = criteriaOrSelector
94+
criteria = selector.criteria
8995
rule = criteria.rule
9096
label = rule.name
9197
if len(rule.criteria) > 1:
@@ -98,6 +104,13 @@ def getCriteriaLabel(criteria):
98104
inputCore.getDisplayTextForGestureIdentifier(identifier)[1]
99105
for identifier in list(rule._gestureMap.keys())
100106
))
107+
if selector is not None:
108+
if selector is criteria.startSelector:
109+
# Translators: A mention on the Rules Manager dialog for free zone selectors
110+
label += _(" (start)")
111+
elif selector is criteria.endSelector:
112+
# Translators: A mention on the Rules Manager dialog for free zone selectors
113+
label += _(" (end)")
101114
return label
102115

103116

@@ -208,13 +221,16 @@ def getRulesByContext(ruleManager, filter=None, active=False):
208221
alternatives = (result.criteria for result in results)
209222
else:
210223
alternatives = (criteria for criteria in rule.criteria)
211-
for criteria in alternatives:
224+
for selector in (
225+
s for c in alternatives for s in ( c.nodeSelector, c.startSelector, c.endSelector)
226+
if s is not None
227+
):
212228
contexts.setdefault((
213-
criteria.contextPageTitle or "", # Avoiding None eases later sorting
214-
criteria.contextPageType or "",
215-
criteria.contextParent or "",
229+
selector.contextPageTitle or "", # Avoiding None eases later sorting
230+
selector.contextPageType or "",
231+
selector.contextParent or "",
216232
), []).append(TreeItemData(
217-
label=getCriteriaLabel(criteria),
233+
label=getCriteriaOrSelectorLabel(selector),
218234
obj=rule,
219235
children=[]
220236
))
@@ -237,11 +253,20 @@ def getRulesByContext(ruleManager, filter=None, active=False):
237253
else:
238254
# Translators: A context grouping label on the Rules Manager
239255
label = "General"
240-
yield TreeItemData(
241-
label=label,
242-
obj=None,
243-
children=sorted(tids, key=lambda tid: tid.label)
244-
)
256+
257+
def sortKey(tld):
258+
label = tld.label
259+
for index, suffix in (
260+
# Translators: A mention on the Rules Manager dialog for free zone selectors
261+
(0, _(" (end)")),
262+
# Translators: A mention on the Rules Manager dialog for free zone selectors
263+
(1, _(" (end)")),
264+
):
265+
if label.endswith(suffix):
266+
label = label[:-len(suffix)] + str(index)
267+
return label
268+
269+
yield TreeItemData(label=label, obj=None, children=sorted(tids, key=sortKey))
245270

246271

247272
def getRulesByName(ruleManager, filter=None, active=False):
@@ -283,7 +308,7 @@ def getRulesByPosition(ruleManager, filter=None, active=True):
283308
if layer and rule.layer != layer:
284309
continue
285310
tid = TreeItemData(
286-
label=getCriteriaLabel(result.criteria),
311+
label=getCriteriaOrSelectorLabel(result.criteria),
287312
obj=result,
288313
children=[]
289314
)

addon/globalPlugins/webAccess/ruleHandler/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1684,8 +1684,8 @@ def setIfNotNoneOrEmptyString(key, value):
16841684
"end": self.endSelector.dump(),
16851685
}
16861686
gestures = {
1687-
grestureId: (scope.value, actionId)
1688-
for gestureId, (scope, actionId) in self.gestures
1687+
gestureId: (scope.value, actionId)
1688+
for gestureId, (scope, actionId) in self.gestures.items()
16891689
}
16901690
setIfNotDefault("gestures", gestures, {})
16911691
setIfNotDefault("properties", self.properties.dump(), {})

0 commit comments

Comments
 (0)