Changeset 473
- Timestamp:
- 10/15/06 16:32:51 (2 years ago)
- Files:
-
- trunk/Makefile.in (modified) (7 diffs)
- trunk/setup.py.in (modified) (2 diffs)
- trunk/src/about_dialog.py (modified) (2 diffs)
- trunk/src/album_cover_control.py (modified) (1 diff)
- trunk/src/audio_control.py (modified) (7 diffs)
- trunk/src/control.py (modified) (1 diff)
- trunk/src/data/glade (added)
- trunk/src/data/glade/about_dialog.glade (added)
- trunk/src/data/glade/audio_control.glade (added)
- trunk/src/data/glade/main_window.glade (added)
- trunk/src/data/glade/playlist.glade (added)
- trunk/src/data/glade/preference_window.glade (added)
- trunk/src/data/glade/tips_window.glade (added)
- trunk/src/data/images (added)
- trunk/src/data/images/audio-volume-high.png (added)
- trunk/src/data/images/audio-volume-low.png (added)
- trunk/src/data/images/audio-volume-medium.png (added)
- trunk/src/data/images/audio-volume-muted.png (added)
- trunk/src/data/images/image-missing.svg (added)
- trunk/src/data/images/mesk-16.png (added)
- trunk/src/data/images/mesk-22.png (added)
- trunk/src/data/images/mesk-32.png (added)
- trunk/src/data/images/mesk-48.png (added)
- trunk/src/data/images/mesk-splash.jpg (added)
- trunk/src/data/images/mesk.svg (added)
- trunk/src/data/images/mesk_felon.png (added)
- trunk/src/data/images/stock_repeat.png (added)
- trunk/src/data/images/stock_shuffle.png (added)
- trunk/src/images/audio-volume-high.png (deleted)
- trunk/src/images/audio-volume-low.png (deleted)
- trunk/src/images/audio-volume-medium.png (deleted)
- trunk/src/images/audio-volume-muted.png (deleted)
- trunk/src/images/image-missing.svg (deleted)
- trunk/src/images/mesk-16.png (deleted)
- trunk/src/images/mesk-22.png (deleted)
- trunk/src/images/mesk-32.png (deleted)
- trunk/src/images/mesk-48.png (deleted)
- trunk/src/images/mesk-splash.jpg (deleted)
- trunk/src/images/mesk.svg (deleted)
- trunk/src/images/mesk_felon.png (deleted)
- trunk/src/images/stock_repeat.png (deleted)
- trunk/src/images/stock_shuffle.png (deleted)
- trunk/src/main.py (modified) (1 diff)
- trunk/src/main_window.py (modified) (1 diff)
- trunk/src/mesk/gtk_utils.py (modified) (4 diffs)
- trunk/src/mesk/playlist/xspf.py (modified) (5 diffs)
- trunk/src/mesk_extras.glade (deleted)
- trunk/src/mesk_gui.glade (deleted)
- trunk/src/playlist_control.py (modified) (5 diffs)
- trunk/src/preference_window.py (modified) (1 diff)
- trunk/src/tips_window.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/Makefile.in
r462 r473 42 42 module: 43 43 ${PYTHON} setup.py build 44 ${MAKE} -C ./src/mmkeys all45 44 46 45 etc/mesk.desktop: etc/mesk.desktop.in … … 50 49 install: all 51 50 ${PYTHON} setup.py install --prefix=${prefix} 52 #${MAKE} -C src/mmkeys install53 51 54 52 # Code … … 57 55 install -m 755 -d ${libdir}/mesk 58 56 install -m 644 ./src/*.py ${libdir}/mesk 59 install -m 644 ./src/*.glade ${libdir}/mesk60 install -m 644 ./src/mmkeys/mmkeys.so ${libdir}/mesk61 57 # Data 62 install -m 755 -d ${libdir}/mesk/images 63 install -m 644 ./src/images/* ${libdir}/mesk/images 58 install -m 755 -d ${libdir}/mesk/data/images 59 install -m 644 ./src/data/images/* ${libdir}/mesk/data/images 60 install -m 755 -d ${libdir}/mesk/data/glade 61 install -m 644 ./src/data/glade/*.glade ${libdir}/mesk/data/glade 64 62 # Plugins 65 63 install -m 755 -d ${libdir}/mesk/plugins … … 91 89 install -m 755 -d "${datadir}/pixmaps";\ 92 90 fi 93 install -m 644 ./src/ images/mesk.svg ${datadir}/pixmaps91 install -m 644 ./src/data/images/mesk.svg ${datadir}/pixmaps 94 92 # Menu/panel icon 95 93 for sz in 16 22 32 48; do \ … … 97 95 install -m 755 -d "${datadir}/icons/hicolor/$${sz}x$${sz}/apps"; \ 98 96 fi; \ 99 install -m 644 ./src/ images/mesk-$${sz}.png \97 install -m 644 ./src/data/images/mesk-$${sz}.png \ 100 98 "${datadir}/icons/hicolor/$${sz}x$${sz}/apps/mesk.png"; \ 101 99 done … … 122 120 find . -name \*.pyc -exec rm '{}' \; 123 121 find . -name \*.pyo -exec rm '{}' \; 124 ${MAKE} -C src/mmkeys clean125 122 126 123 distclean: clean … … 137 134 -rm Makefile 138 135 -${MAKE} -C po distclean 139 ${MAKE} -C src/mmkeys distclean140 136 141 137 maintainer-clean: trunk/setup.py.in
r313 r473 12 12 'mesk.plugin', 13 13 'mesk.audio', 14 'mesk.playlist', 14 15 ], 15 16 package_dir={'mesk': 'src/mesk', … … 17 18 'mesk.plugin': 'src/mesk/plugin', 18 19 'mesk.audio': 'src/mesk/audio', 20 'mesk.playlist': 'src/mesk/playlist', 19 21 } 20 22 ) trunk/src/about_dialog.py
r469 r473 28 28 class AboutDialog: 29 29 def __init__(self): 30 self.xml = mesk.gtk_utils.get_glade('about_dialog') 30 self.xml = mesk.gtk_utils.get_glade('about_dialog', 31 'about_dialog.glade') 31 32 self.xml.signal_autoconnect(self) 32 33 self.dialog = self.xml.get_widget('about_dialog') … … 36 37 37 38 img = gtk.Image() 38 img.set_from_file(' images/mesk_felon.png')39 img.set_from_file('data/images/mesk_felon.png') 39 40 self.dialog.set_logo(img.get_pixbuf()) 40 41 trunk/src/album_cover_control.py
r471 r473 52 52 MAX_LARGE_DISPLAY_WIDTH = 600 53 53 MAX_LARGE_DISPLAY_HEIGHT = 600 54 DEFAULT_COVER = ' images/mesk.svg'54 DEFAULT_COVER = 'data/images/mesk.svg' 55 55 56 56 def __init__(self, parent_xml, audio_control): trunk/src/audio_control.py
r471 r473 58 58 59 59 # Volume slider window 60 vol_xml = mesk.gtk_utils.get_glade('volume_slider_window') 60 vol_xml = mesk.gtk_utils.get_glade('volume_slider_window', 61 'audio_control.glade') 61 62 vol_xml.signal_autoconnect(self) 62 63 self._volume_window = vol_xml.get_widget('volume_slider_window') … … 458 459 def _handle_http_auth(self, uri): 459 460 auth_xml = mesk.gtk_utils.get_glade('http_auth_dialog', 460 ' mesk_extras.glade')461 'audio_control.glade') 461 462 auth_dialog = auth_xml.get_widget('http_auth_dialog') 462 463 auth_xml.get_widget('url_label').set_text(str(uri)) … … 644 645 if not self._volume_mute_img: 645 646 img = gtk.Image() 646 img.set_from_file(' images/audio-volume-muted.png')647 img.set_from_file('data/images/audio-volume-muted.png') 647 648 self._volume_mute_img = img 648 649 new_img = self._volume_mute_img … … 650 651 if not self._volume_low_img: 651 652 img = gtk.Image() 652 img.set_from_file(' images/audio-volume-low.png')653 img.set_from_file('data/images/audio-volume-low.png') 653 654 self._volume_low_img = img 654 655 new_img = self._volume_low_img … … 656 657 if not self._volume_medium_img: 657 658 img = gtk.Image() 658 img.set_from_file(' images/audio-volume-medium.png')659 img.set_from_file('data/images/audio-volume-medium.png') 659 660 self._volume_medium_img = img 660 661 new_img = self._volume_medium_img … … 662 663 if not self._volume_high_img: 663 664 img = gtk.Image() 664 img.set_from_file(' images/audio-volume-high.png')665 img.set_from_file('data/images/audio-volume-high.png') 665 666 self._volume_high_img = img 666 667 new_img = self._volume_high_img … … 711 712 if event.button == 3: 712 713 popup_xml = mesk.gtk_utils.get_glade('volume_button_menu', 713 ' mesk_extras.glade')714 'audio_control.glade') 714 715 popup_xml.signal_autoconnect(self) 715 716 popup = popup_xml.get_widget('volume_button_menu') trunk/src/control.py
r435 r473 59 59 def __init__(self): 60 60 Control.__init__(self) 61 self.xml = mesk.gtk_utils.get_glade('empty_control') 61 self.xml = mesk.gtk_utils.get_glade('empty_control', 62 'main_window.glade') 62 63 self.widget = self.xml.get_widget('empty_control') 63 64 splash = self.xml.get_widget('splash_image') 64 splash.set_from_file(' images/mesk-splash.jpg')65 splash.set_from_file('data/images/mesk-splash.jpg') 65 66 self.widget.show() trunk/src/main.py
r468 r473 174 174 (major, minor, maint) = map(int, old_version.split('.')) 175 175 176 if minor == 1: # 0.1.x --> 0.2.x 177 # Sink name changes for Gstreamer 0.10.x 178 sink = mesk.config.get(mesk.CONFIG_AUDIO, 'gst_sink') 179 if sink == 'gconf': 180 sink = 'gconfaudiosink' 181 elif sink in ['alsa', 'oss', 'esd']: 182 sink += 'sink' 183 else: 184 sink = 'autoaudiosink' 185 mesk.config.set(mesk.CONFIG_AUDIO, 'gst_sink', sink) 186 187 # Remove unused 'auto_open' in all playlist configs 188 for sect in mesk.config.sections(): 189 if sect.startswith(mesk.CONFIG_PLAYLIST): 190 mesk.config.remove_option(sect, 'auto_open') 191 192 minor = 2 193 194 if minor == 2: # 0.2.x --> 0.3.x 195 # Update m3u playlists to xspf 196 import config 197 for name in config.get_all_playlist_names(): 198 sect = mesk.CONFIG_PLAYLIST + '.' + name 199 uri_str = mesk.config.get(sect, 'uri') 200 pl = mesk.playlist.load(mesk.uri.make_uri(uri_str), name) 201 print sect, pl 202 203 # FIXME 204 sys.exit(1) 176 if major == 0: 177 if minor == 1: # 0.1.x --> 0.2.x 178 # Sink name changes for Gstreamer 0.10.x 179 sink = mesk.config.get(mesk.CONFIG_AUDIO, 'gst_sink') 180 if sink == 'gconf': 181 sink = 'gconfaudiosink' 182 elif sink in ['alsa', 'oss', 'esd']: 183 sink += 'sink' 184 else: 185 sink = 'autoaudiosink' 186 mesk.config.set(mesk.CONFIG_AUDIO, 'gst_sink', sink) 187 188 # Remove unused 'auto_open' in all playlist configs 189 for sect in mesk.config.sections(): 190 if sect.startswith(mesk.CONFIG_PLAYLIST): 191 mesk.config.remove_option(sect, 'auto_open') 192 193 minor = 2 194 195 if minor == 2: # 0.2.x --> 0.3.x 196 # Update m3u playlists to xspf 197 #import dialogs 198 #md = dialogs.MessageDialog(None, modal=True) 199 #md.run() 200 # FIXME 201 #sys.exit(1) 202 return 203 import config 204 for name in config.get_all_playlist_names(): 205 sect = mesk.CONFIG_PLAYLIST + '.' + name 206 uri_str = mesk.config.get(sect, 'uri') 207 pl = mesk.playlist.load(mesk.uri.make_uri(uri_str), name) 208 print sect, pl 209 205 210 206 211 import optparse trunk/src/main_window.py
r469 r473 46 46 self._controls = [] 47 47 48 mesk.window.Window.__init__(self, 'main_window', 'm esk_gui.glade')48 mesk.window.Window.__init__(self, 'main_window', 'main_window.glade') 49 49 self.window.connect('key-press-event', self._on_window_key_press_event) 50 self.window.set_icon_from_file(' images/mesk-16.png')50 self.window.set_icon_from_file('data/images/mesk-16.png') 51 51 52 52 self._notebook = self.xml.get_widget('notebook') trunk/src/mesk/gtk_utils.py
r384 r473 41 41 first check for GNOME, then XFCE and last KDE 42 42 it returns None on failure or else a string 'Font Size' ''' 43 43 44 44 # Gnome/gconf 45 45 try: … … 60 60 xfce_config_file = os.path.join(xdg_config_home, 61 61 'xfce4/mcs_settings/gtk.xml') 62 62 63 63 # KDE 64 64 kde_config_file = os.path.expanduser('~/.kde/share/config/kdeglobals') 65 65 66 66 if os.path.exists(xfce_config_file): 67 67 try: … … 89 89 print >> sys.stderr, \ 90 90 'Error: cannot open %s for reading' % kde_config_file 91 91 92 92 return 'Sans 10' 93 93 … … 98 98 return cursor 99 99 100 def get_glade(symbol, glade_file = 'mesk_gui.glade'): 101 return gtk.glade.XML(glade_file, symbol, 'mesk') 100 def get_glade(symbol, glade_file=None): 101 '''Create a glade object for the named symbol. By default the symbol 102 name is also used as the glade filename. This can be overridden by 103 with the glade_file argument.''' 104 glade_dir = os.path.join("data", "glade") 105 if not glade_file: 106 glade_file = '%s.glade' % symbol 107 return gtk.glade.XML(os.path.join(glade_dir, glade_file), symbol, 'mesk') trunk/src/mesk/playlist/xspf.py
r462 r473 32 32 META_SHUFFLE = 'http://mesk.nicfit.net/playlist/shuffle' 33 33 META_REPEAT = 'http://mesk.nicfit.net/playlist/repeat' 34 META_VERSION = 'http://mesk.nicfit.net/version' 34 35 35 36 def load(pl_data, pl): … … 42 43 pl.set_shuffle(False) 43 44 pl.set_repeat(False) 45 same_version = False 44 46 for meta_elem in pl_elem.getElementsByTagName('meta'): 45 47 if meta_elem.getAttribute('rel') == META_CURRENT: … … 52 54 elif meta_elem.getAttribute('rel') == META_REPEAT: 53 55 pl.set_repeat(True) 56 elif meta_elem.getAttribute('rel') == META_REPEAT: 57 pl.set_repeat(True) 58 elif meta_elem.getAttribute('rel') == META_VERSION: 59 if _get_elem_text(meta_elem) == mesk.info.APP_VERSION: 60 same_version = True 54 61 55 62 list_elem = pl_elem.getElementsByTagName('trackList')[0] … … 60 67 continue 61 68 62 meta_data = mesk.audio.source.AudioMetaData() 63 for elem in track_elem.childNodes: 64 if elem.nodeType == elem.ELEMENT_NODE: 65 if elem.tagName == 'title': 66 meta_data.title = _get_elem_text(elem) 67 elif elem.tagName == 'creator': 68 meta_data.artist = _get_elem_text(elem) 69 elif elem.tagName == 'album': 70 meta_data.album = _get_elem_text(elem) 71 elif elem.tagName == 'duration': 72 meta_data.time_secs = int(_get_elem_text(elem)) / 1000 73 elif elem.tagName == 'trackNum': 74 meta_data.trac_num = int(_get_elem_text(elem)) 75 elif (elem.tagName == 'meta' and 76 elem.getAttribute('rel') == META_YEAR): 77 meta_data.year = _get_elem_text(elem) 78 79 # FIXME: 80 #meta_data = None 69 meta_data = None 70 # Not loading metadata from the files is much faster, but only do 71 # so when the same version of Mesk wrote the playlist. 72 if same_version: 73 meta_data = mesk.audio.source.AudioMetaData() 74 for elem in track_elem.childNodes: 75 if elem.nodeType == elem.ELEMENT_NODE: 76 if elem.tagName == 'title': 77 meta_data.title = _get_elem_text(elem) 78 elif elem.tagName == 'creator': 79 meta_data.artist = _get_elem_text(elem) 80 elif elem.tagName == 'album': 81 meta_data.album = _get_elem_text(elem) 82 elif elem.tagName == 'duration': 83 meta_data.time_secs = int(_get_elem_text(elem)) / 1000 84 elif elem.tagName == 'trackNum': 85 meta_data.trac_num = int(_get_elem_text(elem)) 86 elif (elem.tagName == 'meta' and 87 elem.getAttribute('rel') == META_YEAR): 88 meta_data.year = _get_elem_text(elem) 81 89 82 90 try: … … 101 109 fp.write(pad(indent) + 102 110 '<info>Made with Mesk-http://mesk.nicfit.net/</info>\n') 111 fp.write(pad(indent) + '<meta rel="%s">%s</meta>\n' % 112 (META_VERSION, mesk.info.APP_VERSION)) 103 113 fp.write(pad(indent) + '<meta rel="%s">%d</meta>\n' % 104 114 (META_CURRENT, pl.get_curr_index())) trunk/src/playlist_control.py
r471 r473 81 81 82 82 # Setup tab label 83 self.tab_label_xml = mesk.gtk_utils.get_glade('playlist_tab_ebox') 83 self.tab_label_xml = mesk.gtk_utils.get_glade('playlist_tab_ebox', 84 'main_window.glade') 84 85 self.tab_widget = self.tab_label_xml.get_widget('playlist_tab_ebox') 85 86 self.tab_widget.connect('button-press-event', … … 93 94 94 95 # The central widget for this control 95 self.widget_xml = mesk.gtk_utils.get_glade('playlist_control') 96 self.widget_xml = mesk.gtk_utils.get_glade('playlist_control', 97 'main_window.glade') 96 98 self.widget = self.widget_xml.get_widget('playlist_control') 97 99 self.widget_xml.signal_autoconnect(self) 98 100 99 101 img = gtk.Image() 100 pix = gtk.gdk.pixbuf_new_from_file(' images/stock_shuffle.png')102 pix = gtk.gdk.pixbuf_new_from_file('data/images/stock_shuffle.png') 101 103 img.set_from_pixbuf(pix) 102 104 self.widget_xml.get_widget('shuffle_togglebutton').set_image(img) 103 105 104 106 img = gtk.Image() 105 pix = gtk.gdk.pixbuf_new_from_file(' images/stock_repeat.png')107 pix = gtk.gdk.pixbuf_new_from_file('data/images/stock_repeat.png') 106 108 img.set_from_pixbuf(pix) 107 109 self.widget_xml.get_widget('repeat_togglebutton').set_image(img) … … 214 216 215 217 # Playlist context menu 216 menu_xml = mesk.gtk_utils.get_glade('playlist_context_menu') 218 menu_xml = mesk.gtk_utils.get_glade('playlist_context_menu', 219 'playlist.glade') 217 220 self._pl_menu = menu_xml.get_widget('playlist_context_menu') 218 221 menu_xml.signal_autoconnect(self) … … 455 458 # Show context menu 456 459 popup_xml = mesk.gtk_utils.get_glade('playlist_tab_menu', 457 ' mesk_extras.glade')460 'playlist.glade') 458 461 popup_xml.signal_autoconnect(self) 459 462 popup = popup_xml.get_widget('playlist_tab_menu') … … 1415 1418 gobject.GObject.__init__(self) 1416 1419 xml = mesk.gtk_utils.get_glade('playlist_info_dialog', 1417 ' mesk_extras.glade')1420 'playlist.glade') 1418 1421 xml.signal_autoconnect(self) 1419 1422 trunk/src/preference_window.py
r471 r473 29 29 class PreferenceWindow(mesk.window.Window): 30 30 def __init__(self): 31 mesk.window.Window.__init__(self, 'preference_window', 'mesk_gui.glade') 31 mesk.window.Window.__init__(self, 'preference_window', 32 'preference_window.glade') 32 33 33 34 notebook = self.xml.get_widget('pref_notebook') trunk/src/tips_window.py
r423 r473 23 23 class TipsWindow(mesk.window.Window): 24 24 def __init__(self): 25 mesk.window.Window.__init__(self, 'tips_window', ' mesk_extras.glade')25 mesk.window.Window.__init__(self, 'tips_window', 'tips_window.glade') 26 26 mesk.log.debug('TipsWindow loaded with %d tips' % len(TIPS)) 27 27
