File contents
Zope Edit Manager
Zope Edit Manager is a wrapper application for Casey Duncan's
excellent External Editor for Mac OS X, allowing Mac users the same
level of flexibility in editors and number of concurrent edits.
The Problem
Using the current Mac OS X Solution:
<http://zope.org/Members/Feneric/ExtEditMacOSX> will only get you
part of the way to <textarea> freedom. Specifically, it only
allows for applications that have either a CLI component, like
BBEdit, or that are bundle applications with an easily attainable
executable file, mostly limited to Cocoa applications.
In addition, because of the way Mac OS X approaches applications,
you can only have one External Editor process going at a
time. Unlike Windows and UNIX/X11 applications, Mac OS X native
applications have one runtime instance.
The Solution
Taking Casey's work to the next level for Mac OS X users, I
replicated his work using the PyObjC bridge, creating a native,
Mac OS X application to act as manager for all External Editor
processes. This means that you can specify any Mac OS X
application (Carbon or Cocoa) to act as the editor for a MIME
type, type group, or Zope meta_type. And you can have as many
concurrent edits as you like, since all edits are proxied through
a single application.
Using It
Drag the ZopeEditManger application to the Applications folder in
your hard drive or home directory. You can use the built-in
preferences, one of the supplied preference files, or edit your
own. Soon, you will be able to change preferences via a more
Mac-like interface.
Configuration
The helper application supports several configuration options,
each of which can be triggered in any combination of object
meta-type, content-type or domain. This allows you to create
appropriate behavior for different types of Zope objects and
content or even different servers. The configuration file is
stored in the file
"~/Library/Preferences/com.urbanape.zopeeditmanager.plist". If no
configuration file is found when the helper application starts, a
default config present in the Application's bundle is used.
The configuration file follows the standard Mac OS X Plist format,
found pretty much throughout your Library/Preferences folder.
<dict>
<key>Property Group</key>
<dict>
<key>Property1</key>
<string>Value1</string>
<key>Property2</key>
<string>value2</string>
</dict>
</dict>
Options
The available options for all sections of the config file are:
editor -- Application name used to invoke the editor
application.
save_interval -- (float) The interval in seconds that the helper
application checks the edited file for changes.
use_locks -- (<true/> or <false/>) Whether to use WebDAV
locking. The user editing must have the proper WebDAV related
permissions for this to work.
always_borrow_locks -- (<true/> or <false/>) When use_locks is
enabled this features suppresses warnings when trying to edit an
object you have already locked. When enabled, external editor
will always "borrow" the existing lock token instead of doing
the locking itself. This is useful when using CMFStaging for
instance. If omitted, this option defaults to <false/>.
cleanup_files -- (<true/> or <false/>) Whether to delete the
temp files created. WARNING the temp file coming from the
browser contains authentication information and therefore
setting this to <false/> is a security risk, especially on
shared machines. If set to <true/>, that file is deleted at the
earliest opportunity, before the editor is even spawned. Set to
<false/> for debugging only.
extension -- (text) The file extension to add to the content
file. Allows better handling of images and can improve syntax
highlighting.
temp_dir -- (path) Path to store local copies of object data
being edited. Defaults to operating system temp directory.
Conclusion
I hope you enjoy using this software. If you have any comments,
suggestions or would like to report a bug, send an email to the
author:
Zachery Bir
zbir@urbanape.com
--
(c) 2003, Zachery Bir and Zope Corporation. All rights reserved.