[Pymoul-svn] SF.net SVN: pymoul: [83] pymoul/trunk/src/moul/qt
Status: Alpha
Brought to you by:
tiran
|
From: <ti...@us...> - 2007-01-26 16:29:25
|
Revision: 83
http://pymoul.svn.sourceforge.net/pymoul/?rev=83&view=rev
Author: tiran
Date: 2007-01-26 08:29:18 -0800 (Fri, 26 Jan 2007)
Log Message:
-----------
added test thread
WMI is not thread safe :(
Modified Paths:
--------------
pymoul/trunk/src/moul/qt/mainwindow.py
pymoul/trunk/src/moul/qt/moulqt.py
Modified: pymoul/trunk/src/moul/qt/mainwindow.py
===================================================================
--- pymoul/trunk/src/moul/qt/mainwindow.py 2007-01-26 15:15:00 UTC (rev 82)
+++ pymoul/trunk/src/moul/qt/mainwindow.py 2007-01-26 16:29:18 UTC (rev 83)
@@ -33,6 +33,7 @@
from moul.qt.ui.mainwindow import Ui_MainWindow
from moul.qt.localization import LocalizationMixin
+from moul.osdependent import isMoulRunning
from moul.config import lookupDir
from moul.file.wdysini import AudioIni
from moul.file.wdysini import GraphicsIni
@@ -45,6 +46,17 @@
LOG = getLogger('moul.qt')
+def criticalMessageBox(self, title, text):
+ """Critical warning!
+ """
+ mb = QtGui.QMessageBox()
+ mb.setWindowIcon(QtGui.QIcon(":/resources/uru_icon_32x32.png"))
+ mb.setIcon(QtGui.QMessageBox.Critical)
+ mb.setWindowTitle(self.trUtf8(title))
+ mb.setText(self.trUtf8(text))
+ mb.setStandardButtons(QtGui.QMessageBox.Close)
+ return mb
+
class MainWindow(QtGui.QMainWindow, Ui_MainWindow, LocalizationMixin):
def __init__(self):
QtGui.QMainWindow.__init__(self)
@@ -69,7 +81,17 @@
self._systray_init()
self.tab_documents.setEnabled(False)
self._documents_init()
+
+ # run checker
+ self._moulrunning_thread = MoulRunningThread()
+ self.connect(self._moulrunning_thread, SIGNAL('moulIsRunning(bool)'),
+ self.on_moulIsRunning)
+ self._moulrunning_thread.startChecker(10.0) # check now and every 10 seconds
+ @signalLogDecorator(LOG)
+ def on_moulIsRunning(self, bool):
+ pass
+
def _notimplemented(self):
"""TODO: remove me
"""
@@ -493,11 +515,13 @@
self._servers = None
def pingServers(self, servers):
+ # TODO: thread safety!
self.servers = servers
if not self.isRunning():
self.start()
def run(self):
+ # TODO: thread safety!
self.emit(SIGNAL("started"))
# emit a list of names first
for server in self.servers:
@@ -520,3 +544,39 @@
self.emit(SIGNAL("ping(const QString&, float)"), name, ping)
self.emit(SIGNAL("done()"))
+
+class MoulRunningThread(QtCore.QThread):
+ def __init__(self, parent=None):
+ QtCore.QThread.__init__(self, parent)
+ self.mutex = QtCore.QMutex()
+ self.condition = QtCore.QWaitCondition()
+ self._timer = None
+ self._running = False
+
+ def startChecker(self, timer):
+ self._timer = long(timer * 1000)
+ if not self.isRunning():
+ self._running = True
+ self.start()
+
+ def stopChecker(self):
+ # TODO check this
+ self._running = False
+ self.condition.wakeAll()
+
+ def __del__(self):
+ self.stopChecker()
+
+ def run(self):
+ while True:
+ result = True #isMoulRunning()
+ if result:
+ self.emit(SIGNAL('moulIsRunning(bool)'), True)
+ else:
+ self.emit(SIGNAL('moulIsRunning(bool)'), False)
+
+ self.mutex.lock()
+ self.condition.wait(self.mutex, self._timer)
+ self.mutex.unlock()
+ if not self._running:
+ return
Modified: pymoul/trunk/src/moul/qt/moulqt.py
===================================================================
--- pymoul/trunk/src/moul/qt/moulqt.py 2007-01-26 15:15:00 UTC (rev 82)
+++ pymoul/trunk/src/moul/qt/moulqt.py 2007-01-26 16:29:18 UTC (rev 83)
@@ -27,36 +27,28 @@
from PyQt4 import QtGui
from moul.qt.mainwindow import MainWindow
+from moul.qt.mainwindow import criticalMessageBox
from moul.osdependent.singleapp import SimpleSingleApp
from moul.config import getPyMoulDataDir
from moul.osdependent import isMoulRunning
-def critical(self, title, text):
- """Critical warning!
- """
- mb = QtGui.QMessageBox()
- mb.setWindowIcon(QtGui.QIcon(":/resources/uru_icon_32x32.png"))
- mb.setIcon(QtGui.QMessageBox.Critical)
- mb.setWindowTitle(self.trUtf8(title))
- mb.setText(self.trUtf8(text))
- mb.setStandardButtons(QtGui.QMessageBox.Close)
- return mb
-
def main(*args):
app = QtGui.QApplication(*args)
singleapp = SimpleSingleApp('pymoulqt', path=getPyMoulDataDir())
try:
singleapp.acquire()
except OSError:
- mb = critical(app, "pyMoul QT already running",
+ mb = criticalMessageBox(app,
+ "pyMoul QT already running",
"""An instance of pyMoul QT is already running!""")
mb.exec_()
sys.exit(1)
- if isMoulRunning():
- mb = critical(app, "URU is running",
- """URU is running! Please close Uru or Uru Launcher first.""")
- mb.exec_()
- sys.exit(2)
+ #if isMoulRunning():
+ # mb = criticalMessageBox(app,
+ # "URU is running",
+ # """URU is running! Please close Uru or Uru Launcher first.""")
+ # mb.exec_()
+ # sys.exit(2)
mainWindow = MainWindow()
mainWindow.show()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|