Advertisement
Guest User

Article 22

a guest
Jun 12th, 2011
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 8.58 KB | None | 0 0
  1. #!/usr/bin/env python
  2. import sys
  3. from mutagen.mp3 import MP3
  4. try:
  5.     import pygtk
  6.     pygtk.require("2.0")
  7. except:
  8.     pass
  9. try:
  10.     import gtk
  11.     import gtk.glade
  12. except:
  13.     sys.exit(1)
  14.  
  15. class CreateurListeDeLecture:
  16.     def __init__(self):
  17.         self.gladefile = "CreateurListeDeLecture.glade"
  18.         self.wTree = gtk.glade.XML(self.gladefile,"FenetrePrincipale")
  19.         self.DicoEvenements()
  20.         self.ReferencesWidgets()  
  21.         self.SetupTreeview()      
  22.         self.CheminCourant = ""
  23.         self.LigneCourante = 0
  24.         self.NombreDeLignes = 0        
  25.  
  26.     def DicoEvenements(self):
  27.         dict = {"on_MainWindow_destroy": gtk.main_quit,
  28.                 "on_boBtnQuitter_clicked": gtk.main_quit,
  29.                 "on_boBtnAjouter_clicked": self.on_boBtnAjouter_clicked,
  30.                 "on_boBtnSupprimer_clicked": self.on_boBtnSupprimer_clicked,
  31.                 "on_boBtnEffacer_clicked": self.on_boBtnEffacer_clicked,
  32.                 "on_boBtnHaut_clicked": self.on_boBtnHaut_clicked,
  33.                 "on_boBtnMonter_clicked": self.on_boBtnMonter_clicked,
  34.                 "on_boBtnDescendre_clicked": self.on_boBtnDescendre_clicked,
  35.                 "on_boBtnBas_clicked":self.on_boBtnBas_clicked,
  36.                 "on_boBtnAPropos_clicked": self.on_boBtnAPropos_clicked,
  37.                 "on_btnNomRepertoire_clicked": self.on_btnNomRepertoire_clicked,
  38.                 "on_btnSauvegarderListe_clicked": self.on_btnSauvegarderListe_clicked}
  39.         self.wTree.signal_autoconnect(dict)
  40.  
  41.     def ReferencesWidgets(self):
  42.         self.txtNomFichier = self.wTree.get_widget("txtNomFichier")
  43.         self.txtChemin = self.wTree.get_widget("txtChemin")
  44.         self.boBtnAjouter = self.wTree.get_widget("boBtnAjouter")
  45.         self.boBtnSupprimer = self.wTree.get_widget("boBtnSupprimer")
  46.         self.boBtnEffacer = self.wTree.get_widget("boBtnEffacer")
  47.         self.boBtnQuitter = self.wTree.get_widget("boBtnQuitter")
  48.         self.boBtnAPropos = self.wTree.get_widget("boBtnAPropos")
  49.         self.boBtnHaut = self.wTree.get_widget("boBtnHaut")
  50.         self.boBtnMonter = self.wTree.get_widget("boBtnMonter")
  51.         self.boBtnDescendre = self.wTree.get_widget("boBtnDescendre")
  52.         self.boBtnBas = self.wTree.get_widget("boBtnBas")
  53.         self.btnNomRepertoire = self.wTree.get_widget("btnNomRepertoire")
  54.         self.btnSauvegarderListe = self.wTree.get_widget("btnSauvegarderListe")        
  55.         self.sbar = self.wTree.get_widget("statusbar3")
  56.         self.context_id = self.sbar.get_context_id("Statusbar")
  57.  
  58.     def SetupTreeview(self):
  59.         self.cNomFic = 0
  60.         self.cTypeFic = 1
  61.         self.cCheminFic = 2
  62.         self.sNomFic = "NomFichier"
  63.         self.sTypeFic = "Type"
  64.         self.sCheminFic = "Dossier"
  65.         self.treeview = self.wTree.get_widget("treeview1")
  66.         self.AjouterColonne(self.sNomFic,self.cNomFic)
  67.         self.AjouterColonne(self.sTypeFic,self.cTypeFic)
  68.         self.AjouterColonne(self.sCheminFic,self.cCheminFic)
  69.         self.listeLecture = gtk.ListStore(str,str,str)
  70.         self.treeview.set_model(self.listeLecture)
  71.         self.treeview.set_grid_lines(gtk.TREE_VIEW_GRID_LINES_BOTH)
  72.  
  73.     def AjouterColonne(self,titre,idColonne):
  74.         colonne = gtk.TreeViewColumn(titre,gtk.CellRendererText(),text=idColonne)
  75.         colonne.set_resizable(True)
  76.         colonne.set_sort_column_id(idColonne)
  77.         self.treeview.append_column(colonne)
  78.  
  79.     def on_boBtnAjouter_clicked(self,widget):
  80.         #self.MessageBox("info","Clic sur bouton Ajouter...")
  81.         fd = DialogueFichier()
  82.         fichiersChoisis,self.CheminCourant = fd.AfficheDialogue(0,self.CheminCourant)        
  83. ##        for f in fichiersChoisis:
  84. ##            print "Choix utilisateur : %s" % f
  85. ##        print "Chemin courant : %s" % self.CheminCourant
  86.         self.AjouterFichiers(fichiersChoisis)
  87.  
  88.     def on_boBtnSupprimer_clicked(self,widget):
  89.         self.MessageBox("info","Clic sur bouton Supprimer...")
  90.     def on_boBtnEffacer_clicked(self,widget):
  91.         self.MessageBox("info","Clic sur bouton EffacerTout...")
  92.     def on_boBtnHaut_clicked(self,widget):
  93.         self.MessageBox("info","Clic sur bouton Haut...")
  94.     def on_boBtnMonter_clicked(self,widget):
  95.         self.MessageBox("info","Clic sur bouton Monter...")
  96.     def on_boBtnDescendre_clicked(self,widget):
  97.         self.MessageBox("info","Clic sur bouton Descendre...")
  98.     def on_boBtnBas_clicked(self,widget):
  99.         self.MessageBox("info","Clic sur bouton Bas...")
  100.     def on_boBtnAPropos_clicked(self,widget):
  101.         #self.MessageBox("info","Clic sur bouton APropos...")
  102.         self.AfficherAPropos()
  103.  
  104.     def on_btnNomRepertoire_clicked(self,widget):
  105.         self.MessageBox("info","Clic sur bouton NomRepertoire...")
  106.     def on_btnSauvegarderListe_clicked(self,widget):
  107.         self.MessageBox("info","Clic sur bouton SauvegarderListe...")
  108.  
  109.     def AjouterFichiers(self,ListeFichiers):
  110.         compteur = 0
  111.         for f in ListeFichiers:
  112.             debutExt = f.rfind(".")
  113.             debutnomFic = f.rfind("/")
  114.             extension = f[debutExt+1:]
  115.             nomFic = f[debutnomFic+1:debutExt]
  116.             cheminFic = f[:debutnomFic]
  117.             data = [nomFic,extension,cheminFic]
  118.             self.listeLecture.append(data)
  119.             compteur += 1
  120.         self.NombreDeLignes += compteur
  121.         self.sbar.push(self.context_id,"%s fichiers ajoutes sur un total de %d" % (compteur,self.NombreDeLignes))
  122.  
  123.     def MessageBox(self,niveau,texte):
  124.         if niveau == "info":
  125.             dlg = gtk.MessageDialog(None,0,gtk.MESSAGE_INFO,gtk.BUTTONS_OK,texte)
  126.         elif niveau == "warning":
  127.             dlg = gtk.MessageDialog(None,0,gtk.MESSAGE_WARNING,gtk.BUTTONS_OK,texte)
  128.         elif niveau == "error":
  129.             dlg = gtk.MessageDialog(None,0,gtk.MESSAGE_ERROR,gtk.BUTTONS_OK,texte)
  130.         elif niveau == "question":
  131.             dlg = gtk.MessageDialog(None,0,gtk.MESSAGE_QUESTION,gtk.BUTTONS_YES_NO,texte)
  132.         if niveau == "question":
  133.             resp = dlg.run()
  134.             dlg.destroy()
  135.             return resp
  136.         else:
  137.             resp = dlg.run()
  138.             dlg.destroy()    
  139.  
  140.     def AfficherAPropos(self):
  141.         apropos = gtk.AboutDialog()
  142.         apropos.set_program_name("Createur de liste de lecture")
  143.         apropos.set_version("1.0")
  144.         apropos.set_copyright("(c) 2011 by Greg Walters")
  145.         apropos.set_comments("Ecrit pour le Full Circle Magazine")
  146.         apropos.set_website("http://thedesignatedgeek.com")
  147.         apropos.run()
  148.         apropos.destroy()            
  149.            
  150. class DialogueFichier:
  151.     def AfficheDialogue(self,type,CheminCourant):
  152.         if type == 0: # choix de fichiers
  153.             dialogue = gtk.FileChooserDialog("Choisir les fichiers a ajouter...",None,
  154.                                gtk.FILE_CHOOSER_ACTION_OPEN,
  155.                                (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
  156.                                 gtk.STOCK_OPEN, gtk.RESPONSE_OK))
  157.             filtre = gtk.FileFilter()
  158.             filtre.set_name("Fichiers musicaux")
  159.             filtre.add_pattern("*.mp3")
  160.             filtre.add_pattern("*.ogg")
  161.             filtre.add_pattern("*.wav")
  162.             dialogue.add_filter(filtre)
  163.             filtre = gtk.FileFilter()
  164.             filtre.set_name("Tous les fichiers")
  165.             filtre.add_pattern("*")
  166.             dialogue.add_filter(filtre)
  167.                                
  168.         else:          # choix de repertoire
  169.             dialogue = gtk.FileChooserDialog("Choisir le repertoire de sauvegarde...",None,
  170.                                 gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
  171.                                (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
  172.                                 gtk.STOCK_OPEN, gtk.RESPONSE_OK))
  173.            
  174.         dialogue.set_default_response(gtk.RESPONSE_OK)
  175.         dialogue.set_select_multiple(True)
  176.         if CheminCourant != "":
  177.             dialogue.set_current_folder(CheminCourant)
  178.         reponse = dialogue.run()
  179.         if reponse == gtk.RESPONSE_OK:
  180.             selectionFichiers = dialogue.get_filenames()
  181.             CheminCourant = dialogue.get_current_folder()
  182.             dialogue.destroy()
  183.             return (selectionFichiers,CheminCourant)
  184.         elif reponse == gtk.RESPONSE_CANCEL:
  185.             print 'Annulation, aucun fichier choisi'
  186.             dialogue.destroy()                
  187.                            
  188. if __name__ == "__main__":
  189.     createurLDL = CreateurListeDeLecture()
  190.     gtk.main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement