# -*- 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 textafcuci import AfcUci
-#from textchdalc import AnalyseAlceste
from analysetxt import Alceste
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 textwordcloud import WordCloud, ClusterCloud
+#from profile_segment import ProfileSegment
#from textcheckcorpus import checkcorpus
from openanalyse import OpenAnalyse
-from corpus import BuildFromAlceste, Builder
+from corpus import 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 chemins import RscriptsPath, ConstructConfigPath, ConstructDicoPath, ConstructGlobalPath, PathOut
from parse_factiva_xml import ImportFactiva
from tools import Extract
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
-try :
- AppliPath = sys._MEIPASS
-except :
- AppliPath = os.path.abspath(os.path.dirname(os.path.realpath(sys.argv[0])))
+AppliPath = os.path.abspath(os.path.dirname(os.path.realpath(sys.argv[0])))
#chemin des images
ImagePath = os.path.join(AppliPath, 'images')
#configuration generale
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
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").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').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_Freq, _(u"Frequencies").decode('utf8'))
+ analyse_menu.Append(ID_Chi2, _(u"Chi2").decode('utf8'))
#analyse_menu.Append(ID_Student, u"t de Student")
menu_classif = wx.Menu()
- menu_classif.Append(ID_CHDAlceste, u"Méthode GNEPA")
+ menu_classif.Append(ID_CHDAlceste, _(u"Reinert Method").decode('utf8'))
#menu_classif.Append(ID_CHDSIM, u"Par matrice des distances")
- analyse_menu.AppendMenu(-1, u"Classification", menu_classif)
+ analyse_menu.AppendMenu(-1, _(u"Clustering").decode('utf8'), menu_classif)
#analyse_menu.Append(ID_AFCM, u"AFCM")
- analyse_menu.Append(ID_SIMI, u"Analyse de similitudes")
+ analyse_menu.Append(ID_SIMI, _(u"Similarities Analysis").decode('utf8'))
+ analyse_menu.Append(ID_proto, _(u"Prototypical analysis").decode('utf8'))
ID_RCODE = wx.NewId()
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_TEXTSTAT, u"Statistiques textuelles")
- text_menu.Append(ID_ASLEX, u"Spécificités et AFC")
+ 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 GNEPA")
+ menu_classiftxt.Append(ID_TEXTALCESTE, _(u"Reinert Method").decode('utf8'))
#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')
+ 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'))
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"Inline help...").decode('utf8'))
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(analyse_menu, _("Spreadsheet analysis").decode('utf8'))
+ self.mb.Append(analyse_menu, _("Matrix analysis").decode('utf8'))
self.mb.Append(text_menu, _(u"Text analysis").decode('utf8'))
self.mb.Append(help_menu, _(u"Help").decode('utf8'))
# 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.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.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.OnTextStat, id=ID_TEXTSTAT)
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()
##############################################################@
self.DisEnSaveTabAs(False)
- self.ShowMenu(_("View"), False)
- self.ShowMenu(_("Spreadsheet analysis"), False)
- self.ShowMenu(_("Text analysis"), False)
+ self.ShowMenu(_("View").decode('utf8'), False)
+ self.ShowMenu(_("Matrix analysis").decode('utf8'), False)
+ self.ShowMenu(_("Text analysis").decode('utf8'), False)
self._mgr.Update()
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()
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()
def DisEnSaveTabAs(self, DISEN):
#Disable SaveTabAs
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._mgr.Update()
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 = ''
elif True in ListFile :
remove = True
if remove:
- del self.DictTab[TabTitle]
+ del self.DictTab[TabTitle]
else :
self.LastTabClose()
else :
PlaySound(self)
except:
BugReport(self)
+
+ def OnProto(self, evt) :
+ Prototypical(self, {'type' : 'proto'})
def OnSimiTxt(self, evt, corpus = None) :
# print 'PLUS DE BUG SUR SIMITXT'
except :
BugReport(self)
+ def OnClusterCloud(self, corpus, parametres = None) :
+ self.Text = ClusterCloud(self, corpus, parametres = parametres, dlg = progressbar(self, 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:
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 :
self.res = DoSimi(self, param = None)
#self.res = Verges(self)
if self.res.val == wx.ID_OK :
- PlaySound(self)
+ PlaySound(self)
except :
BugReport(self)
#################################################################
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'))