X-Git-Url: http://www.iramuteq.org/git?a=blobdiff_plain;f=ProfList.py;h=6038edb90ce316a372872fce9eeff0d4851175a3;hb=eaa044d1147e26b82942ce56d5965c83fdddf069;hp=6b553e91068414fb1b887ce71b319ca8f101583b;hpb=10d67a5cd48583c060b6a0e77e87c41f80671027;p=iramuteq diff --git a/ProfList.py b/ProfList.py index 6b553e9..6038edb 100644 --- a/ProfList.py +++ b/ProfList.py @@ -1,11 +1,12 @@ # -*- coding: utf-8 -*- +#Author: Pierre Ratinaud +#Copyright (c) 2008-2020 Pierre Ratinaud +#modification pour python 3 : Laurent Mérat, 6x7 - mai 2020 +#License: GNU/GPL #---------------------------------------------------------------------------- # Name: ListCtrl.py -# Author: Pierre Ratinaud -# - -#comes from ListCtrl.py from the demo tool of wxPython: +# comes from ListCtrl.py from the demo tool of wxPython: # Author: Robin Dunn & Gary Dumer # # Created: @@ -13,27 +14,40 @@ # Licence: wxWindows license #---------------------------------------------------------------------------- +#------------------------------------ +# import des modules python +#------------------------------------ import os -import wx -import wx.lib.mixins.listctrl as listmix +import codecs +from operator import itemgetter +from copy import copy +import webbrowser +import tempfile + +import langue +langue.run() + +#------------------------------------ +# import des modules wx +#------------------------------------ +import wx +import wx.lib.mixins.listctrl as listmix + +#------------------------------------ +# import des fichiers du projet +#------------------------------------ from listlex import ListForSpec from chemins import ConstructPathOut, ffr from dialog import PrefUCECarac, SearchDial, message, BarFrame, ChronoFrame from tableau import copymatrix from search_tools import SearchFrame -import webbrowser -#import cStringIO -import tempfile -import codecs from functions import progressbar, treat_var_mod, doconcorde -from operator import itemgetter -from copy import copy -#--------------------------------------------------------------------------- + class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.ColumnSorterMixin): + def __init__(self, parent, gparent, profclasse, Alceste=False, cl=0, translation = False): wx.ListCtrl.__init__( self, parent, -1, style=wx.LC_REPORT|wx.LC_VIRTUAL|wx.LC_HRULES|wx.LC_VRULES) - self.parent = parent self.Alceste = Alceste self.Source = gparent @@ -42,20 +56,19 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col self.var_mod = {} self.them_mod = {} self.ira = wx.GetApp().GetTopWindow() - line1 = profclasse.pop(0) classen = [line for line in profclasse if line[0] != '*' and line[0] != '*****'] try : - self.lenact = profclasse.index([u'*****', u'*', u'*', u'*', u'*', u'*', '', '']) + self.lenact = profclasse.index(['*****', '*', '*', '*', '*', '*', '', '']) profclasse.pop(self.lenact) except ValueError: try : - self.lenact = profclasse.index([u'*', u'*', u'*', u'*', u'*', u'*', '', '']) + self.lenact = profclasse.index(['*', '*', '*', '*', '*', '*', '', '']) profclasse.pop(self.lenact) except ValueError: self.lenact = len(profclasse) try : - self.lensup = profclasse.index([u'*', u'*', u'*', u'*', u'*', u'*', '', '']) + self.lensup = profclasse.index(['*', '*', '*', '*', '*', '*', '', '']) self.lensup = self.lensup - self.lenact profclasse.pop(self.lensup) except ValueError: @@ -64,8 +77,7 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col # print self.lenact, self.lensup, self.lenet for i, line in enumerate(classen) : line[0] = i - dictdata = dict(zip([i for i in range(0,len(classen))], classen)) - + dictdata = dict(list(zip([i for i in range(0,len(classen))], classen))) if self.lenact != 0 : self.la = [dictdata[i][6] for i in range(0, self.lenact)] self.lchi = [dictdata[i][4] for i in range(0, self.lenact)] @@ -75,15 +87,13 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col self.lchi = [] self.lfreq = [] self.tmpchi = None - #adding some art self.il = wx.ImageList(16, 16) a={"sm_up":"GO_UP","sm_dn":"GO_DOWN","w_idx":"WARNING","e_idx":"ERROR","i_idx":"QUESTION"} - for k,v in a.items(): - s="self.%s= self.il.Add(wx.ArtProvider_GetBitmap(wx.ART_%s,wx.ART_TOOLBAR,(16,16)))" % (k,v) + for k,v in list(a.items()): + s="self.%s= self.il.Add(wx.ArtProvider.GetBitmap(wx.ART_%s,wx.ART_TOOLBAR,(16,16)))" % (k,v) exec(s) self.SetImageList(self.il, wx.IMAGE_LIST_SMALL) - #adding some attributes (colourful background for each item rows) self.attr1 = wx.ListItemAttr() self.attr1.SetBackgroundColour((220, 220, 220)) @@ -97,8 +107,6 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col self.attr3.SetBackgroundColour((245, 180, 180)) self.attr3s = wx.ListItemAttr() self.attr3s.SetBackgroundColour((245, 190, 190)) - - self.InsertColumn(0, "num", wx.LIST_FORMAT_RIGHT) self.InsertColumn(1, "eff. s.t.", wx.LIST_FORMAT_RIGHT) self.InsertColumn(2, "eff. total", wx.LIST_FORMAT_RIGHT) @@ -107,8 +115,6 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col self.InsertColumn(5, "Type", wx.LIST_FORMAT_RIGHT) self.InsertColumn(6, "forme", wx.LIST_FORMAT_RIGHT) self.InsertColumn(7, "p", wx.LIST_FORMAT_RIGHT) - - self.SetColumnWidth(0, 60) self.SetColumnWidth(1, 70) self.SetColumnWidth(2, 80) @@ -117,32 +123,25 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col self.SetColumnWidth(5, 60) self.SetColumnWidth(6, 140) self.SetColumnWidth(7, wx.LIST_AUTOSIZE) - #These two should probably be passed to init more cleanly #setting the numbers of items = number of elements in the dictionary self.itemDataMap = dictdata - self.itemIndexMap = dictdata.keys() + self.itemIndexMap = list(dictdata.keys()) self.SetItemCount(len(dictdata)) - #mixins listmix.ListCtrlAutoWidthMixin.__init__(self) listmix.ColumnSorterMixin.__init__(self, len(classen[0])) - #sort by genre (column 2), A->Z ascending order (1) - self.SortListItems(0, 1) - + self.SortListItems(0, True) #events #self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnItemSelected) self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnPopupTwo, self) #self.Bind(wx.EVT_LIST_ITEM_DESELECTED, self.OnItemDeselected) self.Bind(wx.EVT_LIST_COL_CLICK, self.OnColClick) - # for wxMSW self.Bind(wx.EVT_COMMAND_RIGHT_CLICK, self.OnRightClick) - # for wxGTK self.Bind(wx.EVT_RIGHT_UP, self.OnRightClick) - #for searching search_id = wx.NewId() searchall_id = wx.NewId() @@ -153,16 +152,20 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col (wx.ACCEL_CTRL|wx.ACCEL_SHIFT, ord('F'), searchall_id)]) self.SetAcceleratorTable(self.accel_tbl) + def OnGetItemColumnImage(self, item, col): + return -1 + def OnGetItemImage(self, item): + pass def OnColClick(self,event): event.Skip() def OnItemSelected(self, event): - self.currentItem = event.m_itemIndex + self.currentItem = event.GetIndex() #event.m_itemIndex def OnItemActivated(self, event): - self.currentItem = event.m_itemIndex + self.currentItem = event.GetIndex() #event.m_itemIndex def getColumnText(self, index, col): item = self.GetItem(index, col) @@ -177,20 +180,10 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col def OnGetItemText(self, item, col): index=self.itemIndexMap[item] s = self.itemDataMap[index][col] - return s - - def OnGetItemImage(self, item): - index=self.itemIndexMap[item] - genre=self.itemDataMap[index][2] - - if genre=="Rock": - return self.w_idx - elif genre=="Jazz": - return self.e_idx - elif genre=="New Age": - return self.i_idx + if isinstance(s, (int, float)): + return str(s) else: - return -1 + return s #modification pour python 3 def OnGetItemAttr(self, item): index=self.itemIndexMap[item] @@ -218,13 +211,14 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col # the ColumnSorterMixin.__ColumnSorter() method already handles the ascending/descending, # and it knows to sort on another column if the chosen columns have the same value. - def SortItems(self,sorter=cmp): - items = list(self.itemDataMap.keys()) - items.sort(sorter) - self.itemIndexMap = items - - # redraw the list - self.Refresh() +# def SortItems(self,sorter=cmp): en version python2 + def SortItems(self, sorter=None): + listTemp = sorted(self.itemDataMap.items(), + key=lambda x:x[1][self._col], reverse= (self._colSortFlag[self._col]!=True)) + dlist = dict([[line[0],line[1]] for line in listTemp]) + self.itemDataMap = dlist + self.itemIndexMap = list(dlist.keys()) + self.Refresh() # redraw the list # Used by the ColumnSorterMixin, see wx/lib/mixins/listctrl.py def GetListCtrl(self): @@ -242,14 +236,13 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col def onsearchall(self, evt) : if 'FrameSearch' not in dir(self.Source) : - self.Source.FrameSearch = SearchFrame(self.parent, -1, _(u"Search...").decode('utf8'), self.Source.corpus) + self.Source.FrameSearch = SearchFrame(self.parent, -1, _("Search..."), self.Source.corpus) self.dial = SearchDial(self, self.Source.FrameSearch.liste, 1, False) self.dial.CenterOnParent() self.dial.Show() #self.dial.Destroy() def OnRightClick(self, event): - # only do this part the first time so the events are only bound once if self.Alceste: if not hasattr(self, "popupID1"): @@ -278,8 +271,7 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col self.onmaketgen = wx.NewId() self.onchronochi2 = wx.NewId() self.onchronoprop = wx.NewId() - # self.export_classes = wx.NewId() - + #self.export_classes = wx.NewId() self.Bind(wx.EVT_MENU, self.OnPopupOne, id=self.popupID1) self.Bind(wx.EVT_MENU, self.OnPopupTwo, id=self.popupID2) self.Bind(wx.EVT_MENU, self.OnPopupThree, id=self.popupID3) @@ -305,52 +297,48 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col self.Bind(wx.EVT_MENU, self.OnMakeTgen, id=self.onmaketgen) self.Bind(wx.EVT_MENU, self.OnChronoChi2, id=self.onchronochi2) self.Bind(wx.EVT_MENU, self.OnChronoProp, id=self.onchronoprop) - # self.Bind(wx.EVT_MENU, self.on_export_classes, id = self.export_classes) - # self.Bind(wx.EVT_MENU, self.OnPopupThree, id=self.popupID3) - + #self.Bind(wx.EVT_MENU, self.on_export_classes, id = self.export_classes) + #self.Bind(wx.EVT_MENU, self.OnPopupThree, id=self.popupID3) # make a menu menu = wx.Menu() - menu.Append(self.popupID1, _(u"Associated forms").decode('utf8')) - menu.Append(self.idtablex, _(u"Chi2 by cluster").decode('utf8')) - menu.Append(self.idlexdendro, _(u"Chi2 by cluster on dendrogram").decode('utf8')) - menu.Append(self.idchimod, _(u"Chi2 modalities of variable").decode('utf8')) + menu.Append(self.popupID1, _("Associated forms")) + menu.Append(self.idtablex, _("Chi2 by cluster")) + menu.Append(self.idlexdendro, _("Chi2 by cluster on dendrogram")) + menu.Append(self.idchimod, _("Chi2 modalities of variable")) menu_chrono = wx.Menu() - menu_chrono.Append(self.onchronochi2, _(u'Chi2').decode('utf8')) - menu_chrono.Append(self.onchronoprop, _(u'Proportion').decode('utf8')) - menu.AppendMenu(-1, _(u"Chronological view").decode('utf8'), menu_chrono) - menu.Append(self.idwordgraph, _(u"Word graph").decode('utf8')) + menu_chrono.Append(self.onchronochi2, _('Chi2')) + menu_chrono.Append(self.onchronoprop, _('Proportion')) + menu.Append(-1, _("Chronological view"), menu_chrono) + menu.Append(self.idwordgraph, _("Word graph")) #menu.Append(self.export_classes, u"Exporter le corpus...") - #menu.Append(self.popupID10, u"Spécificités") - menu_conc = wx.Menu() - menu_conc.Append(self.popupID2, _(u"In segments of this cluster").decode('utf8')) - menu_conc.Append(self.popupID3, _(u"In segments of this clustering").decode('utf8')) - menu_conc.Append(self.popupID4, _(u"In all segments").decode('utf8')) - menu.AppendMenu(-1, _(u"Concordance").decode('utf8'), menu_conc) - menu.Append(self.onmaketgen, _(u"Make Tgen").decode('utf8')) + menu_conc.Append(self.popupID2, _("In segments of this cluster")) + menu_conc.Append(self.popupID3, _("In segments of this clustering")) + menu_conc.Append(self.popupID4, _("In all segments")) + menu.Append(-1, _("Concordance"), menu_conc) + menu.Append(self.onmaketgen, _("Make Tgen")) menu_cnrtl = wx.Menu() - menu_cnrtl.Append(self.popupID5, _(u"Definition").decode('utf8')) - menu_cnrtl.Append(self.popupID6, _(u"Etymology").decode('utf8')) - menu_cnrtl.Append(self.popupID7, _(u"Synonymous").decode('utf8')) - menu_cnrtl.Append(self.popupID8, _(u"Antonym").decode('utf8')) - menu_cnrtl.Append(self.popupID9, _(u"Morphology").decode('utf8')) - menu_cnrtl.Append(self.popup_proxe, _(u"Proxemy").decode('utf8')) - menu.AppendMenu(-1, _(u"Tools from CNRTL (french only)").decode('utf8'), menu_cnrtl) + menu_cnrtl.Append(self.popupID5, _("Definition")) + menu_cnrtl.Append(self.popupID6, _("Etymology")) + menu_cnrtl.Append(self.popupID7, _("Synonymous")) + menu_cnrtl.Append(self.popupID8, _("Antonym")) + menu_cnrtl.Append(self.popupID9, _("Morphology")) + menu_cnrtl.Append(self.popup_proxe, _("Proxemy")) + menu.Append(-1, _("Tools from CNRTL (french only)"), menu_cnrtl) menu.AppendSeparator() - menu.Append(self.popupIDgraph, _(u"Graph of cluster").decode('utf8')) - menu.Append(self.idseg, _(u"Repeated segments").decode('utf8')) - menu.Append(self.iducecarac, _(u"Typical text segments").decode('utf8')) - menu.Append(self.idcloud, _(u"Word cloud of cluster").decode('utf8')) - menu.Append(self.idexport, _(u'Export...').decode('utf8')) - menu.Append(self.idexporttropes, _(u'Export for Tropes').decode('utf8')) - menu.Append(self.idexportowledge, _('Exporter for Owledge').decode('utf8')) + menu.Append(self.popupIDgraph, _("Graph of cluster")) + menu.Append(self.idseg, _("Repeated segments")) + menu.Append(self.iducecarac, _("Typical text segments")) + menu.Append(self.idcloud, _("Word cloud of cluster")) + menu.Append(self.idexport, _('Export...')) + menu.Append(self.idexporttropes, _('Export for Tropes')) + menu.Append(self.idexportowledge, _('Exporter for Owledge')) #menu.Append(self.popupID2, u"Concordancier") - # menu.Append(self.popupID3, "recharger") - + #menu.Append(self.popupID3, "recharger") self.PopupMenu(menu) menu.Destroy() - elif 'tableau' in dir(self.Source) : + elif 'tableau' in dir(self.Source): if not hasattr(self, "pop1"): self.pop1 = wx.NewId() self.pop2 = wx.NewId() @@ -358,16 +346,15 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col self.Bind(wx.EVT_MENU, self.quest_simi, id=self.pop1) self.Bind(wx.EVT_MENU, self.on_tablex, id=self.pop2) self.Bind(wx.EVT_MENU, self.quest_var_mod, id=self.pop3) - menu = wx.Menu() - menu.Append(self.pop2, _(u"Chi2 by cluster").decode('utf8')) - menu.Append(self.pop3, _(u"Chi2 modalities of variable").decode('utf8')) + menu.Append(self.pop2, _("Chi2 by cluster")) + menu.Append(self.pop3, _("Chi2 modalities of variable")) menu.AppendSeparator() - menu.Append(self.pop1, _(u"Graph of cluster").decode('utf8')) + menu.Append(self.pop1, _("Graph of cluster")) self.PopupMenu(menu) menu.Destroy() - def oncloud(self, evt) : + def oncloud(self, evt): if 'corpus' in dir(self.Source): corpus = self.Source.corpus prof = [[self.la[i], self.lchi[i], self.lfreq[i]] for i, val in enumerate(self.la)] @@ -386,7 +373,7 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col else : uci = True corpus.export_classe(self.Source.pathout['classe_%i_export.txt' % self.cl], self.cl, uci = uci) - dial = wx.MessageDialog(self, self.Source.pathout['classe_%i_export.txt' % self.cl], u"Export", wx.OK|wx.ICON_INFORMATION) + dial = wx.MessageDialog(self, self.Source.pathout['classe_%i_export.txt' % self.cl], "Export", wx.OK|wx.ICON_INFORMATION) dial.ShowModal() dial.Destroy() @@ -423,15 +410,14 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col def quest_var_mod(self, evt) : word = self.getselectedwords()[0] if len(word.split('_')) <= 1 : - dial = wx.MessageDialog(self, _(u"This is not a variable_modality form").decode('utf8'), _(u"Problem").decode('utf8'), wx.OK | wx.ICON_WARNING) + dial = wx.MessageDialog(self, _("This is not a variable_modality form"), _("Problem"), wx.OK | wx.ICON_WARNING) dial.CenterOnParent() dial.ShowModal() dial.Destroy() return - if 'corpus' in dir(self.Source): corpus = self.Source.corpus - if word.startswith(u'-*') : + if word.startswith('-*') : if self.them_mod == {} : self.them_mod = self.Source.corpus.make_theme_dict() var_mod = self.them_mod @@ -451,13 +437,12 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col chistable.pop(0) vchistable = [line[1:] for line in chistable] fchistable = [line[0] for line in chistable] - var = word.split('_') #words = ['_'.join([var[0],word]) for word in self.var_mod[var[0]]] try : words = [word for word in var_mod[var[0]]] except KeyError: - dial = wx.MessageDialog(self, _(u"This is not a meta-data").decode('utf8'), _(u"Problem").decode('utf8'), wx.OK | wx.ICON_WARNING) + dial = wx.MessageDialog(self, _("This is not a meta-data"), _("Problem"), wx.OK | wx.ICON_WARNING) dial.CenterOnParent() dial.ShowModal() dial.Destroy() @@ -474,15 +459,14 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col def OnChronoChi2(self, evt) : word = self.getselectedwords()[0] if len(word.split('_')) <= 1 : - dial = wx.MessageDialog(self, _(u"This is not a variable_modality form").decode('utf8'), _(u"Problem").decode('utf8'), wx.OK | wx.ICON_WARNING) + dial = wx.MessageDialog(self, _("This is not a variable_modality form"), _("Problem"), wx.OK | wx.ICON_WARNING) dial.CenterOnParent() dial.ShowModal() dial.Destroy() return - if 'corpus' in dir(self.Source): corpus = self.Source.corpus - if word.startswith(u'-*') : + if word.startswith('-*') : if self.them_mod == {} : self.them_mod = self.Source.corpus.make_theme_dict() var_mod = self.them_mod @@ -500,7 +484,7 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col try : words = [word for word in var_mod[var[0]]] except KeyError: - dial = wx.MessageDialog(self, _(u"This is not a meta-data").decode('utf8'), _(u"Problem").decode('utf8'), wx.OK | wx.ICON_WARNING) + dial = wx.MessageDialog(self, _("This is not a meta-data"), _("Problem"), wx.OK | wx.ICON_WARNING) dial.CenterOnParent() dial.ShowModal() dial.Destroy() @@ -513,15 +497,14 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col def OnChronoProp(self, evt) : word = self.getselectedwords()[0] if len(word.split('_')) <= 1 : - dial = wx.MessageDialog(self, _(u"This is not a variable_modality form").decode('utf8'), _(u"Problem").decode('utf8'), wx.OK | wx.ICON_WARNING) + dial = wx.MessageDialog(self, _("This is not a variable_modality form"), _("Problem"), wx.OK | wx.ICON_WARNING) dial.CenterOnParent() dial.ShowModal() dial.Destroy() return - if 'corpus' in dir(self.Source): corpus = self.Source.corpus - if word.startswith(u'-*') : + if word.startswith('-*') : if self.them_mod == {} : self.them_mod = self.Source.corpus.make_theme_dict() var_mod = self.them_mod @@ -539,7 +522,7 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col try : words = [word for word in var_mod[var[0]]] except KeyError: - dial = wx.MessageDialog(self, _(u"This is not a meta-data").decode('utf8'), _(u"Problem").decode('utf8'), wx.OK | wx.ICON_WARNING) + dial = wx.MessageDialog(self, _("This is not a meta-data"), _("Problem"), wx.OK | wx.ICON_WARNING) dial.CenterOnParent() dial.ShowModal() dial.Destroy() @@ -549,7 +532,6 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col parametres = {'var' : vartoplot} ChronoFrame(self.Source.parent, parametres, self.Source.pathout, which = 'prop') - def quest_simi(self, evt) : tableau = self.Source.tableau tab = tableau.make_table_from_classe(self.cl, self.la) @@ -637,7 +619,6 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col 'pathout' : self.Source.parametres['pathout'], 'lem' : self.Source.parametres['lem'], 'tmpchi' : self.tmpchi} - self.parent.SimiFromCluster(self.parent, self.Source.corpus, self.la, self.lfreq, self.lchi, self.cl - 1, parametres = parametres, dlg = progressbar(self.ira, 4)) def on_segments(self,evt) : @@ -649,7 +630,7 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col else : uci = True l = [] - dlg.Update(1, u'Segments...') + dlg.Update(1, 'Segments...') for i in range(2,10) : li = corpus.find_segments_in_classe(uces, i, 1000, uci = uci) if li == [] : @@ -664,7 +645,7 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col first = ['','',''] para={'dico': d,'fline':first} dlg.Destroy() - win = wliste(self, -1, ' - '.join([_(u"Repeated segments").decode('utf8'), "Classe %i" % self.cl]), d, first, size=(600, 500)) + win = wliste(self, -1, ' - '.join([_("Repeated segments"), "Classe %i" % self.cl]), d, first, size=(600, 500)) win.Show(True) def on_uce_carac(self,evt) : @@ -682,7 +663,7 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col uci = True tab = corpus.make_table_with_classe(uces, self.la, uci = uci) tab.pop(0) - dlg.Update(2, u'score...') + dlg.Update(2, 'score...') if atype == 0 : ntab = [round(sum([self.lchi[i] for i, word in enumerate(line) if word == 1]),2) for line in tab] else : @@ -692,11 +673,11 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col ntab2.sort(reverse = True) ntab2 = ntab2[:limite] nuces = [val[1] for val in ntab2] - dlg.Update(3, u'concordancier...') + dlg.Update(3, 'concordancier...') ucis_txt, ucestxt = doconcorde(corpus, nuces, self.la, uci = uci) items = dict([[i, '
'.join([ucis_txt[i], '
score : %.2f

' % ntab2[i][0], ucestxt[i]])] for i, uce in enumerate(nuces)]) dlg.Destroy() - win = message(self, items, ' - '.join([_(u"Typical text segments").decode('utf8'), "Classe %i" % self.cl]), (750, 600), uceids = nuces) + win = message(self, items, ' - '.join([_("Typical text segments"), "Classe %i" % self.cl]), (750, 600), uceids = nuces) #win.SetWindowStyle(wx.STAY_ON_TOP) #win.html = '\n' + '
'.join(['
'.join([ucis_txt[i], '
score : %.2f
' % ntab2[i][0], ucestxt[i]]) for i in range(0,len(ucestxt))]) + '\n' #win.HtmlPage.SetPage(win.html) @@ -769,19 +750,19 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col if 'corpus' in dir(self.Source) : corpus = self.Source.corpus uces = corpus.lc[self.cl-1] - win = self.make_concord(uces, ' - '.join([_(u"Concordance").decode('utf8'), "Classe %i" % self.cl])) + win = self.make_concord(uces, ' - '.join([_("Concordance"), "Classe %i" % self.cl])) win.Show(True) def OnPopupThree(self, event): corpus = self.Source.corpus uces = [classe[i] for classe in corpus.lc for i in range(0,len(classe))] - win = self.make_concord(uces, ' - '.join([_(u"Concordance").decode('utf8'), _(u"Segments of this clustering").decode('utf8')])) + win = self.make_concord(uces, ' - '.join([_("Concordance"), _("Segments of this clustering")])) win.Show(True) def OnPopupFour(self, event): corpus = self.Source.corpus uces = [classe[i] for classe in corpus.lc for i in range(0,len(classe))] + corpus.lc0 - win = self.make_concord(uces, ' - '.join([_(u"Concordance").decode('utf8'), _(u"All segments").decode('utf8')])) + win = self.make_concord(uces, ' - '.join([_("Concordance"), _("All segments")])) win.Show(True) def OnPopupFive(self, event): @@ -836,7 +817,7 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col rep.sort(key = itemgetter(1), reverse = True) #win = message(self, u"Formes associées", wx.Size(300, 200)) items = dict([[i, '\t:\t'.join([str(val) for val in forme])] for i, forme in enumerate(rep)]) - win = message(self, items, _(u"Associated forms").decode('utf8'), (300, 200)) + win = message(self, items, _("Associated forms"), (300, 200)) #win.html = '\n' + '
'.join([' : '.join([str(val) for val in forme]) for forme in rep]) + '\n' #win.HtmlPage.SetPage(win.html) win.Show(True) @@ -846,10 +827,11 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col class wliste(wx.Frame): + def __init__(self, parent, id, title, d, fline, size=(600, 500)): wx.Frame.__init__(self, parent, id) self.liste = ListForSpec(self, parent, d, fline[1:], menu = False) - self.button_1 = wx.Button(self, -1, _(u"Close").decode('utf8')) + self.button_1 = wx.Button(self, -1, _("Close")) self.Bind(wx.EVT_BUTTON, self.OnCloseMe, self.button_1) self.Bind(wx.EVT_CLOSE, self.OnCloseWindow) self.__do_layout()