Add function to remember the last path
[KRepeater.git] / src / mainwindow.py
bloba7597d45987282d35472f7580f87b7b898f5467e
1 #!/usr/bin/env python
3 from PyQt4.QtCore import SIGNAL,SLOT,Qt
4 from PyQt4.QtCore import QPoint
5 from PyQt4.QtCore import QSettings
6 from PyQt4.QtCore import QDir
7 from PyQt4.QtCore import QCoreApplication
9 from PyQt4.QtGui import QWidget
10 from PyQt4.QtGui import QMainWindow
11 from PyQt4.QtGui import QSlider
12 from PyQt4.QtGui import QFileDialog
13 from PyQt4.QtGui import QIcon
15 from mprocess import MProcess
16 from ui_mainwindow import Ui_MainWindow
18 class MainWindow(QMainWindow,Ui_MainWindow):
19 def __init__(self, parent = None):
20 super(MainWindow, self).__init__(parent)
21 self.setupUi(self)
23 ##Quit if close this window
24 self.setAttribute(Qt.WA_QuitOnClose)
25 self.settings = QSettings(".KRepeater",QSettings.NativeFormat,self)
26 self.currDir = QDir(self.settings.value("LastPath").toString())
28 ##Set up the volume slide widget for setting volume
29 self.volumeSlide = QSlider(self)
30 self.volumeSlide.hide()
31 self.volumeSlide.setFocusPolicy(Qt.NoFocus)
32 self.volumeSlide.resize(15,110)
33 self.volumeSlide.setRange(0,100)
34 self.volumeSlide.setValue(60) # Write to config later
36 #Create a mprocess object to control mplayer process
37 self.mprocess = MProcess(self.videoWidget.winId(),self)
39 self.mprocess.setSlider(self.slider)
41 self.connect(self.pauseBtn, SIGNAL("clicked()"),
42 self.pause)
44 self.connect(self.stopBtn, SIGNAL("clicked()"),
45 self.mprocess.stop)
47 self.connect(self.volumeBtn, SIGNAL("toggled(bool)"),
48 self.volumeBtnToggled)
50 self.connect(self.volumeSlide, SIGNAL("valueChanged(int)"),
51 self.mprocess.setVolume)
53 self.connect(self.openAction,SIGNAL("triggered()"),
54 self.openFile)
56 self.connect(self.openBtn,SIGNAL("clicked()"),
57 self.openFile)
59 self.connect(self.mprocess,SIGNAL("stopped()"),
60 self.stopped)
62 self.connect(self.aBtn, SIGNAL("toggled(bool)"),self.pointA)
63 self.connect(self.bBtn, SIGNAL("toggled(bool)"),self.pointB)
65 #END def __init__(self, parent = None)
67 def showVolumeSlide(self):
68 globalPoint = self.btnWidget.mapToGlobal(self.volumeBtn.pos())
69 newPoint = self.mapFromGlobal(globalPoint) \
70 + QPoint(self.volumeBtn.width(),
71 self.volumeBtn.height() - self.volumeSlide.height())
72 self.volumeSlide.move(newPoint)
73 self.volumeSlide.show()
74 #END def showVolumeSlide(self)
76 def volumeBtnToggled(self,checked):
77 if(checked == True):
78 self.volumeBtn.setChecked(True)
79 self.showVolumeSlide()
80 else:
81 self.volumeBtn.setChecked(False)
82 self.volumeSlide.hide()
83 #END def volumeBtnToggled(self,checked):
85 def mouseReleaseEvent(self,event):
86 self.volumeBtnToggled(False)
87 #END def mouseReleasedEvent(self,event)
89 def openFile(self):
90 fileName = str(QFileDialog.getOpenFileName(self,
91 "Video File",
92 self.currDir.path()))
93 if(len(fileName) == 0):
94 return
96 n = fileName.rfind(str(QDir.separator().toAscii()))
97 self.currDir.setPath(fileName[0:n])
98 self.settings.setValue("LastPath",self.currDir.path())
100 self.mprocess.setFileName(fileName)
101 self.play()
102 #END def openFile(self)
104 def play(self):
105 self.mprocess.play()
106 self.pauseBtn.setEnabled(True)
107 self.stopBtn.setEnabled(True)
108 self.aBtn.setEnabled(True)
109 self.pauseBtn.setIcon(QIcon(":/pause.png"))
110 #END def play(self)
112 def stopped(self):
113 self.pauseBtn.setIcon(QIcon(":/play.png"))
114 self.pauseBtn.setEnabled(False)
115 self.stopBtn.setEnabled(False)
116 self.slider.setValue(0)
117 QCoreApplication.processEvents()
118 #END def stopped(self):
120 def stop(self):
121 self.stopped()
122 self.mprocess.stop()
123 #END def stop(self)
125 def pause(self):
126 self.mprocess.pause()
127 print "self.mprocess.playerState ", self.mprocess.playerState
128 if(self.mprocess.playerState == MProcess.PAUSED):
129 self.pauseBtn.setIcon(QIcon(":/play.png"))
130 else:
131 self.pauseBtn.setIcon(QIcon(":/pause.png"))
132 #END def pause(self):
134 def pointA(self):
135 if(self.aBtn.isChecked()):
136 self.mprocess.setA()
137 self.bBtn.setEnabled(True)
138 else:
139 self.mprocess.cleanPoints()
140 self.bBtn.setChecked(False)
141 self.bBtn.setEnabled(False)
142 #END def pointA(self):
144 def pointB(self):
145 if(self.bBtn.isChecked()):
146 self.mprocess.setB()
147 else:
148 self.mprocess.cleanPoints()
149 self.aBtn.setChecked(False)
150 self.bBtn.setChecked(False)
152 self.aBtn.setEnabled(True)
153 self.bBtn.setEnabled(False)
154 #END def pointB(self):
156 #END class MainWindow(QMainWindow,Ui_MainWindow)