...
[iramuteq] / iramuteq.py
index 01cbcb6..91cf8f0 100644 (file)
@@ -13,7 +13,6 @@ parser.add_option("-f", "--file", dest="filename",
 
 #print args
 #print options
-
 import sys
 reload(sys)
 import locale
@@ -34,7 +33,6 @@ import agw.aui as aui
 import wx.html
 import wx.grid
 import wx.lib.hyperlink as hl
-#from wx.lib.wordwrap import wordwrap
 #------------------------------------
 from functions import BugReport, PlaySound, ReadLexique, History, DoConf, ReadDicoAsDico, progressbar
 from checkversion import NewVersion
@@ -104,7 +102,6 @@ if sys.platform == 'darwin' :
 else :
     sys.setdefaultencoding(locale.getpreferredencoding())
 #chemin de l'application
-
 AppliPath = os.path.abspath(os.path.dirname(os.path.realpath(sys.argv[0])))
 #chemin des images
 ImagePath = os.path.join(AppliPath, 'images')
@@ -118,27 +115,18 @@ if os.getenv('HOME') != None:
 else:
     user_home = os.getenv('HOMEPATH')
 UserConfigPath = os.path.abspath(os.path.join(user_home, '.iramuteq'))
-#Si pas de fichiers de config utilisateur, on crée le repertoire
+#Si pas de fichiers de config utilisateur, on cree le repertoire
 CreateIraDirectory(UserConfigPath, AppliPath)
 #fichiers log pour windows (py2exe)
-print 'PLUS DE LOG !!!!!!!!!!'
-print 'LOGGING TEST'
 log = logging.getLogger('iramuteq')
 fh = logging.FileHandler(os.path.join(UserConfigPath,'stdout.log'))
 ch = logging.StreamHandler()
-formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
+formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
 ch.setFormatter(formatter)
 fh.setFormatter(formatter)
 log.addHandler(ch)
 log.addHandler(fh)
 log.setLevel(logging.INFO)
-#debug = False
-#if not debug :
-#    if sys.platform == 'win32' or sys.platform == 'darwin':
-#        sys.stdout = open(os.path.join(UserConfigPath,'stdout.log'), 'w')
-#        sys.stderr = open(os.path.join(UserConfigPath,'stderr.log'), 'w')
-#chemin des fichiers de configuration utilisateur
-#print sys.argv[0]
 ConfigPath = ConstructConfigPath(UserConfigPath)
 #####################################################################
 
@@ -177,37 +165,37 @@ class IraFrame(wx.Frame):
         self.mb = wx.MenuBar()
 
         file_menu = wx.Menu()
-        item = wx.MenuItem(file_menu, ID_OpenData, _(u"Open a questionnaire"), _(u"Open a questionnaire"))
+        item = wx.MenuItem(file_menu, ID_OpenData, _(u"Open a matrix"), _(u"Open a matrix"))
         item.SetBitmap(wx.ArtProvider_GetBitmap(wx.ART_FILE_OPEN))
         file_menu.AppendItem(item)
         
-        item = wx.MenuItem(file_menu, ID_OpenText, u"Ouvrir texte", u"Ouvrir un corpus texte")
+        item = wx.MenuItem(file_menu, ID_OpenText, _(u"Open a text corpora"), _(u"Open a text corpora"))
         item.SetBitmap(wx.ArtProvider_GetBitmap(wx.ART_FILE_OPEN))
         file_menu.AppendItem(item)
         
-        item = wx.MenuItem(file_menu, ID_OnOpenAnalyse, u"Ouvrir une Analyse", "Ouvrir une Analyse")
+        item = wx.MenuItem(file_menu, ID_OnOpenAnalyse, _(u"Open an analysis"), _("Open an analysis"))
         item.SetBitmap(wx.ArtProvider_GetBitmap(wx.ART_FILE_OPEN))
         file_menu.AppendItem(item)
 
-        item1 = wx.MenuItem(file_menu, ID_Import, u"Importer un corpus factiva...", "Importer un corpus factiva...")
+        item1 = wx.MenuItem(file_menu, ID_Import, _(u"Import a factiva corpora..."), _("Import a factiva corpora..."))
         item1.SetBitmap(wx.ArtProvider_GetBitmap(wx.ART_TIP))
         file_menu.AppendItem(item1)
         #item1.Enable(True)
        
-        item = wx.MenuItem(file_menu, ID_SaveTab, u"Enregistrer l\'onglet sous...", u"Enregistrer l\'onglet sous ...")
+        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")
+        file_menu.Append(wx.ID_EXIT, _(u"Exit"))
         
         edit_menu = wx.Menu()
-        edit_menu.Append(wx.ID_PREFERENCES, '', u'Préférences')
+        edit_menu.Append(wx.ID_PREFERENCES, '', _(u'Preferences'))
         
         view_menu = wx.Menu()
-        view_menu.Append(ID_ACCEUIL, u"Page d'accueil")
-        view_menu.Append(ID_VIEWDATA, u"Afficher les données")
-        view_menu.Append(ID_RESULT, u'Afficher les résultats')
+        view_menu.Append(ID_ACCEUIL, _(u"Home page"))
+        view_menu.Append(ID_VIEWDATA, _(u"Show data"))
+        view_menu.Append(ID_RESULT, _(u'Show results'))
         #view_menu.AppendSeparator()
 
         analyse_menu = wx.Menu()
@@ -281,9 +269,9 @@ class IraFrame(wx.Frame):
         #                  CenterPane())
         self._mgr.AddPane(IntroPanel(self), aui.AuiPaneInfo().Name("Intro_Text").
                           CenterPane())
-        if not os.path.exists(os.path.join(UserConfigPath, 'history.db')) :
-            with open(os.path.join(UserConfigPath, 'history.db'), 'w') as f :
-                f.write('')
+        #if not os.path.exists(os.path.join(UserConfigPath, 'history.db')) :
+        #    with open(os.path.join(UserConfigPath, 'history.db'), 'w') as f :
+        #        f.write('')
         self.history = History(os.path.join(UserConfigPath, 'history.db'))
         self.tree = LeftTree(self)
         self._mgr.AddPane(self.tree, aui.AuiPaneInfo().Name("lefttree").Caption("Navigateur").
@@ -307,7 +295,6 @@ class IraFrame(wx.Frame):
         self.Sheet = MySheet(self)
         #self._mgr.AddPane(self.Sheet, wx.aui.AuiPaneInfo().Name("Data").CenterPane())
         self._mgr.AddPane(self.Sheet, aui.AuiPaneInfo().Name("Data").CenterPane())
-        #self.nb.Bind(wx.aui.EVT_AUINOTEBOOK_PAGE_CLOSE, self.OnCloseTab)
         self.nb.Bind(aui.EVT_AUINOTEBOOK_PAGE_CLOSE, self.OnCloseTab)
         self.nb.Bind(aui.EVT_AUINOTEBOOK_PAGE_CHANGED, self.OnPageChanged)
         # add the toolbars to the manager
@@ -515,7 +502,6 @@ vous devez signaler le chemin de l'éxecutable de R dans les préférences."""
             self._mgr.UnInit()
             del self._mgr
             self.Destroy()
-            ##FIXME
             #if sys.platform == 'win32' :
             #    os.system("taskkill /im iramuteq.exe /f")
             #    print 'meurtre de process'
@@ -570,10 +556,13 @@ vous devez signaler le chemin de l'éxecutable de R dans les préférences."""
         
         builder =  Builder(self, dlg)
         if builder.res == wx.ID_OK :
-            corpus = builder.doanalyse()
-            self.history.add(corpus.parametres)
-            self.tree.OnItemAppend(corpus.parametres)
-            OpenAnalyse(self, corpus.parametres)
+            try :
+                corpus = builder.doanalyse()
+                self.history.add(corpus.parametres)
+                self.tree.OnItemAppend(corpus.parametres)
+                OpenAnalyse(self, corpus.parametres)
+            except :
+                BugReport(self)
         #self.content = DoConf().totext(corpus.parametres)
 #        parametres = DoConf(os.path.join(UserConfigPath,'corpus.cfg')).getoptions('corpus')
 #        parametres['originalpath'] = self.filename
@@ -590,28 +579,24 @@ vous devez signaler le chemin de l'éxecutable de R dans les préférences."""
 #        corpus = BuildFromAlceste(self.filename, parametres, self.lexique, self.expressions).corpus
         #self.corpus_encodage =  dial.encodages[dial.list_encodages.GetSelection()][0]
         #self.corpus_lang = dial.langues[dial.choice_dict.GetSelection()]
-            count = 1
-            keepGoing = dlg.Update(count, u"Lecture du fichier")
-#        try :
-#            with codecs.open(self.filename, 'rU', self.corpus_encodage) as f:
-#                self.content = f.read()
-#            #self.content = self.content.replace('\r','\n')
-#        except UnicodeDecodeError :
-#            msg = u"Ce fichier ne semble pas être encodé en %s" % self.corpus_encodage
-#            dial = wx.MessageDialog(self, msg, u"Problème d'encodage", wx.OK | wx.NO_DEFAULT | wx.ICON_WARNING)
-#            dial.CenterOnParent()
-#            res = dial.ShowModal()
-#            dial.Destroy()
-#            self.OpenText()
-            self.ShowMenu(_("View"))
-            self.ShowMenu(_("Text analysis"))
-            self.ShowMenu(_(u"Spreadsheet analysis"), False)
-            self.type = "Texte"
-            self.DataTxt = False
-            self.Text = ''
-            count += 1
-            keepGoing = dlg.Update(count, u"Chargement du dictionnaire")
-        dlg.Destroy()
+            else :
+                count = 1
+                keepGoing = dlg.Update(count, u"Lecture du fichier")
+    #            msg = u"Ce fichier ne semble pas être encodé en %s" % self.corpus_encodage
+    #            dial = wx.MessageDialog(self, msg, u"Problème d'encodage", wx.OK | wx.NO_DEFAULT | wx.ICON_WARNING)
+    #            dial.CenterOnParent()
+    #            res = dial.ShowModal()
+    #            dial.Destroy()
+    #            self.OpenText()
+                self.ShowMenu(_("View"))
+                self.ShowMenu(_("Text analysis"))
+                self.ShowMenu(_(u"Spreadsheet analysis"), False)
+                self.type = "Texte"
+                self.DataTxt = False
+                self.Text = ''
+                count += 1
+                keepGoing = dlg.Update(count, u"Chargement du dictionnaire")
+                dlg.Destroy()
         #self.OnViewData(wx.EVT_BUTTON)
         
     def OnExit(self, event):
@@ -666,14 +651,14 @@ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, États-Unis."""
             self.tree.GiveFocus(uuid=npage.parametres['uuid'])
 
     def OnCloseTab(self, evt):
-        log.info('Closing tab %s' % str(evt.GetEventObject()))
+        #log.info('Closing tab %s' % str(evt.GetEventObject()))
         ctrl = evt.GetEventObject()
         if isinstance(ctrl.GetParent(), aui.AuiNotebook) or isinstance(ctrl.GetParent(), wx.Panel):
             notebook = True
         else :
             notebook = False
         page = self.nb.GetPage(self.nb.GetSelection())
-        if 'parametres' in dir(page) :
+        if 'parametres' in dir(page) and isinstance(ctrl.GetParent(), IraFrame) :
             self.history.rmtab(page.parametres)
             self.tree.CloseItem(uuid = page.parametres['uuid'])
         TabTitle = self.nb.GetPageText(self.nb.GetSelection())
@@ -707,7 +692,6 @@ Voulez-vous fermer quand même ?"""
             remove = True
         if self.nb.GetPageCount() == 1 and remove and not notebook :
             self.LastTabClose()
-
     
     def LastTabClose(self) :
         if self.nb.GetPageCount() == 1 :
@@ -771,21 +755,6 @@ Voulez-vous fermer quand même ?"""
     def OnAcceuil(self, event):
         self.ShowAPane(u"Intro_Text")
         event.Skip()
-    #???
-#    def OnCreateTab(self, event):
-#        if not self._mgr.GetPane("Tab_content").name == "Tab_content":
-#            self._mgr.AddPane(self.CreateTabCtrl(), aui.AuiPaneInfo().
-#                              Name("Tab_content").
-#                              CenterPane())
-#            self._mgr.GetPane("Intro_Text").Hide()
-#            self._mgr.GetPane("Tab_content").Show()
-#            self.ctrl.Bind(aui.EVT_AUINOTEBOOK_PAGE_CLOSE, self.OnCloseTab)
-#        else :
-#            page = wx.TextCtrl(self, -1, str(text), style=wx.TE_MULTILINE)
-#            self.ctrl.AddPage(page, "qsdqsd")
-#            self.ctrl.SetSelection(self.ctrl.GetPageCount() - 1)
-#        self._mgr.Update()
-    
     
     def CreateHTMLCtrl(self):
         ctrl = wx.html.HtmlWindow(self, -1, wx.DefaultPosition, wx.Size(400, 300))
@@ -991,7 +960,9 @@ Voulez-vous fermer quand même ?"""
 class IntroPanel(wx.Panel):
     def __init__(self, parent):
         wx.Panel.__init__(self, parent)
-        #col = randint(0, 100)
+        #col = randint(0, 255)
+        #col1 = randint(0,255)
+        #col2 = randint(0,255)
         col = 0
         bckgrdcolor = wx.Colour(col, col, col)
         self.SetBackgroundColour(bckgrdcolor)
@@ -1096,9 +1067,9 @@ class MySplashScreen(wx.SplashScreen):
         bmp = wx.Image(os.path.join(ImagePath, 'splash.png')).ConvertToBitmap()
         wx.SplashScreen.__init__(self, bmp,
                                  wx.SPLASH_CENTRE_ON_SCREEN | wx.SPLASH_TIMEOUT,
-                                 3000, None, -1)
+                                 2000, None, -1)
         self.Bind(wx.EVT_CLOSE, self.OnClose)
-        self.fc = wx.FutureCall(1500, self.ShowMain)
+        self.fc = wx.FutureCall(1, self.ShowMain)
 
     def OnClose(self, evt):
         evt.Skip()
@@ -1109,7 +1080,7 @@ class MySplashScreen(wx.SplashScreen):
             self.ShowMain()
 
     def ShowMain(self):
-        frame = IraFrame(None, -1, "IRaMuTeQ " + ConfigGlob.get('DEFAULT', 'version'), size=(950, 650))
+        frame = IraFrame(None, -1, "IRaMuTeQ " + ConfigGlob.get('DEFAULT', 'version'), size=(1100, 800))
         frame.Show()
         frame.Upgrade()
         frame.OnOpenFromCmdl()
@@ -1123,7 +1094,6 @@ class MyApp(wx.App):
         Create and show the splash screen.  It will then create and show
         the main frame when it is time to do so.
         """
-
         wx.SystemOptions.SetOptionInt("mac.window-plain-transition", 1)
         self.SetAppName("Iramuteq")       
         splash = MySplashScreen()