+# -*- coding: utf-8 -*-
+#modification pour python 3 : Laurent Mérat, 6x7 - mai 2020
+
'''
Created on Oct 3, 2010
Derived from wxPanel
'''
+
+#------------------------------------
+# import des modules python
+#------------------------------------
+import langue
+langue.run()
+
+#------------------------------------
+# import des modules wx
+#------------------------------------
import wx
+
+#------------------------------------
+# import des fichiers du projet
+#------------------------------------
from listlex import ListForSpec
+
+
__version__ = 0.1
IP_DEFAULT_STYLE = 0
IP_SORT_CHOICES = 1
IP_SORT_SELECTED = 2
IP_REMOVE_FROM_CHOICES = 4
-
-
wxEVT_IP_SELECTION_CHANGED = wx.NewEventType()
EVT_IP_SELECTION_CHANGED = wx.PyEventBinder(wxEVT_IP_SELECTION_CHANGED, 1)
LB_STYLE = wx.LB_EXTENDED|wx.LB_HSCROLL
class IpSelectionChanged(wx.PyCommandEvent):
+
def __init__(self, id, items, object = None):
wx.PyCommandEvent.__init__(self, wxEVT_IP_SELECTION_CHANGED, id)
self.__items = items
ItemsPicker is a widget that allows the user to form a set of picked
items out of a given list
'''
+
def __init__(self, parent, id=wx.ID_ANY, choices = [],
label = '', selectedLabel = '',
ipStyle = IP_DEFAULT_STYLE,
sizer.Add(self._CreateDestList(selectedLabel), 1,
wx.EXPAND|wx.ALL, 5)
self.SetSizer(sizer)
-
-
+
def SetItems(self, items):
'''SetItems(self, items)=> None
items - Sequence of strings that the user can pick from'''
pass
#return self._source.SetItems(items)
-
-
+
def GetItems(self):
'''GetItems(self)=> items
returns list of strings that the user can pick from'''
return self._source.GetItems()
-
-
+
+ # propriété de VItemsPicker
Items = property(fget = GetItems,
fset = SetItems,
doc = 'See GetItems/SetItems')
-
-
+
def GetSelections(self):
'''GetSelections(self)=>items
returns list of strings that were selected
'''
return [self._destData[i][0] for i in self._destData]
-
-
+
def SetSelections(self, items):
'''SetSelections(self, items)=>None
items - Sequence of strings to be selected
if items != self._dest.GetItems():
self._dest.SetItems(items)
self._FireIpSelectionChanged()
-
-
+
+ # propriété de VItemsPicker
Selections = property(fget = GetSelections,
fset = SetSelections,
doc = 'See GetSelections/SetSelections')
-
-
+
def _CreateButtons(self):
sizer = wx.BoxSizer(wx.VERTICAL)
self.bAdd = wx.Button(self, -1, label = 'Add ->')
self.bAdd.Bind(wx.EVT_BUTTON, self._OnAdd)
self.bRemove = wx.Button(self, -1, label = '<- Remove')
self.bRemove.Bind(wx.EVT_BUTTON, self._OnRemove)
- sizer.Add(self.bAdd, 0, wx.EXPAND|wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)
+ sizer.Add(self.bAdd, 0, wx.EXPAND, 5)
sizer.Add(self.bRemove, 0, wx.EXPAND|wx.ALL, 5)
return sizer
-
-
+
def _set_add_button_label(self, label=None):
if label is None:
return
self.bAdd.SetLabel(label)
-
+
+ # propriété ???
add_button_label = property(fset = _set_add_button_label, fget = lambda x:x)
-
-
+
def _set_remove_button_label(self, label=None):
if label is None:
return
self.bRemove.SetLabel(label)
-
+
+ # propriété ???
remove_button_label = property(fset = _set_remove_button_label, fget = lambda x:x)
-
-
+
def _OnAdd(self, e):
if self._ipStyle & IP_REMOVE_FROM_CHOICES:
self._MoveItems(self._source,self._dest)
else:
self._AddSelectedItems()
-
+
def _MoveItems(self,source,dest):
selections = source.GetSelections()
- selectedItems = map(source.GetString, selections)
+ selectedItems = list(map(source.GetString, selections))
dest.SetItems(dest.GetItems() + selectedItems)
selections = set(selections)
#source.SetItems([item for i, item in enumerate(source.GetItems())\
# if i not in selections])
self._FireIpSelectionChanged()
-
+
def _AddSelectedItems(self):
newItems = self._source.getselectedwords()#map(self._source.GetString, self._source.GetSelections())
items = [self._destData[i][0] for i in self._destData]
self._source.Refresh()
#self.SetSelections(items)
self._FireIpSelectionChanged()
-
+
def _FireIpSelectionChanged(self):
self.GetEventHandler().ProcessEvent(
IpSelectionChanged(self.GetId(),
None,
self ))
-
-
+
def _OnRemove(self, e):
if self._ipStyle & IP_REMOVE_FROM_CHOICES:
self._MoveItems(self._dest, self._source)
else:
self._RemoveSelected()
-
+
def _RemoveSelected(self):
selections = self._dest.getselectedwords()
if selections:
# if i not in selections]
#notselected = [item for i, item in enumerate(allItems)\
# if i in selections]
-
for item in selections :
- print item
+ print(item)
del self._source.selected[item]
tokeep = [self._destData[i][0] for i in self._destData if self._destData[i][0] not in selections]
self._destData = dict([[i, [word, '']] for i, word in enumerate(tokeep)])
self._SetDestItems()
#self.SetSelections(items)
self._FireIpSelectionChanged()
-
-
+
def _CreateSourceList(self, items, label):
style = LB_STYLE
if self._ipStyle & IP_SORT_CHOICES:
sizer.Add(wx.StaticText(self, label = label), 0,
wx.ALIGN_LEFT|wx.ALL, 5)
#self._source = wx.VListBox(self, -1, style = style)
- self._source = ListForSpec(self, self.parent, dlist = items, first = ['eff'], menu = True)
+ self._source = ListForSpec(self, self.parent, dlist = items, first = ['eff', _("POS")], menu = True)
self._source.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self._OnDClick)
#self._source.Bind(wx.EVT_LISTBOX_DCLICK, self._OnDClick)
#self._source.SetItems(items)
sizer.Add(self._source, 1, wx.EXPAND|wx.ALL, 5)
return sizer
-
-
+
def _CreateDestList(self, label):
style = LB_STYLE
if self._ipStyle & IP_SORT_SELECTED:
#self._dest.Bind(wx.EVT_LISTBOX_DCLICK, self._OnDClick)
sizer.Add(self._dest, 1, wx.EXPAND|wx.ALL, 5)
return sizer
-
+
def _SetDestItems(self):
self._dest.itemDataMap = self._destData
- self._dest.itemIndexMap = self._destData.keys()
+ self._dest.itemIndexMap = list(self._destData.keys())
self._dest.SetItemCount(len(self._destData))
self._dest.Refresh()
-
+
def _OnDClick(self, e):
lb = e.GetEventObject()
selections = lb.GetSelections()