Use Find & Replace with Quartz Compositions

The Quartz Composer UI does not give you any kind of find/replace functionality. If you're simply looking to make simple text-based modifications to your composition, and you're willing to dive into XML syntax, there is an alternative.

Quartz Composer uses binary-encoded plists to store compositions (what you would call a composition file). The fact that each composition is stored in binary format makes it impossible to edit the file with a text editor. To get around that, open the composition using the “Property List”, which is installed along with the Xcode developer tools. The Property List Editor understands plists in both binary and XML format, and when you open a composition it'll display the contents correctly:

You can use the Property List Editor app to peek around, but it doesn't come with a find/replace feature. Next, choose the “Save As…” command and re-save the composition in plain XML:

The resulting .qtz file can still be opened by Quartz Composer, but please don't do that right now. Instead, drag the qtz file over a text editor. I used TextWrangler for this example. You'll notice that the composition can now be edited as a regular XML file:

At this point you can use the Find/Replace dialog to replace, for example, ü with u, ñ with n, etc. 1)

When you're done editing, you can save the XML-encoded .qtz file. It will open without problems in Quartz Composer. Keep in mind that as soon as you re-save the same composition from Quartz Composer, it will be saved again in binary form. In other words, every time you want to open the composition as a text file, you'll have to use Property List Editor to convert it from binary to XML.

Mac OS X 10.6 does not support compositions with input port names containing diacritical characters, and the above technique makes it possible to clean-up compositions created on Mac OS X 10.5 so that they become compatible with Snow Leopard.