...
[iramuteq] / layout.py
index 96aaaf6..58dbf18 100644 (file)
--- a/layout.py
+++ b/layout.py
@@ -8,6 +8,8 @@ import os
 import wx
 import wx.lib.hyperlink as hl
 import wx.lib.agw.aui as aui
 import wx
 import wx.lib.hyperlink as hl
 import wx.lib.agw.aui as aui
+import wx.lib.agw.labelbook as LB
+from wx.lib.agw.fmresources import *
 from chemins import ConstructPathOut, ChdTxtPathOut, FFF, ffr, PathOut, StatTxtPathOut, simipath
 from ConfigParser import ConfigParser
 from functions import ReadProfileAsDico, GetTxtProfile, read_list_file, ReadList, exec_rcode, print_liste, BugReport, DoConf, indices_simi, check_Rresult, progressbar
 from chemins import ConstructPathOut, ChdTxtPathOut, FFF, ffr, PathOut, StatTxtPathOut, simipath
 from ConfigParser import ConfigParser
 from functions import ReadProfileAsDico, GetTxtProfile, read_list_file, ReadList, exec_rcode, print_liste, BugReport, DoConf, indices_simi, check_Rresult, progressbar
@@ -23,6 +25,7 @@ from dialog import PrefGraph, PrefExport, PrefSimpleFile, PrefDendro, SimpleDial
 from guifunct import SelectColumn, PrepSimi, PrefSimi
 from webexport import WebExport
 from corpus import Corpus
 from guifunct import SelectColumn, PrepSimi, PrefSimi
 from webexport import WebExport
 from corpus import Corpus
+from sheet import MySheet
 import datetime
 import sys
 import tempfile
 import datetime
 import sys
 import tempfile
@@ -361,7 +364,9 @@ class OpenCHDS():
             self.corpus.make_ucecl_from_R(self.pathout['uce'])
             corpname = self.corpus.parametres['corpus_name']
         else :
             self.corpus.make_ucecl_from_R(self.pathout['uce'])
             corpname = self.corpus.parametres['corpus_name']
         else :
-            corpname = self.corpus.parametres['name']
+            corpname = self.corpus.parametres['matrix_name']
+            if os.path.exists(self.pathout['analyse.db']) :
+                self.corpus.read_tableau(self.pathout['analyse.db'])
 
         clnb = parametres['clnb']
         dlg = progressbar(self, maxi = 4 + clnb) 
 
         clnb = parametres['clnb']
         dlg = progressbar(self, maxi = 4 + clnb) 
@@ -372,6 +377,14 @@ class OpenCHDS():
         DictProfile = ReadProfileAsDico(Profile, Alceste, self.encoding)
         self.DictProfile = DictProfile
         self.cluster_size = []
         DictProfile = ReadProfileAsDico(Profile, Alceste, self.encoding)
         self.DictProfile = DictProfile
         self.cluster_size = []
+        clusternames = {}
+        for i in range(0, clnb) :
+            clusternames[i] = ' '.join([u'%i' % (i + 1), _(u'Cluster').decode('utf8'),  u'%i' % (i + 1)])
+        if os.path.exists(self.pathout['classes_names.txt']) :
+            with codecs.open(self.pathout['classes_names.txt'], 'r', self.parent.syscoding) as f :
+                clusternames_ = f.read()
+            clusternames_ =  dict([[i, ' '.join([`i + 1`, line])] for i, line in enumerate(clusternames_.splitlines())])
+            clusternames.update(clusternames_)
         #print 'lecture des antiprofils'
         #DictAnti = ReadProfileAsDico(self, AntiProfile, Alceste, self.encoding)
 
         #print 'lecture des antiprofils'
         #DictAnti = ReadProfileAsDico(self, AntiProfile, Alceste, self.encoding)
 
@@ -411,6 +424,7 @@ class OpenCHDS():
         #self.TabChdSim = wx.aui.AuiNotebook(self.parent.nb, -1, wx.DefaultPosition)
         notebook_flags =  aui.AUI_NB_DEFAULT_STYLE | aui.AUI_NB_TAB_EXTERNAL_MOVE | aui.AUI_NB_TAB_MOVE | aui.AUI_NB_TAB_FLOAT| wx.NO_BORDER
         panel.TabChdSim = aui.AuiNotebook(panel, -1, wx.DefaultPosition)
         #self.TabChdSim = wx.aui.AuiNotebook(self.parent.nb, -1, wx.DefaultPosition)
         notebook_flags =  aui.AUI_NB_DEFAULT_STYLE | aui.AUI_NB_TAB_EXTERNAL_MOVE | aui.AUI_NB_TAB_MOVE | aui.AUI_NB_TAB_FLOAT| wx.NO_BORDER
         panel.TabChdSim = aui.AuiNotebook(panel, -1, wx.DefaultPosition)
+        #panel.TabChdSim = LB.LabelBook(panel, -1, agwStyle = INB_TOP|INB_SHOW_ONLY_TEXT|INB_FIT_LABELTEXT)
         panel.TabChdSim.SetAGWWindowStyleFlag(notebook_flags)
         panel.TabChdSim.SetArtProvider(aui.ChromeTabArt())
         sizer1.Add(panel.TabChdSim,10, wx.EXPAND, 5)
         panel.TabChdSim.SetAGWWindowStyleFlag(notebook_flags)
         panel.TabChdSim.SetArtProvider(aui.ChromeTabArt())
         sizer1.Add(panel.TabChdSim,10, wx.EXPAND, 5)
@@ -436,7 +450,12 @@ class OpenCHDS():
             panel.TabChdSim.AddPage(CHD,'CHD')
                
         panel.ProfNB = aui.AuiNotebook(panel, -1, wx.DefaultPosition)
             panel.TabChdSim.AddPage(CHD,'CHD')
                
         panel.ProfNB = aui.AuiNotebook(panel, -1, wx.DefaultPosition)
-        panel.ProfNB.SetArtProvider(aui.ChromeTabArt())
+        notebook_flags |= aui.AUI_NB_WINDOWLIST_BUTTON
+        panel.ProfNB.SetAGWWindowStyleFlag(notebook_flags)
+        #panel.ProfNB.SetArtProvider(aui.ChromeTabArt())
+        #panel.ProfNB = LB.LabelBook(panel, -1, agwStyle = INB_LEFT|INB_SHOW_ONLY_TEXT|INB_FIT_LABELTEXT)
+        #panel.ProfNB = wx.Listbook(self.parent, -1, style = wx.BK_DEFAULT)
+        #panel.ProfNB = wx.Treebook(self.parent, -1, style = wx.BK_DEFAULT)
         #self.ProfNB.SetTabCtrlHeight(100)
         #panel.AntiProfNB = aui.AuiNotebook(panel, -1, wx.DefaultPosition)
         if os.path.exists(DictPathOut['prof_seg']) :
         #self.ProfNB.SetTabCtrlHeight(100)
         #panel.AntiProfNB = aui.AuiNotebook(panel, -1, wx.DefaultPosition)
         if os.path.exists(DictPathOut['prof_seg']) :
@@ -447,15 +466,18 @@ class OpenCHDS():
             if isinstance(self.corpus, Corpus) :
                 DictProfile[str(i + 1)][1:] = [val[0:5] + [getlemgram(self.corpus, val)] + val[6:] for val in DictProfile[str(i + 1)][1:]]
             dlg.Update(3+i, 'Classe %i' %(i+1))
             if isinstance(self.corpus, Corpus) :
                 DictProfile[str(i + 1)][1:] = [val[0:5] + [getlemgram(self.corpus, val)] + val[6:] for val in DictProfile[str(i + 1)][1:]]
             dlg.Update(3+i, 'Classe %i' %(i+1))
-            ind = '/'.join(DictProfile[str(i + 1)][0][0:2])
-            indpour = ' - '.join([ind, DictProfile[str(i + 1)][0][2]])
+            ind = '/'.join(DictProfile[str(i + 1)][0][0:2]).strip()
+            indpour = '\n'.join([ind, DictProfile[str(i + 1)][0][2]])
             self.tabprofile = ProfListctrlPanel(self.parent, self.panel, DictProfile[str(i + 1)], Alceste, i + 1)
             #self.tabantiprofile = ProfListctrlPanel(self.parent, self, DictAnti[str(i + 1)], Alceste, i + 1)
             self.tabprofile = ProfListctrlPanel(self.parent, self.panel, DictProfile[str(i + 1)], Alceste, i + 1)
             #self.tabantiprofile = ProfListctrlPanel(self.parent, self, DictAnti[str(i + 1)], Alceste, i + 1)
-            panel.ProfNB.AddPage(self.tabprofile, _(u"Cluster").decode('utf8') + ' %s %s(%s%%)' % (str(i + 1), sep, indpour))
+            panel.ProfNB.AddPage(self.tabprofile, clusternames[i] + '\n%s%%' % indpour, True)
+            panel.ProfNB.SetPageTextColour(i, '#890909')
+            panel.ProfNB.SetRenamable(i, True)
             #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, _(u"Cluster").decode('utf8') + ' %i' % (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, _(u"Cluster").decode('utf8') + ' %i' % (i + 1))
+        panel.ProfNB.SetSelection(0)
 
         if clnb > 2 :
             self.TabAFC = aui.AuiNotebook(panel.TabChdSim, -1, wx.DefaultPosition)
 
         if clnb > 2 :
             self.TabAFC = aui.AuiNotebook(panel.TabChdSim, -1, wx.DefaultPosition)
@@ -466,7 +488,7 @@ class OpenCHDS():
             
             if os.path.exists(self.DictPathOut['afc_facteur']) :
                 dictrow, first = ReadList(self.DictPathOut['afc_facteur'], self.encoding)
             
             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)
+                self.TabAFC_facteur = ListForSpec(self.parent, parametres, dictrow, first[1:])
                 #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)
                 #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)
@@ -629,7 +651,27 @@ class SashList(wx.Panel) :
         self.rightwin1 = rightwin1
         winids.append(rightwin1.GetId())
 
         self.rightwin1 = rightwin1
         winids.append(rightwin1.GetId())
 
-
+class TgenLayout :
+    def __init__(self, page):
+        self.page = page
+        parametres = self.page.parametres
+        ira = wx.GetApp().GetTopWindow()
+        self.page.tgens, etoiles =  ReadList(parametres['tgenspec'], ira.syscoding, sep="\t")
+        tgentab = False
+        for i in range(page.GetPageCount()) :
+            tab = page.GetPage(i)
+            if 'tgen' in dir(tab) :
+                if tab.tgen :
+                    tgentab = tab
+                    break
+        if tgentab :
+            self.page.tgentab.RefreshData(self.page.tgens)
+            self.page.SetSelection(i)
+        else :
+            self.page.tgentab = ListForSpec(ira, None, self.page.tgens, etoiles[1:])
+            self.page.tgentab.tgen = True
+            self.page.AddPage(self.page.tgentab, u'Tgens Specificities')
+            self.page.SetSelection(self.page.GetPageCount() - 1)
 
 class dolexlayout :
     def __init__(self, ira, corpus, parametres):
 
 class dolexlayout :
     def __init__(self, ira, corpus, parametres):
@@ -649,21 +691,21 @@ class dolexlayout :
         self.DictEffType, firstefft = ReadList(self.dictpathout['tabletypem'], self.corpus.parametres['syscoding'])
         self.DictEffRelForme, firsteffrelf = ReadList(self.dictpathout['eff_relatif_forme'], self.corpus.parametres['syscoding']) 
         self.DictEffRelType, firsteffrelt = ReadList(self.dictpathout['eff_relatif_type'], self.corpus.parametres['syscoding'])    
         self.DictEffType, firstefft = ReadList(self.dictpathout['tabletypem'], self.corpus.parametres['syscoding'])
         self.DictEffRelForme, firsteffrelf = ReadList(self.dictpathout['eff_relatif_forme'], self.corpus.parametres['syscoding']) 
         self.DictEffRelType, firsteffrelt = ReadList(self.dictpathout['eff_relatif_type'], self.corpus.parametres['syscoding'])    
-        
+        self.etoiles = firsteff[1:]
         #sash = SashList(ira.nb)
         
         
         self.TabStat = aui.AuiNotebook(ira.nb, -1, wx.DefaultPosition)
         self.TabStat.parametres = parametres
         #sash = SashList(ira.nb)
         
         
         self.TabStat = aui.AuiNotebook(ira.nb, -1, wx.DefaultPosition)
         self.TabStat.parametres = parametres
-        self.ListPan = ListForSpec(ira, self, self.DictSpec, first)
+        self.ListPan = ListForSpec(ira, self, self.DictSpec, self.etoiles)
         if os.path.exists(self.pathout['banalites.csv']) :
         if os.path.exists(self.pathout['banalites.csv']) :
-            self.listban = ListForSpec(ira, self, self.dictban, firstban)
+            self.listban = ListForSpec(ira, self, self.dictban, ['eff'] + self.etoiles)
         #self.ListPan2 = ListForSpec(sash.rightwin1, self, self.DictSpec, first)
         #self.ListPan2 = ListForSpec(sash.rightwin1, self, self.DictSpec, first)
-        self.ListPant = ListForSpec(ira, self, self.DictType, firstt)
-        self.ListPanEff = ListForSpec(ira, self, self.DictEff, firsteff)
-        self.ListPanEffType = ListForSpec(ira, self, self.DictEffType, firstefft)
-        self.ListPanEffRelForme = ListForSpec(ira, self, self.DictEffRelForme, firsteffrelf)
-        self.ListPanEffRelType = ListForSpec(ira, self.parent, self.DictEffRelType, firsteffrelt)
+        self.ListPant = ListForSpec(ira, self, self.DictType, self.etoiles)
+        self.ListPanEff = ListForSpec(ira, self, self.DictEff, self.etoiles)
+        self.ListPanEffType = ListForSpec(ira, self, self.DictEffType, self.etoiles)
+        self.ListPanEffRelForme = ListForSpec(ira, self, self.DictEffRelForme, self.etoiles)
+        self.ListPanEffRelType = ListForSpec(ira, self.parent, self.DictEffRelType, self.etoiles)
         
         self.TabStat.AddPage(self.ListPan, u'formes') 
         if os.path.exists(self.pathout['banalites.csv']) :
         
         self.TabStat.AddPage(self.ListPan, u'formes') 
         if os.path.exists(self.pathout['banalites.csv']) :
@@ -682,11 +724,20 @@ class dolexlayout :
             self.tabAFCTGraph = GraphPanelAfc(self.TabAFC, self.dictpathout, list_graph, self.parametres['clnb'], itempath ='liste_graph_afct', coding=self.encoding)
             self.TabAFC.AddPage(self.tabAFCTGraph, 'AFC type')
             self.TabStat.AddPage(self.TabAFC, 'AFC')
             self.tabAFCTGraph = GraphPanelAfc(self.TabAFC, self.dictpathout, list_graph, self.parametres['clnb'], itempath ='liste_graph_afct', coding=self.encoding)
             self.TabAFC.AddPage(self.tabAFCTGraph, 'AFC type')
             self.TabStat.AddPage(self.TabAFC, 'AFC')
+        
+        
+        
            
         
         ira.nb.AddPage(self.TabStat, u'Spécificités')
            
         
         ira.nb.AddPage(self.TabStat, u'Spécificités')
+        self.ira = ira
         
         self.TabStat.corpus = self.corpus
         
         self.TabStat.corpus = self.corpus
+        self.TabStat.etoiles = self.etoiles
+        if os.path.exists(os.path.join(self.parametres['pathout'], 'tgenspec.csv')) :
+            self.parametres['tgenspec'] = os.path.join(self.parametres['pathout'], 'tgenspec.csv')
+            TgenLayout(self.TabStat)
+        self.TabStat.SetSelection(0)
         ira.nb.SetSelection(self.parent.nb.GetPageCount() - 1)
         ira.ShowAPane("Tab_content")
 
         ira.nb.SetSelection(self.parent.nb.GetPageCount() - 1)
         ira.ShowAPane("Tab_content")
 
@@ -798,9 +849,9 @@ class GraphPanelDendro(wx.Panel):
         self.param['type_tclasse'] = dial.m_radioBox2.GetSelection()
 
     def make_dendro(self, dendro = 'simple') :
         self.param['type_tclasse'] = dial.m_radioBox2.GetSelection()
 
     def make_dendro(self, dendro = 'simple') :
-        while os.path.exists(os.path.join(self.dirout, 'dendrogamme_' + str(self.graphnb)+'.png')) :
+        while os.path.exists(os.path.join(self.dirout, 'dendrogramme_' + str(self.graphnb)+'.png')) :
             self.graphnb += 1
             self.graphnb += 1
-        fileout = ffr(os.path.join(self.dirout,'dendrogamme_' + str(self.graphnb)+'.png'))
+        fileout = ffr(os.path.join(self.dirout,'dendrogramme_' + str(self.graphnb)+'.png'))
         width = self.param['width']
         height = self.param['height']
         type_dendro = self.type_dendro[self.param['type_dendro']]
         width = self.param['width']
         height = self.param['height']
         type_dendro = self.type_dendro[self.param['type_dendro']]
@@ -892,6 +943,25 @@ class OpenCorpus :
         ira.nb.SetSelection(ira.nb.GetPageCount() - 1)
         ira.ShowAPane("Tab_content")
 
         ira.nb.SetSelection(ira.nb.GetPageCount() - 1)
         ira.ShowAPane("Tab_content")
 
+class MatLayout :
+    def __init__(self, ira, matrix):
+        #self.parent.content = self.csvtable
+        self.sheet = MySheet(ira.nb)
+        ira.nb.AddPage(self.sheet, matrix.parametres['matrix_name'])
+        self.sheet.Populate(matrix.csvtable)
+        self.sheet.parametres = matrix.parametres
+        #self.ira.ShowMenu(_(u"View").decode('utf8'))
+        #self.ira.ShowMenu(_(u"Matrix analysis").decode('utf8'))
+        #self.ira.ShowMenu(_(u"Text analysis").decode('utf8'), False)
+        #self.parent.type = "Data"
+        #self.parent.DataPop = False
+        ira.nb.SetSelection(ira.nb.GetPageCount() - 1)
+        ira.ShowAPane("Tab_content")
+        #self.ira.OnViewData('')
+
+      
+        
+
 class CopusPanel(wx.Panel) :
     def __init__(self, parent, parametres) :
         wx.Panel.__init__ ( self, parent, id = wx.ID_ANY, pos = wx.DefaultPosition, size = wx.Size( 500,300 ), style = wx.TAB_TRAVERSAL )
 class CopusPanel(wx.Panel) :
     def __init__(self, parent, parametres) :
         wx.Panel.__init__ ( self, parent, id = wx.ID_ANY, pos = wx.DefaultPosition, size = wx.Size( 500,300 ), style = wx.TAB_TRAVERSAL )
@@ -1119,11 +1189,37 @@ class DefaultMatLayout :
         self.parent = parent
         self.tableau = tableau
         self.parametres = parametres
         self.parent = parent
         self.tableau = tableau
         self.parametres = parametres
+        if os.path.exists(self.pathout['analyse.db']) :
+            self.tableau.read_tableau(self.pathout['analyse.db'])
         self.dolayout()
         self.dolayout()
+        self.ira.nb.SetSelection(self.ira.nb.GetPageCount() - 1)
+        self.ira.ShowAPane("Tab_content")
 
     def dolayout(self) :
         pass
 
 
     def dolayout(self) :
         pass
 
+class FreqLayout(DefaultMatLayout) :
+    def dolayout(self) :
+        self.tab = wx.html.HtmlWindow(self.ira.nb, -1)
+        if "gtk2" in wx.PlatformInfo:
+            self.tab.SetStandardFonts()
+        self.tab.LoadPage(self.pathout['resultats.html'])
+        self.tab.parametres = self.parametres
+        self.ira.nb.AddPage(self.tab, u"Fréquences")
+
+
+class Chi2Layout(DefaultMatLayout) :
+    def dolayout(self):
+        self.tab = wx.html.HtmlWindow(self.ira.nb, -1)
+        if "gtk2" in wx.PlatformInfo:
+            self.tab.SetStandardFonts()
+        self.tab.LoadPage(self.pathout['resultats-chi2.html'])
+        self.tab.parametres = self.parametres
+        self.ira.nb.AddPage(self.tab, ' - '.join([u"Chi2", "%s" % self.parametres['name']]))
+        #self.ira.nb.SetSelection(self.ira.nb.GetPageCount() - 1)
+        #self.ira.ShowAPane("Tab_content")  
+
+
 class ProtoLayout(DefaultMatLayout) :
     def dolayout(self) :
         list_graph = [['proto.png', 'Analyse prototypique']]
 class ProtoLayout(DefaultMatLayout) :
     def dolayout(self) :
         list_graph = [['proto.png', 'Analyse prototypique']]
@@ -1137,8 +1233,8 @@ class ProtoLayout(DefaultMatLayout) :
         #self.Tab.corpus = self.corpus
         self.TabProto.parametres = self.parametres
         self.ira.nb.AddPage(self.TabProto, 'Analyse Prototypique - %s' % self.parametres['name'])
         #self.Tab.corpus = self.corpus
         self.TabProto.parametres = self.parametres
         self.ira.nb.AddPage(self.TabProto, 'Analyse Prototypique - %s' % self.parametres['name'])
-        self.ira.nb.SetSelection(self.ira.nb.GetPageCount() - 1)
-        self.ira.ShowAPane("Tab_content")
+        #self.ira.nb.SetSelection(self.ira.nb.GetPageCount() - 1)
+        #self.ira.ShowAPane("Tab_content")
 
 
 class SimiMatLayout(DefaultMatLayout) :
 
 
 class SimiMatLayout(DefaultMatLayout) :
@@ -1159,8 +1255,8 @@ class SimiMatLayout(DefaultMatLayout) :
         self.tabsimi.AddPage(self.graphpan, 'Graph')
         self.tabsimi.parametres = self.parametres
         self.parent.nb.AddPage(self.tabsimi, 'Analyse de graph')
         self.tabsimi.AddPage(self.graphpan, 'Graph')
         self.tabsimi.parametres = self.parametres
         self.parent.nb.AddPage(self.tabsimi, 'Analyse de graph')
-        self.parent.ShowTab(True)
-        self.parent.nb.SetSelection(self.parent.nb.GetPageCount() - 1)
+        #self.parent.ShowTab(True)
+        #self.parent.nb.SetSelection(self.parent.nb.GetPageCount() - 1)
 
     def redosimi(self,evt) :
         with open(self.pathout['selected.csv'],'r') as f :
 
     def redosimi(self,evt) :
         with open(self.pathout['selected.csv'],'r') as f :