...+++...
[iramuteq] / iramuteq.py
index 479278d..ed574e4 100644 (file)
@@ -28,8 +28,10 @@ import logging
 #------------------------------------
 import wx
 #import wx.aui
-#import wx.lib.agw.aui as aui
-import agw.aui as aui
+if wx.__version__ >= '2.11' :
+    import wx.lib.agw.aui as aui
+else :
+    import aui
 import wx.html
 import wx.grid
 import wx.lib.hyperlink as hl
@@ -51,19 +53,20 @@ from tabverges import Verges
 #from textafcuci import AfcUci
 #from textchdalc import AnalyseAlceste
 from analysetxt import Alceste
-from textdist import PamTxt
+from textdist import AnalysePam
 from textstat import Stat
 from textaslexico import Lexico
 from textsimi import SimiTxt, SimiFromCluster
 from textwordcloud import WordCloud
 from profile_segment import ProfileSegment
-from textcheckcorpus import checkcorpus
+#from textcheckcorpus import checkcorpus
 from openanalyse import OpenAnalyse
-from corpusNG import BuildFromAlceste, Builder
+from corpus import BuildFromAlceste, Builder
 from sheet import MySheet
 from checkinstall import CreateIraDirectory, CheckRPath, FindRPAthWin32, FindRPathNix, CheckRPackages, IsNew, UpgradeConf, CopyConf, RLibsAreInstalled
 from chemins import ConstructRscriptsPath, ConstructConfigPath, ConstructDicoPath, ConstructGlobalPath, PathOut
 from parse_factiva_xml import ImportFactiva
+from tools import Extract
 
 from tree import LeftTree
 ##########################################################
@@ -125,16 +128,25 @@ ch = logging.StreamHandler()
 formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
 ch.setFormatter(formatter)
 fh.setFormatter(formatter)
-log.addHandler(ch)
 log.addHandler(fh)
+if sys.platform != 'win32' or sys.platform != 'darwin':
+    log.addHandler(ch)
 log.setLevel(logging.INFO)
 
 
 class writer(object):
     def write(self, data):
         if data.strip() != '' :
-            log.info('BUG : %s' % data)
+            log.info('ERROR : %s' % data)
+
+class printer(object) :
+    def write(self, data) :
+        if data.strip() != '' :
+            log.info('Print : %s' % data)
+
 sys.stderr = writer()
+sys.stdout = printer()
+
 ConfigPath = ConstructConfigPath(UserConfigPath)
 #####################################################################
 
@@ -196,13 +208,20 @@ class IraFrame(wx.Frame):
         menuFactiva.AppendItem(fact_from_xml)
         menuFactiva.AppendItem(fact_from_mail)
         menuFactiva.AppendItem(fact_from_txt)
-
         file_menu.AppendMenu(-1, _(u"Import from factiva"), menuFactiva)
-        #item1.Enable(True)
-       
+
+        menuTools = wx.Menu()
+        splitvar = wx.MenuItem(menuTools, wx.ID_ANY, _(u"Split from variable"))
+        extractmod = wx.MenuItem(menuTools, wx.ID_ANY, _(u"Extract mods"))
+        menuTools.AppendItem(splitvar)
+        menuTools.AppendItem(extractmod)
+        self.ID_splitvar = splitvar.GetId()
+        self.ID_extractmod = extractmod.GetId()
+        file_menu.AppendMenu(-1, _(u"Tools"), menuTools)
+
+               
         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"))
@@ -221,7 +240,7 @@ class IraFrame(wx.Frame):
         analyse_menu.Append(ID_Chi2, u"Chi2")
         #analyse_menu.Append(ID_Student, u"t de Student")
         menu_classif = wx.Menu()
-        menu_classif.Append(ID_CHDAlceste, u"Méthode Alceste")
+        menu_classif.Append(ID_CHDAlceste, u"Méthode GNEPA")
         menu_classif.Append(ID_CHDSIM, u"Par matrice des distances")
         analyse_menu.AppendMenu(-1, u"Classification", menu_classif)
         analyse_menu.Append(ID_AFCM, u"AFCM")
@@ -230,12 +249,12 @@ class IraFrame(wx.Frame):
         analyse_menu.Append(ID_RCODE, u"Code R...")
 
         text_menu = wx.Menu()
-        text_menu.Append(ID_CHECKCORPUS, u"Vérifier le corpus")
+        #text_menu.Append(ID_CHECKCORPUS, u"Vérifier le corpus")
         text_menu.Append(ID_TEXTSTAT, u"Statistiques textuelles")
         text_menu.Append(ID_ASLEX, u"Spécificités et AFC")
         #text_menu.Append(ID_TEXTAFCM, u"AFC sur UCI / Vocabulaire")
         menu_classiftxt = wx.Menu()
-        menu_classiftxt.Append(ID_TEXTALCESTE, u"Méthode Alceste")
+        menu_classiftxt.Append(ID_TEXTALCESTE, u"Méthode GNEPA")
         menu_classiftxt.Append(ID_TEXTPAM, u"Par matrice des distances")
         text_menu.AppendMenu(-1, u"Classification", menu_classiftxt)
         text_menu.Append(ID_SimiTxt, u'Analyse de similitude') 
@@ -343,6 +362,8 @@ class IraFrame(wx.Frame):
         self.Bind(wx.EVT_MENU, self.import_factiva_xml, fact_from_xml)
         self.Bind(wx.EVT_MENU, self.import_factiva_mail, fact_from_mail)
         self.Bind(wx.EVT_MENU, self.import_factiva_txt, fact_from_txt)
+        self.Bind(wx.EVT_MENU, self.ExtractTools, splitvar)
+        self.Bind(wx.EVT_MENU, self.ExtractTools, extractmod)
         self.Bind(wx.EVT_MENU, self.OnFreq, id=ID_Freq)
         self.Bind(wx.EVT_MENU, self.OnChi2, id=ID_Chi2)
         self.Bind(wx.EVT_MENU, self.OnStudent, id=ID_Student)
@@ -350,7 +371,7 @@ class IraFrame(wx.Frame):
         self.Bind(wx.EVT_MENU, self.OnCHDAlceste, id=ID_CHDAlceste)
         self.Bind(wx.EVT_MENU, self.OnAFCM, id=ID_AFCM)
         self.Bind(wx.EVT_MENU, self.OnRCode, id=ID_RCODE)
-        self.Bind(wx.EVT_MENU, self.OnCheckcorpus, id = ID_CHECKCORPUS)
+        #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)
         self.Bind(wx.EVT_MENU, self.OnTextAfcm, id=ID_TEXTAFCM)
@@ -401,6 +422,22 @@ class IraFrame(wx.Frame):
         if self.SysEncoding == 'mac-roman' : self.SysEncoding = 'MacRoman'
         self.type = ''
 
+##############################################################@
+        self.DisEnSaveTabAs(False)
+        self.ShowMenu(_("View"), False)
+        self.ShowMenu(_("Spreadsheet analysis"), False)
+        self.ShowMenu(_("Text analysis"), False)
+   
+        self._mgr.Update()
+
+        self.DataPop = False
+        self.DataTxt = False
+        self.Text = ''
+
+        self.lexique = None
+        self.corpus = None
+
+    def finish_init(self) :
         try :
             self.pref.read(self.ConfigPath['preferences'])
             if IsNew(self) :
@@ -413,6 +450,9 @@ class IraFrame(wx.Frame):
             UpgradeConf(self)
             self.pref.read(self.ConfigPath['preferences'])
             New = True
+        self.sound = self.pref.getboolean('iramuteq', 'sound')
+        self.check_update = self.pref.getboolean('iramuteq', 'checkupdate')
+        self.version = ConfigGlob.get('DEFAULT', 'version')
         #configuration des chemins de R
         self.PathPath = ConfigParser()
         self.PathPath.read(ConfigPath['path'])
@@ -446,21 +486,7 @@ vous devez signaler le chemin de l'éxecutable de R dans les préférences."""
             if dlg.ShowModal() in [wx.ID_NO, wx.ID_CANCEL]:
                  evt.Veto()
             dlg.Destroy()
-        self.DataPop = False
-        self.DataTxt = False
-        self.Text = ''
-        self.sound = self.pref.getboolean('iramuteq', 'sound')
-        self.check_update = self.pref.getboolean('iramuteq', 'checkupdate')
-        self.version = ConfigGlob.get('DEFAULT', 'version')
-        self.lexique = None
-        self.corpus = None
-##############################################################@
-        self.DisEnSaveTabAs(False)
-        self.ShowMenu(_("View"), False)
-        self.ShowMenu(_("Spreadsheet analysis"), False)
-        self.ShowMenu(_("Text analysis"), False)
-   
-        self._mgr.Update()
+
 
     def OnVerif(self, evt) :
         pack = CheckRPackages(self)
@@ -475,7 +501,9 @@ vous devez signaler le chemin de l'éxecutable de R dans les préférences."""
     #Disable SaveTabAs
         file_menu = self.mb.GetMenu(0)
         items = file_menu.GetMenuItems()
-        items[4].Enable(DISEN)
+        for item in items :
+            if item.GetId() == ID_SaveTab :
+                item.Enable(DISEN)
     
     def ShowMenu(self, menu, Show=True):
         menu_pos = self.mb.FindMenu(menu)
@@ -859,11 +887,11 @@ Voulez-vous fermer quand même ?"""
         except:
             BugReport(self)
 
-    def OnCheckcorpus(self, evt):
-        try :
-            checkcorpus(self)
-        except :
-            BugReport(self)
+#    def OnCheckcorpus(self, evt):
+#        try :
+#            checkcorpus(self)
+#        except :
+#            BugReport(self)
 
     def OnTextStat(self, event, corpus = None):
             print 'PAS DE BUG SUR TEXT STAT'
@@ -914,6 +942,13 @@ Voulez-vous fermer quand même ?"""
         except :
             BugReport(self)
 
+    def ExtractTools(self, evt) :
+        ID = evt.GetId()
+        if ID == self.ID_splitvar :
+            Extract(self, 'splitvar')
+        else :
+            Extract(self, 'mods')
+
     def OnTextAlceste(self, event, corpus = None):
         try:
             #print('ATTENTION : PLUS DE BUG SUR ALCESTE')
@@ -926,23 +961,26 @@ Voulez-vous fermer quand même ?"""
         except:
             BugReport(self)
 
-    def OnPamSimple(self, event):
+    def OnPamSimple(self, event, corpus = None):
         try:
-            self.Text = PamTxt(self)
+            if corpus is None :
+                corpus = self.tree.getcorpus()
+            self.Text = AnalysePam(self, corpus, parametres = {'type' : 'pamtxt'}, dlg = progressbar(self,6))
             if self.Text.val == wx.ID_OK:
                 PlaySound(self)
         except:
             BugReport(self)
     
     def OnSimi(self,evt):
-        try :
+        #try :
             #print 'ATTENTION !!!! VERGES'
+            print 'PLUS DE BUG SUR SIMI'
             self.res = DoSimi(self, param = None)
             #self.res = Verges(self)
             if self.res.val == wx.ID_OK :
                  PlaySound(self)
-        except :
-            BugReport(self)
+        #except :
+        #    BugReport(self)
 #################################################################
 
     def OnHelp(self, event):
@@ -1118,6 +1156,7 @@ class MySplashScreen(wx.SplashScreen):
     def ShowMain(self):
         frame = IraFrame(None, -1, "IRaMuTeQ " + ConfigGlob.get('DEFAULT', 'version'), size=(1100, 800))
         frame.Show()
+        frame.finish_init()
         frame.Upgrade()
         frame.OnOpenFromCmdl()
 #        if self.fc.IsRunning():