...
authorPierre <ratinaud@univ-tlse2.fr>
Wed, 10 Oct 2012 12:27:43 +0000 (14:27 +0200)
committerPierre <ratinaud@univ-tlse2.fr>
Wed, 10 Oct 2012 12:27:43 +0000 (14:27 +0200)
functions.py
guifunct.py
layout.py
openanalyse.py
tree.py

index 2909a44..b3fff13 100644 (file)
@@ -76,11 +76,12 @@ class History :
 
     def add(self, analyse) :
         if 'corpus' in analyse :
 
     def add(self, analyse) :
         if 'corpus' in analyse :
-            if analyse['corpus'] in self.corpora :
-                if 'analyses' in self.history[analyse['corpus']] :
-                    self.history[analyse['corpus']]['analyses'].append(analyse)
+            acorpus_uuid =  analyse['corpus']
+            if acorpus_uuid in self.corpora :
+                if 'analyses' in self.history[acorpus_uuid] :
+                    self.history[acorpus_uuid]['analyses'].append(analyse)
                 else :
                 else :
-                    self.history[analyse['corpus']]['analyses'] = [analyse]
+                    self.history[acorpus_uuid]['analyses'] = [analyse]
                 self.analyses[analyse['uuid']] = analyse
             else :
                 self.analyses[analyse['uuid']] = analyse
                 self.analyses[analyse['uuid']] = analyse
             else :
                 self.analyses[analyse['uuid']] = analyse
@@ -107,6 +108,9 @@ class History :
 
     def rmtab(self, analyse) :
         del self.opened[analyse['uuid']]
 
     def rmtab(self, analyse) :
         del self.opened[analyse['uuid']]
+    
+    def __str__(self) :
+        return str(self.history)
 
 class DoConf :
     def __init__(self, configfile=None, diff = None, parametres = None) :
 
 class DoConf :
     def __init__(self, configfile=None, diff = None, parametres = None) :
@@ -158,7 +162,6 @@ class DoConf :
                     self.conf.set(section, option, `parametres[i][option]`)
         if outfile is None :
             outfile = self.configfile
                     self.conf.set(section, option, `parametres[i][option]`)
         if outfile is None :
             outfile = self.configfile
-        print outfile
         with codecs.open(outfile, 'w', 'utf8') as f :
             self.conf.write(f)
 
         with codecs.open(outfile, 'w', 'utf8') as f :
             self.conf.write(f)
 
index bf8614b..7b1f2fe 100644 (file)
@@ -17,7 +17,7 @@ def OnOpen(self, type):
         elif type == "Texte":
             wildcard = "Fichier texte|*.txt|Tous les fichiers|*"
         elif type == "Analyse":
         elif type == "Texte":
             wildcard = "Fichier texte|*.txt|Tous les fichiers|*"
         elif type == "Analyse":
-            wildcard = "Fichier analyse|*.ira"
+            wildcard = "Fichier analyse/Corpus|*.ira;*.cira"
         defaultDir = self.PathPath.get('PATHS', 'lastpath')
         if defaultDir.strip() == '':
             defaultDir = self.UserConfigPath.replace('.iramuteq','')
         defaultDir = self.PathPath.get('PATHS', 'lastpath')
         if defaultDir.strip() == '':
             defaultDir = self.UserConfigPath.replace('.iramuteq','')
index 361c1b0..91d5f83 100644 (file)
--- a/layout.py
+++ b/layout.py
@@ -612,7 +612,7 @@ class dolexlayout :
 
 class StatLayout:
     def __init__(self, ira, corpus, parametres):
 
 class StatLayout:
     def __init__(self, ira, corpus, parametres):
-        self.pathout = PathOut(dirout = os.path.dirname(parametres['pathout']))
+        self.pathout = PathOut(dirout = parametres['pathout'])
         self.corpus = corpus
         self.ira = ira
         self.read_result()
         self.corpus = corpus
         self.ira = ira
         self.read_result()
index 2678a3a..3787fe6 100644 (file)
@@ -26,26 +26,67 @@ class OpenAnalyse():
         self.parent = parent
         if isinstance(parametres, dict) :
             self.conf = DoConf(parametres['ira']).getoptions()
         self.parent = parent
         if isinstance(parametres, dict) :
             self.conf = DoConf(parametres['ira']).getoptions()
+            self.path = parametres['ira']
         else :
             self.conf = DoConf(parametres).getoptions()
         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)
             if self.conf.get('lem',1) :
                corpus.make_lems(True)
             else :
                corpus.make_lems(False)
+            self.doopen(corpus)
         else :
             corpus = None
         else :
             corpus = None
-        self.doopen(corpus)
         self.parent.history.addtab(self.conf)
         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')
+        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' :
     def doopen(self, corpus) :
         print self.conf
         if self.conf['type'] == 'corpus' :
diff --git a/tree.py b/tree.py
index bde076a..d856799 100644 (file)
--- a/tree.py
+++ b/tree.py
@@ -67,7 +67,7 @@ class LeftTree(CT.CustomTreeCtrl):
         #textctrl.Bind(wx.EVT_CHAR, self.OnTextCtrl)
         #combobox.Bind(wx.EVT_COMBOBOX, self.OnComboBox)
         #lenArtIds = len(ArtIDs) - 2
         #textctrl.Bind(wx.EVT_CHAR, self.OnTextCtrl)
         #combobox.Bind(wx.EVT_COMBOBOX, self.OnComboBox)
         #lenArtIds = len(ArtIDs) - 2
-        for x in range(len(self.h)) :
+        for x in range(len(self.history.corpora)) :
             if 'corpus_name' in self.h[self.history.order[x]] :
                 key = 'corpus_name'
             else :
             if 'corpus_name' in self.h[self.history.order[x]] :
                 key = 'corpus_name'
             else :
@@ -524,11 +524,12 @@ class LeftTree(CT.CustomTreeCtrl):
 
         dlg.Destroy()
 
 
         dlg.Destroy()
 
-    def AddAnalyse(self, parametres, itemParent = None) :
+    def AddAnalyse(self, parametres, itemParent = None, bold = True) :
         uuid = parametres['corpus']
         if itemParent is None :
             itemParent = self.root
         child, cookie = self.GetFirstChild(itemParent)
         uuid = parametres['corpus']
         if itemParent is None :
             itemParent = self.root
         child, cookie = self.GetFirstChild(itemParent)
+        corpus = None
         while child :
             pydata = self.GetPyData(child)
             if pydata['uuid'] == uuid :
         while child :
             pydata = self.GetPyData(child)
             if pydata['uuid'] == uuid :
@@ -536,11 +537,15 @@ class LeftTree(CT.CustomTreeCtrl):
                 break
             self.GiveFocus(child, uuid)
             child, cookie = self.GetNextChild(itemParent, cookie)
                 break
             self.GiveFocus(child, uuid)
             child, cookie = self.GetNextChild(itemParent, cookie)
-        item = self.AppendItem(corpus, parametres['name'])
+        #item = self.AppendItem(child, parametres['name'])
+        if corpus is not None : 
+            item = self.AppendItem(corpus, parametres['name'])
+        else :
+            item = self.AppendItem(self.root, parametres['name'])
         self.SetPyData(item, parametres)
         self.SetItemImage(item, 24, CT.TreeItemIcon_Normal)
         self.SetItemImage(item, 13, CT.TreeItemIcon_Expanded)
         self.SetPyData(item, parametres)
         self.SetItemImage(item, 24, CT.TreeItemIcon_Normal)
         self.SetItemImage(item, 13, CT.TreeItemIcon_Expanded)
-        self.SetItemBold(item, True)
+        self.SetItemBold(item, bold)
         
     def OnItemAppend(self, item):
         child = self.AppendItem(self.root, item['corpus_name'])
         
     def OnItemAppend(self, item):
         child = self.AppendItem(self.root, item['corpus_name'])