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.py267
1 files changed, 0 insertions, 267 deletions
diff --git a/Mac/Tools/twit/mactwit_app.py b/Mac/Tools/twit/mactwit_app.py
deleted file mode 100644
index 8c568df..0000000
--- a/Mac/Tools/twit/mactwit_app.py
+++ /dev/null
@@ -1,267 +0,0 @@
-import FrameWork
-import MiniAEFrame
-import EasyDialogs
-import AE
-import AppleEvents
-import Res
-import sys
-import Qd
-import Evt
-import Events
-import Dlg
-import Win
-import Menu
-import TwitCore
-import mactwit_mod
-import mactwit_stack
-import mactwit_browser
-import mactwit_edit
-import macfs
-import string
-
-# Resource-id (for checking existence)
-ID_MODULES=500
-
-ID_ABOUT=502
-
-_arrow = Qd.qd.arrow
-_watch = Qd.GetCursor(4).data
-
-class Twit(FrameWork.Application, TwitCore.Application, MiniAEFrame.AEServer):
- """The twit main class - mac-dependent part"""
-
- def __init__(self, sessiontype, arg=None):
- # First init menus, etc.
- self.app_menu_bar = Menu.GetMenuBar()
- FrameWork.Application.__init__(self)
- MiniAEFrame.AEServer.__init__(self)
- AE.AESetInteractionAllowed(AppleEvents.kAEInteractWithAll)
- self.installaehandler('aevt', 'odoc', self.ae_open_doc)
- self.installaehandler('aevt', 'quit', self.do_quit)
- self.installaehandler('pyth', 'EXEC', self.do_bbpyexec) # BBpy execute event
-
- self.dbg_menu_bar = Menu.GetMenuBar()
- self.setstate(sessiontype)
- self._quitting = 0
- self.real_quit = 0
- self.window_aware = 1
-
- # Next create our dialogs
- self.mi_init(sessiontype, arg)
- while 1:
- if self.real_quit:
- break
- if self.initial_cmd:
- self.to_debugger() # Will get to mainloop via debugger
- else:
- self.one_mainloop() # Else do it ourselves.
-
- def switch_to_app(self):
- if not self.window_aware:
- return
- self.dbg_menu_bar = Menu.GetMenuBar()
- Menu.SetMenuBar(self.app_menu_bar)
- Menu.DrawMenuBar()
-
- def switch_to_dbg(self):
- if not self.window_aware:
- return
- self.app_menu_bar = Menu.GetMenuBar()
- Menu.SetMenuBar(self.dbg_menu_bar)
- Menu.DrawMenuBar()
- self.run_dialog.force_redraw()
- if self.module_dialog:
- self.module_dialog.force_redraw()
-
- def makeusermenus(self):
- self.filemenu = m = FrameWork.Menu(self.menubar, "Debug")
- self._openitem = FrameWork.MenuItem(m, "Run File...", "O", self.do_open)
- self._runitem = FrameWork.MenuItem(m, "Run String...", "R", self.do_run)
- FrameWork.Separator(m)
- self._awareitem = FrameWork.MenuItem(m, "Window-aware", "", self.do_aware)
- self._awareitem.check(1)
- FrameWork.Separator(m)
- self._quititem = FrameWork.MenuItem(m, "Quit", "Q", self.do_quit)
-
- self.controlmenu = m = FrameWork.Menu(self.menubar, "Control")
- self._stepitem = FrameWork.MenuItem(m, "Step Next", "N", self.do_step)
- self._stepinitem = FrameWork.MenuItem(m, "Step In", "S", self.do_stepin)
- self._stepoutitem = FrameWork.MenuItem(m, "Step Out", "U", self.do_stepout)
- self._continueitem = FrameWork.MenuItem(m, "Continue", "G", self.do_continue)
- FrameWork.Separator(m)
- self._killitem = FrameWork.MenuItem(m, "Kill", "K", self.do_kill)
-
- def setstate(self, state):
- self.state = state
- if state == 'run':
- self._stepitem.enable(1)
- self._stepoutitem.enable(1)
- self._stepinitem.enable(1)
- self._continueitem.enable(1)
- self._killitem.enable(1)
- else:
- self._stepitem.enable(0)
- self._stepoutitem.enable(0)
- self._stepinitem.enable(0)
- self._continueitem.enable(0)
- self._killitem.enable(0)
-
- def asknewsession(self):
- if self.state == 'none':
- return 1
- if EasyDialogs.AskYesNoCancel("Abort current debug session?") == 1:
- self.quit_bdb()
- return 1
- return 0
-
- 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_open(self, *args):
- if not self.asknewsession():
- return
- fss, ok = macfs.StandardGetFile('TEXT')
- if not ok: return
- self.runfile(fss.as_pathname())
-
- def ae_open_doc(self, object=None, **args):
- if not object: return
- if self.state <> 'none':
- if AE.AEInteractWithUser(AppleEvents.kAEDefaultTimeout) == 0:
- if not self.asknewsession():
- return
- if type(object) == type([]):
- object = object[0]
- fss, changed = object.Resolve()
- self.runfile(fss.as_pathname())
-
- def do_bbpyexec(self, object=None, NAME=None, **args):
- if type(object) <> type(''):
- if AE.AEInteractWithUser(AppleEvents.kAEDefaultTimeout) == 0:
- EasyDialogs.Message('EXEC AppleEvent arg should be a string')
- return
- if self.state <> 'none':
- if AE.AEInteractWithUser(AppleEvents.kAEDefaultTimeout) == 0:
- if not self.asknewsession():
- return
- stuff = string.splitfields(object, '\r')
- stuff = string.joinfields(stuff, '\n')
- self.runstring(stuff)
-
- def do_run(self, *args):
- if not self.asknewsession():
- return
- self.run()
-
- def do_aware(self, *args):
- self.window_aware = not self.window_aware
- self._awareitem.check(self.window_aware)
-
- def do_quit(self, *args):
- self._quit() # Signal FrameWork.Application to stop
- self.real_quit = 1
- self.quit_bdb() # Tell debugger to quit.
-
- def do_step(self, *args):
- self.run_dialog.click_step()
-
- def do_stepin(self, *args):
- self.run_dialog.click_step_in()
-
- def do_stepout(self, *args):
- self.run_dialog.click_step_out()
-
- def do_continue(self, *args):
- self.run_dialog.click_continue()
-
- def do_kill(self, *args):
- self.run_dialog.click_kill()
-
- 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 SetCursor(self):
- Qd.SetCursor(_arrow)
-
- def SetWatch(self):
- Qd.SetCursor(_watch)
-
- def AskString(self, *args):
- return apply(EasyDialogs.AskString, args)
-
- def Message(self, *args):
- return apply(EasyDialogs.Message, args)
-
- def new_module_browser(self, parent):
- return mactwit_mod.ModuleBrowser(parent)
-
- def new_stack_browser(self, parent):
- return mactwit_stack.StackBrowser(parent)
-
- def new_var_browser(self, parent, var):
- return mactwit_browser.VarBrowser(parent).open(var)
-
- def edit(self, file, line):
- return mactwit_edit.edit(file, line)
-
-
-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.FSpOpenResFile("Twit.rsrc", 1)
- except Res.Error, arg:
- EasyDialogs.Message("Cannot open Twit.rsrc: "+arg[1])
- sys.exit(1)
-