Пример #1
0
    def __init__(self, settings, filename=None):
        self.__log = logging.getLogger('panucci.panucci.PanucciGUI')
        interface.register_gui(self)
        self.config = settings.config
        self.playlist = playlist.Playlist(self.config)

        self.app = QtGui.QApplication(["Panucci"])
        self.app.setWindowIcon(QtGui.QIcon(util.find_data_file('panucci.png')))
        self.main_window = QtGui.QMainWindow(None)
        if platform.FREMANTLE:
            self.main_window.setAttribute(QtCore.Qt.WA_Maemo5StackedWindow)
        self.main_window.closeEvent = self.close_main_window_callback
        self.create_actions()
        self.__player_tab = PlayerTab(self)
        self.__playlist_tab = qtplaylist.PlaylistTab(self, self.playlist)
        if platform.MAEMO:
            self.create_maemo_menus()
        else:
            self.create_menus()
        widget = QtGui.QWidget()
        widget.setLayout(self.__player_tab.mainbox)
        self.main_window.setCentralWidget(widget)
        self.main_window.show()
        self.playlist.init(filepath=filename)
        self.app.exec_()
Пример #2
0
    def __init__(self, settings, filename=None):
        self.__log = logging.getLogger('panucci.panucci.PanucciGUI')
        interface.register_gui(self)
        self.config = settings.config
        self.playlist = playlist.Playlist(self.config)

        self.app = QtGui.QApplication(["Panucci"])
        self.app.setWindowIcon(QtGui.QIcon(util.find_data_file('panucci.png')))
        self.main_window = QtGui.QMainWindow(None)
        if platform.FREMANTLE:
            self.main_window.setAttribute(QtCore.Qt.WA_Maemo5StackedWindow)
        self.main_window.closeEvent = self.close_main_window_callback
        self.create_actions()
        self.__player_tab = PlayerTab(self)
        self.__playlist_tab = qtplaylist.PlaylistTab(self, self.playlist)
        if platform.HANDSET:
            self.create_handset_menus()
        else:
            self.create_menus()
        widget = QtGui.QWidget()
        widget.setLayout(self.__player_tab.mainbox)
        self.main_window.setCentralWidget(widget)
        if platform.HARMATTAN:
            self.main_window.setAttribute(
                QtCore.Qt.WA_LockLandscapeOrientation)
        self.main_window.show()
        self.playlist.init(filepath=filename)
        self.app.exec_()
Пример #3
0
    def __init__(self, settings, filename=None):
        self.__log = logging.getLogger('panucci.panucci.PanucciGUI')
        interface.register_gui(self)
        self.config = settings.config
        self.playlist = playlist.Playlist(self.config)

        window = gtk.Window(gtk.WindowType.TOPLEVEL)
        self.main_window = window
        window.set_title('Panucci')
        self.window_icon = util.find_data_file('panucci.png')
        if self.window_icon is not None:
            window.set_icon_from_file( self.window_icon )
        window.set_default_size(400, -1)
        window.set_border_width(0)
        window.connect("destroy", self.destroy)

        self.__player_tab = PlayerTab(self)
        self.__playlist_tab = gtkplaylist.PlaylistTab(self, self.playlist)

        self.create_actions()

        self.playlist_window = gtk.Window(gtk.WindowType.TOPLEVEL)
        self.playlist_window.connect('delete-event', gtk.Widget.hide_on_delete)
        self.playlist_window.set_title(_('Playlist'))
        self.playlist_window.set_transient_for(self.main_window)
        self.playlist_window.add(self.__playlist_tab)

        menu_vbox = gtk.Grid.new()
        menu_vbox.set_property("orientation", gtk.Orientation.VERTICAL)
        window.add(menu_vbox)
        menu_bar = gtk.MenuBar()
        self.create_desktop_menu(menu_bar)
        menu_vbox.add(menu_bar)
        menu_bar.show()
        menu_vbox.add(self.__player_tab)

        # Tie it all together!
        self.__ignore_queue_check = False
        self.__window_fullscreen = False

        self.main_window.connect('key-press-event', self.on_key_press)
        self.playlist.register( 'file_queued', self.on_file_queued )

        self.playlist.register( 'playlist-to-be-overwritten',
                                  self.check_queue )
        self.__player_tab.register( 'select-current-item-request',
                                    self.__select_current_item )

        self.main_window.show_all()

        # this should be done when the gui is ready
        self.playlist.init(filepath=filename)

        pos_int, dur_int = self.playlist.get_position_duration()
        # This prevents bogus values from being set while seeking
        if (pos_int > 10**9) and (dur_int > 10**9):
            self.__player_tab.set_progress_callback(pos_int, dur_int)

        gtk.main()
Пример #4
0
    def __init__(self, settings, filename=None):
        self.__log = logging.getLogger('panucci.panucci.PanucciGUI')
        interface.register_gui(self)
        self.config = settings.config
        self.playlist = playlist.Playlist(self.config)

        window = gtk.Window(gtk.WindowType.TOPLEVEL)
        self.main_window = window
        window.set_title('Panucci')
        self.window_icon = util.find_data_file('panucci.png')
        if self.window_icon is not None:
            window.set_icon_from_file(self.window_icon)
        window.set_default_size(400, -1)
        window.set_border_width(0)
        window.connect("destroy", self.destroy)

        self.__player_tab = PlayerTab(self)
        self.__playlist_tab = gtkplaylist.PlaylistTab(self, self.playlist)

        self.create_actions()

        self.playlist_window = gtk.Window(gtk.WindowType.TOPLEVEL)
        self.playlist_window.connect('delete-event', gtk.Widget.hide_on_delete)
        self.playlist_window.set_title(_('Playlist'))
        self.playlist_window.set_transient_for(self.main_window)
        self.playlist_window.add(self.__playlist_tab)

        menu_vbox = gtk.Grid.new()
        menu_vbox.set_property("orientation", gtk.Orientation.VERTICAL)
        window.add(menu_vbox)
        menu_bar = gtk.MenuBar()
        self.create_desktop_menu(menu_bar)
        menu_vbox.add(menu_bar)
        menu_bar.show()
        menu_vbox.add(self.__player_tab)

        # Tie it all together!
        self.__ignore_queue_check = False
        self.__window_fullscreen = False

        self.main_window.connect('key-press-event', self.on_key_press)
        self.playlist.register('file_queued', self.on_file_queued)

        self.playlist.register('playlist-to-be-overwritten', self.check_queue)
        self.__player_tab.register('select-current-item-request',
                                   self.__select_current_item)

        self.main_window.show_all()

        # this should be done when the gui is ready
        self.playlist.init(filepath=filename)

        pos_int, dur_int = self.playlist.get_position_duration()
        # This prevents bogus values from being set while seeking
        if (pos_int > 10**9) and (dur_int > 10**9):
            self.__player_tab.set_progress_callback(pos_int, dur_int)

        gtk.main()
Пример #5
0
    def __init__(self, settings, filename=None):
        self.__log = logging.getLogger('panucci.panucci.PanucciGUI')
        kwds = {"parent":None, "log":self.__log}
        super(PanucciGUI, self).__init__(**kwds)
        self.config = settings.config
        interface.register_gui(self)
        self.playlist = playlist.Playlist(self.config)
        self.time_str = "00:00 / 00:00"
        self.progress_fraction = 0
        self.metadata = None

        self.app = QtWidgets.QApplication(["Panucci"])
        self.app.setWindowIcon(QtGui.QIcon(util.find_data_file('panucci.png')))
        self.app.aboutToQuit.connect(self.about_to_quit_callback)
        self.view = QtQuick.QQuickView()
        self.view.setResizeMode(QtQuick.QQuickView.SizeRootObjectToView)
        self.view.setDefaultAlphaBuffer(True)
        self.context = self.view.rootContext()
        self.context.setContextProperty('main', self)
        self.context.setContextProperty('config', self.make_config())
        self.theme_controller = ThemeController(self.config)
        self.context.setContextProperty('themeController', self.theme_controller)
        self.context.setContextProperty('themes', self.theme_controller.get_themes())
        self.create_actions()
        engine = self.context.engine()
        self.image_provider = ImageProvider(self)
        engine.addImageProvider("cover", self.image_provider)
        self.playlist.register( 'stopped', self.on_player_stopped )
        self.playlist.register( 'playing', self.on_player_playing )
        self.playlist.register( 'paused', self.on_player_paused )
        self.playlist.register( 'end-of-playlist', self.on_player_end_of_playlist )
        self.playlist.register( 'new-track-loaded', self.on_player_new_track )
        self.playlist.register( 'new-metadata-available', self.on_player_new_metadata )
        self.playlist.register( 'reset-playlist', self.on_player_reset_playlist )

        self.timer = QtCore.QTimer()
        self.timer.setInterval(1000)
        self.timer.timeout.connect(self.timer_callback)
        
        if platform.SAILFISH:
            self.view.setSource(QtCore.QUrl(util.find_data_file("qml2/main_sailfish.qml")))
            self.view.showFullScreen()
        else:
            self.view.setSource(QtCore.QUrl(util.find_data_file("qml2/main_default.qml")))
            self.view.show()

        self.playlist.init(filepath=filename)
        self.view.rootObject().property("root").start_scrolling_timer(self.config.getboolean("options", "scrolling_labels"))
        #print self.view.size()
        self.app.exec_()
Пример #6
0
    def __init__(self, settings, filename=None):
        self.__log = logging.getLogger('panucci.panucci.PanucciGUI')
        QtCore.QObject.__init__(self)
        ObservableService.__init__(self, [], self.__log)
        self.config = settings.config
        interface.register_gui(self)
        self.playlist = playlist.Playlist(self.config)
        self.time_str = "00:00 / 00:00"
        self.progress_fraction = 0
        self.metadata = None

        self.app = QtGui.QApplication(["Panucci"])
        self.app.setWindowIcon(QtGui.QIcon(util.find_data_file('panucci.png')))
        self.view = QtDeclarative.QDeclarativeView()
        self.view.setResizeMode(QtDeclarative.QDeclarativeView.SizeRootObjectToView)
        self.view.closeEvent = self.close_main_window_callback
        self.context = self.view.rootContext()
        self.context.setContextProperty('main', self)
        self.context.setContextProperty('config', self.make_config())
        self.theme_controller = ThemeController(self.config)
        self.context.setContextProperty('themeController', self.theme_controller)
        self.context.setContextProperty('themes', self.theme_controller.get_themes())
        self.create_actions()
        engine = self.context.engine()
        self.image_provider = ImageProvider(self)
        engine.addImageProvider("cover", self.image_provider)

        self.playlist.register( 'stopped', self.on_player_stopped )
        self.playlist.register( 'playing', self.on_player_playing )
        self.playlist.register( 'paused', self.on_player_paused )
        self.playlist.register( 'end-of-playlist', self.on_player_end_of_playlist )
        self.playlist.register( 'new-track-loaded', self.on_player_new_track )
        self.playlist.register( 'new-metadata-available', self.on_player_new_metadata )
        self.playlist.register( 'reset-playlist', self.on_player_reset_playlist )

        self.timer = QtCore.QTimer()
        self.timer.setInterval(1000)
        self.timer.timeout.connect(self.timer_callback)
        if platform.HARMATTAN:
            self.view.setSource(util.find_data_file("main_harmattan.qml"))
            self.view.showFullScreen()
        elif platform.FREMANTLE:
            self.view.setSource(util.find_data_file("main_fremantle.qml"))
            self.view.showFullScreen()
        else:
            self.view.setSource(util.find_data_file("main_default.qml"))
            self.view.show()

        self.playlist.init(filepath=filename)
        self.view.rootObject().property("root").start_scrolling_timer(self.config.getboolean("options", "scrolling_labels"))

        if platform.HANDSET:
            import dbus
            # Enable play/pause with headset button
            #interface.headset_device.connect_to_signal('Condition', \
            #        self.handle_headset_button)

            system_bus = dbus.SystemBus()
            self.headset_path = '/org/freedesktop/Hal/devices/computer_logicaldev_input'
            self.headset_bt_path = '/org/freedesktop/Hal/devices/computer_logicaldev_input'
            if platform.HARMATTAN:
                self.headset_bt_path = '/org/freedesktop/Hal/devices/computer_logicaldev_input_0'
            elif platform.FREMANTLE:
                self.headset_bt_path = '/org/freedesktop/Hal/devices/computer_logicaldev_input_1'

            # Monitor connection state of headset
            system_bus.add_signal_receiver(self.handle_headset_connection_state, 'DeviceAdded', \
                    'org.freedesktop.Hal.Manager', None, '/org/freedesktop/Hal/Manager')

            # Monitor connection state of BT headset
            system_bus.add_signal_receiver(self.handle_headset_bt_connection_state, 'DeviceAdded', \
                    'org.freedesktop.Hal.Manager', None, '/org/freedesktop/Hal/Manager')

            # Monitor headset buttons
            system_bus.add_signal_receiver(self.handle_headset_button, 'Condition', \
                    'org.freedesktop.Hal.Device', None, self.headset_path)

            # Monitor BT headset buttons
            system_bus.add_signal_receiver(self.handle_headset_bt_button, 'Condition', \
                    'org.freedesktop.Hal.Device', None, self.headset_bt_path)

        self.app.exec_()
Пример #7
0
    def __init__(self, settings, filename=None):
        self.__log = logging.getLogger('panucci.panucci.PanucciGUI')
        interface.register_gui(self)
        self.config = settings.config
        self.playlist = playlist.Playlist(self.config)

        # Build the base ui (window and menubar)
        if platform.MAEMO:
            self.app = hildon.Program()
            if platform.FREMANTLE:
                window = hildon.StackableWindow()
            else:
                window = hildon.Window()
            self.app.add_window(window)
        else:
            window = gtk.Window(gtk.WINDOW_TOPLEVEL)

        self.main_window = window
        window.set_title('Panucci')
        self.window_icon = util.find_data_file('panucci.png')
        if self.window_icon is not None:
            window.set_icon_from_file( self.window_icon )
        window.set_default_size(400, -1)
        window.set_border_width(0)
        window.connect("destroy", self.destroy)

        # Add the tabs (they are private to prevent us from trying to do
        # something like gui_root.player_tab.some_function() from inside
        # playlist_tab or vice-versa)
        self.__player_tab = PlayerTab(self)
        self.__playlist_tab = gtkplaylist.PlaylistTab(self, self.playlist)

        self.create_actions()

        if platform.FREMANTLE:
            self.playlist_window = hildon.StackableWindow()
            self.playlist_window.set_app_menu(self.create_playlist_app_menu())
        else:
            self.playlist_window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.playlist_window.connect('delete-event', gtk.Widget.hide_on_delete)
        self.playlist_window.set_title(_('Playlist'))
        self.playlist_window.set_transient_for(self.main_window)
        self.playlist_window.add(self.__playlist_tab)

        if platform.MAEMO:
            if platform.FREMANTLE:
                window.set_app_menu(self.create_app_menu())
            else:
                window.set_menu(self.create_menu())
            window.add(self.__player_tab)
        else:
            menu_vbox = gtk.VBox()
            menu_vbox.set_spacing(0)
            window.add(menu_vbox)
            menu_bar = gtk.MenuBar()
            self.create_desktop_menu(menu_bar)
            menu_vbox.pack_start(menu_bar, False, False, 0)
            menu_bar.show()
            menu_vbox.pack_end(self.__player_tab, True, True, 6)

        # Tie it all together!
        self.__ignore_queue_check = False
        self.__window_fullscreen = False

        if platform.MAEMO and interface.headset_device:
            # Enable play/pause with headset button
            import dbus
            interface.headset_device.connect_to_signal('Condition', \
                    self.handle_headset_button)
            system_bus = dbus.SystemBus()

            PATH = '/org/freedesktop/Hal/devices/computer_logicaldev_input_1'
            # Monitor connection state of BT headset
            system_bus.add_signal_receiver(self.handle_connection_state, 'DeviceAdded', \
                    'org.freedesktop.Hal.Manager', None, '/org/freedesktop/Hal/Manager')

            # Monitor BT headset buttons
            system_bus.add_signal_receiver(self.handle_bt_button, 'Condition', \
                    'org.freedesktop.Hal.Device', None, PATH)

        self.main_window.connect('key-press-event', self.on_key_press)
        self.playlist.register( 'file_queued', self.on_file_queued )

        self.playlist.register( 'playlist-to-be-overwritten',
                                  self.check_queue )
        self.__player_tab.register( 'select-current-item-request',
                                    self.__select_current_item )

        self.main_window.show_all()

        # this should be done when the gui is ready
        self.playlist.init(filepath=filename)

        pos_int, dur_int = self.playlist.get_position_duration()
        # This prevents bogus values from being set while seeking
        if (pos_int > 10**9) and (dur_int > 10**9):
            self.__player_tab.set_progress_callback(pos_int, dur_int)

        gtk.main()
Пример #8
0
    def __init__(self, settings, filename=None):
        self.__log = logging.getLogger('panucci.panucci.PanucciGUI')
        QtCore.QObject.__init__(self)
        ObservableService.__init__(self, [], self.__log)
        self.config = settings.config
        interface.register_gui(self)
        self.playlist = playlist.Playlist(self.config)
        self.time_str = "00:00 / 00:00"
        self.progress_fraction = 0
        self.metadata = None

        self.app = QtGui.QApplication(["Panucci"])
        self.app.setWindowIcon(QtGui.QIcon(util.find_data_file('panucci.png')))
        self.view = QtDeclarative.QDeclarativeView()
        self.view.setResizeMode(
            QtDeclarative.QDeclarativeView.SizeRootObjectToView)
        self.view.closeEvent = self.close_main_window_callback
        self.context = self.view.rootContext()
        self.context.setContextProperty('main', self)
        self.context.setContextProperty('config', self.make_config())
        self.theme_controller = ThemeController(self.config)
        self.context.setContextProperty('themeController',
                                        self.theme_controller)
        self.context.setContextProperty('themes',
                                        self.theme_controller.get_themes())
        self.create_actions()
        engine = self.context.engine()
        self.image_provider = ImageProvider(self)
        engine.addImageProvider("cover", self.image_provider)

        self.playlist.register('stopped', self.on_player_stopped)
        self.playlist.register('playing', self.on_player_playing)
        self.playlist.register('paused', self.on_player_paused)
        self.playlist.register('end-of-playlist',
                               self.on_player_end_of_playlist)
        self.playlist.register('new-track-loaded', self.on_player_new_track)
        self.playlist.register('new-metadata-available',
                               self.on_player_new_metadata)
        self.playlist.register('reset-playlist', self.on_player_reset_playlist)

        self.timer = QtCore.QTimer()
        self.timer.setInterval(1000)
        self.timer.timeout.connect(self.timer_callback)
        if platform.HARMATTAN:
            self.view.setSource(util.find_data_file("qml/main_harmattan.qml"))
            self.view.showFullScreen()
        elif platform.FREMANTLE:
            self.view.setSource(util.find_data_file("qml/main_fremantle.qml"))
            self.view.showFullScreen()
        else:
            self.view.setSource(util.find_data_file("qml/main_default.qml"))
            self.view.show()

        self.playlist.init(filepath=filename)
        self.view.rootObject().property("root").start_scrolling_timer(
            self.config.getboolean("options", "scrolling_labels"))

        if platform.HANDSET:
            import dbus
            # Enable play/pause with headset button
            #interface.headset_device.connect_to_signal('Condition', \
            #        self.handle_headset_button)

            system_bus = dbus.SystemBus()
            self.headset_path = '/org/freedesktop/Hal/devices/computer_logicaldev_input'
            self.headset_bt_path = '/org/freedesktop/Hal/devices/computer_logicaldev_input'
            if platform.HARMATTAN:
                self.headset_bt_path = '/org/freedesktop/Hal/devices/computer_logicaldev_input_0'
            elif platform.FREMANTLE:
                self.headset_bt_path = '/org/freedesktop/Hal/devices/computer_logicaldev_input_1'

            # Monitor connection state of headset
            system_bus.add_signal_receiver(self.handle_headset_connection_state, 'DeviceAdded', \
                    'org.freedesktop.Hal.Manager', None, '/org/freedesktop/Hal/Manager')

            # Monitor connection state of BT headset
            system_bus.add_signal_receiver(self.handle_headset_bt_connection_state, 'DeviceAdded', \
                    'org.freedesktop.Hal.Manager', None, '/org/freedesktop/Hal/Manager')

            # Monitor headset buttons
            system_bus.add_signal_receiver(self.handle_headset_button, 'Condition', \
                    'org.freedesktop.Hal.Device', None, self.headset_path)

            # Monitor BT headset buttons
            system_bus.add_signal_receiver(self.handle_headset_bt_button, 'Condition', \
                    'org.freedesktop.Hal.Device', None, self.headset_bt_path)

        self.app.exec_()
Пример #9
0
    def __init__(self, settings, filename=None):
        self.__log = logging.getLogger('panucci.panucci.PanucciGUI')
        interface.register_gui(self)
        self.config = settings.config
        self.playlist = playlist.Playlist(self.config)

        # Build the base ui (window and menubar)
        if platform.MAEMO:
            self.app = hildon.Program()
            if platform.FREMANTLE:
                window = hildon.StackableWindow()
            else:
                window = hildon.Window()
            self.app.add_window(window)
        else:
            window = gtk.Window(gtk.WINDOW_TOPLEVEL)

        self.main_window = window
        window.set_title('Panucci')
        self.window_icon = util.find_data_file('panucci.png')
        if self.window_icon is not None:
            window.set_icon_from_file(self.window_icon)
        window.set_default_size(400, -1)
        window.set_border_width(0)
        window.connect("destroy", self.destroy)

        # Add the tabs (they are private to prevent us from trying to do
        # something like gui_root.player_tab.some_function() from inside
        # playlist_tab or vice-versa)
        self.__player_tab = PlayerTab(self)
        self.__playlist_tab = gtkplaylist.PlaylistTab(self, self.playlist)

        self.create_actions()

        if platform.FREMANTLE:
            self.playlist_window = hildon.StackableWindow()
            self.playlist_window.set_app_menu(self.create_playlist_app_menu())
        else:
            self.playlist_window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.playlist_window.connect('delete-event', gtk.Widget.hide_on_delete)
        self.playlist_window.set_title(_('Playlist'))
        self.playlist_window.set_transient_for(self.main_window)
        self.playlist_window.add(self.__playlist_tab)

        if platform.MAEMO:
            if platform.FREMANTLE:
                window.set_app_menu(self.create_app_menu())
            else:
                window.set_menu(self.create_menu())
            window.add(self.__player_tab)
        else:
            menu_vbox = gtk.VBox()
            menu_vbox.set_spacing(0)
            window.add(menu_vbox)
            menu_bar = gtk.MenuBar()
            self.create_desktop_menu(menu_bar)
            menu_vbox.pack_start(menu_bar, False, False, 0)
            menu_bar.show()
            menu_vbox.pack_end(self.__player_tab, True, True, 6)

        # Tie it all together!
        self.__ignore_queue_check = False
        self.__window_fullscreen = False

        if platform.MAEMO and interface.headset_device:
            # Enable play/pause with headset button
            import dbus
            interface.headset_device.connect_to_signal('Condition', \
                    self.handle_headset_button)
            system_bus = dbus.SystemBus()

            # Monitor connection state of BT headset
            # I haven't seen this option before "settings.play_on_headset"
            PATH = '/org/freedesktop/Hal/devices/computer_logicaldev_input_1'

            def handler_func(device_path):
                if device_path == PATH and settings.play_on_headset and not self.playlist.player.playing:
                    self.playlist.player.play()
            system_bus.add_signal_receiver(handler_func, 'DeviceAdded', \
                    'org.freedesktop.Hal.Manager', None, \
                    '/org/freedesktop/Hal/Manager')

            # End Monitor connection state of BT headset

            # Monitor BT headset buttons
            def handle_bt_button(signal, button):
                # See http://bugs.maemo.org/8283 for details
                if signal == 'ButtonPressed':
                    if button == 'play-cd':
                        self.playlist.player.play_pause_toggle()
                    elif button == 'pause-cd':
                        self.playlist.player.pause()
                    elif button == 'next-song':
                        self.__player_tab.do_seek(
                            self.config.getint("options", "seek_short"))
                    elif button == 'previous-song':
                        self.__player_tab.do_seek(
                            -1 * self.config.getint("options", "seek_short"))

            system_bus.add_signal_receiver(handle_bt_button, 'Condition', \
                    'org.freedesktop.Hal.Device', None, PATH)
            # End Monitor BT headset buttons

        self.main_window.connect('key-press-event', self.on_key_press)
        self.playlist.register('file_queued', self.on_file_queued)

        self.playlist.register('playlist-to-be-overwritten', self.check_queue)
        self.__player_tab.register('select-current-item-request',
                                   self.__select_current_item)

        self.main_window.show_all()

        # this should be done when the gui is ready
        self.playlist.init(filepath=filename)

        pos_int, dur_int = self.playlist.player.get_position_duration()
        # This prevents bogus values from being set while seeking
        if (pos_int > 10**9) and (dur_int > 10**9):
            self.set_progress_callback(pos_int, dur_int)

        gtk.main()