Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
FSL
fsleyes
fsleyes-widgets
Commits
c21ab99d
Commit
c21ab99d
authored
Oct 06, 2021
by
Paul McCarthy
🚵
Browse files
ENH: Option to suppress propagation of enter event from list popup
parent
ec82fa31
Changes
1
Hide whitespace changes
Inline
Side-by-side
fsleyes_widgets/autotextctrl.py
View file @
c21ab99d
...
...
@@ -32,20 +32,24 @@ class AutoTextCtrl(wx.Panel):
def
__init__
(
self
,
parent
,
style
=
0
,
modal
=
True
):
"""Create an ``AutoTextCtrl``.
"""Create an ``AutoTextCtrl``. Supported style flags are:
- :data:`ATC_CASE_SENSITIVE`: restrict the auto-completion
options to case sensitive matches.
- :data:`ATC_NO_PROPAGATE_ENTER`: Cause enter events on the
:class:`AutoCompletePopup` to *not* be propagated upwards as
``EVT_ATC_TEXT_ENTER`` events.
:arg parent: The ``wx`` parent object.
:arg style: Can be :data:`ATC_CASE_SENSITIVE` to restrict the
auto-completion options to case sensitive matches.
:arg style: Style flags.
:arg modal: If ``True`` (the default), the :class:`AutoCompletePopup`
is shoown modally. This option is primarily for testing
purposes.
"""
self
.
__caseSensitive
=
style
&
ATC_CASE_SENSITIVE
wx
.
Panel
.
__init__
(
self
,
parent
)
self
.
__style
=
style
self
.
__modal
=
modal
self
.
__popup
=
None
self
.
__textCtrl
=
wx
.
TextCtrl
(
self
,
style
=
wx
.
TE_PROCESS_ENTER
)
...
...
@@ -216,18 +220,13 @@ class AutoTextCtrl(wx.Panel):
prefix.
"""
text
=
text
.
strip
()
style
=
0
if
self
.
__caseSensitive
:
style
|=
ATC_CASE_SENSITIVE
text
=
text
.
strip
()
popup
=
AutoCompletePopup
(
self
,
self
,
text
,
self
.
__options
,
style
)
self
.
__
style
)
if
popup
.
GetCount
()
==
0
:
popup
.
Destroy
()
...
...
@@ -275,6 +274,13 @@ auto-completion pattern matching will be case sensitive.
"""
ATC_NO_PROPAGATE_ENTER
=
2
"""Syle flag for use with the :class:`AutoTextCtrl` class. If set,
enter events which occur on the :class:`AutoCompletePopup` list will
*not* be propagated as :attr:`EVT_ATC_TEXT_ENTER` events.
"""
_AutoTextCtrlEnterEvent
,
_EVT_ATC_TEXT_ENTER
=
wxevent
.
NewEvent
()
...
...
@@ -297,29 +303,30 @@ class AutoCompletePopup(wx.Dialog):
"""
def
__init__
(
self
,
parent
,
atc
,
text
,
options
,
style
=
0
):
"""Create an ``AutoCompletePopup``.
"""Create an ``AutoCompletePopup``. Accepts the same style flags as
the :class:`AutoTextCtrl`.
:arg parent: The ``wx`` parent object.
:arg atc: The :class:`AutoTextCtrl` that is using this popup.
:arg text: Initial text value.
:arg options: A list of all possible auto-completion options.
:arg style: Set to :data:`ATC_CASE_SENSITIVE` to make the
pattern matching case sensitive.
:arg style: Style flags.
"""
wx
.
Dialog
.
__init__
(
self
,
parent
,
style
=
(
wx
.
NO_BORDER
|
wx
.
STAY_ON_TOP
))
self
.
__alive
=
True
self
.
__caseSensitive
=
style
&
ATC_CASE_SENSITIVE
self
.
__atc
=
atc
self
.
__options
=
options
self
.
__textCtrl
=
wx
.
TextCtrl
(
self
,
value
=
text
,
style
=
wx
.
TE_PROCESS_ENTER
)
self
.
__listBox
=
wx
.
ListBox
(
self
,
style
=
(
wx
.
LB_SINGLE
))
self
.
__alive
=
True
self
.
__caseSensitive
=
style
&
ATC_CASE_SENSITIVE
self
.
__propagateEnter
=
not
(
style
&
ATC_NO_PROPAGATE_ENTER
)
self
.
__atc
=
atc
self
.
__options
=
options
self
.
__textCtrl
=
wx
.
TextCtrl
(
self
,
value
=
text
,
style
=
wx
.
TE_PROCESS_ENTER
)
self
.
__listBox
=
wx
.
ListBox
(
self
,
style
=
(
wx
.
LB_SINGLE
))
self
.
__listBox
.
Set
(
self
.
__getMatches
(
text
))
...
...
@@ -430,9 +437,10 @@ class AutoCompletePopup(wx.Dialog):
self
.
__alive
=
False
value
=
self
.
__textCtrl
.
GetValue
()
idx
=
self
.
__textCtrl
.
GetInsertionPoint
()
atc
=
self
.
__atc
genEnter
=
genEnter
and
self
.
__propagateEnter
value
=
self
.
__textCtrl
.
GetValue
()
idx
=
self
.
__textCtrl
.
GetInsertionPoint
()
atc
=
self
.
__atc
# Under wx/GTK, we might still receive focus
# events, which will trigger another call to
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment