home *** CD-ROM | disk | FTP | other *** search
/ MacHack 2000 / MacHack 2000.toast / pc / The Hacks / MacHacksBug / Python 1.5.2c1 / Mac / Tools / IDE / PythonIDEMain.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2000-06-23  |  12.8 KB  |  282 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 1.5)
  3.  
  4. import Splash
  5. import FrameWork
  6. import Win
  7. import Wapplication
  8. import W
  9. import os
  10. import macfs
  11.  
  12. class PythonIDE(Wapplication.Application):
  13.     
  14.     def __init__(self):
  15.         self.preffilepath = ':Python:PythonIDE preferences'
  16.         Wapplication.Application.__init__(self, 'Pide')
  17.         import AE
  18.         import AppleEvents
  19.         AE.AEInstallEventHandler(AppleEvents.kCoreEventClass, AppleEvents.kAEOpenApplication, self.ignoreevent)
  20.         AE.AEInstallEventHandler(AppleEvents.kCoreEventClass, AppleEvents.kAEPrintDocuments, self.ignoreevent)
  21.         AE.AEInstallEventHandler(AppleEvents.kCoreEventClass, AppleEvents.kAEOpenDocuments, self.opendocsevent)
  22.         AE.AEInstallEventHandler(AppleEvents.kCoreEventClass, AppleEvents.kAEQuitApplication, self.quitevent)
  23.         import PyConsole
  24.         import PyEdit
  25.         Splash.wait()
  26.         Splash.uninstall_importhook()
  27.         PyConsole.installoutput()
  28.         PyConsole.installconsole()
  29.         import sys
  30.         for path in sys.argv[1:]:
  31.             self.opendoc(path)
  32.         
  33.         self.mainloop()
  34.  
  35.     
  36.     def makeusermenus(self):
  37.         m = Wapplication.Menu(self.menubar, 'File')
  38.         newitem = FrameWork.MenuItem(m, 'New', 'N', 'new')
  39.         openitem = FrameWork.MenuItem(m, 'Open\xc9', 'O', 'open')
  40.         FrameWork.Separator(m)
  41.         closeitem = FrameWork.MenuItem(m, 'Close', 'W', 'close')
  42.         saveitem = FrameWork.MenuItem(m, 'Save', 'S', 'save')
  43.         saveasitem = FrameWork.MenuItem(m, 'Save as\xc9', None, 'save_as')
  44.         FrameWork.Separator(m)
  45.         saveasappletitem = FrameWork.MenuItem(m, 'Save as Applet\xc9', None, 'save_as_applet')
  46.         FrameWork.Separator(m)
  47.         quititem = FrameWork.MenuItem(m, 'Quit', 'Q', 'quit')
  48.         m = Wapplication.Menu(self.menubar, 'Edit')
  49.         undoitem = FrameWork.MenuItem(m, 'Undo', 'Z', 'undo')
  50.         FrameWork.Separator(m)
  51.         cutitem = FrameWork.MenuItem(m, 'Cut', 'X', 'cut')
  52.         copyitem = FrameWork.MenuItem(m, 'Copy', 'C', 'copy')
  53.         pasteitem = FrameWork.MenuItem(m, 'Paste', 'V', 'paste')
  54.         FrameWork.MenuItem(m, 'Clear', None, 'clear')
  55.         FrameWork.Separator(m)
  56.         selallitem = FrameWork.MenuItem(m, 'Select all', 'A', 'selectall')
  57.         sellineitem = FrameWork.MenuItem(m, 'Select line', 'L', 'selectline')
  58.         FrameWork.Separator(m)
  59.         finditem = FrameWork.MenuItem(m, 'Find\xc9', 'F', 'find')
  60.         findagainitem = FrameWork.MenuItem(m, 'Find again', 'G', 'findnext')
  61.         enterselitem = FrameWork.MenuItem(m, 'Enter search string', 'E', 'entersearchstring')
  62.         replaceitem = FrameWork.MenuItem(m, 'Replace', None, 'replace')
  63.         replacefinditem = FrameWork.MenuItem(m, 'Replace & find again', 'T', 'replacefind')
  64.         FrameWork.Separator(m)
  65.         shiftleftitem = FrameWork.MenuItem(m, 'Shift left', '[', 'shiftleft')
  66.         shiftrightitem = FrameWork.MenuItem(m, 'Shift right', ']', 'shiftright')
  67.         m = Wapplication.Menu(self.menubar, 'Python')
  68.         runitem = FrameWork.MenuItem(m, 'Run window', 'R', 'run')
  69.         runselitem = FrameWork.MenuItem(m, 'Run selection', None, 'runselection')
  70.         FrameWork.Separator(m)
  71.         moditem = FrameWork.MenuItem(m, 'Module browser\xc9', 'M', self.domenu_modulebrowser)
  72.         FrameWork.Separator(m)
  73.         mm = FrameWork.SubMenu(m, 'Preferences')
  74.         FrameWork.MenuItem(mm, 'Set Scripts folder\xc9', None, self.do_setscriptsfolder)
  75.         FrameWork.MenuItem(mm, 'Editor default settings\xc9', None, self.do_editorprefs)
  76.         FrameWork.MenuItem(mm, 'Set default window font\xc9', None, self.do_setwindowfont)
  77.         self.openwindowsmenu = Wapplication.Menu(self.menubar, 'Windows')
  78.         self.makeopenwindowsmenu()
  79.         self._menustocheck = [
  80.             closeitem,
  81.             saveitem,
  82.             saveasitem,
  83.             saveasappletitem,
  84.             undoitem,
  85.             cutitem,
  86.             copyitem,
  87.             pasteitem,
  88.             selallitem,
  89.             sellineitem,
  90.             finditem,
  91.             findagainitem,
  92.             enterselitem,
  93.             replaceitem,
  94.             replacefinditem,
  95.             shiftleftitem,
  96.             shiftrightitem,
  97.             runitem,
  98.             runselitem]
  99.         prefs = self.getprefs()
  100.         
  101.         try:
  102.             (fss, fss_changed) = macfs.RawAlias(prefs.scriptsfolder).Resolve()
  103.             self.scriptsfolder = fss.NewAlias()
  104.         except:
  105.             path = os.path.join(os.getcwd(), ':Mac:IDE scripts')
  106.             if not os.path.exists(path):
  107.                 path = os.path.join(os.getcwd(), 'Scripts')
  108.                 if not os.path.exists(path):
  109.                     os.mkdir(path)
  110.                     f = open(os.path.join(path, 'Place your scripts here\xc9'), 'w')
  111.                     f.close()
  112.                 
  113.             
  114.             fss = macfs.FSSpec(path)
  115.             self.scriptsfolder = fss.NewAlias()
  116.             self.scriptsfoldermodtime = fss.GetDates()[1]
  117.  
  118.         self.scriptsfoldermodtime = fss.GetDates()[1]
  119.         prefs.scriptsfolder = self.scriptsfolder.data
  120.         self._scripts = { }
  121.         self.scriptsmenu = None
  122.         self.makescriptsmenu()
  123.  
  124.     
  125.     def quitevent(self, theAppleEvent, theReply):
  126.         import AE
  127.         AE.AEInteractWithUser(50000000)
  128.         self._quit()
  129.  
  130.     
  131.     def suspendresume(self, onoff):
  132.         if onoff:
  133.             (fss, fss_changed) = self.scriptsfolder.Resolve()
  134.             modtime = fss.GetDates()[1]
  135.             if self.scriptsfoldermodtime != modtime or fss_changed:
  136.                 self.scriptsfoldermodtime = modtime
  137.                 W.SetCursor('watch')
  138.                 self.makescriptsmenu()
  139.             
  140.         
  141.  
  142.     
  143.     def ignoreevent(self, theAppleEvent, theReply):
  144.         pass
  145.  
  146.     
  147.     def opendocsevent(self, theAppleEvent, theReply):
  148.         W.SetCursor('watch')
  149.         import aetools
  150.         (parameters, args) = aetools.unpackevent(theAppleEvent)
  151.         docs = parameters['----']
  152.         if type(docs) != type([]):
  153.             docs = [
  154.                 docs]
  155.         
  156.         for doc in docs:
  157.             (fss, a) = doc.Resolve()
  158.             path = fss.as_pathname()
  159.             self.opendoc(path)
  160.         
  161.  
  162.     
  163.     def opendoc(self, path):
  164.         (fcreator, ftype) = macfs.FSSpec(path).GetCreatorType()
  165.         if ftype == 'TEXT':
  166.             self.openscript(path)
  167.         else:
  168.             W.Message("Can\xd5t open file of type '%s'." % ftype)
  169.  
  170.     
  171.     def getabouttext(self):
  172.         return 'About Python IDE\xc9'
  173.  
  174.     
  175.     def do_about(self, id, item, window, event):
  176.         Splash.about()
  177.  
  178.     
  179.     def do_setscriptsfolder(self, *args):
  180.         (fss, ok) = macfs.GetDirectory('Select Scripts Folder')
  181.         if ok:
  182.             prefs = self.getprefs()
  183.             alis = fss.NewAlias()
  184.             prefs.scriptsfolder = alis.data
  185.             self.scriptsfolder = alis
  186.             self.makescriptsmenu()
  187.             prefs.save()
  188.         
  189.  
  190.     
  191.     def domenu_modulebrowser(self, *args):
  192.         W.SetCursor('watch')
  193.         import ModuleBrowser
  194.         ModuleBrowser.ModuleBrowser()
  195.  
  196.     
  197.     def domenu_open(self, *args):
  198.         (fss, ok) = macfs.StandardGetFile('TEXT')
  199.         if ok:
  200.             self.openscript(fss.as_pathname())
  201.         
  202.  
  203.     
  204.     def domenu_new(self, *args):
  205.         W.SetCursor('watch')
  206.         import PyEdit
  207.         return PyEdit.Editor()
  208.  
  209.     
  210.     def makescriptsmenu(self):
  211.         W.SetCursor('watch')
  212.         if self._scripts:
  213.             for id, item in self._scripts.keys():
  214.                 pass
  215.             
  216.             self._scripts = { }
  217.         
  218.         if self.scriptsmenu:
  219.             if hasattr(self.scriptsmenu, 'id') and self.menubar.menus.has_key(self.scriptsmenu.id):
  220.                 self.scriptsmenu.delete()
  221.             
  222.         
  223.         self.scriptsmenu = FrameWork.Menu(self.menubar, 'Scripts')
  224.         (fss, fss_changed) = self.scriptsfolder.Resolve()
  225.         self.scriptswalk(fss.as_pathname(), self.scriptsmenu)
  226.  
  227.     
  228.     def makeopenwindowsmenu(self):
  229.         for i in range(len(self.openwindowsmenu.items)):
  230.             self.openwindowsmenu.menu.DeleteMenuItem(1)
  231.             self.openwindowsmenu.items = []
  232.         
  233.         windows = []
  234.         self._openwindows = { }
  235.         for window in self._windows.keys():
  236.             title = window.GetWTitle()
  237.             windows.append(title, window)
  238.         
  239.         windows.sort()
  240.         for title, window in windows:
  241.             item = FrameWork.MenuItem(self.openwindowsmenu, title, shortcut, callback = self.domenu_openwindows)
  242.             self._openwindows[item.item] = window
  243.         
  244.         self._openwindowscheckmark = 0
  245.         self.checkopenwindowsmenu()
  246.  
  247.     
  248.     def domenu_openwindows(self, id, item, window, event):
  249.         w = self._openwindows[item]
  250.         w.ShowWindow()
  251.         w.SelectWindow()
  252.  
  253.     
  254.     def domenu_quit(self):
  255.         self._quit()
  256.  
  257.     
  258.     def domenu_save(self, *args):
  259.         print 'Save'
  260.  
  261.     
  262.     def _quit(self):
  263.         import PyConsole
  264.         import PyEdit
  265.         PyConsole.console.writeprefs()
  266.         PyConsole.output.writeprefs()
  267.         PyEdit.searchengine.writeprefs()
  268.         for window in self._windows.values():
  269.             
  270.             try:
  271.                 rv = window.close()
  272.             except:
  273.                 0
  274.                 self._windows.values()
  275.                 rv = 0
  276.  
  277.         
  278.         self.quitting = 1
  279.  
  280.  
  281. PythonIDE()
  282.