#---------------------------------------------------------------------------
-class List(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 List(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 ListPanel(wx.Panel, listmix.ColumnSorterMixin):
+class ListPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.ColumnSorterMixin):
def __init__(self, parent, gparent, dlist):
+ wx.ListCtrl.__init__( self, parent, -1, style=wx.LC_REPORT|wx.LC_VIRTUAL|wx.LC_HRULES|wx.LC_VRULES)
self.parent = parent
self.gparent = gparent
self.source = gparent
self.dlist = dlist
- wx.Panel.__init__(self, parent, -1, style=wx.WANTS_CHARS)
+ #wx.Panel.__init__(self, parent, -1, style=wx.WANTS_CHARS)
search_id = wx.NewId()
self.parent.Bind(wx.EVT_MENU, self.onsearch, id = search_id)
self.SetAcceleratorTable(self.accel_tbl)
self.il = wx.ImageList(16, 16)
- self.sm_up = self.il.Add(getSmallUpArrowBitmap())
- self.sm_dn = self.il.Add(getSmallDnArrowBitmap())
-
+ 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)
+ exec(s)
+ self.SetImageList(self.il, wx.IMAGE_LIST_SMALL)
tID = wx.NewId()
- self.list = List(self, tID,
- style=wx.LC_REPORT
- | wx.BORDER_NONE
- | wx.LC_EDIT_LABELS
- | wx.LC_SORT_ASCENDING
- )
+#-----------------------------------------------------------------------------------------
+ self.attr1 = wx.ListItemAttr()
+ self.attr1.SetBackgroundColour((230, 230, 230))
+ self.attr2 = wx.ListItemAttr()
+ self.attr2.SetBackgroundColour("light blue")
+
+ #def PopulateList(self, dlist):
+
+ #self.InsertColumn(0,'id', wx.LIST_FORMAT_LEFT)
+# i=1
+ self.InsertColumn(0, 'forme', wx.LIST_FORMAT_RIGHT)
+ self.InsertColumn(1, 'nb', wx.LIST_FORMAT_RIGHT)
+ self.InsertColumn(2, 'type', wx.LIST_FORMAT_RIGHT)
+ #self.InsertColumn(3, '', wx.LIST_FORMAT_RIGHT)
+
+ #ct = 0
+# for key, data in dlist.iteritems():
+# ct += 1
+# index = self.InsertStringItem(sys.maxint, data[0])
+# self.SetStringItem(index, 1, `data[1]`)
+# self.SetStringItem(index, 2, data[2])
+# self.SetStringItem(index, 3, '')
+# self.SetItemData(index, key)
- self.list.SetImageList(self.il, wx.IMAGE_LIST_SMALL)
- self.PopulateList(dlist)
+ self.SetColumnWidth(0, 150)
+ self.SetColumnWidth(1, 100)
+ self.SetColumnWidth(2, 100)
+ #self.SetColumnWidth(3, wx.LIST_AUTOSIZE)
- self.Bind(wx.EVT_SIZE, self.OnSize)
+ self.itemDataMap = dlist
+ self.itemIndexMap = dlist.keys()
+ self.SetItemCount(len(dlist))
+
+ #self.Bind(wx.EVT_SIZE, self.OnSize)
- self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnItemSelected, self.list)
- self.Bind(wx.EVT_LIST_COL_CLICK, self.OnColClick, self.list)
+ self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnItemSelected, self)
+ self.Bind(wx.EVT_LIST_COL_CLICK, self.OnColClick, self)
# for wxMSW
- self.list.Bind(wx.EVT_COMMAND_RIGHT_CLICK, self.OnRightClick)
+ self.Bind(wx.EVT_COMMAND_RIGHT_CLICK, self.OnRightClick)
# for wxGTK
- self.list.Bind(wx.EVT_RIGHT_UP, self.OnRightClick)
- self.itemDataMap = dlist
+ self.Bind(wx.EVT_RIGHT_UP, self.OnRightClick)
+ #listmix.ListCtrlAutoWidthMixin.__init__(self)
listmix.ColumnSorterMixin.__init__(self, 3)
self.SortListItems(1, False)
- self.do_greyline()
-#-----------------------------------------------------------------------------------------
-
- def PopulateList(self, dlist):
-
- #self.list.InsertColumn(0,'id', wx.LIST_FORMAT_LEFT)
-# i=1
- self.list.InsertColumn(0, 'forme', wx.LIST_FORMAT_RIGHT)
- self.list.InsertColumn(1, 'nb', wx.LIST_FORMAT_RIGHT)
- self.list.InsertColumn(2, 'type', wx.LIST_FORMAT_RIGHT)
- self.list.InsertColumn(3, '', wx.LIST_FORMAT_RIGHT)
-
- ct = 0
- for key, data in dlist.iteritems():
- ct += 1
- index = self.list.InsertStringItem(sys.maxint, data[0])
- self.list.SetStringItem(index, 1, `data[1]`)
- self.list.SetStringItem(index, 2, data[2])
- self.list.SetStringItem(index, 3, '')
- self.list.SetItemData(index, key)
-
- self.list.SetColumnWidth(0, 150)
- self.list.SetColumnWidth(1, 100)
- self.list.SetColumnWidth(2, 100)
- self.list.SetColumnWidth(3, wx.LIST_AUTOSIZE)
-
-
- self.currentItem = 0
-
- 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)
+ #self.do_greyline()
+
+ #self.currentItem = 0
+
+ def OnGetItemText(self, item, col):
+ index=self.itemIndexMap[item]
+ s = self.itemDataMap[index][col]
+ return s
+
+ def OnGetItemAttr(self, item):
+ #index=self.itemIndexMap[item]
+ #genre=self.itemDataMap[index][2]
+ if item % 2 :
+ return self.attr1
+ else :
+ return self.attr2
+
+# def do_greyline(self):
+# for row in xrange(self.GetItemCount()):
+# if row % 2 :
+# self.SetItemBackgroundColour(row, (230, 230, 230))
+# else :
+# self.SetItemBackgroundColour(row, wx.WHITE)
def OnColClick(self, event):
- self.do_greyline()
+ pass
+ #self.do_greyline()
# Used by the ColumnSorterMixin, see wx/lib/mixins/listctrl.py
def GetListCtrl(self):
- return self.list
+ return self
# Used by the ColumnSorterMixin, see wx/lib/mixins/listctrl.py
def GetSortImages(self):
return (self.sm_dn, self.sm_up)
+ def SortItems(self,sorter=cmp):
+ items = list(self.itemDataMap.keys())
+ items.sort(sorter)
+ self.itemIndexMap = items
+
+ # redraw the list
+ self.Refresh()
+
def OnRightDown(self, event):
x = event.GetX()
y = event.GetY()
- item, flags = self.list.HitTest((x, y))
+ item, flags = self.HitTest((x, y))
if flags & wx.LIST_HITTEST_ONITEM:
- self.list.Select(item)
+ self.Select(item)
event.Skip()
def getColumnText(self, index, col):
- item = self.list.GetItem(index, col)
+ item = self.GetItem(index, col)
return item.GetText()
def OnPopupOne(self, event):
corpus = self.gparent.corpus
- word = self.getColumnText(self.list.GetFirstSelected(), 0)
+ word = self.getColumnText(self.GetFirstSelected(), 0)
lems = corpus.getlems()
rep = []
for forme in lems[word].formes :
corpus = self.gparent.corpus
win = message(self, -1, u"Concordancier", size=(600, 200), style=wx.DEFAULT_FRAME_STYLE)
avap = 60
- item = self.getColumnText(self.list.GetFirstSelected(), 0)
+ item = self.getColumnText(self.GetFirstSelected(), 0)
listmot = corpus.getlems()[item].formes
#uce_ok = [corpus.formes[corpus.idformes[forme].forme][1] for forme in listmot]
uce_ok = corpus.getlemuces(item)#list(set([tuple(val) for line in uce_ok for val in line]))
win.HtmlPage.SetPage(txt)
win.Show(True)
- def OnSize(self, event):
- w, h = self.GetClientSizeTuple()
- self.list.SetDimensions(0, 0, w, h)
+# def OnSize(self, event):
+# w, h = self.GetClientSizeTuple()
+# self.SetDimensions(0, 0, w, h)
class message(wx.Frame):
def __init__(self, *args, **kwds):
selected.col <- read.table("%s")
toprint <- as.matrix(act[selected.col[,1] + 1,])
rownames(toprint) <- rownames(act)[selected.col[,1] + 1]
+ maxword <- %i
+ if (nrow(toprint) > maxword) {
+ toprint <- as.matrix(toprint[order(toprint[,1], decreasing=TRUE),])
+ toprint <- as.matrix(toprint[1:maxword,])
+ }
open_file_graph("%s", width = %i, height = %i)
par(bg=rgb%s)
wordcloud(row.names(toprint), toprint[,1], scale=c(%f,%f), random.order=FALSE, colors=rgb%s)
dev.off()
- """ % (ffr(self.analyse.pathout['actives_eff.csv']), ffr(self.analyse.pathout['selected.csv']),
- ffr(self.parametres['graphout']), self.parametres['width'], self.parametres['height'], bg_col, self.parametres['maxcex'], self.parametres['mincex'], txt_col)
+ """ % (ffr(self.analyse.pathout['actives_eff.csv']), ffr(self.analyse.pathout['selected.csv']), self.parametres['maxword'], ffr(self.parametres['graphout']), self.parametres['width'], self.parametres['height'], bg_col, self.parametres['maxcex'], self.parametres['mincex'], txt_col)
self.add(txt)
self.write()
from shutil import copyfile
#---------------------------------------------------------------------------
+class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.ColumnSorterMixin):
+ def __init__(self, parent, gparent, profclasse, Alceste=False, cl=0):
+ wx.ListCtrl.__init__( self, parent, -1, style=wx.LC_REPORT|wx.LC_VIRTUAL|wx.LC_HRULES|wx.LC_VRULES)
-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 = {}
-
+ self.Source = gparent
+ self.cl = cl
- 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
+ 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'*', '', ''])
+ profclasse.pop(self.lenact)
+ except ValueError:
+ self.lenact = len(profclasse)
+ try :
+ self.lensup = profclasse.index([u'*', u'*', u'*', u'*', u'*', u'*', '', ''])
+ self.lensup = self.lensup - self.lenact
+ profclasse.pop(self.lensup)
+ except ValueError:
+ self.lensup = 0
+ self.lenet = len(profclasse) - (self.lenact + self.lensup)
+ 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))
- 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)]
+ self.la = [dictdata[i][6] for i in range(0, self.lenact)]
+ self.lchi = [dictdata[i][4] for i in range(0, self.lenact)]
+ self.lfreq = [dictdata[i][1] for i in range(0, self.lenact)]
else :
self.la = []
self.lchi = []
self.lfreq = []
+
+ #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)
+ 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))
+ self.attrsg = wx.ListItemAttr()
+ self.attrsg.SetBackgroundColour((230, 230, 230))
+ self.attr2 = wx.ListItemAttr()
+ self.attr2.SetBackgroundColour((190, 249, 236))
+ self.attr2s = wx.ListItemAttr()
+ self.attr2s.SetBackgroundColour((211, 252, 244))
+ self.attr3 = wx.ListItemAttr()
+ 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. uce", 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)
+ self.InsertColumn(5, "Type", wx.LIST_FORMAT_RIGHT)
+ self.InsertColumn(6, "forme", wx.LIST_FORMAT_RIGHT)
+ self.InsertColumn(7, "p", wx.LIST_FORMAT_RIGHT)
+
- 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)
+ self.SetColumnWidth(0, 60)
+ self.SetColumnWidth(1, 70)
+ self.SetColumnWidth(2, 80)
+ self.SetColumnWidth(3, 100)
+ self.SetColumnWidth(4, 70)
+ 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.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)
- # Used by the ColumnSorterMixin, see wx/lib/mixins/listctrl.py
- def GetListCtrl(self):
- return self.list
+ #events
+ #self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnItemSelected)
+ #self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnItemActivated)
+ #self.Bind(wx.EVT_LIST_ITEM_DESELECTED, self.OnItemDeselected)
+ self.Bind(wx.EVT_LIST_COL_CLICK, self.OnColClick)
- # Used by the ColumnSorterMixin, see wx/lib/mixins/listctrl.py
- def GetSortImages(self):
- return (self.sm_dn, self.sm_up)
+ # for wxMSW
+ self.Bind(wx.EVT_COMMAND_RIGHT_CLICK, self.OnRightClick)
+ # for wxGTK
+ self.Bind(wx.EVT_RIGHT_UP, self.OnRightClick)
- def OnRightDown(self, event):
- x = event.GetX()
- y = event.GetY()
- item, flags = self.list.HitTest((x, y))
+ #for searching
+ 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)
- if flags & wx.LIST_HITTEST_ONITEM:
- self.list.Select(item)
+
+ def OnColClick(self,event):
event.Skip()
+ def OnItemSelected(self, event):
+ self.currentItem = event.m_itemIndex
+ print 'OnItemSelected: "%s", "%s", "%s", "%s"\n' % (self.currentItem, self.GetItemText(self.currentItem), self.getColumnText(self.currentItem, 1), self.getColumnText(self.currentItem, 2))
+ #self.log.WriteText('OnItemSelected: "%s", "%s", "%s", "%s"\n' %
+ # (self.currentItem,
+ # self.GetItemText(self.currentItem),
+ # self.getColumnText(self.currentItem, 1),
+ # self.getColumnText(self.currentItem, 2)))
+
+ def OnItemActivated(self, event):
+ self.currentItem = event.m_itemIndex
+ print "OnItemActivated: %s\nTopItem: %s\n" % (self.GetItemText(self.currentItem), self.GetTopItem())
+ #self.log.WriteText("OnItemActivated: %s\nTopItem: %s\n" %
+ # (self.GetItemText(self.currentItem), self.GetTopItem()))
def getColumnText(self, index, col):
- item = self.list.GetItem(index, col)
+ item = self.GetItem(index, col)
return item.GetText()
+ def OnItemDeselected(self, evt):
+ pass
+ #self.log.WriteText("OnItemDeselected: %s" % evt.m_itemIndex)
+
+
+ #---------------------------------------------------
+ # These methods are callbacks for implementing the
+ # "virtualness" of the list...
+
+ 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
+ else:
+ return -1
+
+ def OnGetItemAttr(self, item):
+ index=self.itemIndexMap[item]
+ #genre=self.itemDataMap[index][2]
+ if index < self.lenact :
+ if item % 2 :
+ return self.attr1
+ else :
+ return self.attrsg
+ elif index >= self.lenact and index < (self.lenact + self.lensup) :
+ if item % 2 :
+ return self.attr2
+ else :
+ return self.attr2s
+ elif index >= (self.lenact + self.lensup) :
+ if item % 2 :
+ return self.attr3
+ else :
+ return self.attr3s
+ else :
+ return None
+
+# if genre=="Rock":
+# return self.attr2
+# elif genre=="Jazz":
+# return self.attr1
+# elif genre=="New Age":
+# return self.attr3
+# else:
+# return None
+
+ #---------------------------------------------------
+ # Matt C, 2006/02/22
+ # Here's a better SortItems() method --
+ # 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 OnItemSelected(self, event):
- self.currentItem = event.m_itemIndex
- event.Skip()
+ # Used by the ColumnSorterMixin, see wx/lib/mixins/listctrl.py
+ def GetListCtrl(self):
+ return self
+
+ # Used by the ColumnSorterMixin, see wx/lib/mixins/listctrl.py
+ def GetSortImages(self):
+ return (self.sm_dn, self.sm_up)
def onsearch(self, evt) :
self.dial = SearchDial(self, self, 6, True)
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)
+ # 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()
chistable.pop(0)
vchistable = [line[1:] for line in chistable]
fchistable = [line[0] for line in chistable]
- word = self.getColumnText(self.list.GetFirstSelected(), 6)
+ word = self.getColumnText(self.GetFirstSelected(), 6)
if len(word.split('_')) > 1 :
var = word.split('_')[0]
words = [word for word in self.var_mod[var]]
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)
+ word = self.getColumnText(self.GetFirstSelected(), 6)
dlg = progressbar(self, 2)
corpus = self.Source.corpus
uces = corpus.lc[self.cl-1]
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'
- #corpus.make_et_table()
- word = self.getColumnText(self.list.GetFirstSelected(), 6)
- lems = corpus.getlems()
- uces = corpus.lc[self.cl-1]
- rep = []
- #FIXME : donner aussi eff reel a la place de nb uce
- for forme in lems[word].formes :
- ucef = list(set(corpus.getworduces(forme)).intersection(uces))
- #ucef = [uce for uce in corpus.formes[forme][1] if uce in uces]
- if ucef != [] :
- nb = len(ucef)
- rep.append([corpus.getforme(forme).forme, nb])
- win = message(self, -1, u"Formes associées", size=(300, 200), style=wx.DEFAULT_FRAME_STYLE)
- win.html = '<html>\n' + '<br>'.join([' : '.join([str(val) for val in forme]) for forme in rep]) + '\n</html>'
- win.HtmlPage.SetPage(win.html)
- win.Show(True)
-
def on_graph(self, evt):
dlg = progressbar(self, 2)
corpus = self.Source.corpus
chistable.pop(0)
vchistable = [line[1:] for line in chistable]
fchistable = [line[0] for line in chistable]
- words = [self.getColumnText(self.list.GetFirstSelected(), 6)]
+ words = [self.getColumnText(self.GetFirstSelected(), 6)]
tableout = [vchistable[fchistable.index(words[0])]]
- last = self.list.GetFirstSelected()
- while self.list.GetNextSelected(last) != -1:
- last = self.list.GetNextSelected(last)
+ last = self.GetFirstSelected()
+ while self.GetNextSelected(last) != -1:
+ last = self.GetNextSelected(last)
word = self.getColumnText(last, 6)
words.append(word)
tableout.append(vchistable[fchistable.index(word)])
chistable.pop(0)
vchistable = [line[1:] for line in chistable]
fchistable = [line[0] for line in chistable]
- words = [self.getColumnText(self.list.GetFirstSelected(), 6)]
+ words = [self.getColumnText(self.GetFirstSelected(), 6)]
tableout = [vchistable[fchistable.index(words[0])]]
- last = self.list.GetFirstSelected()
- while self.list.GetNextSelected(last) != -1:
- last = self.list.GetNextSelected(last)
+ last = self.GetFirstSelected()
+ while self.GetNextSelected(last) != -1:
+ last = self.GetNextSelected(last)
word = self.getColumnText(last, 6)
words.append(word)
tableout.append(vchistable[fchistable.index(word)])
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 = [self.getColumnText(self.GetFirstSelected(), 6)]
+ last = self.GetFirstSelected()
+ 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, -1, title, size=(600, 500), style=wx.DEFAULT_FRAME_STYLE)
win.Show(True)
def OnPopupFive(self, event):
- word = self.getColumnText(self.list.GetFirstSelected(), 6)
+ word = self.getColumnText(self.GetFirstSelected(), 6)
lk = "http://www.cnrtl.fr/definition/" + word
webbrowser.open(lk)
def OnPopupSix(self, event):
- word = self.getColumnText(self.list.GetFirstSelected(), 6)
+ word = self.getColumnText(self.GetFirstSelected(), 6)
lk = "http://www.cnrtl.fr/etymologie/" + word
webbrowser.open(lk)
def OnPopupSeven(self, event):
- word = self.getColumnText(self.list.GetFirstSelected(), 6)
+ word = self.getColumnText(self.GetFirstSelected(), 6)
lk = "http://www.cnrtl.fr/synonymie/" + word
webbrowser.open(lk)
def OnPopupHeight(self, event):
- word = self.getColumnText(self.list.GetFirstSelected(), 6)
+ word = self.getColumnText(self.GetFirstSelected(), 6)
lk = "http://www.cnrtl.fr/antonymie/" + word
webbrowser.open(lk)
def OnPopupNine(self, event):
- word = self.getColumnText(self.list.GetFirstSelected(), 6)
+ word = self.getColumnText(self.GetFirstSelected(), 6)
lk = "http://www.cnrtl.fr/morphologie/" + word
webbrowser.open(lk)
def onproxe(self, evt) :
- word = self.getColumnText(self.list.GetFirstSelected(), 6)
+ word = self.getColumnText(self.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 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 = "<img src='%s'>" % 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'
+ #corpus.make_et_table()
+ word = self.getColumnText(self.GetFirstSelected(), 6)
+ lems = corpus.getlems()
+ uces = corpus.lc[self.cl-1]
+ rep = []
+ #FIXME : donner aussi eff reel a la place de nb uce
+ for forme in lems[word].formes :
+ ucef = list(set(corpus.getworduces(forme)).intersection(uces))
+ #ucef = [uce for uce in corpus.formes[forme][1] if uce in uces]
+ if ucef != [] :
+ nb = len(ucef)
+ rep.append([corpus.getforme(forme).forme, nb])
+ win = message(self, -1, u"Formes associées", size=(300, 200), style=wx.DEFAULT_FRAME_STYLE)
+ win.html = '<html>\n' + '<br>'.join([' : '.join([str(val) for val in forme]) for forme in rep]) + '\n</html>'
+ 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) + '<br>')
+# for lem in self.la :
+# listmot = corpus.getlems()[lem].formes
+# for id in listmot :
+# forme = corpus.getforme(id).forme
+# ucetxt = ucetxt.replace(' '+forme+' ', '<font color=red> ' + forme + ' </font>')
+# 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 = '<html>\n' + '<br><br>'.join(['<br>'.join([ucis_txt[i], 'score : ' + str(ntab2[i][0]), ucestxt[i]]) for i in range(0,len(ucestxt))]) + '\n</html>'
+# 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 = "<img src='%s'>" % 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 = "<img src='%s'>" % 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 = ['<html>\n<H1>Concordancier</H1>\n']
+# toshow.append('<h3><font color=%s>' % color + ' '.join(ListWord) + '</font></h3><br>')
+# 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 = '<br>'.join(toshow) +'<br><br>'
+# for uce in res :
+# ucetxt = ' '+uce[1]+' '
+# txt += ' '.join(corpus.ucis[corpus.getucefromid(uce[0]).uci].etoiles) + '<br>'
+# for forme in listmot:
+# forme = corpus.getforme(forme).forme
+# ucetxt = ucetxt.replace(' '+forme+' ', '<font color=red> ' + forme + ' </font>')
+# txt += ucetxt + '<br><br>'
+# 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.Frame):
def __init__(self, *args, **kwds):
kwds["style"] = wx.DEFAULT_FRAME_STYLE
def OnCloseWindow(self, event):
self.Destroy()
-
-def getSmallUpArrowData():
- return \
-'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\
-\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\
-\x00\x00<IDAT8\x8dcddbf\xa0\x040Q\xa4{h\x18\xf0\xff\xdf\xdf\xffd\x1b\x00\xd3\
-\x8c\xcf\x10\x9c\x06\xa0k\xc2e\x08m\xc2\x00\x97m\xd8\xc41\x0c \x14h\xe8\xf2\
-\x8c\xa3)q\x10\x18\x00\x00R\xd8#\xec\xb2\xcd\xc1Y\x00\x00\x00\x00IEND\xaeB`\
-\x82'
-
-def getSmallUpArrowBitmap():
- return wx.BitmapFromImage(getSmallUpArrowImage())
-
-def getSmallUpArrowImage():
- stream = cStringIO.StringIO(getSmallUpArrowData())
- return wx.ImageFromStream(stream)
-
-#----------------------------------------------------------------------
-def getSmallDnArrowData():
- return \
-"\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\
-\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\
-\x00\x00HIDAT8\x8dcddbf\xa0\x040Q\xa4{\xd4\x00\x06\x06\x06\x06\x06\x16t\x81\
-\xff\xff\xfe\xfe'\xa4\x89\x91\x89\x99\x11\xa7\x0b\x90%\ti\xc6j\x00>C\xb0\x89\
-\xd3.\x10\xd1m\xc3\xe5*\xbc.\x80i\xc2\x17.\x8c\xa3y\x81\x01\x00\xa1\x0e\x04e\
-?\x84B\xef\x00\x00\x00\x00IEND\xaeB`\x82"
-
-def getSmallDnArrowBitmap():
- return wx.BitmapFromImage(getSmallDnArrowImage())
-
-def getSmallDnArrowImage():
- stream = cStringIO.StringIO(getSmallDnArrowData())
- return wx.ImageFromStream(stream)
+#
+#def getSmallUpArrowData():
+# return \
+#'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\
+#\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\
+#\x00\x00<IDAT8\x8dcddbf\xa0\x040Q\xa4{h\x18\xf0\xff\xdf\xdf\xffd\x1b\x00\xd3\
+#\x8c\xcf\x10\x9c\x06\xa0k\xc2e\x08m\xc2\x00\x97m\xd8\xc41\x0c \x14h\xe8\xf2\
+#\x8c\xa3)q\x10\x18\x00\x00R\xd8#\xec\xb2\xcd\xc1Y\x00\x00\x00\x00IEND\xaeB`\
+#\x82'
+#
+#def getSmallUpArrowBitmap():
+# return wx.BitmapFromImage(getSmallUpArrowImage())
+#
+#def getSmallUpArrowImage():
+# stream = cStringIO.StringIO(getSmallUpArrowData())
+# return wx.ImageFromStream(stream)
+#
+##----------------------------------------------------------------------
+#def getSmallDnArrowData():
+# return \
+#"\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\
+#\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\
+#\x00\x00HIDAT8\x8dcddbf\xa0\x040Q\xa4{\xd4\x00\x06\x06\x06\x06\x06\x16t\x81\
+#\xff\xff\xfe\xfe'\xa4\x89\x91\x89\x99\x11\xa7\x0b\x90%\ti\xc6j\x00>C\xb0\x89\
+#\xd3.\x10\xd1m\xc3\xe5*\xbc.\x80i\xc2\x17.\x8c\xa3y\x81\x01\x00\xa1\x0e\x04e\
+#?\x84B\xef\x00\x00\x00\x00IEND\xaeB`\x82"
+#
+#def getSmallDnArrowBitmap():
+# return wx.BitmapFromImage(getSmallDnArrowImage())
+#
+#def getSmallDnArrowImage():
+# stream = cStringIO.StringIO(getSmallDnArrowData())
+# return wx.ImageFromStream(stream)
rnames
}
library(rgl)
- rn <- vire.nonascii(rownames(table.in))
+ #rn <- vire.nonascii(rownames(table.in))
+ rn <- rownames(table.in)
rgl.open()
+ par3d(cex=0.7)
#par3d(windowRect = c(100,100,600,600))
rgl.bg(col = c('white', "#99bb99"), front = "lines", box=FALSE, sphere = TRUE)
rgl.lines(c(rx), c(0, 0), c(0, 0), col = "#000000")
text3d(0,ry[2]+1,0, ylab)
text3d(0,0,rz[2]+1, zlab)
rain = rainbow(clnb)
- colors = rain[classes]
- text3d(table.in[,1], table.in[,2], table.in[,3], rn, col='black')
- if (tchi) {
+ if (tchi) {
maxchi <- norm.vec(maxchi, tchi.min/100, tchi.max/100)
} else if (!is.null(cex.par)) {
maxchi <- norm.vec(cex.par, txt.min/100, txt.max/100)
} else {
maxchi <- 0.1
}
+ colors = rain[classes]
+ text3d(table.in[,1], table.in[,2], table.in[,3], rn, col= colors , cex = cex.par)
for (i in 1:clnb) {
text3d(rx[2],(ry[2]+(0.2*i)),0,paste('classe',i),col=rain[i])
}
- rgl.spheres(table.in, col = colors, radius = maxchi, alpha = alpha)
+ #if (tchi) {
+ # rgl.spheres(table.in, col = colors, radius = maxchi, alpha = alpha)
+ #}
if (dofilm) {
require(tcltk)
-./checkinstall.py
-./aslexico.py
+./corpusNG.py
+./Liste.py
+./analysetxt.py
+./KeyFrame.py
+./ttparser.py
+./tabverges.py
+./listlex.py
+./textdist.py
+./textafcuci.py
+./iramuteq.py
+./checkversion.py
+./tabrsimple.py
+./textaslexico.py
+./corpus.py
+./tabchddist.py
+./extract.py
+./dialog.py
./openanalyse.py
-./listlex2.py
-./chdtxt.py
-./student.py
-./sheet.py
-./textstat.py
-./guiparam3d.py
-./chdtxtNG.py
-./chd.py
-./OptionAlceste.py
-./rchdng.py
-./getencoding.py
+./tableau.py
+./search_tools.py
./PrintRScript.py
-./normalize.py
-./lancergl.py
-./dendro.py
+./tabstudent.py
+./textstat.py
+./guifunct.py
./layout.py
-./chi2.py
-./afcm.py
-./dialog.py
-./checkversion.py
-./pamtxt.py
-./ProfList.py
-./frequence.py
-./simi.py
-./listlex.py
-./ooolib.py
-./chdquest.py
+./usecorpusNG.py
+./textsimi.py
+./textcheckcorpus.py
+./OptionAlceste.py
+./tabsimi.py
+./iracmd.py
+./textclassechd.py
+./newsimi.py
./chemins.py
+./ProfList.py
+./word_stat.py
+./tree.py
+./textwordcloud.py
+./guiparam3d.py
+./parse_factiva_xml.py
+./textchdalc.py
+./colors.py
+./parse_factiva_txt2.py
./functions.py
-./afcuci.py
-./KeyFrame.py
-./Liste.py
-./guifunct.py
-./iramuteq.py
+./sheet.py
+./profile_segment.py
+./checkinstall.py
+./parse_factiva_html.py
+./search_list.py
+./tabchdalc.py
+./parse_factiva_txt.py
+./tabfrequence.py
+./tabchi2.py
+./tabafcm.py
'pam' : os.path.join(ConfigPath, 'pam.cfg'),
'history' : os.path.join(ConfigPath, 'history.db'),
'corpus' : os.path.join(ConfigPath, 'corpus.cfg'),
+ 'stat' : os.path.join(ConfigPath, 'stat.cfg'),
+ 'simitxt' : os.path.join(ConfigPath, 'simitxt.cfg'),
}
return DictConfigPath
--- /dev/null
+
+[simitxt]
+tvprop = False
+arbremax = True
+coeff_temin = 1
+seuil = 1
+cols = (255, 0, 0, 255)
+vcex = True
+height = 1000
+alpha = 20
+vcexmax = 25
+film = False
+cola = (200, 200, 200, 255)
+coeff_tv_nb = 0
+bystar = False
+cexfromchi = False
+width = 1000
+tvmax = 30
+time = 0h 0m 20s
+nbactives = 1833
+vcexmin = 10
+seuil_ok = False
+type = simitxt
+keep_coord = False
+label_e = False
+sfromchi = False
+lem = 1
+label_v = True
+eff_min_forme = 3
+fromprof = True
+layout = 2
+tvmin = 5
+cex = 10
+coeff = 0
+coeff_te = True
+coeff_temax = 10
+type_graph = 1
+coeff_tv = True
+first = False
--- /dev/null
+[stat]
+pathout =
+name =
+encoding =
+lem = 1
+corpus =
+type = stat
import codecs
import os
+import gettext
+_ = gettext.gettext
+import locale
import sys
from time import time
from functions import decoupercharact, ReadDicoAsDico, DoConf
from chemins import PathOut
from dialog import CorpusPref
from functions import ReadLexique, ReadDicoAsDico
+from colors import colors
import datetime
else :
self.lems[lem].act = 2
- def make_actives_limit(self, limit) :
+ def make_actives_limit(self, limit, key = 1) :
if self.idformes is None :
self.make_idformes()
- return [lem for lem in self.lems if self.getlemeff(lem) >= limit and self.lems[lem].act == 1]
+ return [lem for lem in self.lems if self.getlemeff(lem) >= limit and self.lems[lem].act == key]
def make_actives_nb(self, nbmax, key) :
log.info('make_actives_nb : %i - %i' % (nbmax,key))
except IndexError :
det[et[0]] = 1
print det
-
def make_and_write_profile_et(self, ucecl, fileout) :
log.info('etoiles/classes')
with open(fileout, 'w') as f :
f.write('\n'.join([';'.join([etoile] + [`len(set(self.getucesfrometoile(etoile)).intersection(classe))` for classe in ucecl]) for etoile in etoiles]).encode(self.parametres['syscoding']))
+ def make_colored_corpus(self) :
+ ucecl = {}
+ for i, lc in enumerate(self.lc) :
+ for uce in lc :
+ ucecl[uce] = i + 1
+ for uce in self.lc0 :
+ ucecl[uce] = 0
+ color = ['black'] + colors[len(self.lc) - 1]
+ txt = '''<html>
+ <meta http-equiv="content-Type" content="text/html; charset=%s" />
+ <body>
+''' % sys.getdefaultencoding()
+ res = self.getalluces()
+ self.make_iduces()
+ actuci = ''
+ actpara = False
+ for uce in res :
+ if self.iduces[uce[0]].uci != actuci :
+ actuci = self.iduces[uce[0]].uci
+ txt += '<br><hr>' + ' '.join(self.ucis[self.iduces[uce[0]].uci].etoiles) + '<br><br>'
+ txt += '<font color="%s">' % (color[ucecl[uce[0]]]) + uce[1] + '</font><br><br>'
+ else :
+ txt += '<font color="%s">' % (color[ucecl[uce[0]]]) + uce[1] + '</font><br><br>'
+ return txt + '\n</body></html>'
+
def count_from_list(self, l, d) :
for val in l :
if val in d :
d[val] = 1
return d
+ def count_from_list_cl(self, l, d, a, clnb) :
+ for val in l :
+ if val in d :
+ d[val][a] += 1
+ else :
+ d[val] = [0] * clnb
+ d[val][a] = 1
+ return d
+
def find_segments(self, taille_segment, taille_limite) :
d = {}
for uce in self.getalluces() :
l = l[-taille_limite:]
return l
-
-
+ def make_segments_profile(self, fileout, lenmin = 3, lenmax = 10, effmin = 50, lem = False) :
+ d = {}
+ for b, classe in enumerate(self.lc) :
+ for uce in self.getconcorde(classe) :
+ uce = uce[1].split()
+ if lem :
+ uce = [self.formes[forme].lem for forme in uce]
+ for taille_segment in range(lenmin,lenmax) :
+ d =self.count_from_list_cl([' '.join(uce[i:i+taille_segment]) for i in range(len(uce)-(taille_segment - 1))], d, b, len(self.lc))
+ result = [[seg] + [str(val) for val in d[seg]] for seg in d if sum(d[seg]) >= effmin]
+ with open(fileout, 'w') as f :
+ f.write('\n'.join([';'.join(line) for line in result]))
def make_ucecl_from_R(self, filein) :
with open(filein, 'rU') as f :
Si on trouve un '$', c'est fini.
Sinon, on cherche le meilleur candidat. C'est-à-dire le rapport poids/distance le plus important.
"""
- separateurs = [[u'.', 6.0], [u'?', 6.0], [u'!', 6.0], [u'£', 6.0], [u':', 5.0], [u';', 4.0], [u',', 1.0], [u' ', 0.01]]
+ separateurs = [[u'.', 6.0], [u'?', 6.0], [u'!', 6.0], [u'£$£', 6.0], [u':', 5.0], [u';', 4.0], [u',', 1.0], [u' ', 0.01]]
dsep = dict([[val[0],val[1]] for val in separateurs])
trouve = False # si on a trouvé un bon séparateur
iDecoupe = 0 # indice du caractere ou il faut decouper
if self.corpus.parametres['keep_ponct'] :
self.ponctuation_espace = [' ', '']
else :
- self.ponctuation_espace = [' ','.', u'£', ';', '?', '!', ',', ':','']
+ self.ponctuation_espace = [' ','.', u'£$£', ';', '?', '!', ',', ':','']
self.cleans = []
self.tolist = self.corpus.parametres.get('tolist', 0)
self.buildcleans()
def dobuild(self) :
t1 = time()
- self.read_corpus(self.infile)
- self.indexdb()
- self.corpus.parametres['ira'] = self.corpus.pathout['Corpus.cira']
- self.time = time() - t1
- self.dofinish()
- DoConf().makeoptions(['corpus'],[self.corpus.parametres], self.corpus.pathout['Corpus.cira'])
- log.info('time : %f' % (time() - t1))
+ try :
+ self.read_corpus(self.infile)
+ except Warning, args :
+ log.info('pas kool %s' % args)
+ raise Warning
+ else :
+ self.indexdb()
+ self.corpus.parametres['ira'] = self.corpus.pathout['Corpus.cira']
+ self.time = time() - t1
+ self.dofinish()
+ DoConf().makeoptions(['corpus'],[self.corpus.parametres], self.corpus.pathout['Corpus.cira'])
+ log.info('time : %f' % (time() - t1))
def connect(self) :
self.conn_f = sqlite3.connect(self.corpus.pathout['formes.db'])
self.cleans.append(self.dolower)
if self.corpus.parametres.get('firstclean', 1) :
self.cleans.append(self.firstclean)
- self.rule = self.corpus.parametres.get('keep_caract', u"^a-zA-Z0-9àÀâÂäÄáÁéÉèÈêÊëËìÌîÎïÏòÒôÔöÖùÙûÛüÜçÇßœŒ’ñ.:,;!?*'_-")
+ self.rule = self.corpus.parametres.get('keep_caract', u"^a-zA-Z0-9àÀâÂäÄáÁéÉèÈêÊëËìÌîÎïÏòÒôÔöÖùÙûÛüÜçÇßœŒ’ñ.:,;!?*'_")
self.cleans.append(self.docharact)
if self.corpus.parametres.get('expressions', 1) :
self.cleans.append(self.make_expression)
def firstclean(self, txt) :
txt = txt.replace(u'’',"'")
txt = txt.replace(u'œ', u'oe')
- return txt.replace('...',u' £ ').replace('?',' ? ').replace('.',' . ').replace('!', ' ! ').replace(',',' , ').replace(';', ' ; ').replace(':',' : ')
+ return txt.replace('...',u' £$£ ').replace('?',' ? ').replace('.',' . ').replace('!', ' ! ').replace(',',' , ').replace(';', ' ; ').replace(':',' : ').replace(u'…', ' £$£ ')
def make_cleans(self, txt) :
for clean in self.cleans :
iduci = -1
idpara = -1
iduce = -1
- with codecs.open(infile, 'rU', self.encoding) as f :
- for line in f :
- if self.testuci(line) :
- iduci += 1
- if txt != [] :
- iduce, idpara = self.treattxt(txt, iduce, idpara, iduci - 1)
- txt = []
- self.corpus.ucis.append(Uci(iduci, line))
- else :
- self.corpus.ucis.append(Uci(iduci, line))
- elif line.startswith(u'-*') :
- if txt != [] :
- iduce, idpara = self.treattxt(txt, iduce, idpara, iduci)
- txt = []
- idpara += 1
- self.corpus.ucis[-1].paras.append(line.split()[0])
- elif line.strip() != '' and iduci != -1 :
- txt.append(line)
- if txt != [] :
- iduce, idpara = self.treattxt(txt, iduce, idpara, iduci)
- del(txt)
- self.backup_uce()
+ linenb = 0
+ try :
+ with codecs.open(infile, 'r', self.encoding) as f :
+ for line in f :
+ linenb += 1
+ line = line.rstrip('\n\r')
+ if self.testuci(line) :
+ iduci += 1
+ if txt != [] :
+ iduce, idpara = self.treattxt(txt, iduce, idpara, iduci - 1)
+ txt = []
+ self.corpus.ucis.append(Uci(iduci, line))
+ else :
+ if iduci > 0 :
+ if self.corpus.ucis[-1].uces == [] :
+ log.info('linenb : %i' % linenb)
+ raise Exception("EmptyText %i" % linenb)
+ self.corpus.ucis.append(Uci(iduci, line))
+ elif line.startswith(u'-*') :
+ if iduci != -1 :
+ if txt != [] :
+ iduce, idpara = self.treattxt(txt, iduce, idpara, iduci)
+ txt = []
+ idpara += 1
+ self.corpus.ucis[-1].paras.append(line.split()[0])
+ else :
+ raise Exception('paragrapheOT')
+ elif line.strip() != '' and iduci != -1 :
+ txt.append(line)
+ if txt != [] and iduci != -1 :
+ iduce, idpara = self.treattxt(txt, iduce, idpara, iduci)
+ del(txt)
+ else :
+ raise Exception("EmptyText")
+ if iduci != -1 and iduce != -1:
+ self.backup_uce()
+ else :
+ log.info(_(u"No Texte in corpora. Are you sure of the formatting ?"))
+ raise Exception('TextBeforeTextMark')
+ except UnicodeDecodeError :
+ raise Exception("CorpusEncoding")
def treattxt(self, txt, iduce, idpara, iduci) :
if self.corpus.parametres.get('ucemethod', 0) == 2 and self.corpus.parametres['douce']:
uce = ' '.join([val for val in texte_uce if val not in self.ponctuation_espace])
if uce != '' :
- print 'RESTEE UUCEEEEEEEEEEEEE', uce
+ #print 'RESTEE UUCEEEEEEEEEEEEE', uce
out.append(uce)
return out
else :
#---------------------------------------------------------------------------
-encodages = [[u'cp1252',u'Windows'], [u'utf-8',u'Linux'], [u'MacRoman',u'MacOs X'], [u'ascii', u'English'], [u'big5', u'Traditional Chinese'], [u'big5hkscs', u'Traditional Chinese'], [u'cp037', u'English'], [u'cp424', u'Hebrew'], [u'cp437', u'English'], [u'cp500', u'Western Europe'], [u'cp737', u'Greek'], [u'cp775', u'Baltic languages'], [u'cp850', u'Western Europe'], [u'cp852', u'Central and Eastern Europe'], [u'cp855', u'Bulg, Byelorus, Mace, Rus, Serb'], [u'cp856', u'Hebrew'], [u'cp857', u'Turkish'], [u'cp860', u'Portuguese'], [u'cp861', u'Icelandic'], [u'cp862', u'Hebrew'], [u'cp863', u'Canadian'], [u'cp864', u'Arabic'], [u'cp865', u'Danish, Norwegian'], [u'cp866', u'Russian'], [u'cp869', u'Greek'], [u'cp874', u'Thai'], [u'cp875', u'Greek'], [u'cp932', u'Japanese'], [u'cp949', u'Korean'], [u'cp950', u'Traditional Chinese'], [u'cp1006', u'Urdu'], [u'cp1026', u'Turkish'], [u'cp1140', u'Western Europe'], [u'cp1250', u'Central and Eastern Europe'], [u'cp1251', u'Bulg, Byelorus, Mace, Rus, Serb'], [u'cp1253', u'Greek'], [u'cp1254', u'Turkish'], [u'cp1255', u'Hebrew'], [u'cp1256', u'Arabic'], [u'cp1257', u'Baltic languages'], [u'cp1258', u'Vietnamese'], [u'euc_jp', u'Japanese'], [u'euc_jis_2004', u'Japanese'], [u'euc_jisx0213', u'Japanese'], [u'euc_kr', u'Korean'], [u'gb2312', u'Simplified Chinese'], [u'gbk', u'Unified Chinese'], [u'gb18030', u'Unified Chinese'], [u'hz', u'Simplified Chinese'], [u'iso2022_jp', u'Japanese'], [u'iso2022_jp_1', u'Japanese'], [u'iso2022_jp_2', u'Jp, K, S C, WE, G'], [u'iso2022_jp_2004', u'Japanese'], [u'iso2022_jp_3', u'Japanese'], [u'iso2022_jp_ext', u'Japanese'], [u'iso2022_kr', u'Korean'], [u'latin_1', u'West Europe'], [u'iso8859_2', u'Central and Eastern Europe'], [u'iso8859_3', u'Esperanto, Maltese'], [u'iso8859_4', u'Baltic languages'], [u'iso8859_5', u'Bulg, Byelorus, Mace, Rus, Serb'], [u'iso8859_6', u'Arabic'], [u'iso8859_7', u'Greek'], [u'iso8859_8', u'Hebrew'], [u'iso8859_9', u'Turkish'], [u'iso8859_10', u'Nordic languages'], [u'iso8859_13', u'Baltic languages'], [u'iso8859_14', u'Celtic languages'], [u'iso8859_15', u'Western Europe'], [u'iso8859_16', u'South-Eastern Europe'], [u'johab', u'Korean'], [u'koi8_r', u'Russian'], [u'koi8_u', u'Ukrainian'], [u'mac_cyrillic', u'Bulg, Byelorus, Mace, Rus, Serb'], [u'mac_greek', u'Greek'], [u'mac_iceland', u'Icelandic'], [u'mac_latin2', u'Central and Eastern Europe'], [u'mac_turkish', u'Turkish'], [u'ptcp154', u'Kazakh'], [u'shift_jis', u'Japanese'], [u'shift_jis_2004', u'Japanese'], [u'shift_jisx0213', u'Japanese'], [u'utf_32', u'all languages'], [u'utf_32_be', u'all languages'], [u'utf_32_le', u'all languages'], [u'utf_16', u'all languages'], [u'utf_16_be', u'all languages (BMP only)'], [u'utf_16_le', u'all languages (BMP only)'], [u'utf_7', u'all languages'], [u'utf_8_sig', u'all languages']]
+encodages = [[u'cp1252',u'Western Europe'], [u'utf-8',u'all languages'], [u'MacRoman',u'Western Europe'], [u'ascii', u'English'], [u'big5', u'Traditional Chinese'], [u'big5hkscs', u'Traditional Chinese'], [u'cp037', u'English'], [u'cp424', u'Hebrew'], [u'cp437', u'English'], [u'cp500', u'Western Europe'], [u'cp737', u'Greek'], [u'cp775', u'Baltic languages'], [u'cp850', u'Western Europe'], [u'cp852', u'Central and Eastern Europe'], [u'cp855', u'Bulg, Byelorus, Mace, Rus, Serb'], [u'cp856', u'Hebrew'], [u'cp857', u'Turkish'], [u'cp860', u'Portuguese'], [u'cp861', u'Icelandic'], [u'cp862', u'Hebrew'], [u'cp863', u'Canadian'], [u'cp864', u'Arabic'], [u'cp865', u'Danish, Norwegian'], [u'cp866', u'Russian'], [u'cp869', u'Greek'], [u'cp874', u'Thai'], [u'cp875', u'Greek'], [u'cp932', u'Japanese'], [u'cp949', u'Korean'], [u'cp950', u'Traditional Chinese'], [u'cp1006', u'Urdu'], [u'cp1026', u'Turkish'], [u'cp1140', u'Western Europe'], [u'cp1250', u'Central and Eastern Europe'], [u'cp1251', u'Bulg, Byelorus, Mace, Rus, Serb'], [u'cp1253', u'Greek'], [u'cp1254', u'Turkish'], [u'cp1255', u'Hebrew'], [u'cp1256', u'Arabic'], [u'cp1257', u'Baltic languages'], [u'cp1258', u'Vietnamese'], [u'euc_jp', u'Japanese'], [u'euc_jis_2004', u'Japanese'], [u'euc_jisx0213', u'Japanese'], [u'euc_kr', u'Korean'], [u'gb2312', u'Simplified Chinese'], [u'gbk', u'Unified Chinese'], [u'gb18030', u'Unified Chinese'], [u'hz', u'Simplified Chinese'], [u'iso2022_jp', u'Japanese'], [u'iso2022_jp_1', u'Japanese'], [u'iso2022_jp_2', u'Jp, K, S C, WE, G'], [u'iso2022_jp_2004', u'Japanese'], [u'iso2022_jp_3', u'Japanese'], [u'iso2022_jp_ext', u'Japanese'], [u'iso2022_kr', u'Korean'], [u'latin_1', u'West Europe'], [u'iso8859_2', u'Central and Eastern Europe'], [u'iso8859_3', u'Esperanto, Maltese'], [u'iso8859_4', u'Baltic languages'], [u'iso8859_5', u'Bulg, Byelorus, Mace, Rus, Serb'], [u'iso8859_6', u'Arabic'], [u'iso8859_7', u'Greek'], [u'iso8859_8', u'Hebrew'], [u'iso8859_9', u'Turkish'], [u'iso8859_10', u'Nordic languages'], [u'iso8859_13', u'Baltic languages'], [u'iso8859_14', u'Celtic languages'], [u'iso8859_15', u'Western Europe'], [u'iso8859_16', u'South-Eastern Europe'], [u'johab', u'Korean'], [u'koi8_r', u'Russian'], [u'koi8_u', u'Ukrainian'], [u'mac_cyrillic', u'Bulg, Byelorus, Mace, Rus, Serb'], [u'mac_greek', u'Greek'], [u'mac_iceland', u'Icelandic'], [u'mac_latin2', u'Central and Eastern Europe'], [u'mac_turkish', u'Turkish'], [u'ptcp154', u'Kazakh'], [u'shift_jis', u'Japanese'], [u'shift_jis_2004', u'Japanese'], [u'shift_jisx0213', u'Japanese'], [u'utf_32', u'all languages'], [u'utf_32_be', u'all languages'], [u'utf_32_le', u'all languages'], [u'utf_16', u'all languages'], [u'utf_16_be', u'all languages (BMP only)'], [u'utf_16_le', u'all languages (BMP only)'], [u'utf_7', u'all languages'], [u'utf_8_sig', u'all languages']]
class FileOptionDialog(wx.Dialog):
def __init__(
class SelectColDial ( wx.Dialog ):
def __init__( self, parent ):
- wx.Dialog.__init__ ( self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size( 200,300 ), style = wx.DEFAULT_DIALOG_STYLE )
+ wx.Dialog.__init__ ( self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size( 400,500 ), style = wx.DEFAULT_DIALOG_STYLE )
self.SetSizeHintsSz( wx.DefaultSize, wx.DefaultSize )
cl = self.formes[idb][1] - 1
forme = self.formes[idb][0]
profile.ProfNB.SetSelection(cl)
- UnSelectList(profile.ProfNB.GetPage(cl).list)
- datas = dict([[profile.ProfNB.GetPage(cl).getColumnText(i,6),i] for i in range(profile.ProfNB.GetPage(cl).list.GetItemCount())])
- profile.ProfNB.GetPage(cl).list.SetItemState(datas[self.formes[idb][0]], wx.LIST_STATE_SELECTED, wx.LIST_STATE_SELECTED)
- profile.ProfNB.GetPage(cl).list.Focus(datas[forme])
- profile.ProfNB.GetPage(cl).list.SetFocus()
+ UnSelectList(profile.ProfNB.GetPage(cl))
+ datas = dict([[profile.ProfNB.GetPage(cl).getColumnText(i,6),i] for i in range(profile.ProfNB.GetPage(cl).GetItemCount())])
+ profile.ProfNB.GetPage(cl).SetItemState(datas[self.formes[idb][0]], wx.LIST_STATE_SELECTED, wx.LIST_STATE_SELECTED)
+ profile.ProfNB.GetPage(cl).Focus(datas[forme])
+ profile.ProfNB.GetPage(cl).SetFocus()
def OnCloseMe(self, evt) :
self.Close(True)
pass
def OnSearch(self, evt):
- UnSelectList(self.listctrl.list)
+ UnSelectList(self.listctrl)
search_word = self.search.GetValue()
if search_word.strip() != '' :
- formes = [self.listctrl.getColumnText(i, self.col) for i in range(self.listctrl.list.GetItemCount())]
+ formes = [self.listctrl.getColumnText(i, self.col) for i in range(self.listctrl.GetItemCount())]
if search_word.endswith(u'*') :
search_word = search_word[0:-1]
result = [j for j, forme in enumerate(formes) if forme.startswith(search_word)]
def showitems(self, items) :
if len(items) == 1 :
- self.listctrl.list.SetItemState(items[0], wx.LIST_STATE_SELECTED, wx.LIST_STATE_SELECTED)
- self.listctrl.list.Focus(items[0])
- self.listctrl.list.SetFocus()
+ self.listctrl.SetItemState(items[0], wx.LIST_STATE_SELECTED, wx.LIST_STATE_SELECTED)
+ self.listctrl.Focus(items[0])
+ self.listctrl.SetFocus()
self.Destroy()
else :
for i in items :
- self.listctrl.list.SetItemState(i, wx.LIST_STATE_SELECTED, wx.LIST_STATE_SELECTED)
- self.listctrl.list.Focus(items[0])
- self.listctrl.list.SetFocus()
+ self.listctrl.SetItemState(i, wx.LIST_STATE_SELECTED, wx.LIST_STATE_SELECTED)
+ self.listctrl.Focus(items[0])
+ self.listctrl.SetFocus()
self.forward.Enable(True)
self.backward.Enable(False)
self.items = items
first_forme = proflist[0]
cl = first_forme[1] - 1
profile.ProfNB.SetSelection(cl)
- profile.ProfNB.GetPage(cl).list.SetFocus()
- UnSelectList(profile.ProfNB.GetPage(cl).list)
- datas = dict([[profile.ProfNB.GetPage(cl).getColumnText(i,6),i] for i in range(profile.ProfNB.GetPage(cl).list.GetItemCount())])
- profile.ProfNB.GetPage(cl).list.SetItemState(datas[first_forme[0]], wx.LIST_STATE_SELECTED, wx.LIST_STATE_SELECTED)
- profile.ProfNB.GetPage(cl).list.Focus(datas[first_forme[0]])
- profile.ProfNB.GetPage(cl).list.SetFocus()
+ profile.ProfNB.GetPage(cl).SetFocus()
+ print profile.ProfNB.GetPage(cl)
+ UnSelectList(profile.ProfNB.GetPage(cl))
+ datas = dict([[profile.ProfNB.GetPage(cl).getColumnText(i,6),i] for i in range(profile.ProfNB.GetPage(cl).GetItemCount())])
+ profile.ProfNB.GetPage(cl).SetItemState(datas[first_forme[0]], wx.LIST_STATE_SELECTED, wx.LIST_STATE_SELECTED)
+ profile.ProfNB.GetPage(cl).Focus(datas[first_forme[0]])
+ profile.ProfNB.GetPage(cl).SetFocus()
if len(proflist) == 1 :
self.Destroy()
else :
self.noresult()
def onforward(self, evt) :
- self.listctrl.list.Focus(self.items[self.forwitem])
- self.listctrl.list.SetFocus()
+ self.listctrl.Focus(self.items[self.forwitem])
+ self.listctrl.SetFocus()
self.forwitem += 1
if self.forwitem == len(self.items) :
self.forward.Enable(False)
self.backward.Enable(True)
def onbackward(self, evt) :
- self.listctrl.list.Focus(self.items[self.backitem])
- self.listctrl.list.SetFocus()
+ self.listctrl.Focus(self.items[self.backitem])
+ self.listctrl.SetFocus()
self.backitem -= 1
if self.backitem == -1 :
self.forwitem -= 1
self.search.Clear()
def UnSelectList(liste) :
+ print liste
if liste.GetFirstSelected() != -1 :
last = liste.GetFirstSelected()
liste.Select(liste.GetFirstSelected(), False)
self.m_staticline4 = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
fgSizer1.Add( self.m_staticline4, 0, wx.EXPAND |wx.ALL, 5 )
- #self.m_staticText5 = wx.StaticText( self, wx.ID_ANY, u"Nombre maximum de formes", wx.DefaultPosition, wx.DefaultSize, 0 )
- #self.m_staticText5.Wrap( -1 )
- #fgSizer1.Add( self.m_staticText5, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_LEFT|wx.ALL, 5 )
+ self.m_staticText5 = wx.StaticText( self, wx.ID_ANY, u"Nombre maximum de formes", wx.DefaultPosition, wx.DefaultSize, 0 )
+ self.m_staticText5.Wrap( -1 )
+ fgSizer1.Add( self.m_staticText5, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_LEFT|wx.ALL, 5 )
- #self.spin_maxword = wx.SpinCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.SP_ARROW_KEYS, 0, 10000, 600 )
- #fgSizer1.Add( self.spin_maxword, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 )
+ self.spin_maxword = wx.SpinCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.SP_ARROW_KEYS, 0, 10000, 600 )
+ fgSizer1.Add( self.spin_maxword, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 )
- #self.m_staticline5 = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
- #fgSizer1.Add( self.m_staticline5, 0, wx.EXPAND |wx.ALL, 5 )
+ self.m_staticline5 = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
+ fgSizer1.Add( self.m_staticline5, 0, wx.EXPAND |wx.ALL, 5 )
- #self.m_staticline6 = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
- #fgSizer1.Add( self.m_staticline6, 0, wx.EXPAND |wx.ALL, 5 )
+ self.m_staticline6 = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
+ fgSizer1.Add( self.m_staticline6, 0, wx.EXPAND |wx.ALL, 5 )
self.m_staticText6 = wx.StaticText( self, wx.ID_ANY, u"Taille du texte", wx.DefaultPosition, wx.DefaultSize, 0 )
self.m_staticText6.Wrap( -1 )
self.parent = parent
langues_n = [u'français', u'english', u'german (expérimentale)', u'italian (expérimentale)', u'swedish (exp.)', u'portuguese (exp.)']
self.langues = [u'french', u'english', u'german', 'italian', 'swedish', u'portuguese']
- self.encodages = encodages
+ self.encodages = [enc[0].lower() for enc in encodages]
+
ucimark = [u'****', u'0000']
ucemethod = [u'charactères', u'occurrences', u'paragraphe']
self.m_staticText1.Wrap( -1 )
fgSizer1.Add( self.m_staticText1, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_LEFT|wx.ALL, 5 )
- encodage_choicesChoices = [' - '.join(encodage) for encodage in self.encodages]
+ encodage_choicesChoices = [' - '.join(encodage) for encodage in encodages]
self.encodage_choices = wx.Choice( self.m_panel1, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, encodage_choicesChoices, 0 )
self.encodage_choices.SetSelection( 0 )
fgSizer1.Add( self.encodage_choices, 0, wx.ALL, 5 )
pass
def setparametres(self, parametres) :
- self.encodage_choices.SetSelection(0)
+ if locale.getpreferredencoding().lower() == 'mac-roman' :
+ enc = self.encodages.index('macroman')
+ else :
+ enc = self.encodages.index(locale.getpreferredencoding().lower())
+ self.encodage_choices.SetSelection(enc)
self.lang_choices.SetSelection(0)
self.repout_choices.SetValue(parametres['pathout'])
self.ucimark_choices.SetSelection(parametres['ucimark'])
def doparametres(self) :
parametres = {}
- parametres['encoding'] = self.encodages[self.encodage_choices.GetSelection()][0]
+ parametres['encoding'] = encodages[self.encodage_choices.GetSelection()][0]
parametres['lang'] = self.langues[self.lang_choices.GetSelection()]
parametres['pathout'] = self.repout_choices.GetValue()
parametres['ucimark'] = self.ucimark_choices.GetSelection()
self.conf.write(f)
def totext(self, parametres) :
- txt = ['Corpus']
+ #txt = ['Corpus']
+ txt = []
for val in parametres :
if isinstance(parametres[val], int) :
txt.append(' \t\t: '.join([val, `parametres[val]`]))
cla, exc, trbk = sys.exc_info()
excName = cla.__name__
try:
- excArgs = exc.__dict__["args"]
- except KeyError:
+ excArgs = exc.args[0]
+ except :
excArgs = "<no args>"
excTb = traceback.format_tb(trbk, maxTBlevel)
return (excName, excArgs, excTb)
Si on trouve un '$', c'est fini.
Sinon, on cherche le meilleur candidat. C'est-à-dire le rapport poids/distance le plus important.
"""
- separateurs = [[u'.', 60.0], [u'?', 60.0], [u'!', 60.0], [u'£', 60], [u':', 50.0], [u';', 40.0], [u',', 10.0], [u' ', 0.1]]
+ separateurs = [[u'.', 60.0], [u'?', 60.0], [u'!', 60.0], [u'£$£', 60], [u':', 50.0], [u';', 40.0], [u',', 10.0], [u' ', 0.1]]
trouve = False # si on a trouvé un bon séparateur
iDecoupe = 0 # indice du caractere ou il faut decouper
# si on a rien trouvé
return False, chaine.split(), ''
-def BugReport(parent):
+def BugReport(parent, error = None):
for ch in parent.GetChildren():
if "<class 'wx._windows.ProgressDialog'>" == str(type(ch)):
ch.Destroy()
+ excName, exc, excTb = formatExceptionInfo()
+ if excName == 'Exception' :
+ txt = 'Message :\n'
+ else :
+ txt = u' !== BUG ==! \n'
+ txt += u'*************************************\n'
+ txt += '\n'.join(excTb).replace(' ', ' ')
+ txt += excName + '\n'
+ txt += exc
+
dial = BugDialog(parent)
- txt = u' !== BUG ==! \n'
- txt += u'*************************************\n'
- for line in formatExceptionInfo():
- if type(line) == type([]):
- for don in line:
- txt += don.replace(' ', ' ')
- else:
- txt += line + '\n'
+ #for line in formatExceptionInfo():
+ # if type(line) == type([]):
+ # for don in line:
+ # txt += don.replace(' ', ' ')
+ # else:
+ # txt += line + '\n'
if 'Rerror' in dir(parent) :
txt += parent.Rerror
parent.Rerror = ''
+ #if error is not None :
+ # txt += '\n%s\n' %error
print formatExceptionInfo()
log.error(txt)
dial.text_ctrl_1.write(txt)
dial.CenterOnParent()
dial.ShowModal()
- raise NameError('Bug')
+ #raise Exception('Bug')
def PlaySound(parent):
if parent.pref.getboolean('iramuteq', 'sound') :
except :
BugReport(parent)
else :
- if pid !=0 :
+ if pid != 0 :
try :
raise Exception(u'Erreur R')
except :
return None
class SelectColumn :
- def __init__(self, parent, dictcol, actives, pathout, selected = None) :
+ def __init__(self, parent, dictcol, actives, pathout, selected = None, dlg = False) :
self.ira = parent
- dial = dialog.SelectColDial(self.ira)
- listcol = ListForSpec(dial, self, dictcol, ['forme', 'eff'])
- dial.bSizer2.Add( listcol, 2, wx.ALL|wx.EXPAND, 5 )
- dial.m_sdbSizer2.AddButton( dial.m_sdbSizer2OK )
- dial.m_sdbSizer2.Realize()
- dial.bSizer2.Add( dial.m_sdbSizer2, 0, wx.EXPAND, 5 )
- dial.Layout()
- if selected is None :
- for row in xrange(listcol.list.GetItemCount()):
- listcol.list.Select(row)
+ if dlg :
+ dial = dialog.SelectColDial(self.ira)
+ listcol = ListForSpec(dial, self, dictcol, ['forme', 'eff'])
+ dial.bSizer2.Add( listcol, 2, wx.ALL|wx.EXPAND, 5 )
+ dial.m_sdbSizer2.AddButton( dial.m_sdbSizer2OK )
+ dial.m_sdbSizer2.Realize()
+ dial.bSizer2.Add( dial.m_sdbSizer2, 0, wx.EXPAND, 5 )
+ dial.Layout()
+ if selected is None :
+ for row in xrange(listcol.GetItemCount()):
+ listcol.Select(row)
+ else :
+ orderlex = dict([[listcol.getColumnText(i,0),i] for i in range(0,listcol.GetItemCount())])
+ for row in selected :
+ listcol.Select(orderlex[actives[row]])
+ dial.CenterOnParent()
+ val = dial.ShowModal()
+ last = listcol.GetFirstSelected()
+ lastl = [listcol.GetFirstSelected()]
+ indexes = [listcol.getColumnText(listcol.GetFirstSelected(),0)]
+ while listcol.GetNextSelected(last) != -1:
+ last = listcol.GetNextSelected(last)
+ lastl.append(last)
+ indexes.append(listcol.getColumnText(last,0))
+ dial.Destroy()
+ column = [actives.index(val) for val in indexes]
+ column.sort()
+ with open(pathout, 'w') as f :
+ f.write('\n'.join([`val` for val in column]))
else :
- orderlex = dict([[listcol.getColumnText(i,0),i] for i in range(0,listcol.list.GetItemCount())])
- for row in selected :
- listcol.list.Select(orderlex[actives[row]])
- dial.CenterOnParent()
- val = dial.ShowModal()
- last = listcol.list.GetFirstSelected()
- lastl = [listcol.list.GetFirstSelected()]
- indexes = [listcol.getColumnText(listcol.list.GetFirstSelected(),0)]
- while listcol.list.GetNextSelected(last) != -1:
- last = listcol.list.GetNextSelected(last)
- lastl.append(last)
- indexes.append(listcol.getColumnText(last,0))
- dial.Destroy()
- column = [actives.index(val) for val in indexes]
- column.sort()
- with open(pathout, 'w') as f :
- f.write('\n'.join([`val` for val in column]))
+ with open(pathout, 'w') as f :
+ f.write('\n'.join([`i` for i in range(0,len(actives))]))
class PrepSimi :
def __init__(self, parent, parametres, indices_simi) :
from analysetxt import Alceste, gramact, gramsup
from corpusNG import *
-
+#cmd = iracmd.CmdLine(args=['-f','/home/pierre/workspace/iramuteq/corpus/lru2.txt','-t','alceste'])
AppliPath = os.path.abspath(os.path.dirname(os.path.realpath(sys.argv[0])))
if os.getenv('HOME') != None:
UserConfigPath = os.path.abspath(os.path.join(user_home, '.iramuteq'))
class CmdLine :
- def __init__(self) :
+ def __init__(self, args = None) :
self.DictPath = ConstructDicoPath(AppliPath)
self.ConfigPath = ConstructConfigPath(UserConfigPath)
self.syscoding = sys.getdefaultencoding()
+ self.TEMPDIR = tempfile.mkdtemp('iramuteq')
+ self.RscriptsPath = ConstructRscriptsPath(AppliPath)
+ self.PathPath = ConfigParser()
+ self.PathPath.read(self.ConfigPath['path'])
+ self.RPath = self.PathPath.get('PATHS', 'rpath')
+ self.pref = RawConfigParser()
+ self.pref.read(self.ConfigPath['preferences'])
+ self.history = History(self.ConfigPath['history'])
+
parser = OptionParser()
parser.add_option("-f", "--file", dest="filename", help="chemin du corpus", metavar="FILE", default=False)
parser.add_option("-e", "--enc", dest="encodage", help="encodage du corpus", metavar="ENC", default=locale.getpreferredencoding())
parser.add_option("-l", "--lang", dest="language", help="langue du corpus", metavar="LANG", default='french')
parser.add_option("-r", "--read", dest="read", help="lire un corpus", metavar="READ", default = False)
+ parser.add_option("-b", "--build", action="store_true", dest="build", help = "construire un corpus", default = False)
- (options, args) = parser.parse_args()
+ if args is None :
+ (options, args) = parser.parse_args()
+ else :
+ (options, args) = parser.parse_args(args)
print args
print options
options.type_analyse
elif options.filename and options.type_analyse :
config = DoConf(self.ConfigPath[options.type_analyse]).getoptions()
#self.ConfigPath[options.type_analyse] = os.path.abspath(options.configfile)
+ elif options.read and options.type_analyse :
+ config = DoConf(self.ConfigPath[options.type_analyse]).getoptions()
elif options.read :
pass
+ elif options.filename and options.build :
+ pass
else :
print 'rien a faire'
return
- self.TEMPDIR = tempfile.mkdtemp('iramuteq')
- self.RscriptsPath = ConstructRscriptsPath(AppliPath)
- self.PathPath = ConfigParser()
- self.PathPath.read(self.ConfigPath['path'])
- self.RPath = self.PathPath.get('PATHS', 'rpath')
- self.pref = RawConfigParser()
- self.pref.read(self.ConfigPath['preferences'])
- self.history = History(self.ConfigPath['history'])
+
#self.history.write()
if options.filename or options.read :#or options.build:
self.corpus_encodage = options.encodage
corpus_parametres['encoding'] = self.corpus_encodage
corpus_parametres['syscoding'] = locale.getpreferredencoding()
corpus_parametres['pathout'] = PathOut(self.filename, 'corpus').mkdirout()
- corpus = BuildFromAlceste(self.filename, corpus_parametres, self.lexique, self.expressions).corpus
- self.history.add(corpus.parametres)
- corpus = copycorpus(corpus)
+ try :
+ corpus = BuildFromAlceste(self.filename, corpus_parametres, self.lexique, self.expressions).corpus
+ except Exception, txt:
+ log.info('probleme lors de la construction: %s' %txt)
+ corpus = None
+ raise
+ else :
+ self.history.add(corpus.parametres)
+ corpus = copycorpus(corpus)
#with codecs.open(self.filename, 'r', self.corpus_encodage) as f:
elif options.read :
corpus = Corpus(self, parametres = DoConf(options.read).getoptions('corpus'), read = options.read)
corpus.parametres['path'] = os.path.abspath(options.read)
pathout = os.path.dirname(os.path.dirname(os.path.abspath(options.read)))
+ self.corpus = corpus
-
- corpus.conn_all()
- corpus.make_lems()
- corpus.parse_active(gramact, gramsup)
+ if corpus is not None :
+ corpus.conn_all()
+ corpus.make_lems()
+ corpus.parse_active(gramact, gramsup)
# log.warning('ATTENTION gethapaxuces')
# MakeUciStat(corpus)
# qfqsdf
# f.write('\n'.join(['\t'.join(val) for val in res]))
# self.content = f.read()
#self.content = self.content.replace('\r','')
- if options.type_analyse == 'alceste' :
- log.debug('ATTENTION : ANALYSE NG')
- #print corpus.make_etoiles()
- #zerzre
- #corpus.read_corpus()
- #corpus.parse_active(gramact, gramsup)
- config['type'] = 'alceste'
- Alceste(self, corpus, parametres = config)
- # self.Text = AnalyseAlceste(self, cmd = True, big = True)
- #self.Text = AnalyseAlceste(self, cmd = True)
- elif options.type_analyse == 'pam' :
- self.Text = PamTxt(self, cmd = True)
- elif options.type_analyse == 'afcuci' :
- self.Text = AfcUci(self, cmd = True)
- elif options.type_analyse == 'stat' :
- self.Text = Stat(self, corpus, config = {'type' : 'stat'})
- elif options.type_analyse == 'spec' :
- self.Text = Lexico(self, corpus, config = {'type' : 'spec'})
+ if options.type_analyse == 'alceste' :
+ log.debug('ATTENTION : ANALYSE NG')
+ #print corpus.make_etoiles()
+ #zerzre
+ #corpus.read_corpus()
+ #corpus.parse_active(gramact, gramsup)
+ config['type'] = 'alceste'
+ self.Text = Alceste(self, corpus, parametres = config)
+ # self.Text = AnalyseAlceste(self, cmd = True, big = True)
+ #self.Text = AnalyseAlceste(self, cmd = True)
+ elif options.type_analyse == 'pam' :
+ self.Text = PamTxt(self, cmd = True)
+ elif options.type_analyse == 'afcuci' :
+ self.Text = AfcUci(self, cmd = True)
+ elif options.type_analyse == 'stat' :
+ self.Text = Stat(self, corpus, parametres = config)
+ elif options.type_analyse == 'spec' :
+ self.Text = Lexico(self, corpus, config = {'type' : 'spec'})
#print self.Text.corpus.hours, 'h', self.Text.corpus.minutes,'min', self.Text.corpus.seconds, 's'
# self.Text.corpus.make_colored_corpus('colored.html')
else:
user_home = os.getenv('HOMEPATH')
UserConfigPath = os.path.abspath(os.path.join(user_home, '.iramuteq'))
-#Si pas de fichiers de config utilisateur, on crée le repertoire
+#Si pas de fichiers de config utilisateur, on cree le repertoire
CreateIraDirectory(UserConfigPath, AppliPath)
#fichiers log pour windows (py2exe)
print 'PLUS DE LOG !!!!!!!!!!'
self.mb = wx.MenuBar()
file_menu = wx.Menu()
- item = wx.MenuItem(file_menu, ID_OpenData, _(u"Open a questionnaire"), _(u"Open a questionnaire"))
+ item = wx.MenuItem(file_menu, ID_OpenData, _(u"Open a matrix"), _(u"Open a matrix"))
item.SetBitmap(wx.ArtProvider_GetBitmap(wx.ART_FILE_OPEN))
file_menu.AppendItem(item)
- item = wx.MenuItem(file_menu, ID_OpenText, u"Ouvrir texte", u"Ouvrir un corpus texte")
+ item = wx.MenuItem(file_menu, ID_OpenText, _(u"Open a text corpora"), _(u"Open a text corpora"))
item.SetBitmap(wx.ArtProvider_GetBitmap(wx.ART_FILE_OPEN))
file_menu.AppendItem(item)
- item = wx.MenuItem(file_menu, ID_OnOpenAnalyse, u"Ouvrir une Analyse", "Ouvrir une Analyse")
+ item = wx.MenuItem(file_menu, ID_OnOpenAnalyse, _(u"Open an analysis"), _("Open an analysis"))
item.SetBitmap(wx.ArtProvider_GetBitmap(wx.ART_FILE_OPEN))
file_menu.AppendItem(item)
- item1 = wx.MenuItem(file_menu, ID_Import, u"Importer un corpus factiva...", "Importer un corpus factiva...")
+ item1 = wx.MenuItem(file_menu, ID_Import, _(u"Import a factiva corpora..."), _("Import a factiva corpora..."))
item1.SetBitmap(wx.ArtProvider_GetBitmap(wx.ART_TIP))
file_menu.AppendItem(item1)
#item1.Enable(True)
- item = wx.MenuItem(file_menu, ID_SaveTab, u"Enregistrer l\'onglet sous...", u"Enregistrer l\'onglet sous ...")
+ item = wx.MenuItem(file_menu, ID_SaveTab, _(u"Save tab as..."), _(u"Save tab as..."))
item.SetBitmap(wx.ArtProvider_GetBitmap(wx.ART_FILE_SAVE_AS))
#item.Enable(False)
file_menu.AppendItem(item)
- file_menu.Append(wx.ID_EXIT, u"Exit")
+ file_menu.Append(wx.ID_EXIT, _(u"Exit"))
edit_menu = wx.Menu()
- edit_menu.Append(wx.ID_PREFERENCES, '', u'Préférences')
+ edit_menu.Append(wx.ID_PREFERENCES, '', _(u'Preferences'))
view_menu = wx.Menu()
- view_menu.Append(ID_ACCEUIL, u"Page d'accueil")
- view_menu.Append(ID_VIEWDATA, u"Afficher les données")
- view_menu.Append(ID_RESULT, u'Afficher les résultats')
+ view_menu.Append(ID_ACCEUIL, _(u"Home page"))
+ view_menu.Append(ID_VIEWDATA, _(u"Show data"))
+ view_menu.Append(ID_RESULT, _(u'Show results'))
#view_menu.AppendSeparator()
analyse_menu = wx.Menu()
builder = Builder(self, dlg)
if builder.res == wx.ID_OK :
- corpus = builder.doanalyse()
- self.history.add(corpus.parametres)
- self.tree.OnItemAppend(corpus.parametres)
- OpenAnalyse(self, corpus.parametres)
+ try :
+ corpus = builder.doanalyse()
+ self.history.add(corpus.parametres)
+ self.tree.OnItemAppend(corpus.parametres)
+ OpenAnalyse(self, corpus.parametres)
+ except :
+ BugReport(self)
#self.content = DoConf().totext(corpus.parametres)
# parametres = DoConf(os.path.join(UserConfigPath,'corpus.cfg')).getoptions('corpus')
# parametres['originalpath'] = self.filename
# corpus = BuildFromAlceste(self.filename, parametres, self.lexique, self.expressions).corpus
#self.corpus_encodage = dial.encodages[dial.list_encodages.GetSelection()][0]
#self.corpus_lang = dial.langues[dial.choice_dict.GetSelection()]
- count = 1
- keepGoing = dlg.Update(count, u"Lecture du fichier")
-# try :
-# with codecs.open(self.filename, 'rU', self.corpus_encodage) as f:
-# self.content = f.read()
-# #self.content = self.content.replace('\r','\n')
-# except UnicodeDecodeError :
-# msg = u"Ce fichier ne semble pas être encodé en %s" % self.corpus_encodage
-# dial = wx.MessageDialog(self, msg, u"Problème d'encodage", wx.OK | wx.NO_DEFAULT | wx.ICON_WARNING)
-# dial.CenterOnParent()
-# res = dial.ShowModal()
-# dial.Destroy()
-# self.OpenText()
- self.ShowMenu(_("View"))
- self.ShowMenu(_("Text analysis"))
- self.ShowMenu(_(u"Spreadsheet analysis"), False)
- self.type = "Texte"
- self.DataTxt = False
- self.Text = ''
- count += 1
- keepGoing = dlg.Update(count, u"Chargement du dictionnaire")
- dlg.Destroy()
+ else :
+ count = 1
+ keepGoing = dlg.Update(count, u"Lecture du fichier")
+ # msg = u"Ce fichier ne semble pas être encodé en %s" % self.corpus_encodage
+ # dial = wx.MessageDialog(self, msg, u"Problème d'encodage", wx.OK | wx.NO_DEFAULT | wx.ICON_WARNING)
+ # dial.CenterOnParent()
+ # res = dial.ShowModal()
+ # dial.Destroy()
+ # self.OpenText()
+ self.ShowMenu(_("View"))
+ self.ShowMenu(_("Text analysis"))
+ self.ShowMenu(_(u"Spreadsheet analysis"), False)
+ self.type = "Texte"
+ self.DataTxt = False
+ self.Text = ''
+ count += 1
+ keepGoing = dlg.Update(count, u"Chargement du dictionnaire")
+ dlg.Destroy()
#self.OnViewData(wx.EVT_BUTTON)
def OnExit(self, event):
remove = True
if self.nb.GetPageCount() == 1 and remove and not notebook :
self.LastTabClose()
-
def LastTabClose(self) :
if self.nb.GetPageCount() == 1 :
class IntroPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
- #col = randint(0, 100)
+ #col = randint(0, 255)
+ #col1 = randint(0,255)
+ #col2 = randint(0,255)
col = 0
bckgrdcolor = wx.Colour(col, col, col)
self.SetBackgroundColour(bckgrdcolor)
self.pathout.basefiles(ChdTxtPathOut)
DictPathOut = self.pathout
self.DictPathOut = DictPathOut
+ self.dictpathout = DictPathOut
self.parent = parent
Profile = DictPathOut['PROFILE_OUT']
panel.ProfNB = aui.AuiNotebook(panel, -1, wx.DefaultPosition)
panel.ProfNB.SetArtProvider(aui.ChromeTabArt())
#self.ProfNB.SetTabCtrlHeight(100)
- panel.AntiProfNB = aui.AuiNotebook(panel, -1, wx.DefaultPosition)
+ #panel.AntiProfNB = aui.AuiNotebook(panel, -1, wx.DefaultPosition)
if os.path.exists(DictPathOut['prof_seg']) :
prof_seg = ReadProfileAsDico(self, DictPathOut['prof_seg'], False, self.encoding)
self.prof_seg_nb = aui.AuiNotebook(panel, -1, wx.DefaultPosition)
indpour = ' - '.join([ind, DictProfile[str(i + 1)][0][2]])
print 'construction liste classe %i' % i
self.tabprofile = ProfListctrlPanel(self.parent, self, DictProfile[str(i + 1)], Alceste, i + 1)
- self.tabantiprofile = ProfListctrlPanel(self.parent, self, DictAnti[str(i + 1)], Alceste, i + 1)
+ #self.tabantiprofile = ProfListctrlPanel(self.parent, self, DictAnti[str(i + 1)], Alceste, i + 1)
panel.ProfNB.AddPage(self.tabprofile, 'classe %s %s(%s%%)' % (str(i + 1), sep, indpour))
- panel.AntiProfNB.AddPage(self.tabantiprofile, 'classe %s' % str(i + 1))
+ #panel.AntiProfNB.AddPage(self.tabantiprofile, 'classe %s' % str(i + 1))
if os.path.exists(DictPathOut['prof_seg']) :
self.tab_prof_seg = ProfListctrlPanel(self.parent, self, prof_seg[str(i + 1)], False, i + 1)
self.prof_seg_nb.AddPage(self.tab_prof_seg, 'classe %i' % (i + 1))
if os.path.exists(self.DictPathOut['afc_facteur']) :
dictrow, first = ReadList(self.DictPathOut['afc_facteur'], self.encoding)
self.TabAFC_facteur = ListForSpec(self.parent, parametres, dictrow, first)
- dictrow, first = ReadList(self.DictPathOut['afc_row'], self.encoding)
- self.TabAFC_ligne = ListForSpec(self.parent, self.parametres, dictrow, first)
- dictrow, first = ReadList(self.DictPathOut['afc_col'], self.encoding)
- self.TabAFC_colonne = ListForSpec(parent, self.parametres, dictrow, first)
+ #dictrow, first = ReadList(self.DictPathOut['afc_row'], self.encoding)
+ #self.TabAFC_ligne = ListForSpec(self.parent, self.parametres, dictrow, first)
+ #dictrow, first = ReadList(self.DictPathOut['afc_col'], self.encoding)
+ #self.TabAFC_colonne = ListForSpec(parent, self.parametres, dictrow, first)
self.TabAFC.AddPage(self.TabAFC_facteur, 'Facteurs')
- self.TabAFC.AddPage(self.TabAFC_colonne, u'Colonnes')
- self.TabAFC.AddPage(self.TabAFC_ligne, u'Lignes')
+ #self.TabAFC.AddPage(self.TabAFC_colonne, u'Colonnes')
+ #self.TabAFC.AddPage(self.TabAFC_ligne, u'Lignes')
sizer_3 = wx.BoxSizer(wx.VERTICAL)
self.parent.nb_panel_2 = wx.Panel(panel.TabChdSim, -1)
self.parent.Bind(wx.EVT_BUTTON, self.onsimi, self.parent.button_simi)
panel.TabChdSim.AddPage(panel.ProfNB, 'Profils')
- panel.TabChdSim.AddPage(panel.AntiProfNB, 'Antiprofils')
+ #panel.TabChdSim.AddPage(panel.AntiProfNB, 'Antiprofils')
dlg.Update(4 + self.clnb, 'Affichage...')
if clnb > 2 :
panel.TabChdSim.AddPage(self.TabAFC, 'AFC')
dlg.Destroy()
def onprofseg(self, event):
- try :
+ #try :
+ print 'plus de bug profseg'
+ print self.parametres
corpus = self.parent.nb.GetPage(self.parent.nb.GetSelection()).corpus
- ProfileSegment(self.parent,corpus)
- except :
- BugReport(self.parent)
+ ProfileSegment(self.parent, self.dictpathout, self.parametres, corpus)
+ #except :
+ # BugReport(self.parent)
def onproftype(self, event):
try :
from dialog import SearchDial
#---------------------------------------------------------------------------
-class List(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 List(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 ListForSpec(wx.Panel, listmix.ColumnSorterMixin):
+class ListForSpec(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.ColumnSorterMixin):
def __init__(self, parent,gparent, dlist,first):
+ wx.ListCtrl.__init__( self, parent, -1, style=wx.LC_REPORT|wx.LC_VIRTUAL|wx.LC_HRULES|wx.LC_VRULES)
self.parent=parent
self.gparent=gparent
self.dlist=dlist
self.first = first
- wx.Panel.__init__(self, parent, -1, style=wx.WANTS_CHARS)
search_id = wx.NewId()
self.parent.Bind(wx.EVT_MENU, self.onsearch, id = search_id)
self.SetAcceleratorTable(self.accel_tbl)
self.il = wx.ImageList(16, 16)
-
- self.sm_up = self.il.Add(getSmallUpArrowBitmap())
- self.sm_dn = self.il.Add(getSmallDnArrowBitmap())
+ 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)
+ exec(s)
+ self.SetImageList(self.il, wx.IMAGE_LIST_SMALL)
tID = wx.NewId()
- self.list = List(self, tID,
- style=wx.LC_REPORT
- | wx.BORDER_NONE
- | wx.LC_EDIT_LABELS
- | wx.LC_SORT_ASCENDING
- )
-
- self.list.SetImageList(self.il, wx.IMAGE_LIST_SMALL)
+ self.attr1 = wx.ListItemAttr()
+ self.attr1.SetBackgroundColour((230, 230, 230))
+ self.attr2 = wx.ListItemAttr()
+ self.attr2.SetBackgroundColour("light blue")
self.dlist = dlist
- self.PopulateList(dlist,first)
- self.Bind(wx.EVT_SIZE, self.OnSize)
- self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnItemSelected, self.list)
- self.Bind(wx.EVT_LIST_COL_CLICK, self.OnColClick)
+ self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnItemSelected, self)
# for wxMSW
- self.list.Bind(wx.EVT_COMMAND_RIGHT_CLICK, self.OnRightClick)
+ self.Bind(wx.EVT_COMMAND_RIGHT_CLICK, self.OnRightClick)
# for wxGTK
- self.list.Bind(wx.EVT_RIGHT_UP, self.OnRightClick)
+ self.Bind(wx.EVT_RIGHT_UP, self.OnRightClick)
self.itemDataMap = dlist
+ self.itemIndexMap = dlist.keys()
+ self.SetItemCount(len(dlist))
+
+ listmix.ListCtrlAutoWidthMixin.__init__(self)
listmix.ColumnSorterMixin.__init__(self, len(first))
self.SortListItems(1, False)
- self.do_greyline()
#-----------------------------------------------------------------------------------------
- def PopulateList(self, dlist,first):
i=0
for name in first :
- self.list.InsertColumn(i,name,wx.LIST_FORMAT_LEFT)
+ self.InsertColumn(i,name,wx.LIST_FORMAT_LEFT)
i+=1
- ct=0
- for key,data in dlist.iteritems() :
- ct+=1
- index = self.list.InsertStringItem(sys.maxint, str(data[0]))
- i=1
- for val in data[1:]:
- self.list.SetStringItem(index, i, str(data[i]))
- i+=1
-
- self.list.SetItemData(index, key)
- self.list.SetColumnWidth(0, wx.LIST_AUTOSIZE)
+ self.SetColumnWidth(0, 180)
+
for i in range(1,len(first)-1):
- self.list.SetColumnWidth(i, 130)
+ self.SetColumnWidth(i, len(first[i]) * 10)
- 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)
+ def OnGetItemText(self, item, col):
+ index=self.itemIndexMap[item]
+ s = self.itemDataMap[index][col]
+ return s
+
+ def OnGetItemAttr(self, item):
+ if item % 2 :
+ return self.attr1
+ else :
+ return self.attr2
# Used by the ColumnSorterMixin, see wx/lib/mixins/listctrl.py
def GetListCtrl(self):
- return self.list
+ return self
# Used by the ColumnSorterMixin, see wx/lib/mixins/listctrl.py
def GetSortImages(self):
def OnRightDown(self, event):
x = event.GetX()
y = event.GetY()
- item, flags = self.list.HitTest((x, y))
+ item, flags = self.HitTest((x, y))
if flags & wx.LIST_HITTEST_ONITEM:
- self.list.Select(item)
+ self.Select(item)
event.Skip()
def getColumnText(self, index, col):
- item = self.list.GetItem(index, col)
+ item = self.GetItem(index, col)
return item.GetText()
+ def GetItemData(self, item) :
+ index=self.itemIndexMap[item]
+ s = self.itemDataMap[index]
+ return s
+
def OnItemSelected(self, event):
self.currentItem = event.m_itemIndex
event.Skip()
activenotebook = self.parent.nb.GetSelection()
page = self.parent.nb.GetPage(activenotebook)
corpus = page.corpus
- word = self.getColumnText(self.list.GetFirstSelected(), 0)
+ word = self.getColumnText(self.GetFirstSelected(), 0)
lems = corpus.getlems()
rep = []
for forme in lems[word].formes :
def OnPopupTwo(self, event):
activenotebook = self.parent.nb.GetSelection()
page = self.parent.nb.GetPage(activenotebook)
- item=self.getColumnText(self.list.GetFirstSelected(), 0)
+ item=self.getColumnText(self.GetFirstSelected(), 0)
corpus = page.corpus
win = message(self, -1, u"Concordancier", size=(600, 200),style = wx.DEFAULT_FRAME_STYLE)
avap=60
forme = corpus.getforme(forme).forme
ucetxt = ucetxt.replace(' '+forme+' ', '<font color=red> ' + forme + ' </font>')
txt += ucetxt + '<br><br>'
-# for uce in uce_ok:
-# content = ' '+' '.join(corpus.ucis_paras_uces[uce[0]][uce[1]][uce[2]])+' '
-# for form in listmot :
-# sp = ''
-# i = 0
-# forme = ' ' + form + ' '
-# while i < len(content):
-# coordword = content[i:].find(forme)
-# if coordword != -1 and i == 0:
-# txt += '<br><b>' + ' '.join(corpus.ucis[uce[0]][0]) + '</b><br>'
-# if coordword < avap:
-# sp = ' ' * (avap - coordword)
-# deb = i
-# else:
-# deb = i + coordword - avap
-# if len(content) < i + coordword + avap:
-# fin = len(content) - 1
-# else:
-# fin = i + coordword + avap
-# txt += '<TT>' + sp + content[deb:fin].replace(forme, '<font color=red>' + forme + '</font>') + '</TT><br>'
-# i += coordword + len(forme)
-# sp = ''
-# elif coordword != -1 and i != 0 :
-# if coordword < avap:
-# sp = ' ' * (avap - coordword)
-# deb = i
-# else:
-# deb = i + coordword - avap
-# if len(content) < i + coordword + avap:
-# fin = len(content) - 1
-# else:
-# fin = i + coordword + avap
-# txt += '<TT>' + sp + content[deb:fin].replace(forme, '<font color=red>' + forme + '</font>') + '</TT><br>'
-# i += coordword + len(forme)
-# sp = ''
-# else:
-# i = len(content)
-# sp = ''
win.HtmlPage.SetPage(txt)
win.Show(True)
def OnPopupThree(self, event) :
- datas = [self.dlist[self.list.GetItemData(self.list.GetFirstSelected())]]
- last = self.list.GetFirstSelected()
- while self.list.GetNextSelected(last) != -1:
- last = self.list.GetNextSelected(last)
- data = self.dlist[self.list.GetItemData(last)]
+ print self.GetFirstSelected()
+ datas = [self.GetItemData(self.GetFirstSelected())]
+ print datas
+ last = self.GetFirstSelected()
+ while self.GetNextSelected(last) != -1:
+ last = self.GetNextSelected(last)
+ data = self.GetItemData(last)
datas += [data]
colnames = self.first[1:]
table = [[str(val) for val in line[1:]] for line in datas]
win.HtmlPage.SetPage(txt)
win.Show(True)
- def OnSize(self, event):
- w,h = self.GetClientSizeTuple()
- self.list.SetDimensions(0, 0, w, h)
-
- def OnColClick(self,event):
- self.do_greyline()
+ def SortItems(self,sorter=cmp):
+ items = list(self.itemDataMap.keys())
+ items.sort(sorter)
+ self.itemIndexMap = items
+ # redraw the list
+ self.Refresh()
class message(wx.Frame):
def __init__(self, *args, **kwds):
def OnCloseWindow(self, event):
self.Destroy()
-
-
-def getSmallUpArrowData():
- return \
-'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\
-\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\
-\x00\x00<IDAT8\x8dcddbf\xa0\x040Q\xa4{h\x18\xf0\xff\xdf\xdf\xffd\x1b\x00\xd3\
-\x8c\xcf\x10\x9c\x06\xa0k\xc2e\x08m\xc2\x00\x97m\xd8\xc41\x0c \x14h\xe8\xf2\
-\x8c\xa3)q\x10\x18\x00\x00R\xd8#\xec\xb2\xcd\xc1Y\x00\x00\x00\x00IEND\xaeB`\
-\x82'
-
-def getSmallUpArrowBitmap():
- return wx.BitmapFromImage(getSmallUpArrowImage())
-
-def getSmallUpArrowImage():
- stream = cStringIO.StringIO(getSmallUpArrowData())
- return wx.ImageFromStream(stream)
-
-#----------------------------------------------------------------------
-def getSmallDnArrowData():
- return \
-"\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\
-\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\
-\x00\x00HIDAT8\x8dcddbf\xa0\x040Q\xa4{\xd4\x00\x06\x06\x06\x06\x06\x16t\x81\
-\xff\xff\xfe\xfe'\xa4\x89\x91\x89\x99\x11\xa7\x0b\x90%\ti\xc6j\x00>C\xb0\x89\
-\xd3.\x10\xd1m\xc3\xe5*\xbc.\x80i\xc2\x17.\x8c\xa3y\x81\x01\x00\xa1\x0e\x04e\
-?\x84B\xef\x00\x00\x00\x00IEND\xaeB`\x82"
-
-def getSmallDnArrowBitmap():
- return wx.BitmapFromImage(getSmallDnArrowImage())
-
-def getSmallDnArrowImage():
- stream = cStringIO.StringIO(getSmallDnArrowData())
- return wx.ImageFromStream(stream)
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-09-16 16:27+0200\n"
+"POT-Creation-Date: 2012-11-14 15:17+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: iramuteq.py:134
-msgid "&Open a questionnaire\tCtrl+O"
+#: iramuteq.py:244
+msgid "Edition"
msgstr ""
-#: iramuteq.py:184
-msgid "Edition"
+#: iramuteq.py:202
+msgid "Exit"
msgstr ""
-#: iramuteq.py:183
+#: iramuteq.py:243
msgid "File"
msgstr ""
-#: iramuteq.py:188
+#: iramuteq.py:248
msgid "Help"
msgstr ""
-#: iramuteq.py:134
-msgid "Open a questionnaire"
+#: iramuteq.py:208
+msgid "Home page"
+msgstr ""
+
+#: iramuteq.py:192
+msgid "Import a factiva corpora..."
+msgstr ""
+
+#: iramuteq.py:180
+msgid "Open a matrix"
+msgstr ""
+
+#: iramuteq.py:184
+msgid "Open a text corpora"
+msgstr ""
+
+#: iramuteq.py:188
+msgid "Open an analysis"
+msgstr ""
+
+#: iramuteq.py:205
+msgid "Preferences"
+msgstr ""
+
+#: iramuteq.py:197
+msgid "Save tab as..."
+msgstr ""
+
+#: iramuteq.py:209
+msgid "Show data"
+msgstr ""
+
+#: iramuteq.py:210
+msgid "Show results"
msgstr ""
-#: iramuteq.py:186
+#: iramuteq.py:246 iramuteq.py:457 iramuteq.py:608 tableau.py:178
msgid "Spreadsheet analysis"
msgstr ""
-#: iramuteq.py:187
+#: iramuteq.py:247 iramuteq.py:458 iramuteq.py:607 openanalyse.py:94
+#: openanalyse.py:97 openanalyse.py:100 openanalyse.py:103 openanalyse.py:106
+#: openanalyse.py:109 tableau.py:179
msgid "Text analysis"
msgstr ""
-#: iramuteq.py:185
+#: iramuteq.py:245 iramuteq.py:456 iramuteq.py:535 iramuteq.py:606
+#: tableau.py:177
msgid "View"
msgstr ""
from time import sleep
class ProfileSegment() :
- def __init__(self, parent, corpus) :
+ def __init__(self, parent, pathout, parametres, corpus) :
self.parent = parent
self.corpus = corpus
+ self.dictpathout = pathout
+ self.parametres = parametres
dial = PrefSegProf(self.parent)
dial.CenterOnParent()
if dial.ShowModal() == wx.ID_OK :
self.dlg.Destroy()
def make_table(self) :
- self.corpus.make_segments_profile(self.corpus.dictpathout['segments_classes'], lenmin = self.mini, lenmax = self.maxi, effmin = self.eff, lem = self.lem)
+ self.corpus.make_segments_profile(self.dictpathout['segments_classes'], lenmin = self.mini, lenmax = self.maxi, effmin = self.eff, lem = self.lem)
def make_prof(self) :
txt = """
load("%s")
source("%s")
- """ % (self.corpus.dictpathout['RData'], self.parent.RscriptsPath['chdfunct'])
+ """ % (self.dictpathout['RData'], self.parent.RscriptsPath['chdfunct'])
txt += """
dt <- read.csv2("%s", row.names = 1)
to <- build.pond.prof(dt)
PrintProfile(n1,to[4],NULL,to[5],NULL,clnb,"%s","%s")
- """ % (self.corpus.dictpathout['segments_classes'], self.corpus.dictpathout['prof_seg'], self.corpus.dictpathout['antiprof_seg'])
+ """ % (self.corpus.dictpathout['segments_classes'], self.dictpathout['prof_seg'], self.dictpathout['antiprof_seg'])
fo = tempfile.mktemp(dir=self.parent.TEMPDIR)
with open(fo, 'w') as f :
f.write(txt)
SelectTab = self.parent.nb.GetSelection()
page = self.parent.nb.GetPage(SelectTab).TabChdSim
print page
- prof_seg = ReadProfileAsDico(self, self.corpus.dictpathout['prof_seg'], True, self.corpus.parametre['syscoding'])
+ prof_seg = ReadProfileAsDico(self, self.dictpathout['prof_seg'], True, self.parent.syscoding)
prof_seg_nb = aui.AuiNotebook(self.parent, -1, wx.DefaultPosition)
for i in range(0,len(self.corpus.lc)) :
ntab = ProfListctrlPanel(self.parent, self, prof_seg[str(i + 1)], False, i + 1)
from PrintRScript import barplot, dendroandbarplot
#---------------------------------------------------------------------------
-class List(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 List(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 SearchList(wx.Panel, listmix.ColumnSorterMixin):
+class SearchList(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.ColumnSorterMixin): #wx.Panel, listmix.ColumnSorterMixin):
def __init__(self, parent,gparent, dlist,first, nbactives, nbetoiles, add_dendro=True):
+ wx.ListCtrl.__init__( self, parent, -1, style=wx.LC_REPORT|wx.LC_VIRTUAL|wx.LC_HRULES|wx.LC_VRULES)
self.parent=parent
self.gparent=gparent
self.dlist=dlist
self.first = ['id','formes'] + first
self.nbactives = nbactives
self.nbetoiles = nbetoiles
- wx.Panel.__init__(self, parent, -1, style=wx.WANTS_CHARS)
+ #wx.Panel.__init__(self, parent, -1, style=wx.WANTS_CHARS)
self.il = wx.ImageList(16, 16)
tID = wx.NewId()
- self.list = List(self, tID,
- style=wx.LC_REPORT
- | wx.BORDER_NONE
- | wx.LC_EDIT_LABELS
- | wx.LC_SORT_ASCENDING
- )
+ #self.list = List(self, tID,
+ # style=wx.LC_REPORT
+ # | wx.BORDER_NONE
+ # | wx.LC_EDIT_LABELS
+ # | wx.LC_SORT_ASCENDING
+ # )
- self.list.SetImageList(self.il, wx.IMAGE_LIST_SMALL)
+ #self.list.SetImageList(self.il, wx.IMAGE_LIST_SMALL)
self.dlist = dlist
- self.PopulateList(dlist,first)
self.Bind(wx.EVT_SIZE, self.OnSize)
- self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnItemSelected, self.list)
+ self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnItemSelected, self)
self.Bind(wx.EVT_LIST_COL_CLICK, self.OnColClick)
# for wxMSW
- self.list.Bind(wx.EVT_COMMAND_RIGHT_CLICK, self.OnRightClick)
+ self.Bind(wx.EVT_COMMAND_RIGHT_CLICK, self.OnRightClick)
# for wxGTK
- self.list.Bind(wx.EVT_RIGHT_UP, self.OnRightClick)
+ self.Bind(wx.EVT_RIGHT_UP, self.OnRightClick)
self.itemDataMap = dlist
+ self.itemIndexMap = dlist.keys()
+ self.SetItemCount(len(dlist))
listmix.ColumnSorterMixin.__init__(self, len(first)+2)
+
+ self.PopulateList(dlist,first)
self.SortListItems(1, False)
self.do_greyline()
def PopulateList(self, dlist,first):
first = ['id','formes']+first
for i, name in enumerate(first) :
- self.list.InsertColumn(i, name, wx.LIST_FORMAT_LEFT)
-
- for key in dlist :
- index = self.list.InsertStringItem(sys.maxint, '%5i' % key)
- for i, val in enumerate(dlist[key][1:]) :
- self.list.SetStringItem(index, i+1, str(dlist[key][i+1]))
- self.list.SetItemData(index, key)
+ self.InsertColumn(i, name, wx.LIST_FORMAT_LEFT)
+
+ #for key in dlist :
+ # index = self.list.InsertStringItem(sys.maxint, '%5i' % key)
+ # for i, val in enumerate(dlist[key][1:]) :
+ # self.list.SetStringItem(index, i+1, str(dlist[key][i+1]))
+ # self.list.SetItemData(index, key)
- self.list.SetColumnWidth(0, wx.LIST_AUTOSIZE)
+ self.SetColumnWidth(0, wx.LIST_AUTOSIZE)
for i in range(1,len(first)-1):
- self.list.SetColumnWidth(i, 130)
+ self.SetColumnWidth(i, 130)
if self.nbactives + self.nbetoiles != len(dlist) :
#there is supp data
for i in range(self.nbactives, (len(dlist) - self.nbetoiles)) :
- item = self.list.GetItem(i)
+ item = self.GetItem(i)
item.SetTextColour(wx.RED)
- self.list.SetItem(item)
+ self.SetItem(item)
for i in range((len(dlist) - self.nbetoiles), len(dlist)) :
- item = self.list.GetItem(i)
+ item = self.GetItem(i)
item.SetTextColour(wx.BLUE)
- self.list.SetItem(item)
+ self.SetItem(item)
def do_greyline(self):
- for row in xrange(self.list.GetItemCount()):
+ for row in xrange(self.GetItemCount()):
if row % 2 :
- self.list.SetItemBackgroundColour(row,(230,230,230))
+ self.SetItemBackgroundColour(row,(230,230,230))
else :
- self.list.SetItemBackgroundColour(row,wx.WHITE)
+ self.SetItemBackgroundColour(row,wx.WHITE)
# Used by the ColumnSorterMixin, see wx/lib/mixins/listctrl.py
def GetListCtrl(self):
- return self.list
+ return self
# Used by the ColumnSorterMixin, see wx/lib/mixins/listctrl.py
def GetSortImages(self):
def OnRightDown(self, event):
x = event.GetX()
y = event.GetY()
- item, flags = self.list.HitTest((x, y))
+ item, flags = self.HitTest((x, y))
if flags & wx.LIST_HITTEST_ONITEM:
- self.list.Select(item)
+ self.Select(item)
event.Skip()
-
def getColumnText(self, index, col):
- item = self.list.GetItem(index, col)
+ item = self.GetItem(index, col)
return item.GetText()
+ def OnGetItemText(self, item, col):
+ index=self.itemIndexMap[item]
+ s = self.itemDataMap[index][col]
+ return s
def OnItemSelected(self, event):
self.currentItem = event.m_itemIndex
activenotebook = self.parent.nb.GetSelection()
page = self.parent.nb.GetPage(activenotebook)
corpus = page.corpus
- word = self.getColumnText(self.list.GetFirstSelected(), 0)
+ word = self.getColumnText(self.GetFirstSelected(), 0)
lems = corpus.lems
rep = []
for forme in lems[word] :
def OnPopupTwo(self, event):
activenotebook = self.parent.nb.GetSelection()
page = self.parent.nb.GetPage(activenotebook)
- item=self.getColumnText(self.list.GetFirstSelected(), 0)
+ item=self.getColumnText(self.GetFirstSelected(), 0)
corpus = page.corpus
win = message(self, -1, u"Concordancier", size=(600, 200),style = wx.DEFAULT_FRAME_STYLE)
avap=60
win.Show(True)
def OnPopupThree(self, event) :
- datas = [self.dlist[self.list.GetItemData(self.list.GetFirstSelected())]]
- last = self.list.GetFirstSelected()
- while self.list.GetNextSelected(last) != -1:
- last = self.list.GetNextSelected(last)
- data = self.dlist[self.list.GetItemData(last)]
+ datas = [self.dlist[self.GetItemData(self.GetFirstSelected())]]
+ last = self.GetFirstSelected()
+ while self.GetNextSelected(last) != -1:
+ last = self.GetNextSelected(last)
+ data = self.dlist[self.GetItemData(last)]
datas += [data]
colnames = self.first[2:]
rownames = [val[1] for val in datas]
def ongraphdendro(self, evt) :
corpus = self.parent.corpus
- datas = [self.dlist[self.list.GetItemData(self.list.GetFirstSelected())]]
- last = self.list.GetFirstSelected()
- while self.list.GetNextSelected(last) != -1:
- last = self.list.GetNextSelected(last)
- data = self.dlist[self.list.GetItemData(last)]
+ datas = [self.dlist[self.GetItemData(self.GetFirstSelected())]]
+ last = self.GetFirstSelected()
+ while self.GetNextSelected(last) != -1:
+ last = self.GetNextSelected(last)
+ data = self.dlist[self.GetItemData(last)]
datas += [data]
colnames = self.first[2:]
rownames = [val[1] for val in datas]
def OnSize(self, event):
w,h = self.GetClientSizeTuple()
- self.list.SetDimensions(0, 0, w, h)
+ self.SetDimensions(0, 0, w, h)
def OnColClick(self,event):
self.do_greyline()
#FIXME
self.actives = self.corpus.make_actives_limit(3)
dictcol = dict([[i, [act, self.corpus.getlemeff(act)]] for i, act in enumerate(self.actives)])
- SelectColumn(self.ira, dictcol, self.actives, self.pathout['selected.csv'])
+ SelectColumn(self.ira, dictcol, self.actives, self.pathout['selected.csv'], dlg = self.dlg)
self.makefiles()
- prep = PrepSimi(self.ira, self.parametres, indices_simi)
- self.parametres = prep.parametres
+ if self.dlg :
+ prep = PrepSimi(self.ira, self.parametres, indices_simi)
+ self.parametres = prep.parametres
script = PrintSimiScript(self)
script.make_script()
self.doR(script.scriptout)
def doanalyse(self) :
self.parametres['type'] = 'wordcloud'
#FIXME
- self.actives = self.corpus.make_actives_limit(3)
+ limit = 3
+ mode = 'both'
+ if mode == 'both' :
+ self.actives = self.corpus.make_actives_limit(limit, 1)
+ self.actives += self.corpus.make_actives_limit(limit, 2)
+ elif mode == 'act' :
+ self.actives = self.corpus.make_actives_limit(limit, 1)
dictcol = dict([[i, [act, self.corpus.getlemeff(act)]] for i, act in enumerate(self.actives)])
SelectColumn(self.ira, dictcol, self.actives, self.pathout['selected.csv'])
self.make_option()
self.parametres['width'] = dial.spin_L.GetValue()
self.parametres['height'] = dial.spin_H.GetValue()
#maxword = dial.spin_maxword.GetValue()
+ self.parametres['maxword'] = dial.spin_maxword.GetValue()
self.parametres['mincex'] = float(dial.spin_mincex.GetValue())/float(10)
self.parametres['maxcex'] = float(dial.spin_maxcex.GetValue())/float(10)
self.parametres['col_text'] = dial.color_text.GetColour()
log = logging.getLogger('iramuteq.tree')
#from agw import customtreectrl as CT
+class InfoDialog ( wx.Dialog ):
+
+ def __init__( self, parent, txt, parametres ):
+ wx.Dialog.__init__ ( self, parent, id = wx.ID_ANY, title = u"Informations", pos = wx.DefaultPosition, size = wx.DefaultSize, style = wx.DEFAULT_DIALOG_STYLE )
+
+ self.SetSizeHintsSz( wx.Size( 400,200 ), wx.DefaultSize )
+
+ bSizer1 = wx.BoxSizer( wx.VERTICAL )
+
+ self.m_panel2 = wx.Panel( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )
+ bSizer2 = wx.BoxSizer( wx.VERTICAL )
+
+ self.m_staticText4 = wx.StaticText( self.m_panel2, wx.ID_ANY, txt, wx.DefaultPosition, wx.DefaultSize, 0 )
+ self.m_staticText4.Wrap( -1 )
+ bSizer2.Add( self.m_staticText4, 0, wx.ALL, 5 )
+
+
+ self.m_panel2.SetSizer( bSizer2 )
+ self.m_panel2.Layout()
+ bSizer2.Fit( self.m_panel2 )
+ bSizer1.Add( self.m_panel2, 0, wx.EXPAND |wx.ALL, 5 )
+
+ self.m_panel1 = wx.Panel( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )
+ fgSizer1 = wx.FlexGridSizer( 0, 2, 0, 0 )
+ fgSizer1.SetFlexibleDirection( wx.BOTH )
+ fgSizer1.SetNonFlexibleGrowMode( wx.FLEX_GROWMODE_SPECIFIED )
+
+ for val in parametres :
+ fgSizer1.Add( wx.StaticText( self.m_panel1, wx.ID_ANY, val[0], wx.DefaultPosition, wx.DefaultSize, 0 ), 0, wx.ALL, 0)
+ fgSizer1.Add( wx.StaticText( self.m_panel1, wx.ID_ANY, val[1], wx.DefaultPosition, wx.DefaultSize, 0 ), 0, wx.ALL, 0)
+ fgSizer1.Add( wx.StaticLine( self.m_panel1, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL ), 0, wx.EXPAND |wx.ALL, 0)
+ fgSizer1.Add( wx.StaticLine( self.m_panel1, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL ), 0, wx.EXPAND|wx.ALL, 0)
+
+ self.m_panel1.SetSizer( fgSizer1 )
+ self.m_panel1.Layout()
+ fgSizer1.Fit( self.m_panel1 )
+ bSizer1.Add( self.m_panel1, 0, wx.EXPAND |wx.ALL, 3 )
+
+ m_sdbSizer1 = wx.StdDialogButtonSizer()
+ self.m_sdbSizer1OK = wx.Button( self, wx.ID_OK )
+ m_sdbSizer1.AddButton( self.m_sdbSizer1OK )
+ m_sdbSizer1.Realize();
+
+ bSizer1.Add( m_sdbSizer1, 0, wx.EXPAND, 5 )
+
+
+ self.SetSizer( bSizer1 )
+ self.Layout()
+ bSizer1.Fit( self )
+
+ self.Centre( wx.BOTH )
+
+ def __del__( self ):
+ pass
+
+
class LeftTree(CT.CustomTreeCtrl):
def __init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition,
numchildren = str(self.itemdict["children"])
itemtype = self.itemdict["itemtype"]
pydata = self.itemdict['pydata']
- if 'analyses' in pydata :
- toshow = dict([[val, pydata[val]] for val in pydata if val not in['analyses', 'isload']])
- else :
- toshow = pydata
- pydata = DoConf().totext(toshow)
+ #if 'analyses' in pydata :
+ # toshow = dict([[val, pydata[val]] for val in pydata if val not in['analyses', 'isload']])
+ #else :
+ toshow = pydata['ira']
+ toshow = DoConf(toshow).getoptions()
+ txt = DoConf().totext(toshow)
+ parametres = [val.split('\t\t:') for val in txt.splitlines()]
+ parametres.sort()
if itemtype == 0:
itemtype = "Normal"
else:
itemtype = "RadioButton"
- strs = "Information On Selected Item:\n\n" + "Text: " + itemtext + "\n" \
- "Number Of Children: " + numchildren + "\n" \
- "Item Type: " + itemtype + "\n" \
- "Item Data Type: " + pydata + "\n"
-
- dlg = wx.MessageDialog(self, strs, "CustomTreeCtrlDemo Info", wx.OK | wx.ICON_INFORMATION)
+ dlg = InfoDialog(self, itemtext, parametres)
dlg.ShowModal()
dlg.Destroy()