summaryrefslogtreecommitdiffstats
path: root/Mac/Tools/twit/mactwit_app.py
diff options
context:
space:
mode:
Diffstat (limited to 'Mac/Tools/twit/mactwit_app.py')
-rw-r--r--Mac/Tools/twit/mactwit_app.py130
1 files changed, 130 insertions, 0 deletions
diff --git a/Mac/Tools/twit/mactwit_app.py b/Mac/Tools/twit/mactwit_app.py
new file mode 100644
index 0000000..268f644
--- /dev/null
+++ b/Mac/Tools/twit/mactwit_app.py
@@ -0,0 +1,130 @@
+import FrameWork
+import EasyDialogs
+import Res
+import sys
+import Qd
+import Evt
+import Events
+import Dlg
+import Win
+
+# Resource-id (for checking existence)
+ID_MODULES=512
+
+ID_ABOUT=515
+
+_arrow = Qd.qd.arrow
+_watch = Qd.GetCursor(4).data
+
+# Made available to TwitCore:
+AskString = EasyDialogs.AskString
+
+def SetCursor():
+ Qd.SetCursor(_arrow)
+
+def SetWatch():
+ Qd.SetCursor(_watch)
+
+# Exception for temporarily exiting the loop and program
+ExitMainloop = 'ExitMainloop'
+ExitFully = 'ExitFully'
+
+class Application(FrameWork.Application):
+ """The twit main class - mac-dependent part"""
+
+ def __init__(self, run_args, pm_args):
+ # First init menus, etc.
+ FrameWork.Application.__init__(self)
+ self._quitting = 0
+ self.real_quit = 0
+
+ # Next create our dialogs
+ self.mi_init(run_args, pm_args)
+ if self.real_quit:
+ return
+
+ if not run_args:
+ # Go into mainloop once
+ self.one_mainloop()
+ if self.real_quit:
+ return
+
+ if not pm_args:
+ # And give the debugger control.
+ self.to_debugger()
+
+ def makeusermenus(self):
+ self.filemenu = m = FrameWork.Menu(self.menubar, "File")
+ self._quititem = FrameWork.MenuItem(m, "Quit", "Q", self.do_quit)
+
+ def do_about(self, id, item, window, event):
+ import time
+ d = Dlg.GetNewDialog(ID_ABOUT, -1)
+ if not d:
+ return
+ w = d.GetDialogWindow()
+ port = w.GetWindowPort()
+ l, t, r, b = port.portRect
+ sl, st, sr, sb = Qd.qd.screenBits.bounds
+ x = ((sr-sl) - (r-l)) / 2
+ y = ((sb-st-16) - (b-t)) / 5
+ w.MoveWindow(x, y, 0)
+ w.ShowWindow()
+ d.DrawDialog()
+
+ tp, h, rect = d.GetDialogItem(2)
+ x0, y0, x1, y1 = rect
+ ybot = y0 + 32
+
+ rgn = Qd.NewRgn()
+ Qd.SetPort(d)
+ ok, evt = self.getevent(Events.mDownMask|Events.keyDownMask, 1)
+ if ok: return
+ (what, message, when, where, modifiers) = event
+ delta_t = 128
+ nexttime = when+delta_t
+ while ybot < y1:
+ # Do the animation, if it is time
+ if when > nexttime:
+ Qd.ScrollRect((x0, y0, x1, ybot), 0, 1, rgn)
+ y0 = y0 + 1
+ ybot = ybot + 1
+ # And update next time
+ delta_t = int(delta_t*0.6)-1
+ if delta_t < 0:
+ delta_t = 0
+ nexttime = when + delta_t
+ # Check for an event.
+ ok, evt = self.getevent(Events.mDownMask|Events.keyDownMask, 0)
+ if ok: return
+ (what, message, when, where, modifiers) = evt
+ while 1:
+ ok, evt = self.getevent(Events.mDownMask|Events.keyDownMask, -1)
+ if ok: return
+
+ def do_quit(self, *args):
+ self._quit() # Signal FrameWork.Application to stop
+ self.real_quit = 1
+ self.quit_bdb() # Tell debugger to quit.
+
+ def exit_mainloop(self):
+ self._quit() # Signal FrameWork.Application to stop
+ self.real_quit = 0
+
+ def one_mainloop(self):
+ self.quitting = 0
+ self.mainloop()
+
+def Initialize():
+ try:
+ # if this doesn't raise an error, we are an applet containing the
+ # necessary resources or we have been initialized already
+ # so we don't have to bother opening the resource file
+ dummy = Res.GetResource('DLOG', ID_MODULES)
+ except Res.Error:
+ try:
+ Res.OpenResFile("Twit.rsrc")
+ except Res.Error, arg:
+ EasyDialogs.Message("Cannot open Twit.rsrc: "+arg[1])
+ sys.exit(1)
+