summaryrefslogtreecommitdiff
path: root/nephilim/winMain.py
diff options
context:
space:
mode:
authorAnton Khirnov <wyskas@gmail.com>2010-08-27 15:29:01 +0200
committerAnton Khirnov <wyskas@gmail.com>2010-08-27 15:31:10 +0200
commitf4933531a7e939883148d4015844fa75905c0a3b (patch)
treedcfb4e1a3d88abd475fc8c9c94a6a2cc729640ae /nephilim/winMain.py
parentda333f2cd5d31f964efca379aef8fbdc748c7197 (diff)
rename winMain -> MainWindow for consistency
Diffstat (limited to 'nephilim/winMain.py')
-rw-r--r--nephilim/winMain.py206
1 files changed, 0 insertions, 206 deletions
diff --git a/nephilim/winMain.py b/nephilim/winMain.py
deleted file mode 100644
index a743298..0000000
--- a/nephilim/winMain.py
+++ /dev/null
@@ -1,206 +0,0 @@
-#
-# Copyright (C) 2008 jerous <jerous@gmail.com>
-# Copyright (C) 2009 Anton Khirnov <wyskas@gmail.com>
-#
-# Nephilim is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Nephilim is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Nephilim. If not, see <http://www.gnu.org/licenses/>.
-#
-
-from PyQt4 import QtGui, QtCore
-from PyQt4.QtCore import pyqtSlot as Slot
-import logging
-
-from common import APPNAME, sec2min, appIcon
-import icons
-import data
-
-class winMain(QtGui.QMainWindow):
- """The winMain class is mpc's main window, showing the playlists and control-interface"""
- mpclient = None
- settings = None
- " menus"
- mConnect = None
- mDisconnect = None
- __layout_menu = None
-
- # Statusbar objects
- __statuslabel = None
- __time_slider = None
- __time_label = None
-
- __docks = []
-
- def __init__(self, mpclient):
- QtGui.QMainWindow.__init__(self)
- self.settings = QtCore.QSettings()
- self.mpclient = mpclient
-
-
- # statusbar
- self.statusBar()
- self.__statuslabel = QtGui.QLabel()
- self.__time_slider = QtGui.QSlider(QtCore.Qt.Horizontal, self)
- self.__time_slider.setMaximumWidth(self.width()/4)
- self.__time_slider.sliderReleased.connect( self.__on___time_slider_change)
- self.__time_label = TimeLabel(self, mpclient)
- self.mpclient.time_changed.connect(self.__on_time_change)
-
- self.statusBar().addWidget(self.__statuslabel)
- self.statusBar().addPermanentWidget(self.__time_label)
- self.statusBar().addPermanentWidget(self.__time_slider)
-
- mBar = QtGui.QMenuBar() # create a menubar
- # File menu
- m = mBar.addMenu("File")
- # connect
- self.mConnect=m.addAction('Connect ...', QtGui.QApplication.instance().show_connect_win)
- self.mConnect.setIcon(QtGui.QIcon(appIcon))
- # disconnect
- self.mDisconnect=m.addAction('Disconnect', self.mpclient.disconnect_mpd)
- self.mDisconnect.setIcon(QtGui.QIcon(':icons/disconnect.png'))
- # separator
- m.addSeparator()
- # quit
- m.addAction("Quit", QtGui.QApplication.instance().quit).setIcon(QtGui.QIcon(':icons/gtk-quit.svg'))
-
- # menu options
- m=mBar.addMenu("Options")
- # settings
- m.addAction("Settings", QtGui.QApplication.instance().show_settings_win).setIcon(QtGui.QIcon(':icons/gtk-preferences.svg'))
-
- # menu layout
- self.__layout_menu=mBar.addMenu("Layout")
-
- # create a toolbar for the main menu
- menu_toolbar = QtGui.QToolBar('Main menu', self)
- menu_toolbar.addWidget(mBar)
- self.addToolBar(QtCore.Qt.TopToolBarArea, menu_toolbar)
-
- self.__update_layout_menu()
- self.setDockOptions(QtGui.QMainWindow.AllowNestedDocks \
- |QtGui.QMainWindow.AllowTabbedDocks \
- |QtGui.QMainWindow.VerticalTabs)
- self.setDockNestingEnabled(True)
- self.restoreGeometry(self.settings.value('geometry', QtCore.QByteArray()))
-
- " add event handlers"
- self.mpclient.connect_changed.connect(self.__on_connect_changed)
- self.mpclient.song_changed.connect(self.__on_song_change)
- self.mpclient.state_changed.connect(self.__update_state_messages)
-
- self.__update_state_messages()
- self.show()
-
- def on_quit(self):
- self.settings.setValue('geometry', self.saveGeometry())
-
- def __update_layout_menu(self):
- self.__layout_menu.clear()
- self.__layout_menu.addAction('Save layout', self.save_layout)
- self.__layout_menu.addAction('Restore layout', self.restore_layout)
- self.__layout_menu.addSeparator()
- # create checkable menu
- a = QtGui.QAction('Show titlebars', self)
- a.setCheckable(True)
- a.setChecked(int(self.settings.value('show_titlebars', 1)))
- self.__toggle_titlebars(a.isChecked())
- a.toggled.connect(self.__toggle_titlebars)
- self.__layout_menu.addAction(a)
- self.__layout_menu.addSeparator()
-
- m = self.createPopupMenu()
- if m:
- for action in m.actions():
- self.__layout_menu.addAction(action)
-
- def __toggle_titlebars(self, val):
- if val:
- self.settings.setValue('show_titlebars', 1)
- else:
- self.settings.setValue('show_titlebars', 0)
- for dock in self.__docks:
- if val:
- dock.setTitleBarWidget(None)
- else:
- dock.setTitleBarWidget(QtGui.QWidget())
- def add_dock(self, dock):
- if dock:
- self.__docks.append(dock)
- self.addDockWidget(QtCore.Qt.TopDockWidgetArea, dock)
- self.__update_layout_menu()
- def remove_dock(self, dock):
- if dock:
- self.removeDockWidget(dock)
- if dock in self.__docks:
- self.__docks.remove(dock)
- self.__update_layout_menu()
-
- def save_layout(self):
- self.settings.setValue('layout', self.saveState())
- def restore_layout(self):
- layout = self.settings.value('layout')
- if not layout:
- l_file = QtCore.QFile(':default_layout')
- l_file.open(QtCore.QIODevice.ReadOnly)
- layout = l_file.readAll()
- self.restoreState(layout)
-
-
- def __on_connect_changed(self, val):
- if val:
- self.mDisconnect.setEnabled(True)
- self.mConnect.setEnabled(False)
- else:
- self.mDisconnect.setEnabled(False)
- self.mConnect.setEnabled(True)
-
- def __update_state_messages(self):
- """Update window title and statusbar"""
- song = self.mpclient.cur_song
- state = self.mpclient.status['state']
- state = 'playing' if state == 'play' else 'paused' if state == 'pause' else 'stopped'
- if song:
- self.setWindowTitle('%s by %s - %s [%s]'%(song['?title'], song['?artist'], APPNAME, state))
- self.__statuslabel.setText('%s by %s on %s [%s]'%(song['?title'], song['?artist'],song['?album'], state))
- else:
- self.setWindowTitle(APPNAME)
- self.__statuslabel.setText('')
-
- def __on___time_slider_change(self):
- self.mpclient.seek(self.__time_slider.value())
-
- def __on_song_change(self):
- status = self.mpclient.status
- self.__time_slider.setMaximum(status['time'][1])
- self.__time_slider.setEnabled(True)
- self.__update_state_messages()
-
- def __on_time_change(self, new_time):
- if not self.__time_slider.isSliderDown():
- self.__time_slider.setValue(new_time)
-
-class TimeLabel(QtGui.QLabel):
-
- _mpclient = None
-
- def __init__(self, parent, mpclient):
- QtGui.QLabel.__init__(self, parent)
-
- self._mpclient = mpclient
-
- self._mpclient.time_changed.connect(self._update_text)
- self._update_text(self._mpclient.status['time'][0])
-
- @Slot(int)
- def _update_text(self, time):
- self.setText('%s/%s'%(sec2min(time), sec2min(self._mpclient.status['time'][1])))