...
[iramuteq] / iramuteq.py
index 1b6a1e4..ccc28f8 100644 (file)
@@ -47,6 +47,7 @@ from tabchdalc import AnalyseQuest
 from tabsimi import DoSimi
 from tabrsimple import InputText
 from tabverges import Prototypical
+from tabsplitvar import SplitMatrixFromVar
 #from textafcuci import AfcUci
 from textdist import AnalysePam
 from textstat import Stat
@@ -148,7 +149,17 @@ sys.stdout = printer()
 ConfigPath = ConstructConfigPath(UserConfigPath)
 
 langues = {'french' : wx.LANGUAGE_FRENCH,
-            'english' : wx.LANGUAGE_ENGLISH,}
+            'english' : wx.LANGUAGE_ENGLISH,
+            'portuguese' : wx.LANGUAGE_PORTUGUESE,
+            'italian' : wx.LANGUAGE_ITALIAN,
+            'spanish' : wx.LANGUAGE_SPANISH}
+
+code_langues = {'french' : 'fr_FR',
+             'english' : 'en',
+            'portuguese' : 'pt_PT',
+            'italian' : 'it_IT',
+            'spanish' : 'es_ES'
+            }
 #####################################################################
 
 class IraFrame(wx.Frame):
@@ -174,8 +185,15 @@ class IraFrame(wx.Frame):
         self.SimiFromCluster = SimiFromCluster
         #langues
         gettext.install('iramuteq',  os.path.join(AppliPath,'locale'), unicode=True)
-        self.presLan_fr = gettext.translation("iramuteq", os.path.join(AppliPath,'locale'), languages=['fr_FR'])
-        self.presLan_en = gettext.translation("iramuteq", os.path.join(AppliPath,'locale'), languages=['en'])
+        #langues = ['fr_FR', 'en', 'pt_PT']
+        #for l in langues :
+        #    pass
+        self.preslangue = {}
+        for langue in code_langues :
+            self.preslangue[langue] = gettext.translation("iramuteq", os.path.join(AppliPath,'locale'), languages=[code_langues[langue]])
+        
+        #self.presLan_fr = gettext.translation("iramuteq", os.path.join(AppliPath,'locale'), languages=['fr_FR'])
+        #self.presLan_en = gettext.translation("iramuteq", os.path.join(AppliPath,'locale'), languages=['en'])
         self.setlangue()
         # tell FrameManager to manage this frame        
         #self._mgr = wx.aui.AuiManager()
@@ -191,7 +209,7 @@ class IraFrame(wx.Frame):
         item.SetBitmap(wx.ArtProvider_GetBitmap(wx.ART_FILE_OPEN))
         file_menu.AppendItem(item)
         
-        item = wx.MenuItem(file_menu, ID_OpenText, _(u"Open a text corpora").decode('utf8'), _(u"Open a text corpora").decode('utf8'))
+        item = wx.MenuItem(file_menu, ID_OpenText, _(u"Open a text corpus").decode('utf8'), _(u"Open a text corpus").decode('utf8'))
         item.SetBitmap(wx.ArtProvider_GetBitmap(wx.ART_FILE_OPEN))
         file_menu.AppendItem(item)
         
@@ -223,7 +241,7 @@ class IraFrame(wx.Frame):
         self.ID_splitvar = splitvar.GetId()
         self.ID_extractmod = extractmod.GetId()
         self.ID_extractthem = extractthem.GetId()
-        file_menu.AppendMenu(-1, _(u"Tools"), menuTools)
+        file_menu.AppendMenu(-1, _(u"Tools").decode('utf8'), menuTools)
 
                
         #item = wx.MenuItem(file_menu, ID_SaveTab, _(u"Save tab as...").decode('utf8'), _(u"Save tab as...").decode('utf8'))
@@ -240,20 +258,25 @@ class IraFrame(wx.Frame):
         view_menu.Append(ID_VIEWDATA, _(u"Show data").decode('utf8'))
         view_menu.Append(ID_RESULT, _(u'Show results').decode('utf8'))
         #view_menu.AppendSeparator()
-        analyse_menu = wx.Menu()
-        analyse_menu.Append(ID_Freq, _(u"Frequencies").decode('utf8'))
-        analyse_menu.Append(ID_Chi2, _(u"Chi2").decode('utf8'))
-        #analyse_menu.Append(ID_Student, u"t de Student")
+        matrix_menu = wx.Menu()
+        matrix_menu.Append(ID_Freq, _(u"Frequencies").decode('utf8'))
+        matrix_menu.Append(ID_Chi2, _(u"Chi2").decode('utf8'))
+        #matrix_menu.Append(ID_Student, u"t de Student")
         menu_classif = wx.Menu()
         menu_classif.Append(ID_CHDReinert, _(u"Reinert's Method").decode('utf8'))
         #menu_classif.Append(ID_CHDSIM, u"Par matrice des distances")
-        analyse_menu.AppendMenu(-1, _(u"Clustering").decode('utf8'), menu_classif)
-        #analyse_menu.Append(ID_AFCM, u"AFCM")
-        analyse_menu.Append(ID_SIMI, _(u"Similarities Analysis").decode('utf8'))
-        analyse_menu.Append(ID_proto, _(u"Prototypical Analysis").decode('utf8'))
+        matrix_menu.AppendMenu(-1, _(u"Clustering").decode('utf8'), menu_classif)
+        #matrix_menu.Append(ID_AFCM, u"AFCM")
+        matrix_menu.Append(ID_SIMI, _(u"Similarities Analysis").decode('utf8'))
+        matrix_menu.Append(ID_proto, _(u"Prototypical Analysis").decode('utf8'))
         ID_RCODE = wx.NewId()
-        analyse_menu.Append(ID_RCODE, u"Code R...") 
-        self.analyse_menu = analyse_menu
+        matrix_menu.Append(ID_RCODE, u"Code R...") 
+        #menu_splittab = wx.Menu()
+        #ID_SPLITVAR = wx.NewId()
+        #splitvar = wx.MenuItem(menu_splittab, ID_SPLITVAR, _(u"Split from variable").decode('utf8'))
+        #menu_splittab.AppendItem(splitvar)
+        #matrix_menu.AppendMenu(-1, _(u"Split matrix").decode('utf8'), menu_splittab)
+        self.matrix_menu = matrix_menu
         
         text_menu = wx.Menu()
         #text_menu.Append(ID_CHECKCORPUS, u"Vérifier le corpus")
@@ -276,7 +299,7 @@ class IraFrame(wx.Frame):
         self.mb.Append(file_menu, _(u"File").decode('utf8'))
         self.mb.Append(edit_menu, _(u"Edition").decode('utf8'))
         self.mb.Append(view_menu, _(u"View").decode('utf8'))
-        self.mb.Append(analyse_menu, _(u"Matrix analysis").decode('utf8'))
+        self.mb.Append(matrix_menu, _(u"Matrix analysis").decode('utf8'))
         self.mb.Append(text_menu, _(u"Text analysis").decode('utf8'))
         self.mb.Append(help_menu, _(u"Help").decode('utf8'))
         
@@ -381,6 +404,7 @@ class IraFrame(wx.Frame):
         self.Bind(wx.EVT_MENU, self.OnAFCM, id=ID_AFCM)
         self.Bind(wx.EVT_MENU, self.OnProto, id=ID_proto)
         self.Bind(wx.EVT_MENU, self.OnRCode, id=ID_RCODE)
+        #self.Bind(wx.EVT_MENU, self.OnSplitVar, id=ID_SPLITVAR)
         #self.Bind(wx.EVT_MENU, self.OnCheckcorpus, id = ID_CHECKCORPUS)
         self.Bind(wx.EVT_MENU, self.OnTextStat, id=ID_TEXTSTAT)
         self.Bind(wx.EVT_MENU, self.OnTextSpec, id=ID_ASLEX)
@@ -435,9 +459,9 @@ class IraFrame(wx.Frame):
 
 ##############################################################@
         self.DisEnSaveTabAs(False)
-        self.ShowMenu(_("View").decode('utf8'), False)
-        self.ShowMenu(_("Matrix analysis").decode('utf8'), False)
-        self.ShowMenu(_("Text analysis").decode('utf8'), False)
+        self.ShowMenu('view', False)
+        self.ShowMenu('matrix', False)
+        self.ShowMenu('text', False)
    
         self._mgr.Update()
 
@@ -499,24 +523,10 @@ vous devez signaler le chemin de l'éxecutable de R dans les préférences."""
                 pass
             dlg.Destroy()
 
-
     def setlangue(self) :
-        try :
-            self.pref.read(self.ConfigPath['preferences'])
-            guilangue = self.pref.get('iramuteq', 'guilanguage')
-            if guilangue == 'french' :
-                self.presLan_fr.install()
-            else :
-                self.presLan_en.install()
-            mylocale = wx.Locale(langues[guilangue])
-            mylocale.AddCatalogLookupPathPrefix(os.path.join(AppliPath,'locale'))
-            mylocale.AddCatalog('iramuteq')
-        except :
-            self.presLan_fr.install()
-            mylocale = wx.Locale(langues['french'])
-            mylocale.AddCatalogLookupPathPrefix(os.path.join(AppliPath,'locale'))
-            mylocale.AddCatalog('iramuteq')
-
+        self.pref.read(self.ConfigPath['preferences'])
+        guilangue = self.pref.get('iramuteq', 'guilanguage')
+        self.preslangue.get(guilangue, 'english').install()
 
     def OnVerif(self, evt) :
         pack = CheckRPackages(self)
@@ -535,9 +545,19 @@ vous devez signaler le chemin de l'éxecutable de R dans les préférences."""
                 item.Enable(DISEN)
     
     def ShowMenu(self, menu, Show=True):
-        menu_pos = self.mb.FindMenu(menu)
-        self.mb.EnableTop(menu_pos, Show)
-        self.mb.UpdateMenus()
+        if menu == 'text' :
+            menu_pos = 4
+        elif menu == 'matrix' :
+            menu_pos = 3
+        elif menu == 'view' :
+            menu_pos = 2
+        else :
+            menu_pos = None
+            
+        #menu_pos = self.mb.FindMenu(menu)
+        if not menu_pos is None :
+            self.mb.EnableTop(menu_pos, Show)
+            self.mb.UpdateMenus()
 
 
 #--------------------------------------------------------------------
@@ -564,7 +584,7 @@ vous devez signaler le chemin de l'éxecutable de R dans les préférences."""
     def OnOpenAnalyse(self, event):
         self.AnalysePath = OnOpen(self, "Analyse")
         OpenAnalyse(self, self.AnalysePath[1][0], True)
-        self.ShowMenu(_("View"))
+        self.ShowMenu('view')
 
     def OnOpenText(self, event):
         inputname, self.input_path = OnOpen(self, "Texte")
@@ -573,8 +593,6 @@ vous devez signaler le chemin de l'éxecutable de R dans les préférences."""
             self.OpenText()
    
     def OnViewData(self, event):
-        print self.type
-        print self.DataTxt
         if self.type == "Data":
             if not self.DataPop :
                 self.Sheet.Populate(self.content)
@@ -592,15 +610,17 @@ vous devez signaler le chemin de l'éxecutable de R dans les préférences."""
         self._mgr.Update()
     
     def OnSubText(self, corpus, parametres = None):
-        busy = wx.BusyInfo(_("Please wait...").decode('utf8'), self)
-        wx.SafeYield()
+        if corpus is None :
+            corpus = self.tree.getcorpus()
         builder = SubBuilder(self, corpus, parametres)
-        del busy
         if builder.res == wx.ID_OK :
+            busy = wx.BusyInfo(_("Please wait...").decode('utf8'), self)
+            wx.SafeYield()
             corpus = builder.doanalyse()
             self.history.add(corpus.parametres)
             self.tree.OnItemAppend(corpus.parametres)
             OpenAnalyse(self, corpus.parametres)
+            del busy
             
     def OpenText(self):
         dlg = wx.ProgressDialog("Ouverture...",
@@ -618,13 +638,14 @@ vous devez signaler le chemin de l'éxecutable de R dans les préférences."""
                 self.tree.OnItemAppend(corpus.parametres)
                 OpenAnalyse(self, corpus.parametres)
             except :
+                dlg.Destroy()
                 BugReport(self)
             else :
                 count = 1
                 keepGoing = dlg.Update(count, u"Lecture du fichier")
-                self.ShowMenu(_(u"View").decode('utf8'))
-                self.ShowMenu(_(u"Text analysis").decode('utf8'))
-                self.ShowMenu(_(u"Matrix analysis").decode('utf8'), False)
+                self.ShowMenu('view')
+                self.ShowMenu('text')
+                self.ShowMenu('matrix', False)
                 self.type = "Texte"
                 self.DataTxt = False
                 self.Text = ''
@@ -653,7 +674,7 @@ Laboratoire LERASS
 REPERE
 """
         info.WebSite = ("http://www.iramuteq.org", u"Site web IRaMuTeQ")
-        dev = ConfigGlob.get('DEFAULT', 'dev').split(';')
+        dev = ConfigGlob.get('DEFAULT', 'dev').decode('utf8').split(';')
         info.Developers = dev
         info.License = u"""Iramuteq est un logiciel libre ; vous pouvez le diffuser et/ou le modifier 
 suivant les termes de la Licence Publique Générale GNU telle que publiée 
@@ -685,11 +706,11 @@ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, États-Unis."""
             if 'parametres' in dir(npage) :
                 self.tree.GiveFocus(uuid=npage.parametres['uuid'])
                 if npage.parametres.get('matrix', False) :
-                    self.ShowMenu(_(u"Text analysis").decode('utf8'), False)
-                    self.ShowMenu(_(u"Matrix analysis").decode('utf8'), True)
+                    self.ShowMenu('text', False)
+                    self.ShowMenu('matrix', True)
                 elif npage.parametres.get('corpus', False) :
-                    self.ShowMenu(_(u"Text analysis").decode('utf8'))
-                    self.ShowMenu(_(u"Matrix analysis").decode('utf8'), False)
+                    self.ShowMenu('text')
+                    self.ShowMenu('matrix', False)
 
     def OnCloseTab(self, evt):
         #log.info('Closing tab %s' % str(evt.GetEventObject()))
@@ -703,34 +724,7 @@ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, États-Unis."""
             self.history.rmtab(page.parametres)
             self.tree.CloseItem(uuid = page.parametres['uuid'])
         TabTitle = self.nb.GetPageText(self.nb.GetSelection())
-#         if self.DictTab != {} :
-#             if TabTitle in self.DictTab :
-#                 ListFile=self.DictTab[TabTitle]
-#                 if False in ListFile:
-#                     msg = u"""
-# Certains résultats ne sont pas enregistrer.
-# Voulez-vous fermer quand même ?"""
-#                     dlg = wx.MessageDialog(self, msg, "Sauvegarde",wx.YES_NO | wx.NO_DEFAULT | wx.ICON_QUESTION)
-# 
-#                     dlg.CenterOnParent()
-#                     if dlg.ShowModal() in [wx.ID_NO, wx.ID_CANCEL]:
-#                         remove = False
-#                         evt.Veto()
-#                         dlg.Destroy()
-#                     else :
-#                         for f in ListFile[1:] :
-#                             print 'remove', f
-#                             os.remove(f)
-#                             remove = True
-#                         dlg.Destroy()
-#                 elif True in ListFile :
-#                     remove = True
-#                 if remove:
-#                     del self.DictTab[TabTitle]
-#             else : 
-#                 self.LastTabClose()
-#        else :
-#            remove = True
+
         if self.nb.GetPageCount() == 1 and not notebook :
             self.LastTabClose()
     
@@ -744,40 +738,6 @@ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, États-Unis."""
             else :
                 self.ShowAPane("Intro_Text")
 
-#     def OnSaveTabAs(self, event):
-#         SelectTab = self.nb.GetSelection()
-#         TabTitle = self.nb.GetPageText(SelectTab)
-#         FileToSave = self.DictTab[TabTitle]
-#         NewListFile = []
-#         dlg = wx.FileDialog(
-#             self, message="Enregistrer sous...", defaultDir=os.getcwd(),
-#             defaultFile="resultat.html", wildcard="Tous les fichiers|*", style=wx.SAVE | wx.OVERWRITE_PROMPT
-#             )
-#         dlg.SetFilterIndex(2)
-#         dlg.CenterOnParent()
-#         
-#         if dlg.ShowModal() == wx.ID_OK:
-#             Path = dlg.GetPath()
-#             Dirname = os.path.dirname(Path)
-#             Filename = dlg.GetFilename()
-#         else :
-#             Path = False
-#         dlg.Destroy()
-#         if Path:
-#             shutil.copyfile(FileToSave[-1], Path)
-#             os.remove(FileToSave[len(FileToSave) - 1])
-#             NewListFile.append(True)
-#             NewListFile.append(Path)
-#             for f in FileToSave[1:-1] :
-#                 Fileout = os.path.join(Dirname, os.path.basename(f))
-#                 shutil.copyfile(f, Fileout)
-#                 NewListFile.append(Fileout)
-#                 os.remove(f)
-#             TabText = Filename
-#             self.DictTab[TabText] = NewListFile
-#             del self.DictTab[TabTitle]
-#             self.nb.SetPageText(SelectTab, TabText)
-
     def GetStartPosition(self):
 
         self.x = self.x + 20
@@ -810,41 +770,33 @@ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, États-Unis."""
 ################################################################
 #debut des analyses
 ################################################################
-    def analyse_matrix(self, analyse, analyse_type = '', matrix = None, dlgnb = 1):
+    def analyse_matrix(self, analyse, analyse_type = '', matrix = None, parametres = None, dlgnb = 1):
         if matrix is None :
             matrix = self.tree.getmatrix()
-        #try :
-        analyse(self, matrix, parametres = {'type' : analyse_type}, dlg = progressbar(self, dlgnb))
-        #except:
-        #    BugReport(self)           
+        if parametres is not None :
+            parametres['type'] = analyse_type
+        else :
+            parametres = {'type' : analyse_type}
+        try :
+        #print 'plus de bug@@@@@@@@@@@@@@@@@@@@@@'
+            analyse(self, matrix, parametres = parametres, dlg = dlgnb)
+        except:
+            BugReport(self)           
 
     def OnFreq(self, event, matrix = None):
         self.analyse_matrix(Frequences, analyse_type = 'freq', matrix = matrix, dlgnb = 3)
-        #if matrix is None :
-        #    matrix = self.tree.getmatrix()
-        #try:
-        #    Frequences(self, matrix, parametres = {'type' : 'freq'}, dlg = progressbar(self, 3)) 
-        #except:
-        #    BugReport(self)
 
     def OnChi2(self, event, matrix = None):
-        #try:
         self.analyse_matrix(ChiSquare, matrix = matrix, analyse_type = 'chi2', dlgnb = 3) 
-        #except:
-        #    BugReport(self)
 
     def OnSimiTab(self, event, matrix = None):
-        if matrix is None :
-            matrix = self.tree.getmatrix()
-        try:
-            DoSimi(self, matrix, parametres = {'type' : 'simimatrix'}, dlg = progressbar(self, 3)) 
-        except:
-            BugReport(self)
+        self.analyse_matrix(DoSimi, matrix = matrix, analyse_type = 'simimatrix', dlgnb = 5)
 
     def OnCHDReinert(self, event, matrix = None):
-        if matrix is None :
-            matrix = self.tree.getmatrix()
-        AnalyseQuest(self, matrix, parametres = {'type' : 'reinertmatrix'}, dlg = progressbar(self, 3))
+        #if matrix is None :
+        #    matrix = self.tree.getmatrix()
+        #AnalyseQuest(self, matrix, parametres = {'type' : 'reinertmatrix'}, dlg = 3)
+        self.analyse_matrix(AnalyseQuest, matrix = matrix, analyse_type = 'reinertmatrix', dlgnb = 5)
             
     def OnStudent(self, event):
         try:
@@ -876,8 +828,14 @@ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, États-Unis."""
 #         except:
 #             BugReport(self)
     
-    def OnProto(self, evt) :
-        Prototypical(self, {'type' : 'proto'})
+    def OnProto(self, evt, matrix = None) :
+        self.analyse_matrix(Prototypical, matrix = matrix, analyse_type = 'proto', dlgnb = 3) 
+        #Prototypical(self, {'type' : 'proto'})
+    
+    def OnSplitVar(self, evt, matrix = None):
+        self.analyse_matrix(SplitMatrixFromVar, matrix = matrix, analyse_type = 'splitvar', parametres = {'pathout': matrix.pathout.dirout}, dlgnb = 3)
+        matrix = self.tree.getmatrix()
+        
 
     def OnSimiTxt(self, evt, corpus = None) :
         #    print 'PLUS DE BUG SUR SIMITXT'
@@ -885,7 +843,7 @@ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, États-Unis."""
             #self.Text = SimiTxt(self)
             if corpus is None :
                 corpus = self.tree.getcorpus()            
-            self.Text = SimiTxt(self, corpus, parametres = {'type': 'simitxt'}, dlg = progressbar(self, 3))
+            self.Text = SimiTxt(self, corpus, parametres = {'type': 'simitxt'}, dlg = 3)
             if self.Text.val == wx.ID_OK :
                 PlaySound(self)
         except :
@@ -896,14 +854,14 @@ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, États-Unis."""
         try :
             if corpus is None :
                 corpus = self.tree.getcorpus()            
-            self.Text = WordCloud(self, corpus, parametres = {'type' : 'wordcloud'}, dlg = progressbar(self, 3))
+            self.Text = WordCloud(self, corpus, parametres = {'type' : 'wordcloud'}, dlg = 3)
             if self.Text.val == wx.ID_OK :
                 PlaySound(self)
         except :
             BugReport(self)
 
     def OnClusterCloud(self, corpus, parametres = None) :
-        self.Text = ClusterCloud(self, corpus, parametres = parametres, dlg = progressbar(self, 3))
+        self.Text = ClusterCloud(self, corpus, parametres = parametres, dlg = 3)
 
     def OnAFCM(self, event):
         try:
@@ -916,7 +874,7 @@ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, États-Unis."""
         try:
             if corpus is None :
                 corpus = self.tree.getcorpus()
-            self.Text = Stat(self, corpus, parametres = {'type': 'stat'}, dlg = progressbar(self, 7))
+            self.Text = Stat(self, corpus, parametres = {'type': 'stat'}, dlg = 7)
             
             if self.Text.val == wx.ID_OK :
                 PlaySound(self)
@@ -929,7 +887,7 @@ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, États-Unis."""
             #print('ATTENTION : PLUS DE BUG SUR LEXICO')
             if corpus is None :
                 corpus = self.tree.getcorpus()
-            self.Text = Lexico(self, corpus, parametres = {'type' : 'spec'}, dlg = progressbar(self, 3))
+            self.Text = Lexico(self, corpus, parametres = {'type' : 'spec'}, dlg = 3)
             if self.Text.val == wx.ID_OK :
                 PlaySound(self)
         except:
@@ -981,7 +939,7 @@ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, États-Unis."""
             #RunAnalyse(self, corpus, Alceste, OptAlceste)
             if corpus is None :
                 corpus = self.tree.getcorpus()            
-            self.Text = Reinert(self, corpus, parametres = {'type': 'alceste'}, dlg = progressbar(self,6))
+            self.Text = Reinert(self, corpus, parametres = {'type': 'alceste'}, dlg = 6)
             if self.Text.val == wx.ID_OK:
                 PlaySound(self)
         except:
@@ -991,7 +949,7 @@ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, États-Unis."""
         try:
             if corpus is None :
                 corpus = self.tree.getcorpus()
-            self.Text = AnalysePam(self, corpus, parametres = {'type' : 'pamtxt'}, dlg = progressbar(self,6))
+            self.Text = AnalysePam(self, corpus, parametres = {'type' : 'pamtxt'}, dlg = 6)
             if self.Text.val == wx.ID_OK:
                 PlaySound(self)
         except:
@@ -1045,9 +1003,14 @@ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, États-Unis."""
         if truepath :
             if os.path.splitext(self.filename)[1] in ['.csv', '.xls', '.ods']:
                 self.tableau = Tableau(self, self.filename)
-                get_table_param(self, self.filename)
-                self.tableau.make_content()
-                self.tableau.show_tab()
+                val = get_table_param(self, self.filename)
+                if val == wx.ID_OK :
+                    self.tableau.make_content()
+                    OpenAnalyse(self, self.tableau.parametres)
+                    self.tree.OnItemAppend(self.tableau.parametres)
+                #get_table_param(self, self.filename)
+                #self.tableau.make_content()
+                #self.tableau.show_tab()
                 #open_data(self, self.filename)
             elif os.path.splitext(self.filename)[1] == '.txt':
                 self.OpenText()