Changeset 9fed25d
- Timestamp:
- Mar 5, 2011, 9:00:50 PM (14 years ago)
- Branches:
- master
- Children:
- e541733
- Parents:
- a50d28b
- git-author:
- Danny <danny@…> (03/05/11 21:00:50)
- git-committer:
- Danny <danny@…> (03/05/11 21:00:50)
- Location:
- rhythmbox
- Files:
-
- 1 added
- 2 deleted
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
rhythmbox/__init__.py
r30beeab r9fed25d 1 """ 2 This module implements a Rhythmbox plugin that sends selected track to a 3 printer queue. It's meant to be used with gutenbach, a music spooling printer 4 server. 1 from __future__ import division 5 2 6 The plugin uses lpr to send the files to gutenbach.7 """8 import gtk9 3 import rb 4 import gtk, gtk.glade, gconf 5 import gobject 6 import sys, os 7 import locale, datetime, time 10 8 import subprocess 11 9 import urllib 12 10 import urlparse 13 11 14 # UI Change is an extra item added to right-click menu when clicking on tracks 15 popup_ui = """ 12 #fade_steps = 50 13 14 ui_str = ''' 16 15 <ui> 17 16 <popup name="BrowserSourceViewPopup"> 18 <menuitem name="Gutenbach" action=" SendToGutenbach"/>17 <menuitem name="Gutenbach" action="GutenbachDialog"/> 19 18 </popup> 20 19 </ui> 21 """ 20 ''' 21 22 22 class GutenbachPlugin(rb.Plugin): 23 def __init__ (self):24 rb.Plugin.__init__ (self)23 def __init__ (self): 24 rb.Plugin.__init__ (self) 25 25 26 def activate(self, shell): 27 """Adds a new item to the right-click menu which allows 28 sending music files to the gutenbach server. 29 """ 26 def activate (self, shell): 27 data = dict() 28 manager = shell.get_player().get_property('ui-manager') 30 29 self.shell = shell 31 # Create action for sending a track to gutenbach 32 action = gtk.Action('SendToGutenbach', _('Send to gutenbach'), 33 _("Queue selected tracks to the gutenbach server."), 34 "") 35 action.connect('activate', self.gutenbach_action, shell) 36 action_group = gtk.ActionGroup('GutenbachActionGroup') 37 action_group.add_action(action) 38 manager = shell.get_ui_manager() 39 manager.insert_action_group(action_group) 40 manager.add_ui_from_string(popup_ui) 30 action = gtk.Action('GutenbachDialog', _('_Send to gutenbach'), _('Spool song to gutenbach server'), None); 31 action.connect('activate', self.show_conf_dialog) 32 data['action_group'] = gtk.ActionGroup('GutenbachGroup') 33 data['action_group'].add_action(action) 34 manager.insert_action_group(data['action_group'], 0) 41 35 42 # Default configuration options 43 self.printer = "printername" 44 self.printer_host = "hostname" 36 data['ui_id'] = manager.add_ui_from_string(ui_str) 37 manager.ensure_update() 38 shell.set_data('GutenbachInfo', data) 39 40 45 41 46 42 def deactivate(self, shell): 43 self.toolbar.remove(self.separator) 44 data = shell.get_data('GutenbachInfo') 45 manager = shell.get_player().get_property('ui-manager') 46 manager.remove_ui(data['ui_id']) 47 del self.player 48 del self.separator 49 del self.toolbar 47 50 del self.shell 48 51 49 def gutenbach_action(self, action, shell): 50 """An action called when the user clicks the right-click menu item 51 to send a track to gutenbach. 52 This function calls an instance of lpr for each file to be added. 53 """ 54 source = shell.get_property("selected-source") 52 def show_conf_dialog(self, action): 53 self.wTree = gtk.glade.XML(self.find_file('gutenbach-rhythmbox-2.glade')) 54 widgets = {} 55 widgets['gutenbach-dialog'] = self.wTree.get_widget('gutenbach-dialog') 56 dic = { 57 "on_gutenbach-ok_clicked" : self.process, 58 "on_windowMain_destroy" : self.quit, 59 } 60 61 self.wTree.signal_autoconnect( dic ) 62 63 # Fix proper Dialog placements 64 widgets['gutenbach-dialog'].set_transient_for(self.shell.props.window) 65 66 def gconf_path(key): 67 return '%s%s' % (gconf_plugin_path, key) 68 69 70 widget = None 71 try: 72 memf = open('savedqueue','r+') 73 except IOError: 74 memf = file('savedqueue', 'wt') 75 memf.close() 76 memf = open('savedqueue','r+') 77 memLine = memf.readline() 78 if memLine != "": 79 left = memLine 80 right = memf.readline() 81 self.wTree.get_widget("gutenbach-printer-entry").set_text(left.rstrip('\n')) 82 self.wTree.get_widget("gutenbach-host-entry").set_text(right.rstrip('\n')) 83 memf.close() 84 widgets['gutenbach-dialog'].run() 85 self.process(widget) 86 widgets['gutenbach-dialog'].destroy() 87 def process(self, widget): 88 memf = open('savedqueue','r+') 89 printerMem = (self.wTree.get_widget("gutenbach-printer-entry").get_text()) 90 hostMem = (self.wTree.get_widget("gutenbach-host-entry").get_text()) 91 memf.write(printerMem) 92 memf.write("\n") 93 memf.write(hostMem) 94 memf.write("\n") 95 memf.close(); 96 self.process_songs(printerMem, hostMem) 97 # stuff that does things 98 def process_songs(self, printer, host): 99 source = self.shell.get_property("selected-source") 55 100 # For each track currently selected in the song browser 56 101 for entry in source.get_entry_view().get_selected_entries(): … … 60 105 if p.scheme == "file": 61 106 path = p.path 62 if self.printer_host: 63 printer = '@'.join([self.printer, self.printer_host]) 64 else: 65 printer = self.printer 66 command = 'lpr -P %s "%s"' % (printer, path) 107 if host: 108 print "there is a host" 109 # printer = '@'.join([printer, printer_host]) 110 111 printer = printer 112 #command = 'gbr "%s"' % (path) 113 command = 'lpr -H%s -P%s "%s"' % (host,printer, path) 67 114 print "About to run command '%s'" % command 68 115 subprocess.Popen(command, shell=True) 69 116 def quit(self, widget): 117 return 118 -
rhythmbox/gutenbach.rb-plugin
r30beeab r9fed25d 3 3 Module=gutenbach 4 4 IAge=1 5 Name=gutenbach 6 Description="Print" tunes to the gutenbach server 7 Authors=Nimrod Gileadi <nimrodg@mit.edu> 5 Name=Gutenbach 6 Description=Enable printing to a Gutenbach queue 7 Authors=Kyle Brogle <broglek@bu.edu> 8 Copyright=Copyright © 2010 Kyle Brogle 9 Website=http://gutenbach.mit.edu
Note: See TracChangeset
for help on using the changeset viewer.