-#!/bin/env python
# -*- coding: utf-8 -*-
#Author: Pierre Ratinaud
-#Copyright (c) 2008 Pierre Ratinaud
+#Copyright (c) 2008-2020 Pierre Ratinaud
+#modification pour python 3 : Laurent Mérat, 6x7 - mai 2020
#License: GNU/GPL
+#------------------------------------
+# import des modules python
+#------------------------------------
import os
import sys
import shutil
-from chemins import ConstructConfigPath, ConstructDicoPath
-from functions import exec_rcode, exec_RCMD
-import wx
-import tempfile
-from ConfigParser import *
from time import sleep
import logging
+import tempfile
+
+#------------------------------------
+# import des modules wx
+#------------------------------------
+import wx
+
+#------------------------------------
+# import des fichiers du projet
+#------------------------------------
+from chemins import ConstructConfigPath, ConstructDicoPath
+from functions import exec_rcode, exec_RCMD
+from configparser import *
log = logging.getLogger('iramuteq.checkinstall')
+
def IsNew(self):
version_glob = self.ConfigGlob.get('DEFAULT', 'version_nb').split('.')
try :
version_user = self.pref.get('iramuteq','version_nb').split('.')
except NoOptionError :
return True
+ userab = False
+ globab = False
if version_user :
version_user[0] = int(version_user[0])
version_user[1] = int(version_user[1])
version_glob[0] = int(version_glob[0])
version_glob[1] = int(version_glob[1])
+ if len(version_user) == 3 :
+ if 'a' in version_user[2] :
+ userab = 'a'
+ version_user[2] = int(version_user[2].replace('a', ''))
+ elif 'b' in version_user[2] :
+ userab = 'b'
+ version_user[2] = int(version_user[2].replace('b', ''))
+ else :
+ version_user[2] = int(version_user[2])
+ if len(version_glob) == 3 :
+ if 'a' in version_glob[2] :
+ globab = 'a'
+ version_glob[2] = int(version_glob[2].replace('a', ''))
+ elif 'b' in version_glob[2] :
+ globab = 'b'
+ version_glob[2] = int(version_glob[2].replace('b', ''))
+ else :
+ version_glob[2] = int(version_glob[2])
if len(version_user) == len(version_glob) :
if version_glob > version_user :
return True
+ elif version_glob == version_user :
+ if globab == userab :
+ return False
+ elif globab > userab :
+ return True
+ else :
+ return False
else :
return False
- if len(version_glob) == 2 :
- if version_glob[:2] >= version_user[:2] :
+ else :
+ if version_glob > version_user :
return True
else :
return False
- elif len(version_glob) == 3 :
- if version_glob[:2] <= version_user[:2] :
- return False
- else :
- return True
def UpgradeConf(self) :
log.info('upgrade conf')
dictuser = self.ConfigPath
dictappli = ConstructConfigPath(self.AppliPath, user = False)
- for item,filein in dictuser.iteritems():
- if not item == u'global' and not item == u'history':
+ for item,filein in dictuser.items():
+ if not item == 'global' and not item == 'history':
shutil.copyfile(dictappli[item], filein)
dicoUser = self.DictPath
dicoAppli = ConstructDicoPath(self.AppliPath)
def CopyConf(self) :
DictUser = self.ConfigPath
DictAppli = ConstructConfigPath(self.AppliPath,user=False)
- for item, filein in DictUser.iteritems():
- if not item == u'global' and not item == u'path' and not item == u'preferences' and not item == u'history' :
+ for item, filein in DictUser.items():
+ if not item == 'global' and not item == 'path' and not item == 'preferences' and not item == 'history' :
shutil.copyfile(DictAppli[item],filein)
- if item == u'path':
+ if item == 'path':
if not os.path.exists(filein):
shutil.copyfile(DictAppli[item],filein)
- if item == u'preferences' :
+ if item == 'preferences' :
if not os.path.exists(filein) :
shutil.copyfile(DictAppli[item],filein)
dicoUser = self.DictPath
return False
else :
return True
-
+
def FindRPAthWin32():
BestPath=False
progpaths=[]
return True
def CheckRPackages(self):
- listdep = ['ca', 'rgl', 'gee', 'ape', 'igraph','proxy', 'wordcloud', 'irlba', 'textometry']
+ listdep = ['ca', 'gee', 'ape', 'igraph','proxy', 'wordcloud', 'irlba', 'textometry', 'sna', 'network', 'intergraph', 'rgl']
nolib = []
i=0
dlg = wx.ProgressDialog("Test des librairies de R", "test en cours...", maximum = len(listdep), parent=self, style=wx.PD_APP_MODAL | wx.PD_AUTO_HIDE | wx.PD_ELAPSED_TIME | wx.PD_CAN_ABORT)
dlg.Destroy()
if nolib != [] :
txt = '\n'.join(nolib)
- msg = u"""Les bibliothèques de R suivantes sont manquantes :
+ msg = """Les bibliothèques de R suivantes sont manquantes :
%s
Sans ces bibliothèques, IRamuteq ne fonctionnera pas.
-
+
- Vous pouvez installer ces bibliothèques manuellement :
Cliquez sur Annuler
Lancez R
Tapez install.packages('nom de la bibiothèque')
-
+
- ou laisser IRamuteq les installer automatiquement en cliquant sur VALIDER .
Les bibliothèques seront téléchargées depuis le site miroir de R %s.
""" % (txt, self.pref.get('iramuteq','rmirror'))
- dial = wx.MessageDialog(self, msg, u"Installation incomplète", wx.OK | wx.CANCEL | wx.ICON_WARNING)
+ dial = wx.MessageDialog(self, msg, "Installation incomplète", wx.OK | wx.CANCEL | wx.ICON_WARNING)
dial.CenterOnParent()
val = dial.ShowModal()
if val == wx.ID_OK :
style=wx.PD_APP_MODAL | wx.PD_AUTO_HIDE | wx.PD_ELAPSED_TIME | wx.PD_CAN_ABORT
)
dlg.Center()
- dlg.Update(1, u"installation...")
+ dlg.Update(1, "installation...")
compt = 0
for bib in nolib :
compt += 1
- dlg.Update(compt, u"installation librairie %s" % bib)
+ dlg.Update(compt, "installation librairie %s" % bib)
txt = """
userdir <- unlist(strsplit(Sys.getenv("R_LIBS_USER"), .Platform$path.sep))[1]
if (!file.exists(userdir)) {
- if (!dir.create(userdir, recursive = TRUE))
+ if (!dir.create(userdir, recursive = TRUE))
print('pas possible')
lib <- userdir
.libPaths(c(userdir, .libPaths()))
f.write(txt)
test = exec_rcode(self.RPath, tmpscript, wait = False)
while test.poll() == None :
- dlg.Pulse(u"installation librairie %s" % bib)
+ dlg.Pulse("installation librairie %s" % bib)
sleep(0.2)
dlg.Update(len(nolib) + 1, 'fin')
dlg.Destroy()
dial.Destroy()
- if nolib == [] :
+ if nolib == [] :
self.pref.set('iramuteq', 'rlibs', True)
with open(self.ConfigPath['preferences'], 'w') as f :
self.pref.write(f)