annotate Mac/Tools/IDE/PythonIDEMain.py @ 25084:b337ef16c0d2 legacy-trunk

Implemented the Help menu. The Python manual can be viewed (if installed) and the selection can be looked up, and so can the Carbon manual. From the help menu you can also get to the online documentation, the Python website and the MacPython page. Untested in MacPython-OS9.
author Jack Jansen <jack.jansen@cwi.nl>
date Sat, 31 Aug 2002 01:25:17 +0000
parents 62d8f974811f
children bf90fb71aa76
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
20836
c1ebc0285a5e removed import display hackery
Just van Rossum <just@letterror.com>
parents: 19488
diff changeset
1 # copyright 1997-2001 Just van Rossum, Letterror. just@letterror.com
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
2
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
3 import Splash
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
4
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
5 import FrameWork
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
6 import Wapplication
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
7 import W
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
8 import os
22672
86ce9ee14045 Allow file without filetype as long as they end in ".py".
Jack Jansen <jack.jansen@cwi.nl>
parents: 21867
diff changeset
9 import sys
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
10 import macfs
21772
ec750e37671b Changes by Donovan Preston (and a few minor ones by me) to make IDE run under
Jack Jansen <jack.jansen@cwi.nl>
parents: 20836
diff changeset
11 import MacOS
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
12
21772
ec750e37671b Changes by Donovan Preston (and a few minor ones by me) to make IDE run under
Jack Jansen <jack.jansen@cwi.nl>
parents: 20836
diff changeset
13 if MacOS.runtimemodel == 'macho':
ec750e37671b Changes by Donovan Preston (and a few minor ones by me) to make IDE run under
Jack Jansen <jack.jansen@cwi.nl>
parents: 20836
diff changeset
14 ELIPSES = '...'
ec750e37671b Changes by Donovan Preston (and a few minor ones by me) to make IDE run under
Jack Jansen <jack.jansen@cwi.nl>
parents: 20836
diff changeset
15 else:
ec750e37671b Changes by Donovan Preston (and a few minor ones by me) to make IDE run under
Jack Jansen <jack.jansen@cwi.nl>
parents: 20836
diff changeset
16 ELIPSES = '\xc9'
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
17
21867
da008b5c5035 Don't append quit menu when on OSX, it is special and automatic there.
Just van Rossum <just@letterror.com>
parents: 21772
diff changeset
18 def runningOnOSX():
da008b5c5035 Don't append quit menu when on OSX, it is special and automatic there.
Just van Rossum <just@letterror.com>
parents: 21772
diff changeset
19 from gestalt import gestalt
da008b5c5035 Don't append quit menu when on OSX, it is special and automatic there.
Just van Rossum <just@letterror.com>
parents: 21772
diff changeset
20 gestaltMenuMgrAquaLayoutBit = 1 # menus have the Aqua 1.0 layout
da008b5c5035 Don't append quit menu when on OSX, it is special and automatic there.
Just van Rossum <just@letterror.com>
parents: 21772
diff changeset
21 gestaltMenuMgrAquaLayoutMask = (1L << gestaltMenuMgrAquaLayoutBit)
da008b5c5035 Don't append quit menu when on OSX, it is special and automatic there.
Just van Rossum <just@letterror.com>
parents: 21772
diff changeset
22 value = gestalt("menu") & gestaltMenuMgrAquaLayoutMask
da008b5c5035 Don't append quit menu when on OSX, it is special and automatic there.
Just van Rossum <just@letterror.com>
parents: 21772
diff changeset
23 return not not value
da008b5c5035 Don't append quit menu when on OSX, it is special and automatic there.
Just van Rossum <just@letterror.com>
parents: 21772
diff changeset
24
da008b5c5035 Don't append quit menu when on OSX, it is special and automatic there.
Just van Rossum <just@letterror.com>
parents: 21772
diff changeset
25
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
26 class PythonIDE(Wapplication.Application):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
27
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
28 def __init__(self):
24226
62d8f974811f fixed wrong classic MacOS pathname assumption
Just van Rossum <just@letterror.com>
parents: 22675
diff changeset
29 self.preffilepath = os.path.join("Python", "PythonIDE preferences")
10322
a87cfea30b04 changed creator to 'Pide' -- jvr
Just van Rossum <just@lettererror.com>
parents: 10310
diff changeset
30 Wapplication.Application.__init__(self, 'Pide')
19488
42b2f1936254 Import the MacOS toolbox modules from the Carbon package.
Jack Jansen <jack.jansen@cwi.nl>
parents: 18167
diff changeset
31 from Carbon import AE
42b2f1936254 Import the MacOS toolbox modules from the Carbon package.
Jack Jansen <jack.jansen@cwi.nl>
parents: 18167
diff changeset
32 from Carbon import AppleEvents
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
33
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
34 AE.AEInstallEventHandler(AppleEvents.kCoreEventClass, AppleEvents.kAEOpenApplication,
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
35 self.ignoreevent)
17015
3c650d9c38e7 Handle the ReopenApplication event (by ignoring it).
Jack Jansen <jack.jansen@cwi.nl>
parents: 15284
diff changeset
36 AE.AEInstallEventHandler(AppleEvents.kCoreEventClass, AppleEvents.kAEReopenApplication,
3c650d9c38e7 Handle the ReopenApplication event (by ignoring it).
Jack Jansen <jack.jansen@cwi.nl>
parents: 15284
diff changeset
37 self.ignoreevent)
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
38 AE.AEInstallEventHandler(AppleEvents.kCoreEventClass, AppleEvents.kAEPrintDocuments,
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
39 self.ignoreevent)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
40 AE.AEInstallEventHandler(AppleEvents.kCoreEventClass, AppleEvents.kAEOpenDocuments,
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
41 self.opendocsevent)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
42 AE.AEInstallEventHandler(AppleEvents.kCoreEventClass, AppleEvents.kAEQuitApplication,
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
43 self.quitevent)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
44 import PyConsole, PyEdit
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
45 Splash.wait()
22672
86ce9ee14045 Allow file without filetype as long as they end in ".py".
Jack Jansen <jack.jansen@cwi.nl>
parents: 21867
diff changeset
46 # With -D option (OSX command line only) keep stderr, for debugging the IDE
86ce9ee14045 Allow file without filetype as long as they end in ".py".
Jack Jansen <jack.jansen@cwi.nl>
parents: 21867
diff changeset
47 # itself.
86ce9ee14045 Allow file without filetype as long as they end in ".py".
Jack Jansen <jack.jansen@cwi.nl>
parents: 21867
diff changeset
48 debug_stderr = None
22675
57811c355f3a repair damage: now works again as a CFM app.
Just van Rossum <just@letterror.com>
parents: 22672
diff changeset
49 if len(sys.argv) >= 2 and sys.argv[1] == '-D':
22672
86ce9ee14045 Allow file without filetype as long as they end in ".py".
Jack Jansen <jack.jansen@cwi.nl>
parents: 21867
diff changeset
50 debug_stderr = sys.stderr
86ce9ee14045 Allow file without filetype as long as they end in ".py".
Jack Jansen <jack.jansen@cwi.nl>
parents: 21867
diff changeset
51 del sys.argv[1]
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
52 PyConsole.installoutput()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
53 PyConsole.installconsole()
22672
86ce9ee14045 Allow file without filetype as long as they end in ".py".
Jack Jansen <jack.jansen@cwi.nl>
parents: 21867
diff changeset
54 if debug_stderr:
86ce9ee14045 Allow file without filetype as long as they end in ".py".
Jack Jansen <jack.jansen@cwi.nl>
parents: 21867
diff changeset
55 sys.stderr = debug_stderr
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
56 for path in sys.argv[1:]:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
57 self.opendoc(path)
12308
ddc4e62b216b added experimental microthread support for use with stackless python -- bw compatible (jvr)
Just van Rossum <just@lettererror.com>
parents: 11949
diff changeset
58 try:
15284
b940a0fc29e3 Cleaned uthread dependencies (jvr)
Just van Rossum <just@lettererror.com>
parents: 12308
diff changeset
59 import Wthreading
12308
ddc4e62b216b added experimental microthread support for use with stackless python -- bw compatible (jvr)
Just van Rossum <just@lettererror.com>
parents: 11949
diff changeset
60 except ImportError:
ddc4e62b216b added experimental microthread support for use with stackless python -- bw compatible (jvr)
Just van Rossum <just@lettererror.com>
parents: 11949
diff changeset
61 self.mainloop()
ddc4e62b216b added experimental microthread support for use with stackless python -- bw compatible (jvr)
Just van Rossum <just@lettererror.com>
parents: 11949
diff changeset
62 else:
15284
b940a0fc29e3 Cleaned uthread dependencies (jvr)
Just van Rossum <just@lettererror.com>
parents: 12308
diff changeset
63 if Wthreading.haveThreading:
b940a0fc29e3 Cleaned uthread dependencies (jvr)
Just van Rossum <just@lettererror.com>
parents: 12308
diff changeset
64 self.mainthread = Wthreading.Thread("IDE event loop", self.mainloop)
b940a0fc29e3 Cleaned uthread dependencies (jvr)
Just van Rossum <just@lettererror.com>
parents: 12308
diff changeset
65 self.mainthread.start()
b940a0fc29e3 Cleaned uthread dependencies (jvr)
Just van Rossum <just@lettererror.com>
parents: 12308
diff changeset
66 #self.mainthread.setResistant(1)
b940a0fc29e3 Cleaned uthread dependencies (jvr)
Just van Rossum <just@lettererror.com>
parents: 12308
diff changeset
67 Wthreading.run()
b940a0fc29e3 Cleaned uthread dependencies (jvr)
Just van Rossum <just@lettererror.com>
parents: 12308
diff changeset
68 else:
b940a0fc29e3 Cleaned uthread dependencies (jvr)
Just van Rossum <just@lettererror.com>
parents: 12308
diff changeset
69 self.mainloop()
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
70
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
71 def makeusermenus(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
72 m = Wapplication.Menu(self.menubar, "File")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
73 newitem = FrameWork.MenuItem(m, "New", "N", 'new')
21772
ec750e37671b Changes by Donovan Preston (and a few minor ones by me) to make IDE run under
Jack Jansen <jack.jansen@cwi.nl>
parents: 20836
diff changeset
74 openitem = FrameWork.MenuItem(m, "Open"+ELIPSES, "O", 'open')
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
75 FrameWork.Separator(m)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
76 closeitem = FrameWork.MenuItem(m, "Close", "W", 'close')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
77 saveitem = FrameWork.MenuItem(m, "Save", "S", 'save')
21772
ec750e37671b Changes by Donovan Preston (and a few minor ones by me) to make IDE run under
Jack Jansen <jack.jansen@cwi.nl>
parents: 20836
diff changeset
78 saveasitem = FrameWork.MenuItem(m, "Save as"+ELIPSES, None, 'save_as')
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
79 FrameWork.Separator(m)
21772
ec750e37671b Changes by Donovan Preston (and a few minor ones by me) to make IDE run under
Jack Jansen <jack.jansen@cwi.nl>
parents: 20836
diff changeset
80 saveasappletitem = FrameWork.MenuItem(m, "Save as Applet"+ELIPSES, None, 'save_as_applet')
21867
da008b5c5035 Don't append quit menu when on OSX, it is special and automatic there.
Just van Rossum <just@letterror.com>
parents: 21772
diff changeset
81 if not runningOnOSX():
da008b5c5035 Don't append quit menu when on OSX, it is special and automatic there.
Just van Rossum <just@letterror.com>
parents: 21772
diff changeset
82 # On OSX there's a special "magic" quit menu, so we shouldn't add
da008b5c5035 Don't append quit menu when on OSX, it is special and automatic there.
Just van Rossum <just@letterror.com>
parents: 21772
diff changeset
83 # it to the File menu.
da008b5c5035 Don't append quit menu when on OSX, it is special and automatic there.
Just van Rossum <just@letterror.com>
parents: 21772
diff changeset
84 FrameWork.Separator(m)
da008b5c5035 Don't append quit menu when on OSX, it is special and automatic there.
Just van Rossum <just@letterror.com>
parents: 21772
diff changeset
85 quititem = FrameWork.MenuItem(m, "Quit", "Q", 'quit')
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
86
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
87 m = Wapplication.Menu(self.menubar, "Edit")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
88 undoitem = FrameWork.MenuItem(m, "Undo", 'Z', "undo")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
89 FrameWork.Separator(m)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
90 cutitem = FrameWork.MenuItem(m, "Cut", 'X', "cut")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
91 copyitem = FrameWork.MenuItem(m, "Copy", "C", "copy")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
92 pasteitem = FrameWork.MenuItem(m, "Paste", "V", "paste")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
93 FrameWork.MenuItem(m, "Clear", None, "clear")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
94 FrameWork.Separator(m)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
95 selallitem = FrameWork.MenuItem(m, "Select all", "A", "selectall")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
96 sellineitem = FrameWork.MenuItem(m, "Select line", "L", "selectline")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
97 FrameWork.Separator(m)
21772
ec750e37671b Changes by Donovan Preston (and a few minor ones by me) to make IDE run under
Jack Jansen <jack.jansen@cwi.nl>
parents: 20836
diff changeset
98 finditem = FrameWork.MenuItem(m, "Find"+ELIPSES, "F", "find")
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
99 findagainitem = FrameWork.MenuItem(m, "Find again", 'G', "findnext")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
100 enterselitem = FrameWork.MenuItem(m, "Enter search string", "E", "entersearchstring")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
101 replaceitem = FrameWork.MenuItem(m, "Replace", None, "replace")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
102 replacefinditem = FrameWork.MenuItem(m, "Replace & find again", 'T', "replacefind")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
103 FrameWork.Separator(m)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
104 shiftleftitem = FrameWork.MenuItem(m, "Shift left", "[", "shiftleft")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
105 shiftrightitem = FrameWork.MenuItem(m, "Shift right", "]", "shiftright")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
106
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
107 m = Wapplication.Menu(self.menubar, "Python")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
108 runitem = FrameWork.MenuItem(m, "Run window", "R", 'run')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
109 runselitem = FrameWork.MenuItem(m, "Run selection", None, 'runselection')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
110 FrameWork.Separator(m)
21772
ec750e37671b Changes by Donovan Preston (and a few minor ones by me) to make IDE run under
Jack Jansen <jack.jansen@cwi.nl>
parents: 20836
diff changeset
111 moditem = FrameWork.MenuItem(m, "Module browser"+ELIPSES, "M", self.domenu_modulebrowser)
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
112 FrameWork.Separator(m)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
113 mm = FrameWork.SubMenu(m, "Preferences")
21772
ec750e37671b Changes by Donovan Preston (and a few minor ones by me) to make IDE run under
Jack Jansen <jack.jansen@cwi.nl>
parents: 20836
diff changeset
114 FrameWork.MenuItem(mm, "Set Scripts folder"+ELIPSES, None, self.do_setscriptsfolder)
ec750e37671b Changes by Donovan Preston (and a few minor ones by me) to make IDE run under
Jack Jansen <jack.jansen@cwi.nl>
parents: 20836
diff changeset
115 FrameWork.MenuItem(mm, "Editor default settings"+ELIPSES, None, self.do_editorprefs)
ec750e37671b Changes by Donovan Preston (and a few minor ones by me) to make IDE run under
Jack Jansen <jack.jansen@cwi.nl>
parents: 20836
diff changeset
116 FrameWork.MenuItem(mm, "Set default window font"+ELIPSES, None, self.do_setwindowfont)
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
117
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
118 self.openwindowsmenu = Wapplication.Menu(self.menubar, 'Windows')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
119 self.makeopenwindowsmenu()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
120 self._menustocheck = [closeitem, saveitem, saveasitem, saveasappletitem,
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
121 undoitem, cutitem, copyitem, pasteitem,
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
122 selallitem, sellineitem,
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
123 finditem, findagainitem, enterselitem, replaceitem, replacefinditem,
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
124 shiftleftitem, shiftrightitem,
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
125 runitem, runselitem]
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
126
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
127 prefs = self.getprefs()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
128 try:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
129 fss, fss_changed = macfs.RawAlias(prefs.scriptsfolder).Resolve()
10310
a4d99607344f fixed "crashing" bug when scripts folder as stored in prefs file does not exist.
Just van Rossum <just@lettererror.com>
parents: 10087
diff changeset
130 self.scriptsfolder = fss.NewAlias()
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
131 except:
11325
c702a12d318d 1 - added "set default window font" menu
Just van Rossum <just@lettererror.com>
parents: 11031
diff changeset
132 path = os.path.join(os.getcwd(), ":Mac:IDE scripts")
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
133 if not os.path.exists(path):
11325
c702a12d318d 1 - added "set default window font" menu
Just van Rossum <just@lettererror.com>
parents: 11031
diff changeset
134 path = os.path.join(os.getcwd(), "Scripts")
c702a12d318d 1 - added "set default window font" menu
Just van Rossum <just@lettererror.com>
parents: 11031
diff changeset
135 if not os.path.exists(path):
c702a12d318d 1 - added "set default window font" menu
Just van Rossum <just@lettererror.com>
parents: 11031
diff changeset
136 os.mkdir(path)
21772
ec750e37671b Changes by Donovan Preston (and a few minor ones by me) to make IDE run under
Jack Jansen <jack.jansen@cwi.nl>
parents: 20836
diff changeset
137 f = open(os.path.join(path, "Place your scripts here"+ELIPSES), "w")
11325
c702a12d318d 1 - added "set default window font" menu
Just van Rossum <just@lettererror.com>
parents: 11031
diff changeset
138 f.close()
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
139 fss = macfs.FSSpec(path)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
140 self.scriptsfolder = fss.NewAlias()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
141 self.scriptsfoldermodtime = fss.GetDates()[1]
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
142 else:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
143 self.scriptsfoldermodtime = fss.GetDates()[1]
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
144 prefs.scriptsfolder = self.scriptsfolder.data
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
145 self._scripts = {}
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
146 self.scriptsmenu = None
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
147 self.makescriptsmenu()
25084
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
148 self.makehelpmenu()
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
149
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
150 def quitevent(self, theAppleEvent, theReply):
19488
42b2f1936254 Import the MacOS toolbox modules from the Carbon package.
Jack Jansen <jack.jansen@cwi.nl>
parents: 18167
diff changeset
151 from Carbon import AE
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
152 AE.AEInteractWithUser(50000000)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
153 self._quit()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
154
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
155 def suspendresume(self, onoff):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
156 if onoff:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
157 fss, fss_changed = self.scriptsfolder.Resolve()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
158 modtime = fss.GetDates()[1]
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
159 if self.scriptsfoldermodtime <> modtime or fss_changed:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
160 self.scriptsfoldermodtime = modtime
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
161 W.SetCursor('watch')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
162 self.makescriptsmenu()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
163
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
164 def ignoreevent(self, theAppleEvent, theReply):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
165 pass
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
166
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
167 def opendocsevent(self, theAppleEvent, theReply):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
168 W.SetCursor('watch')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
169 import aetools
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
170 parameters, args = aetools.unpackevent(theAppleEvent)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
171 docs = parameters['----']
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
172 if type(docs) <> type([]):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
173 docs = [docs]
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
174 for doc in docs:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
175 fss, a = doc.Resolve()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
176 path = fss.as_pathname()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
177 self.opendoc(path)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
178
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
179 def opendoc(self, path):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
180 fcreator, ftype = macfs.FSSpec(path).GetCreatorType()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
181 if ftype == 'TEXT':
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
182 self.openscript(path)
22672
86ce9ee14045 Allow file without filetype as long as they end in ".py".
Jack Jansen <jack.jansen@cwi.nl>
parents: 21867
diff changeset
183 elif ftype == '\0\0\0\0' and path[-3:] == '.py':
86ce9ee14045 Allow file without filetype as long as they end in ".py".
Jack Jansen <jack.jansen@cwi.nl>
parents: 21867
diff changeset
184 self.openscript(path)
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
185 else:
18167
c5ac6f055c62 Some long overdue maintainance. Made all IDE sources 7-bit-clean, to avoid any further encoding conversion troubles.
Just van Rossum <just@letterror.com>
parents: 17844
diff changeset
186 W.Message("Can't open file of type '%s'." % ftype)
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
187
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
188 def getabouttext(self):
21772
ec750e37671b Changes by Donovan Preston (and a few minor ones by me) to make IDE run under
Jack Jansen <jack.jansen@cwi.nl>
parents: 20836
diff changeset
189 return "About Python IDE"+ELIPSES
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
190
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
191 def do_about(self, id, item, window, event):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
192 Splash.about()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
193
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
194 def do_setscriptsfolder(self, *args):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
195 fss, ok = macfs.GetDirectory("Select Scripts Folder")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
196 if ok:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
197 prefs = self.getprefs()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
198 alis = fss.NewAlias()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
199 prefs.scriptsfolder = alis.data
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
200 self.scriptsfolder = alis
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
201 self.makescriptsmenu()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
202 prefs.save()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
203
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
204 def domenu_modulebrowser(self, *args):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
205 W.SetCursor('watch')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
206 import ModuleBrowser
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
207 ModuleBrowser.ModuleBrowser()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
208
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
209 def domenu_open(self, *args):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
210 fss, ok = macfs.StandardGetFile("TEXT")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
211 if ok:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
212 self.openscript(fss.as_pathname())
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
213
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
214 def domenu_new(self, *args):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
215 W.SetCursor('watch')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
216 import PyEdit
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
217 return PyEdit.Editor()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
218
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
219 def makescriptsmenu(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
220 W.SetCursor('watch')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
221 if self._scripts:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
222 for id, item in self._scripts.keys():
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
223 if self.menubar.menus.has_key(id):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
224 m = self.menubar.menus[id]
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
225 m.delete()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
226 self._scripts = {}
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
227 if self.scriptsmenu:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
228 if hasattr(self.scriptsmenu, 'id') and self.menubar.menus.has_key(self.scriptsmenu.id):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
229 self.scriptsmenu.delete()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
230 self.scriptsmenu = FrameWork.Menu(self.menubar, "Scripts")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
231 #FrameWork.MenuItem(self.scriptsmenu, "New script", None, self.domenu_new)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
232 #self.scriptsmenu.addseparator()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
233 fss, fss_changed = self.scriptsfolder.Resolve()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
234 self.scriptswalk(fss.as_pathname(), self.scriptsmenu)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
235
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
236 def makeopenwindowsmenu(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
237 for i in range(len(self.openwindowsmenu.items)):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
238 self.openwindowsmenu.menu.DeleteMenuItem(1)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
239 self.openwindowsmenu.items = []
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
240 windows = []
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
241 self._openwindows = {}
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
242 for window in self._windows.keys():
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
243 title = window.GetWTitle()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
244 if not title:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
245 title = "<no title>"
11949
5e48d83c0fce Fixed multi-arg appends.
Jack Jansen <jack.jansen@cwi.nl>
parents: 11325
diff changeset
246 windows.append((title, window))
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
247 windows.sort()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
248 for title, window in windows:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
249 if title == "Python Interactive": # ugly but useful hack by Joe Strout
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
250 shortcut = '0'
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
251 else:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
252 shortcut = None
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
253 item = FrameWork.MenuItem(self.openwindowsmenu, title, shortcut, callback = self.domenu_openwindows)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
254 self._openwindows[item.item] = window
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
255 self._openwindowscheckmark = 0
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
256 self.checkopenwindowsmenu()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
257
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
258 def domenu_openwindows(self, id, item, window, event):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
259 w = self._openwindows[item]
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
260 w.ShowWindow()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
261 w.SelectWindow()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
262
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
263 def domenu_quit(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
264 self._quit()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
265
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
266 def domenu_save(self, *args):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
267 print "Save"
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
268
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
269 def _quit(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
270 import PyConsole, PyEdit
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
271 PyConsole.console.writeprefs()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
272 PyConsole.output.writeprefs()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
273 PyEdit.searchengine.writeprefs()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
274 for window in self._windows.values():
11031
8b7f65b0db18 mod from Joe Strout: when quitting, catch errors in window.close() methods and ignore them. Otherwise one can never quit.
Just van Rossum <just@lettererror.com>
parents: 10322
diff changeset
275 try:
8b7f65b0db18 mod from Joe Strout: when quitting, catch errors in window.close() methods and ignore them. Otherwise one can never quit.
Just van Rossum <just@lettererror.com>
parents: 10322
diff changeset
276 rv = window.close() # ignore any errors while quitting
8b7f65b0db18 mod from Joe Strout: when quitting, catch errors in window.close() methods and ignore them. Otherwise one can never quit.
Just van Rossum <just@lettererror.com>
parents: 10322
diff changeset
277 except:
8b7f65b0db18 mod from Joe Strout: when quitting, catch errors in window.close() methods and ignore them. Otherwise one can never quit.
Just van Rossum <just@lettererror.com>
parents: 10322
diff changeset
278 rv = 0 # (otherwise, we can get stuck!)
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
279 if rv and rv > 0:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
280 return
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
281 self.quitting = 1
25084
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
282
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
283 def makehelpmenu(self):
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
284 docs = self.installdocumentation()
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
285 self.helpmenu = m = self.gethelpmenu()
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
286 docitem = FrameWork.MenuItem(m, "Python Documentation", None, self.domenu_localdocs)
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
287 docitem.enable(docs)
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
288 doc2item = FrameWork.MenuItem(m, "Apple Developer Documentation", None, self.domenu_appledocs)
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
289 FrameWork.Separator(m)
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
290 finditem = FrameWork.MenuItem(m, "Lookup in Python Documentation", None, 'lookuppython')
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
291 finditem.enable(docs)
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
292 find2item = FrameWork.MenuItem(m, "Lookup in Carbon Documentation", None, 'lookupcarbon')
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
293 FrameWork.Separator(m)
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
294 webitem = FrameWork.MenuItem(m, "Python Documentation on the Web", None, self.domenu_webdocs)
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
295 web2item = FrameWork.MenuItem(m, "Python on the Web", None, self.domenu_webpython)
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
296 web3item = FrameWork.MenuItem(m, "MacPython on the Web", None, self.domenu_webmacpython)
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
297
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
298 def domenu_localdocs(self, *args):
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
299 from Carbon import AH
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
300 AH.AHGotoPage("Python Help", "index.html", "")
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
301
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
302 def domenu_appledocs(self, *args):
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
303 from Carbon import AH, AppleHelp
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
304 try:
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
305 AH.AHGotoMainTOC(AppleHelp.kAHTOCTypeDeveloper)
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
306 except AH.Error, arg:
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
307 if arg[0] == -50:
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
308 W.Message("Developer documentation not installed")
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
309 else:
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
310 W.Message("AppleHelp Error: %s" % `arg`)
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
311
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
312 def domenu_lookuppython(self, *args):
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
313 from Carbon import AH
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
314 searchstring = self._getsearchstring()
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
315 if not searchstring:
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
316 return
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
317 try:
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
318 AH.AHSearch("Python Help", searchstring)
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
319 except AH.Error, arg:
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
320 W.Message("AppleHelp Error: %s" % `arg`)
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
321
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
322 def domenu_lookupcarbon(self, *args):
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
323 from Carbon import AH
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
324 searchstring = self._getsearchstring()
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
325 if not searchstring:
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
326 return
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
327 try:
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
328 AH.AHSearch("Carbon", searchstring)
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
329 except AH.Error, arg:
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
330 W.Message("AppleHelp Error: %s" % `arg`)
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
331
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
332 def _getsearchstring(self):
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
333 import PyEdit
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
334 editor = PyEdit.findeditor(None, fromtop=1)
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
335 if editor:
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
336 text = editor.getselectedtext()
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
337 if text:
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
338 return text
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
339 # This is a cop-out. We should have disabled the menus
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
340 # if there is no selection, but the can_ methods only seem
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
341 # to work for Windows. Or not for the Help menu, maybe?
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
342 import EasyDialogs
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
343 text = EasyDialogs.AskString("Search documentation for", ok="Search")
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
344 return text
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
345
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
346 def domenu_webdocs(self, *args):
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
347 import webbrowser
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
348 major, minor, micro, state, nano = sys.version_info
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
349 if state in ('alpha', 'beta'):
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
350 docversion = 'dev/doc/devel'
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
351 elif micro == 0:
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
352 docversion = 'doc/%d.%d' % (major, minor)
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
353 else:
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
354 docversion = 'doc/%d.%d.%d' % (major, minor, micro)
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
355 webbrowser.open("http://www.python.org/%s" % docversion)
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
356
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
357 def domenu_webpython(self, *args):
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
358 import webbrowser
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
359 webbrowser.open("http://www.python.org/")
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
360
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
361 def domenu_webmacpython(self, *args):
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
362 import webbrowser
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
363 webbrowser.open("http://www.cwi.nl/~jack/macpython.html")
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
364
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
365 def installdocumentation(self):
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
366 # This is rather much of a hack. Someone has to tell the Help Viewer
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
367 # about the Python documentation, so why not us. The documentation
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
368 # is located in the framework, but there's a symlink in Python.app.
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
369 # And as AHRegisterHelpBook wants a bundle (with the right bits in
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
370 # the plist file) we refer it to Python.app
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
371 python_app = os.path.join(sys.prefix, 'Resources/Python.app')
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
372 doc_source = os.path.join(python_app, 'Contents/Resources/English.lproj/Documentation')
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
373 if not os.path.isdir(doc_source):
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
374 return 0
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
375 try:
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
376 from Carbon import AH
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
377 AH.AHRegisterHelpBook(python_app)
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
378 except (ImportError, MacOS.Error), arg:
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
379 W.Message("Cannot register Python documentation: %s" % `arg`)
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
380 return 0
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
381 return 1
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
382
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
383
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
384 PythonIDE()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
385