X-Git-Url: http://www.iramuteq.org/git?a=blobdiff_plain;f=vitemspicker.py;h=79e75dfb05caf973c90eee51cd7d67cdd7c202c1;hb=refs%2Fheads%2F3.0;hp=962fe57eca82fbaffde2b1184a0ad025e504f20d;hpb=2560c66bef5e023dbce18c556363ec956bd15e47;p=iramuteq diff --git a/vitemspicker.py b/vitemspicker.py index 962fe57..79e75df 100644 --- a/vitemspicker.py +++ b/vitemspicker.py @@ -1,3 +1,6 @@ +# -*- coding: utf-8 -*- +#modification pour python 3 : Laurent Mérat, 6x7 - mai 2020 + ''' Created on Oct 3, 2010 @@ -11,22 +14,37 @@ items_picker.ItemsPicker: 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 @@ -41,6 +59,7 @@ class VItemsPicker(wx.Panel): 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, @@ -60,33 +79,29 @@ 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 @@ -95,55 +110,53 @@ The items are displayed in the selection part of the widget''' 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] @@ -156,20 +169,19 @@ The items are displayed in the selection part of the widget''' 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: @@ -178,9 +190,8 @@ The items are displayed in the selection part of the widget''' # 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)]) @@ -188,8 +199,7 @@ The items are displayed in the selection part of the widget''' self._SetDestItems() #self.SetSelections(items) self._FireIpSelectionChanged() - - + def _CreateSourceList(self, items, label): style = LB_STYLE if self._ipStyle & IP_SORT_CHOICES: @@ -199,14 +209,13 @@ The items are displayed in the selection part of the widget''' 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', _(u"POS").decode('utf8')], 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: @@ -221,13 +230,13 @@ The items are displayed in the selection part of the widget''' #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()