# -*- coding: utf-8 -*-
#Author: Pierre Ratinaud
#Copyright (c) 2008-2012, Pierre Ratinaud
-#Lisense: GNU GPL
+#License: GNU GPL
from optparse import OptionParser
#------------------------------------
import wx
#import wx.aui
-if wx.__version__ >= '2.11' :
- import wx.lib.agw.aui as aui
-else :
- import aui
+import wx.lib.agw.aui as aui
import wx.html
import wx.grid
import wx.lib.hyperlink as hl
from checkversion import NewVersion
from guifunct import *
from tableau import Tableau
-from dialog import PrefDialog, EncodeDialog, CorpusPref
+from dialog import PrefDialog, CorpusPref
from tabfrequence import Frequences
from tabchi2 import ChiSquare
#from tabstudent import MakeStudent
from tabchdalc import AnalyseQuest
from tabsimi import DoSimi
from tabrsimple import InputText
-from tabverges import Verges
+from tabverges import Prototypical
+from tabsplitvar import SplitMatrixFromVar
#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, SimiFromCluster
-from textwordcloud import WordCloud
-from profile_segment import ProfileSegment
-from textcheckcorpus import checkcorpus
+from textwordcloud import WordCloud, ClusterCloud
+from textreinert import Reinert
+#from profile_segment import ProfileSegment
+#from textcheckcorpus import checkcorpus
from openanalyse import OpenAnalyse
-from corpus import BuildFromAlceste, Builder
-from sheet import MySheet
+from corpus import Builder, SubBuilder
+#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 chemins import RscriptsPath, ConstructConfigPath, ConstructDicoPath, ConstructGlobalPath, PathOut
from parse_factiva_xml import ImportFactiva
from tools import Extract
ID_Chi2 = wx.NewId()
ID_Student = wx.NewId()
ID_CHDSIM = wx.NewId()
-ID_CHDAlceste = wx.NewId()
+ID_CHDReinert = wx.NewId()
ID_TEXTAFCM = wx.NewId()
ID_TEXTSTAT = wx.NewId()
ID_ASLEX = wx.NewId()
-ID_TEXTALCESTE = wx.NewId()
+ID_TEXTREINERT = wx.NewId()
ID_TEXTPAM = wx.NewId()
ID_CHECKCORPUS = wx.NewId()
ID_Tabcontent = wx.NewId()
ID_VIEWDATA = wx.NewId()
ID_HTMLcontent = wx.NewId()
ID_SimiTxt = wx.NewId()
+ID_proto = wx.NewId()
+ID_ImportTXM = wx.NewId()
##########################################################
#elements de configuration
##########################################################
#encodage
if sys.platform == 'darwin' :
- sys.setdefaultencoding('utf-8')
- wx.SetDefaultPyEncoding('utf-8')
+ sys.setdefaultencoding('UTF-8')
+ wx.SetDefaultPyEncoding('UTF-8')
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
#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.AppliPath = AppliPath
self.images_path = os.path.join(AppliPath,'images')
self.UserConfigPath = UserConfigPath
- self.RscriptsPath = ConstructRscriptsPath(AppliPath)
+ #self.RscriptsPath = ConstructRscriptsPath(AppliPath)
+ self.RscriptsPath = PathOut(dirout=os.path.join(AppliPath, 'Rscripts'))
+ self.RscriptsPath.basefiles(RscriptsPath)
#self.DictPath = ConstructDicoPath(AppliPath)
self.DictPath = ConstructDicoPath(UserConfigPath)
self.ConfigGlob = ConfigGlob
#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)
+ #langues = ['fr_FR', 'en', 'pt_PT']
+ #for l in langues :
+ # pass
+ 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()
self.mb = wx.MenuBar()
file_menu = wx.Menu()
- item = wx.MenuItem(file_menu, ID_OpenData, _(u"Open a matrix"), _(u"Open a matrix"))
+ item = wx.MenuItem(file_menu, ID_OpenData, _(u"Open a matrix").decode('utf8'), _(u"Open a matrix").decode('utf8'))
item.SetBitmap(wx.ArtProvider_GetBitmap(wx.ART_FILE_OPEN))
file_menu.AppendItem(item)
- item = wx.MenuItem(file_menu, ID_OpenText, _(u"Open a text corpora"), _(u"Open a text corpora"))
+ item = wx.MenuItem(file_menu, ID_OpenText, _(u"Open a text corpus").decode('utf8'), _(u"Open a text corpus").decode('utf8'))
item.SetBitmap(wx.ArtProvider_GetBitmap(wx.ART_FILE_OPEN))
file_menu.AppendItem(item)
- item = wx.MenuItem(file_menu, ID_OnOpenAnalyse, _(u"Open an analysis"), _("Open an analysis"))
+ item = wx.MenuItem(file_menu, ID_OnOpenAnalyse, _(u"Open an analysis").decode('utf8'), _(u"Open an analysis").decode('utf8'))
item.SetBitmap(wx.ArtProvider_GetBitmap(wx.ART_FILE_OPEN))
file_menu.AppendItem(item)
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"))
+ fact_from_xml = wx.MenuItem(menuFactiva, wx.ID_ANY, _(u"from xml").decode('utf8'))
+ fact_from_mail = wx.MenuItem(menuFactiva, wx.ID_ANY, _(u"from mail").decode('utf8'))
+ fact_from_txt = wx.MenuItem(menuFactiva, wx.ID_ANY, _(u"from copy/paste").decode('utf8'))
menuFactiva.AppendItem(fact_from_xml)
menuFactiva.AppendItem(fact_from_mail)
menuFactiva.AppendItem(fact_from_txt)
- file_menu.AppendMenu(-1, _(u"Import from factiva"), menuFactiva)
+ file_menu.AppendMenu(-1, _(u"Import from factiva").decode('utf8'), menuFactiva)
+
+ item = wx.MenuItem(file_menu, ID_ImportTXM, _(u"Import from TXM").decode('utf8'), _(u"Import from TXM").decode('utf8'))
+ item.SetBitmap(wx.ArtProvider_GetBitmap(wx.ART_FILE_OPEN))
+ file_menu.AppendItem(item)
menuTools = wx.Menu()
- splitvar = wx.MenuItem(menuTools, wx.ID_ANY, _(u"Split from variable"))
- extractmod = wx.MenuItem(menuTools, wx.ID_ANY, _(u"Extract mods"))
+ splitvar = wx.MenuItem(menuTools, wx.ID_ANY, _(u"Split from variable").decode('utf8'))
+ extractmod = wx.MenuItem(menuTools, wx.ID_ANY, _(u"Extract mods").decode('utf8'))
+ extractthem = wx.MenuItem(menuTools, wx.ID_ANY, _(u"Extract thematics").decode('utf8'))
menuTools.AppendItem(splitvar)
menuTools.AppendItem(extractmod)
+ menuTools.AppendItem(extractthem)
self.ID_splitvar = splitvar.GetId()
self.ID_extractmod = extractmod.GetId()
- file_menu.AppendMenu(-1, _(u"Tools"), menuTools)
+ self.ID_extractthem = extractthem.GetId()
+ file_menu.AppendMenu(-1, _(u"Tools").decode('utf8'), 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))
- file_menu.AppendItem(item)
+ #item = wx.MenuItem(file_menu, ID_SaveTab, _(u"Save tab as...").decode('utf8'), _(u"Save tab as...").decode('utf8'))
+ #item.SetBitmap(wx.ArtProvider_GetBitmap(wx.ART_FILE_SAVE_AS))
+ #file_menu.AppendItem(item)
- file_menu.Append(wx.ID_EXIT, _(u"Exit"))
+ file_menu.Append(wx.ID_EXIT, _(u"Exit").decode('utf8'))
edit_menu = wx.Menu()
- edit_menu.Append(wx.ID_PREFERENCES, '', _(u'Preferences'))
+ edit_menu.Append(wx.ID_PREFERENCES, '', _(u'Preferences').decode('utf8'))
view_menu = wx.Menu()
- 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.Append(ID_ACCEUIL, _(u"Home page").decode('utf8'))
+ view_menu.Append(ID_VIEWDATA, _(u"Show data").decode('utf8'))
+ view_menu.Append(ID_RESULT, _(u'Show results').decode('utf8'))
#view_menu.AppendSeparator()
-
- analyse_menu = wx.Menu()
- analyse_menu.Append(ID_Freq, u"Fréquences")
- analyse_menu.Append(ID_Chi2, u"Chi2")
- #analyse_menu.Append(ID_Student, u"t de Student")
+ matrix_menu = wx.Menu()
+ matrix_menu.Append(ID_Freq, _(u"Frequencies").decode('utf8'))
+ matrix_menu.Append(ID_Chi2, _(u"Chi2").decode('utf8'))
+ #matrix_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_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_SIMI, u"Analyse de similitudes")
+ menu_classif.Append(ID_CHDReinert, _(u"Reinert's Method").decode('utf8'))
+ #menu_classif.Append(ID_CHDSIM, u"Par matrice des distances")
+ matrix_menu.AppendMenu(-1, _(u"Clustering").decode('utf8'), menu_classif)
+ #matrix_menu.Append(ID_AFCM, u"AFCM")
+ matrix_menu.Append(ID_SIMI, _(u"Similarities Analysis").decode('utf8'))
+ matrix_menu.Append(ID_proto, _(u"Prototypical Analysis").decode('utf8'))
ID_RCODE = wx.NewId()
- analyse_menu.Append(ID_RCODE, u"Code R...")
-
+ matrix_menu.Append(ID_RCODE, u"Code R...")
+ #menu_splittab = wx.Menu()
+ #ID_SPLITVAR = wx.NewId()
+ #splitvar = wx.MenuItem(menu_splittab, ID_SPLITVAR, _(u"Split from variable").decode('utf8'))
+ #menu_splittab.AppendItem(splitvar)
+ #matrix_menu.AppendMenu(-1, _(u"Split matrix").decode('utf8'), menu_splittab)
+ self.matrix_menu = matrix_menu
+
text_menu = wx.Menu()
- 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_CHECKCORPUS, u"Vérifier le corpus")
+ text_menu.Append(ID_TEXTSTAT, _(u"Statistics").decode('utf8'))
+ text_menu.Append(ID_ASLEX, _(u"Specificities and CA").decode('utf8'))
#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_TEXTPAM, u"Par matrice des distances")
- text_menu.AppendMenu(-1, u"Classification", menu_classiftxt)
- text_menu.Append(ID_SimiTxt, u'Analyse de similitude')
+ menu_classiftxt.Append(ID_TEXTREINERT, _(u"Reinert's Method").decode('utf8'))
+ #menu_classiftxt.Append(ID_TEXTPAM, u"Par matrice des distances")
+ text_menu.AppendMenu(-1, _(u"Clustering").decode('utf8'), menu_classiftxt)
+ text_menu.Append(ID_SimiTxt, _(u"Similarities Analysis").decode('utf8'))
ID_WC = wx.NewId()
- text_menu.Append(ID_WC, u'Nuage de mots')
+ text_menu.Append(ID_WC, _(u"WordCloud").decode('utf8'))
+ self.text_menu = text_menu
help_menu = wx.Menu()
- help_menu.Append(wx.ID_ABOUT, u'À propos...')
- help_menu.Append(wx.ID_HELP, u'Aide en ligne')
+ help_menu.Append(wx.ID_ABOUT, _(u"About...").decode('utf8'))
+ help_menu.Append(wx.ID_HELP, _(u"Online help...").decode('utf8'))
- self.mb.Append(file_menu, _(u"File"))
- self.mb.Append(edit_menu, _(u"Edition"))
- self.mb.Append(view_menu, _(u"View"))
- self.mb.Append(analyse_menu, _("Spreadsheet analysis"))
- self.mb.Append(text_menu, _(u"Text analysis"))
- self.mb.Append(help_menu, _(u"Help"))
+ self.mb.Append(file_menu, _(u"File").decode('utf8'))
+ self.mb.Append(edit_menu, _(u"Edition").decode('utf8'))
+ self.mb.Append(view_menu, _(u"View").decode('utf8'))
+ self.mb.Append(matrix_menu, _(u"Matrix analysis").decode('utf8'))
+ self.mb.Append(text_menu, _(u"Text analysis").decode('utf8'))
+ self.mb.Append(help_menu, _(u"Help").decode('utf8'))
self.SetMenuBar(self.mb)
#--------------------------------------------------------------------
# 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").
+ self._mgr.AddPane(self.tree, aui.AuiPaneInfo().Name("lefttree").Caption(_(u"Navigator").decode('utf8')).
Left().MinSize(wx.Size(200,500)).Layer(1).Position(1).CloseButton(False).MaximizeButton(True).
MinimizeButton(True))
self._mgr.AddPane(self.nb, aui.AuiPaneInfo().
Name("Tab_content").
CenterPane())
- 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._mgr.AddPane(self.Sheet, aui.AuiPaneInfo().Name("Data").CenterPane())
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
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.ExtractTools, extractthem)
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.OnCHDSIM, id=ID_CHDSIM)
- self.Bind(wx.EVT_MENU, self.OnCHDAlceste, id=ID_CHDAlceste)
+ self.Bind(wx.EVT_MENU, self.OnCHDReinert, id=ID_CHDReinert)
self.Bind(wx.EVT_MENU, self.OnAFCM, id=ID_AFCM)
+ self.Bind(wx.EVT_MENU, self.OnProto, id=ID_proto)
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.OnSplitVar, id=ID_SPLITVAR)
+ #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)
- self.Bind(wx.EVT_MENU, self.OnTextAlceste, id=ID_TEXTALCESTE)
+ self.Bind(wx.EVT_MENU, self.OnTextReinert, id=ID_TEXTREINERT)
self.Bind(wx.EVT_MENU, self.OnPamSimple, id=ID_TEXTPAM)
self.Bind(wx.EVT_MENU, self.OnSimiTxt, id=ID_SimiTxt)
self.Bind(wx.EVT_MENU, self.OnWordCloud, id=ID_WC)
- self.Bind(wx.EVT_MENU, self.OnSimi, id=ID_SIMI)
+ self.Bind(wx.EVT_MENU, self.OnSimiTab, id=ID_SIMI)
self.Bind(wx.EVT_MENU, self.OnExit, id=wx.ID_EXIT)
- self.Bind(wx.EVT_MENU, self.OnSaveTabAs, id=ID_SaveTab)
+ #self.Bind(wx.EVT_MENU, self.OnSaveTabAs, id=ID_SaveTab)
self.Bind(wx.EVT_MENU, self.OnAbout, id=wx.ID_ABOUT)
self.Bind(wx.EVT_MENU, self.OnHelp, id=wx.ID_HELP)
self.Bind(wx.EVT_MENU, self.OnPref, id=wx.ID_PREFERENCES)
+ self.Bind(wx.EVT_MENU, self.OnImportTXM, id=ID_ImportTXM)
self.Bind(wx.EVT_CLOSE, self.OnClose)
##################################################################
flags = self._mgr.GetAGWFlags()
if self.SysEncoding == 'mac-roman' : self.SysEncoding = 'MacRoman'
self.type = ''
+##############################################################@
+ self.DisEnSaveTabAs(False)
+ self.ShowMenu(_("View").decode('utf8'), False)
+ self.ShowMenu(_("Matrix analysis").decode('utf8'), False)
+ self.ShowMenu(_("Text analysis").decode('utf8'), 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
else :
CopyConf(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'])
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()
+ pass
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()
+ elif guilangue == 'portuguese' :
+ self.presLan_pt.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 pack :
- dlg = wx.MessageDialog(self, u"Installation OK", u"Installation", wx.OK | wx.NO_DEFAULT | wx.ICON_INFORMATION)
+ dlg = wx.MessageDialog(self, u"Installation OK", u"Installation", wx.OK | wx.ICON_INFORMATION)
dlg.CenterOnParent()
if dlg.ShowModal() in [wx.ID_NO, wx.ID_CANCEL]:
- evt.Veto()
+ evt.Veto()
- #FIXME marche pas sous mac ?
def DisEnSaveTabAs(self, DISEN):
#Disable SaveTabAs
file_menu = self.mb.GetMenu(0)
print 'onclose'
with open(self.ConfigPath['path'], 'w') as f :
self.PathPath.write(f)
- if self.DictTab != {} :
- savestates = [self.DictTab[item][0] for item in self.DictTab]
- if False in savestates :
- notsave = [item for item in self.DictTab if self.DictTab[item][0] == False]
- msg = u"""
- Certains résultats ne sont pas enregistrés.
- Voulez-vous fermer quand même ?"""
- dlg = wx.MessageDialog(self, msg, "Sauvegarde",
- wx.YES_NO | wx.NO_DEFAULT | wx.ICON_QUESTION)
- dlg.CenterOnParent()
- if dlg.ShowModal() in [wx.ID_NO, wx.ID_CANCEL]:
- event.Veto()
- dlg.Destroy()
- else:
- dlg.Destroy()
- for item in notsave :
- for tmpfile in self.DictTab[item][1:] :
- os.remove(tmpfile)
- print 'remove : ' + tmpfile
- self._mgr.UnInit()
- del self._mgr
- self.Destroy()
- else :
- self._mgr.UnInit()
- del self._mgr
- self.Destroy()
- else :
- self._mgr.UnInit()
- del self._mgr
- self.Destroy()
- #if sys.platform == 'win32' :
- # os.system("taskkill /im iramuteq.exe /f")
- # print 'meurtre de process'
+ self._mgr.UnInit()
+ del self._mgr
+ self.Destroy()
def OnOpenData(self, event):
inputname, self.input_path = OnOpen(self, "Data")
if inputname:
- self.filename = self.input_path[0]
+ #filename = self.input_path[0]
self.tableau = Tableau(self,os.path.abspath(self.input_path[0]))
- get_table_param(self, self.input_path[0])
- self.tableau.make_content()
- self.tableau.show_tab()
+ val = get_table_param(self, self.input_path[0])
+ if val == wx.ID_OK :
+ self.tableau.make_content()
+ OpenAnalyse(self, self.tableau.parametres)
+ self.tree.OnItemAppend(self.tableau.parametres)
+ #self.tableau.show_tab()
def OnOpenAnalyse(self, event):
self.AnalysePath = OnOpen(self, "Analyse")
inputname, self.input_path = OnOpen(self, "Texte")
self.filename = self.input_path[0]
if inputname:
- self.OpenText()
+ self.OpenText()
def OnViewData(self, event):
print self.type
self.DataPop = False
self.ShowAPane(u"Text")
self._mgr.Update()
-
+
+ def OnSubText(self, corpus, parametres = None):
+ if corpus is None :
+ corpus = self.tree.getcorpus()
+ builder = SubBuilder(self, corpus, parametres)
+ if builder.res == wx.ID_OK :
+ busy = wx.BusyInfo(_("Please wait...").decode('utf8'), self)
+ wx.SafeYield()
+ corpus = builder.doanalyse()
+ self.history.add(corpus.parametres)
+ self.tree.OnItemAppend(corpus.parametres)
+ OpenAnalyse(self, corpus.parametres)
+ del busy
+
def OpenText(self):
- #dial = EncodeDialog(self)
dlg = wx.ProgressDialog("Ouverture...",
"Veuillez patienter...",
maximum=2,
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
-#
-# parametres['pathout'] = PathOut(self.filename, 'corpus').dirout
-# dial = CorpusPref(self, parametres)
-# dial.CenterOnParent()
-# dial.txtpath.SetLabel(self.filename)
-# res = dial.ShowModal()
-# parametres = dial.doparametres()
-# print parametres
-# ReadLexique(self, lang = parametres['lang'])
-# self.expressions = ReadDicoAsDico(self.DictPath.get(parametres['lang'], 'french_exp'))
-# 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()]
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.ShowMenu(_(u"View").decode('utf8'))
+ self.ShowMenu(_(u"Text analysis").decode('utf8'))
+ self.ShowMenu(_(u"Matrix analysis").decode('utf8'), False)
self.type = "Texte"
self.DataTxt = False
self.Text = ''
REPERE
"""
info.WebSite = ("http://www.iramuteq.org", u"Site web IRaMuTeQ")
- dev = ConfigGlob.get('DEFAULT', 'dev').split(';')
+ dev = ConfigGlob.get('DEFAULT', 'dev').decode('utf8').split(';')
info.Developers = dev
info.License = u"""Iramuteq est un logiciel libre ; vous pouvez le diffuser et/ou le modifier
suivant les termes de la Licence Publique Générale GNU telle que publiée
parent = nobject.GetParent()
if isinstance(parent, IraFrame) :
npage = self.nb.GetPage(new)
- self.tree.GiveFocus(uuid=npage.parametres['uuid'])
+ if 'parametres' in dir(npage) :
+ self.tree.GiveFocus(uuid=npage.parametres['uuid'])
+ if npage.parametres.get('matrix', False) :
+ self.ShowMenu(_(u"Text analysis").decode('utf8'), False)
+ self.ShowMenu(_(u"Matrix analysis").decode('utf8'), True)
+ elif npage.parametres.get('corpus', False) :
+ self.ShowMenu(_(u"Text analysis").decode('utf8'))
+ self.ShowMenu(_(u"Matrix analysis").decode('utf8'), False)
def OnCloseTab(self, evt):
#log.info('Closing tab %s' % str(evt.GetEventObject()))
self.history.rmtab(page.parametres)
self.tree.CloseItem(uuid = page.parametres['uuid'])
TabTitle = self.nb.GetPageText(self.nb.GetSelection())
- if self.DictTab != {} :
- if TabTitle in self.DictTab :
- ListFile=self.DictTab[TabTitle]
- if False in ListFile:
- msg = u"""
-Certains résultats ne sont pas enregistrer.
-Voulez-vous fermer quand même ?"""
- dlg = wx.MessageDialog(self, msg, "Sauvegarde",wx.YES_NO | wx.NO_DEFAULT | wx.ICON_QUESTION)
-
- dlg.CenterOnParent()
- if dlg.ShowModal() in [wx.ID_NO, wx.ID_CANCEL]:
- remove = False
- evt.Veto()
- dlg.Destroy()
- else :
- for f in ListFile[1:] :
- print 'remove', f
- os.remove(f)
- remove = True
- dlg.Destroy()
- elif True in ListFile :
- remove = True
- if remove:
- del self.DictTab[TabTitle]
- else :
- self.LastTabClose()
- else :
- remove = True
- if self.nb.GetPageCount() == 1 and remove and not notebook :
+# if self.DictTab != {} :
+# if TabTitle in self.DictTab :
+# ListFile=self.DictTab[TabTitle]
+# if False in ListFile:
+# msg = u"""
+# Certains résultats ne sont pas enregistrer.
+# Voulez-vous fermer quand même ?"""
+# dlg = wx.MessageDialog(self, msg, "Sauvegarde",wx.YES_NO | wx.NO_DEFAULT | wx.ICON_QUESTION)
+#
+# dlg.CenterOnParent()
+# if dlg.ShowModal() in [wx.ID_NO, wx.ID_CANCEL]:
+# remove = False
+# evt.Veto()
+# dlg.Destroy()
+# else :
+# for f in ListFile[1:] :
+# print 'remove', f
+# os.remove(f)
+# remove = True
+# dlg.Destroy()
+# elif True in ListFile :
+# remove = True
+# if remove:
+# del self.DictTab[TabTitle]
+# else :
+# self.LastTabClose()
+# else :
+# remove = True
+ if self.nb.GetPageCount() == 1 and not notebook :
self.LastTabClose()
def LastTabClose(self) :
if self.nb.GetPageCount() == 1 :
- self.DisEnSaveTabAs(False)
+ #self.DisEnSaveTabAs(False)
if self.DataTxt :
self.ShowAPane("Text")
elif self.DataPop :
else :
self.ShowAPane("Intro_Text")
- def OnSaveTabAs(self, event):
- SelectTab = self.nb.GetSelection()
- TabTitle = self.nb.GetPageText(SelectTab)
- FileToSave = self.DictTab[TabTitle]
- NewListFile = []
- dlg = wx.FileDialog(
- self, message="Enregistrer sous...", defaultDir=os.getcwd(),
- defaultFile="resultat.html", wildcard="Tous les fichiers|*", style=wx.SAVE | wx.OVERWRITE_PROMPT
- )
- dlg.SetFilterIndex(2)
- dlg.CenterOnParent()
-
- if dlg.ShowModal() == wx.ID_OK:
- Path = dlg.GetPath()
- Dirname = os.path.dirname(Path)
- Filename = dlg.GetFilename()
- else :
- Path = False
- dlg.Destroy()
- if Path:
- shutil.copyfile(FileToSave[-1], Path)
- os.remove(FileToSave[len(FileToSave) - 1])
- NewListFile.append(True)
- NewListFile.append(Path)
- for f in FileToSave[1:-1] :
- Fileout = os.path.join(Dirname, os.path.basename(f))
- shutil.copyfile(f, Fileout)
- NewListFile.append(Fileout)
- os.remove(f)
- TabText = Filename
- self.DictTab[TabText] = NewListFile
- del self.DictTab[TabTitle]
- self.nb.SetPageText(SelectTab, TabText)
+# def OnSaveTabAs(self, event):
+# SelectTab = self.nb.GetSelection()
+# TabTitle = self.nb.GetPageText(SelectTab)
+# FileToSave = self.DictTab[TabTitle]
+# NewListFile = []
+# dlg = wx.FileDialog(
+# self, message="Enregistrer sous...", defaultDir=os.getcwd(),
+# defaultFile="resultat.html", wildcard="Tous les fichiers|*", style=wx.SAVE | wx.OVERWRITE_PROMPT
+# )
+# dlg.SetFilterIndex(2)
+# dlg.CenterOnParent()
+#
+# if dlg.ShowModal() == wx.ID_OK:
+# Path = dlg.GetPath()
+# Dirname = os.path.dirname(Path)
+# Filename = dlg.GetFilename()
+# else :
+# Path = False
+# dlg.Destroy()
+# if Path:
+# shutil.copyfile(FileToSave[-1], Path)
+# os.remove(FileToSave[len(FileToSave) - 1])
+# NewListFile.append(True)
+# NewListFile.append(Path)
+# for f in FileToSave[1:-1] :
+# Fileout = os.path.join(Dirname, os.path.basename(f))
+# shutil.copyfile(f, Fileout)
+# NewListFile.append(Fileout)
+# os.remove(f)
+# TabText = Filename
+# self.DictTab[TabText] = NewListFile
+# del self.DictTab[TabTitle]
+# self.nb.SetPageText(SelectTab, TabText)
def GetStartPosition(self):
################################################################
#debut des analyses
################################################################
-
- def OnFreq(self, event):
- try:
- Frequences(self)
+ def analyse_matrix(self, analyse, analyse_type = '', matrix = None, dlgnb = 1):
+ if matrix is None :
+ matrix = self.tree.getmatrix()
+ try :
+ analyse(self, matrix, parametres = {'type' : analyse_type}, dlg = dlgnb)
except:
- BugReport(self)
+ BugReport(self)
+
+ def OnFreq(self, event, matrix = None):
+ self.analyse_matrix(Frequences, analyse_type = 'freq', matrix = matrix, dlgnb = 3)
+
+ def OnChi2(self, event, matrix = None):
+ self.analyse_matrix(ChiSquare, matrix = matrix, analyse_type = 'chi2', dlgnb = 3)
+
+ def OnSimiTab(self, event, matrix = None):
+ self.analyse_matrix(DoSimi, matrix = matrix, analyse_type = 'simimatrix', dlgnb = 5)
+
+ def OnCHDReinert(self, event, matrix = None):
+ #if matrix is None :
+ # matrix = self.tree.getmatrix()
+ #AnalyseQuest(self, matrix, parametres = {'type' : 'reinertmatrix'}, dlg = 3)
+ self.analyse_matrix(AnalyseQuest, matrix = matrix, analyse_type = 'reinertmatrix', dlgnb = 5)
- def OnChi2(self, event):
- try:
- # print('PAS DE DEBUG SUR CHI2')
- chi = ChiSquare(self)
- except:
- BugReport(self)
-
def OnStudent(self, event):
try:
MakeStudent(self)
except:
BugReport(self)
- def OnCHDAlceste(self, event):
- try:
- # print('PLUS DE BUG SUR ALCESTE QUESTIONNAIRE')
- self.quest = AnalyseQuest(self)
- if self.quest.val == wx.ID_OK:
- PlaySound(self)
- except:
- BugReport(self)
+# def OnCHDReinert(self, event):
+# try:
+# # print('PLUS DE BUG SUR ALCESTE QUESTIONNAIRE')
+# self.quest = AnalyseQuest(self)
+# if self.quest.val == wx.ID_OK:
+# PlaySound(self)
+# except:
+# BugReport(self)
+
+ def OnProto(self, evt, matrix = None) :
+ self.analyse_matrix(Prototypical, matrix = matrix, analyse_type = 'proto', dlgnb = 3)
+ #Prototypical(self, {'type' : 'proto'})
+
+ def OnSplitVar(self, evt, matrix = None):
+ self.analyse_matrix(SplitMatrixFromVar, matrix = matrix, analyse_type = 'splitvar', dlgnb = 3)
+ matrix = self.tree.getmatrix()
+
def OnSimiTxt(self, evt, corpus = None) :
# print 'PLUS DE BUG SUR SIMITXT'
#self.Text = SimiTxt(self)
if corpus is None :
corpus = self.tree.getcorpus()
- self.Text = SimiTxt(self, corpus, parametres = {'type': 'simitxt'}, dlg = progressbar(self, 3))
+ self.Text = SimiTxt(self, corpus, parametres = {'type': 'simitxt'}, dlg = 3)
if self.Text.val == wx.ID_OK :
PlaySound(self)
except :
try :
if corpus is None :
corpus = self.tree.getcorpus()
- self.Text = WordCloud(self, corpus, parametres = {'type' : 'wordcloud'}, dlg = progressbar(self, 3))
+ self.Text = WordCloud(self, corpus, parametres = {'type' : 'wordcloud'}, dlg = 3)
if self.Text.val == wx.ID_OK :
PlaySound(self)
except :
BugReport(self)
+ def OnClusterCloud(self, corpus, parametres = None) :
+ self.Text = ClusterCloud(self, corpus, parametres = parametres, dlg = 3)
def OnAFCM(self, event):
try:
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'
- #try:
+ #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))
+ self.Text = Stat(self, corpus, parametres = {'type': 'stat'}, dlg = 7)
if self.Text.val == wx.ID_OK :
PlaySound(self)
- #except:
- # BugReport(self)
+ except:
+ BugReport(self)
def OnTextSpec(self, event, corpus = None):
- #try:
+ try:
#self.Text = AsLexico(self)
- print('ATTENTION : PLUS DE BUG SUR LEXICO')
+ #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))
+ self.Text = Lexico(self, corpus, parametres = {'type' : 'spec'}, dlg = 3)
if self.Text.val == wx.ID_OK :
PlaySound(self)
- #except:
- # BugReport(self)
+ except:
+ BugReport(self)
def OnTextAfcm(self, event):
try:
except :
BugReport(self)
+ def OnImportTXM(self, evt) :
+ try :
+ ImportFactiva(self, 'txm')
+ except :
+ BugReport(self)
+
def ExtractTools(self, evt) :
ID = evt.GetId()
if ID == self.ID_splitvar :
Extract(self, 'splitvar')
- else :
+ elif ID == self.ID_extractmod :
Extract(self, 'mods')
+ elif ID == self.ID_extractthem :
+ Extract(self, 'them')
- def OnTextAlceste(self, event, corpus = None):
+ def OnTextReinert(self, event, corpus = None):
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.Text = Reinert(self, corpus, parametres = {'type': 'alceste'}, dlg = 6)
if self.Text.val == wx.ID_OK:
PlaySound(self)
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 = 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, listactives = listactives, actives = actives, tableau = tableau)
- def OnSimi(self,evt):
- try :
+# def OnSimi(self,evt):
+# try :
#print 'ATTENTION !!!! VERGES'
- self.res = DoSimi(self, param = None)
+ #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)
+# if self.res.val == wx.ID_OK :
+# PlaySound(self)
+# except :
+# BugReport(self)
#################################################################
def OnHelp(self, event):
if truepath :
if os.path.splitext(self.filename)[1] in ['.csv', '.xls', '.ods']:
self.tableau = Tableau(self, self.filename)
- get_table_param(self, self.filename)
- self.tableau.make_content()
- self.tableau.show_tab()
+ val = get_table_param(self, self.filename)
+ if val == wx.ID_OK :
+ self.tableau.make_content()
+ OpenAnalyse(self, self.tableau.parametres)
+ self.tree.OnItemAppend(self.tableau.parametres)
+ #get_table_param(self, self.filename)
+ #self.tableau.make_content()
+ #self.tableau.show_tab()
#open_data(self, self.filename)
elif os.path.splitext(self.filename)[1] == '.txt':
self.OpenText()
class IntroPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
- #col = randint(0, 255)
- #col1 = randint(0,255)
- #col2 = randint(0,255)
- col = 0
- bckgrdcolor = wx.Colour(col, col, col)
+ col = randint(0, 255)
+ col1 = randint(0,255)
+ col2 = randint(0,255)
+ col = 57
+ bckgrdcolor = wx.Colour(col, col1, col2)
self.SetBackgroundColour(bckgrdcolor)
txtcolour = wx.Colour(250, 250, 250)
linkcolor = wx.Colour(255, 0, 0)
self.hyper_lerass.UpdateLink()
blank = wx.StaticText(PanelPres, -1, u'\n')
blank1 = wx.StaticText(PanelPres, -1, u'\n')
- labellicence = wx.StaticText(PanelPres, -1, u'Licence GNU GPL')
+ labellicence = wx.StaticText(PanelPres, -1, _(u"License GNU GPL").decode('utf8'))
labellicence.SetForegroundColour(txtcolour)
labellicence.SetBackgroundColour(bckgrdcolor)
labelcopy = wx.StaticText(PanelPres, -1, ConfigGlob.get('DEFAULT', 'copyright'))
self.ShowMain()
def ShowMain(self):
- frame = IraFrame(None, -1, "IRaMuTeQ " + ConfigGlob.get('DEFAULT', 'version'), size=(1100, 800))
+ displaySize = wx.DisplaySize()
+ w = displaySize[0]/1.2
+ h = displaySize[1]/1.2
+ frame = IraFrame(None, -1, "IRaMuTeQ " + ConfigGlob.get('DEFAULT', 'version'), size=(w, h))
frame.Show()
+ frame.finish_init()
frame.Upgrade()
frame.OnOpenFromCmdl()
# if self.fc.IsRunning():