#------------------------------------
import wx
#import wx.aui
-#import wx.lib.agw.aui as aui
-import agw.aui as aui
+if wx.__version__ >= '2.11' :
+ import wx.lib.agw.aui as aui
+else :
+ import aui
import wx.html
import wx.grid
import wx.lib.hyperlink as hl
#from textafcuci import AfcUci
#from textchdalc import AnalyseAlceste
from analysetxt import Alceste
-from textdist import PamTxt
+from textdist import AnalysePam
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 textcheckcorpus import checkcorpus
from openanalyse import OpenAnalyse
-from corpusNG import BuildFromAlceste, Builder
+from corpus import BuildFromAlceste, Builder
from sheet import MySheet
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 tools import Extract
+
from tree import LeftTree
##########################################################
ID_OpenData = wx.NewId()
#fichiers log pour windows (py2exe)
log = logging.getLogger('iramuteq')
fh = logging.FileHandler(os.path.join(UserConfigPath,'stdout.log'))
-ch = logging.StreamHandler()
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
-ch.setFormatter(formatter)
fh.setFormatter(formatter)
-log.addHandler(ch)
log.addHandler(fh)
+if sys.platform != 'win32' and sys.platform != 'darwin':
+ ch = logging.StreamHandler()
+ ch.setFormatter(formatter)
+ log.addHandler(ch)
log.setLevel(logging.INFO)
-
class writer(object):
def write(self, data):
if data.strip() != '' :
- log.info('BUG : %s' % data)
+ log.info('ERROR : %s' % data)
+
+class printer(object) :
+ def write(self, data) :
+ if data.strip() != '' :
+ log.info('Print : %s' % data)
+
sys.stderr = writer()
+sys.stdout = printer()
+
ConfigPath = ConstructConfigPath(UserConfigPath)
+
+
+langues = {'french' : wx.LANGUAGE_FRENCH,
+ 'english' : wx.LANGUAGE_ENGLISH,}
#####################################################################
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'))
- mylocale.AddCatalog('iramuteq')
- presLan_en = gettext.translation("iramuteq", os.path.join(AppliPath,'locale'), languages=['en'])
- presLan_fr = gettext.translation("iramuteq", os.path.join(AppliPath,'locale'), languages=['fr_FR'])
- presLan_fr.install()
-
-
+ gettext.install('iramuteq', os.path.join(AppliPath,'locale'), unicode=True)
+ self.presLan_fr = gettext.translation("iramuteq", os.path.join(AppliPath,'locale'), languages=['fr_FR'])
+ self.presLan_en = gettext.translation("iramuteq", os.path.join(AppliPath,'locale'), languages=['en'])
+ self.setlangue()
# tell FrameManager to manage this frame
#self._mgr = wx.aui.AuiManager()
self._mgr = aui.AuiManager()
item.SetBitmap(wx.ArtProvider_GetBitmap(wx.ART_FILE_OPEN))
file_menu.AppendItem(item)
- 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)
-
+
+ menuFactiva = wx.Menu()
+ fact_from_xml = wx.MenuItem(menuFactiva, wx.ID_ANY, _(u"from xml"))
+ fact_from_mail = wx.MenuItem(menuFactiva, wx.ID_ANY, _(u"from mail"))
+ fact_from_txt = wx.MenuItem(menuFactiva, wx.ID_ANY, _(u"from copy/paste"))
+ menuFactiva.AppendItem(fact_from_xml)
+ menuFactiva.AppendItem(fact_from_mail)
+ menuFactiva.AppendItem(fact_from_txt)
+ file_menu.AppendMenu(-1, _(u"Import from factiva"), menuFactiva)
+
+ menuTools = wx.Menu()
+ splitvar = wx.MenuItem(menuTools, wx.ID_ANY, _(u"Split from variable"))
+ extractmod = wx.MenuItem(menuTools, wx.ID_ANY, _(u"Extract mods"))
+ menuTools.AppendItem(splitvar)
+ menuTools.AppendItem(extractmod)
+ self.ID_splitvar = splitvar.GetId()
+ self.ID_extractmod = extractmod.GetId()
+ file_menu.AppendMenu(-1, _(u"Tools"), menuTools)
+
+
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"))
analyse_menu.Append(ID_Chi2, u"Chi2")
#analyse_menu.Append(ID_Student, u"t de Student")
menu_classif = wx.Menu()
- menu_classif.Append(ID_CHDAlceste, u"Méthode Alceste")
+ menu_classif.Append(ID_CHDAlceste, u"Méthode GNEPA")
menu_classif.Append(ID_CHDSIM, u"Par matrice des distances")
analyse_menu.AppendMenu(-1, u"Classification", menu_classif)
analyse_menu.Append(ID_AFCM, u"AFCM")
analyse_menu.Append(ID_RCODE, u"Code R...")
text_menu = wx.Menu()
- text_menu.Append(ID_CHECKCORPUS, u"Vérifier le corpus")
+ #text_menu.Append(ID_CHECKCORPUS, u"Vérifier le corpus")
text_menu.Append(ID_TEXTSTAT, u"Statistiques textuelles")
text_menu.Append(ID_ASLEX, u"Spécificités et AFC")
#text_menu.Append(ID_TEXTAFCM, u"AFC sur UCI / Vocabulaire")
menu_classiftxt = wx.Menu()
- menu_classiftxt.Append(ID_TEXTALCESTE, u"Méthode Alceste")
+ menu_classiftxt.Append(ID_TEXTALCESTE, u"Méthode GNEPA")
menu_classiftxt.Append(ID_TEXTPAM, u"Par matrice des distances")
text_menu.AppendMenu(-1, u"Classification", menu_classiftxt)
text_menu.Append(ID_SimiTxt, u'Analyse de similitude')
self.Bind(wx.EVT_MENU, self.OnOpenData, id=ID_OpenData)
self.Bind(wx.EVT_MENU, self.OnOpenText, id=ID_OpenText)
self.Bind(wx.EVT_MENU, self.OnOpenAnalyse, id=ID_OnOpenAnalyse)
- self.Bind(wx.EVT_MENU, self.import_factiva, id= ID_Import)
+ self.Bind(wx.EVT_MENU, self.import_factiva_xml, fact_from_xml)
+ self.Bind(wx.EVT_MENU, self.import_factiva_mail, fact_from_mail)
+ self.Bind(wx.EVT_MENU, self.import_factiva_txt, fact_from_txt)
+ self.Bind(wx.EVT_MENU, self.ExtractTools, splitvar)
+ self.Bind(wx.EVT_MENU, self.ExtractTools, extractmod)
self.Bind(wx.EVT_MENU, self.OnFreq, id=ID_Freq)
self.Bind(wx.EVT_MENU, self.OnChi2, id=ID_Chi2)
self.Bind(wx.EVT_MENU, self.OnStudent, id=ID_Student)
self.Bind(wx.EVT_MENU, self.OnCHDAlceste, id=ID_CHDAlceste)
self.Bind(wx.EVT_MENU, self.OnAFCM, id=ID_AFCM)
self.Bind(wx.EVT_MENU, self.OnRCode, id=ID_RCODE)
- self.Bind(wx.EVT_MENU, self.OnCheckcorpus, id = ID_CHECKCORPUS)
+ #self.Bind(wx.EVT_MENU, self.OnCheckcorpus, id = ID_CHECKCORPUS)
self.Bind(wx.EVT_MENU, self.OnTextStat, id=ID_TEXTSTAT)
self.Bind(wx.EVT_MENU, self.OnTextSpec, id=ID_ASLEX)
self.Bind(wx.EVT_MENU, self.OnTextAfcm, id=ID_TEXTAFCM)
if self.SysEncoding == 'mac-roman' : self.SysEncoding = 'MacRoman'
self.type = ''
+##############################################################@
+ self.DisEnSaveTabAs(False)
+ self.ShowMenu(_("View"), False)
+ self.ShowMenu(_("Spreadsheet analysis"), False)
+ self.ShowMenu(_("Text analysis"), False)
+
+ self._mgr.Update()
+
+ self.DataPop = False
+ self.DataTxt = False
+ self.Text = ''
+
+ self.lexique = None
+ self.corpus = None
+
+ def finish_init(self) :
try :
self.pref.read(self.ConfigPath['preferences'])
if IsNew(self) :
UpgradeConf(self)
self.pref.read(self.ConfigPath['preferences'])
New = True
+ self.sound = self.pref.getboolean('iramuteq', 'sound')
+ self.check_update = self.pref.getboolean('iramuteq', 'checkupdate')
+ self.version = ConfigGlob.get('DEFAULT', 'version')
#configuration des chemins de R
self.PathPath = ConfigParser()
self.PathPath.read(ConfigPath['path'])
if dlg.ShowModal() in [wx.ID_NO, wx.ID_CANCEL]:
evt.Veto()
dlg.Destroy()
- self.DataPop = False
- self.DataTxt = False
- self.Text = ''
- self.sound = self.pref.getboolean('iramuteq', 'sound')
- self.check_update = self.pref.getboolean('iramuteq', 'checkupdate')
- self.version = ConfigGlob.get('DEFAULT', 'version')
- self.lexique = None
- self.corpus = None
-##############################################################@
- self.DisEnSaveTabAs(False)
- self.ShowMenu(_("View"), False)
- self.ShowMenu(_("Spreadsheet analysis"), False)
- self.ShowMenu(_("Text analysis"), False)
-
- self._mgr.Update()
+
+
+ def setlangue(self) :
+ try :
+ self.pref.read(self.ConfigPath['preferences'])
+ guilangue = self.pref.get('iramuteq', 'guilanguage')
+ if guilangue == 'french' :
+ self.presLan_fr.install()
+ else :
+ self.presLan_en.install()
+ mylocale = wx.Locale(langues[guilangue])
+ mylocale.AddCatalogLookupPathPrefix(os.path.join(AppliPath,'locale'))
+ mylocale.AddCatalog('iramuteq')
+ except :
+ self.presLan_fr.install()
+ mylocale = wx.Locale(langues['french'])
+ mylocale.AddCatalogLookupPathPrefix(os.path.join(AppliPath,'locale'))
+ mylocale.AddCatalog('iramuteq')
+
def OnVerif(self, evt) :
pack = CheckRPackages(self)
if dlg.ShowModal() in [wx.ID_NO, wx.ID_CANCEL]:
evt.Veto()
- #FIXME marche pas sous mac ?
def DisEnSaveTabAs(self, DISEN):
#Disable SaveTabAs
file_menu = self.mb.GetMenu(0)
items = file_menu.GetMenuItems()
- items[4].Enable(DISEN)
+ for item in items :
+ if item.GetId() == ID_SaveTab :
+ item.Enable(DISEN)
def ShowMenu(self, menu, Show=True):
menu_pos = self.mb.FindMenu(menu)
except:
BugReport(self)
- def OnCheckcorpus(self, evt):
- try :
- checkcorpus(self)
- except :
- BugReport(self)
+# def OnCheckcorpus(self, evt):
+# try :
+# checkcorpus(self)
+# except :
+# BugReport(self)
def OnTextStat(self, event, corpus = None):
print 'PAS DE BUG SUR TEXT STAT'
except:
BugReport(self)
- def import_factiva(self,event):
+ def import_factiva_xml(self,event):
+ try :
+ ImportFactiva(self, 'xml')
+ except :
+ BugReport(self)
+
+ def import_factiva_mail(self, evt) :
+ try :
+ ImportFactiva(self, 'mail')
+ except :
+ BugReport(self)
+
+ def import_factiva_txt(self, evt) :
try :
- ImportFactiva(self)
+ ImportFactiva(self, 'txt')
except :
BugReport(self)
+ def ExtractTools(self, evt) :
+ ID = evt.GetId()
+ if ID == self.ID_splitvar :
+ Extract(self, 'splitvar')
+ else :
+ Extract(self, 'mods')
+
def OnTextAlceste(self, event, corpus = None):
try:
#print('ATTENTION : PLUS DE BUG SUR ALCESTE')
except:
BugReport(self)
- def OnPamSimple(self, event):
+ def OnPamSimple(self, event, corpus = None):
try:
- self.Text = PamTxt(self)
+ if corpus is None :
+ corpus = self.tree.getcorpus()
+ self.Text = AnalysePam(self, corpus, parametres = {'type' : 'pamtxt'}, dlg = progressbar(self,6))
if self.Text.val == wx.ID_OK:
PlaySound(self)
except:
BugReport(self)
+
+ def SimiCluster(self, parametres = {}, fromprof = False, pathout = '', listactives = [], actives = [], tableau = None) :
+ DoSimi(self, param = parametres, fromprof = fromprof, pathout = pathout, listactives = listactives, actives = actives, tableau = tableau)
def OnSimi(self,evt):
- try :
+ #try :
#print 'ATTENTION !!!! VERGES'
+ print 'PLUS DE BUG SUR SIMI'
self.res = DoSimi(self, param = None)
#self.res = Verges(self)
if self.res.val == wx.ID_OK :
PlaySound(self)
- except :
- BugReport(self)
+ #except :
+ # BugReport(self)
#################################################################
def OnHelp(self, event):
def ShowMain(self):
frame = IraFrame(None, -1, "IRaMuTeQ " + ConfigGlob.get('DEFAULT', 'version'), size=(1100, 800))
frame.Show()
+ frame.finish_init()
frame.Upgrade()
frame.OnOpenFromCmdl()
# if self.fc.IsRunning():