210 lines
7.8 KiB
Python
210 lines
7.8 KiB
Python
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 "UPDATE 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 addTopLayout(self, dialog):
|
|
dialog.topSplit = QtGui.QSplitter(Qt.Horizontal)
|
|
|
|
|
|
dialog.outputLayout = QtGui.QVBoxLayout()
|
|
dialog.outputbox = QtGui.QTextEdit()
|
|
dialog.outputbox.setReadOnly(True)
|
|
dialog.outputlabel = QtGui.QLabel("Notifications")
|
|
dialog.outputFrame = QtGui.QFrame()
|
|
dialog.outputFrame.setLineWidth(0)
|
|
dialog.outputFrame.setMidLineWidth(0)
|
|
dialog.outputLayout.setContentsMargins(0,0,0,0)
|
|
dialog.outputLayout.addWidget(dialog.outputlabel)
|
|
dialog.outputLayout.addWidget(dialog.outputbox)
|
|
dialog.outputFrame.setLayout(dialog.outputLayout)
|
|
|
|
dialog.listLayout = QtGui.QVBoxLayout()
|
|
dialog.listbox = QtGui.QTextEdit()
|
|
dialog.listbox.setReadOnly(True)
|
|
dialog.listlabel = QtGui.QLabel("List of who is playing what")
|
|
dialog.listFrame = QtGui.QFrame()
|
|
dialog.listFrame.setLineWidth(0)
|
|
dialog.listFrame.setMidLineWidth(0)
|
|
dialog.listLayout.setContentsMargins(0,0,0,0)
|
|
dialog.listLayout.addWidget(dialog.listlabel)
|
|
dialog.listLayout.addWidget(dialog.listbox)
|
|
dialog.listFrame.setLayout(dialog.listLayout)
|
|
|
|
dialog.topSplit.addWidget(dialog.outputFrame)
|
|
dialog.topSplit.addWidget(dialog.listFrame)
|
|
dialog.topSplit.setStretchFactor(0,3)
|
|
dialog.topSplit.setStretchFactor(1,2)
|
|
dialog.mainLayout.addWidget(dialog.topSplit)
|
|
dialog.topSplit.setSizePolicy(QtGui.QSizePolicy.Preferred,QtGui.QSizePolicy.Expanding)
|
|
|
|
|
|
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(QtGui.QIcon(self.resourcespath + 'door_in.png'), "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(QtGui.QIcon(self.resourcespath + 'clock_go.png'),"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.unseekButton = QtGui.QPushButton(QtGui.QIcon(self.resourcespath + 'arrow_undo.png'),"Undo last seek")
|
|
dialog.unseekButton.pressed.connect(self.undoseek)
|
|
dialog.pauseButton = QtGui.QPushButton(QtGui.QIcon(self.resourcespath + 'control_pause_blue.png'),"Toggle pause")
|
|
dialog.pauseButton.pressed.connect(self.togglepause)
|
|
dialog.showListButton = QtGui.QPushButton(QtGui.QIcon(self.resourcespath + 'table_refresh.png'),"Update list")
|
|
dialog.showListButton.pressed.connect(self.showList)
|
|
|
|
dialog.miscLayout = QtGui.QHBoxLayout()
|
|
dialog.miscLayout.addWidget(dialog.unseekButton)
|
|
dialog.miscLayout.addWidget(dialog.pauseButton)
|
|
dialog.miscLayout.addWidget(dialog.showListButton)
|
|
|
|
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, message):
|
|
self.outputbox.moveCursor(QtGui.QTextCursor.End)
|
|
self.outputbox.insertHtml(message)
|
|
self.outputbox.moveCursor(QtGui.QTextCursor.End)
|
|
|
|
def ResetList(self):
|
|
self.listbox.setText("")
|
|
|
|
def NewListItem(self, item):
|
|
self.listbox.moveCursor(QtGui.QTextCursor.End)
|
|
self.listbox.insertHtml(item)
|
|
self.listbox.moveCursor(QtGui.QTextCursor.End)
|
|
|
|
|
|
def __init__(self):
|
|
|
|
super(MainDialog, self).__init__()
|
|
self.QtGui = QtGui
|
|
if sys.platform.startswith('linux'):
|
|
self.resourcespath = utils.findWorkingDir() + "/resources/"
|
|
else:
|
|
self.resourcespath = utils.findWorkingDir() + "\\resources\\"
|
|
|
|
self.setWindowTitle("Syncplay - Main Window")
|
|
self.mainLayout = QtGui.QVBoxLayout()
|
|
|
|
self.addTopLayout(self)
|
|
self.addBottomLayout(self)
|
|
self.addMenubar(self)
|
|
self.setLayout(self.mainLayout)
|
|
self.resize(700,500)
|
|
|
|
|
|
self.setWindowIcon(QtGui.QIcon(self.resourcespath + "syncplay.png"))
|
|
|
|
|
|
self.show()
|
|
|
|
if __name__ == '__main__':
|
|
|
|
import sys
|
|
|
|
app = QtGui.QApplication(sys.argv)
|
|
dialog = MainDialog()
|
|
sys.exit(app.exec_())
|