diff --git a/README.md b/README.md index 0cf4d98..24d6850 100644 --- a/README.md +++ b/README.md @@ -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) diff --git a/c/CtrlCheckLinks.rb b/c/CtrlCheckLinks.rb new file mode 100644 index 0000000..47a3636 --- /dev/null +++ b/c/CtrlCheckLinks.rb @@ -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 \ No newline at end of file diff --git a/c/Main.rb b/c/Main.rb new file mode 100755 index 0000000..34bcc07 --- /dev/null +++ b/c/Main.rb @@ -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" \ No newline at end of file diff --git a/c/main.rb b/c/main.rb deleted file mode 100755 index 72a207d..0000000 --- a/c/main.rb +++ /dev/null @@ -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" \ No newline at end of file diff --git a/fichier/dir/aa b/fichier/dir/aa new file mode 100644 index 0000000..c404d51 --- /dev/null +++ b/fichier/dir/aa @@ -0,0 +1 @@ +daddad diff --git a/m/ReadFile.rb b/m/ReadFile.rb index 22206a8..3605bae 100644 --- a/m/ReadFile.rb +++ b/m/ReadFile.rb @@ -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 diff --git a/m/ReadFolder.rb b/m/ReadFolder.rb index e5a9132..8ac7640 100644 --- a/m/ReadFolder.rb +++ b/m/ReadFolder.rb @@ -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 \ No newline at end of file diff --git a/v/Vue1.rb b/v/Vue1.rb index d8ae20c..1e3ecba 100644 --- a/v/Vue1.rb +++ b/v/Vue1.rb @@ -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 \ No newline at end of file +end diff --git a/v/VueError.rb b/v/VueError.rb deleted file mode 100644 index 4bab374..0000000 --- a/v/VueError.rb +++ /dev/null @@ -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 \ No newline at end of file diff --git a/v/VueResult.rb b/v/VueResult.rb new file mode 100644 index 0000000..e570841 --- /dev/null +++ b/v/VueResult.rb @@ -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