X-Git-Url: http://iramuteq.org/git?p=iramuteq;a=blobdiff_plain;f=ProfList.py;h=b64d633e6916079a3bfac3fc92aad90f91500b70;hp=a3c5c944900e606c52177d5f0db59287e6f2fbd3;hb=ff602f724b8fc80f4fa067dbbc830343c0b4bed4;hpb=12b4b71c8c8feb6154abc04dfa9bb93a521ef789 diff --git a/ProfList.py b/ProfList.py index a3c5c94..b64d633 100644 --- a/ProfList.py +++ b/ProfList.py @@ -24,13 +24,14 @@ from dialog import PrefExport, PrefUCECarac, SearchDial, message from tableau import Tableau from search_tools import SearchFrame import webbrowser -import cStringIO +#import cStringIO import tempfile import codecs -from functions import exec_rcode, MessageImage, progressbar, treat_var_mod +from functions import exec_rcode, MessageImage, progressbar, treat_var_mod, doconcorde from PrintRScript import barplot from textclassechd import ClasseCHD from shutil import copyfile +from operator import itemgetter #--------------------------------------------------------------------------- class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.ColumnSorterMixin): @@ -100,7 +101,7 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col self.InsertColumn(0, "num", wx.LIST_FORMAT_RIGHT) - self.InsertColumn(1, "eff. uce", wx.LIST_FORMAT_RIGHT) + self.InsertColumn(1, "eff. s.t.", wx.LIST_FORMAT_RIGHT) self.InsertColumn(2, "eff. total", wx.LIST_FORMAT_RIGHT) self.InsertColumn(3, "pourcentage", wx.LIST_FORMAT_RIGHT) self.InsertColumn(4, "chi2", wx.LIST_FORMAT_RIGHT) @@ -236,16 +237,16 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col def onsearch(self, evt) : self.dial = SearchDial(self, self, 6, True) self.dial.CenterOnParent() - self.dial.ShowModal() - self.dial.Destroy() + self.dial.Show() + #self.dial.Destroy() def onsearchall(self, evt) : if 'FrameSearch' not in dir(self.Source) : self.Source.FrameSearch = SearchFrame(self.parent, -1, u"Rechercher...", self.Source.corpus) self.dial = SearchDial(self, self.Source.FrameSearch.liste, 1, False) self.dial.CenterOnParent() - self.dial.ShowModal() - self.dial.Destroy() + self.dial.Show() + #self.dial.Destroy() def OnRightClick(self, event): @@ -270,6 +271,7 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col self.idwordgraph = wx.NewId() self.popup_proxe = wx.NewId() self.idlexdendro = wx.NewId() + self.idcloud = wx.NewId() self.idexport = wx.NewId() # self.export_classes = wx.NewId() @@ -291,6 +293,7 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col self.Bind(wx.EVT_MENU, self.onwordgraph, id = self.idwordgraph) self.Bind(wx.EVT_MENU, self.onproxe, id = self.popup_proxe) self.Bind(wx.EVT_MENU, self.onlexdendro, id = self.idlexdendro) + self.Bind(wx.EVT_MENU, self.oncloud, id = self.idcloud) self.Bind(wx.EVT_MENU, self.onexport, id = self.idexport) # self.Bind(wx.EVT_MENU, self.on_export_classes, id = self.export_classes) # self.Bind(wx.EVT_MENU, self.OnPopupThree, id=self.popupID3) @@ -307,9 +310,9 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col #menu.Append(self.popupID10, u"Spécificités") menu_conc = wx.Menu() - menu_conc.Append(self.popupID2, u"dans les uce de la classe") - menu_conc.Append(self.popupID3, u"dans les uce classées") - menu_conc.Append(self.popupID4, u"dans toutes les uce") + menu_conc.Append(self.popupID2, u"dans les segments de texte de la classe") + menu_conc.Append(self.popupID3, u"dans les segments de texte classés") + menu_conc.Append(self.popupID4, u"dans tous les segments de texte") menu.AppendMenu(-1, u"Concordancier", menu_conc) menu_cnrtl = wx.Menu() menu_cnrtl.Append(self.popupID5, u"Définition") @@ -322,8 +325,9 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col menu.AppendSeparator() menu.Append(self.popupIDgraph, u"Graphe de la classe") menu.Append(self.idseg, u"Segments répétés") - menu.Append(self.iducecarac, u"UCE caractéristiques") - menu.Append(self.idexport, 'Partitionner...') + menu.Append(self.iducecarac, u"Segments de texte caractéristiques") + menu.Append(self.idcloud, u"Nuage de la classe") + menu.Append(self.idexport, u'Exporter...') #menu.Append(self.popupID2, u"Concordancier") # menu.Append(self.popupID3, "recharger") @@ -346,10 +350,30 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col self.PopupMenu(menu) menu.Destroy() + 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)] + parametres = self.Source.parametres + parametres['clusterprof'] = prof + parametres['type'] = 'clustercloud' + parametres['prof'] = self.Source.pathout['actprof_classe_%i.csv' % self.cl] + del parametres['uuid'] + #if not os.path.exists(self.Source.pathout['actprof_classe_%i.csv' % self.lc]) : + # with open(self.Source.pathout['actprof_classe_%i.csv' % self.lc], 'w') as f : + # f.write('\n'.join(prof).encode(self.parent.syscoding)) + self.parent.OnClusterCloud(self.Source.corpus, parametres = parametres) + def onexport(self, evt) : if 'corpus' in dir(self.Source): corpus = self.Source.corpus - ClasseCHD(self.parent, corpus, self.cl) + corpus.export_classe(self.Source.pathout['classe_%i_export.txt' % self.cl], self.cl) + dial = wx.MessageDialog(self, self.Source.pathout['classe_%i_export.txt' % self.cl], u"Export", wx.OK|wx.ICON_INFORMATION) + dial.ShowModal() + dial.Destroy() + #if 'corpus' in dir(self.Source): + # corpus = self.Source.corpus + #ClasseCHD(self.parent, corpus, self.cl) def getselectedwords(self) : words = [self.getColumnText(self.GetFirstSelected(), 6)] @@ -376,7 +400,6 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col vchistable = [line[1:] for line in chistable] fchistable = [line[0] for line in chistable] word = self.getselectedwords()[0] - print self.var_mod if len(word.split('_')) > 1 : var = word.split('_') #words = ['_'.join([var[0],word]) for word in self.var_mod[var[0]]] @@ -385,12 +408,10 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col tableout = [] kwords = [] for word in words : - print word if word in fchistable : tableout.append(vchistable[fchistable.index(word)]) kwords.append(word) tmpgraph = tempfile.mktemp(dir=self.Source.parent.TEMPDIR) - print tableout txt = barplot(tableout, kwords, title, self.Source.parent.RscriptsPath['Rgraph'], tmpgraph) tmpscript = tempfile.mktemp(dir=self.Source.parent.TEMPDIR) file = open(tmpscript,'w') @@ -410,14 +431,18 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col def quest_simi(self, evt) : tableau = self.Source.tableau + if self.tmpchi is None : + self.tmpchi = tempfile.mktemp(dir=self.Source.parent.TEMPDIR) + with open(self.tmpchi, 'w') as f: + f.write('\n'.join([str(val) for val in self.lchi])) tab = tableau.make_table_from_classe(self.cl, self.la) - pathout = ConstructPathOut(os.path.join(self.Source.pathout, 'simi_classe_%i' %self.cl)) + pathout = ConstructPathOut(self.Source.pathout.dirout, 'simi_classe_%i' %self.cl) self.filename = os.path.join(pathout,'mat01.csv') tableau.printtable(self.filename, tab) del tab paramsimi = {'coeff' : 0, 'layout' : 2, - 'type' : 1, + 'type_graph' : 1, 'arbremax' : 1, 'coeff_tv' : 1, 'coeff_tv_nb' : 0, @@ -445,22 +470,19 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col 'keep_coord' : True, 'alpha' : 20, 'film': False, + 'com' : 0, + 'communities' : 0, + 'halo' : 0, + 'tmpchi': self.tmpchi } -# self.tableau.actives = {} -# self.tableau.lchi = self.lchi -# self.tableau.chi = {} -# for i, val in enumerate(self.la) : -# self.tableau.actives[val] = [self.lfreq[i]] -# self.tableau.chi[val] = [self.lchi[i]] - act = {} - self.tableau.chi = {} - self.tableau.lchi = self.lchi - self.tableau.parametre['fromprof'] = True + tableau.chi = {} + tableau.lchi = self.lchi + tableau.parametre['fromprof'] = True for i, val in enumerate(self.la) : act[val] = [self.lfreq[i]] - self.tableau.chi[val] = [self.lchi[i]] - DoSimi(self, param = paramsimi, fromprof = ffr(self.filename), pathout = pathout, listactives = self.la, actives = act) + tableau.chi[val] = [self.lchi[i]] + self.parent.SimiCluster(parametres = paramsimi, fromprof = ffr(self.filename), pathout = pathout, listactives = self.la, actives = act, tableau = tableau) def onwordgraph(self, evt): word = self.getColumnText(self.GetFirstSelected(), 6) @@ -475,7 +497,7 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col 'lem' : self.Source.parametres['lem'], 'tmpchi' : self.tmpchi} #try : - self.parent.SimiFromCluster(self.parent, self.Source.corpus, self.la, self.cl - 1, parametres = parametres, dlg = progressbar(self, 4)) + self.parent.SimiFromCluster(self.parent, self.Source.corpus, self.la, self.lfreq, self.lchi, self.cl - 1, parametres = parametres, dlg = progressbar(self, 4)) #except : # print 'not acitve' @@ -489,60 +511,7 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col 'lem' : self.Source.parametres['lem'], 'tmpchi' : self.tmpchi} - self.parent.SimiFromCluster(self.parent, self.Source.corpus, self.la, self.cl - 1, parametres = parametres, dlg = progressbar(self, 4)) - #dlg = progressbar(self, 2) - #corpus = self.Source.corpus - #uces = corpus.lc[self.cl-1] - #dlg.Update(1, u'Tableau...') - ##tab = corpus.make_table_with_classe(uces, self.la) - #pathout = ConstructPathOut(self.Source.pathout.dirout+'/', 'simi_classe_%i' %self.cl) - #self.filename = os.path.join(pathout,'mat01.csv') - #dlg.Update(2, u'Ecriture...') - ##corpus.write_tab(tab, self.filename) - ##del tab - #corpus.make_and_write_sparse_matrix_from_classe(self.la, uces, self.filename) - #dlg.Destroy() - #paramsimi = {'coeff' : 0, - # 'layout' : 2, - # 'type' : 1, - # 'arbremax' : 1, - # 'coeff_tv' : 1, - # 'coeff_tv_nb' : 0, - # 'tvprop' : 0, - # 'tvmin' : 5, - # 'tvmax' : 30, - # 'coeff_te' : 1, - # 'coeff_temin' : 1, - # 'coeff_temax' : 10, - # 'label_v': 1, - # 'label_e': 0, - # 'vcex' : 0, - # 'vcexmin' : 10, - # 'vcexmax' : 25, - # 'cex' : 10, - # 'cexfromchi' : True, - # 'sfromchi': False, - # 'seuil_ok' : 0, - # 'seuil' : 1, - # 'cols' : (255,0,0), - # 'cola' : (200,200,200), - # 'width' : 1000, - # 'height' : 1000, - # 'first' : True, - # 'keep_coord' : True, - # 'alpha' : 20, - # 'film': False, - # } - #self.tableau = Tableau(self.parent, '') - #self.tableau.listactives = self.la - #self.tableau.actives = {} - #self.tableau.lchi = self.lchi - #self.tableau.chi = {} - #self.tableau.parametre['fromprof'] = True - #for i, val in enumerate(self.la) : - # self.tableau.actives[val] = [self.lfreq[i]] - # self.tableau.chi[val] = [self.lchi[i]] - #DoSimi(self, param = paramsimi, fromprof = ffr(self.filename), pathout = pathout) + self.parent.SimiFromCluster(self.parent, self.Source.corpus, self.la, self.lfreq, self.lchi, self.cl - 1, parametres = parametres, dlg = progressbar(self, 4)) def on_segments(self,evt) : dlg = progressbar(self, 2) @@ -589,24 +558,10 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col ntab2 = ntab2[:limite] nuces = [val[1] for val in ntab2] dlg.Update(3, u'concordancier...') - #ucestxt = [corpus.ucis_paras_uces[val[1][0]][val[1][1]][val[1][2]] for val in ntab2] - ucestxt1 = [row for row in corpus.getconcorde(nuces)] - ucestxt = [] - ucis_txt = [] - for uce in ucestxt1 : - ucetxt = ' '+uce[1]+' ' - ucis_txt.append(' '.join(corpus.ucis[corpus.getucefromid(uce[0]).uci].etoiles) + '
') - for lem in self.la : - listmot = corpus.getlems()[lem].formes - for id in listmot : - forme = corpus.getforme(id).forme - ucetxt = ucetxt.replace(' '+forme+' ', ' ' + forme + ' ') - ucestxt.append(ucetxt) - #ucestxt = [corpus.make_concord(self.la, ' '.join(uce), 'red') for uce in ucestxt] + ucis_txt, ucestxt = doconcorde(corpus, nuces, self.la) dlg.Update(4, u'texte...') - #ucis_txt = [' '.join(corpus.ucis[val[1][0]][0]) for val in ntab2] - win = message(self, u"UCE caractéristiques - Classe %i" % self.cl, (750, 600)) - win.html = '\n' + '

'.join(['
'.join([ucis_txt[i], 'score : ' + str(ntab2[i][0]), ucestxt[i]]) for i in range(0,len(ucestxt))]) + '\n' + win = message(self, u"Segments de texte caractéristiques - Classe %i" % self.cl, (750, 600)) + 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) dlg.Destroy() win.Show(True) @@ -629,6 +584,12 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col nbcl = len(title) nbwords = len(words) txt = barplot(tableout, words, title, self.Source.parent.RscriptsPath['Rgraph'], tmpgraph) + #print 'ATTENTION TEST R' + #txt = """ + #sink('/Users/pierre/Desktop/qdfqsdfqsdfqsdf.txt') + #Sys.getlocale() + #sink() + #""" tmpscript = tempfile.mktemp(dir=self.Source.parent.TEMPDIR) file = open(tmpscript,'w') file.write(txt) @@ -697,26 +658,13 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col while self.GetNextSelected(last) != -1: last = self.GetNextSelected(last) ListWord.append(self.getColumnText(last, 6)) - listmot = [forme for item in ListWord for forme in corpus.getlems()[item].formes] - win = message(self, title, size=(750, 600)) - toshow = ['\n

Concordancier

\n'] - toshow.append('

' % color + ' '.join(ListWord) + '


') - duce = {} ucef = [] for word in ListWord : ucef += list(set(corpus.getlemuces(word)).intersection(uces)) - ucef = list(set(ucef)) - ucef.sort() - res = corpus.getconcorde(ucef) - txt = '
'.join(toshow) +'

' - for uce in res : - ucetxt = ' '+uce[1]+' ' - txt += ' '.join(corpus.ucis[corpus.getucefromid(uce[0]).uci].etoiles) + '
' - for forme in listmot: - forme = corpus.getforme(forme).forme - ucetxt = ucetxt.replace(' '+forme+' ', ' ' + forme + ' ') - txt += ucetxt + '

' - win.HtmlPage.SetPage(txt) + ucis_txt, ucestxt = doconcorde(corpus, ucef, ListWord) + win = message(self, title, size=(750, 600)) + win.html = ('\n

%s

' % ' '.join(ListWord)) + '
'.join(['
'.join([ucis_txt[i], ucestxt[i]]) for i in range(0,len(ucestxt))]) + '\n' + win.HtmlPage.SetPage(win.html) return win def OnPopupTwo(self, event): @@ -766,459 +714,7 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col word = self.getColumnText(self.GetFirstSelected(), 6) lk = "http://www.cnrtl.fr/proxemie/" + word webbrowser.open(lk) -# -#--------------------------------------------------------------------------- -#class ProfListctrl(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin): -# def __init__(self, parent, ID, pos=wx.DefaultPosition, -# size=wx.DefaultSize, style=0): -# wx.ListCtrl.__init__(self, parent, ID, pos, size, style) -# listmix.ListCtrlAutoWidthMixin.__init__(self) -# -# -#class ProfListctrlPanel(wx.Panel, listmix.ColumnSorterMixin): -# def __init__(self, parent, gparent, ProfClasse, Alceste=False, cl=0): -# self.parent = parent -# classe = ProfClasse -# self.cl = cl -# self.Source = gparent -# if 'tableau' in dir(self.Source): -# self.tableau = self.Source.tableau -# self.Alceste = Alceste -# self.var_mod = {} -# -# -# wx.Panel.__init__(self, parent, -1, style=wx.WANTS_CHARS) -# -# search_id = wx.NewId() -# searchall_id = wx.NewId() -# self.parent.Bind(wx.EVT_MENU, self.onsearch, id = search_id) -# self.parent.Bind(wx.EVT_MENU, self.onsearchall, id = searchall_id) -# self.accel_tbl = wx.AcceleratorTable([(wx.ACCEL_CTRL, ord('F'), search_id), -# (wx.ACCEL_CTRL|wx.ACCEL_SHIFT, ord('F'), searchall_id)]) -# self.SetAcceleratorTable(self.accel_tbl) -# -# self.il = wx.ImageList(16, 16) -## self.idx1 = self.il.Add(images.getSmilesBitmap()) -# self.sm_up = self.il.Add(getSmallUpArrowBitmap()) -# self.sm_dn = self.il.Add(getSmallDnArrowBitmap()) -# tID = wx.NewId() -# -# self.list = ProfListctrl(self, tID, -# style=wx.LC_REPORT -# | wx.BORDER_NONE -# | wx.LC_EDIT_LABELS -# | wx.LC_SORT_ASCENDING -# ) -# line1 = classe.pop(0) -# limit = 0 -# limitsup = 0 -# i = 0 -# dictdata = {} -# classen = [line for line in classe if line[0] != '*' and line[0] != '*****'] -# if len(classen) == 0 : -# lenact = 0 -# lensup = 0 -# lenet = 0 -# else : -# lenact = [i for i,b in enumerate(classe) if b[0] == '*****'] -# if lenact == [] : -# lensup = 0 -# lenact = [i for i,b in enumerate(classe) if b[0] == '*'] -# if lenact == [] : -# lenact = len(classen) -# lenet = 0 -# else : -# lenact = 0 -# lenet = len(classen) -# else : -# lenact = lenact[0] -# lensup = [i for i,b in enumerate(classe[1:]) if b[0] == '*'] -# if lensup != [] : -# lensup = lensup[0] - lenact -# lenet = len(classen) - lensup -# else : -# lensup == 0 -# lenet = len(classen) -# debsup = lenact -# -# self.lenact = lenact -# -# debet = lenact + lensup -# dictdata = dict(zip([i for i in range(0,len(classen))], classen)) -# self.list.SetImageList(self.il, wx.IMAGE_LIST_SMALL) -# -# self.PopulateList(dictdata, debet, debsup, Alceste) -# -# self.Bind(wx.EVT_SIZE, self.OnSize) -# self.Bind(wx.EVT_LIST_COL_CLICK, self.OnColClick) -# self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnItemSelected, self.list) -# -# # for wxMSW -# self.list.Bind(wx.EVT_COMMAND_RIGHT_CLICK, self.OnRightClick) -# -# # for wxGTK -# self.list.Bind(wx.EVT_RIGHT_UP, self.OnRightClick) -# self.itemDataMap = dictdata -# listmix.ColumnSorterMixin.__init__(self, 8) -# self.do_greyline() -##----------------------------------------------------------------------------------------- -# -# def PopulateList(self, dictdata, limit, limitsup, Alceste): -# -# -# # for normal, simple columns, you can add them like this: -# self.list.InsertColumn(0, "num", wx.LIST_FORMAT_RIGHT) -# self.list.InsertColumn(1, "eff. uce", wx.LIST_FORMAT_RIGHT) -# self.list.InsertColumn(2, "eff. total", wx.LIST_FORMAT_RIGHT) -# self.list.InsertColumn(3, "pourcentage", wx.LIST_FORMAT_RIGHT) -# self.list.InsertColumn(4, "chi2", wx.LIST_FORMAT_RIGHT) -# self.list.InsertColumn(5, "Type", wx.LIST_FORMAT_RIGHT) -# self.list.InsertColumn(6, "forme", wx.LIST_FORMAT_RIGHT) -# self.list.InsertColumn(7, "p", wx.LIST_FORMAT_RIGHT) -# -# for key in dictdata : #.iteritems(): -# index = self.list.InsertStringItem(sys.maxint, '%4i' % key) -# i = 1 -# for val in dictdata[key][1:]: -# self.list.SetStringItem(index, i, str(dictdata[key][i])) -# i += 1 -# self.list.SetItemData(index, key) -# -# self.list.SetColumnWidth(0, 60) -# self.list.SetColumnWidth(1, 70) -# self.list.SetColumnWidth(2, 80) -# self.list.SetColumnWidth(3, 100) -# self.list.SetColumnWidth(4, 70) -# self.list.SetColumnWidth(5, wx.LIST_AUTOSIZE) -# self.list.SetColumnWidth(6, wx.LIST_AUTOSIZE) -# self.list.SetColumnWidth(7, wx.LIST_AUTOSIZE) -# -# # show how to change the colour of a couple items -# for i in range(limitsup, limit): -# item = self.list.GetItem(i) -# item.SetTextColour(wx.RED) -# self.list.SetItem(item) -# -# for i in range(limit, len(dictdata)): -# item = self.list.GetItem(i) -# item.SetTextColour(wx.BLUE) -# self.list.SetItem(item) -# -# if self.lenact != 0 : -# self.la = [self.getColumnText(i,6) for i in range(0, self.lenact)] -# self.lchi = [float(self.getColumnText(i,4)) for i in range(0, self.lenact)] -# self.lfreq = [int(self.getColumnText(i,1)) for i in range(0, self.lenact)] -# else : -# self.la = [] -# self.lchi = [] -# self.lfreq = [] -# -# def do_greyline(self): -# for row in xrange(self.list.GetItemCount()): -# if row % 2 : -# self.list.SetItemBackgroundColour(row, (230, 230, 230)) -# else : -# self.list.SetItemBackgroundColour(row, wx.WHITE) -# -# -# # Used by the ColumnSorterMixin, see wx/lib/mixins/listctrl.py -# def GetListCtrl(self): -# return self.list -# -# # Used by the ColumnSorterMixin, see wx/lib/mixins/listctrl.py -# def GetSortImages(self): -# return (self.sm_dn, self.sm_up) -# -# -# def OnRightDown(self, event): -# x = event.GetX() -# y = event.GetY() -# item, flags = self.list.HitTest((x, y)) -# -# if flags & wx.LIST_HITTEST_ONITEM: -# self.list.Select(item) -# -# event.Skip() -# -# -# def getColumnText(self, index, col): -# item = self.list.GetItem(index, col) -# return item.GetText() -# -# -# def OnItemSelected(self, event): -# self.currentItem = event.m_itemIndex -# event.Skip() -# -# def onsearch(self, evt) : -# self.dial = SearchDial(self, self, 6, True) -# self.dial.CenterOnParent() -# self.dial.ShowModal() -# self.dial.Destroy() -# -# def onsearchall(self, evt) : -# if 'FrameSearch' not in dir(self.Source) : -# self.Source.FrameSearch = SearchFrame(self.parent, -1, u"Rechercher...", self.Source.corpus) -# self.dial = SearchDial(self, self.Source.FrameSearch.liste, 1, False) -# self.dial.CenterOnParent() -# self.dial.ShowModal() -# 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"): -# self.popupID1 = wx.NewId() -# self.popupID2 = wx.NewId() -# self.popupID3 = wx.NewId() -# self.popupID4 = wx.NewId() -# self.popupID5 = wx.NewId() -# self.popupID6 = wx.NewId() -# self.popupID7 = wx.NewId() -# self.popupID8 = wx.NewId() -# self.popupID9 = wx.NewId() -# #self.popupID10 = wx.NewId() -# self.popupIDgraph = wx.NewId() -# self.idseg = wx.NewId() -# self.iducecarac = wx.NewId() -# self.idtablex = wx.NewId() -# self.idchimod = wx.NewId() -# self.idwordgraph = wx.NewId() -# self.popup_proxe = wx.NewId() -# self.idlexdendro = wx.NewId() -# self.idexport = 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) -# self.Bind(wx.EVT_MENU, self.OnPopupFour, id=self.popupID4) -# self.Bind(wx.EVT_MENU, self.OnPopupFive, id=self.popupID5) -# self.Bind(wx.EVT_MENU, self.OnPopupSix, id=self.popupID6) -# self.Bind(wx.EVT_MENU, self.OnPopupSeven, id=self.popupID7) -# self.Bind(wx.EVT_MENU, self.OnPopupHeight, id=self.popupID8) -# self.Bind(wx.EVT_MENU, self.OnPopupNine, id=self.popupID9) -# #self.Bind(wx.EVT_MENU, self.OnPopupSpec, id=self.popupID10) -# self.Bind(wx.EVT_MENU, self.on_graph, id=self.popupIDgraph) -# self.Bind(wx.EVT_MENU, self.on_segments, id=self.idseg) -# self.Bind(wx.EVT_MENU, self.on_uce_carac, id = self.iducecarac) -# self.Bind(wx.EVT_MENU, self.on_tablex, id = self.idtablex) -# self.Bind(wx.EVT_MENU, self.quest_var_mod, id = self.idchimod) -# self.Bind(wx.EVT_MENU, self.onwordgraph, id = self.idwordgraph) -# self.Bind(wx.EVT_MENU, self.onproxe, id = self.popup_proxe) -# self.Bind(wx.EVT_MENU, self.onlexdendro, id = self.idlexdendro) -# self.Bind(wx.EVT_MENU, self.onexport, id = self.idexport) -# # 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"Formes associées") -# menu.Append(self.idtablex, u"Chi2 par classe") -# menu.Append(self.idlexdendro, u"Chi2 par classe + dendro") -# menu.Append(self.idchimod, u"Chi2 modalités de la variable") -# menu.Append(self.idwordgraph, u"Graphe du mot") -# #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"dans les uce de la classe") -# menu_conc.Append(self.popupID3, u"dans les uce classées") -# menu_conc.Append(self.popupID4, u"dans toutes les uce") -# menu.AppendMenu(-1, u"Concordancier", menu_conc) -# menu_cnrtl = wx.Menu() -# menu_cnrtl.Append(self.popupID5, u"Définition") -# menu_cnrtl.Append(self.popupID6, u"Etymologie") -# menu_cnrtl.Append(self.popupID7, u"Synonymie") -# menu_cnrtl.Append(self.popupID8, u"Antonymie") -# menu_cnrtl.Append(self.popupID9, u"Morphologie") -# menu_cnrtl.Append(self.popup_proxe, u"Proxémie") -# menu.AppendMenu(-1, u"Outils du CNRTL", menu_cnrtl) -# menu.AppendSeparator() -# menu.Append(self.popupIDgraph, u"Graphe de la classe") -# menu.Append(self.idseg, u"Segments répétés") -# menu.Append(self.iducecarac, u"UCE caractéristiques") -# menu.Append(self.idexport, 'Partitionner...') -# #menu.Append(self.popupID2, u"Concordancier") -# # menu.Append(self.popupID3, "recharger") -# -# self.PopupMenu(menu) -# menu.Destroy() -# elif 'tableau' in dir(self.Source) : -# if not hasattr(self, "pop1"): -# self.pop1 = wx.NewId() -# self.pop2 = wx.NewId() -# self.pop3 = wx.NewId() -# 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 par classe") -# menu.Append(self.pop3, u"Chi2 modalités de la variable") -# menu.AppendSeparator() -# menu.Append(self.pop1, u"Graph de la classe") -# self.PopupMenu(menu) -# menu.Destroy() -# -# def onexport(self, evt) : -# if 'corpus' in dir(self.Source): -# corpus = self.Source.corpus -# ClasseCHD(self.parent, corpus, self.cl) -# -# def quest_var_mod(self, evt) : -# if 'corpus' in dir(self.Source): -# corpus = self.Source.corpus -# if self.var_mod == {} : -# self.var_mod = treat_var_mod([val for val in corpus.make_etoiles()]) -# else : -# corpus = self.Source.tableau -# if self.var_mod == {} : -# self.var_mod = treat_var_mod([val for val in corpus.actives] + [val for val in corpus.sups]) -# with codecs.open(self.Source.pathout['chisqtable'], 'r', corpus.parametres['syscoding']) as f : -# chistable = [line.replace('\n','').replace('\r','').replace('"','').replace(',','.').split(';') for line in f] -# title = chistable[0] -# title.pop(0) -# chistable.pop(0) -# vchistable = [line[1:] for line in chistable] -# fchistable = [line[0] for line in chistable] -# word = self.getColumnText(self.list.GetFirstSelected(), 6) -# if len(word.split('_')) > 1 : -# var = word.split('_')[0] -# words = [word for word in self.var_mod[var]] -# words.sort() -# tableout = [] -# kwords = [] -# for word in words : -# if word in fchistable : -# tableout.append(vchistable[fchistable.index(word)]) -# kwords.append(word) -# tmpgraph = tempfile.mktemp(dir=self.Source.parent.TEMPDIR) -# txt = barplot(tableout, kwords, title, self.Source.parent.RscriptsPath['Rgraph'], tmpgraph) -# tmpscript = tempfile.mktemp(dir=self.Source.parent.TEMPDIR) -# file = open(tmpscript,'w') -# file.write(txt) -# file.close() -# exec_rcode(self.Source.parent.RPath, tmpscript, wait = True) -# win = MessageImage(self, -1, u"Graphique", size=(700, 500),style = wx.DEFAULT_FRAME_STYLE) -# win.addsaveimage(tmpgraph) -# txt = "" % tmpgraph -# win.HtmlPage.SetPage(txt) -# win.Show(True) -# else : -# dial = wx.MessageDialog(self, u"Ce n'est pas une forme du type variable_modalité", u"Problème", wx.OK | wx.ICON_WARNING) -# dial.CenterOnParent() -# dial.ShowModal() -# dial.Destroy() -# -# def quest_simi(self, evt) : -# tableau = self.Source.tableau -# tab = tableau.make_table_from_classe(self.cl, self.la) -# pathout = ConstructPathOut(self.Source.pathout+'/', 'simi_classe_%i' %self.cl) -# self.filename = os.path.join(pathout,'mat01.csv') -# tableau.printtable(self.filename, tab) -# del tab -# paramsimi = {'coeff' : 0, -# 'layout' : 2, -# 'type' : 1, -# 'arbremax' : 1, -# 'coeff_tv' : 1, -# 'coeff_tv_nb' : 0, -# 'tvprop' : 0, -# 'tvmin' : 5, -# 'tvmax' : 30, -# 'coeff_te' : 1, -# 'coeff_temin' : 1, -# 'coeff_temax' : 10, -# 'label_v': 1, -# 'label_e': 1, -# 'vcex' : 0, -# 'vcexmin' : 10, -# 'vcexmax' : 25, -# 'cex' : 10, -# 'cexfromchi' : True, -# 'sfromchi': False, -# 'seuil_ok' : 0, -# 'seuil' : 1, -# 'cols' : (255,0,0), -# 'cola' : (200,200,200), -# 'width' : 1000, -# 'height' : 1000, -# 'first' : True, -# 'keep_coord' : True, -# 'alpha' : 20, -# 'film': False, -# } -## self.tableau.actives = {} -## self.tableau.lchi = self.lchi -## self.tableau.chi = {} -## for i, val in enumerate(self.la) : -## self.tableau.actives[val] = [self.lfreq[i]] -## self.tableau.chi[val] = [self.lchi[i]] -# -# act = {} -# self.tableau.chi = {} -# self.tableau.lchi = self.lchi -# self.tableau.parametre['fromprof'] = True -# for i, val in enumerate(self.la) : -# act[val] = [self.lfreq[i]] -# self.tableau.chi[val] = [self.lchi[i]] -# DoSimi(self, param = paramsimi, fromprof = ffr(self.filename), pathout = pathout, listactives = self.la, actives = act) -# -# def onwordgraph(self, evt): -# word = self.getColumnText(self.list.GetFirstSelected(), 6) -# dlg = progressbar(self, 2) -# corpus = self.Source.corpus -# uces = corpus.lc[self.cl-1] -# dlg.Update(1, u'Tableau...') -# #tab = corpus.make_table_with_classe(uces, self.la) -# pathout = ConstructPathOut(self.Source.pathout.dirout + '/' , 'simi_%s' % word) -# self.filename = os.path.join(pathout,'mat01.csv') -# dlg.Update(2, u'Ecriture...') -# #corpus.write_tab(tab, self.filename) -# #del tab -# corpus.make_and_write_sparse_matrix_from_classe(self.la, uces, self.filename) -# dlg.Destroy() -# paramsimi = {'coeff' : 0, -# 'layout' : 2, -# 'type' : 1, -# 'arbremax' : 0, -# 'coeff_tv' : 1, -# 'coeff_tv_nb' : 0, -# 'tvprop' : 0, -# 'tvmin' : 5, -# 'tvmax' : 30, -# 'coeff_te' : 1, -# 'coeff_temin' : 1, -# 'coeff_temax' : 10, -# 'label_v': 1, -# 'label_e': 0, -# 'vcex' : 1, -# 'vcexmin' : 10, -# 'vcexmax' : 25, -# 'cex' : 10, -# 'seuil_ok' : 1, -# 'seuil' : 1, -# 'cols' : (255,0,0), -# 'cola' : (200,200,200), -# 'width' : 600, -# 'height' : 600, -# 'first' : True, -# 'keep_coord' : True, -# 'alpha' : 20, -# 'film': False, -# } -# self.tableau = Tableau(self.parent, '') -# self.tableau.listactives = self.la -# self.tableau.actives = {} -# for i, val in enumerate(self.la) : -# self.tableau.actives[val] = [self.lfreq[i]] -# DoSimi(self, param = paramsimi, fromprof = ffr(self.filename), pathout = pathout, wordgraph = word) -# -# def OnPopupOne(self, event): corpus = self.Source.corpus #print 'ATTENTION PRINT ET TABLE' @@ -1234,378 +730,34 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col if ucef != [] : nb = len(ucef) rep.append([corpus.getforme(forme).forme, nb]) + rep.sort(key = itemgetter(1), reverse = True) win = message(self, u"Formes associées", wx.Size(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) -# -# def on_graph(self, evt): -# dlg = progressbar(self, 2) -# corpus = self.Source.corpus -# uces = corpus.lc[self.cl-1] -# dlg.Update(1, u'Tableau...') -# #tab = corpus.make_table_with_classe(uces, self.la) -# pathout = ConstructPathOut(self.Source.pathout.dirout+'/', 'simi_classe_%i' %self.cl) -# self.filename = os.path.join(pathout,'mat01.csv') -# dlg.Update(2, u'Ecriture...') -# #corpus.write_tab(tab, self.filename) -# #del tab -# corpus.make_and_write_sparse_matrix_from_classe(self.la, uces, self.filename) -# dlg.Destroy() -# paramsimi = {'coeff' : 0, -# 'layout' : 2, -# 'type' : 1, -# 'arbremax' : 1, -# 'coeff_tv' : 1, -# 'coeff_tv_nb' : 0, -# 'tvprop' : 0, -# 'tvmin' : 5, -# 'tvmax' : 30, -# 'coeff_te' : 1, -# 'coeff_temin' : 1, -# 'coeff_temax' : 10, -# 'label_v': 1, -# 'label_e': 0, -# 'vcex' : 0, -# 'vcexmin' : 10, -# 'vcexmax' : 25, -# 'cex' : 10, -# 'cexfromchi' : True, -# 'sfromchi': False, -# 'seuil_ok' : 0, -# 'seuil' : 1, -# 'cols' : (255,0,0), -# 'cola' : (200,200,200), -# 'width' : 1000, -# 'height' : 1000, -# 'first' : True, -# 'keep_coord' : True, -# 'alpha' : 20, -# 'film': False, -# } -# self.tableau = Tableau(self.parent, '') -# self.tableau.listactives = self.la -# self.tableau.actives = {} -# self.tableau.lchi = self.lchi -# self.tableau.chi = {} -# self.tableau.parametre['fromprof'] = True -# for i, val in enumerate(self.la) : -# self.tableau.actives[val] = [self.lfreq[i]] -# self.tableau.chi[val] = [self.lchi[i]] -# DoSimi(self, param = paramsimi, fromprof = ffr(self.filename), pathout = pathout) -# -# def on_segments(self,evt) : -# dlg = progressbar(self, 2) -# corpus = self.Source.corpus -# uces = corpus.lc[self.cl-1] -# l = [] -# dlg.Update(1, u'Segments...') -# for i in range(2,10) : -# li = corpus.find_segments_in_classe(uces, i, 1000) -# if li == [] : -# break -# else : -# l += li -# l.sort(reverse = True) -# d = {} -# dlg.Update(2, 'Tri...') -# for i, line in enumerate(l) : -# d[i] = [line[1],line[0], line[2]] -# first = ['','',''] -# para={'dico': d,'fline':first} -# dlg.Destroy() -# win = wliste(self, -1, u"Segments répétés - Classe %i" % self.cl, d, first, size=(600, 500)) -# win.Show(True) -# -# def on_uce_carac(self,evt) : -# dial = PrefUCECarac(self, self.parent) -# dial.CenterOnParent() -# if dial.ShowModal() == wx.ID_OK : -# limite = dial.spin_eff.GetValue() -# atype = dial.radio_type.GetSelection() -# dlg = progressbar(self,maxi = 4) -# corpus = self.Source.corpus -# uces = corpus.lc[self.cl-1] -# tab = corpus.make_table_with_classe(uces, self.la) -# tab.pop(0) -# dlg.Update(2, u'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 : -# ntab = [round(sum([self.lchi[i] for i, word in enumerate(line) if word == 1])/float(sum(line)),2) if sum(line)!=0 else 0 for line in tab] -# ntab2 = [[ntab[i], uces[i]] for i, val in enumerate(ntab)] -# del ntab -# ntab2.sort(reverse = True) -# ntab2 = ntab2[:limite] -# nuces = [val[1] for val in ntab2] -# dlg.Update(3, u'concordancier...') -# #ucestxt = [corpus.ucis_paras_uces[val[1][0]][val[1][1]][val[1][2]] for val in ntab2] -# ucestxt1 = [row for row in corpus.getconcorde(nuces)] -# ucestxt = [] -# ucis_txt = [] -# for uce in ucestxt1 : -# ucetxt = ' '+uce[1]+' ' -# ucis_txt.append(' '.join(corpus.ucis[corpus.getucefromid(uce[0]).uci].etoiles) + '
') -# for lem in self.la : -# listmot = corpus.getlems()[lem].formes -# for id in listmot : -# forme = corpus.getforme(id).forme -# ucetxt = ucetxt.replace(' '+forme+' ', ' ' + forme + ' ') -# ucestxt.append(ucetxt) -# #ucestxt = [corpus.make_concord(self.la, ' '.join(uce), 'red') for uce in ucestxt] -# dlg.Update(4, u'texte...') -# #ucis_txt = [' '.join(corpus.ucis[val[1][0]][0]) for val in ntab2] -# win = message(self, -1, u"UCE caractéristiques - Classe %i" % self.cl, size=(600, 500), style=wx.DEFAULT_FRAME_STYLE) -# win.html = '\n' + '

'.join(['
'.join([ucis_txt[i], 'score : ' + str(ntab2[i][0]), ucestxt[i]]) for i in range(0,len(ucestxt))]) + '\n' -# win.HtmlPage.SetPage(win.html) -# dlg.Destroy() -# win.Show(True) -# -# def on_tablex(self, evt): -# if 'corpus' in dir(self.Source): -# corpus = self.Source.corpus -# else : -# corpus = self.Source.tableau -# with codecs.open(self.Source.pathout['chisqtable'], 'r', corpus.parametres['syscoding']) as f : -# chistable = [line.replace('\n','').replace('\r','').replace('"','').replace(',','.').split(';') for line in f] -# title = chistable[0] -# title.pop(0) -# chistable.pop(0) -# vchistable = [line[1:] for line in chistable] -# fchistable = [line[0] for line in chistable] -# words = [self.getColumnText(self.list.GetFirstSelected(), 6)] -# tableout = [vchistable[fchistable.index(words[0])]] -# last = self.list.GetFirstSelected() -# while self.list.GetNextSelected(last) != -1: -# last = self.list.GetNextSelected(last) -# word = self.getColumnText(last, 6) -# words.append(word) -# tableout.append(vchistable[fchistable.index(word)]) -# tmpgraph = tempfile.mktemp(dir=self.Source.parent.TEMPDIR) -# nbcl = len(title) -# txt = barplot(tableout, words, title, self.Source.parent.RscriptsPath['Rgraph'], tmpgraph) -# tmpscript = tempfile.mktemp(dir=self.Source.parent.TEMPDIR) -# file = open(tmpscript,'w') -# file.write(txt) -# file.close() -# -# exec_rcode(self.Source.parent.RPath, tmpscript, wait = True) -# win = MessageImage(self, -1, u"Graphique", size=(700, 500),style = wx.DEFAULT_FRAME_STYLE) -# win.addsaveimage(tmpgraph) -# txt = "" % tmpgraph -# win.HtmlPage.SetPage(txt) -# win.Show(True) -# -# def onlexdendro(self, evt): -# if 'corpus' in dir(self.Source): -# corpus = self.Source.corpus -# else : -# corpus = self.Source.tableau -# with codecs.open(self.Source.pathout['chisqtable'], 'r', corpus.parametres['syscoding']) as f : -# chistable = [line.replace('\n','').replace('\r','').replace('"','').replace(',','.').split(';') for line in f] -# title = chistable[0] -# title.pop(0) -# chistable.pop(0) -# vchistable = [line[1:] for line in chistable] -# fchistable = [line[0] for line in chistable] -# words = [self.getColumnText(self.list.GetFirstSelected(), 6)] -# tableout = [vchistable[fchistable.index(words[0])]] -# last = self.list.GetFirstSelected() -# while self.list.GetNextSelected(last) != -1: -# last = self.list.GetNextSelected(last) -# word = self.getColumnText(last, 6) -# words.append(word) -# tableout.append(vchistable[fchistable.index(word)]) -# tmpgraph = tempfile.mktemp(dir=self.Source.parent.TEMPDIR) -# txttable = 'c(' + ','.join([','.join(line) for line in tableout]) + ')' -# rownames = 'c("' + '","'.join(words) + '")' -# colnames = 'c("' + '","'.join(title) + '")' -# nbcl = len(title) -# rownb = len(words) -# txt = """ -# load("%s") -# di <- matrix(data=%s, nrow=%i, byrow = TRUE) -# rownames(di)<- %s -# colnames(di) <- %s -# library(ape) -# source("%s") -# height <- (30*ncol(di)) + (15*nrow(di)) -# height <- ifelse(height <= 400, 400, height) -# width <- 500 -# open_file_graph("%s", width=width, height=height) -# plot.dendro.lex(tree.cut1$tree.cl, di) -# """ % (self.Source.pathout['Rdendro'], txttable, rownb, rownames, colnames, self.Source.parent.RscriptsPath['Rgraph'], ffr(tmpgraph)) -# tmpscript = tempfile.mktemp(dir=self.Source.parent.TEMPDIR) -# file = open(tmpscript,'w') -# file.write(txt) -# file.close() -# exec_rcode(self.Source.parent.RPath, tmpscript, wait = True) -# win = MessageImage(self, -1, u"Graphique", size=(700, 500),style = wx.DEFAULT_FRAME_STYLE) -# win.addsaveimage(tmpgraph) -# txt = "" % tmpgraph -# win.HtmlPage.SetPage(txt) -# win.Show(True) -# -# -# def make_concord(self, uces, title, color = 'red') : -# corpus = self.Source.corpus -# ListWord = [self.getColumnText(self.list.GetFirstSelected(), 6)] -# last = self.list.GetFirstSelected() -# while self.list.GetNextSelected(last) != -1: -# last = self.list.GetNextSelected(last) -# ListWord.append(self.getColumnText(last, 6)) -# listmot = [forme for item in ListWord for forme in corpus.getlems()[item].formes] -# win = message(self, -1, title, size=(600, 500), style=wx.DEFAULT_FRAME_STYLE) -# toshow = ['\n

Concordancier

\n'] -# toshow.append('

' % color + ' '.join(ListWord) + '


') -# duce = {} -# ucef = [] -# for word in ListWord : -# ucef += list(set(corpus.getlemuces(word)).intersection(uces)) -# ucef = list(set(ucef)) -# ucef.sort() -# res = corpus.getconcorde(ucef) -# txt = '
'.join(toshow) +'

' -# for uce in res : -# ucetxt = ' '+uce[1]+' ' -# txt += ' '.join(corpus.ucis[corpus.getucefromid(uce[0]).uci].etoiles) + '
' -# for forme in listmot: -# forme = corpus.getforme(forme).forme -# ucetxt = ucetxt.replace(' '+forme+' ', ' ' + forme + ' ') -# txt += ucetxt + '

' -# win.HtmlPage.SetPage(txt) -# return win -# -# def OnPopupTwo(self, event): -# corpus = self.Source.corpus -# uces = corpus.lc[self.cl-1] -# win = self.make_concord(uces, "Concordancier - 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, "Concordancier - UCE classées") -# 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, "Concordancier - Toutes les UCE") -# win.Show(True) -# -# def OnPopupFive(self, event): -# word = self.getColumnText(self.list.GetFirstSelected(), 6) -# lk = "http://www.cnrtl.fr/definition/" + word -# webbrowser.open(lk) -# -# def OnPopupSix(self, event): -# word = self.getColumnText(self.list.GetFirstSelected(), 6) -# lk = "http://www.cnrtl.fr/etymologie/" + word -# webbrowser.open(lk) -# -# def OnPopupSeven(self, event): -# word = self.getColumnText(self.list.GetFirstSelected(), 6) -# lk = "http://www.cnrtl.fr/synonymie/" + word -# webbrowser.open(lk) -# -# def OnPopupHeight(self, event): -# word = self.getColumnText(self.list.GetFirstSelected(), 6) -# lk = "http://www.cnrtl.fr/antonymie/" + word -# webbrowser.open(lk) -# -# def OnPopupNine(self, event): -# word = self.getColumnText(self.list.GetFirstSelected(), 6) -# lk = "http://www.cnrtl.fr/morphologie/" + word -# webbrowser.open(lk) -# -# def onproxe(self, evt) : -# word = self.getColumnText(self.list.GetFirstSelected(), 6) -# lk = "http://www.cnrtl.fr/proxemie/" + word -# webbrowser.open(lk) -# -# def OnSize(self, event): -# w, h = self.GetClientSizeTuple() -# self.list.SetDimensions(0, 0, w, h) -# -# def OnColClick(self, event): -# self.do_greyline() -# -# -#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) -# self.button_1 = wx.Button(self, -1, "Fermer") -# self.Bind(wx.EVT_BUTTON, self.OnCloseMe, self.button_1) -# self.Bind(wx.EVT_CLOSE, self.OnCloseWindow) -# self.__do_layout() -# -# def __do_layout(self): -# sizer_1 = wx.BoxSizer(wx.VERTICAL) -# sizer_2 = wx.BoxSizer(wx.VERTICAL) -# sizer_2.Add(self.liste, 1, wx.EXPAND | wx.ADJUST_MINSIZE, 0) -# sizer_2.Add(self.button_1, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ADJUST_MINSIZE, 0) -# sizer_1.Add(sizer_2, 1, wx.EXPAND, 0) -# self.SetAutoLayout(True) -# self.SetSizer(sizer_1) -# self.Layout() -# -# def OnCloseMe(self, event): -# self.Close(True) -# -# def OnCloseWindow(self, event): -# self.Destroy() -# -#class message(wx.Dialog): -# def __init__(self, parent, title, size, save = True): -# wx.Dialog.__init__ ( self, parent, id = wx.ID_ANY, title = title, pos = wx.DefaultPosition, size = size, style = wx.DEFAULT_DIALOG_STYLE ) -# self.save = save -# self.SetSizeHintsSz( wx.DefaultSize, wx.DefaultSize ) -# -# self.html = "" -# self.HtmlPage=wx.html.HtmlWindow(self, -1) -# self.HtmlPage.SetMinSize( size ) -# if "gtk2" in wx.PlatformInfo: -# self.HtmlPage.SetStandardFonts() -# self.HtmlPage.SetFonts('Courier','Courier') -# -# self.button_1 = wx.Button(self, wx.ID_CANCEL) -# -# self.Bind(wx.EVT_BUTTON, self.OnCloseMe, self.button_1) -# if self.save : -# self.button_2 = wx.Button(self, wx.ID_SAVE) -# self.Bind(wx.EVT_BUTTON, self.OnSavePage, self.button_2) -# self.Bind(wx.EVT_CLOSE, self.OnCloseWindow) -# self.__do_layout() -# -# def __do_layout(self): -# sizer_2 = wx.BoxSizer(wx.VERTICAL) -# sizer_2.Add(self.HtmlPage, 0, wx.EXPAND|wx.ADJUST_MINSIZE, 0) -# m_sdbSizer1 = wx.StdDialogButtonSizer() -# m_sdbSizer1.AddButton( self.button_1 ) -# if self.save : -# m_sdbSizer1.AddButton( self.button_2 ) -# m_sdbSizer1.Realize() -# sizer_2.Add(m_sdbSizer1, 1, wx.EXPAND, 5) -# self.SetSizer(sizer_2) -# self.Layout() -# sizer_2.Fit( self ) -# -# def OnSavePage(self, evt) : -# dlg = wx.FileDialog( -# self, message="Enregistrer sous...", defaultDir=os.getcwd(), -# defaultFile="concordancier.html", wildcard="html|*.html", style=wx.SAVE | wx.OVERWRITE_PROMPT -# ) -# dlg.SetFilterIndex(2) -# dlg.CenterOnParent() -# if dlg.ShowModal() == wx.ID_OK: -# path = dlg.GetPath() -# with open(path, 'w') as f : -# f.write(self.html) -# -# def OnCloseMe(self, event): -# self.Close(True) -# -# def OnCloseWindow(self, event): -# self.Destroy() + + +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, menu = False) + self.button_1 = wx.Button(self, -1, "Fermer") + self.Bind(wx.EVT_BUTTON, self.OnCloseMe, self.button_1) + self.Bind(wx.EVT_CLOSE, self.OnCloseWindow) + self.__do_layout() + + def __do_layout(self): + sizer_1 = wx.BoxSizer(wx.VERTICAL) + sizer_2 = wx.BoxSizer(wx.VERTICAL) + sizer_2.Add(self.liste, 1, wx.EXPAND | wx.ADJUST_MINSIZE, 0) + sizer_2.Add(self.button_1, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ADJUST_MINSIZE, 0) + sizer_1.Add(sizer_2, 1, wx.EXPAND, 0) + self.SetAutoLayout(True) + self.SetSizer(sizer_1) + self.Layout() + + def OnCloseMe(self, event): + self.Close(True) + + def OnCloseWindow(self, event): + self.Destroy()