def __init__ (self, filename, path, parent = None): QtGui.QDialog.__init__ (self, parent) self.examfile = os.path.join (path, filename) if path == "" or filename == "" or not os.path.exists (path) or not os.path.isdir (path) or not os.path.isfile (self.examfile): msg = CommonError (self.tr ("File invalid.")) msg.exec_() QtGui.qApp.postEvent (self, QtGui.QCloseEvent()) return self.ui = Ui_player() self.ui.setupUi (self) self.setWindowFlags (QtCore.Qt.FramelessWindowHint) self.leftclicked = False winid = self.ui.frameaudio.winId() pythonapi.PyCObject_AsVoidPtr.restype = c_void_p pythonapi.PyCObject_AsVoidPtr.argtypes = [py_object] self.windowId = pythonapi.PyCObject_AsVoidPtr (winid) self.ui.frameaudio.mouseReleaseEvent = self.frameMouseRelease self.player = Player (self.windowId, self.ui.Sliderprogress.minimum(), self.ui.Sliderprogress.maximum(), self.ui.slidervolume.minimum(), self.ui.slidervolume.maximum()) self.ui.buttonplayerplay.clicked.connect (self.player.playclickedsignal) self.ui.buttonplayerstop.clicked.connect (self.player.stopclickedsignal) self.ui.buttonplayerbackward.clicked.connect (self.player.backwardclickedsignal) self.ui.buttonplayerforward.clicked.connect (self.player.forwardclickedsignal) self.ui.buttonvolume.clicked.connect (self.player.muteornotsignal) self.ui.Sliderprogress.valueChanged.connect (self.player.sliderseekvaluesignal) self.ui.slidervolume.valueChanged.connect (self.player.slidervolumevaluesignal) self.player.updatelabelduration.connect (self.updatelabelduration) self.player.updatesliderseek.connect (self.updatesliderseek) self.player.updateslidervolume.connect (self.updateslidervolume) self.player.setbuttonplay.connect (self.playersetbuttonplay) self.player.setbuttonpause.connect (self.playersetbuttonpause) self.player.startworker() self.player.playurisignal.emit (self.examfile) self.ui.label_3.setText (QtCore.QFileInfo (self.examfile).fileName()) self.ui.label_3.setAlignment (QtCore.Qt.AlignHCenter) self.ui.lineeditduration.setEnabled (False)
def on_buttonpreview_clicked (self): self.splitchoose = SplitNotChosen self.ui.lineeditstarttime.setEnabled (False) self.ui.lineeditendtime.setEnabled (False) starttime = str2time (self.ui.lineeditstarttime.text()) stoptime = str2time (self.ui.lineeditendtime.text()) if starttime < 0 or stoptime <= starttime: msg = CommonError (self.tr ("Start time or stop time invalid.")) msg.exec_() self.ui.buttoncancelbrowse.clicked.emit() return self.player.setloopsignal.emit (self.ui.lineeditstarttime.text(), self.ui.lineeditendtime.text()) self.ui.buttonpreview.hide() self.ui.buttoncancelbrowse.show()
def on_buttonsave_clicked(self): if not os.path.isdir(self.ui.lineeditcaveroute.text()): self.on_buttonbrowse_clicked() else: self.splitpath = self.ui.lineeditcaveroute.text() self.splitfile = self.ui.lineeditcartoonname.text() if self.splitpath == "" or self.splitfile == "": return elif len(self.splitfile) > 255: msg = CommonError(self.tr("Filename too long.")) msg.exec_() return self.totranscode = self.ui.checkBox.isChecked() self.accept()
def on_buttonsave_clicked (self): if not os.path.isdir (self.ui.lineeditcaveroute.text()): self.on_buttonbrowse_clicked() else: self.splitpath = self.ui.lineeditcaveroute.text() self.splitfile = self.ui.lineeditcartoonname.text() if self.splitpath == "" or self.splitfile == "": return elif len (self.splitfile) > 255: msg = CommonError (self.tr ("Filename too long.")) msg.exec_() return self.totranscode = self.ui.checkBox.isChecked() self.accept()
def on_buttonconvert_clicked(self): model = self.ui.treeView.model() if os.path.isdir(self.ui.lineeditoutputroute.text()): self.transferpath = self.ui.lineeditoutputroute.text() else: self.on_buttonbrowse_clicked() if self.transferpath == "": msg = CommonError(self.tr("Please input output path")) msg.exec_() return self.files = [] for i in xrange(model.rowCount()): f = model.data(model.index(i, 0)) if os.path.isfile(f): self.files.append(f) self.accept()
def on_buttonconvert_clicked (self): model = self.ui.treeView.model() if os.path.isdir (self.ui.lineeditoutputroute.text()): self.transferpath = self.ui.lineeditoutputroute.text() else: self.on_buttonbrowse_clicked() if self.transferpath == "": msg = CommonError (self.tr ("Please input output path")) msg.exec_() return self.files = [] for i in xrange (model.rowCount()): f = model.data (model.index (i, 0)) if os.path.isfile (f): self.files.append (f) self.accept()
def verifiedtask (self, row, params, verified): self.srcfiles[row]['effective'] = verified self.srcfiles[row].update (params) if not verified: return num = 0 for i in xrange (self.items): if self.srcfiles[i].get ('effective'): num += 1 self.effectives = num if self.effectives == 1: self.params = params elif self.effectives > 1: if not self.checkcompat (self.params, params): self.srcfiles[self.items - 1]['effective'] = False self.effectives -= 1 msg = CommonError (self.tr ("Media type not compatible.")) msg.exec_() self.removerowsignal.emit (row)
def verifiedtask(self, row, params, verified): self.srcfiles[row]['effective'] = verified self.srcfiles[row].update(params) if not verified: return num = 0 for i in xrange(self.items): if self.srcfiles[i].get('effective'): num += 1 self.effectives = num if self.effectives == 1: self.params = params elif self.effectives > 1: if not self.checkcompat(self.params, params): self.srcfiles[self.items - 1]['effective'] = False self.effectives -= 1 msg = CommonError(self.tr("Media type not compatible.")) msg.exec_() self.removerowsignal.emit(row)
def Cartoon(): app = QtGui.QApplication(sys.argv) app.setWindowIcon(QtGui.QIcon(':/images/icon.ico')) scr = QtGui.QApplication.desktop().screenGeometry() QtGui.QApplication.setQuitOnLastWindowClosed(False) locale = QtCore.QLocale.system().name() appTranslator = QtCore.QTranslator() if appTranslator.load(":/cartoon_" + locale): app.installTranslator(appTranslator) islogin = False l = Login() l.move(scr.center() - l.rect().center()) while not islogin: if not l.exec_() == QtGui.QDialog.Accepted: QtGui.qApp.quit() ll = LoginList(l.username, l.password, et99.et_init()) ll.move(l.pos() + l.rect().center() - ll.rect().center()) ret = ll.exec_() if ret == QtGui.QDialog.Accepted: islogin = True else: l.show() l.ui.lineeditcpid.setFocus() if ret == QtGui.QDialog.Rejected: pe = PasswordError() else: pe = CommonError( QtGui.qApp.tr( "Connection failed. Please try again later.")) pe.move(l.pos() + l.rect().center() - pe.rect().center()) pe.exec_() islogin = False w = MainWindow(ll.rpc, ll.rpcworker, ll.params) w.move(scr.center() - w.rect().center()) w.show() sys.exit(app.exec_())
def on_buttonsave_clicked (self): if not self.playerfile: return self.splitchoose = SplitNotChosen starttime = str2time (self.ui.lineeditstarttime.text()) stoptime = str2time (self.ui.lineeditendtime.text()) duration = stoptime - starttime if starttime < 0 or duration <= 0: msg = CommonError (self.tr ("Start time or stop time invalid.")) msg.exec_() return if self.ui.checkboxleadertitle.isChecked(): title = self.ui.lineeditleadertitle.text() if len (title) > 63: msg = CommonError (self.tr ("Movie title too long.")) msg.exec_() return else: title = None timestring = "%s -- %s" % (time2str (starttime), time2str (stoptime)) ss = SaveSplit (self.params['LastSplitPath']) ss.move (self.pos() + self.rect().center() - ss.rect().center()) if not ss.exec_() == QtGui.QDialog.Accepted: return outputfile = os.path.join (ss.splitpath, ss.splitfile) self.splitter = VideoSplitter (self.playerfile, outputfile, starttime, duration, title, ss.totranscode, self.player.params, self) self.splitter.addtranscode.connect (self.addtranscode) self.splitter.startnewsplit.connect (self.newsplitted) self.splitter.startworker (timestring) self.splitprog = SplitProg() self.splitprog.move (self.pos() + self.rect().center() - self.splitprog.rect().center()) self.splitter.updatemodel.connect (self.splitprog.setprogressbar) self.splitter.finished.connect (self.splitprog.accept) if not self.splitprog.exec_() == QtGui.QDialog.Accepted: self.splitter.finished.emit()
def startworker(self, filename, path): if not os.path.exists(path) or not os.path.isdir(path): msg = CommonError(self.tr("Save destination invalid.")) msg.exec_() return if len(self.srcfiles) < 1: msg = CommonError(self.tr("Hasn't chosen any video clips.")) msg.exec_() return for i in xrange(self.items): if self.srcfiles[i].get('effective'): self.defaultsrcfile = self.srcfiles[i] break dstfileinfo = QtCore.QFileInfo(os.path.join(path, filename)) if dstfileinfo.suffix() == "": dstfile = "%s.%s" % ( dstfileinfo.absoluteFilePath(), QtCore.QFileInfo(self.defaultsrcfile.get('srcfile')).suffix()) dstfileinfo = QtCore.QFileInfo(dstfile) dstfile = QtCore.QDir.toNativeSeparators( dstfileinfo.absoluteFilePath()) i = 0 while os.path.exists(dstfile): i += 1 dstfile = os.path.join( QtCore.QDir.toNativeSeparators(dstfileinfo.absolutePath()), "%s-%02d.%s" % (dstfileinfo.baseName(), i, dstfileinfo.suffix())) os.close(os.open(dstfile, os.O_CREAT)) dstfileinfo = QtCore.QFileInfo(dstfile) self.dstfile = QtCore.QDir.toNativeSeparators( dstfileinfo.absoluteFilePath()) self.path = QtCore.QDir.toNativeSeparators(dstfileinfo.absolutePath()) self.filenamedecided.emit(dstfileinfo.fileName()) self.startnewmerge.emit(self.path) self.dowork()
def startworker (self, filename, path): if not os.path.exists (path) or not os.path.isdir (path): msg = CommonError (self.tr ("Save destination invalid.")) msg.exec_() return if len (self.srcfiles) < 1: msg = CommonError (self.tr ("Hasn't chosen any video clips.")) msg.exec_() return for i in xrange (self.items): if self.srcfiles[i].get ('effective'): self.defaultsrcfile = self.srcfiles[i] break dstfileinfo = QtCore.QFileInfo (os.path.join (path, filename)) if dstfileinfo.suffix() == "": dstfile = "%s.%s" % (dstfileinfo.absoluteFilePath(), QtCore.QFileInfo (self.defaultsrcfile.get ('srcfile')).suffix()) dstfileinfo = QtCore.QFileInfo (dstfile) dstfile = QtCore.QDir.toNativeSeparators (dstfileinfo.absoluteFilePath()) i = 0 while os.path.exists (dstfile): i += 1 dstfile = os.path.join (QtCore.QDir.toNativeSeparators (dstfileinfo.absolutePath()), "%s-%02d.%s" % (dstfileinfo.baseName(), i, dstfileinfo.suffix())) os.close (os.open (dstfile, os.O_CREAT)) dstfileinfo = QtCore.QFileInfo (dstfile) self.dstfile = QtCore.QDir.toNativeSeparators (dstfileinfo.absoluteFilePath()) self.path = QtCore.QDir.toNativeSeparators (dstfileinfo.absolutePath()) self.filenamedecided.emit (dstfileinfo.fileName()) self.startnewmerge.emit (self.path) self.dowork()
def on_buttonstart_clicked (self): filename = self.ui.lineeditfilenameblank.text() path = self.ui.lineeditsaveblank.text() if filename == "": msg = CommonError (self.tr ("Please input output filename")) msg.exec_() return elif len (filename) > 255: msg = CommonError (self.tr ("Filename too long.")) msg.exec_() return if path == "": msg = CommonError (self.tr ("Please input output path")) msg.exec_() return self.merger.startsignal.emit (filename, path) self.blockmergeelements()
def lostconnection (self): msg = CommonError (self.tr ("Lost connection to server. Exiting...")) msg.exec_() QtGui.qApp.quit()