diff options
author | Anton Khirnov <wyskas@gmail.com> | 2010-08-27 15:29:01 +0200 |
---|---|---|
committer | Anton Khirnov <wyskas@gmail.com> | 2010-08-27 15:31:10 +0200 |
commit | f4933531a7e939883148d4015844fa75905c0a3b (patch) | |
tree | dcfb4e1a3d88abd475fc8c9c94a6a2cc729640ae /nephilim/winMain.py | |
parent | da333f2cd5d31f964efca379aef8fbdc748c7197 (diff) |
rename winMain -> MainWindow for consistency
Diffstat (limited to 'nephilim/winMain.py')
-rw-r--r-- | nephilim/winMain.py | 206 |
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]))) |