From b82fde62cac349cafd2c9ecf64afdc0ac71faa66 Mon Sep 17 00:00:00 2001 From: Et0h Date: Mon, 3 Jun 2013 22:06:39 +0100 Subject: [PATCH] Initial code for shiny new main GUI --- syncplay/ui/mainUI.py | 168 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 syncplay/ui/mainUI.py diff --git a/syncplay/ui/mainUI.py b/syncplay/ui/mainUI.py new file mode 100644 index 0000000..5af0a8e --- /dev/null +++ b/syncplay/ui/mainUI.py @@ -0,0 +1,168 @@ +from PySide import QtCore, QtGui +from PySide.QtCore import QSettings, Qt +from PySide.QtGui import QApplication, QLineEdit, QCursor, QLabel, QCheckBox, QDesktopServices, QIcon +from syncplay import utils + +import os +import sys + +class MainDialog(QtGui.QDialog): + + def joinRoom(self): + print "JOIN ROOM: " + self.roomInput.text() + self.roomInput.setText("") + + def seekPosition(self): + print "SEEK POSITION: " + self.seekInput.text() + self.seekInput.setText("") + + def showList(self): + print "SHOW USER LIST" + + def undoseek(self): + print "UNDO LAST SEEK" + + def togglepause(self): + print "PAUSE/UNPAUSE" + + def exitSyncplay(self): + reply = QtGui.QMessageBox.question(self, "Syncplay", + "Are you sure you want to exit Syncplay?", + QtGui.QMessageBox.Yes | QtGui.QMessageBox.No) + if reply == QtGui.QMessageBox.Yes: + sys.exit() + + def setOffset(self): + newoffset, ok = QtGui.QInputDialog.getText(self,"Set Offset", + "Offset (+/-):", QtGui.QLineEdit.Normal, + "") + if ok and newoffset != '': + print "SET OFFSET: " + newoffset + + def openUserGuide(self): + self.QtGui.QDesktopServices.openUrl("http://syncplay.pl/guide/") + + def addBottomLayout(self, dialog): + dialog.bottomLayout = QtGui.QHBoxLayout() + + dialog.addRoomBox(MainDialog) + dialog.addSeekBox(MainDialog) + dialog.addMiscBox(MainDialog) + + dialog.bottomLayout.addWidget(dialog.roomGroup, Qt.AlignLeft) + dialog.bottomLayout.addWidget(dialog.seekGroup, Qt.AlignLeft) + dialog.bottomLayout.addWidget(dialog.miscGroup, Qt.AlignLeft) + + dialog.mainLayout.addLayout(dialog.bottomLayout, Qt.AlignLeft) + + + def addRoomBox(self, dialog): + dialog.roomGroup = QtGui.QGroupBox("Room") + + dialog.roomInput = QtGui.QLineEdit() + dialog.roomButton = QtGui.QPushButton("Join room") + dialog.roomButton.pressed.connect(self.joinRoom) + dialog.roomLayout = QtGui.QHBoxLayout() + dialog.roomInput.setMaximumWidth(150) + + dialog.roomLayout.addWidget(dialog.roomInput) + dialog.roomLayout.addWidget(dialog.roomButton) + + dialog.roomGroup.setLayout(dialog.roomLayout) + dialog.roomGroup.setFixedSize(dialog.roomGroup.sizeHint()) + + def addSeekBox(self, dialog): + dialog.seekGroup = QtGui.QGroupBox("Seek") + + dialog.seekInput = QtGui.QLineEdit() + dialog.seekButton = QtGui.QPushButton("Seek to position") + dialog.seekButton.pressed.connect(self.seekPosition) + + dialog.seekLayout = QtGui.QHBoxLayout() + dialog.seekInput.setMaximumWidth(100) + + dialog.seekLayout.addWidget(dialog.seekInput) + dialog.seekLayout.addWidget(dialog.seekButton) + + dialog.seekGroup.setLayout(dialog.seekLayout) + dialog.seekGroup.setFixedSize(dialog.seekGroup.sizeHint()) + + def addMiscBox(self, dialog): + dialog.miscGroup = QtGui.QGroupBox("Other Commands") + + dialog.showListButton = QtGui.QPushButton("Show list") + dialog.showListButton.pressed.connect(self.showList) + dialog.unseekButton = QtGui.QPushButton("Undo last seek") + dialog.unseekButton.pressed.connect(self.undoseek) + dialog.pauseButton = QtGui.QPushButton("Toggle pause") + dialog.pauseButton.pressed.connect(self.togglepause) + + dialog.miscLayout = QtGui.QHBoxLayout() + dialog.miscLayout.addWidget(dialog.showListButton) + dialog.miscLayout.addWidget(dialog.unseekButton) + dialog.miscLayout.addWidget(dialog.pauseButton) + + dialog.miscGroup.setLayout(dialog.miscLayout) + dialog.miscGroup.setFixedSize(dialog.miscGroup.sizeHint()) + + + + + def addMenubar(self, dialog): + dialog.menuBar = QtGui.QMenuBar() + + dialog.fileMenu = QtGui.QMenu("&File", self) + dialog.exitAction = dialog.fileMenu.addAction("E&xit") + dialog.exitAction.triggered.connect(self.exitSyncplay) + dialog.menuBar.addMenu(dialog.fileMenu) + + dialog.advancedMenu = QtGui.QMenu("&Advanced", self) + dialog.setoffsetAction = dialog.advancedMenu.addAction("Set &Offset") + dialog.setoffsetAction.triggered.connect(self.setOffset) + dialog.menuBar.addMenu(dialog.advancedMenu) + + dialog.helpMenu = QtGui.QMenu("&Help", self) + dialog.userguideAction = dialog.helpMenu.addAction("Open User &Guide") + dialog.userguideAction.triggered.connect(self.openUserGuide) + + dialog.menuBar.addMenu(dialog.helpMenu) + dialog.mainLayout.setMenuBar(dialog.menuBar) + + def NewMessage(self, NewMessage): + self.outputbox.insertHtml(NewMessage) + self.outputbox.moveCursor(QtGui.QTextCursor.End) + + + def __init__(self): + + super(MainDialog, self).__init__() + self.QtGui = QtGui + + self.setWindowTitle("Syncplay - Main Window") + self.mainLayout = QtGui.QVBoxLayout() + + self.outputbox = QtGui.QTextEdit() + self.outputbox.setReadOnly(True) + + self.mainLayout.addWidget(self.outputbox) + self.addBottomLayout(self) + self.addMenubar(self) + self.setLayout(self.mainLayout) + self.resize(700,500) + + if sys.platform.startswith('linux'): + resourcespath = utils.findWorkingDir() + "/resources/" + else: + resourcespath = utils.findWorkingDir() + "\\resources\\" + self.setWindowIcon(QtGui.QIcon(resourcespath + "syncplay.png")) + + + self.show() + +if __name__ == '__main__': + + import sys + + app = QtGui.QApplication(sys.argv) + dialog = MainDialog() + sys.exit(app.exec_())