disable float support on m68k to prevent unwanted symbols being used in rom code...
[AROS.git] / workbench / prefs / icontrol / icontroleditor.c
bloba62c2641b867b89b854e50d034c1179d637f2404
1 /*
2 Copyright © 1995-2014, The AROS Development Team. All rights reserved.
3 $Id$
5 Desc:
6 Lang: English
7 */
9 #include <aros/debug.h>
11 #include <devices/rawkeycodes.h>
12 #include <mui/HotkeyString_mcc.h>
13 #include <zune/prefseditor.h>
14 #include <zune/customclasses.h>
16 #include <proto/alib.h>
17 #include <proto/commodities.h>
18 #include <proto/intuition.h>
19 #include <proto/muimaster.h>
20 #include <proto/alib.h>
22 #include <string.h>
23 #include <stdio.h>
25 #include "icontroleditor.h"
26 #include "prefs.h"
27 #include "locale.h"
29 #include "menupopup3d_image.c"
30 #include "menupopupclassic_image.c"
31 #include "menupulldown3d_image.c"
32 #include "menupulldownclassic_image.c"
34 #if MENUPOPUP3D_PACKED
35 static UBYTE menupopup3d_imagedata[MENUPOPUP3D_WIDTH * MENUPOPUP3D_HEIGHT];
36 #else
37 #define menupopup3d_imagedata menupopup3d_data
38 #endif
40 #if MENUPOPUPCLASSIC_PACKED
41 static UBYTE menupopupclassic_imagedata[MENUPOPUPCLASSIC_WIDTH * MENUPOPUPCLASSIC_HEIGHT];
42 #else
43 #define menupopupclassic_imagedata menupopupclassic_data
44 #endif
46 #if MENUPULLDOWN3D_PACKED
47 static UBYTE menupulldown3d_imagedata[MENUPULLDOWN3D_WIDTH * MENUPULLDOWN3D_HEIGHT];
48 #else
49 #define menupulldown3d_imagedata menupulldown3d_data
50 #endif
52 #if MENUPULLDOWNCLASSIC_PACKED
53 static UBYTE menupulldownclassic_imagedata[MENUPULLDOWNCLASSIC_WIDTH * MENUPULLDOWNCLASSIC_HEIGHT];
54 #else
55 #define menupulldownclassic_imagedata menupulldownclassic_data
56 #endif
58 /*********************************************************************************************/
60 struct IControlEditor_DATA
62 Object *menutypeobj;
63 Object *menulookobj;
64 Object *menustickobj;
65 Object *menutitlepullobj;
66 Object *offscreenobj;
67 Object *defpubscrobj;
68 Object *scrleftdragobj;
69 Object *scrrightdragobj;
70 Object *scrtopdragobj;
71 Object *scrbotdragobj;
72 Object *metadragobj;
73 Object *previewpage;
76 /*********************************************************************************************/
78 #define SETUP_INST_DATA struct IControlEditor_DATA *data = INST_DATA(CLASS, self)
80 /*********************************************************************************************/
82 static struct Hook previewhook;
83 static CONST_STRPTR menutype_labels[3], menulook_labels[3];
84 static WORD imagetransparray[4];
86 /*********************************************************************************************/
88 static void InitImagePal(const ULONG *pal, WORD numcols, WORD index)
90 WORD i;
92 imagetransparray[index] = -1;
93 for(i = 0; i < numcols; i++)
95 if ((pal[i] & 0xFCFCFC) == 0xFC00FC)
97 imagetransparray[index] = i;
100 ((UBYTE *)pal)[i * 3 + 0] = pal[i] >> 16;
101 ((UBYTE *)pal)[i * 3 + 1] = pal[i] >> 8;
102 ((UBYTE *)pal)[i * 3 + 2] = pal[i];
106 /*********************************************************************************************/
108 #if MENUPOPUP3D_PACKED || MENUPOPUPCLASSIC_PACKED ||MENUPULLDOWN3D_PACKED || MENUPULLDOWNCLASSIC_PACKED
110 static const UBYTE *unpack_byterun1(const UBYTE *source, UBYTE *dest, LONG unpackedsize)
112 UBYTE r;
113 BYTE c;
115 for(;;)
117 c = (BYTE)(*source++);
118 if (c >= 0)
120 while(c-- >= 0)
122 *dest++ = *source++;
123 if (--unpackedsize <= 0) return source;
126 else if (c != -128)
128 c = -c;
129 r = *source++;
131 while(c-- >= 0)
133 *dest++ = r;
134 if (--unpackedsize <= 0) return source;
140 #endif
142 /*********************************************************************************************/
144 static void InitImages(void)
146 #if MENUPOPUP3D_PACKED
147 unpack_byterun1(menupopup3d_data, menupopup3d_imagedata, sizeof(menupopup3d_imagedata));
148 #endif
150 #if MENUPOPUPCLASSIC_PACKED
151 unpack_byterun1(menupopupclassic_data, menupopupclassic_imagedata, sizeof(menupopupclassic_imagedata));
152 #endif
154 #if MENUPULLDOWN3D_PACKED
155 unpack_byterun1(menupulldown3d_data, menupulldown3d_imagedata, sizeof(menupulldown3d_imagedata));
156 #endif
158 #if MENUPULLDOWNCLASSIC_PACKED
159 unpack_byterun1(menupulldownclassic_data, menupulldownclassic_imagedata, sizeof(menupulldownclassic_imagedata));
160 #endif
162 InitImagePal(menupulldownclassic_pal, MENUPULLDOWNCLASSIC_COLORS, 0);
163 InitImagePal(menupulldown3d_pal, MENUPULLDOWN3D_COLORS, 1);
164 InitImagePal(menupopupclassic_pal, MENUPOPUPCLASSIC_COLORS, 2);
165 InitImagePal(menupopup3d_pal, MENUPOPUP3D_COLORS, 3);
169 /*********************************************************************************************/
171 static void SetPreviewImage(Object *previewpage, struct IControlEditor_DATA **data)
173 IPTR type = 0;
174 IPTR look = 0;
176 GET((*data)->menutypeobj, MUIA_Cycle_Active, &type);
177 SET((*data)->menutitlepullobj, MUIA_Disabled, (type == 0) ? TRUE : FALSE);
178 GET((*data)->menulookobj, MUIA_Cycle_Active, &look);
180 NNSET(previewpage, MUIA_Group_ActivePage, type * 2 + look);
183 /*********************************************************************************************/
185 static void PreviewFunc(struct Hook *hook, Object *previewpage, struct IControlEditor_DATA **data)
187 SetPreviewImage(previewpage, data);
190 /*********************************************************************************************/
192 BOOL Gadgets2IControlPrefs(struct IControlEditor_DATA *data)
194 struct IControlPrefs *prefs = &icontrolprefs;
196 IPTR active = 0;
197 STRPTR key = NULL;
198 struct InputXpression ix = {IX_VERSION, 0};
200 // Clear options we are about to set..
201 prefs->ic_Flags &= ~(ICF_POPUPMENUS | ICF_3DMENUS | ICF_PULLDOWNTITLEMENUS | ICF_STICKYMENUS | ICF_OFFSCREENLAYERS | ICF_DEFPUBSCREEN);
203 GET(data->menutypeobj, MUIA_Cycle_Active, &active);
204 if (active != 0)
206 prefs->ic_Flags |= ICF_POPUPMENUS;
207 GET(data->menutitlepullobj, MUIA_Selected, &active);
208 if (active != 0)
209 prefs->ic_Flags |= ICF_PULLDOWNTITLEMENUS;
212 GET(data->menulookobj, MUIA_Cycle_Active, &active);
213 if (active != 0)
214 prefs->ic_Flags |= ICF_3DMENUS;
216 GET(data->menustickobj, MUIA_Selected, &active);
217 if (active != 0)
218 prefs->ic_Flags |= ICF_STICKYMENUS;
220 GET(data->offscreenobj, MUIA_Selected, &active);
221 if (active != 0)
222 prefs->ic_Flags |= ICF_OFFSCREENLAYERS;
224 GET(data->defpubscrobj, MUIA_Selected, &active);
225 if (active != 0)
226 prefs->ic_Flags |= ICF_DEFPUBSCREEN;
228 prefs->ic_VDragModes[0] = 0;
229 GET(data->scrleftdragobj, MUIA_Selected, &active);
230 if (active)
231 prefs->ic_VDragModes[0] |= ICVDM_LBOUND;
232 GET(data->scrrightdragobj, MUIA_Selected, &active);
233 if (active)
234 prefs->ic_VDragModes[0] |= ICVDM_RBOUND;
235 GET(data->scrtopdragobj, MUIA_Selected, &active);
236 if (active)
237 prefs->ic_VDragModes[0] |= ICVDM_TBOUND;
238 GET(data->scrbotdragobj, MUIA_Selected, &active);
239 if (active)
240 prefs->ic_VDragModes[0] |= ICVDM_BBOUND;
242 GET(data->metadragobj, MUIA_String_Contents, &key);
243 if (!ParseIX(key, &ix))
244 prefs->ic_MetaDrag = ix.ix_Qualifier;
246 prefs->ic_Flags |= ICF_AVOIDWINBORDERERASE;
248 return TRUE;
251 /*********************************************************************************************/
253 BOOL IControlPrefs2Gadgets(struct IControlEditor_DATA *data)
255 struct IControlPrefs *prefs = &icontrolprefs;
257 struct InputXpression ix =
259 IX_VERSION,
260 IECLASS_RAWKEY,
261 RAWKEY_LAMIGA,
264 IX_NORMALQUALS,
268 NNSET(data->menutypeobj, MUIA_Cycle_Active, (prefs->ic_Flags & ICF_POPUPMENUS) ? 1 : 0);
269 NNSET(data->menutitlepullobj, MUIA_Selected, (prefs->ic_Flags & ICF_PULLDOWNTITLEMENUS) ? 1 : 0);
270 SET(data->menutitlepullobj, MUIA_Disabled, (prefs->ic_Flags & ICF_POPUPMENUS) ? FALSE : TRUE);
271 NNSET(data->menulookobj, MUIA_Cycle_Active, (prefs->ic_Flags & ICF_3DMENUS) ? 1 : 0);
272 NNSET(data->menustickobj, MUIA_Selected, (prefs->ic_Flags & ICF_STICKYMENUS) ? 1 : 0);
273 NNSET(data->offscreenobj, MUIA_Selected, (prefs->ic_Flags & ICF_OFFSCREENLAYERS) ? 1 : 0);
274 NNSET(data->defpubscrobj, MUIA_Selected, (prefs->ic_Flags & ICF_DEFPUBSCREEN) ? 1 : 0);
275 NNSET(data->scrleftdragobj, MUIA_Selected, prefs->ic_VDragModes[0] & ICVDM_LBOUND);
276 NNSET(data->scrrightdragobj, MUIA_Selected, prefs->ic_VDragModes[0] & ICVDM_RBOUND);
277 NNSET(data->scrtopdragobj, MUIA_Selected, prefs->ic_VDragModes[0] & ICVDM_TBOUND);
278 NNSET(data->scrbotdragobj, MUIA_Selected, prefs->ic_VDragModes[0] & ICVDM_BBOUND);
280 ix.ix_Qualifier = prefs->ic_MetaDrag;
281 NNSET(data->metadragobj, MUIA_HotkeyString_IX, &ix);
283 SetPreviewImage(data->previewpage, &data);
285 return TRUE;
288 /*********************************************************************************************/
290 IPTR IControlEditor__OM_NEW
292 Class *CLASS, Object *self, struct opSet *message
295 struct IControlEditor_DATA *data = NULL;
296 Object *previewpage, *menutypeobj, *menulookobj;
297 Object *menustickobj, *menutitlepullobj;
298 Object *offscreenobj;
299 Object *defpubscrobj;
300 Object *scrleftdragobj, *scrrightdragobj, *scrtopdragobj, *scrbotdragobj;
301 Object *metadragobj;
303 InitImages();
305 previewhook.h_Entry = HookEntry;
306 previewhook.h_SubEntry = (HOOKFUNC)PreviewFunc;
309 WARNING: All Prefs structs must be initialized at this point!
312 menutype_labels[0] = _(MSG_MENUS_TYPE_PULLDOWN);
313 menutype_labels[1] = _(MSG_MENUS_TYPE_POPUP);
315 menulook_labels[0] = _(MSG_MENUS_LOOK_CLASSIC);
316 menulook_labels[1] = _(MSG_MENUS_LOOK_3D);
318 D(bug("Creating window object...\n"));
320 self = (Object *) DoSuperNewTags
322 CLASS, self, NULL,
324 MUIA_PrefsEditor_Name, __(MSG_WINTITLE),
325 MUIA_PrefsEditor_Path, (IPTR) "SYS/icontrol.prefs",
326 MUIA_PrefsEditor_IconTool, (IPTR) "SYS:Prefs/IControl",
328 Child, HGroup,
329 Child, (IPTR)VGroup,
330 MUIA_Weight, 0,
331 GroupFrameT(_(MSG_MENUS_GROUP)),
332 Child, ColGroup(2),
333 Child, Label1(_(MSG_MENUS_TYPE)),
334 Child, menutypeobj = MUI_MakeObject(MUIO_Cycle, NULL, menutype_labels),
335 Child, Label1(_(MSG_MENUS_LOOK)),
336 Child, menulookobj = MUI_MakeObject(MUIO_Cycle, NULL, menulook_labels),
337 End,
338 Child, ColGroup(3),
339 Child, HSpace(0),
340 Child, Label1(_(MSG_MENUS_STICKY)),
341 Child, menustickobj = MUI_MakeObject(MUIO_Checkmark, NULL),
342 Child, Label1(_(MSG_MENUS_TITLEPOPUP)),
343 Child, menutitlepullobj = MUI_MakeObject(MUIO_Checkmark, NULL),
344 End,
345 Child, VSpace(1),
346 Child, previewpage = PageGroup,
347 //ImageButtonFrame,
348 MUIA_Background, (IPTR)"2:6c6c6c6c,6a6a6a6a,b5b5b5b5",
349 Child, ChunkyImageObject,
350 MUIA_ChunkyImage_Pixels, (IPTR)menupulldownclassic_imagedata,
351 MUIA_ChunkyImage_Palette, (IPTR)menupulldownclassic_pal,
352 MUIA_ChunkyImage_NumColors, MENUPULLDOWNCLASSIC_COLORS,
353 MUIA_Bitmap_Width, MENUPULLDOWNCLASSIC_WIDTH,
354 MUIA_Bitmap_Height, MENUPULLDOWNCLASSIC_HEIGHT,
355 MUIA_FixWidth, MENUPULLDOWNCLASSIC_WIDTH,
356 MUIA_FixHeight, MENUPULLDOWNCLASSIC_HEIGHT,
357 MUIA_Bitmap_UseFriend, TRUE,
358 MUIA_Bitmap_Transparent, imagetransparray[0],
359 End,
360 Child, ChunkyImageObject,
361 MUIA_ChunkyImage_Pixels, (IPTR)menupulldown3d_imagedata,
362 MUIA_ChunkyImage_Palette, (IPTR)menupulldown3d_pal,
363 MUIA_ChunkyImage_NumColors, MENUPULLDOWN3D_COLORS,
364 MUIA_Bitmap_Width, MENUPULLDOWN3D_WIDTH,
365 MUIA_Bitmap_Height, MENUPULLDOWN3D_HEIGHT,
366 MUIA_FixWidth, MENUPULLDOWN3D_WIDTH,
367 MUIA_FixHeight, MENUPULLDOWN3D_HEIGHT,
368 MUIA_Bitmap_UseFriend, TRUE,
369 MUIA_Bitmap_Transparent, imagetransparray[1],
370 End,
371 Child, ChunkyImageObject,
372 MUIA_ChunkyImage_Pixels, (IPTR)menupopupclassic_imagedata,
373 MUIA_ChunkyImage_Palette, (IPTR)menupopupclassic_pal,
374 MUIA_ChunkyImage_NumColors, MENUPOPUPCLASSIC_COLORS,
375 MUIA_Bitmap_Width, MENUPOPUPCLASSIC_WIDTH,
376 MUIA_Bitmap_Height, MENUPOPUPCLASSIC_HEIGHT,
377 MUIA_FixWidth, MENUPOPUPCLASSIC_WIDTH,
378 MUIA_FixHeight, MENUPOPUPCLASSIC_HEIGHT,
379 MUIA_Bitmap_UseFriend, TRUE,
380 MUIA_Bitmap_Transparent, imagetransparray[2],
381 End,
382 Child, ChunkyImageObject,
383 MUIA_ChunkyImage_Pixels, (IPTR)menupopup3d_imagedata,
384 MUIA_ChunkyImage_Palette, (IPTR)menupopup3d_pal,
385 MUIA_ChunkyImage_NumColors, MENUPOPUP3D_COLORS,
386 MUIA_Bitmap_Width, MENUPOPUP3D_WIDTH,
387 MUIA_Bitmap_Height, MENUPOPUP3D_HEIGHT,
388 MUIA_FixWidth, MENUPOPUP3D_WIDTH,
389 MUIA_FixHeight, MENUPOPUP3D_HEIGHT,
390 MUIA_Bitmap_UseFriend, TRUE,
391 MUIA_Bitmap_Transparent, imagetransparray[3],
392 End,
393 End, // PageGroup
394 End,
395 Child, VGroup,
396 Child, VGroup,
397 GroupFrameT(_(MSG_WINDOWS)),
398 Child, VSpace(0),
399 Child, ColGroup(4),
400 Child, HSpace(0),
401 Child, Label1(_(MSG_OFFSCREEN_MOVE)),
402 Child, offscreenobj = MUI_MakeObject(MUIO_Checkmark, NULL),
403 Child, HSpace(0),
404 End,
405 Child, VSpace(0),
406 End,
407 Child, VGroup,
408 GroupFrameT(_(MSG_SCREENS)),
409 Child, VSpace(0),
410 Child, ColGroup(2),
411 Child, Label1(_(MSG_FRONTMOST_DEFAULT)),
412 Child, HGroup,
413 Child, defpubscrobj = MUI_MakeObject(MUIO_Checkmark, NULL),
414 Child, HSpace(0),
415 End,
416 Child, Label1(_(MSG_BOUND_LEFT_DRAG)),
417 Child, HGroup,
418 Child, scrleftdragobj = MUI_MakeObject(MUIO_Checkmark, NULL),
419 Child, HSpace(0),
420 End,
421 Child, Label1(_(MSG_BOUND_RIGHT_DRAG)),
422 Child, HGroup,
423 Child, scrrightdragobj = MUI_MakeObject(MUIO_Checkmark, NULL),
424 Child, HSpace(0),
425 End,
426 Child, Label1(_(MSG_BOUND_TOP_DRAG)),
427 Child, HGroup,
428 Child, scrtopdragobj = MUI_MakeObject(MUIO_Checkmark, NULL),
429 Child, HSpace(0),
430 End,
431 Child, Label1(_(MSG_BOUND_BOTTOM_DRAG)),
432 Child, HGroup,
433 Child, scrbotdragobj = MUI_MakeObject(MUIO_Checkmark, NULL),
434 Child, HSpace(0),
435 End,
436 Child, Label1(_(MSG_META_DRAG)),
437 Child, metadragobj = MUI_NewObject("HotkeyString.mcc",
438 MUIA_Frame, MUIV_Frame_String,
439 TAG_DONE),
440 End,
441 Child, VSpace(0),
442 End,
443 End,
444 End,
445 TAG_DONE
448 D(bug("Created prefs window object 0x%p\n", self));
450 if (self == NULL) goto error;
452 data = INST_DATA(CLASS, self);
453 data->menutypeobj = menutypeobj;
454 data->menulookobj = menulookobj;
455 data->menustickobj = menustickobj;
456 data->menutitlepullobj = menutitlepullobj;
457 data->offscreenobj = offscreenobj;
458 SET(data->offscreenobj, MUIA_ShortHelp, __(MSG_OFFSCREEN_DESC));
459 data->defpubscrobj = defpubscrobj;
460 data->scrleftdragobj = scrleftdragobj;
461 data->scrrightdragobj = scrrightdragobj;
462 data->scrtopdragobj = scrtopdragobj;
463 data->scrbotdragobj = scrbotdragobj;
464 data->metadragobj = metadragobj;
465 data->previewpage = previewpage;
466 SET(data->defpubscrobj, MUIA_ShortHelp, __(MSG_FRONTMOST_DEFAULT_DESC));
468 DoMethod
470 menutypeobj, MUIM_Notify, MUIA_Cycle_Active, MUIV_EveryTime,
471 (IPTR)previewpage, 3, MUIM_CallHook, (IPTR)&previewhook, (IPTR)data
474 DoMethod
476 menulookobj, MUIM_Notify, MUIA_Cycle_Active, MUIV_EveryTime,
477 (IPTR)previewpage, 3, MUIM_CallHook, (IPTR)&previewhook, (IPTR)data
480 DoMethod
482 menutypeobj, MUIM_Notify, MUIA_Cycle_Active, MUIV_EveryTime,
483 (IPTR) self, 3, MUIM_Set, MUIA_PrefsEditor_Changed, TRUE
486 DoMethod
488 menulookobj, MUIM_Notify, MUIA_Cycle_Active, MUIV_EveryTime,
489 (IPTR) self, 3, MUIM_Set, MUIA_PrefsEditor_Changed, TRUE
492 DoMethod
494 menustickobj, MUIM_Notify, MUIA_Selected, MUIV_EveryTime,
495 (IPTR) self, 3, MUIM_Set, MUIA_PrefsEditor_Changed, TRUE
498 DoMethod
500 menutitlepullobj, MUIM_Notify, MUIA_Selected, MUIV_EveryTime,
501 (IPTR) self, 3, MUIM_Set, MUIA_PrefsEditor_Changed, TRUE
504 DoMethod
506 offscreenobj, MUIM_Notify, MUIA_Selected, MUIV_EveryTime,
507 (IPTR) self, 3, MUIM_Set, MUIA_PrefsEditor_Changed, TRUE
510 DoMethod
512 defpubscrobj, MUIM_Notify, MUIA_Selected, MUIV_EveryTime,
513 (IPTR) self, 3, MUIM_Set, MUIA_PrefsEditor_Changed, TRUE
516 DoMethod
518 scrleftdragobj, MUIM_Notify, MUIA_Selected, MUIV_EveryTime,
519 (IPTR) self, 3, MUIM_Set, MUIA_PrefsEditor_Changed, TRUE
522 DoMethod
524 scrrightdragobj, MUIM_Notify, MUIA_Selected, MUIV_EveryTime,
525 (IPTR) self, 3, MUIM_Set, MUIA_PrefsEditor_Changed, TRUE
528 DoMethod
530 scrtopdragobj, MUIM_Notify, MUIA_Selected, MUIV_EveryTime,
531 (IPTR) self, 3, MUIM_Set, MUIA_PrefsEditor_Changed, TRUE
534 DoMethod
536 scrbotdragobj, MUIM_Notify, MUIA_Selected, MUIV_EveryTime,
537 (IPTR) self, 3, MUIM_Set, MUIA_PrefsEditor_Changed, TRUE
540 // FIXME: MUIA_String_Acknowledge doesn't work and
541 // MUIA_String_Contents sets MUIA_PrefsEditor_Changed immediately
542 DoMethod
544 metadragobj, MUIM_Notify, MUIA_String_Acknowledge, MUIV_EveryTime,
545 (IPTR) self, 3, MUIM_Set, MUIA_PrefsEditor_Changed, TRUE
548 IControlPrefs2Gadgets(data);
550 return (IPTR) self;
552 error:
554 return 0;
557 /*********************************************************************************************/
559 IPTR IControlEditor__MUIM_PrefsEditor_ImportFH (
560 Class *CLASS, Object *self,
561 struct MUIP_PrefsEditor_ImportFH *message
564 SETUP_INST_DATA;
565 BOOL success = TRUE;
567 D(bug("[icontroleditor class] IControlEditor Class Import\n"));
569 success = Prefs_ImportFH(message->fh);
570 if (success) IControlPrefs2Gadgets(data);
572 return success;
575 /*********************************************************************************************/
577 IPTR IControlEditor__MUIM_PrefsEditor_ExportFH
579 Class *CLASS, Object *self,
580 struct MUIP_PrefsEditor_ExportFH *message
583 SETUP_INST_DATA;
584 BOOL success = TRUE;
586 D(bug("[icontroleditor class] IControlEditor Class Export\n"));
588 Gadgets2IControlPrefs(data);
589 success = Prefs_ExportFH(message->fh);
591 return success;
594 /*********************************************************************************************/
596 IPTR IControlEditor__MUIM_PrefsEditor_SetDefaults
598 Class *CLASS, Object *self, Msg message
601 SETUP_INST_DATA;
602 BOOL success = TRUE;
604 D(bug("[icontroleditor class] IControlEditor Class SetDefaults\n"));
606 success = Prefs_Default();
607 if (success) IControlPrefs2Gadgets(data);
609 return success;
612 /*** Setup ******************************************************************/
613 ZUNE_CUSTOMCLASS_4
615 IControlEditor, NULL, MUIC_PrefsEditor, NULL,
616 OM_NEW, struct opSet *,
617 MUIM_PrefsEditor_ImportFH, struct MUIP_PrefsEditor_ImportFH *,
618 MUIM_PrefsEditor_ExportFH, struct MUIP_PrefsEditor_ExportFH *,
619 MUIM_PrefsEditor_SetDefaults, Msg