~ubuntu-branches/ubuntu/karmic/quodlibet/karmic

« back to all changes in this revision

Viewing changes to qltk/info.py

  • Committer: Bazaar Package Importer
  • Author(s): Luca Falavigna
  • Date: 2009-01-30 23:55:34 UTC
  • mfrom: (1.1.12 upstream)
  • Revision ID: james.westby@ubuntu.com-20090130235534-l4e72ulw0vqfo17w
Tags: 2.0-1ubuntu1
* Merge from Debian experimental (LP: #276856), remaining Ubuntu changes:
  + debian/patches/40-use-music-profile.patch:
    - Use the "Music and Movies" pipeline per default.
* Refresh the above patch for new upstream release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# -*- coding: utf-8 -*-
2
 
# Copyright 2004-2005 Joe Wreschnig, Michael Urman, Iñigo Serna
3
 
#
4
 
# This program is free software; you can redistribute it and/or modify
5
 
# it under the terms of the GNU General Public License version 2 as
6
 
# published by the Free Software Foundation
7
 
#
8
 
# $Id: info.py 3634 2006-07-14 19:38:41Z piman $
9
 
 
10
 
import os
11
 
 
12
 
import gtk
13
 
import pango
14
 
 
15
 
import const
16
 
import qltk
17
 
 
18
 
from parse import XMLFromPattern
19
 
from qltk.textedit import PatternEdit
20
 
 
21
 
class SongInfo(gtk.Label):
22
 
    _pattern = """\
23
 
\\<span weight='bold' size='large'\\><title>\\</span\\>\
24
 
<~length| (<~length>)><version|
25
 
\\<small\\>\\<b\\><version>\\</b\\>\\</small\\>><~people|
26
 
%(people)s><album|
27
 
\\<b\\><album>\\</b\\><discnumber| - %(disc)s>\
28
 
<part| - \\<b\\><part>\\</b\\>><tracknumber| - %(track)s>>""" % {
29
 
        # Translators: As in "by Artist Name"
30
 
        "people": _("by %s") % "<~people>",
31
 
        "disc": _("Disc %s") % "<discnumber>",
32
 
        "track": _("Track %s") % "<tracknumber>"
33
 
        }
34
 
 
35
 
    __PATTERN_FILENAME = os.path.join(const.USERDIR, "songinfo")
36
 
 
37
 
    def __init__(self, library, player):
38
 
        super(SongInfo, self).__init__()
39
 
        self.set_ellipsize(pango.ELLIPSIZE_END)
40
 
        self.set_selectable(True)
41
 
        self.set_alignment(0.0, 0.0)
42
 
        library.connect_object('changed', self.__check_change, player)
43
 
        player.connect('song-started', self.__check_started)
44
 
 
45
 
        self.connect_object('populate-popup', self.__menu, player)
46
 
 
47
 
        try: self._pattern = file(self.__PATTERN_FILENAME).read().rstrip()
48
 
        except EnvironmentError: pass
49
 
        self._compiled = XMLFromPattern(self._pattern)
50
 
 
51
 
    def __menu(self, player, menu):
52
 
        item = qltk.MenuItem(_("_Edit Display..."), gtk.STOCK_EDIT)
53
 
        item.show()
54
 
        item.connect_object('activate', self.__edit, player)
55
 
        menu.append(item)
56
 
 
57
 
    def __edit(self, player):
58
 
        editor = PatternEdit(self, SongInfo._pattern)
59
 
        editor.text = self._pattern
60
 
        editor.apply.connect_object('clicked', self.__set, editor, player)
61
 
 
62
 
    def __set(self, edit, player):
63
 
        self._pattern = edit.text.rstrip()
64
 
        if (self._pattern == SongInfo._pattern):
65
 
            try: os.unlink(self.__PATTERN_FILENAME)
66
 
            except OSError: pass
67
 
        else:
68
 
            pattern_file = file(os.path.join(const.USERDIR, "songinfo"), "w")
69
 
            pattern_file.write(self._pattern + "\n")
70
 
            pattern_file.close()
71
 
        self._compiled = XMLFromPattern(self._pattern)
72
 
        self.__update_info(player)
73
 
 
74
 
    def __check_change(self, player, songs):
75
 
        if player.info in songs:
76
 
            self.__update_info(player)
77
 
 
78
 
    def __check_started(self, player, song):
79
 
        if player.song is None:
80
 
            self.__update_info(player)
81
 
 
82
 
    def __update_info(self, player):
83
 
        if player.info is not None:
84
 
            text = self._compiled % player.info
85
 
        else:
86
 
            text = "<span size='xx-large'>%s</span>" % _("Not playing")
87
 
        self.set_markup(text)