X-Git-Url: http://iramuteq.org/git?p=iramuteq;a=blobdiff_plain;f=iramuteq.py;h=17d348fb44a556e56f548ac599e5981ab0ff097a;hp=afe096658f21c881dbfb80840d4e90c14eca3a7c;hb=be2de22859c8f59abe9e1082981e4c3a62e9b7ca;hpb=13666be5de5eeffbe63774c3c0aecd407b519ac6 diff --git a/iramuteq.py b/iramuteq.py index afe0966..17d348f 100644 --- a/iramuteq.py +++ b/iramuteq.py @@ -33,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 @@ -55,14 +54,14 @@ from analysetxt import Alceste from textdist import PamTxt from textstat import Stat from textaslexico import Lexico -from textsimi import SimiTxt +from textsimi import SimiTxt, SimiFromCluster from textwordcloud import WordCloud from profile_segment import ProfileSegment from textcheckcorpus import checkcorpus from openanalyse import OpenAnalyse from corpusNG import BuildFromAlceste, Builder from sheet import MySheet -from checkinstall import CreateIraDirectory, CheckRPath, FindRPAthWin32, FindRPathNix, CheckRapp, CheckRPackages, IsNew, UpgradeConf, CopyConf, RLibsAreInstalled +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 tree import LeftTree @@ -103,9 +102,7 @@ if sys.platform == 'darwin' : else : sys.setdefaultencoding(locale.getpreferredencoding()) #chemin de l'application -#print 'ATTENTION APPLIPATH' AppliPath = os.path.abspath(os.path.dirname(os.path.realpath(sys.argv[0]))) -#AppliPath = '/home/pierre/workspace/iramuteqNG' #chemin des images ImagePath = os.path.join(AppliPath, 'images') #configuration generale @@ -121,24 +118,22 @@ UserConfigPath = os.path.abspath(os.path.join(user_home, '.iramuteq')) #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] + + +class writer(object): + def write(self, data): + if data.strip() != '' : + log.info('BUG : %s' % data) +sys.stderr = writer() ConfigPath = ConstructConfigPath(UserConfigPath) ##################################################################### @@ -154,10 +149,13 @@ class IraFrame(wx.Frame): self.images_path = os.path.join(AppliPath,'images') self.UserConfigPath = UserConfigPath self.RscriptsPath = ConstructRscriptsPath(AppliPath) - self.DictPath = ConstructDicoPath(AppliPath) + #self.DictPath = ConstructDicoPath(AppliPath) + self.DictPath = ConstructDicoPath(UserConfigPath) self.ConfigGlob = ConfigGlob self.ConfigPath = ConstructConfigPath(UserConfigPath) self.pref = RawConfigParser() + #workaround for import problem + self.SimiFromCluster = SimiFromCluster #langues mylocale = wx.Locale(wx.LANGUAGE_FRENCH) mylocale.AddCatalogLookupPathPrefix(os.path.join(AppliPath,'locale')) @@ -281,9 +279,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 +305,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 @@ -432,17 +429,13 @@ class IraFrame(wx.Frame): Le chemin de l'executable de R n'a pas été trouvé. Si R n'est pas installé, vous devez l'installer (http://www.r-project.org/). Si R n'est pas installé dans le répertoire par défaut -(C:\Program Files\R\R-2.x.x\R.exe sous windows ou /usr/bin/R sous linux ou Mac Os X) +(souvent C:\Program Files\R\R-2.x.x\R.exe sous windows ou /usr/bin/R sous linux ou Mac Os X) vous devez signaler le chemin de l'éxecutable de R dans les préférences.""" dlg = wx.MessageDialog(self, msg, u"Problème de configuration", wx.OK | wx.NO_DEFAULT | wx.ICON_WARNING) dlg.CenterOnParent() if dlg.ShowModal() in [wx.ID_NO, wx.ID_CANCEL]: evt.Veto() - else : - print 'ok' - if sys.platform == 'darwin': - self.Rapp = self.PathPath.get('PATHS', 'rapp') - RappOk = CheckRapp(self.Rapp) + dlg.Destroy() self.DataPop = False self.DataTxt = False self.Text = '' @@ -515,7 +508,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' @@ -665,14 +657,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()) @@ -769,21 +761,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)) @@ -843,18 +820,22 @@ Voulez-vous fermer quand même ?""" BugReport(self) def OnSimiTxt(self, evt, corpus = None) : - print 'PLUS DE BUG SUR SIMITXT' - #try : + # print 'PLUS DE BUG SUR SIMITXT' + try : #self.Text = SimiTxt(self) + if corpus is None : + corpus = self.tree.getcorpus() self.Text = SimiTxt(self, corpus, parametres = {'type': 'simitxt'}, dlg = progressbar(self, 3)) if self.Text.val == wx.ID_OK : PlaySound(self) - #except : - # BugReport(self) + except : + BugReport(self) def OnWordCloud(self, evt, corpus = None) : # print 'PLUS DE BUG SUR WORDCLOUD' try : + if corpus is None : + corpus = self.tree.getcorpus() self.Text = WordCloud(self, corpus, parametres = {'type' : 'wordcloud'}, dlg = progressbar(self, 3)) if self.Text.val == wx.ID_OK : PlaySound(self) @@ -877,6 +858,8 @@ Voulez-vous fermer quand même ?""" def OnTextStat(self, event, corpus = None): print 'PAS DE BUG SUR TEXT STAT' #try: + if corpus is None : + corpus = self.tree.getcorpus() self.Text = Stat(self, corpus, parametres = {'type': 'stat'}, dlg = progressbar(self, 7)) if self.Text.val == wx.ID_OK : @@ -888,6 +871,8 @@ Voulez-vous fermer quand même ?""" #try: #self.Text = AsLexico(self) 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)) if self.Text.val == wx.ID_OK : PlaySound(self) @@ -908,16 +893,16 @@ Voulez-vous fermer quand même ?""" BugReport(self) def OnTextAlceste(self, event, corpus = None): - #try: - print('ATTENTION : PLUS DE BUG SUR ALCESTE') + try: + #print('ATTENTION : PLUS DE BUG SUR ALCESTE') #RunAnalyse(self, corpus, Alceste, OptAlceste) + if corpus is None : + corpus = self.tree.getcorpus() self.Text = Alceste(self, corpus, parametres = {'type': 'alceste'}, dlg = progressbar(self,6)) - #self.history.addtab(self.Text.parametres) - #OpenAnalyse(self, self.Text.parametres['ira']) if self.Text.val == wx.ID_OK: PlaySound(self) - #except: - # BugReport(self) + except: + BugReport(self) def OnPamSimple(self, event): try: @@ -1096,9 +1081,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, - 1000, 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()