modified: README.md

new file:   c/CtrlCheckLinks.rb
	new file:   c/Main.rb
	deleted:    c/main.rb
	new file:   fichier/dir/aa
	modified:   m/ReadFile.rb
	modified:   m/ReadFolder.rb
	modified:   v/Vue1.rb
	deleted:    v/VueError.rb
	new file:   v/VueResult.rb
This commit is contained in:
Quentin 2014-01-04 11:06:05 +01:00
parent c01d230914
commit 03c8e5c2ca
10 changed files with 185 additions and 91 deletions

View File

@ -11,4 +11,8 @@ Requiert :
==========================================================================
Lancement application :
ruby c/main.rb
ruby c/Main.rb
Emplacement fichiers :
actuellement les fichiers que l'on souhaitent traiter doivent se trouver dans
le dossier fichier/ (txt ou html)

50
c/CtrlCheckLinks.rb Normal file
View File

@ -0,0 +1,50 @@
class CtrlCheckLinks
def saisie
liste_dir = "../fichier/".liste_rep
#Va checher les fichiers et arborecenses dans le dossier fichier (Méthode dans ReadFolder)
Gtk.init
@v1 = Vue1.new(liste_dir, self)
@v1.getWindow.show_all
Gtk.main
return @urls
end
def recupUrls(str)
f = ReadFile.new(str)
@urls = f.getUrls
self.destructionFen
end
def destructionFen
@v1.getWindow.destroy
Gtk.main_quit
end
def verifLiens(urls)
resultats = ""
urls.each { |n|
p = Net::Ping::HTTP.new n , 80
if p.ping?
resultats += "#{n} est vivant\n"
else
resultats += "#{n} est mort\n"
end
}
return resultats
end
def vueResult(resultats)
v = VueResult.new(resultats)
v.getWindow.show_all
Gtk.main
end
end

24
c/Main.rb Executable file
View File

@ -0,0 +1,24 @@
#! /usr/bin/ruby
#lib
require 'gtk2' # lib graphique
require 'net/ping' #lib netwotk
#include
require './CtrlCheckLinks'
require '../m/ReadFile'
require '../m/ReadFolder'
require '../v/Vue1'
require '../v/VueResult'
while 1
c = CtrlCheckLinks.new
urls = c.saisie
if(urls !=nil)
resultats = c.verifLiens(urls)
c.vueResult(resultats)
else
break
end
end
print "Termine\n"

View File

@ -1,50 +0,0 @@
#! /usr/bin/ruby
#lib
require 'gtk2' # lib graphique
require 'net/ping' #lib netwotk
#include
require '../m/ReadFile'
require '../m/ReadFolder'
require '../v/Vue1'
require '../v/VueError'
"../fichier/".liste_rep #à ajouter à vue 1
Gtk.init
v1 = Vue1.new
v1.listenerBouton
v1.listenerDestroy
v1.getWindow.show_all
Gtk.main
str = v1.getEntry
str = "../fichier/" + str
if(File.exist?(str))
f = ReadFile.new(str)
url = f.getUrls
else
vd = VueError.new("Fichier inexistant")
vd.getDialog.run
vd.getDialog.destroy
end
url.each { |n| # faire une vue affichage
p = Net::Ping::HTTP.new n , 80
if p.ping?
puts n + " est vivant"
else
puts n + " est mort"
end
}
print "Termine\n"

1
fichier/dir/aa Normal file
View File

@ -0,0 +1 @@
daddad

View File

@ -2,17 +2,15 @@ class ReadFile
def initialize(pFic)
@fic = File.open(pFic, "r")
end
def getALL
def getALL #revoit tout le contenu d'un fichier sous forme d'une chaine de caractere
all = @fic.read
return all
end
def getUrls
def getUrls #sort les URLs d'un fichier
txt = self.getALL
url = txt.scan(/http[^\s]*/)
url = txt.scan(/http[^\s]*/)
return url
end
end

View File

@ -1,21 +1,33 @@
class String
class String #ajout de la méthode à la classe String
def liste_rep(espacement = "")
#initialisation
i=0
fich_dir = [""]
all_dir = ""
liste_exclus = [".", ".."]
d = Dir.open(self)
#sort les fichiers sans . et .. qui nous interresse pas
liste_dir = d.sort - liste_exclus
liste_dir.each { |fichier|
liste_dir.each { |fichier| #pour chaque fichier touvé
case File.ftype(self+fichier)
when "directory"
puts "#{espacement} + #{fichier}/"
when "directory" #si on trouve un dossier on l'ajoute et on cherche son contenu avec un apelle recursif
fich_dir[i] = "#{espacement} + #{fichier}/ \n"
espacement += " "
(self + fichier + "/").liste_rep(espacement)
fich_dir[i+1] = (self + fichier + "/").liste_rep(espacement)
espacement = espacement[0, espacement.length-4]
when "file"
puts "#{espacement} - #{fichier}"
i+=2
when "file" # si c'est un fichier on l'ajoute simplement
fich_dir[i] = "#{espacement} - #{fichier} \n"
i+=1
end
}
fich_dir.each { |n|
all_dir += n
}
return all_dir; #return l'arboressence des fichiers sous forme d'une chaine de caractere
end
end

View File

@ -1,18 +1,46 @@
class Vue1
def initialize()
def initialize(liste_dir, ctrl)
@ctrl = ctrl
#fenenetre generale
@window = Gtk::Window.new
@window.set_title('Saisie nom fichier')
#declaration des differents widgets
vb = Gtk::VBox.new(true, 6)
hb = Gtk::HBox.new(false, 6)
val = Gtk::Label.new('Nom');
hb.pack_start(val, false, true, 6)
top = Gtk::HBox.new(false, 6)
bot = Gtk::HBox.new(false, 6)
###Partie supérieur fenetre###
#Creation du label de l'arbo
dir = Gtk::Label.new(liste_dir)
top.pack_start(dir, false, true, 6)
vb.pack_start(top)
##############################
###Partie Inferieur fenetre###
#creation label pour la saisie
lab = Gtk::Label.new('Chemin')
bot.pack_start(lab, false, true, 6)
#creation champ de saisie
@nom = Gtk::Entry.new
hb.pack_start(@nom, true, true)
bot.pack_start(@nom, true, true)
#creation bouton de validation
@b = Gtk::Button.new('OK')
hb.pack_start(@b)
vb.pack_start(hb)
bot.pack_start(@b)
vb.pack_start(bot)
##############################
@window.add(vb)
# Abbonement fenetre au Listener
self.listenerBouton
self.listenerDestroy
end
def getWindow
@ -23,19 +51,27 @@ class Vue1
return @chaine
end
def listenerDestroy
@window.signal_connect('destroy') {
@window.destroy
Gtk.main_quit
def listenerDestroy # Listener fermeture fenetre
@window.signal_connect('delete_event') {
@ctrl.destructionFen
}
end
def listenerBouton
def listenerBouton #listener appuie validation
@chaine = " "
@b.signal_connect('clicked'){
@chaine = @nom.text.to_s
@window.destroy
Gtk.main_quit
@chaine = "../fichier/" + @chaine
if(File.exist?(@chaine))
@ctrl.recupUrls(@chaine)
else
d = Gtk::MessageDialog.new(Gtk::Window.new, Gtk::Dialog::DESTROY_WITH_PARENT,
Gtk::MessageDialog::ERROR,
Gtk::MessageDialog::BUTTONS_CLOSE,
"Erreur : Fichier inexistant")
d.run
d.destroy
end
}
end
end
end

View File

@ -1,12 +0,0 @@
class VueError
def initialize(pMsgErr)
@d = Gtk::MessageDialog.new(Gtk::Window.new, Gtk::Dialog::DESTROY_WITH_PARENT,
Gtk::MessageDialog::ERROR,
Gtk::MessageDialog::BUTTONS_CLOSE,
"Erreur : #{pMsgErr}")
end
def getDialog
return @d
end
end

31
v/VueResult.rb Normal file
View File

@ -0,0 +1,31 @@
class VueResult
def initialize(liste_result)
@window = Gtk::Window.new
@window.set_title('Resultats')
vb = Gtk::VBox.new(true, 6)
vh = Gtk::HBox.new(false, 6)
if(liste_result != "")
res = Gtk::Label.new(liste_result)
else
res = Gtk::Label.new("Pas de liens trouves")
end
vh.pack_start(res, false, true, 6)
vb.pack_start(vh)
@window.add(vb)
self.listenerDestroy
end
def getWindow
return @window
end
def listenerDestroy
@window.signal_connect('destroy') {
@window.destroy
Gtk.main_quit
}
end
end