summaryrefslogtreecommitdiff
path: root/qt-recordmydesktop/src/rmdTrayIcon.py
diff options
context:
space:
mode:
Diffstat (limited to 'qt-recordmydesktop/src/rmdTrayIcon.py')
-rw-r--r--qt-recordmydesktop/src/rmdTrayIcon.py349
1 files changed, 0 insertions, 349 deletions
diff --git a/qt-recordmydesktop/src/rmdTrayIcon.py b/qt-recordmydesktop/src/rmdTrayIcon.py
deleted file mode 100644
index 002c589..0000000
--- a/qt-recordmydesktop/src/rmdTrayIcon.py
+++ /dev/null
@@ -1,349 +0,0 @@
-#/******************************************************************************
-#* qt-recordMyDesktop *
-#*******************************************************************************
-#* *
-#* Copyright (C) 2007, 2008 John Varouhakis *
-#* *
-#* *
-#* This program 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. *
-#* *
-#* This program 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 this program. If not, see <http://www.gnu.org/licenses/>. *
-#* *
-#* *
-#* For further information contact me at johnvarouhakis@gmail.com *
-#******************************************************************************/
-
-
-from PyQt4 import QtGui,QtCore
-import locale, gettext
-import rmdConfig
-import re
-
-def _(s):
- return QtCore.QString.fromUtf8(gettext.gettext(s))
-gettext.textdomain('qt-recordMyDesktop')
-gettext.bindtextdomain('qt-recordMyDesktop',rmdConfig.locale_install_dir)
-
-import rmdTrayPopup as iTP
-import rmdMonitor as imon
-import os,signal,popen2,fcntl
-from rmdStrings import *
-#values struct:
-
-#0 fps
-#1 mouse
-#2 sound on/off
-#3 full
-#4 path
-#5 area
-#6 delay
-#7 channels
-#8 frequency
-#9 device
-#10 v_quality
-#11 s_quality
-#12 display
-#13 shared memory
-#14 drop-frames
-#15 shared threshold
-#16 quick subsampling
-
-
-class trayIcon(object):
- state=0#0 stopped,1 recording,2 paused
- rmdPid=None
- optionsOpen=[1]
- reopen=0
- timed_id=None
-
- def __set_icon__(self,widget,icon):
- widget.setIcon(QtGui.QIcon(self.__get_icon_location__(icon)))
-
-
- def __buttonPress__(self,ActivationReason):
-
- button=0
- if ActivationReason==QtGui.QSystemTrayIcon.Trigger:
- button=1
- elif ActivationReason==QtGui.QSystemTrayIcon.Context:
- button=3
- #print button
- if button==1 and self.state>=0:
- if self.state == 0:
- if self.optionsOpen[0]==1:
- self.parent.hide()
- self.optionsOpen[0]=0
- self.reopen=1
- self.__set_icon__(self.trayIcon,"stop")
- self.state=1
- self.__execRMD__()
- elif self.state== 1:
- self.__set_icon__(self.trayIcon,"start")
- self.state=0
- self.__stopRMD__()
- elif self.state == 2 :
- self.__set_icon__(self.trayIcon,"stop")
- self.state=1
- self.__pauseRMD__()
-
-
- elif button == 3 and self.state>=0:
- if self.state == 0:
- pass
- self.tray_popup.popupmenu.popup(QtGui.QCursor.pos())
- elif self.state == 1:
- self.__set_icon__(self.trayIcon,"pause")
- self.state=2
- self.__pauseRMD__()
- elif self.state ==2:
- self.__set_icon__(self.trayIcon,"stop")
- self.state=1
- self.__pauseRMD__()
- def record_ext(self,button=None):
- if self.state == 0:
- if self.optionsOpen[0]==1:
- self.parent.hide()
- self.optionsOpen[0]=0
- self.reopen=1
- self.__set_icon__(self.trayIcon,"stop")
- self.state=1
- self.__execRMD__()
-
- def __execRMD__(self):
- self.parent.close_advanced()
- self.parent.update()
- self.ch_err=""
- self.execargs=["recordmydesktop","-o",'%s'%self.parent.values[4],
- "--fps","%d"%self.parent.values[0]]
- if self.parent.values[2]==False :
- self.execargs.append("--no-sound")
- if self.parent.values[1] == 1:
- self.execargs.append("--dummy-cursor")
- self.execargs.append("white")
- elif self.parent.values[1] == 2:
- self.execargs.append("--dummy-cursor")
- self.execargs.append("black")
- elif self.parent.values[1] == 3:
- self.execargs.append("--no-cursor")
-
- if self.parent.values[3] == 0:
- self.execargs.append("--full-shots")
- if self.parent.values[13] == 1:
- self.execargs.append("--no-shared")
-
- if self.parent.values[15]==1:
- if self.parent.values[5][0]>0 :
- self.execargs.append('-x')
- self.execargs.append('%d'%self.parent.values[5][0])
- if self.parent.values[5][1]>0:
- self.execargs.append('-y')
- self.execargs.append('%d'%self.parent.values[5][1])
- if self.parent.values[5][2]>0 and self.parent.values[5][3]>0:
- self.execargs.append('--width')
- self.execargs.append('%d'%(self.parent.values[5][2]-self.parent.values[5][0]))
- self.execargs.append('--height')
- self.execargs.append('%d'%(self.parent.values[5][3]-self.parent.values[5][1]))
- if(not self.parent.values[14]):
- for i in range(4):
- self.parent.values[5][i]=-1
- if self.parent.values[6]>0:
- self.execargs.append('--delay')
- self.execargs.append('%d'%self.parent.values[6])
- self.execargs.append('--channels')
- self.execargs.append('%d'%self.parent.values[7])
- self.execargs.append('--freq')
- self.execargs.append('%d'%self.parent.values[8])
- if self.parent.values[9]!='DEFAULT':
- self.execargs.append('--device')
- self.execargs.append('%s'%self.parent.values[9])
- self.execargs.append('--v_quality')
- self.execargs.append('%d'%self.parent.values[10])
- self.execargs.append('--s_quality')
- self.execargs.append('%d'%self.parent.values[11])
- if self.parent.values[12] != "$DISPLAY":
- self.execargs.append('--display')
- self.execargs.append('%s'%self.parent.values[12])
- if self.parent.values[16] == 0:
- self.execargs.append('--quick-subsampling')
- self.execargs.append('--workdir')
- self.execargs.append('%s'%self.parent.values[17])
- if self.parent.values[18] == 0:
- self.execargs.append('--on-the-fly-encoding')
- if self.parent.values[19] == 1:
- self.execargs.append('--compress-cache')
- if self.parent.values[20] == True:
- self.execargs.append('--overwrite')
- if self.parent.values[15] == 0:
- self.execargs.append('--follow-mouse')
- if self.parent.values[22] == True:
- self.execargs.append('--use-jack')
- for i in self.parent.values[23]:
- self.execargs.append(i)
- if self.parent.values[25] == 1:
- self.execargs.append('--no-frame')
- if self.parent.values[26] != "":
- for i in self.parent.values[26].split(" "):
- if i!="":
- self.execargs.append(i)
- #print execargs
-
-
-
- self.childP=popen2.Popen3(self.execargs,"t",0)
- flags = fcntl.fcntl(self.childP.childerr, fcntl.F_GETFL)
- fcntl.fcntl(self.childP.childerr, fcntl.F_SETFL, flags | os.O_NONBLOCK)
- self.rmdPid=self.childP.pid
- self.timed_id=QtCore.QTimer(None)
- self.timed_id.connect(self.timed_id,QtCore.SIGNAL("timeout()"),
- self.__check_status__)
- self.timed_id.start(1000)
-
- def __exit_status_dialog(self,status):
- #first try to write down a log for examination
- try:
- error_log=open(os.path.join(os.getenv("HOME"),"qt-recordMyDesktop-crash.log"),"w")
- error_log.write("#This is the command given at initialization:\n")
- for i in self.execargs:
- error_log.write("%s "%i)
- error_log.write("\n\n\n#recordMyDesktop stderror output:\n")
- error_log.write(self.ch_err)
- try:
- for err_line in self.childP.childerr.readlines():
- error_log.write(err_line)
- except:
- error_log.write("Couldn't write stderror of recordMyDesktop!\n")
- self.childP.childerr.close()
- except:
- print "Couldn't write error log.\n"
- self.dialog = QtGui.QWidget()
- self.label1=None
- try:
- self.label1 = QtGui.QLabel("\t\t"+TrayIconStr['RecFinishedKnown'] +
- ": %d\n"%(status) + TrayIconStr['ErrDesc'] + ":" +
- (rmdErrStr[int(status)]) + "\n")
- except:
- self.label1 = QtGui.QLabel("\t\t"+TrayIconStr['RecFinishedUnknown']+": %d \n"%(status))
- self.label1.setAlignment(QtCore.Qt.AlignHCenter)
- self.dialogbutton = QtGui.QPushButton("Ok",self.dialog)
- self.dialogbutton.connect(self.dialogbutton,QtCore.SIGNAL("clicked()"),self.dialog.close )
- self.dialogLayout=QtGui.QVBoxLayout()
- self.dialogLayout.addWidget(self.label1)
- self.dialogLayout.addWidget(self.dialogbutton)
-
- self.label1.show()
- self.dialogbutton.show()
- self.dialog.setLayout(self.dialogLayout)
- self.dialog.resize(300,128)
- self.dialog.show()
-
- def __pauseRMD__(self):
- os.kill(self.rmdPid,signal.SIGUSR1)
-
- def __stopRMD__(self,need_kill=True):
- if self.timed_id!=None:
- self.timed_id.stop()
- self.timed_id=None
- exit_ret=os.waitpid(self.rmdPid,os.WNOHANG)
- if exit_ret[0] == 0:
- if need_kill:
- os.kill(self.rmdPid,signal.SIGTERM)
- self.state=-1
- monitor=imon.rmdMonitor(self.childP.fromchild,self.rmdPid,self.parent)
- monitor.exec_()
- self.state=0
- else:
- self.__exit_status_dialog(exit_ret[1])
- self.parent.show()
- self.rmdPid=None
- if self.reopen==1:
- self.optionsOpen[0]=1
- self.reopen=0
-
- #print exit_ret
- def __check_status__(self):
- if self.rmdPid!=None:
- exit_ret=os.waitpid(self.rmdPid,os.WNOHANG)
- if exit_ret[0] != 0:
- self.state=0
- self.__set_icon__(self.trayIcon,"start")
- self.__exit_status_dialog(exit_ret[1])
- self.rmdPid=None
- if self.reopen==1:
- self.parent.show()
- self.optionsOpen[0]=1
- self.reopen=0
- self.timed_id.stop()
- return False
- else:
- new_stderr=""
- #try:
- while True:
- try:
- err_line=self.childP.childerr.readline()
- new_stderr+=err_line
- except:
- break
-
- self.ch_err+=new_stderr
- if(self.ch_err.find("STATE:RECORDING")>=0):
- rp=re.compile("STATE:RECORDING")
- self.ch_err=rp.sub("",self.ch_err)
- print "EXTERNAL STATE CHANGE:RECORDING"
- self.__set_icon__(self.trayIcon,"stop")
- self.state=1
- elif(self.ch_err.find("STATE:PAUSED")>=0):
- rp=re.compile("STATE:PAUSED")
- self.ch_err=rp.sub("",self.ch_err)
- print "EXTERNAL STATE CHANGE:PAUSED"
- self.__set_icon__(self.trayIcon,"pause")
- self.state=2
- elif(self.ch_err.find("STATE:ENCODING")>=0):
- rp=re.compile("STATE:ENCODING")
- self.ch_err=rp.sub("",self.ch_err)
- print "EXTERNAL STATE CHANGE:ENCODING"
- self.__stopRMD__(False)
-
- return True
-
- else:
- self.timed_id.stop()
- return False
- def __get_icon_location__(self,name):
- if name=="start":
- return os.path.join(rmdConfig.pixmapdir,"media-record.svg")
- elif name=="stop":
- return os.path.join(rmdConfig.pixmapdir,"media-playback-stop.svg")
- elif name=="pause":
- return os.path.join(rmdConfig.pixmapdir,"media-playback-pause.svg")
-
- def __init__(self,parent):
- self.parent=parent
- self.trayIcon=QtGui.QSystemTrayIcon(None)
- self.__set_icon__(self.trayIcon,"start")
- self.tray_popup=iTP.TrayPopupMenu(self.parent,self.parent.values,self.optionsOpen)
- self.trayIcon.connect(self.trayIcon,QtCore.SIGNAL("activated(QSystemTrayIcon::ActivationReason)"),self.__buttonPress__)
- self.trayIcon.show()
-
-
-if __name__ == "__main__":
- import sys
-
- app=QtGui.QApplication(sys.argv)
- app.values=rmdConfig.default_values
- w = trayIcon(app)
- app.exec_()
-
-
-
-
-
-
© All Rights Reserved