# ResEdit

ResEdit is a discontinued developer tool application for the Apple Macintosh, used to create and edit resources directly in the Mac's resource fork architecture. It was an alternative to tools such as REdit, and the resource compiler Rez. For the average user, ResEdit was generally easier to use, because it used a graphical user interface. Although it had been intended to be a developer tool, power users often used it to edit icons, menus, and other elements of an application's GUI, customizing it to their own preferences.
Resources on the Macintosh could be of many different types, and in fact any arbitrary data could be turned into a resource. While the system defined many standard formats for particular kinds of resources (for example, an icon, or a window template), programmers were also free to define their own. ResEdit included support for editing many of the standard types and for creating arbitrary resources with any structure a programmer saw fit.
ResEdit was one of the earliest examples of a GUI layout tool, an essential component for rapid application development. For example, the classic Mac OS defined a standard resource called a dialog template and a dialog items list (resource types 'DLOG' and 'DITL' respectively). In ResEdit, it was possible to simply create these types and add GUI elements to them in an almost WYSIWYG fashion, such that a user interface could be designed directly as it would appear to the end user of the application. Later, the application code could create a functional dialog box using the stored resource data which matches the appearance you lay out in ResEdit. When ResEdit first appeared in the mid-1980s, this was a revolutionary innovation, today it is commonplace for programmers. ResEdit includes standard editors for window templates (WIND), menus (MENU), dialog boxes, controls (CNTL), color palettes (clut and pltt), icons (ICON, cicn, ICN#), and various other standard types.
One of ResEdit's most powerful features (which first appeared with ResEdit version 2.0) is the ability to define arbitrary data structures as resources using a simple template building feature. Here, the programmer can simply add elemental data types to a list to define a template (itself stored as a resource of type TMPL). This template allows ResEdit to build a GUI editor on the fly that allows entry of data and package it into the structure defined in the template. It's a simple matter for a programmer to define a matching data structure in a chosen programming language, such as C, load the resource in a standard manner and access the data as the defined C type. ResEdit includes a number of predefined templates for many standard OS resources that do not require a graphical editor.
ResEdit was never upgraded to run natively on PowerPC-based Macintoshes after the migration from Motorola 68000 series, and not on Mac OS X. Apple now discourages the use of resource forks in new macOS applications, preferring the more portable NeXT-derived application bundles. A long-standing third-party commercial alternative named Resorcerer remains available, and more recently there have been a number of attempts to build open-source macOS-native resource editors, including one called ResKnife. ResEdit will run in Mac OS X's Classic compatibility mode, but Classic is neither available on Intel Macintosh computers, nor in Mac OS X v10.5 or later. However, an Intel Mac can run ResEdit via an emulator such as SheepShaver or Basilisk II.
The last official version of ResEdit is 2.1.3, released in August 1994. Unofficial hacks released as ResEdit 2.1.4 and later exist, adding features such as a decompiler and the ability to edit data forks, but these are unsupported by Apple.