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_()
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_()
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()
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()
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_()
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_()
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()
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_()
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()