def initUI(self): config = Foo.readConfig('options') self.timeOut = -1 self.radio = False self.statusBar().showMessage('Ready') self.createMenu() self.setWindowTitle("Foo.cd") self.player = Player(Foo.readConfig('audio')) self.player.bus.connect('message::eos', self.stop) self.player.bus.connect('message::duration-changed', self.onDurationChanged) self.tree = Tree(self, config['tree_order']) self.tree.addSongs.connect(self.addSongsFromTree) self.tree.customContextMenuRequested.connect(self.tmpTag) if not self.radio: self.table = Table(self, config) self.handlerATF = self.player.playbin.connect( "about-to-finish", self.onAboutToFinish) self.table.runAction.connect(self.tableAction) else: configRadio = Foo.readConfigRadios() self.table = TableRadio(self, configRadio) self.table.runAction.connect(self.tableAction) self.handlerT = self.player.bus.connect('message::tag', self.table.onTag) self.playbackButtons = PlaybackButtons(None) self.playbackButtons.buttonPlay.clicked.connect(self.toggleSong) self.playbackButtons.buttonStop.clicked.connect(self.stop) self.playbackButtons.buttonPrev.clicked.connect(self.previous) self.playbackButtons.buttonNext.clicked.connect(self.next) self.volumeSlider = VolumeSlider(self) self.volumeSlider.sliderMoved.connect(self.player.setVolume) self.scrollSlider = ScrollSlider(self) self.scrollSlider.sliderPressed.connect(self.player.toggle) self.scrollSlider.sliderReleased.connect(self.player.toggle) self.scrollSlider.sliderMoved.connect(self.player.seek) self.pixmap = Image(self, config['cover_names'], config['extensions']) # Album cover connections self.tree.selectionModel().selectionChanged.connect( lambda: self.pixmap.onSelectionChanged(self.tree.getChildren()[0]. get('file', None))) self.table.selectionModel().selectionChanged.connect( lambda: self.pixmap.onSelectionChanged(self.table.getSelection(). get('file', None))) self.searchArea = SearchArea(self) self.searchArea.searchLine.returnPressed.connect(self.startSearch) self.playbackButtons.addWidget(self.volumeSlider) self.playbackButtons.addWidget(self.scrollSlider) splitterLeftRight = QtGui.QSplitter() self.splitterTopBottom = QtGui.QSplitter(Qt.Vertical, self) self.infoFrame = QtGui.QFrame() infoLayout = QtGui.QVBoxLayout() infoLayout.setContentsMargins(0, 0, 0, 0) infoLayout.addLayout(self.playbackButtons) infoLayout.addWidget(self.pixmap) self.infoFrame.setLayout(infoLayout) libLayout = QtGui.QVBoxLayout() libLayout.setContentsMargins(0, 0, 0, 0) libLayout.addWidget(self.tree) libLayout.addLayout(self.searchArea) libFrame = QtGui.QFrame() libFrame.setLayout(libLayout) self.splitterTopBottom.addWidget(self.table) self.splitterTopBottom.addWidget(self.infoFrame) self.splitterTopBottom.setStretchFactor(0, 1) #self.splitterTopBottom.setStretchFactor(1,0) splitterLeftRight.addWidget(libFrame) splitterLeftRight.addWidget(self.splitterTopBottom) splitterLeftRight.setStretchFactor(0, 2) splitterLeftRight.setStretchFactor(1, 3) mainLayout = QtGui.QGridLayout() mainLayout.setContentsMargins(4, 4, 4, 4) mainLayout.addWidget(splitterLeftRight) dummyWidget = QtGui.QWidget() dummyWidget.setLayout(mainLayout) self.setCentralWidget(dummyWidget) self.setTabOrder(self.tree, self.table) dictShortcuts = self.readConfig('shortcuts') modifier = dictShortcuts['modifier'] + '+' self.shortQuit = QtGui.QShortcut( QtGui.QKeySequence(modifier + dictShortcuts['quit']), self, self.close) self.shortStop = QtGui.QShortcut( QtGui.QKeySequence(modifier + dictShortcuts['stop']), self, self.stop) self.shortPlayPause = QtGui.QShortcut( QtGui.QKeySequence(modifier + dictShortcuts['play_pause']), self, self.toggleSong) self.shortSongPrevious = QtGui.QShortcut( QtGui.QKeySequence(modifier + dictShortcuts['previous']), self, self.previous) self.shortSongNext = QtGui.QShortcut( QtGui.QKeySequence(modifier + dictShortcuts['next']), self, self.next) self.shortVolDown = QtGui.QShortcut( QtGui.QKeySequence(modifier + dictShortcuts['volume_down']), self, self.volumeSlider.decr) self.shortVolUp = QtGui.QShortcut( QtGui.QKeySequence(modifier + dictShortcuts['volume_up']), self, self.volumeSlider.incr) self.shortRadioMode = QtGui.QShortcut( QtGui.QKeySequence(modifier + dictShortcuts['radio_mode']), self, self.toggleRadio) self.shortEqualizer = QtGui.QShortcut( QtGui.QKeySequence(modifier + dictShortcuts['equalizer']), self, self.openEqualizer) thread = QtCore.QThread(self) thread.worker = WorkThreadPipe() thread.worker.moveToThread(thread) thread.started.connect(thread.worker.process) thread.worker.hotKey.connect(self.onHotKey) thread.worker.finished.connect(thread.quit) thread.worker.finished.connect(thread.worker.deleteLater) thread.finished.connect(thread.deleteLater) thread.start() self.show()