Partie B - Eric
Petite présentation : Eric est un environnement de
développement intégré libre pour les langages de programmation Python et Ruby, développé grâce à PyQt. (wikipédia).Voilà
à quoi ressemble le logiciel :
- Il s'agit maintenant de faire fonctionner la fenêtre que nous venons de créer. On ouvre notre projet et on ajoute des fonctions pour dire au programme ce qu'il faut faire quand on les sollicite.
On peut ainsi définir toutes les actions que l'on veut.
- On enlève tout ce qui concerne le code html pour ne garder que les mots.
def nettoie (self, html):
html = html.replace("\n", " ")
expr = re.compile("<script.*?</script>", re.U)
html = expr.sub(" ", html)
expr = re.compile("<style.*?</style>", re.U)
html = expr.sub(" ", html)
expr = re.compile("<.*?>")
text = expr.sub(" ", html)
text = text.replace(" ", " ")
text = re.sub(" +", " ", text)
return text
Et la langue devinée est affichée
def langue (self, text):
langues = {"en":"anglais","de":"allemand","fr":u"français", "es":"espagnol","po":"portuguais", "it":"italien"}
dicoMots={}
resultat=[]
for langue in langues:
fichier = open("liste"+langue+".txt")
texte = fichier.read()
expr = re.compile("\W+", re.U)
liste = expr.split(texte)
dicoMots[langue]=liste
listeinc=text.split()
for langue in langues:
compteurmots=0
for mot in listeinc:
if mot in dicoMots[langue]: compteurmots+=1
resultat+=[(compteurmots,langue)]
resultat.sort()
return "Votre page est en : " + langues[resultat[-1][1]]+"."
- La fonction suivante permet à la page d'être chargée quand on appuie sur le PushButton
Elle complète aussi les adresses des sites incomplètes.
Elle écrit que le chargement est en ccours dans une zone quand le chargement commence.
Le contenu de la page Web est chargée dans le Qwebview (ajouté dans qt designer)
@pyqtSignature("")
def on_pushButton_clicked(self):
"""
charger l'URL indiqué dans lineedit.
"""
url = unicode(self.lineEdit.text())
if not url.startswith("http://"): url="http://"+url
self.webView.setUrl(QtCore.QUrl(url))
self.statusbar.setText("En cours de chargement "+url)
- La fonction permet de charger l'url en utilisant la touche entrée du clavier.
@pyqtSignature("")
def on_lineEdit_returnPressed(self):
"""
Slot documentation goes here.
"""
self.on_pushButton_clicked()
- Quand le chargement est terminé le "nettoyage" est mis en place. Le texte brut est affiché dans une zone.
def on_webView_loadFinished (self):
"""
quand le chargement est terminé.
"""
self.statusbar.setText(unicode(self.webView.url().toString())+" Chargement termine")
html = unicode(self.webView.page().mainFrame().toHtml())
text = self.nettoie(html)
self.textEdit.setText(text)
langue = self.langue(text)
self.label.setText(langue)
-On n'oublie pas de placer les listes dans notre répertoire de travail.
- Il s'agit maintenant de faire fonctionner la fenêtre que nous venons de créer. On ouvre notre projet et on ajoute des fonctions pour dire au programme ce qu'il faut faire quand on les sollicite.
On peut ainsi définir toutes les actions que l'on veut.
- On enlève tout ce qui concerne le code html pour ne garder que les mots.
def nettoie (self, html):
html = html.replace("\n", " ")
expr = re.compile("<script.*?</script>", re.U)
html = expr.sub(" ", html)
expr = re.compile("<style.*?</style>", re.U)
html = expr.sub(" ", html)
expr = re.compile("<.*?>")
text = expr.sub(" ", html)
text = text.replace(" ", " ")
text = re.sub(" +", " ", text)
return text
Et la langue devinée est affichée
def langue (self, text):
langues = {"en":"anglais","de":"allemand","fr":u"français", "es":"espagnol","po":"portuguais", "it":"italien"}
dicoMots={}
resultat=[]
for langue in langues:
fichier = open("liste"+langue+".txt")
texte = fichier.read()
expr = re.compile("\W+", re.U)
liste = expr.split(texte)
dicoMots[langue]=liste
listeinc=text.split()
for langue in langues:
compteurmots=0
for mot in listeinc:
if mot in dicoMots[langue]: compteurmots+=1
resultat+=[(compteurmots,langue)]
resultat.sort()
return "Votre page est en : " + langues[resultat[-1][1]]+"."
- La fonction suivante permet à la page d'être chargée quand on appuie sur le PushButton
Elle complète aussi les adresses des sites incomplètes.
Elle écrit que le chargement est en ccours dans une zone quand le chargement commence.
Le contenu de la page Web est chargée dans le Qwebview (ajouté dans qt designer)
@pyqtSignature("")
def on_pushButton_clicked(self):
"""
charger l'URL indiqué dans lineedit.
"""
url = unicode(self.lineEdit.text())
if not url.startswith("http://"): url="http://"+url
self.webView.setUrl(QtCore.QUrl(url))
self.statusbar.setText("En cours de chargement "+url)
- La fonction permet de charger l'url en utilisant la touche entrée du clavier.
@pyqtSignature("")
def on_lineEdit_returnPressed(self):
"""
Slot documentation goes here.
"""
self.on_pushButton_clicked()
- Quand le chargement est terminé le "nettoyage" est mis en place. Le texte brut est affiché dans une zone.
def on_webView_loadFinished (self):
"""
quand le chargement est terminé.
"""
self.statusbar.setText(unicode(self.webView.url().toString())+" Chargement termine")
html = unicode(self.webView.page().mainFrame().toHtml())
text = self.nettoie(html)
self.textEdit.setText(text)
langue = self.langue(text)
self.label.setText(langue)
-On n'oublie pas de placer les listes dans notre répertoire de travail.