Skip to content

Commit 366e6ae

Browse files
committed
Backport of 1.15 and 1.16:
- Don't append quit menu when on OSX, it is special and automatic there. - Changes by Donovan Preston (and a few minor ones by me) to make IDE run under MachoPython. Mainly making sure we don't call routines that don't exist and representing pathnames in a os.separator-neutral format. These shouldn't interfere too much with Just's work on the next generation IDE, I hope.
1 parent 9c93fe8 commit 366e6ae

1 file changed

Lines changed: 28 additions & 12 deletions

File tree

Mac/Tools/IDE/PythonIDEMain.py

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,19 @@
77
import W
88
import os
99
import macfs
10+
import MacOS
11+
12+
if MacOS.runtimemodel == 'macho':
13+
ELIPSES = '...'
14+
else:
15+
ELIPSES = '\xc9'
16+
17+
def runningOnOSX():
18+
from gestalt import gestalt
19+
gestaltMenuMgrAquaLayoutBit = 1 # menus have the Aqua 1.0 layout
20+
gestaltMenuMgrAquaLayoutMask = (1L << gestaltMenuMgrAquaLayoutBit)
21+
value = gestalt("menu") & gestaltMenuMgrAquaLayoutMask
22+
return not not value
1023

1124

1225
class PythonIDE(Wapplication.Application):
@@ -50,15 +63,18 @@ def __init__(self):
5063
def makeusermenus(self):
5164
m = Wapplication.Menu(self.menubar, "File")
5265
newitem = FrameWork.MenuItem(m, "New", "N", 'new')
53-
openitem = FrameWork.MenuItem(m, "Open\xc9", "O", 'open')
66+
openitem = FrameWork.MenuItem(m, "Open"+ELIPSES, "O", 'open')
5467
FrameWork.Separator(m)
5568
closeitem = FrameWork.MenuItem(m, "Close", "W", 'close')
5669
saveitem = FrameWork.MenuItem(m, "Save", "S", 'save')
57-
saveasitem = FrameWork.MenuItem(m, "Save as\xc9", None, 'save_as')
58-
FrameWork.Separator(m)
59-
saveasappletitem = FrameWork.MenuItem(m, "Save as Applet\xc9", None, 'save_as_applet')
70+
saveasitem = FrameWork.MenuItem(m, "Save as"+ELIPSES, None, 'save_as')
6071
FrameWork.Separator(m)
61-
quititem = FrameWork.MenuItem(m, "Quit", "Q", 'quit')
72+
saveasappletitem = FrameWork.MenuItem(m, "Save as Applet"+ELIPSES, None, 'save_as_applet')
73+
if not runningOnOSX():
74+
# On OSX there's a special "magic" quit menu, so we shouldn't add
75+
# it to the File menu.
76+
FrameWork.Separator(m)
77+
quititem = FrameWork.MenuItem(m, "Quit", "Q", 'quit')
6278

6379
m = Wapplication.Menu(self.menubar, "Edit")
6480
undoitem = FrameWork.MenuItem(m, "Undo", 'Z', "undo")
@@ -71,7 +87,7 @@ def makeusermenus(self):
7187
selallitem = FrameWork.MenuItem(m, "Select all", "A", "selectall")
7288
sellineitem = FrameWork.MenuItem(m, "Select line", "L", "selectline")
7389
FrameWork.Separator(m)
74-
finditem = FrameWork.MenuItem(m, "Find\xc9", "F", "find")
90+
finditem = FrameWork.MenuItem(m, "Find"+ELIPSES, "F", "find")
7591
findagainitem = FrameWork.MenuItem(m, "Find again", 'G', "findnext")
7692
enterselitem = FrameWork.MenuItem(m, "Enter search string", "E", "entersearchstring")
7793
replaceitem = FrameWork.MenuItem(m, "Replace", None, "replace")
@@ -84,12 +100,12 @@ def makeusermenus(self):
84100
runitem = FrameWork.MenuItem(m, "Run window", "R", 'run')
85101
runselitem = FrameWork.MenuItem(m, "Run selection", None, 'runselection')
86102
FrameWork.Separator(m)
87-
moditem = FrameWork.MenuItem(m, "Module browser\xc9", "M", self.domenu_modulebrowser)
103+
moditem = FrameWork.MenuItem(m, "Module browser"+ELIPSES, "M", self.domenu_modulebrowser)
88104
FrameWork.Separator(m)
89105
mm = FrameWork.SubMenu(m, "Preferences")
90-
FrameWork.MenuItem(mm, "Set Scripts folder\xc9", None, self.do_setscriptsfolder)
91-
FrameWork.MenuItem(mm, "Editor default settings\xc9", None, self.do_editorprefs)
92-
FrameWork.MenuItem(mm, "Set default window font\xc9", None, self.do_setwindowfont)
106+
FrameWork.MenuItem(mm, "Set Scripts folder"+ELIPSES, None, self.do_setscriptsfolder)
107+
FrameWork.MenuItem(mm, "Editor default settings"+ELIPSES, None, self.do_editorprefs)
108+
FrameWork.MenuItem(mm, "Set default window font"+ELIPSES, None, self.do_setwindowfont)
93109

94110
self.openwindowsmenu = Wapplication.Menu(self.menubar, 'Windows')
95111
self.makeopenwindowsmenu()
@@ -110,7 +126,7 @@ def makeusermenus(self):
110126
path = os.path.join(os.getcwd(), "Scripts")
111127
if not os.path.exists(path):
112128
os.mkdir(path)
113-
f = open(os.path.join(path, "Place your scripts here\xc9"), "w")
129+
f = open(os.path.join(path, "Place your scripts here"+ELIPSES), "w")
114130
f.close()
115131
fss = macfs.FSSpec(path)
116132
self.scriptsfolder = fss.NewAlias()
@@ -159,7 +175,7 @@ def opendoc(self, path):
159175
W.Message("Can't open file of type '%s'." % ftype)
160176

161177
def getabouttext(self):
162-
return "About Python IDE\xc9"
178+
return "About Python IDE"+ELIPSES
163179

164180
def do_about(self, id, item, window, event):
165181
Splash.about()

0 commit comments

Comments
 (0)