And the last bit: move IDLE one level up and adjust makefiles
diff --git a/Mac/IDLE/Info.plist b/Mac/IDLE/Info.plist
new file mode 100644
index 0000000..bbe2ea1
--- /dev/null
+++ b/Mac/IDLE/Info.plist
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleDocumentTypes</key>
+ <array>
+ <dict>
+ <key>CFBundleTypeExtensions</key>
+ <array>
+ <string>py</string>
+ <string>pyw</string>
+ </array>
+ <key>CFBundleTypeIconFile</key>
+ <string>PythonSource.icns</string>
+ <key>CFBundleTypeName</key>
+ <string>Python Script</string>
+ <key>CFBundleTypeRole</key>
+ <string>Editor</string>
+ </dict>
+ <dict>
+ <key>CFBundleTypeExtensions</key>
+ <array>
+ <string>pyc</string>
+ <string>pyo</string>
+ </array>
+ <key>CFBundleTypeIconFile</key>
+ <string>PythonCompiled.icns</string>
+ <key>CFBundleTypeName</key>
+ <string>Python Bytecode Document</string>
+ <key>CFBundleTypeRole</key>
+ <string>Editor</string>
+ </dict>
+ </array>
+ <key>CFBundleExecutable</key>
+ <string>IDLE</string>
+ <key>CFBundleGetInfoString</key>
+ <string>2.5, © 001-2006 Python Software Foundation</string>
+ <key>CFBundleIconFile</key>
+ <string>IDLE.icns</string>
+ <key>CFBundleIdentifier</key>
+ <string>org.python.IDLE</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>IDLE</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>2.5</string>
+ <key>CFBundleVersion</key>
+ <string>2.5</string>
+</dict>
+</plist>
diff --git a/Mac/IDLE/Makefile.in b/Mac/IDLE/Makefile.in
new file mode 100644
index 0000000..7359aae
--- /dev/null
+++ b/Mac/IDLE/Makefile.in
@@ -0,0 +1,54 @@
+prefix=@prefix@
+CC=@CC@
+LD=@CC@
+BASECFLAGS=@BASECFLAGS@
+OPT=@OPT@
+CFLAGS=$(BASECFLAGS) $(OPT)
+LDFLAGS=@LDFLAGS@
+srcdir= @srcdir@
+VERSION= @VERSION@
+UNIVERSALSDK=@UNIVERSALSDK@
+builddir= ../..
+
+RUNSHARED= @RUNSHARED@
+BUILDEXE= @BUILDEXEEXT@
+BUILDPYTHON= $(builddir)/python$(BUILDEXE)
+
+# Deployment target selected during configure, to be checked
+# by distutils
+MACOSX_DEPLOYMENT_TARGET=@CONFIGURE_MACOSX_DEPLOYMENT_TARGET@
+@EXPORT_MACOSX_DEPLOYMENT_TARGET@export MACOSX_DEPLOYMENT_TARGET
+
+BUNDLEBULDER=$(srcdir)/../../Lib/plat-mac/bundlebuilder.py
+
+PYTHONAPPSDIR=/Applications/MacPython $(VERSION)
+
+all: IDLE.app
+
+install: IDLE.app $(srcdir)/config-main.def $(srcdir)/config-extensions.def
+ test -d "$(DESTDIR)$(PYTHONAPPSDIR)" || mkdir -p "$(DESTDIR)$(PYTHONAPPSDIR)"
+ -test -d "$(DESTDIR)$(PYTHONAPPSDIR)/IDLE.app" && rm -r "$(DESTDIR)$(PYTHONAPPSDIR)/IDLE.app"
+ cp -PR IDLE.app "$(DESTDIR)$(PYTHONAPPSDIR)"
+ touch "$(DESTDIR)$(PYTHONAPPSDIR)/IDLE.app"
+ cp $(srcdir)/config-main.def "$(DESTDIR)$(prefix)/lib/python$(VERSION)/idlelib/config-main.def"
+ cp $(srcdir)/config-extensions.def "$(DESTDIR)$(prefix)/lib/python$(VERSION)/idlelib/config-extensions.def"
+
+clean:
+ rm -rf IDLE.app
+
+IDLE.app: \
+ $(srcdir)/../Icons/IDLE.icns $(srcdir)/idlemain.py \
+ $(srcdir)/../Icons/PythonSource.icns \
+ $(srcdir)/../Icons/PythonCompiled.icns
+ rm -fr IDLE.app
+ $(RUNSHARED) $(BUILDPYTHON) $(BUNDLEBULDER) \
+ --builddir=. \
+ --name=IDLE \
+ --link-exec \
+ --plist=$(srcdir)/Info.plist \
+ --mainprogram=$(srcdir)/idlemain.py \
+ --iconfile=$(srcdir)/../Icons/IDLE.icns \
+ --resource=$(srcdir)/../Icons/PythonSource.icns \
+ --resource=$(srcdir)/../Icons/PythonCompiled.icns \
+ --python=$(prefix)/Resources/Python.app/Contents/MacOS/Python \
+ build
diff --git a/Mac/IDLE/config-extensions.def b/Mac/IDLE/config-extensions.def
new file mode 100644
index 0000000..c17f068
--- /dev/null
+++ b/Mac/IDLE/config-extensions.def
@@ -0,0 +1,88 @@
+# config-extensions.def
+#
+# IDLE reads several config files to determine user preferences. This
+# file is the default configuration file for IDLE extensions settings.
+#
+# Each extension must have at least one section, named after the extension
+# module. This section must contain an 'enable' item (=1 to enable the
+# extension, =0 to disable it), it may contain 'enable_editor' or 'enable_shell'
+# items, to apply it only to editor/shell windows, and may also contain any
+# other general configuration items for the extension.
+#
+# Each extension must define at least one section named ExtensionName_bindings
+# or ExtensionName_cfgBindings. If present, ExtensionName_bindings defines
+# virtual event bindings for the extension that are not user re-configurable.
+# If present, ExtensionName_cfgBindings defines virtual event bindings for the
+# extension that may be sensibly re-configured.
+#
+# If there are no keybindings for a menus' virtual events, include lines like
+# <<toggle-code-context>>= (See [CodeContext], below.)
+#
+# Currently it is necessary to manually modify this file to change extension
+# key bindings and default values. To customize, create
+# ~/.idlerc/config-extensions.cfg and append the appropriate customized
+# section(s). Those sections will override the defaults in this file.
+#
+# Note: If a keybinding is already in use when the extension is
+# loaded, the extension's virtual event's keybinding will be set to ''.
+#
+# See config-keys.def for notes on specifying keys and extend.txt for
+# information on creating IDLE extensions.
+
+[FormatParagraph]
+enable=1
+[FormatParagraph_cfgBindings]
+format-paragraph=<Option-Key-q>
+
+[AutoExpand]
+enable=1
+[AutoExpand_cfgBindings]
+expand-word=<Option-Key-slash>
+
+[ZoomHeight]
+enable=1
+[ZoomHeight_cfgBindings]
+zoom-height=<Option-Key-0>
+
+[ScriptBinding]
+enable=1
+[ScriptBinding_cfgBindings]
+run-module=<Key-F5>
+check-module=<Option-Key-x>
+
+[CallTips]
+enable=1
+[CallTips_cfgBindings]
+force-open-calltip=<Control-Key-backslash>
+[CallTips_bindings]
+try-open-calltip=<KeyRelease-parenleft>
+refresh-calltip=<KeyRelease-parenright> <KeyRelease-0>
+
+[ParenMatch]
+enable=1
+style= expression
+flash-delay= 500
+bell= 1
+[ParenMatch_cfgBindings]
+flash-paren=<Control-Key-0>
+[ParenMatch_bindings]
+paren-closed=<KeyRelease-parenright> <KeyRelease-bracketright> <KeyRelease-braceright>
+
+[AutoComplete]
+enable=1
+popupwait=2000
+[AutoComplete_cfgBindings]
+force-open-completions=<Control-Key-space>
+[AutoComplete_bindings]
+autocomplete=<Key-Tab>
+try-open-completions=<KeyRelease-period> <KeyRelease-slash> <KeyRelease-backslash>
+
+[CodeContext]
+enable=1
+enable_shell=0
+numlines=3
+visible=0
+bgcolor=LightGray
+fgcolor=Black
+[CodeContext_bindings]
+toggle-code-context=
diff --git a/Mac/IDLE/config-main.def b/Mac/IDLE/config-main.def
new file mode 100644
index 0000000..1cdc0c5
--- /dev/null
+++ b/Mac/IDLE/config-main.def
@@ -0,0 +1,79 @@
+# IDLE reads several config files to determine user preferences. This
+# file is the default config file for general idle settings.
+#
+# When IDLE starts, it will look in
+# the following two sets of files, in order:
+#
+# default configuration
+# ---------------------
+# config-main.def the default general config file
+# config-extensions.def the default extension config file
+# config-highlight.def the default highlighting config file
+# config-keys.def the default keybinding config file
+#
+# user configuration
+# -------------------
+# ~/.idlerc/config-main.cfg the user general config file
+# ~/.idlerc/config-extensions.cfg the user extension config file
+# ~/.idlerc/config-highlight.cfg the user highlighting config file
+# ~/.idlerc/config-keys.cfg the user keybinding config file
+#
+# On Windows2000 and Windows XP the .idlerc directory is at
+# Documents and Settings\<username>\.idlerc
+#
+# On Windows98 it is at c:\.idlerc
+#
+# Any options the user saves through the config dialog will be saved to
+# the relevant user config file. Reverting any general setting to the
+# default causes that entry to be wiped from the user file and re-read
+# from the default file. User highlighting themes or keybinding sets are
+# retained unless specifically deleted within the config dialog. Choosing
+# one of the default themes or keysets just applies the relevant settings
+# from the default file.
+#
+# Additional help sources are listed in the [HelpFiles] section and must be
+# viewable by a web browser (or the Windows Help viewer in the case of .chm
+# files). These sources will be listed on the Help menu. The pattern is
+# <sequence_number = menu item;/path/to/help/source>
+# You can't use a semi-colon in a menu item or path. The path will be platform
+# specific because of path separators, drive specs etc.
+#
+# It is best to use the Configuration GUI to set up additional help sources!
+# Example:
+#1 = My Extra Help Source;/usr/share/doc/foo/index.html
+#2 = Another Help Source;/path/to/another.pdf
+
+[General]
+editor-on-startup= 0
+autosave= 0
+print-command-posix=lpr %s
+print-command-win=start /min notepad /p %s
+delete-exitfunc= 1
+
+[EditorWindow]
+width= 80
+height= 40
+font= courier
+font-size= 10
+font-bold= 0
+encoding= none
+
+[FormatParagraph]
+paragraph=70
+
+[Indent]
+use-spaces= 1
+num-spaces= 4
+
+[Theme]
+default= 1
+name= IDLE Classic
+
+[Keys]
+default= 1
+name= IDLE Classic Mac
+
+[History]
+cyclic=1
+
+[HelpFiles]
diff --git a/Mac/IDLE/idlemain.py b/Mac/IDLE/idlemain.py
new file mode 100644
index 0000000..aa75d4c
--- /dev/null
+++ b/Mac/IDLE/idlemain.py
@@ -0,0 +1,27 @@
+"""
+Bootstrap script for IDLE as an application bundle.
+"""
+import sys, os
+
+from idlelib.PyShell import main
+
+# Change the current directory the user's home directory, that way we'll get
+# a more useful default location in the open/save dialogs.
+os.chdir(os.path.expanduser('~/Documents'))
+
+
+# Make sure sys.executable points to the python interpreter inside the
+# framework, instead of at the helper executable inside the application
+# bundle (the latter works, but doesn't allow access to the window server)
+sys.executable = os.path.join(sys.prefix, 'bin', 'python')
+
+# Look for the -psn argument that the launcher adds and remove it, it will
+# only confuse the IDLE startup code.
+for idx, value in enumerate(sys.argv):
+ if value.startswith('-psn_'):
+ del sys.argv[idx]
+ break
+
+#argvemulator.ArgvCollector().mainloop()
+if __name__ == '__main__':
+ main()
diff --git a/Makefile.pre.in b/Makefile.pre.in
index 3f37259..e63066c 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -374,7 +374,7 @@
# This rule is here for OPENSTEP/Rhapsody/MacOSX. It builds a temporary
# minimal framework (not including the Lib directory and such) in the current
# directory.
-RESSRCDIR=$(srcdir)/Mac/OSXResources/framework
+RESSRCDIR=$(srcdir)/Mac/Resources/framework
$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK): \
$(LIBRARY) \
$(RESSRCDIR)/Info.plist \
@@ -897,7 +897,7 @@
# Here are a couple of targets for MacOSX again, to install a full
# framework-based Python. frameworkinstall installs everything, the
# subtargets install specific parts. Much of the actual work is offloaded to
-# the Makefile in Mac/OSX
+# the Makefile in Mac
#
#
# This target is here for backward compatiblity, previous versions of Python
@@ -938,25 +938,23 @@
# This installs Mac/Lib into the framework
frameworkinstallmaclib:
- cd Mac/OSX && $(MAKE) installmacsubtree DESTDIR="$(DESTDIR)"
+ cd Mac && $(MAKE) installmacsubtree DESTDIR="$(DESTDIR)"
# This installs the IDE, the Launcher and other apps into /Applications
frameworkinstallapps:
- cd Mac/OSX && $(MAKE) installapps DESTDIR="$(DESTDIR)"
+ cd Mac && $(MAKE) installapps DESTDIR="$(DESTDIR)"
# This install the unix python and pythonw tools in /usr/local/bin
frameworkinstallunixtools:
- cd Mac/OSX && $(MAKE) installunixtools DESTDIR="$(DESTDIR)"
+ cd Mac && $(MAKE) installunixtools DESTDIR="$(DESTDIR)"
frameworkaltinstallunixtools:
- cd Mac/OSX && $(MAKE) altinstallunixtools DESTDIR="$(DESTDIR)"
+ cd Mac && $(MAKE) altinstallunixtools DESTDIR="$(DESTDIR)"
# This installs the Demos and Tools into the applications directory.
# It is not part of a normal frameworkinstall
frameworkinstallextras:
- $(MAKE) -f Mac/OSX/Makefile installextras \
- $(RUNSHARED) BUILDPYTHON=./$(BUILDPYTHON) DIRMODE=$(DIRMODE) FILEMODE=$(FILEMODE) \
- srcdir=$(srcdir) builddir=. DESTDIR=$(DESTDIR)
+ cd Mac && Make installextras DESTDIR="$(DESTDIR)"
# This installs a few of the useful scripts in Tools/scripts
scriptsinstall:
diff --git a/configure b/configure
index b2e10d4..1b94a91 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
#! /bin/sh
-# From configure.in Revision: 46608 .
+# From configure.in Revision: 46700 .
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.59 for python 2.5.
#
@@ -1447,7 +1447,11 @@
FRAMEWORKINSTALLLAST=
FRAMEWORKALTINSTALLFIRST=
FRAMEWORKALTINSTALLLAST=
- FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
+ if test "x${prefix}" = "xNONE"; then
+ FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
+ else
+ FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
+ fi
enable_framework=
;;
*)
@@ -1459,16 +1463,20 @@
FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
FRAMEWORKALTINSTALLFIRST="${FRAMEWORKINSTALLFIRST} bininstall maninstall"
FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
- FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
+ if test "x${prefix}" = "xNONE" ; then
+ FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
+ else
+ FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
+ fi
prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
# Add makefiles for Mac specific code to the list of output
# files:
- ac_config_files="$ac_config_files Mac/OSX/Makefile"
+ ac_config_files="$ac_config_files Mac/Makefile"
- ac_config_files="$ac_config_files Mac/OSX/PythonLauncher/Makefile"
+ ac_config_files="$ac_config_files Mac/PythonLauncher/Makefile"
- ac_config_files="$ac_config_files Mac/OSX/IDLE/Makefile"
+ ac_config_files="$ac_config_files Mac/IDLE/Makefile"
esac
@@ -1482,7 +1490,11 @@
FRAMEWORKINSTALLLAST=
FRAMEWORKALTINSTALLFIRST=
FRAMEWORKALTINSTALLLAST=
- FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
+ if test "x${prefix}" = "xNONE" ; then
+ FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
+ else
+ FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
+ fi
enable_framework=
fi;
@@ -22477,9 +22489,9 @@
do
case "$ac_config_target" in
# Handling of arguments.
- "Mac/OSX/Makefile" ) CONFIG_FILES="$CONFIG_FILES Mac/OSX/Makefile" ;;
- "Mac/OSX/PythonLauncher/Makefile" ) CONFIG_FILES="$CONFIG_FILES Mac/OSX/PythonLauncher/Makefile" ;;
- "Mac/OSX/IDLE/Makefile" ) CONFIG_FILES="$CONFIG_FILES Mac/OSX/IDLE/Makefile" ;;
+ "Mac/Makefile" ) CONFIG_FILES="$CONFIG_FILES Mac/Makefile" ;;
+ "Mac/PythonLauncher/Makefile" ) CONFIG_FILES="$CONFIG_FILES Mac/PythonLauncher/Makefile" ;;
+ "Mac/IDLE/Makefile" ) CONFIG_FILES="$CONFIG_FILES Mac/IDLE/Makefile" ;;
"Makefile.pre" ) CONFIG_FILES="$CONFIG_FILES Makefile.pre" ;;
"Modules/Setup.config" ) CONFIG_FILES="$CONFIG_FILES Modules/Setup.config" ;;
"pyconfig.h" ) CONFIG_HEADERS="$CONFIG_HEADERS pyconfig.h" ;;
diff --git a/configure.in b/configure.in
index be50d07..6a8bc82 100644
--- a/configure.in
+++ b/configure.in
@@ -101,7 +101,11 @@
FRAMEWORKINSTALLLAST=
FRAMEWORKALTINSTALLFIRST=
FRAMEWORKALTINSTALLLAST=
- FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
+ if test "x${prefix}" = "xNONE"; then
+ FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
+ else
+ FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
+ fi
enable_framework=
;;
*)
@@ -113,14 +117,18 @@
FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
FRAMEWORKALTINSTALLFIRST="${FRAMEWORKINSTALLFIRST} bininstall maninstall"
FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
- FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
+ if test "x${prefix}" = "xNONE" ; then
+ FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
+ else
+ FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
+ fi
prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
# Add makefiles for Mac specific code to the list of output
# files:
- AC_CONFIG_FILES(Mac/OSX/Makefile)
- AC_CONFIG_FILES(Mac/OSX/PythonLauncher/Makefile)
- AC_CONFIG_FILES(Mac/OSX/IDLE/Makefile)
+ AC_CONFIG_FILES(Mac/Makefile)
+ AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
+ AC_CONFIG_FILES(Mac/IDLE/Makefile)
esac
],[
PYTHONFRAMEWORK=
@@ -131,7 +139,11 @@
FRAMEWORKINSTALLLAST=
FRAMEWORKALTINSTALLFIRST=
FRAMEWORKALTINSTALLLAST=
- FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
+ if test "x${prefix}" = "xNONE" ; then
+ FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
+ else
+ FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
+ fi
enable_framework=
])
AC_SUBST(PYTHONFRAMEWORK)