[UliPad]新的EVT_STC_AUTOCOMP_SELECTION事件

在最新的 UliPad 我新增了一个STC(StyledTextCtrl)事件的处理 EVT_STC_AUTOCOMP_SELECTION,这个事件会在自动完成弹出列表中选择后,将要插入字符串到编辑器中时发出的。不过这个事件是当你调用了AutoCompShow来显示弹出列表才会激活的,如果你使用的是UserListShow这个方法,那么STC会在选中某项后发出EVT_STC_USERLISTSELECTION事件。不过对于EVT_STC_AUTOCOMP_SELECTION事件,好象它只是一个通知,你没有办法取消它的处理。在不知道这个新的事件之前,UliPad的InputAssistant对于列表的处理不完整。原本是有一个功能是当用户从列表中选择一项后,将根据这个值去查找acp文件中的autovalues段,这项值将作为key值来查找,如果有匹配的项,那么将根据它的值进行处理。这样可以做一些更复杂的操作。但由于没有这个事件,我无法得知何时需要进行这样的处理。而在InputAssistant处理中,的确有几处没有使用UserListShow而是使用AutoCompShow,因此只要是使用AutoCompShow的地方都存在这个问题。虽然我想试图将所有的AutoCompShow改为UserListShow,但是由于两者的调用不同,无法实现我的要求。象AutoCompShow可以指定已经匹配的字符长度,而UserListShow则不行。

而有了这个事件,我就可以在这个事件中通过CallAfter来异步处理选中事件。不过在开始造成了 UliPad 的一些Bug,后来检查是由于wxPython版本的问题。我开发使用的是2.8.3.0,而低于这个版本的没有这个方法。所以后来又加了判断,版本大于等于2.8.3.0的可以对这个事件进行处理。这样的话,弹出列表如果希望有完整的功能,需要在2.8.3.0下运行才可以。

你可能感兴趣的:(wxPython)