Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- import sys
- from mutagen.mp3 import MP3
- try:
- import pygtk
- pygtk.require("2.0")
- except:
- pass
- try:
- import gtk
- import gtk.glade
- except:
- sys.exit(1)
- class PlayListCreator:
- def __init__(self):
- self.gladefile = "playlistmaker.glade"
- self.wTree = gtk.glade.XML(self.gladefile,"MainWindow")
- self.SetEventDictionary()
- self.SetWidgetReferences()
- self.SetupTreeview()
- self.CurrentPath = ""
- self.CurrentRow = 0
- self.RowCount = 0
- def SetEventDictionary(self):
- dict = {"on_MainWindow_destroy": gtk.main_quit,
- "on_tbtnQuit_clicked": gtk.main_quit,
- "on_tbtnAdd_clicked": self.on_tbtnAdd_clicked,
- "on_tbtnDelete_clicked": self.on_tbtnDelete_clicked,
- "on_tbtnClearAll_clicked": self.on_tbtnClearAll_clicked,
- "on_tbtnMoveToTop_clicked": self.on_tbtnMoveToTop_clicked,
- "on_tbtnMoveUp_clicked": self.on_tbtnMoveUp_clicked,
- "on_tbtnMoveDown_clicked": self.on_tbtnMoveDown_clicked,
- "on_tbtnMoveToBottom_clicked": self.on_tbtnMoveToBottom_clicked,
- "on_tbtnAbout_clicked": self.on_tbtnAbout_clicked,
- "on_btnGetFolder_clicked": self.on_btnGetFolder_clicked,
- "on_btnSavePlaylist_clicked": self.on_btnSavePlaylist_clicked}
- self.wTree.signal_autoconnect(dict)
- def SetWidgetReferences(self):
- self.txtFilename = self.wTree.get_widget("txtFilename")
- self.txtPath = self.wTree.get_widget("txtPath")
- self.tbtnAdd = self.wTree.get_widget("tbtnAdd")
- self.tbtnDelete = self.wTree.get_widget("tbtnDelete")
- self.tbtnClearAll = self.wTree.get_widget("tbtnClearAll")
- self.tbtnQuit = self.wTree.get_widget("tbtnQuit")
- self.tbtnAbout = self.wTree.get_widget("tbtnAbout")
- self.tbtnMoveToTop = self.wTree.get_widget("tbtnMoveToTop")
- self.tbtnMoveUp = self.wTree.get_widget("tbtnMoveUp")
- self.tbtnMoveDown = self.wTree.get_widget("tbtnMoveDown")
- self.tbtnMoveToBottom = self.wTree.get_widget("tbtnMoveToBottom")
- self.btnGetFolder = self.wTree.get_widget("btnGetFolder")
- self.btnSavePlaylist = self.wTree.get_widget("btnSavePlaylist")
- self.sbar = self.wTree.get_widget("statusbar1")
- self.context_id = self.sbar.get_context_id("Statusbar")
- def SetupTreeview(self):
- self.cFName = 0
- self.cFType = 1
- self.cFPath = 2
- self.sFName = "Filename"
- self.sFType = "Type"
- self.sFPath = "Folder"
- self.treeview = self.wTree.get_widget("treeview1")
- self.AddPlaylistColumn(self.sFName,self.cFName)
- self.AddPlaylistColumn(self.sFType,self.cFType)
- self.AddPlaylistColumn(self.sFPath,self.cFPath)
- self.playList = gtk.ListStore(str,str,str)
- self.treeview.set_model(self.playList)
- self.treeview.set_grid_lines(gtk.TREE_VIEW_GRID_LINES_BOTH)
- def AddPlaylistColumn(self,title,columnId):
- column = gtk.TreeViewColumn(title,gtk.CellRendererText(),text=columnId)
- column.set_resizable(True)
- column.set_sort_column_id(columnId)
- self.treeview.append_column(column)
- def on_tbtnAdd_clicked(self,widget):
- #self.MessageBox("info","Button Add was clicked...")
- fd = FileDialog()
- selectedfiles,self.CurrentPath = fd.ShowDialog(0,self.CurrentPath)
- ## for f in selectedfiles:
- ## print "User selected %s" % f
- ## print "Current path is %s" % self.CurrentPath
- self.AddFilesToTreeview(selectedfiles)
- def on_tbtnDelete_clicked(self,widget):
- self.MessageBox("info","Button Delete was clicked...")
- def on_tbtnClearAll_clicked(self,widget):
- self.MessageBox("info","Button ClearAll was clicked...")
- def on_tbtnMoveToTop_clicked(self,widget):
- self.MessageBox("info","Button MoveToTop was clicked...")
- def on_tbtnMoveUp_clicked(self,widget):
- self.MessageBox("info","Button MoveUp was clicked...")
- def on_tbtnMoveDown_clicked(self,widget):
- self.MessageBox("info","Button MoveDown was clicked...")
- def on_tbtnMoveToBottom_clicked(self,widget):
- self.MessageBox("info","Button MoveToBottom was clicked...")
- def on_tbtnAbout_clicked(self,widget):
- #self.MessageBox("info","Button About was clicked...")
- self.ShowAbout()
- def on_btnGetFolder_clicked(self,widget):
- self.MessageBox("info","Button GetFolder was clicked...")
- def on_btnSavePlaylist_clicked(self,widget):
- self.MessageBox("info","Button SavePlaylist was clicked...")
- def AddFilesToTreeview(self,FileList):
- counter = 0
- for f in FileList:
- extStart = f.rfind(".")
- fnameStart = f.rfind("/")
- extension = f[extStart+1:]
- fname = f[fnameStart+1:extStart]
- fpath = f[:fnameStart]
- data = [fname,extension,fpath]
- self.playList.append(data)
- counter += 1
- self.RowCount += counter
- self.sbar.push(self.context_id,"%s files added for a total of %d" % (counter,self.RowCount))
- def MessageBox(self,level,text):
- if level == "info":
- dlg = gtk.MessageDialog(None,0,gtk.MESSAGE_INFO,gtk.BUTTONS_OK,text)
- elif level == "warning":
- dlg = gtk.MessageDialog(None,0,gtk.MESSAGE_WARNING,gtk.BUTTONS_OK,text)
- elif level == "error":
- dlg = gtk.MessageDialog(None,0,gtk.MESSAGE_ERROR,gtk.BUTTONS_OK,text)
- elif level == "question":
- dlg = gtk.MessageDialog(None,0,gtk.MESSAGE_QUESTION,gtk.BUTTONS_YES_NO,text)
- if level == "question":
- resp = dlg.run()
- dlg.destroy()
- return resp
- else:
- resp = dlg.run()
- dlg.destroy()
- def ShowAbout(self):
- about = gtk.AboutDialog()
- about.set_program_name("Playlist Maker")
- about.set_version("1.0")
- about.set_copyright("(c) 2011 by Greg Walters")
- about.set_comments("Written for Full Circle Magazine")
- about.set_website("http://thedesignatedgeek.com")
- about.run()
- about.destroy()
- class FileDialog:
- def ShowDialog(self,which,CurrentPath):
- if which == 0: # file chooser
- dialog = gtk.FileChooserDialog("Select files to add...",None,
- gtk.FILE_CHOOSER_ACTION_OPEN,
- (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
- gtk.STOCK_OPEN, gtk.RESPONSE_OK))
- filter = gtk.FileFilter()
- filter.set_name("Music Files")
- filter.add_pattern("*.mp3")
- filter.add_pattern("*.ogg")
- filter.add_pattern("*.wav")
- dialog.add_filter(filter)
- filter = gtk.FileFilter()
- filter.set_name("All files")
- filter.add_pattern("*")
- dialog.add_filter(filter)
- else: # folder chooser
- dialog = gtk.FileChooserDialog("Select Save Folder..",None,
- gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
- (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
- gtk.STOCK_OPEN, gtk.RESPONSE_OK))
- dialog.set_default_response(gtk.RESPONSE_OK)
- dialog.set_select_multiple(True)
- if CurrentPath != "":
- dialog.set_current_folder(CurrentPath)
- response = dialog.run()
- if response == gtk.RESPONSE_OK:
- fileselection = dialog.get_filenames()
- CurrentPath = dialog.get_current_folder()
- dialog.destroy()
- return (fileselection,CurrentPath)
- elif response == gtk.RESPONSE_CANCEL:
- print 'Closed, no files selected'
- dialog.destroy()
- if __name__ == "__main__":
- plc = PlayListCreator()
- gtk.main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement