annotate Mac/Tools/IDE/PythonIDEMain.py @ 26346:547de407c133 legacy-trunk

workaround so the (otherwise still broken) IDE can at least quit in the Python 2.2 Jaguar addon install
author Just van Rossum <just@letterror.com>
date Fri, 22 Nov 2002 12:48:47 +0000
parents 2bcb41611fae
children ea5ee3e7bfb1
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()
25869
2bcb41611fae cd to users home dir if no current dir has been set. Fixes bug #625734
Just van Rossum <just@letterror.com>
parents: 25224
diff changeset
46 if sys.platform == "darwin":
2bcb41611fae cd to users home dir if no current dir has been set. Fixes bug #625734
Just van Rossum <just@letterror.com>
parents: 25224
diff changeset
47 if sys.argv and sys.argv[0].startswith("-psn"):
2bcb41611fae cd to users home dir if no current dir has been set. Fixes bug #625734
Just van Rossum <just@letterror.com>
parents: 25224
diff changeset
48 home = os.getenv("HOME")
2bcb41611fae cd to users home dir if no current dir has been set. Fixes bug #625734
Just van Rossum <just@letterror.com>
parents: 25224
diff changeset
49 if home:
2bcb41611fae cd to users home dir if no current dir has been set. Fixes bug #625734
Just van Rossum <just@letterror.com>
parents: 25224
diff changeset
50 os.chdir(home)
22672
86ce9ee14045 Allow file without filetype as long as they end in ".py".
Jack Jansen <jack.jansen@cwi.nl>
parents: 21867
diff changeset
51 # 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
52 # itself.
86ce9ee14045 Allow file without filetype as long as they end in ".py".
Jack Jansen <jack.jansen@cwi.nl>
parents: 21867
diff changeset
53 debug_stderr = None
22675
57811c355f3a repair damage: now works again as a CFM app.
Just van Rossum <just@letterror.com>
parents: 22672
diff changeset
54 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
55 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
56 del sys.argv[1]
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
57 PyConsole.installoutput()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
58 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
59 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
60 sys.stderr = debug_stderr
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
61 for path in sys.argv[1:]:
26346
547de407c133 workaround so the (otherwise still broken) IDE can at least quit in the Python 2.2 Jaguar addon install
Just van Rossum <just@letterror.com>
parents: 25869
diff changeset
62 if path.startswith("-p"):
547de407c133 workaround so the (otherwise still broken) IDE can at least quit in the Python 2.2 Jaguar addon install
Just van Rossum <just@letterror.com>
parents: 25869
diff changeset
63 # process number added by the OS
547de407c133 workaround so the (otherwise still broken) IDE can at least quit in the Python 2.2 Jaguar addon install
Just van Rossum <just@letterror.com>
parents: 25869
diff changeset
64 continue
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
65 self.opendoc(path)
26346
547de407c133 workaround so the (otherwise still broken) IDE can at least quit in the Python 2.2 Jaguar addon install
Just van Rossum <just@letterror.com>
parents: 25869
diff changeset
66 self.mainloop()
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
67
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
68 def makeusermenus(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
69 m = Wapplication.Menu(self.menubar, "File")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
70 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
71 openitem = FrameWork.MenuItem(m, "Open"+ELIPSES, "O", 'open')
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
72 FrameWork.Separator(m)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
73 closeitem = FrameWork.MenuItem(m, "Close", "W", 'close')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
74 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
75 saveasitem = FrameWork.MenuItem(m, "Save as"+ELIPSES, None, 'save_as')
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
76 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
77 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
78 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
79 # 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
80 # 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
81 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
82 quititem = FrameWork.MenuItem(m, "Quit", "Q", 'quit')
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
83
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
84 m = Wapplication.Menu(self.menubar, "Edit")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
85 undoitem = FrameWork.MenuItem(m, "Undo", 'Z', "undo")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
86 FrameWork.Separator(m)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
87 cutitem = FrameWork.MenuItem(m, "Cut", 'X', "cut")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
88 copyitem = FrameWork.MenuItem(m, "Copy", "C", "copy")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
89 pasteitem = FrameWork.MenuItem(m, "Paste", "V", "paste")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
90 FrameWork.MenuItem(m, "Clear", None, "clear")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
91 FrameWork.Separator(m)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
92 selallitem = FrameWork.MenuItem(m, "Select all", "A", "selectall")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
93 sellineitem = FrameWork.MenuItem(m, "Select line", "L", "selectline")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
94 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
95 finditem = FrameWork.MenuItem(m, "Find"+ELIPSES, "F", "find")
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
96 findagainitem = FrameWork.MenuItem(m, "Find again", 'G', "findnext")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
97 enterselitem = FrameWork.MenuItem(m, "Enter search string", "E", "entersearchstring")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
98 replaceitem = FrameWork.MenuItem(m, "Replace", None, "replace")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
99 replacefinditem = FrameWork.MenuItem(m, "Replace & find again", 'T', "replacefind")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
100 FrameWork.Separator(m)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
101 shiftleftitem = FrameWork.MenuItem(m, "Shift left", "[", "shiftleft")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
102 shiftrightitem = FrameWork.MenuItem(m, "Shift right", "]", "shiftright")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
103
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
104 m = Wapplication.Menu(self.menubar, "Python")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
105 runitem = FrameWork.MenuItem(m, "Run window", "R", 'run')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
106 runselitem = FrameWork.MenuItem(m, "Run selection", None, 'runselection')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
107 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
108 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
109 FrameWork.Separator(m)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
110 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
111 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
112 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
113 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
114
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
115 self.openwindowsmenu = Wapplication.Menu(self.menubar, 'Windows')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
116 self.makeopenwindowsmenu()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
117 self._menustocheck = [closeitem, saveitem, saveasitem, saveasappletitem,
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
118 undoitem, cutitem, copyitem, pasteitem,
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
119 selallitem, sellineitem,
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
120 finditem, findagainitem, enterselitem, replaceitem, replacefinditem,
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
121 shiftleftitem, shiftrightitem,
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
122 runitem, runselitem]
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
123
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
124 prefs = self.getprefs()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
125 try:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
126 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
127 self.scriptsfolder = fss.NewAlias()
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
128 except:
11325
c702a12d318d 1 - added "set default window font" menu
Just van Rossum <just@lettererror.com>
parents: 11031
diff changeset
129 path = os.path.join(os.getcwd(), ":Mac:IDE scripts")
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
130 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
131 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
132 if not os.path.exists(path):
c702a12d318d 1 - added "set default window font" menu
Just van Rossum <just@lettererror.com>
parents: 11031
diff changeset
133 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
134 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
135 f.close()
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
136 fss = macfs.FSSpec(path)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
137 self.scriptsfolder = fss.NewAlias()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
138 self.scriptsfoldermodtime = fss.GetDates()[1]
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
139 else:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
140 self.scriptsfoldermodtime = fss.GetDates()[1]
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
141 prefs.scriptsfolder = self.scriptsfolder.data
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
142 self._scripts = {}
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
143 self.scriptsmenu = None
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
144 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
145 self.makehelpmenu()
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
146
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
147 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
148 from Carbon import AE
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
149 AE.AEInteractWithUser(50000000)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
150 self._quit()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
151
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
152 def suspendresume(self, onoff):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
153 if onoff:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
154 fss, fss_changed = self.scriptsfolder.Resolve()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
155 modtime = fss.GetDates()[1]
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
156 if self.scriptsfoldermodtime <> modtime or fss_changed:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
157 self.scriptsfoldermodtime = modtime
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
158 W.SetCursor('watch')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
159 self.makescriptsmenu()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
160
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
161 def ignoreevent(self, theAppleEvent, theReply):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
162 pass
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 opendocsevent(self, theAppleEvent, theReply):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
165 W.SetCursor('watch')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
166 import aetools
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
167 parameters, args = aetools.unpackevent(theAppleEvent)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
168 docs = parameters['----']
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
169 if type(docs) <> type([]):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
170 docs = [docs]
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
171 for doc in docs:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
172 fss, a = doc.Resolve()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
173 path = fss.as_pathname()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
174 self.opendoc(path)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
175
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
176 def opendoc(self, path):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
177 fcreator, ftype = macfs.FSSpec(path).GetCreatorType()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
178 if ftype == 'TEXT':
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
179 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
180 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
181 self.openscript(path)
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
182 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
183 W.Message("Can't open file of type '%s'." % ftype)
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
184
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
185 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
186 return "About Python IDE"+ELIPSES
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 do_about(self, id, item, window, event):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
189 Splash.about()
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_setscriptsfolder(self, *args):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
192 fss, ok = macfs.GetDirectory("Select Scripts Folder")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
193 if ok:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
194 prefs = self.getprefs()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
195 alis = fss.NewAlias()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
196 prefs.scriptsfolder = alis.data
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
197 self.scriptsfolder = alis
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
198 self.makescriptsmenu()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
199 prefs.save()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
200
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
201 def domenu_modulebrowser(self, *args):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
202 W.SetCursor('watch')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
203 import ModuleBrowser
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
204 ModuleBrowser.ModuleBrowser()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
205
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
206 def domenu_open(self, *args):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
207 fss, ok = macfs.StandardGetFile("TEXT")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
208 if ok:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
209 self.openscript(fss.as_pathname())
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
210
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
211 def domenu_new(self, *args):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
212 W.SetCursor('watch')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
213 import PyEdit
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
214 return PyEdit.Editor()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
215
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
216 def makescriptsmenu(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
217 W.SetCursor('watch')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
218 if self._scripts:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
219 for id, item in self._scripts.keys():
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
220 if self.menubar.menus.has_key(id):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
221 m = self.menubar.menus[id]
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
222 m.delete()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
223 self._scripts = {}
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
224 if self.scriptsmenu:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
225 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
226 self.scriptsmenu.delete()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
227 self.scriptsmenu = FrameWork.Menu(self.menubar, "Scripts")
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
228 #FrameWork.MenuItem(self.scriptsmenu, "New script", None, self.domenu_new)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
229 #self.scriptsmenu.addseparator()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
230 fss, fss_changed = self.scriptsfolder.Resolve()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
231 self.scriptswalk(fss.as_pathname(), self.scriptsmenu)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
232
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
233 def makeopenwindowsmenu(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
234 for i in range(len(self.openwindowsmenu.items)):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
235 self.openwindowsmenu.menu.DeleteMenuItem(1)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
236 self.openwindowsmenu.items = []
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
237 windows = []
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
238 self._openwindows = {}
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
239 for window in self._windows.keys():
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
240 title = window.GetWTitle()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
241 if not title:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
242 title = "<no title>"
11949
5e48d83c0fce Fixed multi-arg appends.
Jack Jansen <jack.jansen@cwi.nl>
parents: 11325
diff changeset
243 windows.append((title, window))
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
244 windows.sort()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
245 for title, window in windows:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
246 if title == "Python Interactive": # ugly but useful hack by Joe Strout
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
247 shortcut = '0'
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
248 else:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
249 shortcut = None
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
250 item = FrameWork.MenuItem(self.openwindowsmenu, title, shortcut, callback = self.domenu_openwindows)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
251 self._openwindows[item.item] = window
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
252 self._openwindowscheckmark = 0
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
253 self.checkopenwindowsmenu()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
254
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
255 def domenu_openwindows(self, id, item, window, event):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
256 w = self._openwindows[item]
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
257 w.ShowWindow()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
258 w.SelectWindow()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
259
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
260 def domenu_quit(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
261 self._quit()
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_save(self, *args):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
264 print "Save"
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 _quit(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
267 import PyConsole, PyEdit
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
268 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
269 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
270 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
271 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
272 rv = 0 # (otherwise, we can get stuck!)
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
273 if rv and rv > 0:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
274 return
26346
547de407c133 workaround so the (otherwise still broken) IDE can at least quit in the Python 2.2 Jaguar addon install
Just van Rossum <just@letterror.com>
parents: 25869
diff changeset
275 try:
547de407c133 workaround so the (otherwise still broken) IDE can at least quit in the Python 2.2 Jaguar addon install
Just van Rossum <just@letterror.com>
parents: 25869
diff changeset
276 PyConsole.console.writeprefs()
547de407c133 workaround so the (otherwise still broken) IDE can at least quit in the Python 2.2 Jaguar addon install
Just van Rossum <just@letterror.com>
parents: 25869
diff changeset
277 PyConsole.output.writeprefs()
547de407c133 workaround so the (otherwise still broken) IDE can at least quit in the Python 2.2 Jaguar addon install
Just van Rossum <just@letterror.com>
parents: 25869
diff changeset
278 PyEdit.searchengine.writeprefs()
547de407c133 workaround so the (otherwise still broken) IDE can at least quit in the Python 2.2 Jaguar addon install
Just van Rossum <just@letterror.com>
parents: 25869
diff changeset
279 except:
547de407c133 workaround so the (otherwise still broken) IDE can at least quit in the Python 2.2 Jaguar addon install
Just van Rossum <just@letterror.com>
parents: 25869
diff changeset
280 # Write to __stderr__ so the msg end up in Console.app and has
547de407c133 workaround so the (otherwise still broken) IDE can at least quit in the Python 2.2 Jaguar addon install
Just van Rossum <just@letterror.com>
parents: 25869
diff changeset
281 # at least _some_ chance of getting read...
547de407c133 workaround so the (otherwise still broken) IDE can at least quit in the Python 2.2 Jaguar addon install
Just van Rossum <just@letterror.com>
parents: 25869
diff changeset
282 # But: this is a workaround for way more serious problems with
547de407c133 workaround so the (otherwise still broken) IDE can at least quit in the Python 2.2 Jaguar addon install
Just van Rossum <just@letterror.com>
parents: 25869
diff changeset
283 # the Python 2.2 Jaguar addon.
547de407c133 workaround so the (otherwise still broken) IDE can at least quit in the Python 2.2 Jaguar addon install
Just van Rossum <just@letterror.com>
parents: 25869
diff changeset
284 sys.__stderr__.write("*** PythonIDE: Can't write preferences ***\n")
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
285 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
286
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
287 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
288 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
289 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
290 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
291 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
292 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
293 finditem.enable(docs)
25156
bf90fb71aa76 Reorganized order of help menu, and don't show Carbon documentation
Jack Jansen <jack.jansen@cwi.nl>
parents: 25084
diff changeset
294 if runningOnOSX():
bf90fb71aa76 Reorganized order of help menu, and don't show Carbon documentation
Jack Jansen <jack.jansen@cwi.nl>
parents: 25084
diff changeset
295 FrameWork.Separator(m)
bf90fb71aa76 Reorganized order of help menu, and don't show Carbon documentation
Jack Jansen <jack.jansen@cwi.nl>
parents: 25084
diff changeset
296 doc2item = FrameWork.MenuItem(m, "Apple Developer Documentation", None, self.domenu_appledocs)
bf90fb71aa76 Reorganized order of help menu, and don't show Carbon documentation
Jack Jansen <jack.jansen@cwi.nl>
parents: 25084
diff changeset
297 find2item = FrameWork.MenuItem(m, "Lookup in Carbon Documentation", None, 'lookupcarbon')
25084
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
298 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
299 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
300 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
301 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
302
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
303 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
304 from Carbon import AH
25224
e709a3c8bfec Pass None to AHGotoPage().
Jack Jansen <jack.jansen@cwi.nl>
parents: 25156
diff changeset
305 AH.AHGotoPage("Python Help", None, None)
25084
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
306
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
307 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
308 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
309 try:
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
310 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
311 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
312 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
313 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
314 else:
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
315 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
316
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
317 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
318 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
319 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
320 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
321 return
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
322 try:
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
323 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
324 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
325 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
326
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
327 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
328 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
329 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
330 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
331 return
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
332 try:
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
333 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
334 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
335 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
336
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
337 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
338 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
339 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
340 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
341 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
342 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
343 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
344 # 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
345 # 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
346 # 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
347 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
348 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
349 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
350
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
351 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
352 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
353 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
354 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
355 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
356 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
357 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
358 else:
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
359 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
360 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
361
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
362 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
363 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
364 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
365
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
366 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
367 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
368 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
369
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
370 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
371 # 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
372 # 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
373 # 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
374 # 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
375 # 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
376 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
377 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
378 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
379 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
380 try:
b337ef16c0d2 Implemented the Help menu. The Python manual can be viewed (if installed)
Jack Jansen <jack.jansen@cwi.nl>
parents: 24226
diff changeset
381 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
382 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
383 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
384 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
385 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
386 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
387
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
388
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
389 PythonIDE()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
390