Made the main window a custom class. The subclass currently tests setting an
[AROS.git] / test / Zune / test.c
blob80a4eb491d5fdd59a8114950773d63aaff8be28a
1 /*
2 Copyright © 2002-2016, The AROS Development Team.
3 All rights reserved.
5 $Id$
6 */
8 #define INTUITION_NO_INLINE_STDARG
10 #include <exec/types.h>
11 #include <stdlib.h>
12 #include <stdio.h>
13 #include <string.h>
15 #include <clib/alib_protos.h>
16 #include <intuition/gadgetclass.h>
17 #include <intuition/icclass.h>
18 #include <libraries/asl.h>
19 #include <gadgets/colorwheel.h>
20 #include <proto/exec.h>
21 #include <proto/intuition.h>
22 #include <proto/dos.h>
23 #include <proto/muimaster.h>
24 #include <proto/graphics.h>
25 #include <proto/utility.h>
26 #include <aros/debug.h>
28 /* the following should go in a single include file which then only
29 ** consists of the public constants and members. Actually this is easy
32 #if 0
33 #define TEST_ICONLIST
34 #endif
36 #include <libraries/mui.h>
37 #if defined(TEST_ICONLIST)
38 #include "../../workbench/system/Wanderer/Classes/iconlist_attributes.h"
39 #include "../../workbench/system/Wanderer/Classes/iconlist.h"
40 #endif
42 #define STRING_COUNT 6
43 #define LIST_COUNT 5
44 #define MULTI_LIST_COUNT 2
46 #define NUMERIC_MIN 0
47 #define NUMERIC_MAX 100
49 static const TEXT digits[] = "-0123456789";
50 static const TEXT vowels[] = "aeiou";
51 static const TEXT default_accept_chars[] = "aeiou?.";
52 static const TEXT default_reject_chars[] = "*?";
53 static const ULONG default_color[] = {155 << 24, 180 << 24, 255 << 24};
54 static const struct MUI_PenSpec default_penspec = {"m0"};
55 static const char *fruits[] = {"Strawberry", "Apple", "Banana", "Orange",
56 "Grapefruit", "Kumquat", "Plum", "Raspberry", "Apricot", "Grape",
57 "Peach", "Lemon", "Lime", "Date", "Pineapple", "Blueberry", "Papaya",
58 "Cranberry", "Gooseberry", "Pear", "Fig", "Coconut", "Melon",
59 "Pumpkin", NULL};
60 static const char *empty[] = {"", "", "", "", "", NULL};
61 static const LONG list_active_positions[] =
63 MUIV_List_Active_Top,
64 MUIV_List_Active_Bottom,
65 MUIV_List_Active_Off,
66 MUIV_List_Active_Off,
67 MUIV_List_Active_Off
69 static const CONST_STRPTR list_move1_modes[] =
70 {"Index", "Top", "Active", "Bottom", NULL};
71 static const CONST_STRPTR list_move2_modes[] =
72 {"Index", "Top", "Active", "Bottom", "Next", "Previous", NULL};
73 static const CONST_STRPTR list_jump_modes[] =
74 {"Index", "Top", "Active", "Bottom", "Down", "Up", NULL};
75 static const CONST_STRPTR list_insert_modes[] =
76 {"Index", "Top", "Active", "Sorted", "Bottom", NULL};
77 static const CONST_STRPTR list_remove_modes[] =
78 {"Index", "First", "Active", "Last", "Selected", "Unsafe Loop",
79 "Safe Loop", NULL};
80 static const CONST_STRPTR list_activate_modes[] =
81 {"Index", "Top", "Bottom", "Up", "Down", "Page Up", "Page Down", NULL};
82 static const CONST_STRPTR list_select_modes[] =
83 {"Index", "Active", "All", NULL};
84 static const TEXT list_format[] = "BAR,BAR,";
86 enum
88 HNSLIDER,
89 HRSLIDER,
90 HQSLIDER,
91 VNSLIDER,
92 VRSLIDER,
93 VQSLIDER,
94 NNUMERICBUTTON,
95 RNUMERICBUTTON,
96 NKNOB,
97 RKNOB,
98 NUMERIC_COUNT
101 struct Library *MUIMasterBase;
102 struct Library *ColorWheelBase;
104 struct list_entry
106 char *column1;
107 char *column2;
110 Object *app, *wnd;
112 static struct
114 Object *open_button;
116 general;
118 static struct
120 Object *strings[STRING_COUNT],
121 *accept_string,
122 *reject_string,
123 *cursor_pos_slider,
124 *display_pos_slider,
125 *integer_string,
126 *plaintext_string,
127 *max_len_text,
128 *cr_advance_check,
129 *attach_list_check,
130 *standard_hook_check,
131 *custom_hook_check,
132 *accept_all_check;
134 string;
136 static struct
138 Object *lists[LIST_COUNT],
139 *list_radios,
140 *index1_string,
141 *index2_string,
142 *title_string,
143 *move1_cycle,
144 *move2_cycle,
145 *jump_cycle,
146 *select_cycle,
147 *insert_cycle,
148 *remove_cycle,
149 *activate_cycle,
150 *sort_button,
151 *clear_button,
152 *enable_button,
153 *reset_button,
154 *select_button,
155 *deselect_button,
156 *toggle_button,
157 *move_button,
158 *exchange_button,
159 *jump_button,
160 *redraw_button,
161 *insert_single_button,
162 *insert_multiple_button,
163 *remove_button,
164 *activate_button,
165 *deactivate_button,
166 *draggable_check,
167 *showdropmarks_check,
168 *multitest_check,
169 *quiet_check,
170 *dragsortable_check,
171 *autovisible_check,
172 *entries_text,
173 *visible_text,
174 *first_text,
175 *insert_text,
176 *active_text,
177 *drop_text,
178 *selected_text,
179 *multi_lists[MULTI_LIST_COUNT],
180 *colorfield,
181 *format_string,
182 *column_string,
183 *column_text,
184 *def_column_string,
185 *showheadings_check,
186 *showimage_check;
187 LONG quiet[LIST_COUNT],
188 destruct_count,
189 has_multitest[LIST_COUNT];
190 IPTR image;
192 list;
194 static Object *wheel;
195 static Object *r_slider;
196 static Object *g_slider;
197 static Object *b_slider;
198 static Object *hue_gauge;
199 static Object *colorfield, *colorfield2, *colorfield_reset_button,
200 *colorfield_pen;
201 static Object *coloradjust;
202 static Object *pendisplay, *pendisplay2, *pendisplay_pen, *pendisplay_spec,
203 *reference_check, *shine_button, *shadow_button, *yellow_button, *poppen;
204 static Object *group;
205 static Object *editor_text;
206 static Object *filename_string;
207 static Object *save_button;
208 static struct Hook hook_standard;
209 static struct Hook hook;
210 static struct Hook hook_wheel;
211 static struct Hook hook_slider;
212 static struct Hook hook_objects;
213 static struct Hook hook_compare, hook_multitest;
214 static struct Hook hook_construct, hook_destruct, hook_display;
215 static struct Hook hook_objstr;
217 #if defined(TEST_ICONLIST)
218 static Object *drawer_iconlist;
219 static Object *volume_iconlist;
220 #endif
222 AROS_UFH0(void, repeat_function)
224 AROS_USERFUNC_INIT
226 printf("MUI_Timer\n");
228 AROS_USERFUNC_EXIT
231 AROS_UFH0(void, wheel_function)
233 AROS_USERFUNC_INIT
235 nnset(r_slider, MUIA_Numeric_Value, (XGET(wheel,
236 WHEEL_Red) >> 24) & 0xff);
237 nnset(g_slider, MUIA_Numeric_Value, (XGET(wheel,
238 WHEEL_Green) >> 24) & 0xff);
239 nnset(b_slider, MUIA_Numeric_Value, (XGET(wheel,
240 WHEEL_Blue) >> 24) & 0xff);
242 AROS_USERFUNC_EXIT
245 AROS_UFH0(void, slider_function)
247 AROS_USERFUNC_INIT
249 struct ColorWheelRGB cw;
250 ULONG red = XGET(r_slider, MUIA_Numeric_Value);
251 ULONG green = XGET(g_slider, MUIA_Numeric_Value);
252 ULONG blue = XGET(b_slider, MUIA_Numeric_Value);
254 cw.cw_Red = (red << 24) | (red << 16) | (red << 8) | red;
255 cw.cw_Green = (green << 24) | (green << 16) | (green << 8) | green;
256 cw.cw_Blue = (blue << 24) | (blue << 16) | (blue << 8) | blue;
258 nnset(wheel, WHEEL_RGB, &cw);
259 set(hue_gauge, MUIA_Gauge_Current, XGET(wheel, WHEEL_Hue));
261 AROS_USERFUNC_EXIT
264 AROS_UFH0(void, objects_function)
266 AROS_USERFUNC_INIT
268 Object *new_obj = MUI_MakeObject(MUIO_Button, "Button");
269 if (new_obj)
271 DoMethod(group, MUIM_Group_InitChange);
272 DoMethod(group, OM_ADDMEMBER, new_obj);
273 DoMethod(group, MUIM_Group_ExitChange);
276 AROS_USERFUNC_EXIT
279 static void About(void)
281 static Object *about_wnd;
283 if (!about_wnd)
285 about_wnd = AboutmuiObject, MUIA_Aboutmui_Application, app, End;
288 if (about_wnd)
289 set(about_wnd, MUIA_Window_Open, TRUE);
292 AROS_UFH3(static void, ObjStrHook,
293 AROS_UFHA(struct Hook *, h, A0),
294 AROS_UFHA(Object *, group, A2),
295 AROS_UFHA(Object *, str, A1))
297 AROS_USERFUNC_INIT
299 struct List *child_list = NULL;
300 Object *child, *list;
301 struct list_entry *entry;
303 /* Find the listview object within its group */
304 GET(group, MUIA_Group_ChildList, &child_list);
305 child = (APTR)child_list->lh_Head;
306 NextObject(&child);
307 list = NextObject(&child);
309 /* Copy one of the selected entry's fields to the string gadget */
310 DoMethod(list, MUIM_List_GetEntry, MUIV_List_GetEntry_Active, &entry);
311 SET(str, MUIA_String_Contents, entry->column1);
313 AROS_USERFUNC_EXIT
316 static void ChangeStringAccept(void)
318 STRPTR accept_chars = NULL, reject_chars = NULL;
319 BOOL accept_all;
320 UWORD i;
322 accept_all = XGET(string.accept_all_check, MUIA_Selected);
323 SET(string.accept_string, MUIA_Disabled, accept_all);
324 SET(string.reject_string, MUIA_Disabled, accept_all);
326 if (!accept_all)
328 GET(string.accept_string, MUIA_String_Contents, &accept_chars);
329 GET(string.reject_string, MUIA_String_Contents, &reject_chars);
332 for (i = 0; i < STRING_COUNT; i++)
334 SET(string.strings[i], MUIA_String_Accept, accept_chars);
335 SET(string.strings[i], MUIA_String_Reject, reject_chars);
339 static void ChangePen(void)
341 SIPTR pen = -1;
343 GET(colorfield_pen, MUIA_String_Integer, &pen);
344 if (pen >= 0)
345 SET(colorfield, MUIA_Colorfield_Pen, pen);
348 static void ChangePendisplayPen(void)
350 DoMethod(pendisplay, MUIM_Pendisplay_SetColormap,
351 XGET(pendisplay_pen, MUIA_String_Integer));
354 AROS_UFH3(static IPTR, ListCompareHook,
355 AROS_UFHA(struct Hook *, h, A0),
356 AROS_UFHA(CONST_STRPTR, str1, A2),
357 AROS_UFHA(CONST_STRPTR, str2, A1))
359 AROS_USERFUNC_INIT
361 IPTR len1, len2;
363 len1 = strlen(str1);
364 len2 = strlen(str2);
366 /* Indicate which string is shorter */
367 return len2 - len1;
369 AROS_USERFUNC_EXIT
372 AROS_UFH3(static IPTR, ListMultiTestHook,
373 AROS_UFHA(struct Hook *, h, A0),
374 AROS_UFHA(APTR, unused, A2),
375 AROS_UFHA(CONST_STRPTR, str, A1))
377 AROS_USERFUNC_INIT
379 /* Indicate whether the string doesn't begin with a vowel */
380 return strchr(vowels, tolower(str[0])) == NULL;
382 AROS_USERFUNC_EXIT
385 static void ChangeListTitle(void)
387 STRPTR title = NULL;
388 UWORD i;
390 i = XGET(list.list_radios, MUIA_Radio_Active);
392 GET(list.lists[i], MUIA_List_Title, &title);
393 FreeVec(title);
395 GET(list.title_string, MUIA_String_Contents, &title);
396 if (title[0] == '\0')
397 title = NULL;
399 title = StrDup(title);
401 SET(list.lists[i], MUIA_List_Title, title);
404 static void UpdateListInfo(void)
406 STRPTR title = NULL;
407 UWORD i;
408 LONG value = 0;
410 i = XGET(list.list_radios, MUIA_Radio_Active);
412 GET(list.lists[i], MUIA_Listview_DragType, &value);
413 NNSET(list.draggable_check, MUIA_Selected,
414 value != MUIV_Listview_DragType_None);
415 NNSET(list.dragsortable_check, MUIA_Disabled,
416 value == MUIV_Listview_DragType_None);
417 if (value == MUIV_Listview_DragType_None)
418 value = FALSE;
419 else
420 GET(list.lists[i], MUIA_List_DragSortable, &value);
421 NNSET(list.dragsortable_check, MUIA_Selected, value);
422 GET(list.lists[i], MUIA_List_ShowDropMarks, &value);
423 NNSET(list.showdropmarks_check, MUIA_Selected, value);
424 value = list.has_multitest[i]; // MUIA_List_MultiTestHook isn't gettable!
425 NNSET(list.multitest_check, MUIA_Selected, value);
426 value = list.quiet[i]; // MUIA_List_Quiet is not gettable!
427 NNSET(list.quiet_check, MUIA_Selected, value);
428 GET(list.lists[i], MUIA_List_AutoVisible, &value);
429 NNSET(list.autovisible_check, MUIA_Selected, value);
431 GET(list.lists[i], MUIA_List_Title, &title);
432 NNSET(list.title_string, MUIA_String_Contents, title);
434 GET(list.lists[i], MUIA_List_Entries, &value);
435 DoMethod(list.entries_text, MUIM_SetAsString, MUIA_Text_Contents,
436 "%ld", value);
437 GET(list.lists[i], MUIA_List_Visible, &value);
438 DoMethod(list.visible_text, MUIM_SetAsString, MUIA_Text_Contents,
439 "%ld", value);
440 GET(list.lists[i], MUIA_List_First, &value);
441 DoMethod(list.first_text, MUIM_SetAsString, MUIA_Text_Contents,
442 "%ld", value);
443 GET(list.lists[i], MUIA_List_InsertPosition, &value);
444 DoMethod(list.insert_text, MUIM_SetAsString, MUIA_Text_Contents,
445 "%ld", value);
446 GET(list.lists[i], MUIA_List_Active, &value);
447 if (value == MUIV_List_Active_Off)
448 SET(list.active_text, MUIA_Text_Contents, "N/A");
449 else
450 DoMethod(list.active_text, MUIM_SetAsString, MUIA_Text_Contents,
451 "%ld", value);
452 DoMethod(list.lists[i], MUIM_List_Select, MUIV_List_Select_All,
453 MUIV_List_Select_Ask, (IPTR) &value);
454 DoMethod(list.selected_text, MUIM_SetAsString, MUIA_Text_Contents,
455 "%ld", value);
456 GET(list.lists[i], MUIA_List_DropMark, &value);
457 DoMethod(list.drop_text, MUIM_SetAsString, MUIA_Text_Contents,
458 "%ld", value);
461 static void ListGetVisible(void)
463 UWORD i;
464 LONG value = 0;
466 i = XGET(list.list_radios, MUIA_Radio_Active);
468 GET(list.lists[i], MUIA_List_Visible, &value);
469 DoMethod(list.visible_text, MUIM_SetAsString, MUIA_Text_Contents,
470 "%ld", value);
473 static void ListGetFirst(void)
475 UWORD i;
476 LONG value = 0;
477 Object *real_list;
479 i = XGET(list.list_radios, MUIA_Radio_Active);
481 /* We fetch the Listview's list here to provide test coverage for that
482 attribute. Please don't optimise */
483 real_list = (Object *)XGET(list.lists[i], MUIA_Listview_List);
484 GET(real_list, MUIA_List_First, &value);
485 DoMethod(list.first_text, MUIM_SetAsString, MUIA_Text_Contents,
486 "%ld", value);
489 static void ListGetSelected(void)
491 UWORD i;
492 LONG value = 0;
494 i = XGET(list.list_radios, MUIA_Radio_Active);
496 DoMethod(list.lists[i], MUIM_List_Select, MUIV_List_Select_All,
497 MUIV_List_Select_Ask, (IPTR) &value);
498 DoMethod(list.selected_text, MUIM_SetAsString, MUIA_Text_Contents,
499 "%ld", value);
502 static void ListSetDraggable(void)
504 UWORD i;
505 LONG value = 0;
507 i = XGET(list.list_radios, MUIA_Radio_Active);
509 GET(list.draggable_check, MUIA_Selected, &value);
510 SET(list.lists[i], MUIA_Listview_DragType, value ?
511 MUIV_Listview_DragType_Immediate : MUIV_Listview_DragType_None);
514 static void ListSetShowDropMarks(void)
516 UWORD i;
517 LONG value = 0;
519 i = XGET(list.list_radios, MUIA_Radio_Active);
521 GET(list.showdropmarks_check, MUIA_Selected, &value);
522 SET(list.lists[i], MUIA_List_ShowDropMarks, value);
525 static void ListSetMultiTest(void)
527 UWORD i;
528 LONG value = 0;
530 i = XGET(list.list_radios, MUIA_Radio_Active);
532 GET(list.multitest_check, MUIA_Selected, &value);
533 SET(list.lists[i], MUIA_List_MultiTestHook, value ? &hook_multitest : NULL);
534 list.has_multitest[i] = value;
537 static void ListSetQuiet(void)
539 UWORD i;
540 LONG value = 0;
542 i = XGET(list.list_radios, MUIA_Radio_Active);
544 GET(list.quiet_check, MUIA_Selected, &value);
545 SET(list.lists[i], MUIA_List_Quiet, value);
546 list.quiet[i] = value;
549 static void ListSetDragSortable(void)
551 UWORD i;
552 LONG value = 0;
554 i = XGET(list.list_radios, MUIA_Radio_Active);
556 GET(list.dragsortable_check, MUIA_Selected, &value);
557 SET(list.lists[i], MUIA_List_DragSortable, value);
560 static void ListSetAutoVisible(void)
562 UWORD i;
563 LONG value = 0;
565 i = XGET(list.list_radios, MUIA_Radio_Active);
567 GET(list.autovisible_check, MUIA_Selected, &value);
568 SET(list.lists[i], MUIA_List_AutoVisible, value);
571 static void ListReset(void)
573 UWORD i;
575 i = XGET(list.list_radios, MUIA_Radio_Active);
577 SET(list.lists[i], MUIA_List_Active, list_active_positions[i]);
580 static void ListMove(void)
582 LONG mode, pos1, pos2;
583 UWORD i;
585 i = XGET(list.list_radios, MUIA_Radio_Active);
587 mode = XGET(list.move1_cycle, MUIA_Cycle_Active);
589 if (mode == 0)
590 pos1 = XGET(list.index1_string, MUIA_String_Integer);
591 else
592 pos1 = 1 - mode;
594 mode = XGET(list.move2_cycle, MUIA_Cycle_Active);
596 if (mode == 0)
597 pos2 = XGET(list.index2_string, MUIA_String_Integer);
598 else
599 pos2 = 1 - mode;
601 DoMethod(list.lists[i], MUIM_List_Move, pos1, pos2);
604 static void ListSort(void)
606 UWORD i;
608 i = XGET(list.list_radios, MUIA_Radio_Active);
610 DoMethod(list.lists[i], MUIM_List_Sort);
613 static void ListEnable(void)
615 UWORD i;
617 i = XGET(list.list_radios, MUIA_Radio_Active);
619 SET(list.lists[i], MUIA_Disabled, FALSE);
622 static void ListExchange(void)
624 LONG mode, pos1, pos2;
625 UWORD i;
627 i = XGET(list.list_radios, MUIA_Radio_Active);
629 mode = XGET(list.move1_cycle, MUIA_Cycle_Active);
631 if (mode == 0)
632 pos1 = XGET(list.index1_string, MUIA_String_Integer);
633 else
634 pos1 = 1 - mode;
636 mode = XGET(list.move2_cycle, MUIA_Cycle_Active);
638 if (mode == 0)
639 pos2 = XGET(list.index2_string, MUIA_String_Integer);
640 else
641 pos2 = 1 - mode;
643 DoMethod(list.lists[i], MUIM_List_Exchange, pos1, pos2);
646 static void ListJump(void)
648 LONG mode, pos;
649 UWORD i;
651 i = XGET(list.list_radios, MUIA_Radio_Active);
653 mode = XGET(list.jump_cycle, MUIA_Cycle_Active);
655 if (mode == 0)
656 pos = XGET(list.index1_string, MUIA_String_Integer);
657 else
658 pos = 1 - mode;
660 DoMethod(list.lists[i], MUIM_List_Jump, pos);
663 static void ListSelect(void)
665 LONG mode, pos;
666 UWORD i;
668 i = XGET(list.list_radios, MUIA_Radio_Active);
670 mode = XGET(list.select_cycle, MUIA_Cycle_Active);
672 if (mode == 0)
673 pos = XGET(list.index1_string, MUIA_String_Integer);
674 else
675 pos = 0 - mode;
677 DoMethod(list.lists[i], MUIM_List_Select, pos, MUIV_List_Select_On,
678 NULL);
681 static void ListDeselect(void)
683 LONG mode, pos;
684 UWORD i;
686 i = XGET(list.list_radios, MUIA_Radio_Active);
688 mode = XGET(list.select_cycle, MUIA_Cycle_Active);
690 if (mode == 0)
691 pos = XGET(list.index1_string, MUIA_String_Integer);
692 else
693 pos = 0 - mode;
695 DoMethod(list.lists[i], MUIM_List_Select, pos, MUIV_List_Select_Off,
696 NULL);
699 static void ListToggle(void)
701 LONG mode, pos;
702 UWORD i;
704 i = XGET(list.list_radios, MUIA_Radio_Active);
706 mode = XGET(list.select_cycle, MUIA_Cycle_Active);
708 if (mode == 0)
709 pos = XGET(list.index1_string, MUIA_String_Integer);
710 else
711 pos = 0 - mode;
713 DoMethod(list.lists[i], MUIM_List_Select, pos,
714 MUIV_List_Select_Toggle, NULL);
717 static void ListRedraw(void)
719 LONG mode, pos;
720 UWORD i;
722 i = XGET(list.list_radios, MUIA_Radio_Active);
724 mode = XGET(list.select_cycle, MUIA_Cycle_Active);
726 if (mode == 0)
727 pos = XGET(list.index1_string, MUIA_String_Integer);
728 else
729 pos = 0 - mode;
731 DoMethod(list.lists[i], MUIM_List_Redraw, pos);
734 static void ListInsertSingle(void)
736 LONG mode, pos;
737 UWORD i;
739 i = XGET(list.list_radios, MUIA_Radio_Active);
741 mode = XGET(list.insert_cycle, MUIA_Cycle_Active);
743 if (mode == 0)
744 pos = XGET(list.index1_string, MUIA_String_Integer);
745 else
746 pos = 1 - mode;
748 DoMethod(list.lists[i], MUIM_List_InsertSingle, "Tomato", pos);
751 static void ListInsert(void)
753 LONG mode, pos;
754 UWORD i;
756 i = XGET(list.list_radios, MUIA_Radio_Active);
758 mode = XGET(list.insert_cycle, MUIA_Cycle_Active);
760 if (mode == 0)
761 pos = XGET(list.index1_string, MUIA_String_Integer);
762 else
763 pos = 1 - mode;
765 DoMethod(list.lists[i], MUIM_List_Insert, fruits, -1, pos);
768 static void ListRemove(void)
770 LONG mode, pos, count, j, *selections;
771 UWORD i;
773 i = XGET(list.list_radios, MUIA_Radio_Active);
775 mode = XGET(list.remove_cycle, MUIA_Cycle_Active);
777 if (mode == 5)
779 /* Remove selected entries in a loop to test MUIM_List_NextSelected.
780 This doesn't work as expected in MUI or Zune */
781 pos = MUIV_List_NextSelected_Start - 1;
782 while (pos != MUIV_List_NextSelected_End)
784 if (pos == MUIV_List_NextSelected_Start - 1)
785 pos++;
786 DoMethod(list.lists[i], MUIM_List_NextSelected, (IPTR) &pos);
787 if (pos != MUIV_List_NextSelected_End)
788 DoMethod(list.lists[i], MUIM_List_Remove, pos);
791 else if (mode == 6)
793 /* Remove selected entries safely by first retrieving them with
794 MUIM_List_NextSelected and then removing them one by one */
795 DoMethod(list.lists[i], MUIM_List_Select, MUIV_List_Select_All,
796 MUIV_List_Select_Ask, &count);
797 if (count == 0)
798 count = 1; /* There may still be an active entry */
799 selections = AllocVec(sizeof(LONG) * count, MEMF_ANY);
800 if (selections != NULL)
802 pos = MUIV_List_NextSelected_Start;
803 for (j = 0; j < count; j++)
805 DoMethod(list.lists[i], MUIM_List_NextSelected, (IPTR) &pos);
806 selections[j] = pos;
809 /* We must remove the entries in reverse order; otherwise the
810 later indices will become invalid */
811 while (count > 0)
812 DoMethod(list.lists[i], MUIM_List_Remove, selections[--count]);
813 FreeVec(selections);
816 else
818 if (mode == 0)
819 pos = XGET(list.index1_string, MUIA_String_Integer);
820 else
821 pos = 1 - mode;
822 DoMethod(list.lists[i], MUIM_List_Remove, pos);
826 static void ListClear(void)
828 UWORD i;
830 i = XGET(list.list_radios, MUIA_Radio_Active);
832 DoMethod(list.lists[i], MUIM_List_Clear);
835 static void ListActivate(void)
837 LONG mode, pos;
838 UWORD i;
840 i = XGET(list.list_radios, MUIA_Radio_Active);
842 mode = XGET(list.activate_cycle, MUIA_Cycle_Active);
844 if (mode == 0)
845 pos = XGET(list.index1_string, MUIA_String_Integer);
846 else
847 pos = -1 - mode;
849 SET(list.lists[i], MUIA_List_Active, pos);
852 static void ListDeactivate(void)
854 UWORD i;
856 i = XGET(list.list_radios, MUIA_Radio_Active);
858 SET(list.lists[i], MUIA_List_Active, MUIV_List_Active_Off);
861 static void CheckListDoubleClick(void)
863 LONG value = -1;
865 GET(list.multi_lists[1], MUIA_Listview_DoubleClick, &value);
866 MUI_Request(app, wnd, 0, "Test", "OK",
867 "MUIA_Listview_Doubleclick = %ld", value);
870 AROS_UFH3(static APTR, ListConstructHook,
871 AROS_UFHA(struct Hook *, h, A0),
872 AROS_UFHA(APTR, pool, A2),
873 AROS_UFHA(IPTR, n, A1))
875 AROS_USERFUNC_INIT
877 struct list_entry *entry;
879 entry = AllocPooled(pool, sizeof(struct list_entry) + 40);
881 if (entry != NULL)
883 entry->column1 = (char *)(entry + 1);
884 entry->column2 = entry->column1 + 20;
885 sprintf(entry->column1, "Entry%ld", (long)n);
886 sprintf(entry->column2, "Col2: Entry%ld", (long)n);
889 return entry;
891 AROS_USERFUNC_EXIT
894 AROS_UFH3(static void, ListDestructHook,
895 AROS_UFHA(struct Hook *, h, A0),
896 AROS_UFHA(APTR, pool, A2),
897 AROS_UFHA(struct list_entry *, entry, A1))
899 AROS_USERFUNC_INIT
901 FreePooled(pool, entry, sizeof(struct list_entry) + 40);
902 list.destruct_count++;
904 AROS_USERFUNC_EXIT
907 AROS_UFH3(static void, display_function,
908 AROS_UFHA(struct Hook *, h, A0),
909 AROS_UFHA(char **, strings, A2),
910 AROS_UFHA(struct list_entry *, entry, A1))
912 AROS_USERFUNC_INIT
914 static char buf[100];
916 if (entry)
918 if (XGET(list.showimage_check, MUIA_Selected))
919 sprintf(buf, "%ld \33O[%08lx]", (long)*(strings - 1),
920 (long)list.image);
921 else
922 sprintf(buf, "%ld", (long)*(strings - 1));
923 strings[0] = buf;
924 strings[1] = entry->column1;
925 strings[2] = entry->column2;
927 else
929 strings[0] = "Number";
930 strings[1] = "Column 1";
931 strings[2] = "Column 2";
934 AROS_USERFUNC_EXIT
937 static void Save(void)
939 char *text = (char *)XGET(editor_text, MUIA_String_Contents);
940 char *filename = (char *)XGET(filename_string, MUIA_String_Contents);
941 BPTR fh;
943 if (!strlen(filename))
944 return;
946 if ((fh = Open(filename, MODE_NEWFILE)))
948 Write(fh, text, strlen(text));
949 Close(fh);
953 #if defined(TEST_ICONLIST)
954 /* IconList callbacks */
955 static void volume_doubleclicked(void)
957 char buf[200];
958 struct IconList_Entry *ent = (void *)MUIV_IconList_NextIcon_Start;
960 DoMethod(volume_iconlist, MUIM_IconList_NextIcon,
961 MUIV_IconList_NextIcon_Selected, &ent);
962 if ((IPTR) ent == MUIV_IconList_NextIcon_End)
963 return;
965 strcpy(buf, ent->label);
966 strcat(buf, ":");
969 static void drawer_doubleclicked(void)
971 struct IconList_Entry *ent = (void *)MUIV_IconList_NextIcon_Start;
973 DoMethod(drawer_iconlist, MUIM_IconList_NextIcon,
974 MUIV_IconList_NextIcon_Selected, &ent);
975 if ((IPTR) ent == MUIV_IconList_NextIcon_End)
976 return;
977 set(drawer_iconlist, MUIA_IconDrawerList_Drawer,
978 ent->ile_IconEntry->ie_IconNode.ln_Name);
980 #endif
982 static IPTR create_balance_column(void)
984 return (IPTR) VGroup,
985 Child, RectangleObject,
986 GaugeFrame,
987 End,
988 Child, BalanceObject,
989 End,
990 Child, RectangleObject,
991 GaugeFrame,
992 End,
993 Child, BalanceObject,
994 End,
995 Child, RectangleObject,
996 GaugeFrame,
997 End,
998 Child, BalanceObject,
999 End,
1000 Child, RectangleObject,
1001 GaugeFrame,
1002 End,
1003 Child, BalanceObject,
1004 End,
1005 Child, RectangleObject,
1006 GaugeFrame,
1007 End,
1008 End;
1011 /* The custom class */
1013 struct DropText_Data
1015 ULONG times;
1018 #ifdef __MAXON__
1019 #undef KeymapBase
1020 struct Library *KeymapBase;
1021 #endif
1023 #ifndef __AROS__
1024 __saveds __asm IPTR dispatcher(register __a0 struct IClass *cl,
1025 register __a2 Object *obj, register __a1 Msg msg)
1026 #else
1027 AROS_UFH3S(IPTR, dispatcher,
1028 AROS_UFHA(Class *, cl, A0),
1029 AROS_UFHA(Object *, obj, A2), AROS_UFHA(Msg, msg, A1))
1030 #endif
1032 AROS_USERFUNC_INIT
1034 switch (msg->MethodID)
1036 case MUIM_DragQuery:
1037 return MUIV_DragQuery_Accept;
1038 case MUIM_DragDrop:
1040 struct DropText_Data *data =
1041 (struct DropText_Data *)INST_DATA(cl, obj);
1042 char buf[100];
1043 data->times++;
1044 sprintf(buf, "%ld times", (long)data->times);
1045 set(obj, MUIA_Text_Contents, buf);
1049 return DoSuperMethodA(cl, obj, (Msg) msg);
1051 AROS_USERFUNC_EXIT
1054 static struct MUI_CustomClass *CL_DropText;
1056 #define DropTextObject BOOPSIOBJMACRO_START(CL_DropText->mcc_Class)
1058 /* Custom Window subclass */
1060 struct TestWindowData
1062 ULONG x;
1065 IPTR TestWindow__OM_SET(struct IClass *cl, Object *obj,
1066 struct opSet *msg)
1068 struct TagItem *tags;
1069 struct TagItem *tag;
1071 for (tags = msg->ops_AttrList; (tag = NextTagItem(&tags));)
1073 switch (tag->ti_Tag)
1075 case MUIA_Window_Open:
1076 if (tag->ti_Data)
1077 SET(obj, MUIA_Window_ActiveObject, general.open_button);
1078 break;
1082 return DoSuperMethodA(cl, obj, (Msg) msg);
1085 AROS_UFH3S(IPTR, TestWindowDispatcher,
1086 AROS_UFHA(Class *, cl, A0),
1087 AROS_UFHA(Object *, obj, A2),
1088 AROS_UFHA(Msg, msg, A1))
1090 AROS_USERFUNC_INIT
1092 switch (msg->MethodID)
1094 case OM_SET:
1095 return TestWindow__OM_SET(cl, obj, (struct opSet *)msg);
1096 default:
1097 return DoSuperMethodA(cl, obj, (Msg) msg);
1100 AROS_USERFUNC_EXIT
1103 static struct MUI_CustomClass *test_window_class;
1105 #define TestWindowObject BOOPSIOBJMACRO_START(test_window_class->mcc_Class)
1107 /* Main prog */
1109 AROS_UFH3S(void, hook_func_standard,
1110 AROS_UFHA(struct Hook *, h, A0),
1111 AROS_UFHA(void *, dummy, A2), AROS_UFHA(void **, funcptr, A1))
1113 AROS_USERFUNC_INIT
1115 void (*func) (ULONG *) = (void (*)(ULONG *))(*funcptr);
1117 if (func)
1118 func((ULONG *) funcptr + 1);
1120 AROS_USERFUNC_EXIT
1123 int main(void)
1125 APTR pool;
1126 Object *second_wnd;
1127 Object *about_button;
1128 Object *quit_button;
1129 Object *repeat_button;
1130 Object *objects_button;
1131 Object *about_item, *quit_item;
1132 Object *context_menu;
1133 Object *popobject, *listview;
1134 Object *numerics[NUMERIC_COUNT];
1135 Object *min_string, *max_string;
1136 Object *slider_button;
1137 Object *country_radio[2];
1138 CONST_STRPTR title;
1139 UWORD i;
1140 LONG value = 0;
1142 static char *pages[] =
1143 {"General", "Text", "Boopsi", "Color", "Edit", "List", "Gauges",
1144 "Numeric", "Radio",
1145 #if defined(TEST_ICONLIST)
1146 "Icon List",
1147 #endif
1148 "Balancing", NULL};
1149 static char *text_pages[] =
1150 {"Text", "String", NULL};
1151 static char *color_pages[] =
1152 {"Palette", "Colors", "Pens", NULL};
1153 static char *list_pages[] =
1154 {"Single Column", "Multicolumn", NULL};
1155 static char **radio_entries1 = pages;
1156 static char *radio_entries2[] =
1157 {"Paris", "Pataya", "London", "New York", "Reykjavik", NULL};
1159 static IPTR entries[] = {1, 2, 3, 4, 5, 6, (IPTR)NULL};
1161 hook_standard.h_Entry = (HOOKFUNC) hook_func_standard;
1162 hook_objstr.h_Entry = (HOOKFUNC) ObjStrHook;
1164 pool = CreatePool(MEMF_ANY, 4096, 4096);
1166 MUIMasterBase = (struct Library *)OpenLibrary("muimaster.library", 0);
1168 hook.h_Entry = (HOOKFUNC) repeat_function;
1169 hook_wheel.h_Entry = (HOOKFUNC) wheel_function;
1170 hook_slider.h_Entry = (HOOKFUNC) slider_function;
1171 hook_objects.h_Entry = (HOOKFUNC) objects_function;
1172 hook_compare.h_Entry = (HOOKFUNC) ListCompareHook;
1173 hook_multitest.h_Entry = (HOOKFUNC) ListMultiTestHook;
1174 hook_construct.h_Entry = (HOOKFUNC) ListConstructHook;
1175 hook_destruct.h_Entry = (HOOKFUNC) ListDestructHook;
1176 hook_display.h_Entry = (HOOKFUNC) display_function;
1177 list.destruct_count = 0;
1178 list.has_multitest[3] = TRUE;
1180 context_menu = MenustripObject,
1181 MUIA_Family_Child, MenuObject,
1182 MUIA_Menu_Title, "Menutest",
1183 MUIA_Family_Child, about_item = MenuitemObject,
1184 MUIA_Menuitem_Title, "First Test Entry", End,
1185 MUIA_Family_Child, quit_item = MenuitemObject,
1186 MUIA_Menuitem_Title, "Second Test Entry", End,
1187 End,
1188 End;
1190 /* should check the result in a real program! */
1191 CL_DropText = MUI_CreateCustomClass(NULL, MUIC_Text, NULL,
1192 sizeof(struct DropText_Data), dispatcher);
1193 test_window_class = MUI_CreateCustomClass(NULL, MUIC_Window, NULL,
1194 sizeof(struct TestWindowData), TestWindowDispatcher);
1195 ColorWheelBase = OpenLibrary("gadgets/colorwheel.gadget", 0);
1197 pendisplay = PendisplayObject, MUIA_Pendisplay_Spec, &default_penspec, End;
1199 title = StrDup("Fruits");
1200 list.lists[0] = ListviewObject,
1201 MUIA_Listview_List,
1202 ListObject,
1203 InputListFrame,
1204 MUIA_List_Title, title,
1205 MUIA_List_SourceArray, fruits,
1206 MUIA_List_Active, MUIV_List_Active_Top,
1207 MUIA_List_PoolThreshSize, 256,
1208 MUIA_List_DragSortable, TRUE,
1209 MUIA_List_CompareHook, &hook_compare,
1210 MUIA_ShortHelp,
1211 "Default scroller\nTop entry active\nSorted by length",
1212 End,
1213 MUIA_Listview_MultiSelect,
1214 MUIV_Listview_MultiSelect_None,
1215 MUIA_Listview_DragType, MUIV_Listview_DragType_Immediate,
1216 MUIA_Listview_DoubleClick, TRUE,
1217 MUIA_CycleChain, 1,
1218 End;
1219 list.lists[1] = ListviewObject,
1220 MUIA_Listview_List,
1221 ListObject,
1222 InputListFrame,
1223 MUIA_List_SourceArray, fruits,
1224 MUIA_List_Active, MUIV_List_Active_Bottom,
1225 MUIA_List_PoolPuddleSize, 512,
1226 MUIA_List_AutoVisible, TRUE,
1227 MUIA_ShortHelp,
1228 "Left scroller\nBottom entry active\nSorted alphabetically",
1229 End,
1230 MUIA_Listview_ScrollerPos,
1231 MUIV_Listview_ScrollerPos_Left,
1232 MUIA_Listview_DragType, MUIV_Listview_DragType_None,
1233 MUIA_CycleChain, 1,
1234 End;
1235 list.lists[2] = ListviewObject,
1236 MUIA_Listview_List,
1237 ListObject,
1238 InputListFrame,
1239 MUIA_List_SourceArray, fruits,
1240 MUIA_List_Active, MUIV_List_Active_Off,
1241 MUIA_List_Pool, pool,
1242 MUIA_ShortHelp,
1243 "Right scroller\nNo active entry\nSorted alphabetically",
1244 End,
1245 MUIA_Listview_MultiSelect,
1246 MUIV_Listview_MultiSelect_Shifted,
1247 MUIA_Listview_ScrollerPos,
1248 MUIV_Listview_ScrollerPos_Right,
1249 MUIA_CycleChain, 1,
1250 End;
1251 list.lists[3] = ListviewObject,
1252 MUIA_Listview_List,
1253 ListObject,
1254 InputListFrame,
1255 MUIA_List_SourceArray, fruits,
1256 MUIA_List_Pool, NULL,
1257 MUIA_List_MultiTestHook, &hook_multitest,
1258 MUIA_ShortHelp,
1259 "No scroller\nDefault active entry\nSorted alphabetically",
1260 End,
1261 MUIA_Listview_MultiSelect,
1262 MUIV_Listview_MultiSelect_Always,
1263 MUIA_Listview_ScrollerPos,
1264 MUIV_Listview_ScrollerPos_None,
1265 MUIA_CycleChain, 1,
1266 End;
1267 list.lists[4] = ListviewObject,
1268 MUIA_Listview_List,
1269 ListObject,
1270 ReadListFrame,
1271 MUIA_List_SourceArray, fruits,
1272 MUIA_List_Active, MUIV_List_Active_Bottom,
1273 MUIA_List_MinLineHeight, 20,
1274 MUIA_ShortHelp,
1275 "Default scroller\nBottom entry active\nSorted by length",
1276 End,
1277 MUIA_Listview_Input, FALSE,
1278 MUIA_CycleChain, 1,
1279 End;
1281 list.colorfield = ColorfieldObject,
1282 MUIA_Colorfield_RGB, default_color,
1283 End;
1285 app = ApplicationObject,
1286 MUIA_Application_Menustrip, MenustripObject,
1287 MUIA_Family_Child, MenuObject,
1288 MUIA_Menu_Title, "Project",
1289 MUIA_Family_Child, about_item = MenuitemObject,
1290 MUIA_Menuitem_Title, "About...",
1291 MUIA_Menuitem_Shortcut, "?",
1292 End,
1293 MUIA_Family_Child, MenuitemObject,
1294 MUIA_Menuitem_Title, (SIPTR)-1,
1295 End,
1296 MUIA_Family_Child, quit_item = MenuitemObject,
1297 MUIA_Menuitem_Title, "Quit",
1298 MUIA_Menuitem_Shortcut, "Q",
1299 End,
1300 End,
1301 End,
1303 SubWindow, wnd = TestWindowObject,
1304 MUIA_Window_Title, "test",
1305 MUIA_Window_Activate, TRUE,
1307 WindowContents, VGroup,
1308 Child, RegisterGroup(pages),
1309 //MUIA_Background, "5:SYS:Prefs/Presets/Backdrops/StuccoBlue.pic",
1311 /* general */
1312 Child, VGroup,
1313 Child, HGroup,
1314 GroupFrameT("A horizontal group"),
1315 Child, ColGroup(2),
1316 GroupFrameT("A column group"),
1317 Child, repeat_button = TextObject,
1318 MUIA_CycleChain, 1,
1319 ButtonFrame,
1320 MUIA_Background, MUII_ButtonBack,
1321 MUIA_Text_PreParse, "\33c",
1322 MUIA_Text_Contents, "Repeat",
1323 MUIA_InputMode, MUIV_InputMode_RelVerify,
1324 End,
1325 Child, TextObject,
1326 MUIA_CycleChain, 1,
1327 ButtonFrame,
1328 MUIA_Background, MUII_ButtonBack,
1329 MUIA_Text_PreParse, "\33c",
1330 MUIA_Text_Contents, "Drag Me",
1331 MUIA_Draggable, TRUE,
1332 MUIA_InputMode, MUIV_InputMode_RelVerify,
1333 End,
1334 Child, general.open_button = TextObject,
1335 MUIA_CycleChain, 1,
1336 ButtonFrame,
1337 MUIA_Background, MUII_ButtonBack,
1338 MUIA_Text_PreParse, "\33c",
1339 MUIA_Text_Contents, "Open Window",
1340 MUIA_InputMode, MUIV_InputMode_RelVerify,
1341 End,
1342 Child, TextObject,
1343 MUIA_ContextMenu, context_menu,
1344 MUIA_CycleChain, 1,
1345 ButtonFrame,
1346 MUIA_Background, MUII_ButtonBack,
1347 MUIA_Text_PreParse, "\33c",
1348 MUIA_Text_Contents, "Press Right",
1349 MUIA_InputMode, MUIV_InputMode_RelVerify,
1350 End,
1351 Child, objects_button = TextObject,
1352 MUIA_CycleChain, 1,
1353 ButtonFrame,
1354 MUIA_Background, MUII_ButtonBack,
1355 MUIA_Text_PreParse, "\33c",
1356 MUIA_Text_Contents, "Add Objects",
1357 MUIA_InputMode, MUIV_InputMode_RelVerify,
1358 End,
1359 Child, HVSpace,
1360 Child, HGroup,
1361 Child, HVSpace,
1362 Child, MUI_MakeObject(MUIO_Checkmark,
1363 "_Checkmark"),
1364 End,
1365 Child, HGroup,
1366 Child, MUI_MakeObject(MUIO_Label,
1367 "_Checkmark", 0),
1368 Child, HVSpace,
1369 End,
1370 Child, HVSpace,
1371 Child, HVSpace,
1372 End,
1373 Child, group = VGroup,
1374 GroupFrameT("A vertical group"),
1375 Child, DropTextObject,
1376 MUIA_Dropable, TRUE,
1377 MUIA_CycleChain, 1,
1378 ButtonFrame,
1379 MUIA_Background, MUII_ButtonBack,
1380 MUIA_Text_PreParse, "\33c",
1381 MUIA_Text_Contents, "Drop Here",
1382 MUIA_Dropable, TRUE,
1383 MUIA_InputMode, MUIV_InputMode_RelVerify,
1384 End,
1385 Child, TextObject,
1386 TextFrame,
1387 MUIA_Background, MUII_MARKHALFSHINE,
1388 MUIA_CycleChain, 1,
1389 MUIA_Text_PreParse, "\33c",
1390 MUIA_Text_Contents, "Pattern",
1391 End,
1392 Child, MUI_NewObject(MUIC_Popimage, TAG_DONE),
1393 End,
1394 Child, ScrollgroupObject,
1395 GroupFrameT("A scroll group"),
1396 MUIA_Scrollgroup_Contents, VGroupV,
1397 VirtualFrame,
1398 Child, TextObject,
1399 TextFrame,
1400 MUIA_Text_Contents,
1401 "Line1\nLine2\nLine3\nLine4\n"
1402 "Line5\nLine6\nLine7\nLine8\n"
1403 "\n\n\n"
1404 "Line9\nLine10\nLine11\n",
1405 End,
1406 Child, HGroup,
1407 Child, MUI_MakeObject(MUIO_Button,
1408 "Button9"),
1409 Child, MUI_MakeObject(MUIO_Button,
1410 "Button10"),
1411 End,
1412 End,
1413 End,
1414 End,
1415 Child, popobject = PopobjectObject,
1416 MUIA_Popstring_String,
1417 MUI_MakeObject(MUIO_String, NULL, 200),
1418 MUIA_Popstring_Button, PopButton(MUII_PopUp),
1419 MUIA_Popobject_Object, VGroup,
1420 Child, TextObject,
1421 MUIA_Text_Contents, "test",
1422 End,
1423 Child, listview = ListviewObject,
1424 MUIA_Listview_List, ListObject,
1425 InputListFrame,
1426 MUIA_List_ConstructHook,
1427 &hook_construct,
1428 MUIA_List_DestructHook,
1429 &hook_destruct,
1430 MUIA_List_DisplayHook, &hook_display,
1431 MUIA_List_Format, ",,",
1432 MUIA_List_SourceArray, entries,
1433 MUIA_List_Title, TRUE,
1434 End,
1435 End,
1436 End,
1437 MUIA_Popobject_ObjStrHook, &hook_objstr,
1438 End,
1439 Child, CycleObject,
1440 ButtonFrame,
1441 MUIA_Cycle_Entries, pages,
1442 End,
1443 Child, ScrollbarObject,
1444 MUIA_Group_Horiz, TRUE,
1445 MUIA_Prop_Visible, 100,
1446 MUIA_Prop_Entries, 300,
1447 MUIA_Prop_First, 50,
1448 End,
1449 End,
1451 /* text */
1452 Child, RegisterGroup(text_pages),
1454 Child, VGroup,
1455 Child, TextObject,
1456 MUIA_Background, "2:cfffffff,cfffffff,10000000",
1457 TextFrame,
1458 MUIA_Text_Contents, "\33cHello World!\n"
1459 "This is a text object\n\33lLeft \33bbold\33n\n"
1460 "\33rRight",
1461 End,
1462 Child, TextObject,
1463 TextFrame,
1464 /* Test for a bug with pen specifications as reported here:
1465 https://sourceforge.net/p/aros/bugs/487/
1467 MUIA_Text_Contents, "This is a \33P[3]text \33P[]object \33P[1]with pen specifications",
1468 End,
1469 Child, RectangleObject,
1470 MUIA_VertWeight, 0,
1471 /* Seems to be not supported properly as orginal MUI
1472 doesn't allow to alter the height of the window */
1473 MUIA_Rectangle_HBar, TRUE,
1474 MUIA_Rectangle_BarTitle,"Enter a string",
1475 End,
1476 Child, StringObject,
1477 StringFrame,
1478 MUIA_CycleChain,1,
1479 MUIA_String_AdvanceOnCR, TRUE,
1480 End,
1481 Child, HVSpace,
1482 End,
1484 /* string */
1485 Child, HGroup,
1486 Child, VGroup,
1487 Child, VGroup, GroupFrameT("Default Alignment"),
1488 Child, string.strings[0] = StringObject,
1489 StringFrame,
1490 MUIA_String_Accept,
1491 (IPTR)default_accept_chars,
1492 MUIA_String_Reject,
1493 (IPTR)default_reject_chars,
1494 MUIA_String_AdvanceOnCR, TRUE,
1495 MUIA_String_MaxLen, 9,
1496 MUIA_CycleChain, 1,
1497 MUIA_String_AttachedList, list.lists[0],
1498 End,
1499 End,
1500 Child, VGroup, GroupFrameT("Left Aligned"),
1501 Child, string.strings[1] = StringObject,
1502 StringFrame,
1503 MUIA_String_Accept,
1504 (IPTR)default_accept_chars,
1505 MUIA_String_Reject,
1506 (IPTR)default_reject_chars,
1507 MUIA_String_Format,
1508 MUIV_String_Format_Left,
1509 MUIA_String_AdvanceOnCR, TRUE,
1510 MUIA_String_MaxLen, 9,
1511 MUIA_CycleChain, 1,
1512 MUIA_String_Contents,
1513 (IPTR)default_accept_chars,
1514 MUIA_String_BufferPos, 3,
1515 MUIA_String_AttachedList, list.lists[0],
1516 End,
1517 End,
1518 Child, VGroup, GroupFrameT("Right Aligned"),
1519 Child, string.strings[2] = StringObject,
1520 StringFrame,
1521 MUIA_String_Accept,
1522 (IPTR)default_accept_chars,
1523 MUIA_String_Reject,
1524 (IPTR)default_reject_chars,
1525 MUIA_String_Format,
1526 MUIV_String_Format_Right,
1527 MUIA_String_AdvanceOnCR, TRUE,
1528 MUIA_String_MaxLen, 9,
1529 MUIA_CycleChain, 1,
1530 MUIA_String_AttachedList, list.lists[0],
1531 End,
1532 End,
1533 Child, VGroup, GroupFrameT("Centered"),
1534 Child, string.strings[3] = StringObject,
1535 StringFrame,
1536 MUIA_String_Accept,
1537 (IPTR)default_accept_chars,
1538 MUIA_String_Reject,
1539 (IPTR)default_reject_chars,
1540 MUIA_String_Format,
1541 MUIV_String_Format_Center,
1542 MUIA_String_AdvanceOnCR, TRUE,
1543 MUIA_String_MaxLen, 9,
1544 MUIA_CycleChain, 1,
1545 MUIA_String_Integer, 123,
1546 MUIA_String_AttachedList, list.lists[0],
1547 End,
1548 End,
1549 Child, VGroup, GroupFrameT("Secret"),
1550 Child, string.strings[4] = StringObject,
1551 StringFrame,
1552 MUIA_String_Accept,
1553 (IPTR)default_accept_chars,
1554 MUIA_String_Reject,
1555 (IPTR)default_reject_chars,
1556 MUIA_String_Format,
1557 MUIV_String_Format_Center,
1558 MUIA_String_Secret, TRUE,
1559 MUIA_String_AdvanceOnCR, TRUE,
1560 MUIA_String_MaxLen, 9,
1561 MUIA_CycleChain, 1,
1562 MUIA_String_AttachedList, list.lists[0],
1563 End,
1564 End,
1565 Child, HGroup, GroupFrameT("Narrow"),
1566 Child, HVSpace,
1567 Child, string.strings[5] = StringObject,
1568 StringFrame,
1569 MUIA_String_Accept,
1570 (IPTR)default_accept_chars,
1571 MUIA_String_Reject,
1572 (IPTR)default_reject_chars,
1573 MUIA_String_Format,
1574 MUIV_String_Format_Center,
1575 MUIA_String_AdvanceOnCR, TRUE,
1576 MUIA_MaxWidth, 20,
1577 MUIA_String_MaxLen, 9,
1578 MUIA_CycleChain, 1,
1579 MUIA_String_AttachedList, list.lists[0],
1580 End,
1581 Child, HVSpace,
1582 End,
1583 Child, HVSpace,
1584 End,
1585 Child, VGroup, GroupFrameT("Controls"),
1586 Child, HGroup,
1587 Child, string.accept_all_check =
1588 MUI_MakeObject(MUIO_Checkmark, NULL),
1589 Child, MUI_MakeObject(MUIO_Label,
1590 "Accept all characters", 0),
1591 Child, HVSpace,
1592 End,
1593 Child, ColGroup(2),
1594 Child, MUI_MakeObject(MUIO_Label,
1595 "Acceptable characters:", 0),
1596 Child, string.accept_string = StringObject,
1597 StringFrame,
1598 MUIA_String_Contents,
1599 (IPTR)default_accept_chars,
1600 End,
1601 Child, MUI_MakeObject(MUIO_Label,
1602 "Unacceptable characters:", 0),
1603 Child, string.reject_string = StringObject,
1604 StringFrame,
1605 End,
1606 Child, MUI_MakeObject(MUIO_Label,
1607 "Cursor position:", 0),
1608 Child, string.cursor_pos_slider =
1609 SliderObject,
1610 MUIA_Group_Horiz, TRUE,
1611 MUIA_Numeric_Min, 0,
1612 End,
1613 Child, MUI_MakeObject(MUIO_Label,
1614 "Display position:", 0),
1615 Child, string.display_pos_slider =
1616 SliderObject,
1617 MUIA_Group_Horiz, TRUE,
1618 MUIA_Numeric_Min, 0,
1619 End,
1620 Child, MUI_MakeObject(MUIO_Label,
1621 "Integer value:", 0),
1622 Child, string.integer_string =
1623 StringObject,
1624 StringFrame,
1625 MUIA_String_Accept, (IPTR)digits,
1626 End,
1627 Child, MUI_MakeObject(MUIO_Label,
1628 "Plaintext:", 0),
1629 Child, string.plaintext_string =
1630 StringObject,
1631 StringFrame,
1632 End,
1633 Child, MUI_MakeObject(MUIO_Label,
1634 "Maximum string length:", 0),
1635 Child, string.max_len_text = TextObject,
1636 TextFrame,
1637 MUIA_Text_Contents, "Unknown",
1638 End,
1639 End,
1640 Child, VGroup,
1641 Child, HGroup,
1642 Child, string.cr_advance_check =
1643 MUI_MakeObject(MUIO_Checkmark,
1644 NULL),
1645 Child, MUI_MakeObject(MUIO_Label,
1646 "Advance on CR", 0),
1647 Child, HVSpace,
1648 End,
1649 Child, HGroup,
1650 Child, string.attach_list_check =
1651 MUI_MakeObject(MUIO_Checkmark,
1652 NULL),
1653 Child, MUI_MakeObject(MUIO_Label,
1654 "Attach list", 0),
1655 Child, HVSpace,
1656 End,
1657 #if 0
1658 Child, HGroup,
1659 Child, string.standard_hook_check =
1660 MUI_MakeObject(MUIO_Checkmark,
1661 NULL),
1662 Child, MUI_MakeObject(MUIO_Label,
1663 "Use standard edit hook", 0),
1664 Child, HVSpace,
1665 End,
1666 Child, HGroup,
1667 Child, string.custom_hook_check =
1668 MUI_MakeObject(MUIO_Checkmark,
1669 NULL),
1670 Child, MUI_MakeObject(MUIO_Label,
1671 "Use custom edit hook", 0),
1672 Child, HVSpace,
1673 End,
1674 #endif
1675 End,
1676 Child, HVSpace,
1677 End,
1679 End,
1680 End,
1682 /* boopsi */
1683 Child, VGroup,
1684 Child, wheel = BoopsiObject, /* MUI/Boopsi tags mixed */
1685 GroupFrame,
1686 /* boopsi objects don't know */
1687 /* their sizes, so we help */
1688 /* keep important values */
1689 /* during window resize */
1690 MUIA_Boopsi_ClassID, "colorwheel.gadget",
1691 MUIA_Boopsi_MinWidth , 30,
1692 MUIA_Boopsi_MinHeight, 30,
1693 MUIA_Boopsi_Remember , WHEEL_Saturation,
1694 MUIA_Boopsi_Remember , WHEEL_Hue,
1695 /* this magic fills in the screen pointer */
1696 MUIA_Boopsi_TagScreen, WHEEL_Screen,
1697 WHEEL_Screen, NULL,
1698 GA_Left, 0,
1699 GA_Top, 0, /* MUI will automatically */
1700 GA_Width, 0, /* fill in the correct values */
1701 GA_Height, 0,
1702 ICA_TARGET, ICTARGET_IDCMP,
1703 /* needed for notification */
1704 WHEEL_Saturation, 0, /* start in the center */
1705 MUIA_FillArea, TRUE,
1706 /* use this because it defaults to FALSE
1707 for boopsi gadgets but the colorwheel
1708 doesn't bother about redrawing its
1709 background */
1710 End,
1712 Child, r_slider = SliderObject,
1713 MUIA_Group_Horiz, TRUE,
1714 MUIA_Numeric_Min, 0,
1715 MUIA_Numeric_Max, 255,
1716 End,
1717 Child, g_slider = SliderObject,
1718 MUIA_Group_Horiz, TRUE,
1719 MUIA_Numeric_Min, 0,
1720 MUIA_Numeric_Max, 255,
1721 End,
1722 Child, b_slider = SliderObject,
1723 MUIA_Group_Horiz, TRUE,
1724 MUIA_Numeric_Min, 0,
1725 MUIA_Numeric_Max, 255,
1726 End,
1727 Child, hue_gauge = GaugeObject,
1728 GaugeFrame,
1729 MUIA_Gauge_Horiz, TRUE,
1730 MUIA_Gauge_Max, 255,
1731 MUIA_Gauge_Divide, 1<<24,
1732 MUIA_Gauge_InfoText, "Hue: %ld",
1733 End,
1734 End,
1736 /* color */
1737 Child, RegisterGroup(color_pages),
1738 Child, VGroup, GroupFrameT("Palette"),
1739 Child, PaletteObject,
1740 End,
1741 End,
1742 Child, HGroup,
1743 Child, VGroup, GroupFrameT("Colorfield"),
1745 Child, HGroup,
1746 Child, colorfield = ColorfieldObject,
1747 MUIA_Colorfield_RGB, default_color,
1748 MUIA_Colorfield_Pen, 253,
1749 End,
1750 Child, colorfield2 = ColorfieldObject,
1751 MUIA_Colorfield_Red, default_color[0],
1752 MUIA_Colorfield_Green, default_color[1],
1753 MUIA_Colorfield_Blue, default_color[2],
1754 End,
1755 End,
1756 Child, colorfield_reset_button =
1757 MUI_MakeObject(MUIO_Button,
1758 "Reset"),
1759 Child, HGroup,
1760 Child,
1761 MUI_MakeObject(MUIO_Label, "Pen:", 0),
1762 Child, colorfield_pen = StringObject,
1763 StringFrame,
1764 End,
1765 End,
1766 End,
1767 Child, VGroup, GroupFrameT("Coloradjust"),
1768 Child, coloradjust = ColoradjustObject,
1769 MUIA_Coloradjust_RGB, default_color,
1770 End,
1771 End,
1772 End,
1773 Child, HGroup,
1774 Child, VGroup,
1775 Child, VGroup, GroupFrameT("Pendisplay"),
1776 Child, HGroup,
1777 Child, pendisplay,
1778 Child, pendisplay2 = PendisplayObject,
1779 MUIA_Pendisplay_RGBcolor,
1780 default_color,
1781 End,
1782 End,
1783 Child, ColGroup(2),
1784 Child,
1785 MUI_MakeObject(
1786 MUIO_Label, "Pen:", 0),
1787 Child, HGroup,
1788 Child, pendisplay_pen =
1789 StringObject, StringFrame,
1790 End,
1791 Child, HVSpace,
1792 Child, reference_check =
1793 MUI_MakeObject(MUIO_Checkmark,
1794 NULL),
1795 Child, MUI_MakeObject(MUIO_Label,
1796 "Reference", 0),
1797 End,
1798 Child,
1799 MUI_MakeObject(
1800 MUIO_Label, "Penspec:", 0),
1801 Child, pendisplay_spec = StringObject,
1802 StringFrame,
1803 End,
1804 End,
1805 Child, HGroup,
1806 Child, shine_button =
1807 MUI_MakeObject(MUIO_Button,
1808 "Shine"),
1809 Child, shadow_button =
1810 MUI_MakeObject(MUIO_Button,
1811 "Shadow"),
1812 Child, yellow_button =
1813 MUI_MakeObject(MUIO_Button,
1814 "Yellow"),
1815 End,
1816 End,
1817 Child, VGroup, GroupFrameT("Poppen"),
1818 Child, poppen = PoppenObject,
1819 End,
1820 End,
1821 End,
1822 Child, VGroup, GroupFrameT("Penadjust"),
1823 Child, PenadjustObject,
1824 End,
1825 End,
1826 End,
1827 End,
1829 /* edit */
1830 Child, VGroup,
1831 Child, editor_text = StringObject,
1832 StringFrame,
1833 End,
1834 Child, PopaslObject,
1835 ASLFR_DoSaveMode, TRUE,
1836 MUIA_Popstring_String, filename_string =
1837 MUI_MakeObject(MUIO_String, NULL, 200),
1838 MUIA_Popstring_Button, PopButton(MUII_PopFile),
1839 End,
1840 Child, save_button =
1841 MUI_MakeObject(MUIO_Button, "Save"),
1842 End,
1844 /* lists */
1845 Child, RegisterGroup(list_pages),
1846 Child, VGroup,
1847 Child, ColGroup(LIST_COUNT),
1848 Child, VGroup, GroupFrameT("No Multiselect"),
1849 Child, list.lists[0],
1850 End,
1851 Child, VGroup,
1852 GroupFrameT("Default Multiselect"),
1853 Child, list.lists[1],
1854 End,
1855 Child, VGroup,
1856 GroupFrameT("Shifted Multiselect"),
1857 Child, list.lists[2],
1858 End,
1859 Child, VGroup,
1860 GroupFrameT("Unconditional Multiselect"),
1861 Child, list.lists[3],
1862 End,
1863 Child, VGroup,
1864 GroupFrameT("Read Only"),
1865 Child, list.lists[4],
1866 End,
1867 End,
1868 Child, HGroup,
1869 MUIA_Group_HorizSpacing, 0,
1870 Child, RectangleObject,
1871 MUIA_HorizWeight, 1,
1872 End,
1873 Child, list.list_radios = RadioObject,
1874 MUIA_Radio_Entries, empty,
1875 MUIA_Group_Horiz, TRUE,
1876 MUIA_HorizWeight, 1000,
1877 End,
1878 Child, RectangleObject,
1879 MUIA_HorizWeight, 1,
1880 End,
1881 End,
1882 Child, RectangleObject,
1883 MUIA_VertWeight, 0,
1884 MUIA_Rectangle_HBar, TRUE,
1885 MUIA_Rectangle_BarTitle, "List Controls",
1886 End,
1887 Child, ColGroup(6),
1888 Child, MUI_MakeObject(MUIO_Label,
1889 "Affected index 1:", 0),
1890 Child, list.index1_string =
1891 StringObject,
1892 StringFrame,
1893 MUIA_String_Accept, (IPTR)digits,
1894 MUIA_String_Integer, 0,
1895 End,
1896 Child, HGroup,
1897 Child, list.draggable_check =
1898 MUI_MakeObject(MUIO_Checkmark, NULL),
1899 Child, MUI_MakeObject(MUIO_Label,
1900 "Draggable", 0),
1901 Child, HVSpace,
1902 End,
1903 Child, HGroup,
1904 Child, list.showdropmarks_check =
1905 MUI_MakeObject(MUIO_Checkmark, NULL),
1906 Child, MUI_MakeObject(MUIO_Label,
1907 "Show drop marks", 0),
1908 Child, HVSpace,
1909 End,
1910 Child, HGroup,
1911 Child, list.autovisible_check =
1912 MUI_MakeObject(MUIO_Checkmark, NULL),
1913 Child, MUI_MakeObject(MUIO_Label,
1914 "Auto visible", 0),
1915 Child, HVSpace,
1916 End,
1917 Child, list.reset_button =
1918 MUI_MakeObject(MUIO_Button, "Reset"),
1920 Child, MUI_MakeObject(MUIO_Label,
1921 "Affected index 2:", 0),
1922 Child, list.index2_string =
1923 StringObject,
1924 StringFrame,
1925 MUIA_String_Accept, (IPTR)digits,
1926 MUIA_String_Integer, 0,
1927 End,
1928 Child, HGroup,
1929 Child, list.dragsortable_check =
1930 MUI_MakeObject(MUIO_Checkmark, NULL),
1931 Child, MUI_MakeObject(MUIO_Label,
1932 "Drag sortable", 0),
1933 Child, HVSpace,
1934 End,
1935 Child, HGroup,
1936 Child, list.multitest_check =
1937 MUI_MakeObject(MUIO_Checkmark, NULL),
1938 Child, MUI_MakeObject(MUIO_Label,
1939 "Filter multiselect", 0),
1940 Child, HVSpace,
1941 End,
1942 Child, HGroup,
1943 Child, list.quiet_check =
1944 MUI_MakeObject(MUIO_Checkmark, NULL),
1945 Child, MUI_MakeObject(MUIO_Label,
1946 "Quiet", 0),
1947 Child, HVSpace,
1948 End,
1949 Child, list.enable_button =
1950 MUI_MakeObject(MUIO_Button, "Enable"),
1952 Child, MUI_MakeObject(MUIO_Label,
1953 "Move/exchange mode 1:", 0),
1954 Child, list.move1_cycle = CycleObject,
1955 ButtonFrame,
1956 MUIA_Cycle_Entries, list_move1_modes,
1957 End,
1958 Child, list.move_button =
1959 MUI_MakeObject(MUIO_Button, "Move"),
1960 Child, list.sort_button =
1961 MUI_MakeObject(MUIO_Button, "Sort"),
1962 Child, MUI_MakeObject(MUIO_Label,
1963 "Title:", 0),
1964 Child, list.title_string =
1965 StringObject,
1966 StringFrame,
1967 End,
1969 Child, MUI_MakeObject(MUIO_Label,
1970 "Move/exchange mode 2:", 0),
1971 Child, list.move2_cycle = CycleObject,
1972 ButtonFrame,
1973 MUIA_Cycle_Entries, list_move2_modes,
1974 End,
1975 Child, list.exchange_button =
1976 MUI_MakeObject(MUIO_Button, "Exchange"),
1977 Child, list.redraw_button =
1978 MUI_MakeObject(MUIO_Button, "Redraw"),
1979 Child, MUI_MakeObject(MUIO_Label,
1980 "Entries:", 0),
1981 Child, list.entries_text = TextObject,
1982 TextFrame,
1983 MUIA_Text_Contents, "N/A",
1984 End,
1986 Child, MUI_MakeObject(MUIO_Label,
1987 "Jump mode:", 0),
1988 Child, list.jump_cycle = CycleObject,
1989 ButtonFrame,
1990 MUIA_Cycle_Entries, list_jump_modes,
1991 End,
1992 Child, list.jump_button =
1993 MUI_MakeObject(MUIO_Button, "Jump"),
1994 Child, list.toggle_button =
1995 MUI_MakeObject(MUIO_Button, "Toggle"),
1996 Child, MUI_MakeObject(MUIO_Label,
1997 "Visible entries:", 0),
1998 Child, list.visible_text = TextObject,
1999 TextFrame,
2000 MUIA_Text_Contents, "N/A",
2001 End,
2003 Child, MUI_MakeObject(MUIO_Label,
2004 "Select/redraw mode:", 0),
2005 Child, list.select_cycle = CycleObject,
2006 ButtonFrame,
2007 MUIA_Cycle_Entries, list_select_modes,
2008 End,
2009 Child, list.select_button =
2010 MUI_MakeObject(MUIO_Button, "Select"),
2011 Child, list.deselect_button =
2012 MUI_MakeObject(MUIO_Button, "Deselect"),
2013 Child, MUI_MakeObject(MUIO_Label,
2014 "First visible index:", 0),
2015 Child, list.first_text = TextObject,
2016 TextFrame,
2017 MUIA_Text_Contents, "N/A",
2018 End,
2020 Child, MUI_MakeObject(MUIO_Label,
2021 "Insert mode:", 0),
2022 Child, list.insert_cycle = CycleObject,
2023 ButtonFrame,
2024 MUIA_Cycle_Entries, list_insert_modes,
2025 End,
2026 Child, list.insert_single_button =
2027 MUI_MakeObject(MUIO_Button,
2028 "Insert Single"),
2029 Child, list.insert_multiple_button =
2030 MUI_MakeObject(MUIO_Button,
2031 "Insert Multiple"),
2032 Child, MUI_MakeObject(MUIO_Label,
2033 "Last insertion index:", 0),
2034 Child, list.insert_text = TextObject,
2035 TextFrame,
2036 MUIA_Text_Contents, "N/A",
2037 End,
2039 Child, MUI_MakeObject(MUIO_Label,
2040 "Remove mode:", 0),
2041 Child, list.remove_cycle = CycleObject,
2042 ButtonFrame,
2043 MUIA_Cycle_Entries, list_remove_modes,
2044 End,
2045 Child, list.remove_button =
2046 MUI_MakeObject(MUIO_Button, "Remove"),
2047 Child, list.clear_button =
2048 MUI_MakeObject(MUIO_Button, "Clear"),
2049 Child, MUI_MakeObject(MUIO_Label,
2050 "Active index:", 0),
2051 Child, list.active_text = TextObject,
2052 TextFrame,
2053 MUIA_Text_Contents, "N/A",
2054 End,
2056 Child, MUI_MakeObject(MUIO_Label,
2057 "Activate mode:", 0),
2058 Child, list.activate_cycle = CycleObject,
2059 ButtonFrame,
2060 MUIA_Cycle_Entries, list_activate_modes,
2061 End,
2062 Child, list.activate_button =
2063 MUI_MakeObject(MUIO_Button, "Activate"),
2064 Child, list.deactivate_button =
2065 MUI_MakeObject(MUIO_Button, "Deactivate"),
2066 Child, MUI_MakeObject(MUIO_Label,
2067 "Selected entries:", 0),
2068 Child, list.selected_text = TextObject,
2069 TextFrame,
2070 MUIA_Text_Contents, "N/A",
2071 End,
2073 Child, HVSpace,
2074 Child, HVSpace,
2075 Child, HVSpace,
2076 Child, HVSpace,
2077 Child, MUI_MakeObject(MUIO_Label,
2078 "Last drop index:", 0),
2079 Child, list.drop_text = TextObject,
2080 TextFrame,
2081 MUIA_Text_Contents, "N/A",
2082 End,
2083 End,
2084 End,
2085 Child, VGroup,
2086 Child, ColGroup(MULTI_LIST_COUNT),
2087 Child, VGroup, GroupFrameT("Standard Format"),
2088 Child, list.multi_lists[0] = ListviewObject,
2089 MUIA_Listview_List,
2090 ListObject,
2091 InputListFrame,
2092 MUIA_List_ConstructHook,
2093 &hook_construct,
2094 MUIA_List_DestructHook,
2095 &hook_destruct,
2096 MUIA_List_DisplayHook,
2097 &hook_display,
2098 MUIA_List_Format, list_format,
2099 MUIA_List_SourceArray, entries,
2100 MUIA_List_Title, TRUE,
2101 MUIA_List_AdjustWidth, TRUE,
2102 End,
2103 MUIA_Listview_MultiSelect,
2104 MUIV_Listview_MultiSelect_None,
2105 MUIA_Listview_DefClickColumn, 1,
2106 MUIA_CycleChain, 1,
2107 End,
2108 End,
2109 Child, VGroup, GroupFrameT("Custom Format"),
2110 Child, list.multi_lists[1] = ListviewObject,
2111 MUIA_Listview_List,
2112 ListObject,
2113 InputListFrame,
2114 MUIA_List_Format, list_format,
2115 MUIA_List_Title, TRUE,
2116 MUIA_List_AdjustHeight, TRUE,
2117 End,
2118 MUIA_Listview_MultiSelect,
2119 MUIV_Listview_MultiSelect_None,
2120 MUIA_CycleChain, 1,
2121 End,
2122 Child, HVSpace,
2123 End,
2124 End,
2125 Child, RectangleObject,
2126 MUIA_VertWeight, 0,
2127 MUIA_Rectangle_HBar, TRUE,
2128 MUIA_Rectangle_BarTitle, "List Controls",
2129 End,
2130 Child, HGroup,
2131 Child, MUI_MakeObject(MUIO_Label, "Format:", 0),
2132 Child, list.format_string = StringObject,
2133 StringFrame,
2134 MUIA_CycleChain, 1,
2135 End,
2136 Child, list.showheadings_check =
2137 MUI_MakeObject(MUIO_Checkmark, NULL),
2138 Child, MUI_MakeObject(MUIO_Label,
2139 "Show column headings", 0),
2140 Child, list.showimage_check =
2141 MUI_MakeObject(MUIO_Checkmark, NULL),
2142 Child, MUI_MakeObject(MUIO_Label,
2143 "Show image", 0),
2144 End,
2145 Child, HGroup,
2146 Child, MUI_MakeObject(MUIO_Label,
2147 "Default clicked column:", 0),
2148 Child, list.def_column_string = StringObject,
2149 StringFrame,
2150 MUIA_String_Accept, (IPTR)digits,
2151 MUIA_String_Integer, -1,
2152 MUIA_CycleChain, 1,
2153 End,
2154 Child, MUI_MakeObject(MUIO_Label,
2155 "Clicked column:", 0),
2156 Child, list.column_string = StringObject,
2157 MUIA_ShowMe, FALSE,
2158 End,
2159 Child, list.column_text = TextObject,
2160 TextFrame,
2161 MUIA_Text_Contents, "N/A",
2162 End,
2163 End,
2164 End,
2165 End,
2167 /* gauges */
2168 Child, HGroup,
2169 Child, VGroup,
2170 Child, VGroup,
2171 GroupFrame,
2172 Child, GaugeObject,
2173 GaugeFrame,
2174 MUIA_Gauge_InfoText, "%ld %%",
2175 MUIA_Gauge_Horiz, TRUE,
2176 MUIA_Gauge_Current, 25,
2177 End,
2178 Child, ScaleObject,
2179 End,
2180 End,
2181 Child, VGroup,
2182 GroupFrame,
2183 Child, GaugeObject,
2184 GaugeFrame,
2185 MUIA_Gauge_InfoText, "%ld %%",
2186 MUIA_Gauge_Horiz, TRUE,
2187 MUIA_Gauge_Current, 50,
2188 End,
2189 Child, ScaleObject,
2190 End,
2191 End,
2192 Child, VGroup,
2193 GroupFrame,
2194 Child, GaugeObject,
2195 GaugeFrame,
2196 MUIA_Gauge_InfoText, "%ld %%",
2197 MUIA_Gauge_Horiz, TRUE,
2198 MUIA_Gauge_Current, 75,
2199 End,
2200 Child, ScaleObject,
2201 End,
2202 End,
2203 End,
2204 Child, HGroup,
2205 Child, HVSpace,
2206 Child, GaugeObject,
2207 GaugeFrame,
2208 MUIA_Gauge_InfoText, "%ld %%",
2209 MUIA_Gauge_Current, 25,
2210 End,
2211 Child, GaugeObject,
2212 GaugeFrame,
2213 MUIA_Gauge_InfoText, "%ld %%",
2214 MUIA_Gauge_Current, 50,
2215 End,
2216 Child, GaugeObject,
2217 GaugeFrame,
2218 MUIA_Gauge_InfoText, "%ld %%",
2219 MUIA_Gauge_Current, 75,
2220 End,
2221 Child, HVSpace,
2222 End,
2223 End,
2225 /* numeric */
2226 Child, HGroup,
2227 Child, ColGroup(2),
2228 GroupFrameT("Horizontal Sliders"),
2229 Child, MUI_MakeObject(MUIO_Label, "Normal:", 0),
2230 Child, numerics[HNSLIDER] = SliderObject,
2231 MUIA_Slider_Horiz, TRUE,
2232 MUIA_Numeric_Min, NUMERIC_MIN,
2233 MUIA_Numeric_Max, NUMERIC_MAX,
2234 MUIA_CycleChain, 1,
2235 End,
2236 Child, MUI_MakeObject(MUIO_Label, "Reverse:", 0),
2237 Child, numerics[HRSLIDER] = SliderObject,
2238 MUIA_Numeric_Reverse, TRUE,
2239 MUIA_Numeric_Min, NUMERIC_MIN,
2240 MUIA_Numeric_Max, NUMERIC_MAX,
2241 MUIA_CycleChain, 1,
2242 End,
2243 Child, MUI_MakeObject(MUIO_Label, "Quiet:", 0),
2244 Child, numerics[HQSLIDER] = SliderObject,
2245 MUIA_Slider_Quiet, TRUE,
2246 MUIA_Numeric_Min, NUMERIC_MIN,
2247 MUIA_Numeric_Max, NUMERIC_MAX,
2248 MUIA_CycleChain, 1,
2249 End,
2250 End,
2251 Child, ColGroup(3),
2252 GroupFrameT("Vertical Sliders"),
2253 Child, MUI_MakeObject(MUIO_Label, "Normal", 0),
2254 Child, MUI_MakeObject(MUIO_Label, "Reverse", 0),
2255 Child, MUI_MakeObject(MUIO_Label, "Quiet", 0),
2256 Child, numerics[VNSLIDER] = SliderObject,
2257 MUIA_Slider_Horiz, FALSE,
2258 MUIA_Numeric_Min, NUMERIC_MIN,
2259 MUIA_Numeric_Max, NUMERIC_MAX,
2260 MUIA_CycleChain, 1,
2261 End,
2262 Child, numerics[VRSLIDER] = SliderObject,
2263 MUIA_Slider_Horiz, FALSE,
2264 MUIA_Numeric_Reverse, TRUE,
2265 MUIA_Numeric_Min, NUMERIC_MIN,
2266 MUIA_Numeric_Max, NUMERIC_MAX,
2267 MUIA_CycleChain, 1,
2268 End,
2269 Child, numerics[VQSLIDER] = SliderObject,
2270 MUIA_Slider_Horiz, FALSE,
2271 MUIA_Slider_Quiet, TRUE,
2272 MUIA_Numeric_Min, NUMERIC_MIN,
2273 MUIA_Numeric_Max, NUMERIC_MAX,
2274 MUIA_CycleChain, 1,
2275 End,
2276 End,
2277 Child, ColGroup(2),
2278 GroupFrameT("Numeric Buttons"),
2279 Child, MUI_MakeObject(MUIO_Label, "Normal:", 0),
2280 Child, numerics[NNUMERICBUTTON] =
2281 NumericbuttonObject,
2282 MUIA_Numeric_Min, NUMERIC_MIN,
2283 MUIA_Numeric_Max, NUMERIC_MAX,
2284 MUIA_CycleChain, 1,
2285 End,
2286 Child, MUI_MakeObject(MUIO_Label, "Reverse:", 0),
2287 Child, numerics[RNUMERICBUTTON] =
2288 NumericbuttonObject,
2289 MUIA_Numeric_Reverse, TRUE,
2290 MUIA_Numeric_Min, NUMERIC_MIN,
2291 MUIA_Numeric_Max, NUMERIC_MAX,
2292 MUIA_CycleChain, 1,
2293 End,
2294 End,
2295 Child, ColGroup(2),
2296 GroupFrameT("Knobs"),
2297 Child, MUI_MakeObject(MUIO_Label, "Normal", 0),
2298 Child, MUI_MakeObject(MUIO_Label, "Reverse", 0),
2299 Child, numerics[NKNOB] = KnobObject,
2300 MUIA_Numeric_Min, NUMERIC_MIN,
2301 MUIA_Numeric_Max, NUMERIC_MAX,
2302 MUIA_CycleChain, 1,
2303 End,
2304 Child, numerics[RKNOB] = KnobObject,
2305 MUIA_Numeric_Reverse, TRUE,
2306 MUIA_Numeric_Min, NUMERIC_MIN,
2307 MUIA_Numeric_Max, NUMERIC_MAX,
2308 MUIA_CycleChain, 1,
2309 End,
2310 End,
2311 Child, ColGroup(2),
2312 Child, MUI_MakeObject(MUIO_Label,
2313 "Minimum Value:", 0),
2314 Child, min_string = (Object *)StringObject,
2315 StringFrame,
2316 MUIA_String_Accept, (IPTR)digits,
2317 MUIA_String_Integer, NUMERIC_MIN,
2318 MUIA_CycleChain, 1,
2319 End,
2320 Child, MUI_MakeObject(MUIO_Label,
2321 "Maximum Value:", 0),
2322 Child, max_string = (Object *)StringObject,
2323 StringFrame,
2324 MUIA_String_Accept, (IPTR)digits,
2325 MUIA_String_Integer, NUMERIC_MAX,
2326 MUIA_CycleChain, 1,
2327 End,
2328 Child, slider_button = TextObject,
2329 ButtonFrame,
2330 MUIA_InputMode, MUIV_InputMode_RelVerify,
2331 MUIA_CycleChain, 1,
2332 MUIA_Background, MUII_ButtonBack,
2333 MUIA_Text_PreParse, "\33c",
2334 MUIA_Text_Contents,
2335 "Change Slider Orientations",
2336 End,
2337 Child, MUI_MakeObject(MUIO_Label, "", 0),
2338 End,
2339 End,
2341 /* radios */
2342 Child, HGroup,
2343 Child, VGroup,
2344 Child, RadioObject,
2345 GroupFrame,
2346 MUIA_Radio_Entries, radio_entries1,
2347 End,
2348 Child, country_radio[0] = RadioObject,
2349 GroupFrame,
2350 MUIA_Radio_Entries, radio_entries2,
2351 MUIA_Radio_Active, 1,
2352 End,
2353 End,
2354 Child, HGroup,
2355 Child, RadioObject,
2356 GroupFrame,
2357 MUIA_Radio_Entries, radio_entries1,
2358 End,
2359 Child, country_radio[1] = RadioObject,
2360 GroupFrame,
2361 MUIA_Radio_Entries, radio_entries2,
2362 MUIA_Radio_Active, 1,
2363 End,
2364 End,
2365 End,
2367 #if defined(TEST_ICONLIST)
2368 /* iconlist */
2369 Child, HGroup,
2370 Child, volume_iconlist =
2371 MUI_NewObject(MUIC_IconVolumeList, GroupFrame,
2372 TAG_DONE),
2373 Child, drawer_iconlist =
2374 MUI_NewObject(MUIC_IconDrawerList, GroupFrame,
2375 MUIA_IconDrawerList_Drawer, "SYS:",
2376 TAG_DONE),
2377 End,
2378 #endif
2380 /* balancing */
2381 Child, HGroup,
2382 Child, create_balance_column(),
2383 Child, BalanceObject,
2384 End,
2386 Child, create_balance_column(),
2387 Child, BalanceObject,
2388 End,
2390 Child, create_balance_column(),
2391 Child, BalanceObject,
2392 End,
2394 Child, create_balance_column(),
2395 Child, BalanceObject,
2396 End,
2398 Child, create_balance_column(),
2400 End,
2402 End,
2404 Child, HGroup,
2405 Child, about_button = TextObject,
2406 ButtonFrame,
2407 MUIA_InputMode, MUIV_InputMode_RelVerify,
2408 MUIA_CycleChain, 1,
2409 MUIA_Background, MUII_ButtonBack,
2410 MUIA_Text_PreParse, "\33c",
2411 MUIA_Text_Contents, "About",
2412 End,
2413 Child, quit_button = TextObject,
2414 ButtonFrame,
2415 MUIA_InputMode, MUIV_InputMode_RelVerify,
2416 MUIA_CycleChain, 1,
2417 MUIA_Background, MUII_ButtonBack,
2418 MUIA_ControlChar, 'q',
2419 MUIA_Text_HiChar, 'q',
2420 MUIA_Text_PreParse, "\33c",
2421 MUIA_Text_Contents, "Quit",
2422 End,
2423 End,
2424 End,
2425 End,
2427 SubWindow, second_wnd = WindowObject,
2428 MUIA_Window_Title, "Second window",
2429 WindowContents, VGroup,
2430 Child, DropTextObject,
2431 MUIA_Text_Contents, "Drop here",
2432 MUIA_Dropable, TRUE,
2433 End,
2434 End,
2435 End,
2437 End;
2439 if (app)
2441 ULONG sigs = 0;
2443 DoMethod(wnd, MUIM_Notify, MUIA_Window_CloseRequest, TRUE, app, 2,
2444 MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit);
2445 DoMethod(second_wnd, MUIM_Notify, MUIA_Window_CloseRequest, TRUE,
2446 second_wnd, 3, MUIM_Set, MUIA_Window_Open, FALSE);
2447 DoMethod(general.open_button, MUIM_Notify, MUIA_Pressed, FALSE,
2448 second_wnd, 3, MUIM_Set, MUIA_Window_Open, TRUE);
2449 DoMethod(about_button, MUIM_Notify, MUIA_Pressed, FALSE, app, 2,
2450 MUIM_Application_AboutMUI, NULL);
2451 DoMethod(quit_button, MUIM_Notify, MUIA_Pressed, FALSE, app, 2,
2452 MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit);
2453 DoMethod(objects_button, MUIM_Notify, MUIA_Pressed, FALSE, app, 2,
2454 MUIM_CallHook, &hook_objects);
2455 DoMethod(repeat_button, MUIM_Notify, MUIA_Timer, MUIV_EveryTime,
2456 app, 2, MUIM_CallHook, &hook);
2458 /* Notifications and set-up for string objects */
2459 DoMethod(string.max_len_text, MUIM_SetAsString, MUIA_Text_Contents,
2460 "%ld", XGET(string.strings[0], MUIA_String_MaxLen) - 1);
2461 set(string.cursor_pos_slider, MUIA_Numeric_Max,
2462 XGET(string.strings[0], MUIA_String_MaxLen) - 1);
2463 set(string.display_pos_slider, MUIA_Numeric_Max,
2464 XGET(string.strings[0], MUIA_String_MaxLen) - 1);
2465 set(string.cr_advance_check, MUIA_Selected, TRUE);
2466 set(string.attach_list_check, MUIA_Selected, TRUE);
2467 set(string.strings[1], MUIA_Disabled,
2468 XGET(string.strings[1], MUIA_String_Format)
2469 != MUIV_String_Format_Left);
2470 set(string.strings[2], MUIA_Disabled,
2471 XGET(string.strings[2], MUIA_String_Format)
2472 != MUIV_String_Format_Right);
2473 set(string.strings[3], MUIA_Disabled,
2474 XGET(string.strings[3], MUIA_String_Format)
2475 != MUIV_String_Format_Center);
2476 set(string.strings[4], MUIA_Disabled,
2477 !XGET(string.strings[4], MUIA_String_Secret));
2478 set(string.strings[0], MUIA_String_MaxLen, 100);
2479 set(string.reject_string, MUIA_String_Contents,
2480 (IPTR)default_reject_chars);
2482 for (i = 0; i < STRING_COUNT; i++)
2484 if (i == 0)
2486 DoMethod(string.accept_string, MUIM_Notify,
2487 MUIA_String_Contents, MUIV_EveryTime, string.strings[i],
2488 3, MUIM_Set, MUIA_String_Accept, MUIV_TriggerValue);
2489 DoMethod(string.cr_advance_check, MUIM_Notify, MUIA_Selected,
2490 MUIV_EveryTime, string.strings[i], 3, MUIM_Set,
2491 MUIA_String_AdvanceOnCR, MUIV_TriggerValue);
2492 DoMethod(string.cursor_pos_slider, MUIM_Notify,
2493 MUIA_Numeric_Value, MUIV_EveryTime, string.strings[i], 3,
2494 MUIM_Set, MUIA_String_BufferPos, MUIV_TriggerValue);
2495 DoMethod(string.display_pos_slider, MUIM_Notify,
2496 MUIA_Numeric_Value, MUIV_EveryTime, string.strings[i], 3,
2497 MUIM_Set, MUIA_String_DisplayPos, MUIV_TriggerValue);
2498 DoMethod(string.attach_list_check, MUIM_Notify, MUIA_Selected,
2499 TRUE, string.strings[i], 3, MUIM_Set,
2500 MUIA_String_AttachedList, list.lists[0]);
2501 DoMethod(string.attach_list_check, MUIM_Notify, MUIA_Selected,
2502 FALSE, string.strings[i], 3, MUIM_Set,
2503 MUIA_String_AttachedList, NULL);
2505 else
2507 DoMethod(string.strings[0], MUIM_Notify, MUIA_String_Accept,
2508 MUIV_EveryTime, string.strings[i], 3, MUIM_Set,
2509 MUIA_String_Accept, MUIV_TriggerValue);
2510 DoMethod(string.strings[0], MUIM_Notify,
2511 MUIA_String_AdvanceOnCR, MUIV_EveryTime,
2512 string.strings[i], 3, MUIM_Set, MUIA_String_AdvanceOnCR,
2513 MUIV_TriggerValue);
2514 DoMethod(string.strings[0], MUIM_Notify,
2515 MUIA_String_BufferPos, MUIV_EveryTime,
2516 string.strings[i], 3, MUIM_Set, MUIA_String_BufferPos,
2517 MUIV_TriggerValue);
2518 DoMethod(string.strings[0], MUIM_Notify,
2519 MUIA_String_DisplayPos, MUIV_EveryTime,
2520 string.strings[i], 3, MUIM_Set, MUIA_String_DisplayPos,
2521 MUIV_TriggerValue);
2522 DoMethod(string.strings[0], MUIM_Notify,
2523 MUIA_String_AttachedList, MUIV_EveryTime,
2524 string.strings[i], 3, MUIM_Set,
2525 MUIA_String_AttachedList, MUIV_TriggerValue);
2527 DoMethod(string.reject_string, MUIM_Notify, MUIA_String_Contents,
2528 MUIV_EveryTime, string.strings[i], 3, MUIM_Set,
2529 MUIA_String_Reject, MUIV_TriggerValue);
2530 DoMethod(string.strings[i], MUIM_Notify, MUIA_String_Integer,
2531 MUIV_EveryTime, string.integer_string, 3, MUIM_NoNotifySet,
2532 MUIA_String_Integer, MUIV_TriggerValue);
2533 DoMethod(string.integer_string, MUIM_Notify, MUIA_String_Integer,
2534 MUIV_EveryTime, string.strings[i], 3, MUIM_NoNotifySet,
2535 MUIA_String_Integer, MUIV_TriggerValue);
2537 DoMethod(string.accept_all_check, MUIM_Notify, MUIA_Selected,
2538 MUIV_EveryTime, app, 3, MUIM_CallHook, &hook_standard,
2539 ChangeStringAccept);
2540 DoMethod(string.strings[4], MUIM_Notify, MUIA_String_Acknowledge,
2541 MUIV_EveryTime, string.plaintext_string, 3, MUIM_NoNotifySet,
2542 MUIA_String_Contents, MUIV_TriggerValue);
2543 DoMethod(string.plaintext_string, MUIM_Notify,
2544 MUIA_String_Acknowledge, MUIV_EveryTime, string.strings[4], 3,
2545 MUIM_NoNotifySet, MUIA_String_Contents, MUIV_TriggerValue);
2547 DoMethod(wheel, MUIM_Notify, WHEEL_Hue, MUIV_EveryTime, app, 2,
2548 MUIM_CallHook, &hook_wheel);
2549 DoMethod(wheel, MUIM_Notify, WHEEL_Saturation, MUIV_EveryTime, app,
2550 2, MUIM_CallHook, &hook_wheel);
2551 DoMethod(r_slider, MUIM_Notify, MUIA_Numeric_Value, MUIV_EveryTime,
2552 app, 2, MUIM_CallHook, &hook_slider);
2553 DoMethod(g_slider, MUIM_Notify, MUIA_Numeric_Value, MUIV_EveryTime,
2554 app, 2, MUIM_CallHook, &hook_slider);
2555 DoMethod(b_slider, MUIM_Notify, MUIA_Numeric_Value, MUIV_EveryTime,
2556 app, 2, MUIM_CallHook, &hook_slider);
2558 DoMethod(save_button, MUIM_Notify, MUIA_Pressed, FALSE, app, 3,
2559 MUIM_CallHook, &hook_standard, Save);
2561 DoMethod(quit_item, MUIM_Notify, MUIA_Menuitem_Trigger,
2562 MUIV_EveryTime, app, 2, MUIM_Application_ReturnID,
2563 MUIV_Application_ReturnID_Quit);
2564 DoMethod(about_item, MUIM_Notify, MUIA_Menuitem_Trigger,
2565 MUIV_EveryTime, app, 3, MUIM_CallHook, &hook_standard,
2566 About);
2568 /* Notifications for color objects */
2569 DoMethod(colorfield, MUIM_Notify, MUIA_Colorfield_Red,
2570 MUIV_EveryTime, colorfield2, 3, MUIM_Set, MUIA_Colorfield_Red,
2571 MUIV_TriggerValue);
2572 DoMethod(colorfield, MUIM_Notify, MUIA_Colorfield_Green,
2573 MUIV_EveryTime, colorfield2, 3, MUIM_Set, MUIA_Colorfield_Green,
2574 MUIV_TriggerValue);
2575 DoMethod(colorfield, MUIM_Notify, MUIA_Colorfield_Blue,
2576 MUIV_EveryTime, colorfield2, 3, MUIM_Set, MUIA_Colorfield_Blue,
2577 MUIV_TriggerValue);
2578 DoMethod(coloradjust, MUIM_Notify, MUIA_Coloradjust_Red,
2579 MUIV_EveryTime, colorfield, 3, MUIM_Set, MUIA_Colorfield_Red,
2580 MUIV_TriggerValue);
2581 DoMethod(coloradjust, MUIM_Notify, MUIA_Coloradjust_Green,
2582 MUIV_EveryTime, colorfield, 3, MUIM_Set, MUIA_Colorfield_Green,
2583 MUIV_TriggerValue);
2584 DoMethod(coloradjust, MUIM_Notify, MUIA_Coloradjust_Blue,
2585 MUIV_EveryTime, colorfield, 3, MUIM_Set, MUIA_Colorfield_Blue,
2586 MUIV_TriggerValue);
2587 DoMethod(colorfield, MUIM_Notify, MUIA_Colorfield_Pen,
2588 MUIV_EveryTime, colorfield_pen, 3, MUIM_Set,
2589 MUIA_String_Integer, MUIV_TriggerValue);
2590 DoMethod(colorfield_pen, MUIM_Notify, MUIA_String_Acknowledge,
2591 MUIV_EveryTime, app, 3, MUIM_CallHook, &hook_standard,
2592 ChangePen);
2593 DoMethod(colorfield_reset_button, MUIM_Notify, MUIA_Pressed, FALSE,
2594 colorfield, 3, MUIM_Set, MUIA_Colorfield_RGB, default_color);
2596 /* Notifications for pen objects */
2597 DoMethod(pendisplay, MUIM_Notify, MUIA_Pendisplay_Pen,
2598 MUIV_EveryTime, pendisplay_pen, 3, MUIM_NoNotifySet,
2599 MUIA_String_Integer, MUIV_TriggerValue);
2600 DoMethod(pendisplay_pen, MUIM_Notify, MUIA_String_Acknowledge,
2601 MUIV_EveryTime, app, 3, MUIM_CallHook, &hook_standard,
2602 ChangePendisplayPen);
2603 DoMethod(pendisplay, MUIM_Notify, MUIA_Pendisplay_Spec,
2604 MUIV_EveryTime, pendisplay_spec, 3, MUIM_Set,
2605 MUIA_String_Contents, MUIV_TriggerValue);
2606 DoMethod(colorfield, MUIM_Notify, MUIA_Colorfield_RGB,
2607 MUIV_EveryTime, pendisplay, 3, MUIM_Set,
2608 MUIA_Pendisplay_RGBcolor, MUIV_TriggerValue);
2609 DoMethod(pendisplay, MUIM_Notify, MUIA_Pendisplay_RGBcolor,
2610 MUIV_EveryTime, poppen, 3, MUIM_Set, MUIA_Pendisplay_RGBcolor,
2611 MUIV_TriggerValue);
2612 DoMethod(pendisplay_spec, MUIM_Notify, MUIA_String_Contents,
2613 MUIV_EveryTime, pendisplay, 3, MUIM_Set, MUIA_Pendisplay_Spec,
2614 MUIV_TriggerValue);
2615 DoMethod(reference_check, MUIM_Notify, MUIA_Selected, TRUE,
2616 pendisplay2, 3, MUIM_Set, MUIA_Pendisplay_Reference, pendisplay);
2617 DoMethod(reference_check, MUIM_Notify, MUIA_Selected, FALSE,
2618 pendisplay2, 3, MUIM_Set, MUIA_Pendisplay_Reference, NULL);
2619 DoMethod(shine_button, MUIM_Notify, MUIA_Pressed, FALSE, pendisplay,
2620 2, MUIM_Pendisplay_SetMUIPen, MPEN_SHINE);
2621 DoMethod(shadow_button, MUIM_Notify, MUIA_Pressed, FALSE, pendisplay,
2622 2, MUIM_Pendisplay_SetMUIPen, MPEN_SHADOW);
2623 DoMethod(yellow_button, MUIM_Notify, MUIA_Pressed, FALSE, pendisplay,
2624 4, MUIM_Pendisplay_SetRGB, 0xffffffff, 0xffffffff, 0);
2626 /* Notifications and set-up for list objects */
2627 set(list.showdropmarks_check, MUIA_Selected, TRUE);
2628 UpdateListInfo();
2629 for (i = 0; i < LIST_COUNT; i++)
2631 DoMethod(list.lists[i], MUIM_Notify, MUIA_Listview_DoubleClick,
2632 MUIV_EveryTime, list.lists[i], 3, MUIM_Set, MUIA_Disabled,
2633 TRUE);
2634 DoMethod(list.lists[i], MUIM_Notify, MUIA_List_Entries,
2635 MUIV_EveryTime, list.entries_text, 4, MUIM_SetAsString,
2636 MUIA_Text_Contents, "%ld", MUIV_TriggerValue);
2637 DoMethod(list.lists[i], MUIM_Notify, MUIA_List_Visible,
2638 MUIV_EveryTime, app, 3, MUIM_CallHook, &hook_standard,
2639 ListGetVisible);
2640 DoMethod(list.lists[i], MUIM_Notify, MUIA_List_First,
2641 MUIV_EveryTime, app, 3, MUIM_CallHook, &hook_standard,
2642 ListGetFirst);
2643 DoMethod(list.lists[i], MUIM_Notify, MUIA_List_InsertPosition,
2644 MUIV_EveryTime, list.insert_text, 4, MUIM_SetAsString,
2645 MUIA_Text_Contents, "%ld", MUIV_TriggerValue);
2646 DoMethod(list.lists[i], MUIM_Notify, MUIA_List_Active,
2647 MUIV_EveryTime, app, 3, MUIM_CallHook, &hook_standard,
2648 UpdateListInfo);
2649 DoMethod(list.lists[i], MUIM_Notify, MUIA_Listview_SelectChange,
2650 MUIV_EveryTime, app, 3, MUIM_CallHook, &hook_standard,
2651 ListGetSelected);
2653 DoMethod(list.draggable_check, MUIM_Notify, MUIA_Selected,
2654 MUIV_EveryTime, app, 3, MUIM_CallHook, &hook_standard,
2655 ListSetDraggable);
2656 DoMethod(list.draggable_check, MUIM_Notify, MUIA_Selected,
2657 MUIV_EveryTime, list.dragsortable_check, 3, MUIM_Set,
2658 MUIA_Disabled, MUIV_NotTriggerValue);
2659 DoMethod(list.draggable_check, MUIM_Notify, MUIA_Selected,
2660 FALSE, list.dragsortable_check, 3, MUIM_Set,
2661 MUIA_Selected, FALSE);
2662 DoMethod(list.showdropmarks_check, MUIM_Notify, MUIA_Selected,
2663 MUIV_EveryTime, app, 3, MUIM_CallHook, &hook_standard,
2664 ListSetShowDropMarks);
2665 DoMethod(list.multitest_check, MUIM_Notify, MUIA_Selected,
2666 MUIV_EveryTime, app, 3, MUIM_CallHook, &hook_standard,
2667 ListSetMultiTest);
2668 DoMethod(list.quiet_check, MUIM_Notify, MUIA_Selected,
2669 MUIV_EveryTime, app, 3, MUIM_CallHook, &hook_standard,
2670 ListSetQuiet);
2671 DoMethod(list.dragsortable_check, MUIM_Notify, MUIA_Selected,
2672 MUIV_EveryTime, app, 3, MUIM_CallHook, &hook_standard,
2673 ListSetDragSortable);
2674 DoMethod(list.autovisible_check, MUIM_Notify, MUIA_Selected,
2675 MUIV_EveryTime, app, 3, MUIM_CallHook, &hook_standard,
2676 ListSetAutoVisible);
2677 DoMethod(list.reset_button, MUIM_Notify, MUIA_Pressed, FALSE,
2678 app, 3, MUIM_CallHook, &hook_standard, ListReset);
2679 DoMethod(list.move_button, MUIM_Notify, MUIA_Pressed, FALSE,
2680 app, 3, MUIM_CallHook, &hook_standard, ListMove);
2681 DoMethod(list.sort_button, MUIM_Notify, MUIA_Pressed, FALSE,
2682 app, 3, MUIM_CallHook, &hook_standard, ListSort);
2683 DoMethod(list.enable_button, MUIM_Notify, MUIA_Pressed, FALSE,
2684 app, 3, MUIM_CallHook, &hook_standard, ListEnable);
2685 DoMethod(list.exchange_button, MUIM_Notify, MUIA_Pressed, FALSE,
2686 app, 3, MUIM_CallHook, &hook_standard, ListExchange);
2687 DoMethod(list.jump_button, MUIM_Notify, MUIA_Pressed, FALSE,
2688 app, 3, MUIM_CallHook, &hook_standard, ListJump);
2689 DoMethod(list.select_button, MUIM_Notify, MUIA_Pressed, FALSE,
2690 app, 3, MUIM_CallHook, &hook_standard, ListSelect);
2691 DoMethod(list.deselect_button, MUIM_Notify, MUIA_Pressed, FALSE,
2692 app, 3, MUIM_CallHook, &hook_standard, ListDeselect);
2693 DoMethod(list.toggle_button, MUIM_Notify, MUIA_Pressed, FALSE,
2694 app, 3, MUIM_CallHook, &hook_standard, ListToggle);
2695 DoMethod(list.redraw_button, MUIM_Notify, MUIA_Pressed, FALSE,
2696 app, 3, MUIM_CallHook, &hook_standard, ListRedraw);
2697 DoMethod(list.insert_single_button, MUIM_Notify, MUIA_Pressed, FALSE,
2698 app, 3, MUIM_CallHook, &hook_standard, ListInsertSingle);
2699 DoMethod(list.insert_multiple_button, MUIM_Notify, MUIA_Pressed, FALSE,
2700 app, 3, MUIM_CallHook, &hook_standard, ListInsert);
2701 DoMethod(list.remove_button, MUIM_Notify, MUIA_Pressed, FALSE,
2702 app, 3, MUIM_CallHook, &hook_standard, ListRemove);
2703 DoMethod(list.clear_button, MUIM_Notify, MUIA_Pressed, FALSE,
2704 app, 3, MUIM_CallHook, &hook_standard, ListClear);
2705 DoMethod(list.activate_button, MUIM_Notify, MUIA_Pressed, FALSE,
2706 app, 3, MUIM_CallHook, &hook_standard, ListActivate);
2707 DoMethod(list.deactivate_button, MUIM_Notify, MUIA_Pressed, FALSE,
2708 app, 3, MUIM_CallHook, &hook_standard, ListDeactivate);
2709 DoMethod(list.title_string, MUIM_Notify, MUIA_String_Acknowledge,
2710 MUIV_EveryTime, app, 3, MUIM_CallHook, &hook_standard,
2711 ChangeListTitle);
2712 DoMethod(list.list_radios, MUIM_Notify, MUIA_Radio_Active,
2713 MUIV_EveryTime, app, 3, MUIM_CallHook, &hook_standard,
2714 UpdateListInfo);
2715 SET(list.lists[4], MUIA_List_CompareHook, &hook_compare);
2716 SET(list.lists[4], MUIA_List_AutoVisible, TRUE);
2718 SET(list.showheadings_check, MUIA_Selected,
2719 XGET(list.multi_lists[0], MUIA_List_Title));
2720 SET(list.format_string, MUIA_String_Contents,
2721 XGET(list.multi_lists[1], MUIA_List_Format));
2722 SET(list.def_column_string, MUIA_String_Integer,
2723 XGET(list.multi_lists[0], MUIA_Listview_DefClickColumn));
2724 DoMethod(list.format_string, MUIM_Notify, MUIA_String_Acknowledge,
2725 MUIV_EveryTime, list.multi_lists[1], 3, MUIM_Set,
2726 MUIA_List_Format, MUIV_TriggerValue);
2727 DoMethod(list.multi_lists[1], MUIM_Notify, MUIA_List_Format,
2728 MUIV_EveryTime, wnd, 3, MUIM_Set,
2729 MUIA_Window_ActiveObject, list.format_string);
2730 for (i = 0; i < MULTI_LIST_COUNT; i++)
2732 DoMethod(list.showheadings_check, MUIM_Notify, MUIA_Selected,
2733 MUIV_EveryTime, list.multi_lists[i], 3, MUIM_Set,
2734 MUIA_List_Title, MUIV_TriggerValue);
2735 DoMethod(list.showimage_check, MUIM_Notify, MUIA_Selected,
2736 MUIV_EveryTime, list.multi_lists[i], 2, MUIM_List_Redraw,
2737 MUIV_List_Redraw_All);
2738 DoMethod(list.def_column_string, MUIM_Notify,
2739 MUIA_String_Integer,
2740 MUIV_EveryTime, list.multi_lists[i], 3, MUIM_Set,
2741 MUIA_Listview_DefClickColumn, MUIV_TriggerValue);
2742 DoMethod(list.multi_lists[i], MUIM_Notify,
2743 MUIA_Listview_ClickColumn, MUIV_EveryTime,
2744 list.column_string, 3, MUIM_Set, MUIA_String_Integer,
2745 MUIV_TriggerValue);
2747 DoMethod(list.column_string, MUIM_Notify, MUIA_String_Contents,
2748 MUIV_EveryTime, list.column_text, 3, MUIM_Set, MUIA_Text_Contents,
2749 MUIV_TriggerValue);
2750 DoMethod(list.multi_lists[1], MUIM_Notify, MUIA_Listview_DoubleClick,
2751 MUIV_EveryTime, app, 3, MUIM_CallHook, &hook_standard,
2752 CheckListDoubleClick);
2753 SET(list.multi_lists[1], MUIA_List_ConstructHook, &hook_construct);
2754 SET(list.multi_lists[1], MUIA_List_DestructHook, &hook_destruct);
2755 SET(list.multi_lists[1], MUIA_List_DisplayHook, &hook_display);
2756 DoMethod(list.multi_lists[1], MUIM_List_Insert, entries, -1,
2757 MUIV_List_Insert_Top);
2759 DoMethod(listview, MUIM_Notify, MUIA_Listview_DoubleClick, TRUE,
2760 popobject, 2, MUIM_Popstring_Close, TRUE);
2762 /* numeric */
2763 for (i = 0; i < NUMERIC_COUNT; i++)
2765 DoMethod(min_string, MUIM_Notify, MUIA_String_Integer,
2766 MUIV_EveryTime, numerics[i], 3, MUIM_Set, MUIA_Numeric_Min,
2767 MUIV_TriggerValue);
2768 DoMethod(max_string, MUIM_Notify, MUIA_String_Integer,
2769 MUIV_EveryTime, numerics[i], 3, MUIM_Set, MUIA_Numeric_Max,
2770 MUIV_TriggerValue);
2772 DoMethod(slider_button, MUIM_Notify, MUIA_Pressed, FALSE,
2773 numerics[HRSLIDER], 3, MUIM_Set, MUIA_Slider_Horiz, FALSE);
2775 /* radio */
2776 DoMethod(country_radio[0], MUIM_Notify, MUIA_Radio_Active,
2777 MUIV_EveryTime, country_radio[1], 3, MUIM_NoNotifySet,
2778 MUIA_Radio_Active, MUIV_TriggerValue);
2779 DoMethod(country_radio[1], MUIM_Notify, MUIA_Radio_Active,
2780 MUIV_EveryTime, country_radio[0], 3, MUIM_NoNotifySet,
2781 MUIA_Radio_Active, MUIV_TriggerValue);
2783 #if defined(TEST_ICONLIST)
2784 /* iconlist */
2785 DoMethod(volume_iconlist, MUIM_Notify, MUIA_IconList_DoubleClick,
2786 TRUE, volume_iconlist, 3, MUIM_CallHook, &hook_standard,
2787 volume_doubleclicked);
2788 DoMethod(drawer_iconlist, MUIM_Notify, MUIA_IconList_DoubleClick,
2789 TRUE, drawer_iconlist, 3, MUIM_CallHook, &hook_standard,
2790 drawer_doubleclicked);
2791 #endif
2793 /* automatic tests */
2794 get(list.lists[0], MUIA_List_Visible, &value);
2795 if (value != -1)
2796 printf("MUIA_List_Visible equals %ld before display,"
2797 " but it should be -1.\n", (long)value);
2798 get(list.multi_lists[0], MUIA_Listview_ClickColumn, &value);
2799 if (value != 0)
2800 printf("MUIA_Listview_ClickColumn equals %ld before display,"
2801 " but it should be 0.\n", (long)value);
2802 get(list.lists[0], MUIA_Listview_DoubleClick, &value);
2803 if (value != 0)
2804 printf("MUIA_Listview_DoubleClick equals %ld before display,"
2805 " but it should be 0.\n", (long)value);
2807 set(wnd, MUIA_Window_Open, TRUE);
2808 set(wnd, MUIA_Window_ScreenTitle, "Zune Test Application");
2810 list.image = DoMethod(list.multi_lists[0], MUIM_List_CreateImage,
2811 list.colorfield, 0);
2813 /* Set pen fields */
2814 set(colorfield_pen, MUIA_String_Integer,
2815 XGET(colorfield, MUIA_Colorfield_Pen));
2817 char pen_str[10];
2818 nnset(pendisplay_pen, MUIA_String_Integer,
2819 XGET(pendisplay, MUIA_Pendisplay_Pen));
2821 struct MUI_PenSpec *pen_spec = NULL;
2822 GET(pendisplay, MUIA_Pendisplay_Spec, &pen_spec);
2823 strncpy(pen_str, pen_spec->buf, 10);
2824 set(pendisplay_spec, MUIA_String_Contents, pen_str);
2826 while ((LONG) DoMethod(app, MUIM_Application_NewInput,
2827 &sigs) != MUIV_Application_ReturnID_Quit)
2829 if (sigs)
2831 sigs = Wait(sigs | SIGBREAKF_CTRL_C | SIGBREAKF_CTRL_D);
2832 if (sigs & SIGBREAKF_CTRL_C)
2833 break;
2834 if (sigs & SIGBREAKF_CTRL_D)
2835 break;
2839 DoMethod(list.multi_lists[0], MUIM_List_DeleteImage, list.image);
2840 MUI_DisposeObject(app);
2842 if (context_menu)
2843 MUI_DisposeObject(context_menu);
2844 CloseLibrary(ColorWheelBase);
2845 MUI_DeleteCustomClass(test_window_class);
2846 MUI_DeleteCustomClass(CL_DropText);
2848 /* automatic tests */
2849 if (list.destruct_count != 18)
2850 printf("The hook installed through MUIA_List_DestructHook has been"
2851 " called %ld times, but should have been called 18 times.\n",
2852 (long)list.destruct_count);
2854 CloseLibrary(MUIMasterBase);
2856 DeletePool(pool);
2858 return 0;