summaryrefslogtreecommitdiffstats
path: root/examples2/semaphore.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples2/semaphore.py')
-rwxr-xr-xexamples2/semaphore.py203
1 files changed, 0 insertions, 203 deletions
diff --git a/examples2/semaphore.py b/examples2/semaphore.py
deleted file mode 100755
index f1a2b7a..0000000
--- a/examples2/semaphore.py
+++ /dev/null
@@ -1,203 +0,0 @@
-#!/usr/bin/env python
-#
-# A port of the semaphore example from TQt.
-
-
-import sys
-
-# Check if thread support was enabled.
-try:
- from python_tqt.qt import TQThread
-except:
- print("Thread support not enabled")
- sys.exit(1)
-
-from python_tqt.qt import *
-
-
-# The semaphore instances.
-yellowSem = None
-greenSem = None
-
-
-class YellowThread(TQThread):
- def __init__(self,o):
- TQThread.__init__(self)
-
- self.receiver = o
- self.stopped = 0
- self.mutex = TQMutex()
-
- def run(self):
- global yellowSem, greenSem
-
- for i in range(20):
- yellowSem += 1
-
- event = TQCustomEvent(12345)
- event.setData(TQString("Yellow!"))
- TQThread.postEvent(self.receiver,event)
- self.msleep(200);
-
- greenSem -= 1
-
- self.mutex.lock()
- if self.stopped:
- self.stopped = 0
- self.mutex.unlock()
- break
-
- self.mutex.unlock()
-
- yellowSem += 1
-
- event = TQCustomEvent(12346)
- event.setData(TQString("Yellow!"))
- TQThread.postEvent(self.receiver,event)
-
- greenSem -= 1
-
- def stop(self):
- self.mutex.lock()
- self.stopped = 1
- self.mutex.unlock()
-
-
-class GreenThread(TQThread):
- def __init__(self,o):
- TQThread.__init__(self)
-
- self.receiver = o
- self.stopped = 0
- self.mutex = TQMutex()
-
- def run(self):
- global yellowSem, greenSem
-
- for i in range(20):
- greenSem += 1
-
- event = TQCustomEvent(12345)
- event.setData(TQString("Green!"))
- TQThread.postEvent(self.receiver,event)
- self.msleep(200)
-
- yellowSem -= 1
-
- self.mutex.lock()
- if self.stopped:
- self.stopped = 0
- self.mutex.unlock()
- break
-
- self.mutex.unlock()
-
- greenSem += 1
-
- event = TQCustomEvent(12346)
- event.setData(TQString("Green!"))
- TQThread.postEvent(self.receiver,event)
- self.msleep(10)
-
- yellowSem -= 1
-
- def stop(self):
- self.mutex.lock()
- self.stopped = 1
- self.mutex.unlock()
-
-
-class SemaphoreExample(TQWidget):
- def __init__(self):
- TQWidget.__init__(self)
-
- self.yellowThread = YellowThread(self)
- self.greenThread = GreenThread(self)
-
- global yellowSem, greenSem
- yellowSem = TQSemaphore(1)
- greenSem = TQSemaphore(1)
-
- self.button = TQPushButton("&Ignition!",self)
- self.connect(self.button,SIGNAL("clicked()"),self.startExample)
-
- self.mlineedit = TQMultiLineEdit(self)
- self.label = TQLabel(self)
-
- vbox = TQVBoxLayout(self,5)
- vbox.addWidget(self.button)
- vbox.addWidget(self.mlineedit)
- vbox.addWidget(self.label)
-
- def __del__(self):
- stopYellow = self.yellowThread.running()
- stopGreen = self.greenThread.running()
-
- if stopYellow:
- self.yellowThread.stop()
-
- if self.greenThread.running():
- self.greenThread.stop()
-
- if stopYellow:
- self.yellowThread.wait()
-
- if stopGreen:
- self.greenThread.wait()
-
- global yellowSem, greenSem
- yellowSem = None
- greenSem = None
-
- def startExample(self):
- if self.yellowThread.running() or self.greenThread.running():
- TQMessageBox.information(self,"Sorry",
- "The threads have not completed yet, and must finish before "
- "they can be started again.")
-
- return
-
- self.mlineedit.clear()
-
- global yellowSem
-
- while yellowSem.available() < yellowSem.total():
- yellowSem -= 1
-
- yellowSem += 1
-
- self.yellowThread.start()
- self.greenThread.start()
-
- def customEvent(self,event):
- if event.type() == 12345:
- s = event.data()
-
- self.mlineedit.append(s)
-
- if s.latin1() == "Green!":
- self.label.setPaletteBackgroundColor(TQt.green)
- else:
- self.label.setPaletteBackgroundColor(TQt.yellow)
-
- self.label.setText(s)
-
- del s
- elif event.type() == 12346:
- s = event.data()
-
- TQMessageBox.information(self,s.latin1() + " - Finished",
- "The thread creating the \"" + s.latin1() +
- "\" events has finished.")
-
- del s
- else:
- print("Unknown custom event type:", event.type())
-
-
-app = TQApplication(sys.argv)
-se = SemaphoreExample()
-app.setMainWidget(se)
-se.show()
-
-sys.exit(app.exec_loop())