1 /***************************************************************************
3 NListviews.mcp - New Listview MUI Custom Class Preferences
4 Registered MUI class, Serial Number: 1d51 (0x9d510001 to 0x9d51001F
5 and 0x9d510101 to 0x9d51013F)
7 Copyright (C) 1996-2001 by Gilles Masson
8 Copyright (C) 2001-2007 by NList Open Source Team
10 This library is free software; you can redistribute it and/or
11 modify it under the terms of the GNU Lesser General Public
12 License as published by the Free Software Foundation; either
13 version 2.1 of the License, or (at your option) any later version.
15 This library is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 Lesser General Public License for more details.
20 NList classes Support Site: http://www.sf.net/projects/nlist-classes
24 ***************************************************************************/
29 #include <devices/inputevent.h>
30 #include <libraries/asl.h>
31 #include <libraries/locale.h>
32 #include <libraries/commodities.h>
33 #include <mui/HotkeyString_mcc.h>
35 #include <clib/alib_protos.h>
36 #include <proto/commodities.h>
37 #include <proto/muimaster.h>
38 #include <proto/intuition.h>
39 #include <proto/console.h>
40 #include <proto/locale.h>
41 #include <proto/exec.h>
50 #define INTUIBASEMIN 39
53 #define SimpleButtonCycle(name,helpstring) \
57 MUIA_Font, MUIV_Font_Button, \
58 MUIA_Text_Contents, name, \
59 MUIA_Text_PreParse, "\33c", \
60 MUIA_InputMode , MUIV_InputMode_RelVerify, \
61 MUIA_Background , MUII_ButtonBack, \
62 MUIA_ShortHelp, helpstring, \
66 #define ToggleButtonCycle(name,selected,disable,helpstring) \
70 MUIA_Font, MUIV_Font_Button, \
71 MUIA_Text_Contents, name, \
72 MUIA_Text_PreParse, "\33c", \
73 MUIA_Text_SetMax, TRUE, \
74 MUIA_InputMode , MUIV_InputMode_Toggle, \
75 MUIA_Selected , selected,\
76 MUIA_Background , MUII_ButtonBack, \
77 MUIA_Disabled , disable,\
78 MUIA_ShortHelp, helpstring, \
82 MUIA_ShowSelState , FALSE,\
90 static struct QualifierDef QualTab[] =
92 { "SHIFT", (IEQUALIFIER_LSHIFT|IEQUALIFIER_RSHIFT) },
93 { "LSHIFT", IEQUALIFIER_LSHIFT },
94 { "RSHIFT", IEQUALIFIER_RSHIFT },
95 { "CONTROL", IEQUALIFIER_CONTROL },
96 { "ALT", (IEQUALIFIER_LALT|IEQUALIFIER_RALT) },
97 { "LALT", IEQUALIFIER_LALT },
98 { "RALT", IEQUALIFIER_RALT },
99 { "COMMAND", (IEQUALIFIER_LCOMMAND|IEQUALIFIER_RCOMMAND) },
100 { "LCOMMAND", IEQUALIFIER_LCOMMAND },
101 { "RCOMMAND", IEQUALIFIER_RCOMMAND },
102 { "MIDBUTTON", IEQUALIFIER_MIDBUTTON },
103 { "RBUTTON", IEQUALIFIER_RBUTTON },
104 { "LEFTBUTTON", IEQUALIFIER_LEFTBUTTON },
109 Object
*MakeCheck(STRPTR label
, STRPTR help
, ULONG check
)
111 Object
*obj
= MUI_MakeObject(MUIO_Checkmark
, label
);
114 SetAttrs(obj
, MUIA_CycleChain
, 1,
115 MUIA_Selected
, check
,
116 MUIA_ShortHelp
, help
,
123 #define String2(contents,maxlen)\
124 (void *)StringObject,\
127 MUIA_String_MaxLen , maxlen,\
128 MUIA_String_Contents, contents,\
131 #define LOAD_DATALONG(obj,attr,cfg_attr,defaultval) \
134 if((ptrd = (LONG *) DoMethod(msg->configdata, MUIM_Dataspace_Find, cfg_attr))) \
135 set(obj, attr, *ptrd); \
137 set(obj, attr, defaultval); \
140 #define SAVE_DATALONG(obj,attr,cfg_attr) \
143 get(obj, attr, &ptrd); \
144 DoMethod(msg->configdata, MUIM_Dataspace_Add, &ptrd, 8, cfg_attr); \
147 #define LOAD_DATASPEC(obj,attr,cfg_attr,defaultval) \
150 if((ptrd = DoMethod(msg->configdata, MUIM_Dataspace_Find, cfg_attr))) \
151 set(obj, attr, ptrd); \
153 set(obj, attr, defaultval); \
156 #define SAVE_DATASPEC(obj,attr,cfg_attr) \
159 get(obj, attr, &ptrd); \
161 DoMethod(msg->configdata, MUIM_Dataspace_Add, ptrd, sizeof(struct MUI_PenSpec), cfg_attr); \
164 #define SAVE_DATASPEC2(obj,attr,cfg_attr) \
167 get(obj, attr, &ptrd); \
169 DoMethod(msg->configdata, MUIM_Dataspace_Add, ptrd, sizeof(struct MUI_ImageSpec), cfg_attr); \
172 #define LOAD_DATAFONT(obj,cfg_attr) \
175 if((ptrd = DoMethod(msg->configdata, MUIM_Dataspace_Find, cfg_attr))) \
176 set(obj, MUIA_String_Contents, ptrd); \
178 set(obj, MUIA_String_Contents, ""); \
181 #define SAVE_DATAFONT(obj,cfg_attr) \
184 get(obj, MUIA_String_Contents, &ptrd); \
187 LONG dlen = strlen((char *) ptrd) + 1; \
189 DoMethod(msg->configdata, MUIM_Dataspace_Add, ptrd, dlen, cfg_attr); \
191 DoMethod(msg->configdata, MUIM_Dataspace_Remove, cfg_attr); \
195 /* *********************************************************************** */
197 static DEFAULT_KEYS_ARRAY
199 static ULONG keytags
[] =
201 KEYTAG_QUALIFIER_MULTISELECT
,
202 KEYTAG_QUALIFIER_DRAG
,
203 KEYTAG_QUALIFIER_BALANCE
,
204 KEYTAG_COPY_TO_CLIPBOARD
,
205 KEYTAG_DEFAULT_WIDTH_COLUMN
,
206 KEYTAG_DEFAULT_WIDTH_ALL_COLUMNS
,
207 KEYTAG_DEFAULT_ORDER_COLUMN
,
208 KEYTAG_DEFAULT_ORDER_ALL_COLUMNS
,
209 KEYTAG_SELECT_TO_TOP
,
210 KEYTAG_SELECT_TO_BOTTOM
,
211 KEYTAG_SELECT_TO_PAGE_UP
,
212 KEYTAG_SELECT_TO_PAGE_DOWN
,
215 KEYTAG_TOGGLE_ACTIVE
,
216 KEYTAG_QUALIFIER_WHEEL_FAST
,
217 KEYTAG_QUALIFIER_WHEEL_HORIZ
,
218 KEYTAG_QUALIFIER_TITLECLICK2
,
224 static struct KeyBinding empty_key
= { 0, (UWORD
)-1, 0 };
226 /* *********************************************************************** */
229 static const char *MainTextArray[] =
231 "If you have problems, try to increase the stack value,",
232 "in the icon infos if you launch the program from icon,",
233 "stack of CLI if you start it from CLI/Shell,",
234 "and if you launch it from some utility read its docs",
235 "to see how to increase it.",
236 "A stack of 12Kb, 16Kb or 20Kb is most of time a good idea.",
238 "If you still have problems, try to see if they happen with the Demo prog, then tell me.",
240 "Latest public release can be found on aminet (dev/mui).",
241 "All releases are available on",
242 "http://www.sourceforge.net/projects/nlist-classes/",
244 "\033r\0333(C) 2001-2007 by NList Open Source Team",
245 "\033r\0333(C) 1996-1998 by Gilles Masson",
246 "\033r\0333http://www.sourceforge.net/projects/nlist-classes/",
248 "\033cThis new list/listview custom class",
249 "\033chandles its own configurable backgrounds,",
250 "\033cpens, fonts, scrollbars, keys and qualifiers",
252 "\033cThe way used to handle cursor with multiselection",
253 "\033cis not exactly as the listview one !",
254 "\033cDrag&Drop is supported, both scrollbars",
255 "\033ccan be configured to disappear automatically",
256 "\033cwhen not needed because all is visible.",
257 "\033cJust try it...",
259 "\033cYou can horizontaly scroll with cursor keys,",
260 "\033cor going on the right and left of the list",
261 "\033cwhile selecting with the mouse.",
262 "\033cTry just clicking on the left/right borders !",
264 "\033cYou can change columns widths just dragging",
265 "\033cthe vertical separator between columns titles",
266 "\033c(try it using the balancing qualifier too).",
268 "\033cYou can change columns order just dragging",
269 "\033cthe column titles.",
271 "\033cThere is builtin copy to clipboard stuff",
272 "\033cand classic char selection capability.",
274 "\033cTry the Demo program to test all that...",
277 "\033r\033bGive some feedback about it ! :-)",
279 "**************************************************************************************************",
284 // static arrays which we fill up later on
285 static const char *Pages
[6];
286 static const char *RS_ColWidthDrag
[4];
287 static const char *RS_VSB
[4];
288 static const char *RS_HSB
[5];
289 static const char *RS_Menu
[4];
290 static const char *RS_MultiSelects
[3];
291 static const char *RS_DragTypes
[4];
292 static const char *functions_names
[20];
294 static LONG
DeadKeyConvert(struct NListviews_MCP_Data
*data
,struct KeyBinding
*key
)
296 char *text
= data
->rawtext
;
298 UWORD qual
= key
->kb_Qualifier
& KBQUAL_MASK
;
299 UWORD same
= key
->kb_Qualifier
& KBSYM_MASK
;
305 { if ((qual
& KBQUALIFIER_CAPS
) && (same
& KBSYM_CAPS
))
306 strlcat(text
, (char *)"caps ", sizeof(data
->rawtext
));
307 else if ((qual
& KBQUALIFIER_SHIFT
) && (same
& KBSYM_SHIFT
))
308 { strlcat(text
, (char *)"shift ", sizeof(data
->rawtext
));
309 if (qual
& IEQUALIFIER_CAPSLOCK
) strlcat(text
, (char *)"capslock ", sizeof(data
->rawtext
));
312 { if (qual
& IEQUALIFIER_LSHIFT
) strlcat(text
, (char *)"lshift ", sizeof(data
->rawtext
));
313 if (qual
& IEQUALIFIER_RSHIFT
) strlcat(text
, (char *)"rshift ", sizeof(data
->rawtext
));
314 if (qual
& IEQUALIFIER_CAPSLOCK
) strlcat(text
, (char *)"capslock ", sizeof(data
->rawtext
));
316 if (qual
& IEQUALIFIER_CONTROL
) strlcat(text
, (char *)"control ", sizeof(data
->rawtext
));
317 if ((qual
& KBQUALIFIER_ALT
) && (same
& KBSYM_ALT
))
318 strlcat(text
, (char *)"alt ", sizeof(data
->rawtext
));
320 { if (qual
& IEQUALIFIER_LALT
) strlcat(text
, (char *)"lalt ", sizeof(data
->rawtext
));
321 if (qual
& IEQUALIFIER_RALT
) strlcat(text
, (char *)"ralt ", sizeof(data
->rawtext
));
323 if (qual
& IEQUALIFIER_LCOMMAND
) strlcat(text
, (char *)"lcommand ", sizeof(data
->rawtext
));
324 if (qual
& IEQUALIFIER_RCOMMAND
) strlcat(text
, (char *)"rcommand ", sizeof(data
->rawtext
));
325 if (qual
& IEQUALIFIER_NUMERICPAD
) strlcat(text
, (char *)"numpad ", sizeof(data
->rawtext
));
328 if (!(key
->kb_KeyTag
& 0x00004000) && (key
->kb_Code
!= (UWORD
)~0))
330 switch (key
->kb_Code
& 0x7F)
332 case 0x40 : strlcat(text
,"space", sizeof(data
->rawtext
)); break;
333 case 0x41 : strlcat(text
,"backspace", sizeof(data
->rawtext
)); break;
334 case 0x42 : strlcat(text
,"tab", sizeof(data
->rawtext
)); break;
335 case 0x43 : strlcat(text
,"enter", sizeof(data
->rawtext
)); break;
336 case 0x44 : strlcat(text
,"return", sizeof(data
->rawtext
)); break;
337 case 0x45 : strlcat(text
,"esc", sizeof(data
->rawtext
)); break;
338 case 0x46 : strlcat(text
,"del", sizeof(data
->rawtext
)); break;
339 case 0x4C : strlcat(text
,"up", sizeof(data
->rawtext
)); break;
340 case 0x4D : strlcat(text
,"down", sizeof(data
->rawtext
)); break;
341 case 0x4E : strlcat(text
,"right", sizeof(data
->rawtext
)); break;
342 case 0x4F : strlcat(text
,"left", sizeof(data
->rawtext
)); break;
343 case 0x50 : strlcat(text
,"f1", sizeof(data
->rawtext
)); break;
344 case 0x51 : strlcat(text
,"f2", sizeof(data
->rawtext
)); break;
345 case 0x52 : strlcat(text
,"f3", sizeof(data
->rawtext
)); break;
346 case 0x53 : strlcat(text
,"f4", sizeof(data
->rawtext
)); break;
347 case 0x54 : strlcat(text
,"f5", sizeof(data
->rawtext
)); break;
348 case 0x55 : strlcat(text
,"f6", sizeof(data
->rawtext
)); break;
349 case 0x56 : strlcat(text
,"f7", sizeof(data
->rawtext
)); break;
350 case 0x57 : strlcat(text
,"f8", sizeof(data
->rawtext
)); break;
351 case 0x58 : strlcat(text
,"f9", sizeof(data
->rawtext
)); break;
352 case 0x59 : strlcat(text
,"f10", sizeof(data
->rawtext
)); break;
353 case 0x5F : strlcat(text
,"help", sizeof(data
->rawtext
)); break;
355 data
->ievent
.ie_NextEvent
= NULL
;
356 data
->ievent
.ie_Class
= IECLASS_RAWKEY
;
357 data
->ievent
.ie_SubClass
= 0;
358 data
->ievent
.ie_Code
= key
->kb_Code
;
359 data
->ievent
.ie_Qualifier
= 0;
360 data
->ievent
.ie_position
.ie_addr
= (APTR
) &data
->ievent
;
361 posraw
= RawKeyConvert(&data
->ievent
, keystr
, sizeof(keystr
), 0L);
365 keystr
[posraw
] = '\0';
366 strlcat(text
, keystr
, sizeof(data
->rawtext
));
372 return ((LONG
)strlen(data
->rawtext
));
376 static LONG
NL_SaveKeys(struct NListviews_MCP_Data
*data
)
379 struct KeyBinding
*key
;
380 get(data
->mcp_listkeys
, MUIA_NList_Entries
, &ne
);
382 data
->nlkeys_size
= ne
*sizeof(struct KeyBinding
);
384 if((data
->nlkeys
= (struct KeyBinding
*) AllocMem(data
->nlkeys_size
+4,0L)))
390 DoMethod(data
->mcp_listkeys
,MUIM_NList_GetEntry
,pos
, &key
);
393 data
->nlkeys
[pos
] = *key
;
394 if (data
->nlkeys
[pos
].kb_KeyTag
& 0x00004000)
395 data
->nlkeys
[pos
].kb_Code
= (UWORD
)~0;
402 data
->nlkeys
[pos
].kb_KeyTag
= 0L;
403 data
->nlkeys
[pos
].kb_Code
= (UWORD
)~0;
404 data
->nlkeys
[pos
].kb_Qualifier
= 0;
406 ne
= ((pos
* sizeof(struct KeyBinding
)) + 3) & 0xFFFFFFFC;
415 static void NL_LoadKeys(Object
*list
,struct KeyBinding
*keys
)
418 set(list
, MUIA_NList_Quiet
, TRUE
);
419 DoMethod(list
,MUIM_NList_Clear
);
420 while (keys
[i
].kb_KeyTag
)
421 { DoMethod(list
,MUIM_NList_InsertSingle
,&keys
[i
], MUIV_NList_Insert_Bottom
);
424 set(list
, MUIA_NList_Quiet
, FALSE
);
428 static void NL_UpdateKeys(Object
*list
,struct KeyBinding
*keys
)
431 LONG pos
,posmax
= -1;
432 struct KeyBinding
*key
;
433 set(list
, MUIA_NList_Quiet
, TRUE
);
434 get(list
,MUIA_NList_Entries
,&posmax
);
435 for (i
= 0; keys
[i
].kb_KeyTag
; i
++)
437 for (pos
= 0; pos
< posmax
; pos
++)
439 DoMethod(list
,MUIM_NList_GetEntry
, pos
, &key
);
440 if (key
&& (key
->kb_KeyTag
== keys
[i
].kb_KeyTag
))
444 LONG k1 = (LONG) key->kb_KeyTag;
445 LONG k2 = (LONG) keys[i].kb_KeyTag;
446 kprintf("%lx|pos=%ld key=%lx kt=%lx (== %lx)\n",list,pos,key,k1,k2);
450 LONG k1 = (LONG) key->kb_KeyTag;
451 LONG k2 = (LONG) keys[i].kb_KeyTag;
452 kprintf("%lx|pos=%ld key=%lx kt=%lx (!= %lx)\n",list,pos,key,k1,k2);
457 DoMethod(list
,MUIM_NList_InsertSingle
,&keys
[i
], MUIV_NList_Insert_Bottom
);
459 set(list
, MUIA_NList_Quiet
, FALSE
);
462 HOOKPROTONH(StrObjFunc
, LONG
, Object
*pop
, Object
*str
)
466 get(str
,MUIA_UserData
,&i
);
468 set(pop
,MUIA_List_Active
,i
);
470 set(pop
,MUIA_List_Active
,MUIV_List_Active_Off
);
473 MakeStaticHook(StrObjHook
, StrObjFunc
);
475 HOOKPROTONH(ObjStrFunc
, VOID
, Object
*pop
, Object
*str
)
478 get(pop
,MUIA_List_Active
,&i
);
481 set(str
,MUIA_UserData
,i
);
482 set(str
,MUIA_Text_Contents
,functions_names
[i
]);
486 set(str
,MUIA_UserData
,i
);
487 set(str
,MUIA_Text_Contents
,"");
490 MakeStaticHook(ObjStrHook
, ObjStrFunc
);
493 HOOKPROTONH(WindowFunc
, VOID
, Object
*pop
, Object
*win
)
495 set(win
,MUIA_Window_DefaultObject
,pop
);
497 MakeStaticHook(WindowHook
, WindowFunc
);
500 HOOKPROTONH(TxtFctFunc
, VOID
, Object
*list
, long *val
)
502 Object
*txtfct
= (Object
*) val
[0];
503 struct KeyBinding
*key
= NULL
;
505 get(txtfct
,MUIA_UserData
,&i
);
506 DoMethod(list
,MUIM_NList_GetEntry
,MUIV_NList_GetEntry_Active
, &key
);
508 { key
->kb_KeyTag
= keytags
[i
];
509 DoMethod(list
,MUIM_NList_Redraw
,MUIV_NList_Redraw_Active
);
510 get(list
,MUIA_NList_Active
,&i
);
511 set(list
,MUIA_NList_Active
,i
);
514 MakeStaticHook(TxtFctHook
, TxtFctFunc
);
516 HOOKPROTONH(AckFunc
, VOID
, Object
*list
, long *val
)
518 Object
*stringkey
= (Object
*) val
[0];
519 struct KeyBinding
*key
= NULL
;
521 get(stringkey
,MUIA_String_Contents
, &ackstr
);
522 DoMethod(list
,MUIM_NList_GetEntry
,MUIV_NList_GetEntry_Active
, &key
);
526 ix
.ix_Version
= IX_VERSION
;
528 key
->kb_Qualifier
= (ix
.ix_Qualifier
& KBQUAL_MASK
) | ((ix
.ix_QualSame
<< 12) & KBSYM_MASK
);
529 key
->kb_Code
= ix
.ix_Code
;
530 DoMethod(list
,MUIM_NList_Redraw
,MUIV_NList_Redraw_Active
);
533 MakeStaticHook(AckHook
, AckFunc
);
535 HOOKPROTONH(ActiveFunc
, VOID
, Object
*list
, long *val
)
537 struct NListviews_MCP_Data
*data
= (struct NListviews_MCP_Data
*) (val
[0]);
538 /* Object *win = NULL;*/
539 ULONG active
= (ULONG
) (val
[1]);
540 struct KeyBinding
*key
= NULL
;
541 if((LONG
)active
>= 0)
543 DoMethod(list
,MUIM_NList_GetEntry
,MUIV_NList_GetEntry_Active
, &key
);
548 while ((keytags
[i
] > 0) && (keytags
[i
] != key
->kb_KeyTag
))
550 if (keytags
[i
] == key
->kb_KeyTag
)
551 { nnset(data
->mcp_stringkey
,MUIA_HotkeyString_Snoop
, FALSE
);
552 nnset(data
->mcp_stringkey
,MUIA_Disabled
, FALSE
);
553 nnset(data
->mcp_snoopkey
,MUIA_Disabled
, FALSE
);
554 nnset(data
->mcp_txtfct
,MUIA_UserData
,i
);
555 nnset(data
->mcp_txtfct
,MUIA_Text_Contents
,functions_names
[i
]);
557 DeadKeyConvert(data
,key
);
558 nnset(data
->mcp_stringkey
,MUIA_String_Contents
, data
->rawtext
);
560 get(list, MUIA_WindowObject, &win);
562 set(win, MUIA_Window_ActiveObject, data->mcp_stringkey);
570 { nnset(data
->mcp_txtfct
,MUIA_UserData
,-1);
571 nnset(data
->mcp_txtfct
,MUIA_Text_Contents
,"");
572 nnset(data
->mcp_stringkey
,MUIA_String_Contents
, "");
573 nnset(data
->mcp_stringkey
,MUIA_Disabled
, TRUE
);
574 nnset(data
->mcp_snoopkey
,MUIA_Disabled
, TRUE
);
577 MakeStaticHook(ActiveHook
, ActiveFunc
);
580 HOOKPROTONHNP(DefaultFunc
, VOID
, Object
*list
)
583 NL_LoadKeys(list
,default_keys
);
585 MakeStaticHook(DefaultHook
, DefaultFunc
);
587 HOOKPROTONHNP(UpdateFunc
, VOID
, Object
*list
)
590 NL_UpdateKeys(list
,default_keys
);
592 MakeStaticHook(UpdateHook
, UpdateFunc
);
594 HOOKPROTONHNP(InsertFunc
, VOID
, Object
*list
)
597 { struct KeyBinding
*key
;
599 DoMethod(list
,MUIM_NList_GetEntry
,MUIV_NList_GetEntry_Active
, &key
);
601 { empty_key
.kb_KeyTag
= keytags
[0];
604 set(list
,MUIA_NList_Quiet
,TRUE
);
605 DoMethod(list
,MUIM_NList_InsertSingle
,key
, MUIV_NList_Insert_Active
);
606 get(list
,MUIA_NList_InsertPosition
,&pos
);
607 set(list
,MUIA_NList_Active
,pos
);
608 set(list
,MUIA_NList_Quiet
,FALSE
);
611 MakeStaticHook(InsertHook
, InsertFunc
);
613 HOOKPROTONH(DisplayFunc
, VOID
, Object
*obj
, struct NList_DisplayMessage
*ndm
)
615 struct KeyBinding
*key
= (struct KeyBinding
*) ndm
->entry
;
616 struct NListviews_MCP_Data
*data
= NULL
;
617 get(obj
,MUIA_UserData
,&data
);
623 ndm
->preparses
[0] = (STRPTR
)"\033r";
625 DeadKeyConvert(data
,key
);
626 ndm
->strings
[0] = data
->rawtext
;
628 ndm
->strings
[1] = (STRPTR
)"\033c=";
631 while ((keytags
[i
] > 0) && (keytags
[i
] != key
->kb_KeyTag
))
633 ndm
->strings
[2] = (STRPTR
)functions_names
[i
];
637 ndm
->preparses
[0] = (STRPTR
)"\033r";
638 ndm
->strings
[0] = (STRPTR
)tr(MSG_HOTKEYS_KEY
);
639 ndm
->strings
[1] = (STRPTR
)"";
640 ndm
->strings
[2] = (STRPTR
)tr(MSG_HOTKEYS_ACTION
);
643 MakeStaticHook(DisplayHook
, DisplayFunc
);
645 HOOKPROTONHNO(ConstructFunc
, APTR
, struct NList_ConstructMessage
*ncm
)
647 struct KeyBinding
*key
= (struct KeyBinding
*) ncm
->entry
;
649 struct KeyBinding
*key2
= (struct KeyBinding
*) AllocMem(sizeof(struct KeyBinding
),0L);
653 return ((APTR
) key2
);
655 MakeStaticHook(ConstructHook
, ConstructFunc
);
657 HOOKPROTONHNO(DestructFunc
, VOID
, struct NList_DestructMessage
*ndm
)
659 struct KeyBinding
*key
= (struct KeyBinding
*) ndm
->entry
;
661 FreeMem((void *) key
,sizeof(struct KeyBinding
));
663 MakeStaticHook(DestructHook
, DestructFunc
);
665 static IPTR
mNL_MCP_New(struct IClass
*cl
,Object
*obj
,struct opSet
*msg
)
667 struct NListviews_MCP_Data
*data
;
668 APTR group1
, group2
, group3
, group4
, group5
;
671 static const char infotext
[] = "\033bNListviews.mcp " LIB_REV_STRING
"\033n (" LIB_DATE
")\n"
672 "Copyright (c) 1996-2001 Gilles Masson\n"
674 "Distributed under the terms of the LGPL2.\n\n"
675 "For the latest version, check out:\n"
676 "http://www.sf.net/projects/nlist-classes/\n\n";
678 if(!(obj
= (Object
*)DoSuperMethodA(cl
, obj
,(Msg
) msg
)))
681 data
= INST_DATA(cl
,obj
);
683 group1
= group2
= group3
= group4
= group5
= NULL
;
685 data
->mcp_group
= NULL
;
686 data
->mcp_list1
= NULL
;
687 data
->mcp_list2
= NULL
;
688 data
->mcp_PenTitle
= NULL
;
689 data
->mcp_PenList
= NULL
;
690 data
->mcp_PenSelect
= NULL
;
691 data
->mcp_PenCursor
= NULL
;
692 data
->mcp_PenUnselCur
= NULL
;
693 data
->mcp_PenInactive
= NULL
;
694 data
->mcp_BG_Title
= NULL
;
695 data
->mcp_BG_List
= NULL
;
696 data
->mcp_BG_Select
= NULL
;
697 data
->mcp_BG_Cursor
= NULL
;
698 data
->mcp_BG_UnselCur
= NULL
;
699 data
->mcp_BG_Inactive
= NULL
;
700 data
->mcp_R_Multi
= NULL
;
701 data
->mcp_B_MultiMMB
= NULL
;
702 data
->mcp_R_Drag
= NULL
;
703 data
->mcp_SL_VertInc
= NULL
;
704 data
->mcp_R_HSB
= NULL
;
705 data
->mcp_R_VSB
= NULL
;
706 data
->mcp_B_Smooth
= NULL
;
707 data
->mcp_Font
= NULL
;
708 data
->mcp_Font_Little
= NULL
;
709 data
->mcp_Font_Fixed
= NULL
;
710 data
->mcp_ForcePen
= NULL
;
711 data
->mcp_ColWidthDrag
= NULL
;
712 data
->mcp_PartialCol
= NULL
;
713 data
->mcp_List_Select
= NULL
;
714 data
->mcp_NList_Menu
= NULL
;
715 data
->mcp_PartialChar
= NULL
;
716 data
->mcp_SerMouseFix
= NULL
;
717 data
->mcp_DragLines
= NULL
;
718 data
->mcp_WheelStep
= NULL
;
719 data
->mcp_WheelFast
= NULL
;
720 data
->mcp_WheelMMB
= NULL
;
721 data
->mcp_listkeys
= NULL
;
722 data
->mcp_stringkey
= NULL
;
723 data
->mcp_snoopkey
= NULL
;
724 data
->mcp_insertkey
= NULL
;
725 data
->mcp_removekey
= NULL
;
726 data
->mcp_defaultkeys
= NULL
;
727 data
->mcp_updatekeys
= NULL
;
728 data
->mcp_txtfct
= NULL
;
729 data
->mcp_popstrfct
= NULL
;
730 data
->mcp_poplistfct
= NULL
;
733 data
->mcp_stringkey
= HotkeyStringObject
,
734 StringFrame
, MUIA_CycleChain
, 1,
735 MUIA_HotkeyString_Snoop
, FALSE
,
739 if(data
->mcp_stringkey
== NULL
)
741 data
->mcp_stringkey
= StringObject
,
742 StringFrame
, MUIA_CycleChain
, 1,
746 // create a duplicate of the translated text
747 if((exampleText
= AllocVec((strlen(tr(MSG_EXAMPLE_TEXT
))+1)*sizeof(char), MEMF_ANY
)) != NULL
)
753 strcpy(exampleText
, tr(MSG_EXAMPLE_TEXT
));
755 // count the number of lines
757 while((p
= strchr(p
, '\n')) != NULL
)
763 // finally split the text into separate lines
764 if((data
->exampleText
= AllocVec((numLines
+2)*sizeof(char *), MEMF_ANY
|MEMF_CLEAR
)) != NULL
)
769 for(line
= 0; line
< numLines
; line
++)
775 data
->exampleText
[line
] = AllocVec((strlen(p
)+1)*sizeof(char), MEMF_ANY
);
776 strcpy(data
->exampleText
[line
], p
);
781 FreeVec(exampleText
);
784 group1
= GroupObject
,
787 GroupFrameT(tr(MSG_GROUP_EXAMPLE
)),
789 Child
, data
->mcp_list1
= NListviewObject
,
791 MUIA_NList_Title
,"\033cNList / NListview",
792 MUIA_NList_TitleSeparator
, TRUE
,
793 MUIA_NListview_Vert_ScrollBar
, MUIV_NListview_VSB_Default
,
794 MUIA_NListview_Horiz_ScrollBar
, MUIV_NListview_HSB_Default
,
795 MUIA_NList_DefaultObjectOnClick
, TRUE
,
796 MUIA_NList_SourceArray
, data
->exampleText
/*MainTextArray*/,
801 GroupFrameT(tr(MSG_FONTS
)),
803 MUIA_Group_Columns
, 2,
805 MUIA_Weight
,(ULONG
)30,
806 Child
, Label(tr(MSG_NORMAL_FONT
)),
807 Child
, data
->mcp_Font
= PopaslObject
,
808 MUIA_Popstring_String
, String2(0,80),
809 MUIA_Popstring_Button
, PopButton(MUII_PopUp
),
810 MUIA_Popasl_Type
, ASL_FontRequest
,
811 MUIA_ShortHelp
, tr(MSG_NORMAL_FONT_HELP
),
812 ASLFO_TitleText
, tr(MSG_NORMAL_FONT_ASL
),
815 Child
, Label(tr(MSG_SMALL_FONT
)),
816 Child
, data
->mcp_Font_Little
= PopaslObject
,
817 MUIA_Popstring_String
, String2(0,80),
818 MUIA_Popstring_Button
, PopButton(MUII_PopUp
),
819 MUIA_Popasl_Type
, ASL_FontRequest
,
820 MUIA_ShortHelp
, tr(MSG_SMALL_FONT_HELP
),
821 ASLFO_TitleText
, tr(MSG_SMALL_FONT_ASL
),
824 Child
, Label(tr(MSG_FIXED_FONT
)),
825 Child
, data
->mcp_Font_Fixed
= PopaslObject
,
826 MUIA_Popstring_String
, String2(0,80),
827 MUIA_Popstring_Button
, PopButton(MUII_PopUp
),
828 MUIA_Popasl_Type
, ASL_FontRequest
,
829 MUIA_ShortHelp
, tr(MSG_FIXED_FONT_HELP
),
830 ASLFO_TitleText
, tr(MSG_FIXED_FONT_ASL
),
831 ASLFO_FixedWidthOnly
, TRUE
,
834 Child
, Label(tr(MSG_FONT_MARGIN
)),
835 Child
, data
->mcp_SL_VertInc
= SliderObject
,
839 MUIA_Numeric_Value
, 1,
840 MUIA_ShortHelp
, tr(MSG_FONT_MARGIN_HELP
),
848 GroupFrameT(tr(MSG_COLORS
)),
851 MUIA_Group_Columns
, 3,
853 Child
, RectangleObject
,
855 MUIA_Rectangle_HBar
, TRUE
,
856 MUIA_Rectangle_BarTitle
, tr(MSG_TEXTCOLOR
),
859 Child
, RectangleObject
,
861 MUIA_Rectangle_HBar
, TRUE
,
862 MUIA_Rectangle_BarTitle
, tr(MSG_BACKGROUNDCOLOR
),
865 Child
, data
->mcp_PenTitle
= PoppenObject
,
867 MUIA_Window_Title
, tr(MSG_TITLE_PEN_WIN
),
868 MUIA_Draggable
, TRUE
,
869 MUIA_ShortHelp
, tr(MSG_TITLE_PEN_HELP
),
871 Child
, VCenter(Label(tr(MSG_PBG_TITLE
))),
872 Child
, data
->mcp_BG_Title
= PopimageObject
,
874 MUIA_Imageadjust_Type
, MUIV_Imageadjust_Type_Background
,
875 MUIA_Window_Title
, tr(MSG_TITLE_BG_WIN
),
876 MUIA_Draggable
, TRUE
,
877 MUIA_ShortHelp
, tr(MSG_TITLE_BG_HELP
),
880 Child
, data
->mcp_PenList
= PoppenObject
,
882 MUIA_Window_Title
, tr(MSG_LIST_PEN_WIN
),
883 MUIA_Draggable
, TRUE
,
884 MUIA_ShortHelp
, tr(MSG_LIST_PEN_HELP
),
886 Child
, VCenter(Label(tr(MSG_PBG_LIST
))),
887 Child
, data
->mcp_BG_List
= PopimageObject
,
889 MUIA_Imageadjust_Type
, MUIV_Imageadjust_Type_Background
,
890 MUIA_Window_Title
, tr(MSG_LIST_BG_WIN
),
891 MUIA_Draggable
, TRUE
,
892 MUIA_ShortHelp
, tr(MSG_LIST_BG_HELP
),
895 Child
, data
->mcp_PenSelect
= PoppenObject
,
897 MUIA_Window_Title
, tr(MSG_SELECT_PEN_WIN
),
898 MUIA_Draggable
, TRUE
,
899 MUIA_ShortHelp
, tr(MSG_SELECT_PEN_HELP
),
901 Child
, VCenter(Label(tr(MSG_PBG_SELECT
))),
902 Child
, data
->mcp_BG_Select
= PopimageObject
,
904 MUIA_Imageadjust_Type
, MUIV_Imageadjust_Type_Background
,
905 MUIA_Window_Title
, tr(MSG_SELECT_BG_WIN
),
906 MUIA_Draggable
, TRUE
,
907 MUIA_ShortHelp
, tr(MSG_SELECT_BG_HELP
),
910 Child
, data
->mcp_PenCursor
= PoppenObject
,
912 MUIA_Window_Title
, tr(MSG_CURSOR_PEN_WIN
),
913 MUIA_Draggable
, TRUE
,
914 MUIA_ShortHelp
, tr(MSG_CURSOR_PEN_HELP
),
916 Child
, VCenter(Label(tr(MSG_PBG_CURSOR
))),
917 Child
, data
->mcp_BG_Cursor
= PopimageObject
,
919 MUIA_Imageadjust_Type
, MUIV_Imageadjust_Type_Background
,
920 MUIA_Window_Title
, tr(MSG_CURSOR_BG_WIN
),
921 MUIA_Draggable
, TRUE
,
922 MUIA_ShortHelp
, tr(MSG_CURSOR_BG_HELP
),
925 Child
, data
->mcp_PenUnselCur
= PoppenObject
,
927 MUIA_Window_Title
, tr(MSG_UNSEL_PEN_WIN
),
928 MUIA_Draggable
, TRUE
,
929 MUIA_ShortHelp
, tr(MSG_UNSEL_PEN_HELP
),
931 Child
, VCenter(Label(tr(MSG_PBG_UNSEL
))),
932 Child
, data
->mcp_BG_UnselCur
= PopimageObject
,
934 MUIA_Imageadjust_Type
, MUIV_Imageadjust_Type_Background
,
935 MUIA_Window_Title
, tr(MSG_UNSEL_BG_WIN
),
936 MUIA_Draggable
, TRUE
,
937 MUIA_ShortHelp
, tr(MSG_UNSEL_BG_HELP
),
940 Child
, data
->mcp_PenInactive
= PoppenObject
,
942 MUIA_Window_Title
, tr(MSG_INACT_PEN_WIN
),
943 MUIA_Draggable
, TRUE
,
944 MUIA_ShortHelp
, tr(MSG_INACT_PEN_HELP
),
946 Child
, VCenter(Label(tr(MSG_PBG_INACT
))),
947 Child
, data
->mcp_BG_Inactive
= PopimageObject
,
949 MUIA_Imageadjust_Type
, MUIV_Imageadjust_Type_Background
,
950 MUIA_Window_Title
, tr(MSG_INACT_BG_WIN
),
951 MUIA_Draggable
, TRUE
,
952 MUIA_ShortHelp
, tr(MSG_INACT_BG_HELP
),
958 GroupFrameT(tr(MSG_COLOR_OPTIONS
)),
964 Child
, data
->mcp_ForcePen
= ImageObject
,
966 MUIA_InputMode
, MUIV_InputMode_Toggle
,
967 MUIA_Image_Spec
, MUII_CheckMark
,
968 MUIA_Image_FreeVert
, TRUE
,
969 MUIA_Background
, MUII_ButtonBack
,
970 MUIA_ShowSelState
, FALSE
,
972 Child
, Label(tr(MSG_FORCE_SELECT_PEN
)),
973 MUIA_ShortHelp
, tr(MSG_FORCE_SELECT_PEN_HELP
),
980 RS_VSB
[0] = tr(MSG_VSB_ALWAYS
);
981 RS_VSB
[1] = tr(MSG_VSB_AUTO
);
982 RS_VSB
[2] = tr(MSG_VSB_FULLAUTO
);
985 RS_HSB
[0] = tr(MSG_HSB_ALWAYS
);
986 RS_HSB
[1] = tr(MSG_HSB_AUTO
);
987 RS_HSB
[2] = tr(MSG_HSB_FULLAUTO
);
988 RS_HSB
[3] = tr(MSG_HSB_NONE
);
995 GroupFrameT(tr(MSG_SB_HORIZONTAL
)),
999 Child
, data
->mcp_R_HSB
= RadioObject
,
1000 MUIA_Radio_Entries
, RS_HSB
,
1002 MUIA_ShortHelp
, tr(MSG_SB_HORIZONTAL_HELP
),
1009 GroupFrameT(tr(MSG_SB_VERTICAL
)),
1013 Child
, data
->mcp_R_VSB
= RadioObject
,
1014 MUIA_Radio_Entries
,RS_VSB
,
1016 MUIA_ShortHelp
, tr(MSG_SB_VERTICAL_HELP
),
1025 GroupFrameT(tr(MSG_SCROLLCONTROL
)),
1031 Child
, data
->mcp_B_Smooth
= ImageObject
,
1033 MUIA_InputMode
, MUIV_InputMode_Toggle
,
1034 MUIA_Image_Spec
, MUII_CheckMark
,
1035 MUIA_Image_FreeVert
, TRUE
,
1036 MUIA_Background
, MUII_ButtonBack
,
1037 MUIA_ShowSelState
, FALSE
,
1039 Child
, Label(tr(MSG_SMOOTH_SCROLLING
)),
1040 MUIA_ShortHelp
, tr(MSG_SMOOTH_SCROLLING_HELP
),
1046 Child
, data
->mcp_WheelMMB
= ImageObject
,
1048 MUIA_InputMode
, MUIV_InputMode_Toggle
,
1049 MUIA_Image_Spec
, MUII_CheckMark
,
1050 MUIA_Image_FreeVert
, TRUE
,
1051 MUIA_Background
, MUII_ButtonBack
,
1052 MUIA_ShowSelState
, FALSE
,
1054 Child
, Label(tr(MSG_MMB_FASTWHEEL
)),
1055 MUIA_ShortHelp
, tr(MSG_MMB_FASTWHEEL_HELP
),
1059 Child
, Label(tr(MSG_WHEEL_STEP
)),
1060 Child
, data
->mcp_WheelStep
= SliderObject
,
1062 MUIA_Numeric_Min
, 1,
1063 MUIA_Numeric_Max
, 10,
1064 MUIA_Numeric_Value
, DEFAULT_WHEELSTEP
,
1065 MUIA_ShortHelp
, tr(MSG_WHEEL_STEP_HELP
),
1068 Child
, Label(tr(MSG_WHEEL_FAST
)),
1069 Child
, data
->mcp_WheelFast
= SliderObject
,
1071 MUIA_Numeric_Min
, 1,
1072 MUIA_Numeric_Max
, 10,
1073 MUIA_Numeric_Value
, DEFAULT_WHEELFAST
,
1074 MUIA_ShortHelp
, tr(MSG_WHEEL_FAST_HELP
),
1085 RS_MultiSelects
[0] = tr(MSG_MULTISELECT_QUAL
);
1086 RS_MultiSelects
[1] = tr(MSG_MULTISELECT_ALWAYS
);
1087 RS_MultiSelects
[2] = NULL
;
1089 RS_DragTypes
[0] = tr(MSG_DRAGTYPE_IMMEDIATE
);
1090 RS_DragTypes
[1] = tr(MSG_DRAGTYPE_BORDERS
);
1091 RS_DragTypes
[2] = tr(MSG_DRAGTYPE_QUALIFIER
);
1092 RS_DragTypes
[3] = NULL
;
1094 RS_ColWidthDrag
[0] = tr(MSG_COLWIDTHDRAG_TITLE
);
1095 RS_ColWidthDrag
[1] = tr(MSG_COLWIDTHDRAG_FULLBAR
);
1096 RS_ColWidthDrag
[2] = tr(MSG_COLWIDTHDRAG_VISIBLE
);
1097 RS_ColWidthDrag
[3] = NULL
;
1099 RS_Menu
[0] = tr(MSG_CMENU_ALWAYS
);
1100 RS_Menu
[1] = tr(MSG_CMENU_TOPONLY
);
1101 RS_Menu
[2] = tr(MSG_CMENU_NEVER
);
1109 GroupFrameT(tr(MSG_MULTISELECT
)),
1116 Child
, data
->mcp_R_Multi
= RadioObject
,
1117 MUIA_Radio_Entries
, RS_MultiSelects
,
1118 MUIA_ShortHelp
, tr(MSG_MULTISELECT_HELP
),
1123 Child
, RectangleObject
,
1125 MUIA_Rectangle_HBar
, TRUE
,
1129 Child
, data
->mcp_List_Select
= ImageObject
,
1131 MUIA_InputMode
, MUIV_InputMode_Toggle
,
1132 MUIA_Image_Spec
, MUII_CheckMark
,
1133 MUIA_Image_FreeVert
, TRUE
,
1134 MUIA_Background
, MUII_ButtonBack
,
1135 MUIA_ShowSelState
, FALSE
,
1136 MUIA_Selected
, TRUE
,
1138 Child
, Label(tr(MSG_MULTISEL_MOVEACTIVE
)),
1139 MUIA_ShortHelp
, tr(MSG_MULTISEL_MOVEACTIVE_HELP
),
1144 Child
, data
->mcp_B_MultiMMB
= ImageObject
,
1146 MUIA_InputMode
, MUIV_InputMode_Toggle
,
1147 MUIA_Image_Spec
, MUII_CheckMark
,
1148 MUIA_Background
, MUII_ButtonBack
,
1149 MUIA_ShowSelState
, FALSE
,
1150 MUIA_Image_FreeVert
,TRUE
,
1152 Child
, Label(tr(MSG_MMB_MULTISEL
)),
1153 MUIA_ShortHelp
, tr(MSG_MMB_MULTISEL_HELP
),
1163 GroupFrameT(tr(MSG_LAYOUT
)),
1168 Child
, data
->mcp_PartialCol
= ImageObject
,
1170 MUIA_InputMode
, MUIV_InputMode_Toggle
,
1171 MUIA_Image_Spec
, MUII_CheckMark
,
1172 MUIA_Image_FreeVert
, TRUE
,
1173 MUIA_Background
, MUII_ButtonBack
,
1174 MUIA_ShowSelState
, FALSE
,
1175 MUIA_Selected
, TRUE
,
1177 Child
, Label(tr(MSG_PARTIAL_COL_MARK
)),
1178 MUIA_ShortHelp
, tr(MSG_PARTIAL_COL_MARK_HELP
),
1183 Child
, data
->mcp_PartialChar
= ImageObject
,
1185 MUIA_InputMode
, MUIV_InputMode_Toggle
,
1186 MUIA_Image_Spec
, MUII_CheckMark
,
1187 MUIA_Image_FreeVert
, TRUE
,
1188 MUIA_Background
, MUII_ButtonBack
,
1189 MUIA_ShowSelState
, FALSE
,
1190 MUIA_Selected
, FALSE
,
1192 Child
, Label(tr(MSG_PARTIAL_CHARS_DRAWN
)),
1193 MUIA_ShortHelp
, tr(MSG_PARTIAL_CHARS_DRAWN_HELP
),
1198 Child
, data
->mcp_VerticalCenteredLines
= ImageObject
,
1200 MUIA_InputMode
, MUIV_InputMode_Toggle
,
1201 MUIA_Image_Spec
, MUII_CheckMark
,
1202 MUIA_Image_FreeVert
, TRUE
,
1203 MUIA_Background
, MUII_ButtonBack
,
1204 MUIA_ShowSelState
, FALSE
,
1205 MUIA_Selected
, FALSE
,
1207 Child
, Label(tr(MSG_VERT_CENTERED
)),
1208 MUIA_ShortHelp
, tr(MSG_VERT_CENTERED_HELP
),
1222 GroupFrameT(tr(MSG_DRAGDROP
)),
1229 Child
, data
->mcp_R_Drag
= RadioObject
,
1230 MUIA_Radio_Entries
, RS_DragTypes
,
1231 MUIA_ShortHelp
, tr(MSG_DRAGTYPE_HELP
),
1236 Child
, RectangleObject
,
1238 MUIA_Rectangle_HBar
, TRUE
,
1243 Child
, Label(tr(MSG_DRAG_LINES
)),
1244 Child
, data
->mcp_DragLines
= SliderObject
,
1245 MUIA_ShortHelp
, tr(MSG_DRAG_LINES_HELP
),
1247 MUIA_Numeric_Min
, 0,
1248 MUIA_Numeric_Max
, 20,
1249 MUIA_Numeric_Value
, DEFAULT_DRAGLINES
,
1254 Child
, data
->mcp_SerMouseFix
= ImageObject
,
1256 MUIA_InputMode
, MUIV_InputMode_Toggle
,
1257 MUIA_Image_Spec
, MUII_CheckMark
,
1258 MUIA_Image_FreeVert
, TRUE
,
1259 MUIA_Background
, MUII_ButtonBack
,
1260 MUIA_ShowSelState
, FALSE
,
1262 Child
, Label(tr(MSG_SERMOUSE_FIX
)),
1263 MUIA_ShortHelp
, tr(MSG_SERMOUSE_FIX_HELP
),
1274 GroupFrameT(tr(MSG_BALANCING_COLS
)),
1278 Child
, data
->mcp_ColWidthDrag
= RadioObject
,
1279 MUIA_Radio_Entries
, RS_ColWidthDrag
,
1281 MUIA_ShortHelp
, tr(MSG_BALANCING_COLS_HELP
),
1291 GroupFrameT(tr(MSG_GROUP_MISC
)),
1292 MUIA_VertWeight
, 10,
1301 Child
, data
->mcp_SelectPointer
= ImageObject
,
1303 MUIA_InputMode
, MUIV_InputMode_Toggle
,
1304 MUIA_Image_Spec
, MUII_CheckMark
,
1305 MUIA_Image_FreeVert
, TRUE
,
1306 MUIA_Background
, MUII_ButtonBack
,
1307 MUIA_ShowSelState
, FALSE
,
1309 Child
, Label(tr(MSG_SELECT_POINTER
)),
1310 MUIA_ShortHelp
, tr(MSG_SELECT_POINTER_HELP
),
1319 Child
, RectangleObject
,
1321 MUIA_Rectangle_HBar
, TRUE
,
1322 MUIA_Rectangle_BarTitle
, tr(MSG_BAR_CONTEXTMENU
),
1324 Child
, data
->mcp_NList_Menu
= RadioObject
,
1325 MUIA_Radio_Entries
,RS_Menu
,
1326 MUIA_ShortHelp
, tr(MSG_DEFAULT_CONTEXT_MENU_HELP
),
1339 functions_names
[0] = tr(MSG_FUNC_MULTISELQUAL
);
1340 functions_names
[1] = tr(MSG_FUNC_DRAGQUAL
);
1341 functions_names
[2] = tr(MSG_FUNC_BALANCEQUAL
);
1342 functions_names
[3] = tr(MSG_FUNC_COPYCLIP
);
1343 functions_names
[4] = tr(MSG_FUNC_DEFCOLWIDTH
);
1344 functions_names
[5] = tr(MSG_FUNC_DEFALLCOLWIDTH
);
1345 functions_names
[6] = tr(MSG_FUNC_DEFORDERCOL
);
1346 functions_names
[7] = tr(MSG_FUNC_DEFALLORDERCOL
);
1347 functions_names
[8] = tr(MSG_FUNC_SELECTTOP
);
1348 functions_names
[9] = tr(MSG_FUNC_SELECTBOTTOM
);
1349 functions_names
[10]= tr(MSG_FUNC_SELECTPAGEUP
);
1350 functions_names
[11]= tr(MSG_FUNC_SELECTPAGEDOWN
);
1351 functions_names
[12]= tr(MSG_FUNC_SELECTUP
);
1352 functions_names
[13]= tr(MSG_FUNC_SELECTDOWN
);
1353 functions_names
[14]= tr(MSG_FUNC_TOGGLEACTIVE
);
1354 functions_names
[15]= tr(MSG_FUNC_FASTWHEELQUAL
);
1355 functions_names
[16]= tr(MSG_FUNC_HORIZWHEELQUAL
);
1356 functions_names
[17]= tr(MSG_FUNC_TITLECLICKQUAL
);
1357 functions_names
[18]= "";
1358 functions_names
[19]= NULL
;
1360 group5
= GroupObject
,
1361 Child
, NListviewObject
,
1363 MUIA_NListview_Vert_ScrollBar
, MUIV_NListview_VSB_Always
,
1364 MUIA_NListview_Horiz_ScrollBar
, MUIV_NListview_HSB_None
,
1365 MUIA_NListview_NList
, data
->mcp_listkeys
= NListObject
,
1366 MUIA_NList_Title
,TRUE
,
1367 MUIA_NList_DragSortable
, TRUE
,
1368 MUIA_NList_Format
, "W=100 NOBAR,NOBAR,W=100 NOBAR",
1369 MUIA_NList_DisplayHook2
, &DisplayHook
,
1370 MUIA_NList_ConstructHook2
, &ConstructHook
,
1371 MUIA_NList_DestructHook2
, &DestructHook
,
1372 MUIA_NList_MinColSortable
, 10,
1376 Child
, GroupObject
,MUIA_Group_Horiz
,TRUE
,
1378 Child
, GroupObject
,MUIA_Group_Horiz
,TRUE
,
1379 Child
, data
->mcp_stringkey
,
1380 Child
, data
->mcp_snoopkey
= ToggleButtonCycle(tr(MSG_SNOOP
), FALSE
, TRUE
, tr(MSG_SNOOP_KEY
)),
1383 Child
, BalanceObject
, End
,
1385 Child
, GroupObject
,MUIA_Group_Horiz
,TRUE
,
1386 Child
, TextObject
, MUIA_Text_Contents
, "=", MUIA_Text_SetMax
, TRUE
, End
,
1387 Child
, data
->mcp_popstrfct
= PopobjectObject
,
1388 MUIA_InputMode
, MUIV_InputMode_None
,
1389 MUIA_Popstring_String
, data
->mcp_txtfct
= TextObject
,
1391 MUIA_Background
, MUII_TextBack
,
1392 MUIA_Text_Contents
, " ",
1395 MUIA_Popstring_Button
, PopButton(MUII_PopUp
),
1396 MUIA_Popobject_StrObjHook
, &StrObjHook
,
1397 MUIA_Popobject_ObjStrHook
, &ObjStrHook
,
1398 MUIA_Popobject_WindowHook
, &WindowHook
,
1399 MUIA_Popobject_Object
, data
->mcp_poplistfct
= ListviewObject
,
1400 MUIA_Listview_List
, ListObject
,
1402 MUIA_List_SourceArray
, functions_names
,
1410 Child
, GroupObject
,MUIA_Group_Horiz
,TRUE
,
1411 Child
, data
->mcp_insertkey
= SimpleButtonCycle(tr(MSG_BUTTON_INSERT
), tr(MSG_BUTTON_INSERT_HELP
)),
1412 Child
, data
->mcp_removekey
= SimpleButtonCycle(tr(MSG_BUTTON_REMOVE
), tr(MSG_BUTTON_REMOVE_HELP
)),
1413 Child
, data
->mcp_updatekeys
= SimpleButtonCycle(tr(MSG_BUTTON_UPDATEKEYS
), tr(MSG_BUTTON_UPDATEKEYS_HELP
)),
1414 Child
, data
->mcp_defaultkeys
= SimpleButtonCycle(tr(MSG_BUTTON_DEFAULTKEYS
), tr(MSG_BUTTON_DEFAULTKEYS_HELP
)),
1419 Pages
[0] = tr(MSG_PAGE_FONTS
);
1420 Pages
[1] = tr(MSG_PAGE_COLORS
);
1421 Pages
[2] = tr(MSG_PAGE_SCROLLING
);
1422 Pages
[3] = tr(MSG_PAGE_OPTIONS
);
1423 Pages
[4] = tr(MSG_PAGE_KEYBINDINGS
);
1425 data
->mcp_group
= VGroup
,
1427 Child
, RegisterObject
,
1428 MUIA_Register_Titles
, Pages
,
1429 MUIA_Register_Frame
, TRUE
,
1437 Child
, CrawlingObject
,
1439 MUIA_FixHeightTxt
, "\n\n",
1440 MUIA_Background
, "m1",
1443 MUIA_Text_PreParse
, "\033c",
1444 MUIA_Text_Contents
, infotext
,
1448 MUIA_Text_PreParse
, "\033c",
1449 MUIA_Text_Contents
, infotext
,
1455 if(!data
->mcp_group
)
1457 CoerceMethod(cl
, obj
, OM_DISPOSE
);
1461 DoMethod(obj
, OM_ADDMEMBER
, data
->mcp_group
);
1463 set(data
->mcp_stringkey
,MUIA_String_AttachedList
,data
->mcp_listkeys
);
1464 set(data
->mcp_listkeys
,MUIA_UserData
,data
);
1466 DoMethod(data
->mcp_listkeys
,MUIM_Notify
,MUIA_NList_Active
, MUIV_EveryTime
,
1467 data
->mcp_listkeys
, 3, MUIM_CallHook
, &ActiveHook
,data
,MUIV_TriggerValue
);
1469 DoMethod(data
->mcp_listkeys
,MUIM_Notify
,MUIA_NList_DoubleClick
, MUIV_EveryTime
,
1470 MUIV_Notify_Window
, 3, MUIM_Set
, MUIA_Window_ActiveObject
, data
->mcp_stringkey
);
1472 DoMethod(data
->mcp_poplistfct
,MUIM_Notify
,MUIA_Listview_DoubleClick
,TRUE
,
1473 data
->mcp_popstrfct
,2,MUIM_Popstring_Close
,TRUE
);
1475 DoMethod(data
->mcp_txtfct
, MUIM_Notify
, MUIA_Text_Contents
, MUIV_EveryTime
,
1476 data
->mcp_listkeys
, 3, MUIM_CallHook
, &TxtFctHook
,data
->mcp_txtfct
);
1478 DoMethod(data
->mcp_snoopkey
, MUIM_Notify
, MUIA_Selected
, TRUE
,
1479 MUIV_Notify_Window
, 3, MUIM_Set
, MUIA_Window_ActiveObject
, data
->mcp_stringkey
);
1481 DoMethod(data
->mcp_snoopkey
, MUIM_Notify
, MUIA_Selected
, MUIV_EveryTime
,
1482 data
->mcp_stringkey
, 3, MUIM_Set
, MUIA_HotkeyString_Snoop
, MUIV_TriggerValue
);
1484 DoMethod(data
->mcp_stringkey
, MUIM_Notify
, MUIA_String_Contents
, MUIV_EveryTime
,
1485 data
->mcp_snoopkey
, 3, MUIM_Set
, MUIA_Selected
, FALSE
);
1487 DoMethod(data
->mcp_stringkey
, MUIM_Notify
, MUIA_String_Acknowledge
, MUIV_EveryTime
,
1488 data
->mcp_listkeys
, 3, MUIM_CallHook
, &AckHook
,data
->mcp_stringkey
);
1490 DoMethod(data
->mcp_insertkey
,MUIM_Notify
, MUIA_Pressed
, FALSE
,
1491 data
->mcp_listkeys
, 3, MUIM_CallHook
, &InsertHook
);
1493 DoMethod(data
->mcp_removekey
,MUIM_Notify
, MUIA_Pressed
, FALSE
,
1494 data
->mcp_listkeys
, 2,MUIM_NList_Remove
,MUIV_NList_Remove_Active
);
1496 DoMethod(data
->mcp_defaultkeys
,MUIM_Notify
, MUIA_Pressed
, FALSE
,
1497 data
->mcp_listkeys
, 3, MUIM_CallHook
, &DefaultHook
);
1499 DoMethod(data
->mcp_updatekeys
,MUIM_Notify
, MUIA_Pressed
, FALSE
,
1500 data
->mcp_listkeys
, 3, MUIM_CallHook
, &UpdateHook
);
1502 // in case we are running for a newer MUI version we can register
1503 // our mcc gadgets accordingly
1504 if(MUIMasterBase
->lib_Version
>= 20)
1506 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_PenTitle
, MUICFG_NList_Pen_Title
, 1, tr(MSG_TITLE_PEN_WIN
));
1507 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_PenList
, MUICFG_NList_Pen_List
, 1, tr(MSG_LIST_PEN_WIN
));
1508 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_PenSelect
, MUICFG_NList_Pen_Select
, 1, tr(MSG_SELECT_PEN_WIN
));
1509 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_PenCursor
, MUICFG_NList_Pen_Cursor
, 1, tr(MSG_CURSOR_PEN_WIN
));
1510 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_PenUnselCur
, MUICFG_NList_Pen_UnselCur
, 1, tr(MSG_UNSEL_PEN_WIN
));
1511 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_PenInactive
, MUICFG_NList_Pen_Inactive
, 1, tr(MSG_INACT_PEN_WIN
));
1513 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_BG_Title
, MUICFG_NList_BG_Title
, 1, tr(MSG_TITLE_BG_WIN
));
1514 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_BG_List
, MUICFG_NList_BG_List
, 1, tr(MSG_LIST_BG_WIN
));
1515 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_BG_Select
, MUICFG_NList_BG_Select
, 1, tr(MSG_SELECT_BG_WIN
));
1516 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_BG_Cursor
, MUICFG_NList_BG_Cursor
, 1, tr(MSG_CURSOR_BG_WIN
));
1517 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_BG_UnselCur
, MUICFG_NList_BG_UnselCur
, 1, tr(MSG_UNSEL_BG_WIN
));
1518 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_BG_Inactive
, MUICFG_NList_BG_Inactive
, 1, tr(MSG_INACT_BG_WIN
));
1520 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_Font
, MUICFG_NList_Font
, 1, tr(MSG_NORMAL_FONT
));
1521 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_Font_Little
, MUICFG_NList_Font_Little
, 1, tr(MSG_SMALL_FONT
));
1522 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_Font_Fixed
, MUICFG_NList_Font_Fixed
, 1, tr(MSG_FIXED_FONT
));
1524 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_SL_VertInc
, MUICFG_NList_VertInc
, 1, tr(MSG_FONT_MARGIN
));
1525 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_R_Drag
, MUICFG_NList_DragType
, 1, tr(MSG_DRAGDROP
));
1527 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_R_Multi
, MUICFG_NList_MultiSelect
, 1, tr(MSG_MULTISELECT
));
1529 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_R_VSB
, MUICFG_NListview_VSB
, 1, tr(MSG_SB_VERTICAL
));
1530 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_R_HSB
, MUICFG_NListview_HSB
, 1, tr(MSG_SB_HORIZONTAL
));
1532 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_B_Smooth
, MUICFG_NList_Smooth
, 1, tr(MSG_SMOOTH_SCROLLING
));
1533 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_ForcePen
, MUICFG_NList_ForcePen
, 1, tr(MSG_FORCE_SELECT_PEN
));
1534 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_ColWidthDrag
, MUICFG_NList_ColWidthDrag
, 1, tr(MSG_BALANCING_COLS
));
1535 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_PartialCol
, MUICFG_NList_PartialCol
, 1, tr(MSG_PARTIAL_COL_MARK
));
1536 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_List_Select
, MUICFG_NList_List_Select
, 1, tr(MSG_MULTISEL_MOVEACTIVE
));
1537 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_NList_Menu
, MUICFG_NList_Menu
, 1, tr(MSG_BAR_CONTEXTMENU
));
1538 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_PartialChar
, MUICFG_NList_PartialChar
, 1, tr(MSG_PARTIAL_CHARS_DRAWN
));
1540 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_SerMouseFix
, MUICFG_NList_SerMouseFix
, 1, tr(MSG_SERMOUSE_FIX
));
1541 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_listkeys
, MUICFG_NList_Keys
, 1, tr(MSG_PAGE_KEYBINDINGS
));
1542 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_DragLines
, MUICFG_NList_DragLines
, 1, tr(MSG_DRAG_LINES
));
1543 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_VerticalCenteredLines
, MUICFG_NList_VCenteredLines
, 1, tr(MSG_VERT_CENTERED
));
1544 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_SelectPointer
,MUICFG_NList_SelectPointer
, 1, tr(MSG_SELECT_POINTER
));
1546 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_WheelStep
, MUICFG_NList_WheelStep
, 1, tr(MSG_WHEEL_STEP
));
1547 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_WheelFast
, MUICFG_NList_WheelFast
, 1, tr(MSG_WHEEL_FAST
));
1548 DoMethod(obj
, MUIM_Mccprefs_RegisterGadget
, data
->mcp_WheelMMB
, MUICFG_NList_WheelMMB
, 1, tr(MSG_MMB_FASTWHEEL
));
1554 static IPTR
mNL_MCP_Dispose(struct IClass
*cl
, Object
*obj
, Msg msg
)
1556 struct NListviews_MCP_Data
*data
= INST_DATA(cl
, obj
);
1558 if(data
->exampleText
!= NULL
)
1562 while(data
->exampleText
[i
] != NULL
)
1564 FreeVec(data
->exampleText
[i
]);
1568 FreeVec(data
->exampleText
);
1571 return DoSuperMethodA(cl
, obj
, msg
);
1574 IPTR
mNL_MCP_ConfigToGadgets(struct IClass
*cl
,Object
*obj
,struct MUIP_Settingsgroup_ConfigToGadgets
*msg
)
1576 struct NListviews_MCP_Data
*data
= INST_DATA(cl
, obj
);
1578 D(DBF_STARTUP
, "configToGadgets");
1580 LOAD_DATASPEC(data
->mcp_PenTitle
, MUIA_Pendisplay_Spec
, MUICFG_NList_Pen_Title
, DEFAULT_PEN_TITLE
);
1581 LOAD_DATASPEC(data
->mcp_PenList
, MUIA_Pendisplay_Spec
, MUICFG_NList_Pen_List
, DEFAULT_PEN_LIST
);
1582 LOAD_DATASPEC(data
->mcp_PenSelect
, MUIA_Pendisplay_Spec
, MUICFG_NList_Pen_Select
, DEFAULT_PEN_SELECT
);
1583 LOAD_DATASPEC(data
->mcp_PenCursor
, MUIA_Pendisplay_Spec
, MUICFG_NList_Pen_Cursor
, DEFAULT_PEN_CURSOR
);
1584 LOAD_DATASPEC(data
->mcp_PenUnselCur
,MUIA_Pendisplay_Spec
, MUICFG_NList_Pen_UnselCur
,DEFAULT_PEN_UNSELCUR
);
1585 LOAD_DATASPEC(data
->mcp_PenInactive
,MUIA_Pendisplay_Spec
, MUICFG_NList_Pen_Inactive
,DEFAULT_PEN_INACTIVE
);
1587 LOAD_DATASPEC(data
->mcp_BG_Title
, MUIA_Imagedisplay_Spec
,MUICFG_NList_BG_Title
, DEFAULT_BG_TITLE
);
1588 LOAD_DATASPEC(data
->mcp_BG_List
, MUIA_Imagedisplay_Spec
,MUICFG_NList_BG_List
, DEFAULT_BG_LIST
);
1589 LOAD_DATASPEC(data
->mcp_BG_Select
, MUIA_Imagedisplay_Spec
,MUICFG_NList_BG_Select
, DEFAULT_BG_SELECT
);
1590 LOAD_DATASPEC(data
->mcp_BG_Cursor
, MUIA_Imagedisplay_Spec
,MUICFG_NList_BG_Cursor
, DEFAULT_BG_CURSOR
);
1591 LOAD_DATASPEC(data
->mcp_BG_UnselCur
,MUIA_Imagedisplay_Spec
,MUICFG_NList_BG_UnselCur
, DEFAULT_BG_UNSELCUR
);
1592 LOAD_DATASPEC(data
->mcp_BG_Inactive
,MUIA_Imagedisplay_Spec
,MUICFG_NList_BG_Inactive
, DEFAULT_BG_INACTIVE
);
1594 LOAD_DATALONG(data
->mcp_SL_VertInc
, MUIA_Numeric_Value
, MUICFG_NList_VertInc
, DEFAULT_VERT_INC
);
1596 LOAD_DATALONG(data
->mcp_B_Smooth
, MUIA_Selected
, MUICFG_NList_Smooth
, DEFAULT_SMOOTHSCROLL
);
1598 LOAD_DATAFONT(data
->mcp_Font
, MUICFG_NList_Font
);
1599 LOAD_DATAFONT(data
->mcp_Font_Little
,MUICFG_NList_Font_Little
);
1600 LOAD_DATAFONT(data
->mcp_Font_Fixed
, MUICFG_NList_Font_Fixed
);
1604 LONG num
= DEFAULT_DRAGTYPE
;
1605 if((ptrd
= (LONG
*) DoMethod(msg
->configdata
, MUIM_Dataspace_Find
, MUICFG_NList_DragType
)))
1607 if (*ptrd
== MUIV_NList_DragType_Qualifier
)
1609 else if (*ptrd
== MUIV_NList_DragType_Borders
)
1614 set(data
->mcp_R_Drag
,MUIA_Radio_Active
, num
);
1620 LONG num
= DEFAULT_CWD
;
1621 if((ptrd
= (LONG
*) DoMethod(msg
->configdata
, MUIM_Dataspace_Find
, MUICFG_NList_ColWidthDrag
)))
1625 else if (*ptrd
== 2)
1630 set(data
->mcp_ColWidthDrag
,MUIA_Radio_Active
, num
);
1635 LONG num
= DEFAULT_MULTISELECT
;
1637 if((ptrd
= (LONG
*) DoMethod(msg
->configdata
, MUIM_Dataspace_Find
, MUICFG_NList_MultiSelect
)))
1640 if ((num
& MUIV_NList_MultiSelect_MMB_On
) == MUIV_NList_MultiSelect_MMB_On
)
1642 set(data
->mcp_B_MultiMMB
, MUIA_Selected
, TRUE
);
1646 set(data
->mcp_B_MultiMMB
, MUIA_Selected
, FALSE
);
1649 if (num
== MUIV_NList_MultiSelect_Always
)
1653 set(data
->mcp_R_Multi
,MUIA_Radio_Active
, num
);
1658 LONG num
= DEFAULT_HSB
;
1660 if((ptrd
= (LONG
*) DoMethod(msg
->configdata
, MUIM_Dataspace_Find
, MUICFG_NListview_HSB
)))
1663 if ((num
< 1) || (num
> 4))
1667 set(data
->mcp_R_HSB
,MUIA_Radio_Active
, num
);
1672 LONG num
= DEFAULT_VSB
;
1674 if((ptrd
= (LONG
*) DoMethod(msg
->configdata
, MUIM_Dataspace_Find
, MUICFG_NListview_VSB
)))
1677 if ((num
< 1) || (num
> 3))
1680 set(data
->mcp_R_VSB
,MUIA_Radio_Active
, num
);
1685 LONG num
= DEFAULT_FORCEPEN
;
1686 if((ptrd
= (LONG
*) DoMethod(msg
->configdata
, MUIM_Dataspace_Find
, MUICFG_NList_ForcePen
)))
1693 set(data
->mcp_ForcePen
, MUIA_Selected
, num
);
1696 LOAD_DATALONG(data
->mcp_DragLines
, MUIA_Numeric_Value
, MUICFG_NList_DragLines
, DEFAULT_DRAGLINES
);
1697 LOAD_DATALONG(data
->mcp_VerticalCenteredLines
, MUIA_Selected
, MUICFG_NList_VCenteredLines
, DEFAULT_VCENTERED
);
1698 LOAD_DATALONG(data
->mcp_SelectPointer
, MUIA_Selected
, MUICFG_NList_SelectPointer
, DEFAULT_SELECTPOINTER
);
1699 LOAD_DATALONG(data
->mcp_WheelStep
, MUIA_Numeric_Value
, MUICFG_NList_WheelStep
, DEFAULT_WHEELSTEP
);
1700 LOAD_DATALONG(data
->mcp_WheelFast
, MUIA_Numeric_Value
, MUICFG_NList_WheelFast
, DEFAULT_WHEELFAST
);
1701 LOAD_DATALONG(data
->mcp_WheelMMB
, MUIA_Selected
, MUICFG_NList_WheelMMB
, DEFAULT_WHEELMMB
);
1705 LONG num
= DEFAULT_SERMOUSEFIX
;
1706 if((ptrd
= (LONG
*) DoMethod(msg
->configdata
, MUIM_Dataspace_Find
, MUICFG_NList_SerMouseFix
)))
1713 set(data
->mcp_SerMouseFix
, MUIA_Selected
, num
);
1718 LONG num
= DEFAULT_LIST_SELECT
;
1719 if((ptrd
= (LONG
*) DoMethod(msg
->configdata
, MUIM_Dataspace_Find
, MUICFG_NList_List_Select
)))
1726 set(data
->mcp_List_Select
, MUIA_Selected
, num
);
1731 LONG num
= DEFAULT_PARTIALCOL
;
1732 if((ptrd
= (LONG
*) DoMethod(msg
->configdata
, MUIM_Dataspace_Find
, MUICFG_NList_PartialCol
)))
1739 set(data
->mcp_PartialCol
, MUIA_Selected
, num
);
1744 LONG num
= DEFAULT_PARTIALCHAR
;
1745 if((ptrd
= (LONG
*) DoMethod(msg
->configdata
, MUIM_Dataspace_Find
, MUICFG_NList_PartialChar
)))
1752 set(data
->mcp_PartialChar
, MUIA_Selected
, num
);
1757 LONG num
= DEFAULT_CMENU
;
1758 if((ptrd
= (LONG
*)DoMethod(msg
->configdata
, MUIM_Dataspace_Find
, MUICFG_NList_Menu
)) != NULL
)
1760 if(*ptrd
== (LONG
)MUIV_NList_ContextMenu_TopOnly
)
1762 else if(*ptrd
== (LONG
)MUIV_NList_ContextMenu_Never
)
1765 set(data
->mcp_NList_Menu
, MUIA_Radio_Active
, num
);
1770 struct KeyBinding
*keys
= default_keys
;
1772 if((ptrd
= (LONG
*) DoMethod(msg
->configdata
, MUIM_Dataspace_Find
, MUICFG_NList_Keys
)))
1773 keys
= (struct KeyBinding
*) ptrd
;
1775 NL_LoadKeys(data
->mcp_listkeys
,keys
);
1782 IPTR
mNL_MCP_GadgetsToConfig(struct IClass
*cl
,Object
*obj
,struct MUIP_Settingsgroup_GadgetsToConfig
*msg
)
1784 struct NListviews_MCP_Data
*data
= INST_DATA(cl
, obj
);
1786 D(DBF_STARTUP
, "GadgetsToConfig");
1788 SAVE_DATASPEC(data
->mcp_PenTitle
, MUIA_Pendisplay_Spec
, MUICFG_NList_Pen_Title
);
1789 SAVE_DATASPEC(data
->mcp_PenList
, MUIA_Pendisplay_Spec
, MUICFG_NList_Pen_List
);
1790 SAVE_DATASPEC(data
->mcp_PenSelect
, MUIA_Pendisplay_Spec
, MUICFG_NList_Pen_Select
);
1791 SAVE_DATASPEC(data
->mcp_PenCursor
, MUIA_Pendisplay_Spec
, MUICFG_NList_Pen_Cursor
);
1792 SAVE_DATASPEC(data
->mcp_PenUnselCur
,MUIA_Pendisplay_Spec
, MUICFG_NList_Pen_UnselCur
);
1793 SAVE_DATASPEC(data
->mcp_PenInactive
,MUIA_Pendisplay_Spec
, MUICFG_NList_Pen_Inactive
);
1795 SAVE_DATASPEC2(data
->mcp_BG_Title
, MUIA_Imagedisplay_Spec
,MUICFG_NList_BG_Title
);
1796 SAVE_DATASPEC2(data
->mcp_BG_List
, MUIA_Imagedisplay_Spec
,MUICFG_NList_BG_List
);
1797 SAVE_DATASPEC2(data
->mcp_BG_Select
, MUIA_Imagedisplay_Spec
,MUICFG_NList_BG_Select
);
1798 SAVE_DATASPEC2(data
->mcp_BG_Cursor
, MUIA_Imagedisplay_Spec
,MUICFG_NList_BG_Cursor
);
1799 SAVE_DATASPEC2(data
->mcp_BG_UnselCur
,MUIA_Imagedisplay_Spec
,MUICFG_NList_BG_UnselCur
);
1800 SAVE_DATASPEC2(data
->mcp_BG_Inactive
,MUIA_Imagedisplay_Spec
,MUICFG_NList_BG_Inactive
);
1802 SAVE_DATALONG(data
->mcp_SL_VertInc
, MUIA_Numeric_Value
, MUICFG_NList_VertInc
);
1804 SAVE_DATALONG(data
->mcp_B_Smooth
, MUIA_Selected
, MUICFG_NList_Smooth
);
1806 SAVE_DATAFONT(data
->mcp_Font
, MUICFG_NList_Font
);
1807 SAVE_DATAFONT(data
->mcp_Font_Little
,MUICFG_NList_Font_Little
);
1808 SAVE_DATAFONT(data
->mcp_Font_Fixed
, MUICFG_NList_Font_Fixed
);
1812 get(data
->mcp_R_Drag
, MUIA_Radio_Active
, &ptrd
);
1814 num
= MUIV_NList_DragType_Qualifier
;
1816 num
= MUIV_NList_DragType_Borders
;
1818 num
= MUIV_NList_DragType_Immediate
;
1819 DoMethod(msg
->configdata
, MUIM_Dataspace_Add
, &num
, 8, MUICFG_NList_DragType
);
1824 get(data
->mcp_ColWidthDrag
, MUIA_Radio_Active
, &ptrd
);
1826 DoMethod(msg
->configdata
, MUIM_Dataspace_Add
, &num
, 8, MUICFG_NList_ColWidthDrag
);
1831 get(data
->mcp_R_Multi
, MUIA_Radio_Active
, &ptrd
);
1833 num
= MUIV_NList_MultiSelect_Always
;
1835 num
= MUIV_NList_MultiSelect_Shifted
;
1836 get(data
->mcp_B_MultiMMB
, MUIA_Selected
, &ptrd
);
1838 num
|= MUIV_NList_MultiSelect_MMB_On
;
1840 num
|= MUIV_NList_MultiSelect_MMB_Off
;
1841 DoMethod(msg
->configdata
, MUIM_Dataspace_Add
, &num
, 8, MUICFG_NList_MultiSelect
);
1846 get(data
->mcp_R_HSB
, MUIA_Radio_Active
, &ptrd
);
1848 DoMethod(msg
->configdata
, MUIM_Dataspace_Add
, &num
, 8, MUICFG_NListview_HSB
);
1852 get(data
->mcp_R_VSB
, MUIA_Radio_Active
, &ptrd
);
1854 DoMethod(msg
->configdata
, MUIM_Dataspace_Add
, &num
, 8, MUICFG_NListview_VSB
);
1859 get(data
->mcp_ForcePen
, MUIA_Selected
, &ptrd
);
1864 DoMethod(msg
->configdata
, MUIM_Dataspace_Add
, &num
, 8, MUICFG_NList_ForcePen
);
1867 SAVE_DATALONG(data
->mcp_DragLines
, MUIA_Numeric_Value
, MUICFG_NList_DragLines
);
1868 SAVE_DATALONG(data
->mcp_VerticalCenteredLines
, MUIA_Selected
, MUICFG_NList_VCenteredLines
);
1869 SAVE_DATALONG(data
->mcp_SelectPointer
,MUIA_Selected
, MUICFG_NList_SelectPointer
);
1870 SAVE_DATALONG(data
->mcp_WheelStep
, MUIA_Numeric_Value
, MUICFG_NList_WheelStep
);
1871 SAVE_DATALONG(data
->mcp_WheelFast
, MUIA_Numeric_Value
, MUICFG_NList_WheelFast
);
1872 SAVE_DATALONG(data
->mcp_WheelMMB
, MUIA_Selected
, MUICFG_NList_WheelMMB
);
1876 get(data
->mcp_SerMouseFix
, MUIA_Selected
, &ptrd
);
1881 DoMethod(msg
->configdata
, MUIM_Dataspace_Add
, &num
, 8, MUICFG_NList_SerMouseFix
);
1886 get(data
->mcp_List_Select
, MUIA_Selected
, &ptrd
);
1891 DoMethod(msg
->configdata
, MUIM_Dataspace_Add
, &num
, 8, MUICFG_NList_List_Select
);
1896 get(data
->mcp_PartialCol
, MUIA_Selected
, &ptrd
);
1901 DoMethod(msg
->configdata
, MUIM_Dataspace_Add
, &num
, 8, MUICFG_NList_PartialCol
);
1906 get(data
->mcp_PartialChar
, MUIA_Selected
, &ptrd
);
1911 DoMethod(msg
->configdata
, MUIM_Dataspace_Add
, &num
, 8, MUICFG_NList_PartialChar
);
1915 LONG ptrd
=0,num
= MUIV_NList_ContextMenu_Always
;
1916 get(data
->mcp_NList_Menu
, MUIA_Radio_Active
, &ptrd
);
1918 num
= MUIV_NList_ContextMenu_TopOnly
;
1920 num
= MUIV_NList_ContextMenu_Never
;
1921 DoMethod(msg
->configdata
, MUIM_Dataspace_Add
, &num
, 8, MUICFG_NList_Menu
);
1925 LONG sk
= NL_SaveKeys(data
);
1927 { DoMethod(msg
->configdata
, MUIM_Dataspace_Add
, data
->nlkeys
, sk
, MUICFG_NList_Keys
);
1928 FreeMem((void *) data
->nlkeys
,data
->nlkeys_size
+4);
1929 data
->nlkeys
= NULL
;
1937 static IPTR
mNL_MCP_Get(struct IClass
*cl
,Object
*obj
,Msg msg
)
1939 IPTR
*store
= ((struct opGet
*)msg
)->opg_Storage
;
1941 switch (((struct opGet
*)msg
)->opg_AttrID
)
1944 *store
= LIB_VERSION
;
1948 *store
= LIB_REVISION
;
1952 return (DoSuperMethodA(cl
,obj
,msg
));
1955 DISPATCHER(_DispatcherP
)
1957 switch (msg
->MethodID
)
1959 case OM_NEW
: return(mNL_MCP_New(cl
,obj
,(APTR
)msg
));
1960 case OM_DISPOSE
: return(mNL_MCP_Dispose(cl
,obj
,(APTR
)msg
));
1961 case OM_GET
: return(mNL_MCP_Get(cl
,obj
,(APTR
)msg
));
1962 case MUIM_Settingsgroup_ConfigToGadgets
: return(mNL_MCP_ConfigToGadgets(cl
,obj
,(APTR
)msg
));
1963 case MUIM_Settingsgroup_GadgetsToConfig
: return(mNL_MCP_GadgetsToConfig(cl
,obj
,(APTR
)msg
));
1966 return(DoSuperMethodA(cl
,obj
,msg
));