def __init__(self, text, attr, library):
     self.library = library
     QTreeWidgetItem.__init__(self)
     self.setText(0, text)
     if attr == 'file':
         self.setIcon(0, auxilia.PIcon('audio-x-generic'))
     else:
         self.setChildIndicatorPolicy(QTreeWidgetItem.ShowIndicator)
         self.setIcon(0, auxilia.PIcon('folder-sound'))
Beispiel #2
0
 def __buildConnectTo(self):
     self.menuConnect.clear()
     self.menuConnect.addAction(auxilia.PIcon('dialog-cancel'),
                                'None (disconnect)')
     connected = self.mpdclient.connected()
     for server in self.config.knownHosts:
         if connected and self.config.server and self.config.server[
                 0] == server:
             icon = auxilia.PIcon('network-connect')
         else:
             icon = auxilia.PIcon('network-disconnect')
         self.menuConnect.addAction(icon, server)
Beispiel #3
0
 def __init__(self, icon, parent):
     QSystemTrayIcon.__init__(self, icon, parent)
     self.parent = parent
     self.pauseIcon = auxilia.PIcon("media-playback-pause")
     self.startIcon = auxilia.PIcon("media-playback-start")
     self.actionList = []
     self.menu = QMenu('Pythagora MPD client', parent)
     self.menu.addAction(menuTitle(icon, 'Pythagora', parent))
     self.setContextMenu(self.menu)
     self.hideResoreAction = QAction('Minimize', self.menu)
     self.connect(self.hideResoreAction, SIGNAL('triggered()'),
                  self.__activated)
     self.connect(
         self, SIGNAL('activated(QSystemTrayIcon::ActivationReason)'),
         self.__activated)
     self.connect(self.menu, SIGNAL('aboutToShow()'), self.__buildMenu)
     self.show()
Beispiel #4
0
 def __init__(self, view, app, mpdclient, config):
     QWidget.__init__(self)
     self.view = view
     self.mpdclient = mpdclient
     if self.view.KDE:
         uic.loadUi(DATA_DIR + 'ui/PlayerForm.ui', self)
     else:
         uic.loadUi(DATA_DIR + 'ui/PlayerForm.ui.Qt', self)
     self.playerForm = self
     self.view.topLayout.addWidget(self)
     # Set attributes not set trough xml file.
     self.back.setIcon(auxilia.PIcon("media-skip-backward"))
     self.stop.setIcon(auxilia.PIcon("media-playback-stop"))
     self.forward.setIcon(auxilia.PIcon("media-skip-forward"))
     self.songLabel = SongLabel()
     self.setAcceptDrops(True)
     self.titleLayout.addWidget(self.songLabel)
     self.progress.mouseReleaseEvent = self.__mouseReleaseEvent
     self.progress.mouseMoveEvent = self.__mouseMoveEvent
     self.progress.setMouseTracking(True)
     self.connect(self, SIGNAL('songSeek'), self.songSeek)
Beispiel #5
0
    def showConfiguration(self, parent, modal=False):
        '''Display the configuration dialog and activate the changes.'''
        self.parent = parent
        self.setup = uic.loadUi(DATA_DIR + 'ui/Configuration.ui')
        self.setup.setWindowTitle('Pythagora settings')
        self.setup.setWindowIcon(QIcon('Pythagora.png'))
        self.setup.setAttribute(Qt.WA_QuitOnClose, False)
        # Hide options for functions not yet implemented.
        self.setup.showNotificationWidget.setVisible(False)

        self.setup.musicPath.setText(self.musicPath)
        self.setup.scBookmarkFile.setText(self.scBookmarkFile)

        # Setup the serverTable.
        actionRemove = QAction(auxilia.PIcon("list-remove"), 'Remove',
                               self.setup.serverTable)
        self.setup.serverTable.addAction(actionRemove)
        self.setup.serverTable.connect(actionRemove, SIGNAL('triggered()'),
                                       self.__removeServer)
        self.setup.serverTable.setColumnWidth(0, 160)
        self.setup.serverTable.setColumnWidth(1, 120)
        self.setup.serverTable.setColumnWidth(2, 50)
        try:
            for row, server in enumerate(self.knownHosts):
                self.setup.serverTable.insertRow(row)
                self.setup.serverTable.setItem(row, 0,
                                               QTableWidgetItem(server))
                for col, value in enumerate(self.knownHosts[server]):
                    col += 1
                    if col == 3:
                        password = QLineEdit(value)
                        password.setEchoMode(QLineEdit.Password)
                        self.setup.serverTable.setCellWidget(
                            row, col, password)
                    else:
                        self.setup.serverTable.setItem(row, col,
                                                       QTableWidgetItem(value))
            self.__addServer()
            # Select current server.
            if self.server:
                current = self.setup.serverTable.findItems(
                    self.server[1], Qt.MatchExactly)
                if current:
                    self.setup.serverTable.setCurrentItem(current[0])
        except Exception, e:
            print 'error: problem showing config', e
Beispiel #6
0
 def createViews(self):
     '''Set up our different view handlers.'''
     # Standard views.
     self.playerForm = PlayerForm(self, self.app, self.mpdclient,
                                  self.config)
     self.currentList = CurrentPlaylistForm.CurrentPlaylistForm(
         self, self.app, self.mpdclient, self.config)
     # Plugin views.
     loadedPlugins = []
     for plugin in plugins.allPlugins:
         loadedPlugins.append(
             plugin.getWidget(self, self.mpdclient, self.config))
     for name in self.config.tabOrder:
         for plugin in loadedPlugins:
             if plugin.moduleName == name:
                 self.tabs.addTab(plugin, auxilia.PIcon(plugin.moduleIcon),
                                  plugin.moduleName)
                 break
Beispiel #7
0
    def __init__(self, configuration, mpdclient, app):
        QMainWindow.__init__(self)
        self.app = app
        self.focus = time()
        self.shuttingDown = False
        self.config = configuration
        self.mpdclient = mpdclient
        appIcon = QIcon(DATA_DIR + 'icons/Pythagora.png')
        uic.loadUi(DATA_DIR + 'ui/Pythagora.ui', self)
        self.KDE = KDE
        self.setWindowTitle('Pythagora')
        self.setWindowIcon(appIcon)
        # Load all forms.
        self.createViews()
        # Create 'Connect to' menu.
        self.menuConnect = QMenu('Connect To')
        self.menuConnect.menuAction().setIcon(
            auxilia.PIcon('network-disconnect'))
        self.connectButton = QToolButton()
        self.connectButton.setPopupMode(QToolButton.InstantPopup)
        self.connectButton.setIcon(auxilia.PIcon('network-disconnect'))
        self.connectButton.setMenu(self.menuConnect)
        # Create 'MDP' menu.
        self.menuMPD = QMenu('MPD')
        self.menuMPD.menuAction().setIcon(auxilia.PIcon('network-workgroup'))
        self.mpdButton = QToolButton()
        self.mpdButton.setPopupMode(QToolButton.InstantPopup)
        self.mpdButton.setIcon(auxilia.PIcon('network-workgroup'))
        self.mpdButton.setMenu(self.menuMPD)
        self.reloadLibrary = self.actionLibReload(self.menuMPD,
                                                  self.__libReload)
        self.updateLibrary = self.actionLibUpdate(
            self.menuMPD, lambda: self.mpdclient.send('update'))
        self.rescanLibrary = self.actionLibRescan(
            self.menuMPD, lambda: self.mpdclient.send('rescan'))
        # Fill Toolbar.
        self.toolBar.addWidget(self.connectButton)
        self.toolBar.addWidget(self.mpdButton)
        # Fill Statusbar.
        self.serverLabel = QLabel('Not connected')
        self.numSongsLabel = QLabel('Songs')
        self.playTimeLabel = QLabel('playTime')
        self.statusbar.addWidget(self.serverLabel)
        self.statusbar.addPermanentWidget(self.numSongsLabel)
        self.statusbar.addPermanentWidget(self.playTimeLabel)

        self.connect(self.menuConnect, SIGNAL('aboutToShow()'),
                     self.__buildConnectTo)
        self.connect(self.actionExit, SIGNAL('triggered()'), self.app.quit)
        self.connect(self.actionSettings, SIGNAL('triggered()'),
                     self.showConfig)

        # Set up trayicon and menu.
        if KDE:
            self.trayIcon = KTrayIcon(appIcon, self)
        else:
            self.trayIcon = QTrayIcon(appIcon, self)
        connectMenuAction = self.menuConnect.menuAction()
        self.trayIcon.addMenuItem(connectMenuAction)
        self.trayIcon.addMenuItem(self.actionSettings)
        self.connect(self.trayIcon, SIGNAL('activate()'),
                     self.toggleHideRestore)
        self.connect(self.trayIcon,
                     SIGNAL('secondaryActivateRequested(QPoint)'),
                     self.__playPause)

        self.connect(self.tabs, SIGNAL('currentChanged(int)'),
                     self.__tabsIndexChanged)
        self.connect(self.tabs.tabBar(), SIGNAL('tabMoved(int,int)'),
                     self.__tabMoved)
        self.connect(self.splitter, SIGNAL('splitterMoved(int, int)'),
                     self.__storeSplitter)

        # Apply configuration.
        self.resize(configuration.mgrSize)
        self.splitter.setSizes(configuration.mgrSplit)
        self.tabs.setCurrentIndex(configuration.tabsIndex)

        self.closeEvent = self.closeEvent
        self.connect(self.app, SIGNAL('aboutToQuit()'), self.shutdown)
        self.show()

        #==============================================================================
        # Code for switching tabs on drag & drop. (__init__() continues)
        #==============================================================================

        # Instantiate timer
        self.tabTimer = QTimer()
        self.connect(self.tabTimer, SIGNAL('timeout()'), self.__selectTab)

        # Overload the default dragEvents. (none?)
        self.tabs.dragLeaveEvent = self.dragLeaveEvent
        self.tabs.dragEnterEvent = self.dragEnterEvent
        self.tabs.dragMoveEvent = self.dragMoveEvent