Changeset 473

Show
Ignore:
Timestamp:
10/15/06 16:32:51 (2 years ago)
Author:
nicfit
Message:

Some rearrangement. xspf is still not complete.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/Makefile.in

    r462 r473  
    4242module: 
    4343        ${PYTHON} setup.py build 
    44         ${MAKE} -C ./src/mmkeys all 
    4544 
    4645etc/mesk.desktop: etc/mesk.desktop.in 
     
    5049install: all 
    5150        ${PYTHON} setup.py install --prefix=${prefix} 
    52         #${MAKE} -C src/mmkeys install 
    5351 
    5452        # Code 
     
    5755        install -m 755 -d ${libdir}/mesk 
    5856        install -m 644 ./src/*.py ${libdir}/mesk 
    59         install -m 644 ./src/*.glade ${libdir}/mesk 
    60         install -m 644 ./src/mmkeys/mmkeys.so ${libdir}/mesk 
    6157        # 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 
    6462        # Plugins 
    6563        install -m 755 -d ${libdir}/mesk/plugins 
     
    9189          install -m 755 -d "${datadir}/pixmaps";\ 
    9290        fi 
    93         install -m 644 ./src/images/mesk.svg ${datadir}/pixmaps 
     91        install -m 644 ./src/data/images/mesk.svg ${datadir}/pixmaps 
    9492        # Menu/panel icon 
    9593        for sz in 16 22 32 48; do \ 
     
    9795            install -m 755 -d "${datadir}/icons/hicolor/$${sz}x$${sz}/apps"; \ 
    9896          fi; \ 
    99           install -m 644 ./src/images/mesk-$${sz}.png \ 
     97          install -m 644 ./src/data/images/mesk-$${sz}.png \ 
    10098                  "${datadir}/icons/hicolor/$${sz}x$${sz}/apps/mesk.png"; \ 
    10199        done 
     
    122120        find . -name \*.pyc -exec rm '{}' \; 
    123121        find . -name \*.pyo -exec rm '{}' \; 
    124         ${MAKE} -C src/mmkeys clean 
    125122 
    126123distclean: clean 
     
    137134        -rm Makefile 
    138135        -${MAKE} -C po distclean 
    139         ${MAKE} -C src/mmkeys distclean 
    140136 
    141137maintainer-clean: 
  • trunk/setup.py.in

    r313 r473  
    1212            'mesk.plugin', 
    1313            'mesk.audio', 
     14            'mesk.playlist', 
    1415           ], 
    1516  package_dir={'mesk': 'src/mesk', 
     
    1718               'mesk.plugin': 'src/mesk/plugin', 
    1819               'mesk.audio': 'src/mesk/audio', 
     20               'mesk.playlist': 'src/mesk/playlist', 
    1921              } 
    2022) 
  • trunk/src/about_dialog.py

    r469 r473  
    2828class AboutDialog: 
    2929    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') 
    3132        self.xml.signal_autoconnect(self) 
    3233        self.dialog = self.xml.get_widget('about_dialog') 
     
    3637 
    3738        img = gtk.Image() 
    38         img.set_from_file('images/mesk_felon.png') 
     39        img.set_from_file('data/images/mesk_felon.png') 
    3940        self.dialog.set_logo(img.get_pixbuf()) 
    4041 
  • trunk/src/album_cover_control.py

    r471 r473  
    5252    MAX_LARGE_DISPLAY_WIDTH = 600 
    5353    MAX_LARGE_DISPLAY_HEIGHT = 600 
    54     DEFAULT_COVER = 'images/mesk.svg' 
     54    DEFAULT_COVER = 'data/images/mesk.svg' 
    5555 
    5656    def __init__(self, parent_xml, audio_control): 
  • trunk/src/audio_control.py

    r471 r473  
    5858 
    5959        # 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') 
    6162        vol_xml.signal_autoconnect(self) 
    6263        self._volume_window = vol_xml.get_widget('volume_slider_window') 
     
    458459    def _handle_http_auth(self, uri): 
    459460        auth_xml = mesk.gtk_utils.get_glade('http_auth_dialog', 
    460                                             'mesk_extras.glade') 
     461                                            'audio_control.glade') 
    461462        auth_dialog = auth_xml.get_widget('http_auth_dialog') 
    462463        auth_xml.get_widget('url_label').set_text(str(uri)) 
     
    644645            if not self._volume_mute_img: 
    645646                img = gtk.Image() 
    646                 img.set_from_file('images/audio-volume-muted.png') 
     647                img.set_from_file('data/images/audio-volume-muted.png') 
    647648                self._volume_mute_img = img 
    648649            new_img = self._volume_mute_img 
     
    650651            if not self._volume_low_img: 
    651652                img = gtk.Image() 
    652                 img.set_from_file('images/audio-volume-low.png') 
     653                img.set_from_file('data/images/audio-volume-low.png') 
    653654                self._volume_low_img = img 
    654655            new_img = self._volume_low_img 
     
    656657            if not self._volume_medium_img: 
    657658                img = gtk.Image() 
    658                 img.set_from_file('images/audio-volume-medium.png') 
     659                img.set_from_file('data/images/audio-volume-medium.png') 
    659660                self._volume_medium_img = img 
    660661            new_img = self._volume_medium_img 
     
    662663            if not self._volume_high_img: 
    663664                img = gtk.Image() 
    664                 img.set_from_file('images/audio-volume-high.png') 
     665                img.set_from_file('data/images/audio-volume-high.png') 
    665666                self._volume_high_img = img 
    666667            new_img = self._volume_high_img 
     
    711712        if event.button == 3: 
    712713            popup_xml = mesk.gtk_utils.get_glade('volume_button_menu', 
    713                                                  'mesk_extras.glade') 
     714                                                 'audio_control.glade') 
    714715            popup_xml.signal_autoconnect(self) 
    715716            popup = popup_xml.get_widget('volume_button_menu') 
  • trunk/src/control.py

    r435 r473  
    5959    def __init__(self): 
    6060        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') 
    6263        self.widget = self.xml.get_widget('empty_control') 
    6364        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') 
    6566        self.widget.show() 
  • trunk/src/main.py

    r468 r473  
    174174        (major, minor, maint) = map(int, old_version.split('.')) 
    175175 
    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 
    205210 
    206211import optparse 
  • trunk/src/main_window.py

    r469 r473  
    4646        self._controls = [] 
    4747 
    48         mesk.window.Window.__init__(self, 'main_window', 'mesk_gui.glade') 
     48        mesk.window.Window.__init__(self, 'main_window', 'main_window.glade') 
    4949        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') 
    5151 
    5252        self._notebook = self.xml.get_widget('notebook') 
  • trunk/src/mesk/gtk_utils.py

    r384 r473  
    4141    first check for GNOME, then XFCE and last KDE 
    4242    it returns None on failure or else a string 'Font Size' ''' 
    43          
     43 
    4444    # Gnome/gconf 
    4545    try: 
     
    6060    xfce_config_file = os.path.join(xdg_config_home, 
    6161                                    'xfce4/mcs_settings/gtk.xml') 
    62      
     62 
    6363    # KDE 
    6464    kde_config_file = os.path.expanduser('~/.kde/share/config/kdeglobals') 
    65      
     65 
    6666    if os.path.exists(xfce_config_file): 
    6767        try: 
     
    8989             print >> sys.stderr, \ 
    9090                      'Error: cannot open %s for reading' % kde_config_file 
    91      
     91 
    9292    return 'Sans 10' 
    9393 
     
    9898    return cursor 
    9999 
    100 def get_glade(symbol, glade_file = 'mesk_gui.glade'): 
    101     return gtk.glade.XML(glade_file, symbol, 'mesk') 
     100def 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  
    3232META_SHUFFLE = 'http://mesk.nicfit.net/playlist/shuffle' 
    3333META_REPEAT = 'http://mesk.nicfit.net/playlist/repeat' 
     34META_VERSION = 'http://mesk.nicfit.net/version' 
    3435 
    3536def load(pl_data, pl): 
     
    4243    pl.set_shuffle(False) 
    4344    pl.set_repeat(False) 
     45    same_version = False 
    4446    for meta_elem in pl_elem.getElementsByTagName('meta'): 
    4547        if meta_elem.getAttribute('rel') == META_CURRENT: 
     
    5254        elif meta_elem.getAttribute('rel') == META_REPEAT: 
    5355            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 
    5461 
    5562    list_elem = pl_elem.getElementsByTagName('trackList')[0] 
     
    6067            continue 
    6168 
    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) 
    8189 
    8290        try: 
     
    101109    fp.write(pad(indent) + 
    102110             '<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)) 
    103113    fp.write(pad(indent) + '<meta rel="%s">%d</meta>\n' % 
    104114                           (META_CURRENT, pl.get_curr_index())) 
  • trunk/src/playlist_control.py

    r471 r473  
    8181 
    8282        # 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') 
    8485        self.tab_widget = self.tab_label_xml.get_widget('playlist_tab_ebox') 
    8586        self.tab_widget.connect('button-press-event', 
     
    9394 
    9495        # 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') 
    9698        self.widget = self.widget_xml.get_widget('playlist_control') 
    9799        self.widget_xml.signal_autoconnect(self) 
    98100 
    99101        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') 
    101103        img.set_from_pixbuf(pix) 
    102104        self.widget_xml.get_widget('shuffle_togglebutton').set_image(img) 
    103105 
    104106        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') 
    106108        img.set_from_pixbuf(pix) 
    107109        self.widget_xml.get_widget('repeat_togglebutton').set_image(img) 
     
    214216 
    215217        # 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') 
    217220        self._pl_menu = menu_xml.get_widget('playlist_context_menu') 
    218221        menu_xml.signal_autoconnect(self) 
     
    455458            # Show context menu 
    456459            popup_xml = mesk.gtk_utils.get_glade('playlist_tab_menu', 
    457                                                  'mesk_extras.glade') 
     460                                                 'playlist.glade') 
    458461            popup_xml.signal_autoconnect(self) 
    459462            popup = popup_xml.get_widget('playlist_tab_menu') 
     
    14151418        gobject.GObject.__init__(self) 
    14161419        xml = mesk.gtk_utils.get_glade('playlist_info_dialog', 
    1417                                        'mesk_extras.glade') 
     1420                                       'playlist.glade') 
    14181421        xml.signal_autoconnect(self) 
    14191422 
  • trunk/src/preference_window.py

    r471 r473  
    2929class PreferenceWindow(mesk.window.Window): 
    3030    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') 
    3233 
    3334        notebook = self.xml.get_widget('pref_notebook') 
  • trunk/src/tips_window.py

    r423 r473  
    2323class TipsWindow(mesk.window.Window): 
    2424    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') 
    2626        mesk.log.debug('TipsWindow loaded with %d tips' % len(TIPS)) 
    2727