2 Copyright © 2002-2016, The AROS Development Team.
8 #define INTUITION_NO_INLINE_STDARG
10 #include <exec/types.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
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"
42 #define STRING_COUNT 6
44 #define MULTI_LIST_COUNT 2
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",
60 static const char *empty
[] = {"", "", "", "", "", NULL
};
61 static const LONG list_active_positions
[] =
64 MUIV_List_Active_Bottom
,
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",
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,";
101 struct Library
*MUIMasterBase
;
102 struct Library
*ColorWheelBase
;
120 Object
*strings
[STRING_COUNT
],
130 *standard_hook_check
,
138 Object
*lists
[LIST_COUNT
],
161 *insert_single_button
,
162 *insert_multiple_button
,
167 *showdropmarks_check
,
179 *multi_lists
[MULTI_LIST_COUNT
],
187 LONG quiet
[LIST_COUNT
],
189 has_multitest
[LIST_COUNT
];
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
,
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
;
222 AROS_UFH0(void, repeat_function
)
226 printf("MUI_Timer\n");
231 AROS_UFH0(void, wheel_function
)
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);
245 AROS_UFH0(void, slider_function
)
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
));
264 AROS_UFH0(void, objects_function
)
268 Object
*new_obj
= MUI_MakeObject(MUIO_Button
, "Button");
271 DoMethod(group
, MUIM_Group_InitChange
);
272 DoMethod(group
, OM_ADDMEMBER
, new_obj
);
273 DoMethod(group
, MUIM_Group_ExitChange
);
279 static void About(void)
281 static Object
*about_wnd
;
285 about_wnd
= AboutmuiObject
, MUIA_Aboutmui_Application
, app
, End
;
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
))
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
;
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
);
316 static void ChangeStringAccept(void)
318 STRPTR accept_chars
= NULL
, reject_chars
= NULL
;
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
);
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)
343 GET(colorfield_pen
, MUIA_String_Integer
, &pen
);
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
))
366 /* Indicate which string is shorter */
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
))
379 /* Indicate whether the string doesn't begin with a vowel */
380 return strchr(vowels
, tolower(str
[0])) == NULL
;
385 static void ChangeListTitle(void)
390 i
= XGET(list
.list_radios
, MUIA_Radio_Active
);
392 GET(list
.lists
[i
], MUIA_List_Title
, &title
);
395 GET(list
.title_string
, MUIA_String_Contents
, &title
);
396 if (title
[0] == '\0')
399 title
= StrDup(title
);
401 SET(list
.lists
[i
], MUIA_List_Title
, title
);
404 static void UpdateListInfo(void)
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
)
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
,
437 GET(list
.lists
[i
], MUIA_List_Visible
, &value
);
438 DoMethod(list
.visible_text
, MUIM_SetAsString
, MUIA_Text_Contents
,
440 GET(list
.lists
[i
], MUIA_List_First
, &value
);
441 DoMethod(list
.first_text
, MUIM_SetAsString
, MUIA_Text_Contents
,
443 GET(list
.lists
[i
], MUIA_List_InsertPosition
, &value
);
444 DoMethod(list
.insert_text
, MUIM_SetAsString
, MUIA_Text_Contents
,
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");
450 DoMethod(list
.active_text
, MUIM_SetAsString
, MUIA_Text_Contents
,
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
,
456 GET(list
.lists
[i
], MUIA_List_DropMark
, &value
);
457 DoMethod(list
.drop_text
, MUIM_SetAsString
, MUIA_Text_Contents
,
461 static void ListGetVisible(void)
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
,
473 static void ListGetFirst(void)
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
,
489 static void ListGetSelected(void)
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
,
502 static void ListSetDraggable(void)
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)
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)
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)
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)
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)
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)
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
;
585 i
= XGET(list
.list_radios
, MUIA_Radio_Active
);
587 mode
= XGET(list
.move1_cycle
, MUIA_Cycle_Active
);
590 pos1
= XGET(list
.index1_string
, MUIA_String_Integer
);
594 mode
= XGET(list
.move2_cycle
, MUIA_Cycle_Active
);
597 pos2
= XGET(list
.index2_string
, MUIA_String_Integer
);
601 DoMethod(list
.lists
[i
], MUIM_List_Move
, pos1
, pos2
);
604 static void ListSort(void)
608 i
= XGET(list
.list_radios
, MUIA_Radio_Active
);
610 DoMethod(list
.lists
[i
], MUIM_List_Sort
);
613 static void ListEnable(void)
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
;
627 i
= XGET(list
.list_radios
, MUIA_Radio_Active
);
629 mode
= XGET(list
.move1_cycle
, MUIA_Cycle_Active
);
632 pos1
= XGET(list
.index1_string
, MUIA_String_Integer
);
636 mode
= XGET(list
.move2_cycle
, MUIA_Cycle_Active
);
639 pos2
= XGET(list
.index2_string
, MUIA_String_Integer
);
643 DoMethod(list
.lists
[i
], MUIM_List_Exchange
, pos1
, pos2
);
646 static void ListJump(void)
651 i
= XGET(list
.list_radios
, MUIA_Radio_Active
);
653 mode
= XGET(list
.jump_cycle
, MUIA_Cycle_Active
);
656 pos
= XGET(list
.index1_string
, MUIA_String_Integer
);
660 DoMethod(list
.lists
[i
], MUIM_List_Jump
, pos
);
663 static void ListSelect(void)
668 i
= XGET(list
.list_radios
, MUIA_Radio_Active
);
670 mode
= XGET(list
.select_cycle
, MUIA_Cycle_Active
);
673 pos
= XGET(list
.index1_string
, MUIA_String_Integer
);
677 DoMethod(list
.lists
[i
], MUIM_List_Select
, pos
, MUIV_List_Select_On
,
681 static void ListDeselect(void)
686 i
= XGET(list
.list_radios
, MUIA_Radio_Active
);
688 mode
= XGET(list
.select_cycle
, MUIA_Cycle_Active
);
691 pos
= XGET(list
.index1_string
, MUIA_String_Integer
);
695 DoMethod(list
.lists
[i
], MUIM_List_Select
, pos
, MUIV_List_Select_Off
,
699 static void ListToggle(void)
704 i
= XGET(list
.list_radios
, MUIA_Radio_Active
);
706 mode
= XGET(list
.select_cycle
, MUIA_Cycle_Active
);
709 pos
= XGET(list
.index1_string
, MUIA_String_Integer
);
713 DoMethod(list
.lists
[i
], MUIM_List_Select
, pos
,
714 MUIV_List_Select_Toggle
, NULL
);
717 static void ListRedraw(void)
722 i
= XGET(list
.list_radios
, MUIA_Radio_Active
);
724 mode
= XGET(list
.select_cycle
, MUIA_Cycle_Active
);
727 pos
= XGET(list
.index1_string
, MUIA_String_Integer
);
731 DoMethod(list
.lists
[i
], MUIM_List_Redraw
, pos
);
734 static void ListInsertSingle(void)
739 i
= XGET(list
.list_radios
, MUIA_Radio_Active
);
741 mode
= XGET(list
.insert_cycle
, MUIA_Cycle_Active
);
744 pos
= XGET(list
.index1_string
, MUIA_String_Integer
);
748 DoMethod(list
.lists
[i
], MUIM_List_InsertSingle
, "Tomato", pos
);
751 static void ListInsert(void)
756 i
= XGET(list
.list_radios
, MUIA_Radio_Active
);
758 mode
= XGET(list
.insert_cycle
, MUIA_Cycle_Active
);
761 pos
= XGET(list
.index1_string
, MUIA_String_Integer
);
765 DoMethod(list
.lists
[i
], MUIM_List_Insert
, fruits
, -1, pos
);
768 static void ListRemove(void)
770 LONG mode
, pos
, count
, j
, *selections
;
773 i
= XGET(list
.list_radios
, MUIA_Radio_Active
);
775 mode
= XGET(list
.remove_cycle
, MUIA_Cycle_Active
);
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)
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
);
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
);
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
);
809 /* We must remove the entries in reverse order; otherwise the
810 later indices will become invalid */
812 DoMethod(list
.lists
[i
], MUIM_List_Remove
, selections
[--count
]);
819 pos
= XGET(list
.index1_string
, MUIA_String_Integer
);
822 DoMethod(list
.lists
[i
], MUIM_List_Remove
, pos
);
826 static void ListClear(void)
830 i
= XGET(list
.list_radios
, MUIA_Radio_Active
);
832 DoMethod(list
.lists
[i
], MUIM_List_Clear
);
835 static void ListActivate(void)
840 i
= XGET(list
.list_radios
, MUIA_Radio_Active
);
842 mode
= XGET(list
.activate_cycle
, MUIA_Cycle_Active
);
845 pos
= XGET(list
.index1_string
, MUIA_String_Integer
);
849 SET(list
.lists
[i
], MUIA_List_Active
, pos
);
852 static void ListDeactivate(void)
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)
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
))
877 struct list_entry
*entry
;
879 entry
= AllocPooled(pool
, sizeof(struct list_entry
) + 40);
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
);
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
))
901 FreePooled(pool
, entry
, sizeof(struct list_entry
) + 40);
902 list
.destruct_count
++;
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
))
914 static char buf
[100];
918 if (XGET(list
.showimage_check
, MUIA_Selected
))
919 sprintf(buf
, "%ld \33O[%08lx]", (long)*(strings
- 1),
922 sprintf(buf
, "%ld", (long)*(strings
- 1));
924 strings
[1] = entry
->column1
;
925 strings
[2] = entry
->column2
;
929 strings
[0] = "Number";
930 strings
[1] = "Column 1";
931 strings
[2] = "Column 2";
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
);
943 if (!strlen(filename
))
946 if ((fh
= Open(filename
, MODE_NEWFILE
)))
948 Write(fh
, text
, strlen(text
));
953 #if defined(TEST_ICONLIST)
954 /* IconList callbacks */
955 static void volume_doubleclicked(void)
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
)
965 strcpy(buf
, ent
->label
);
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
)
977 set(drawer_iconlist
, MUIA_IconDrawerList_Drawer
,
978 ent
->ile_IconEntry
->ie_IconNode
.ln_Name
);
982 static IPTR
create_balance_column(void)
984 return (IPTR
) VGroup
,
985 Child
, RectangleObject
,
988 Child
, BalanceObject
,
990 Child
, RectangleObject
,
993 Child
, BalanceObject
,
995 Child
, RectangleObject
,
998 Child
, BalanceObject
,
1000 Child
, RectangleObject
,
1003 Child
, BalanceObject
,
1005 Child
, RectangleObject
,
1011 /* The custom class */
1013 struct DropText_Data
1020 struct Library
*KeymapBase
;
1024 __saveds __asm IPTR
dispatcher(register __a0
struct IClass
*cl
,
1025 register __a2 Object
*obj
, register __a1 Msg msg
)
1027 AROS_UFH3S(IPTR
, dispatcher
,
1028 AROS_UFHA(Class
*, cl
, A0
),
1029 AROS_UFHA(Object
*, obj
, A2
), AROS_UFHA(Msg
, msg
, A1
))
1034 switch (msg
->MethodID
)
1036 case MUIM_DragQuery
:
1037 return MUIV_DragQuery_Accept
;
1040 struct DropText_Data
*data
=
1041 (struct DropText_Data
*)INST_DATA(cl
, obj
);
1044 sprintf(buf
, "%ld times", (long)data
->times
);
1045 set(obj
, MUIA_Text_Contents
, buf
);
1049 return DoSuperMethodA(cl
, obj
, (Msg
) msg
);
1054 static struct MUI_CustomClass
*CL_DropText
;
1056 #define DropTextObject BOOPSIOBJMACRO_START(CL_DropText->mcc_Class)
1058 /* Custom Window subclass */
1060 struct TestWindowData
1065 IPTR
TestWindow__OM_SET(struct IClass
*cl
, Object
*obj
,
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
:
1077 SET(obj
, MUIA_Window_ActiveObject
, general
.open_button
);
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
))
1092 switch (msg
->MethodID
)
1095 return TestWindow__OM_SET(cl
, obj
, (struct opSet
*)msg
);
1097 return DoSuperMethodA(cl
, obj
, (Msg
) msg
);
1103 static struct MUI_CustomClass
*test_window_class
;
1105 #define TestWindowObject BOOPSIOBJMACRO_START(test_window_class->mcc_Class)
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
))
1115 void (*func
) (ULONG
*) = (void (*)(ULONG
*))(*funcptr
);
1118 func((ULONG
*) funcptr
+ 1);
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];
1142 static char *pages
[] =
1143 {"General", "Text", "Boopsi", "Color", "Edit", "List", "Gauges",
1145 #if defined(TEST_ICONLIST)
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
,
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
,
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
,
1211 "Default scroller\nTop entry active\nSorted by length",
1213 MUIA_Listview_MultiSelect
,
1214 MUIV_Listview_MultiSelect_None
,
1215 MUIA_Listview_DragType
, MUIV_Listview_DragType_Immediate
,
1216 MUIA_Listview_DoubleClick
, TRUE
,
1219 list
.lists
[1] = ListviewObject
,
1223 MUIA_List_SourceArray
, fruits
,
1224 MUIA_List_Active
, MUIV_List_Active_Bottom
,
1225 MUIA_List_PoolPuddleSize
, 512,
1226 MUIA_List_AutoVisible
, TRUE
,
1228 "Left scroller\nBottom entry active\nSorted alphabetically",
1230 MUIA_Listview_ScrollerPos
,
1231 MUIV_Listview_ScrollerPos_Left
,
1232 MUIA_Listview_DragType
, MUIV_Listview_DragType_None
,
1235 list
.lists
[2] = ListviewObject
,
1239 MUIA_List_SourceArray
, fruits
,
1240 MUIA_List_Active
, MUIV_List_Active_Off
,
1241 MUIA_List_Pool
, pool
,
1243 "Right scroller\nNo active entry\nSorted alphabetically",
1245 MUIA_Listview_MultiSelect
,
1246 MUIV_Listview_MultiSelect_Shifted
,
1247 MUIA_Listview_ScrollerPos
,
1248 MUIV_Listview_ScrollerPos_Right
,
1251 list
.lists
[3] = ListviewObject
,
1255 MUIA_List_SourceArray
, fruits
,
1256 MUIA_List_Pool
, NULL
,
1257 MUIA_List_MultiTestHook
, &hook_multitest
,
1259 "No scroller\nDefault active entry\nSorted alphabetically",
1261 MUIA_Listview_MultiSelect
,
1262 MUIV_Listview_MultiSelect_Always
,
1263 MUIA_Listview_ScrollerPos
,
1264 MUIV_Listview_ScrollerPos_None
,
1267 list
.lists
[4] = ListviewObject
,
1271 MUIA_List_SourceArray
, fruits
,
1272 MUIA_List_Active
, MUIV_List_Active_Bottom
,
1273 MUIA_List_MinLineHeight
, 20,
1275 "Default scroller\nBottom entry active\nSorted by length",
1277 MUIA_Listview_Input
, FALSE
,
1281 list
.colorfield
= ColorfieldObject
,
1282 MUIA_Colorfield_RGB
, default_color
,
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
, "?",
1293 MUIA_Family_Child
, MenuitemObject
,
1294 MUIA_Menuitem_Title
, (SIPTR
)-1,
1296 MUIA_Family_Child
, quit_item
= MenuitemObject
,
1297 MUIA_Menuitem_Title
, "Quit",
1298 MUIA_Menuitem_Shortcut
, "Q",
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",
1314 GroupFrameT("A horizontal group"),
1316 GroupFrameT("A column group"),
1317 Child
, repeat_button
= TextObject
,
1320 MUIA_Background
, MUII_ButtonBack
,
1321 MUIA_Text_PreParse
, "\33c",
1322 MUIA_Text_Contents
, "Repeat",
1323 MUIA_InputMode
, MUIV_InputMode_RelVerify
,
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
,
1334 Child
, general
.open_button
= TextObject
,
1337 MUIA_Background
, MUII_ButtonBack
,
1338 MUIA_Text_PreParse
, "\33c",
1339 MUIA_Text_Contents
, "Open Window",
1340 MUIA_InputMode
, MUIV_InputMode_RelVerify
,
1343 MUIA_ContextMenu
, context_menu
,
1346 MUIA_Background
, MUII_ButtonBack
,
1347 MUIA_Text_PreParse
, "\33c",
1348 MUIA_Text_Contents
, "Press Right",
1349 MUIA_InputMode
, MUIV_InputMode_RelVerify
,
1351 Child
, objects_button
= TextObject
,
1354 MUIA_Background
, MUII_ButtonBack
,
1355 MUIA_Text_PreParse
, "\33c",
1356 MUIA_Text_Contents
, "Add Objects",
1357 MUIA_InputMode
, MUIV_InputMode_RelVerify
,
1362 Child
, MUI_MakeObject(MUIO_Checkmark
,
1366 Child
, MUI_MakeObject(MUIO_Label
,
1373 Child
, group
= VGroup
,
1374 GroupFrameT("A vertical group"),
1375 Child
, DropTextObject
,
1376 MUIA_Dropable
, TRUE
,
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
,
1387 MUIA_Background
, MUII_MARKHALFSHINE
,
1389 MUIA_Text_PreParse
, "\33c",
1390 MUIA_Text_Contents
, "Pattern",
1392 Child
, MUI_NewObject(MUIC_Popimage
, TAG_DONE
),
1394 Child
, ScrollgroupObject
,
1395 GroupFrameT("A scroll group"),
1396 MUIA_Scrollgroup_Contents
, VGroupV
,
1401 "Line1\nLine2\nLine3\nLine4\n"
1402 "Line5\nLine6\nLine7\nLine8\n"
1404 "Line9\nLine10\nLine11\n",
1407 Child
, MUI_MakeObject(MUIO_Button
,
1409 Child
, MUI_MakeObject(MUIO_Button
,
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
,
1421 MUIA_Text_Contents
, "test",
1423 Child
, listview
= ListviewObject
,
1424 MUIA_Listview_List
, ListObject
,
1426 MUIA_List_ConstructHook
,
1428 MUIA_List_DestructHook
,
1430 MUIA_List_DisplayHook
, &hook_display
,
1431 MUIA_List_Format
, ",,",
1432 MUIA_List_SourceArray
, entries
,
1433 MUIA_List_Title
, TRUE
,
1437 MUIA_Popobject_ObjStrHook
, &hook_objstr
,
1441 MUIA_Cycle_Entries
, pages
,
1443 Child
, ScrollbarObject
,
1444 MUIA_Group_Horiz
, TRUE
,
1445 MUIA_Prop_Visible
, 100,
1446 MUIA_Prop_Entries
, 300,
1447 MUIA_Prop_First
, 50,
1452 Child
, RegisterGroup(text_pages
),
1456 MUIA_Background
, "2:cfffffff,cfffffff,10000000",
1458 MUIA_Text_Contents
, "\33cHello World!\n"
1459 "This is a text object\n\33lLeft \33bbold\33n\n"
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",
1469 Child
, RectangleObject
,
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",
1476 Child
, StringObject
,
1479 MUIA_String_AdvanceOnCR
, TRUE
,
1487 Child
, VGroup
, GroupFrameT("Default Alignment"),
1488 Child
, string
.strings
[0] = StringObject
,
1491 (IPTR
)default_accept_chars
,
1493 (IPTR
)default_reject_chars
,
1494 MUIA_String_AdvanceOnCR
, TRUE
,
1495 MUIA_String_MaxLen
, 9,
1497 MUIA_String_AttachedList
, list
.lists
[0],
1500 Child
, VGroup
, GroupFrameT("Left Aligned"),
1501 Child
, string
.strings
[1] = StringObject
,
1504 (IPTR
)default_accept_chars
,
1506 (IPTR
)default_reject_chars
,
1508 MUIV_String_Format_Left
,
1509 MUIA_String_AdvanceOnCR
, TRUE
,
1510 MUIA_String_MaxLen
, 9,
1512 MUIA_String_Contents
,
1513 (IPTR
)default_accept_chars
,
1514 MUIA_String_BufferPos
, 3,
1515 MUIA_String_AttachedList
, list
.lists
[0],
1518 Child
, VGroup
, GroupFrameT("Right Aligned"),
1519 Child
, string
.strings
[2] = StringObject
,
1522 (IPTR
)default_accept_chars
,
1524 (IPTR
)default_reject_chars
,
1526 MUIV_String_Format_Right
,
1527 MUIA_String_AdvanceOnCR
, TRUE
,
1528 MUIA_String_MaxLen
, 9,
1530 MUIA_String_AttachedList
, list
.lists
[0],
1533 Child
, VGroup
, GroupFrameT("Centered"),
1534 Child
, string
.strings
[3] = StringObject
,
1537 (IPTR
)default_accept_chars
,
1539 (IPTR
)default_reject_chars
,
1541 MUIV_String_Format_Center
,
1542 MUIA_String_AdvanceOnCR
, TRUE
,
1543 MUIA_String_MaxLen
, 9,
1545 MUIA_String_Integer
, 123,
1546 MUIA_String_AttachedList
, list
.lists
[0],
1549 Child
, VGroup
, GroupFrameT("Secret"),
1550 Child
, string
.strings
[4] = StringObject
,
1553 (IPTR
)default_accept_chars
,
1555 (IPTR
)default_reject_chars
,
1557 MUIV_String_Format_Center
,
1558 MUIA_String_Secret
, TRUE
,
1559 MUIA_String_AdvanceOnCR
, TRUE
,
1560 MUIA_String_MaxLen
, 9,
1562 MUIA_String_AttachedList
, list
.lists
[0],
1565 Child
, HGroup
, GroupFrameT("Narrow"),
1567 Child
, string
.strings
[5] = StringObject
,
1570 (IPTR
)default_accept_chars
,
1572 (IPTR
)default_reject_chars
,
1574 MUIV_String_Format_Center
,
1575 MUIA_String_AdvanceOnCR
, TRUE
,
1577 MUIA_String_MaxLen
, 9,
1579 MUIA_String_AttachedList
, list
.lists
[0],
1585 Child
, VGroup
, GroupFrameT("Controls"),
1587 Child
, string
.accept_all_check
=
1588 MUI_MakeObject(MUIO_Checkmark
, NULL
),
1589 Child
, MUI_MakeObject(MUIO_Label
,
1590 "Accept all characters", 0),
1594 Child
, MUI_MakeObject(MUIO_Label
,
1595 "Acceptable characters:", 0),
1596 Child
, string
.accept_string
= StringObject
,
1598 MUIA_String_Contents
,
1599 (IPTR
)default_accept_chars
,
1601 Child
, MUI_MakeObject(MUIO_Label
,
1602 "Unacceptable characters:", 0),
1603 Child
, string
.reject_string
= StringObject
,
1606 Child
, MUI_MakeObject(MUIO_Label
,
1607 "Cursor position:", 0),
1608 Child
, string
.cursor_pos_slider
=
1610 MUIA_Group_Horiz
, TRUE
,
1611 MUIA_Numeric_Min
, 0,
1613 Child
, MUI_MakeObject(MUIO_Label
,
1614 "Display position:", 0),
1615 Child
, string
.display_pos_slider
=
1617 MUIA_Group_Horiz
, TRUE
,
1618 MUIA_Numeric_Min
, 0,
1620 Child
, MUI_MakeObject(MUIO_Label
,
1621 "Integer value:", 0),
1622 Child
, string
.integer_string
=
1625 MUIA_String_Accept
, (IPTR
)digits
,
1627 Child
, MUI_MakeObject(MUIO_Label
,
1629 Child
, string
.plaintext_string
=
1633 Child
, MUI_MakeObject(MUIO_Label
,
1634 "Maximum string length:", 0),
1635 Child
, string
.max_len_text
= TextObject
,
1637 MUIA_Text_Contents
, "Unknown",
1642 Child
, string
.cr_advance_check
=
1643 MUI_MakeObject(MUIO_Checkmark
,
1645 Child
, MUI_MakeObject(MUIO_Label
,
1646 "Advance on CR", 0),
1650 Child
, string
.attach_list_check
=
1651 MUI_MakeObject(MUIO_Checkmark
,
1653 Child
, MUI_MakeObject(MUIO_Label
,
1659 Child
, string
.standard_hook_check
=
1660 MUI_MakeObject(MUIO_Checkmark
,
1662 Child
, MUI_MakeObject(MUIO_Label
,
1663 "Use standard edit hook", 0),
1667 Child
, string
.custom_hook_check
=
1668 MUI_MakeObject(MUIO_Checkmark
,
1670 Child
, MUI_MakeObject(MUIO_Label
,
1671 "Use custom edit hook", 0),
1684 Child
, wheel
= BoopsiObject
, /* MUI/Boopsi tags mixed */
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
,
1699 GA_Top
, 0, /* MUI will automatically */
1700 GA_Width
, 0, /* fill in the correct values */
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
1712 Child
, r_slider
= SliderObject
,
1713 MUIA_Group_Horiz
, TRUE
,
1714 MUIA_Numeric_Min
, 0,
1715 MUIA_Numeric_Max
, 255,
1717 Child
, g_slider
= SliderObject
,
1718 MUIA_Group_Horiz
, TRUE
,
1719 MUIA_Numeric_Min
, 0,
1720 MUIA_Numeric_Max
, 255,
1722 Child
, b_slider
= SliderObject
,
1723 MUIA_Group_Horiz
, TRUE
,
1724 MUIA_Numeric_Min
, 0,
1725 MUIA_Numeric_Max
, 255,
1727 Child
, hue_gauge
= GaugeObject
,
1729 MUIA_Gauge_Horiz
, TRUE
,
1730 MUIA_Gauge_Max
, 255,
1731 MUIA_Gauge_Divide
, 1<<24,
1732 MUIA_Gauge_InfoText
, "Hue: %ld",
1737 Child
, RegisterGroup(color_pages
),
1738 Child
, VGroup
, GroupFrameT("Palette"),
1739 Child
, PaletteObject
,
1743 Child
, VGroup
, GroupFrameT("Colorfield"),
1746 Child
, colorfield
= ColorfieldObject
,
1747 MUIA_Colorfield_RGB
, default_color
,
1748 MUIA_Colorfield_Pen
, 253,
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],
1756 Child
, colorfield_reset_button
=
1757 MUI_MakeObject(MUIO_Button
,
1761 MUI_MakeObject(MUIO_Label
, "Pen:", 0),
1762 Child
, colorfield_pen
= StringObject
,
1767 Child
, VGroup
, GroupFrameT("Coloradjust"),
1768 Child
, coloradjust
= ColoradjustObject
,
1769 MUIA_Coloradjust_RGB
, default_color
,
1775 Child
, VGroup
, GroupFrameT("Pendisplay"),
1778 Child
, pendisplay2
= PendisplayObject
,
1779 MUIA_Pendisplay_RGBcolor
,
1786 MUIO_Label
, "Pen:", 0),
1788 Child
, pendisplay_pen
=
1789 StringObject
, StringFrame
,
1792 Child
, reference_check
=
1793 MUI_MakeObject(MUIO_Checkmark
,
1795 Child
, MUI_MakeObject(MUIO_Label
,
1800 MUIO_Label
, "Penspec:", 0),
1801 Child
, pendisplay_spec
= StringObject
,
1806 Child
, shine_button
=
1807 MUI_MakeObject(MUIO_Button
,
1809 Child
, shadow_button
=
1810 MUI_MakeObject(MUIO_Button
,
1812 Child
, yellow_button
=
1813 MUI_MakeObject(MUIO_Button
,
1817 Child
, VGroup
, GroupFrameT("Poppen"),
1818 Child
, poppen
= PoppenObject
,
1822 Child
, VGroup
, GroupFrameT("Penadjust"),
1823 Child
, PenadjustObject
,
1831 Child
, editor_text
= StringObject
,
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
),
1840 Child
, save_button
=
1841 MUI_MakeObject(MUIO_Button
, "Save"),
1845 Child
, RegisterGroup(list_pages
),
1847 Child
, ColGroup(LIST_COUNT
),
1848 Child
, VGroup
, GroupFrameT("No Multiselect"),
1849 Child
, list
.lists
[0],
1852 GroupFrameT("Default Multiselect"),
1853 Child
, list
.lists
[1],
1856 GroupFrameT("Shifted Multiselect"),
1857 Child
, list
.lists
[2],
1860 GroupFrameT("Unconditional Multiselect"),
1861 Child
, list
.lists
[3],
1864 GroupFrameT("Read Only"),
1865 Child
, list
.lists
[4],
1869 MUIA_Group_HorizSpacing
, 0,
1870 Child
, RectangleObject
,
1871 MUIA_HorizWeight
, 1,
1873 Child
, list
.list_radios
= RadioObject
,
1874 MUIA_Radio_Entries
, empty
,
1875 MUIA_Group_Horiz
, TRUE
,
1876 MUIA_HorizWeight
, 1000,
1878 Child
, RectangleObject
,
1879 MUIA_HorizWeight
, 1,
1882 Child
, RectangleObject
,
1884 MUIA_Rectangle_HBar
, TRUE
,
1885 MUIA_Rectangle_BarTitle
, "List Controls",
1888 Child
, MUI_MakeObject(MUIO_Label
,
1889 "Affected index 1:", 0),
1890 Child
, list
.index1_string
=
1893 MUIA_String_Accept
, (IPTR
)digits
,
1894 MUIA_String_Integer
, 0,
1897 Child
, list
.draggable_check
=
1898 MUI_MakeObject(MUIO_Checkmark
, NULL
),
1899 Child
, MUI_MakeObject(MUIO_Label
,
1904 Child
, list
.showdropmarks_check
=
1905 MUI_MakeObject(MUIO_Checkmark
, NULL
),
1906 Child
, MUI_MakeObject(MUIO_Label
,
1907 "Show drop marks", 0),
1911 Child
, list
.autovisible_check
=
1912 MUI_MakeObject(MUIO_Checkmark
, NULL
),
1913 Child
, MUI_MakeObject(MUIO_Label
,
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
=
1925 MUIA_String_Accept
, (IPTR
)digits
,
1926 MUIA_String_Integer
, 0,
1929 Child
, list
.dragsortable_check
=
1930 MUI_MakeObject(MUIO_Checkmark
, NULL
),
1931 Child
, MUI_MakeObject(MUIO_Label
,
1932 "Drag sortable", 0),
1936 Child
, list
.multitest_check
=
1937 MUI_MakeObject(MUIO_Checkmark
, NULL
),
1938 Child
, MUI_MakeObject(MUIO_Label
,
1939 "Filter multiselect", 0),
1943 Child
, list
.quiet_check
=
1944 MUI_MakeObject(MUIO_Checkmark
, NULL
),
1945 Child
, MUI_MakeObject(MUIO_Label
,
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
,
1956 MUIA_Cycle_Entries
, list_move1_modes
,
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
,
1964 Child
, list
.title_string
=
1969 Child
, MUI_MakeObject(MUIO_Label
,
1970 "Move/exchange mode 2:", 0),
1971 Child
, list
.move2_cycle
= CycleObject
,
1973 MUIA_Cycle_Entries
, list_move2_modes
,
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
,
1981 Child
, list
.entries_text
= TextObject
,
1983 MUIA_Text_Contents
, "N/A",
1986 Child
, MUI_MakeObject(MUIO_Label
,
1988 Child
, list
.jump_cycle
= CycleObject
,
1990 MUIA_Cycle_Entries
, list_jump_modes
,
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
,
2000 MUIA_Text_Contents
, "N/A",
2003 Child
, MUI_MakeObject(MUIO_Label
,
2004 "Select/redraw mode:", 0),
2005 Child
, list
.select_cycle
= CycleObject
,
2007 MUIA_Cycle_Entries
, list_select_modes
,
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
,
2017 MUIA_Text_Contents
, "N/A",
2020 Child
, MUI_MakeObject(MUIO_Label
,
2022 Child
, list
.insert_cycle
= CycleObject
,
2024 MUIA_Cycle_Entries
, list_insert_modes
,
2026 Child
, list
.insert_single_button
=
2027 MUI_MakeObject(MUIO_Button
,
2029 Child
, list
.insert_multiple_button
=
2030 MUI_MakeObject(MUIO_Button
,
2032 Child
, MUI_MakeObject(MUIO_Label
,
2033 "Last insertion index:", 0),
2034 Child
, list
.insert_text
= TextObject
,
2036 MUIA_Text_Contents
, "N/A",
2039 Child
, MUI_MakeObject(MUIO_Label
,
2041 Child
, list
.remove_cycle
= CycleObject
,
2043 MUIA_Cycle_Entries
, list_remove_modes
,
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
,
2053 MUIA_Text_Contents
, "N/A",
2056 Child
, MUI_MakeObject(MUIO_Label
,
2057 "Activate mode:", 0),
2058 Child
, list
.activate_cycle
= CycleObject
,
2060 MUIA_Cycle_Entries
, list_activate_modes
,
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
,
2070 MUIA_Text_Contents
, "N/A",
2077 Child
, MUI_MakeObject(MUIO_Label
,
2078 "Last drop index:", 0),
2079 Child
, list
.drop_text
= TextObject
,
2081 MUIA_Text_Contents
, "N/A",
2086 Child
, ColGroup(MULTI_LIST_COUNT
),
2087 Child
, VGroup
, GroupFrameT("Standard Format"),
2088 Child
, list
.multi_lists
[0] = ListviewObject
,
2092 MUIA_List_ConstructHook
,
2094 MUIA_List_DestructHook
,
2096 MUIA_List_DisplayHook
,
2098 MUIA_List_Format
, list_format
,
2099 MUIA_List_SourceArray
, entries
,
2100 MUIA_List_Title
, TRUE
,
2101 MUIA_List_AdjustWidth
, TRUE
,
2103 MUIA_Listview_MultiSelect
,
2104 MUIV_Listview_MultiSelect_None
,
2105 MUIA_Listview_DefClickColumn
, 1,
2109 Child
, VGroup
, GroupFrameT("Custom Format"),
2110 Child
, list
.multi_lists
[1] = ListviewObject
,
2114 MUIA_List_Format
, list_format
,
2115 MUIA_List_Title
, TRUE
,
2116 MUIA_List_AdjustHeight
, TRUE
,
2118 MUIA_Listview_MultiSelect
,
2119 MUIV_Listview_MultiSelect_None
,
2125 Child
, RectangleObject
,
2127 MUIA_Rectangle_HBar
, TRUE
,
2128 MUIA_Rectangle_BarTitle
, "List Controls",
2131 Child
, MUI_MakeObject(MUIO_Label
, "Format:", 0),
2132 Child
, list
.format_string
= StringObject
,
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
,
2146 Child
, MUI_MakeObject(MUIO_Label
,
2147 "Default clicked column:", 0),
2148 Child
, list
.def_column_string
= StringObject
,
2150 MUIA_String_Accept
, (IPTR
)digits
,
2151 MUIA_String_Integer
, -1,
2154 Child
, MUI_MakeObject(MUIO_Label
,
2155 "Clicked column:", 0),
2156 Child
, list
.column_string
= StringObject
,
2159 Child
, list
.column_text
= TextObject
,
2161 MUIA_Text_Contents
, "N/A",
2174 MUIA_Gauge_InfoText
, "%ld %%",
2175 MUIA_Gauge_Horiz
, TRUE
,
2176 MUIA_Gauge_Current
, 25,
2185 MUIA_Gauge_InfoText
, "%ld %%",
2186 MUIA_Gauge_Horiz
, TRUE
,
2187 MUIA_Gauge_Current
, 50,
2196 MUIA_Gauge_InfoText
, "%ld %%",
2197 MUIA_Gauge_Horiz
, TRUE
,
2198 MUIA_Gauge_Current
, 75,
2208 MUIA_Gauge_InfoText
, "%ld %%",
2209 MUIA_Gauge_Current
, 25,
2213 MUIA_Gauge_InfoText
, "%ld %%",
2214 MUIA_Gauge_Current
, 50,
2218 MUIA_Gauge_InfoText
, "%ld %%",
2219 MUIA_Gauge_Current
, 75,
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
,
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
,
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
,
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
,
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
,
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
,
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
,
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
,
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
,
2304 Child
, numerics
[RKNOB
] = KnobObject
,
2305 MUIA_Numeric_Reverse
, TRUE
,
2306 MUIA_Numeric_Min
, NUMERIC_MIN
,
2307 MUIA_Numeric_Max
, NUMERIC_MAX
,
2312 Child
, MUI_MakeObject(MUIO_Label
,
2313 "Minimum Value:", 0),
2314 Child
, min_string
= (Object
*)StringObject
,
2316 MUIA_String_Accept
, (IPTR
)digits
,
2317 MUIA_String_Integer
, NUMERIC_MIN
,
2320 Child
, MUI_MakeObject(MUIO_Label
,
2321 "Maximum Value:", 0),
2322 Child
, max_string
= (Object
*)StringObject
,
2324 MUIA_String_Accept
, (IPTR
)digits
,
2325 MUIA_String_Integer
, NUMERIC_MAX
,
2328 Child
, slider_button
= TextObject
,
2330 MUIA_InputMode
, MUIV_InputMode_RelVerify
,
2332 MUIA_Background
, MUII_ButtonBack
,
2333 MUIA_Text_PreParse
, "\33c",
2335 "Change Slider Orientations",
2337 Child
, MUI_MakeObject(MUIO_Label
, "", 0),
2346 MUIA_Radio_Entries
, radio_entries1
,
2348 Child
, country_radio
[0] = RadioObject
,
2350 MUIA_Radio_Entries
, radio_entries2
,
2351 MUIA_Radio_Active
, 1,
2357 MUIA_Radio_Entries
, radio_entries1
,
2359 Child
, country_radio
[1] = RadioObject
,
2361 MUIA_Radio_Entries
, radio_entries2
,
2362 MUIA_Radio_Active
, 1,
2367 #if defined(TEST_ICONLIST)
2370 Child
, volume_iconlist
=
2371 MUI_NewObject(MUIC_IconVolumeList
, GroupFrame
,
2373 Child
, drawer_iconlist
=
2374 MUI_NewObject(MUIC_IconDrawerList
, GroupFrame
,
2375 MUIA_IconDrawerList_Drawer
, "SYS:",
2382 Child
, create_balance_column(),
2383 Child
, BalanceObject
,
2386 Child
, create_balance_column(),
2387 Child
, BalanceObject
,
2390 Child
, create_balance_column(),
2391 Child
, BalanceObject
,
2394 Child
, create_balance_column(),
2395 Child
, BalanceObject
,
2398 Child
, create_balance_column(),
2405 Child
, about_button
= TextObject
,
2407 MUIA_InputMode
, MUIV_InputMode_RelVerify
,
2409 MUIA_Background
, MUII_ButtonBack
,
2410 MUIA_Text_PreParse
, "\33c",
2411 MUIA_Text_Contents
, "About",
2413 Child
, quit_button
= TextObject
,
2415 MUIA_InputMode
, MUIV_InputMode_RelVerify
,
2417 MUIA_Background
, MUII_ButtonBack
,
2418 MUIA_ControlChar
, 'q',
2419 MUIA_Text_HiChar
, 'q',
2420 MUIA_Text_PreParse
, "\33c",
2421 MUIA_Text_Contents
, "Quit",
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
,
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
++)
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
);
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
,
2514 DoMethod(string
.strings
[0], MUIM_Notify
,
2515 MUIA_String_BufferPos
, MUIV_EveryTime
,
2516 string
.strings
[i
], 3, MUIM_Set
, MUIA_String_BufferPos
,
2518 DoMethod(string
.strings
[0], MUIM_Notify
,
2519 MUIA_String_DisplayPos
, MUIV_EveryTime
,
2520 string
.strings
[i
], 3, MUIM_Set
, MUIA_String_DisplayPos
,
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
,
2568 /* Notifications for color objects */
2569 DoMethod(colorfield
, MUIM_Notify
, MUIA_Colorfield_Red
,
2570 MUIV_EveryTime
, colorfield2
, 3, MUIM_Set
, MUIA_Colorfield_Red
,
2572 DoMethod(colorfield
, MUIM_Notify
, MUIA_Colorfield_Green
,
2573 MUIV_EveryTime
, colorfield2
, 3, MUIM_Set
, MUIA_Colorfield_Green
,
2575 DoMethod(colorfield
, MUIM_Notify
, MUIA_Colorfield_Blue
,
2576 MUIV_EveryTime
, colorfield2
, 3, MUIM_Set
, MUIA_Colorfield_Blue
,
2578 DoMethod(coloradjust
, MUIM_Notify
, MUIA_Coloradjust_Red
,
2579 MUIV_EveryTime
, colorfield
, 3, MUIM_Set
, MUIA_Colorfield_Red
,
2581 DoMethod(coloradjust
, MUIM_Notify
, MUIA_Coloradjust_Green
,
2582 MUIV_EveryTime
, colorfield
, 3, MUIM_Set
, MUIA_Colorfield_Green
,
2584 DoMethod(coloradjust
, MUIM_Notify
, MUIA_Coloradjust_Blue
,
2585 MUIV_EveryTime
, colorfield
, 3, MUIM_Set
, MUIA_Colorfield_Blue
,
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
,
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
,
2612 DoMethod(pendisplay_spec
, MUIM_Notify
, MUIA_String_Contents
,
2613 MUIV_EveryTime
, pendisplay
, 3, MUIM_Set
, MUIA_Pendisplay_Spec
,
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
);
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
,
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
,
2640 DoMethod(list
.lists
[i
], MUIM_Notify
, MUIA_List_First
,
2641 MUIV_EveryTime
, app
, 3, MUIM_CallHook
, &hook_standard
,
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
,
2649 DoMethod(list
.lists
[i
], MUIM_Notify
, MUIA_Listview_SelectChange
,
2650 MUIV_EveryTime
, app
, 3, MUIM_CallHook
, &hook_standard
,
2653 DoMethod(list
.draggable_check
, MUIM_Notify
, MUIA_Selected
,
2654 MUIV_EveryTime
, app
, 3, MUIM_CallHook
, &hook_standard
,
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
,
2668 DoMethod(list
.quiet_check
, MUIM_Notify
, MUIA_Selected
,
2669 MUIV_EveryTime
, app
, 3, MUIM_CallHook
, &hook_standard
,
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
,
2712 DoMethod(list
.list_radios
, MUIM_Notify
, MUIA_Radio_Active
,
2713 MUIV_EveryTime
, app
, 3, MUIM_CallHook
, &hook_standard
,
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
,
2747 DoMethod(list
.column_string
, MUIM_Notify
, MUIA_String_Contents
,
2748 MUIV_EveryTime
, list
.column_text
, 3, MUIM_Set
, MUIA_Text_Contents
,
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
);
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
,
2768 DoMethod(max_string
, MUIM_Notify
, MUIA_String_Integer
,
2769 MUIV_EveryTime
, numerics
[i
], 3, MUIM_Set
, MUIA_Numeric_Max
,
2772 DoMethod(slider_button
, MUIM_Notify
, MUIA_Pressed
, FALSE
,
2773 numerics
[HRSLIDER
], 3, MUIM_Set
, MUIA_Slider_Horiz
, FALSE
);
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)
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
);
2793 /* automatic tests */
2794 get(list
.lists
[0], MUIA_List_Visible
, &value
);
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
);
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
);
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
));
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
)
2831 sigs
= Wait(sigs
| SIGBREAKF_CTRL_C
| SIGBREAKF_CTRL_D
);
2832 if (sigs
& SIGBREAKF_CTRL_C
)
2834 if (sigs
& SIGBREAKF_CTRL_D
)
2839 DoMethod(list
.multi_lists
[0], MUIM_List_DeleteImage
, list
.image
);
2840 MUI_DisposeObject(app
);
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
);