AFC
[iramuteq] / openanalyse.py
index 1cf1a03..cc50ebe 100644 (file)
@@ -5,7 +5,7 @@
 #Lisense: GNU/GPL
 
 from chemins import ChdTxtPathOut, StatTxtPathOut, construct_simipath
-from layout import OpenCHDS, dolexlayout, StatLayout, WordCloudLayout, OpenCorpus
+from layout import OpenCHDS, dolexlayout, StatLayout, WordCloudLayout, OpenCorpus, SimiLayout
 #from corpus import Corpus
 from corpusNG import Corpus, copycorpus
 from tableau import Tableau
@@ -26,26 +26,68 @@ class OpenAnalyse():
         self.parent = parent
         if isinstance(parametres, dict) :
             self.conf = DoConf(parametres['ira']).getoptions()
+            self.path = parametres['ira']
         else :
             self.conf = DoConf(parametres).getoptions()
+            self.path = parametres
+            self.conf = self.redopath(self.conf, parametres)
         
-        if self.conf.get('corpus', '!!') in self.parent.history.history :
-            if self.conf.get('corpus', '!!') in self.parent.history.openedcorpus :
-                log.info('corpus is already opened')
-                corpus = copycorpus(self.parent.history.openedcorpus[self.conf['corpus']]) 
-            else :
-                if os.path.exists(self.parent.history.history[self.conf['corpus']]['ira']) :
-                    corpus = Corpus(self, parametres = DoConf(self.parent.history.history[self.conf['corpus']]['ira']).getoptions('corpus'), read = self.parent.history.history[self.conf['corpus']]['ira'])
-                self.parent.history.openedcorpus[self.conf['corpus']] = corpus
+        if self.conf['type'] == 'corpus' :
+            corpus = self.opencorpus()
+        elif self.conf['corpus'] in self.parent.history.history :
+            corpus = self.openanalyse()
             if self.conf.get('lem',1) :
                corpus.make_lems(True)
             else :
                corpus.make_lems(False)
+            self.doopen(corpus)
         else :
             corpus = None
-        self.doopen(corpus)
         self.parent.history.addtab(self.conf)
-        
+    
+    def redopath(self, conf, path) :
+        #if not os.path.exists(conf['ira']) :
+        conf['ira'] = os.path.realpath(path)
+        conf['pathout'] = os.path.dirname(os.path.realpath(path))
+        DoConf(conf['ira']).makeoptions([conf['type']], [conf])
+        return conf
+    
+    def opencorpus(self) :
+        if self.conf['uuid'] not in self.parent.history.history :
+            self.parent.history.add(self.conf) 
+            log.info('add to history')
+            self.parent.tree.OnItemAppend(self.conf)
+        if self.conf['uuid'] in self.parent.history.openedcorpus :
+            log.info('corpus is already opened')
+            self.doopen(self.parent.history.openedcorpus[self.conf['uuid']])
+        else :
+            corpus = Corpus(self, parametres = self.conf, read = self.parent.history.history[self.conf['uuid']]['ira'])
+            self.parent.history.openedcorpus[self.conf['uuid']] = corpus
+            self.opencorpus_analyses()
+            self.doopen(corpus)
+
+    def opencorpus_analyses(self) :
+        basepath = self.conf['pathout']
+        for root, subfolders, files in os.walk(basepath) :
+            for folder in subfolders :
+                if os.path.exists(os.path.join(folder, 'Analyse.ira')) :
+                    analyse_conf = DoConf(os.path.join(folder, 'Analyse.ira')).getoptions()
+                    analyse_conf = self.redopath(analyse_conf, os.path.join(folder, 'Analyse.ira'))
+                    if analyse_conf['corpus'] == self.conf['uuid'] :
+                        self.parent.history.add(analyse_conf)
+                        self.parent.tree.AddAnalyse(analyse_conf, bold = False)
+
+            #self.parent.tree.OnItemAppend(self.conf)
+    def openanalyse(self) :
+        if self.conf['corpus'] in self.parent.history.openedcorpus :
+            log.info('corpus is already opened')
+            corpus = self.parent.history.openedcorpus[self.conf['corpus']]
+        else :
+            if os.path.exists(self.parent.history.history[self.conf['corpus']]['ira']) :
+                corpus = Corpus(self, parametres = DoConf(self.parent.history.history[self.conf['corpus']]['ira']).getoptions('corpus'), read = self.parent.history.history[self.conf['corpus']]['ira'])
+                self.parent.history.openedcorpus[self.conf['corpus']] = corpus
+        return corpus
+
     def doopen(self, corpus) :
         print self.conf
         if self.conf['type'] == 'corpus' :
@@ -61,18 +103,21 @@ class OpenAnalyse():
             self.parent.ShowMenu(_("Text analysis"))
             OpenCHDS(self.parent,  corpus, self.conf, Alceste = True)
         elif self.conf['type'] == 'simitxt' :
-            self.tableau = Tableau(self.parent, self.conf['ira'])
-            self.DictPathOut=construct_simipath(self.conf['pathout'])
-            self.tableau.dictpathout = self.DictPathOut
-            self.tableau.read_tableau(self.tableau.dictpathout['db'])
-            if self.tableau.parametre.get('corpus', False) :
-                self.corpus=corpus
+            self.parent.ShowMenu(_("Text analysis"))
+            SimiLayout(self.parent, corpus, self.conf)
+        elif self.conf['type'] == 'wordcloud' :
+            self.parent.ShowMenu(_("Text analysis"))
+            WordCloudLayout(self.parent, corpus, self.conf)
+            #self.tableau = Tableau(self.parent, self.conf['ira'])
+            #self.DictPathOut=construct_simipath(self.conf['pathout'])
+            #self.tableau.dictpathout = self.DictPathOut
+            #self.tableau.read_tableau(self.tableau.dictpathout['db'])
+            #if self.tableau.parametre.get('corpus', False) :
+            #    self.corpus=corpus
                 #self.corpus.read_corpus_from_shelves(self.DictPathOut['corpus'])
-                self.corpus.parametres['openpath'] = self.conf['pathout']
-                self.parent.ShowMenu(_("Text analysis"))
-            DoSimi(self.parent, self.conf, isopen = True, filename = self.conf['ira'], gparent = self, openfromprof=False) 
+            #    self.corpus.parametres['openpath'] = self.conf['pathout']
+            #DoSimi(self.parent, self.conf, isopen = True, filename = self.conf['ira'], gparent = self, openfromprof=False) 
             
-            print 'simi'
 #        try :
 #            #if self.conf['type'] in ['analyse','lexico','stat','wordcloud'] :
 #            #    self.corpus = Corpus(parent)