MUIA_Text_Contents can't be used on a String object.
[AROS.git] / test / Zune / test.c
blobe05f05c66dfba4d26f3a39590e4dd2a2ba4b0425
1 /*
2 Copyright © 2002-2014, 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 <aros/debug.h>
27 /* the following should go in a single include file which then only
28 ** consists of the public constants and members. Actually this is easy
31 #define TEST_ICONLIST
33 #include <libraries/mui.h>
34 #if defined(TEST_ICONLIST)
35 #include "../../workbench/system/Wanderer/Classes/iconlist_attributes.h"
36 #include "../../workbench/system/Wanderer/Classes/iconlist.h"
37 #endif
39 #define LIST_COUNT 5
40 #define MULTI_LIST_COUNT 2
42 #define NUMERIC_MIN 0
43 #define NUMERIC_MAX 100
45 static const TEXT list_format[] = "BAR,BAR,";
47 enum
49 HNSLIDER,
50 HRSLIDER,
51 HQSLIDER,
52 VNSLIDER,
53 VRSLIDER,
54 VQSLIDER,
55 NNUMERICBUTTON,
56 RNUMERICBUTTON,
57 NKNOB,
58 RKNOB,
59 NUMERIC_COUNT
62 struct Library *MUIMasterBase;
63 struct Library *ColorWheelBase;
65 struct list_entry
67 char *column1;
68 char *column2;
71 Object *app;
73 Object *wheel;
74 Object *r_slider;
75 Object *g_slider;
76 Object *b_slider;
77 Object *hue_gauge;
78 Object *group;
79 Object *editor_text;
80 Object *filename_string;
81 Object *save_button;
82 Object *list2;
84 Object *drawer_iconlist;
85 Object *volume_iconlist;
87 AROS_UFH0(void, repeat_function)
89 AROS_USERFUNC_INIT
91 printf("MUI_Timer\n");
93 AROS_USERFUNC_EXIT
96 AROS_UFH0(void, wheel_function)
98 AROS_USERFUNC_INIT
100 nnset(r_slider, MUIA_Numeric_Value, (XGET(wheel,
101 WHEEL_Red) >> 24) & 0xff);
102 nnset(g_slider, MUIA_Numeric_Value, (XGET(wheel,
103 WHEEL_Green) >> 24) & 0xff);
104 nnset(b_slider, MUIA_Numeric_Value, (XGET(wheel,
105 WHEEL_Blue) >> 24) & 0xff);
107 AROS_USERFUNC_EXIT
110 AROS_UFH0(void, slider_function)
112 AROS_USERFUNC_INIT
114 struct ColorWheelRGB cw;
115 ULONG red = XGET(r_slider, MUIA_Numeric_Value);
116 ULONG green = XGET(g_slider, MUIA_Numeric_Value);
117 ULONG blue = XGET(b_slider, MUIA_Numeric_Value);
119 cw.cw_Red = (red << 24) | (red << 16) | (red << 8) | red;
120 cw.cw_Green = (green << 24) | (green << 16) | (green << 8) | green;
121 cw.cw_Blue = (blue << 24) | (blue << 16) | (blue << 8) | blue;
123 nnset(wheel, WHEEL_RGB, &cw);
124 set(hue_gauge, MUIA_Gauge_Current, XGET(wheel, WHEEL_Hue));
126 AROS_USERFUNC_EXIT
129 AROS_UFH0(void, objects_function)
131 AROS_USERFUNC_INIT
133 Object *new_obj = MUI_MakeObject(MUIO_Button, "Button");
134 if (new_obj)
136 DoMethod(group, MUIM_Group_InitChange);
137 DoMethod(group, OM_ADDMEMBER, new_obj);
138 DoMethod(group, MUIM_Group_ExitChange);
141 AROS_USERFUNC_EXIT
144 AROS_UFH0(void, about_function)
146 AROS_USERFUNC_INIT
148 static Object *about_wnd;
150 if (!about_wnd)
152 about_wnd = AboutmuiObject, MUIA_Aboutmui_Application, app, End;
155 if (about_wnd)
156 set(about_wnd, MUIA_Window_Open, TRUE);
158 AROS_USERFUNC_EXIT
161 AROS_UFH3(void, display_function,
162 AROS_UFHA(struct Hook *, h, A0),
163 AROS_UFHA(char **, strings, A2),
164 AROS_UFHA(struct list_entry *, entry, A1))
166 AROS_USERFUNC_INIT
168 static char buf[100];
170 if (entry)
172 sprintf(buf, "%ld", (long)*(strings - 1));
173 strings[0] = buf;
174 strings[1] = entry->column1;
175 strings[2] = entry->column2;
177 else
179 strings[0] = "Number";
180 strings[1] = "Column 1";
181 strings[2] = "Column 2";
184 AROS_USERFUNC_EXIT
187 AROS_UFH3(void, display2_function,
188 AROS_UFHA(struct Hook *, h, A0),
189 AROS_UFHA(char **, strings, A2),
190 AROS_UFHA(struct list_entry *, entry, A1))
192 AROS_USERFUNC_INIT
194 static char buf[100];
196 if (entry)
198 sprintf(buf, "line num: %ld id: %p", (long)*(strings - 1), entry);
199 strings[0] = buf;
201 else
203 strings[0] = "Number";
206 AROS_USERFUNC_EXIT
209 AROS_UFH0(void, save_function)
211 AROS_USERFUNC_INIT
213 char *text = (char *)XGET(editor_text, MUIA_String_Contents);
214 char *filename = (char *)XGET(filename_string, MUIA_String_Contents);
215 BPTR fh;
217 if (!strlen(filename))
218 return;
220 if ((fh = Open(filename, MODE_NEWFILE)))
222 Write(fh, text, strlen(text));
223 Close(fh);
226 AROS_USERFUNC_EXIT
229 static int id = 1;
231 AROS_UFH0(void, add_function)
233 AROS_USERFUNC_INIT
235 DoMethod(list2, MUIM_List_InsertSingle, id++,
236 MUIV_List_Insert_Bottom);
238 AROS_USERFUNC_EXIT
241 #if defined(TEST_ICONLIST)
242 /* IconList callbacks */
243 void volume_doubleclicked(void)
245 char buf[200];
246 struct IconList_Entry *ent = (void *)MUIV_IconList_NextIcon_Start;
248 DoMethod(volume_iconlist, MUIM_IconList_NextIcon,
249 MUIV_IconList_NextIcon_Selected, &ent);
250 if ((IPTR) ent == MUIV_IconList_NextIcon_End)
251 return;
253 strcpy(buf, ent->label);
254 strcat(buf, ":");
255 set(drawer_iconlist, MUIA_IconDrawerList_Drawer, buf);
258 void drawer_doubleclicked(void)
260 struct IconList_Entry *ent = (void *)MUIV_IconList_NextIcon_Start;
262 DoMethod(drawer_iconlist, MUIM_IconList_NextIcon,
263 MUIV_IconList_NextIcon_Selected, &ent);
264 if ((IPTR) ent == MUIV_IconList_NextIcon_End)
265 return;
266 set(drawer_iconlist, MUIA_IconDrawerList_Drawer,
267 ent->ile_IconEntry->ie_IconNode.ln_Name);
269 #endif
271 static IPTR create_balance_column(void)
273 return (IPTR) VGroup,
274 Child, RectangleObject,
275 GaugeFrame,
276 End,
277 Child, BalanceObject,
278 End,
279 Child, RectangleObject,
280 GaugeFrame,
281 End,
282 Child, BalanceObject,
283 End,
284 Child, RectangleObject,
285 GaugeFrame,
286 End,
287 Child, BalanceObject,
288 End,
289 Child, RectangleObject,
290 GaugeFrame,
291 End,
292 Child, BalanceObject,
293 End,
294 Child, RectangleObject,
295 GaugeFrame,
296 End,
297 End;
300 /* The custom class */
302 struct DropText_Data
304 ULONG times;
307 #ifdef __MAXON__
308 #undef KeymapBase
309 struct Library *KeymapBase;
310 #endif
312 #ifndef __AROS__
313 __saveds __asm IPTR dispatcher(register __a0 struct IClass *cl,
314 register __a2 Object *obj, register __a1 Msg msg)
315 #else
316 AROS_UFH3S(IPTR, dispatcher,
317 AROS_UFHA(Class *, cl, A0),
318 AROS_UFHA(Object *, obj, A2), AROS_UFHA(Msg, msg, A1))
319 #endif
321 AROS_USERFUNC_INIT
323 switch (msg->MethodID)
325 case MUIM_DragQuery:
326 return MUIV_DragQuery_Accept;
327 case MUIM_DragDrop:
329 struct DropText_Data *data =
330 (struct DropText_Data *)INST_DATA(cl, obj);
331 char buf[100];
332 data->times++;
333 sprintf(buf, "%ld times", (long)data->times);
334 /* no MUIM_SetAsString yet */
335 set(obj, MUIA_Text_Contents, buf);
339 return DoSuperMethodA(cl, obj, (Msg) msg);
341 AROS_USERFUNC_EXIT
344 struct MUI_CustomClass *CL_DropText;
346 #define DropTextObject BOOPSIOBJMACRO_START(CL_DropText->mcc_Class)
348 /* Main prog */
350 static struct Hook hook_standard;
352 AROS_UFH3(void, hook_func_standard,
353 AROS_UFHA(struct Hook *, h, A0),
354 AROS_UFHA(void *, dummy, A2), AROS_UFHA(void **, funcptr, A1))
356 AROS_USERFUNC_INIT
358 void (*func) (ULONG *) = (void (*)(ULONG *))(*funcptr);
360 if (func)
361 func((ULONG *) funcptr + 1);
363 AROS_USERFUNC_EXIT
366 int main(void)
368 Object *wnd, *second_wnd;
369 Object *open_button;
370 Object *about_button;
371 Object *quit_button;
372 Object *repeat_button;
373 Object *objects_button;
374 Object *about_item, *quit_item;
375 Object *context_menu;
376 Object *popobject, *listview;
377 Object *lists[LIST_COUNT];
378 Object *list_add_button, *list_remove_button, *list_clear_button;
379 Object *dragsortable_check, *showdropmarks_check, *quiet_check;
380 Object *sort_button, *clear_button, *fill_button;
381 Object *multi_lists[MULTI_LIST_COUNT];
382 Object *format_string;
383 Object *showheadings_check;
384 Object *numerics[NUMERIC_COUNT];
385 Object *min_string, *max_string;
386 Object *slider_button;
387 Object *country_radio[2];
388 UWORD i;
390 static char *pages[] =
391 {"General", "Text", "Colorwheel", "Color", "Edit", "List", "Gauges",
392 "Numeric", "Radio", "Icon List", "Balancing", NULL};
393 static char *list_pages[] =
394 {"Single Column (1)", "Single Column (2)", "Multicolumn", NULL};
395 static char **radio_entries1 = pages;
396 static char *radio_entries2[] =
397 {"Paris", "Pataya", "London", "New York", "Reykjavik", NULL};
398 static char *fruits[] = {"Strawberry", "Apple", "Banana", "Orange",
399 "Grapefruit", "Kumquat", "Plum", "Raspberry", "Apricot", "Grape",
400 "Peach", "Lemon", "Lime", "Date", "Pineapple", "Blueberry", "Papaya",
401 "Cranberry", "Gooseberry", "Pear", "Fig", "Coconut", "Melon",
402 "Pumpkin", NULL};
404 static struct list_entry entry1 = {"Testentry1", "Col2: Entry1"};
405 static struct list_entry entry2 = {"Entry2", "Col2: Entry2"};
406 static struct list_entry entry3 = {"Entry3", "Col2: Entry3"};
407 static struct list_entry entry4 = {"Entry4", "Col2: Entry4"};
408 static struct list_entry entry5 = {"Entry5", "Col2: Entry5"};
409 static struct list_entry entry6 = {"Entry6", "Col2: Entry6"};
411 static struct list_entry *entries[] =
412 {&entry1, &entry2, &entry3, &entry4, &entry5, &entry6, NULL};
414 struct Hook hook;
415 struct Hook hook_wheel;
416 struct Hook hook_slider;
417 struct Hook hook_objects;
418 struct Hook hook_display;
419 struct Hook hook_display2;
421 hook_standard.h_Entry = (HOOKFUNC) hook_func_standard;
423 MUIMasterBase = (struct Library *)OpenLibrary("muimaster.library", 0);
425 hook.h_Entry = (HOOKFUNC) repeat_function;
426 hook_wheel.h_Entry = (HOOKFUNC) wheel_function;
427 hook_slider.h_Entry = (HOOKFUNC) slider_function;
428 hook_objects.h_Entry = (HOOKFUNC) objects_function;
429 hook_display.h_Entry = (HOOKFUNC) display_function;
430 hook_display2.h_Entry = (HOOKFUNC) display2_function;
432 context_menu = MenuitemObject,
433 MUIA_Family_Child, MenuitemObject,
434 MUIA_Menuitem_Title, "Menutest",
435 MUIA_Family_Child, about_item = MenuitemObject,
436 MUIA_Menuitem_Title, "First Test Entry", End,
437 MUIA_Family_Child, quit_item = MenuitemObject,
438 MUIA_Menuitem_Title, "Second Test Entry", End,
439 End,
440 End;
442 /* should check the result in a real program! */
443 CL_DropText = MUI_CreateCustomClass(NULL, MUIC_Text, NULL,
444 sizeof(struct DropText_Data), dispatcher);
445 ColorWheelBase = OpenLibrary("gadgets/colorwheel.gadget", 0);
447 app = ApplicationObject,
448 MUIA_Application_Menustrip, MenuitemObject,
449 MUIA_Family_Child, MenuitemObject,
450 MUIA_Menuitem_Title, "Project",
451 MUIA_Family_Child, about_item = MenuitemObject,
452 MUIA_Menuitem_Title, "About...",
453 MUIA_Menuitem_Shortcut, "?",
454 End,
455 MUIA_Family_Child, MenuitemObject,
456 MUIA_Menuitem_Title, (SIPTR)-1,
457 End,
458 MUIA_Family_Child, quit_item = MenuitemObject,
459 MUIA_Menuitem_Title, "Quit",
460 MUIA_Menuitem_Shortcut, "Q",
461 End,
462 End,
463 End,
465 SubWindow, wnd = WindowObject,
466 MUIA_Window_Title, "test",
467 MUIA_Window_Activate, TRUE,
469 WindowContents, VGroup,
470 Child, RegisterGroup(pages),
471 //MUIA_Background, "5:SYS:Prefs/Presets/Backdrops/StuccoBlue.pic",
473 /* general */
474 Child, VGroup,
475 Child, HGroup,
476 GroupFrameT("A horizontal group"),
477 Child, ColGroup(2),
478 GroupFrameT("A column group"),
479 Child, repeat_button = TextObject,
480 MUIA_CycleChain, 1,
481 ButtonFrame,
482 MUIA_Background, MUII_ButtonBack,
483 MUIA_Text_PreParse, "\33c",
484 MUIA_Text_Contents, "Repeat",
485 MUIA_InputMode, MUIV_InputMode_RelVerify,
486 End,
487 Child, TextObject,
488 MUIA_CycleChain, 1,
489 ButtonFrame,
490 MUIA_Background, MUII_ButtonBack,
491 MUIA_Text_PreParse, "\33c",
492 MUIA_Text_Contents, "Drag Me",
493 MUIA_Draggable, TRUE,
494 MUIA_InputMode, MUIV_InputMode_RelVerify,
495 End,
496 Child, open_button = TextObject,
497 MUIA_CycleChain, 1,
498 ButtonFrame,
499 MUIA_Background, MUII_ButtonBack,
500 MUIA_Text_PreParse, "\33c",
501 MUIA_Text_Contents, "Open Window",
502 MUIA_InputMode, MUIV_InputMode_RelVerify,
503 End,
504 Child, TextObject,
505 MUIA_ContextMenu, context_menu,
506 MUIA_CycleChain, 1,
507 ButtonFrame,
508 MUIA_Background, MUII_ButtonBack,
509 MUIA_Text_PreParse, "\33c",
510 MUIA_Text_Contents, "Press Right",
511 MUIA_InputMode, MUIV_InputMode_RelVerify,
512 End,
513 Child, objects_button = TextObject,
514 MUIA_CycleChain, 1,
515 ButtonFrame,
516 MUIA_Background, MUII_ButtonBack,
517 MUIA_Text_PreParse, "\33c",
518 MUIA_Text_Contents, "Add Objects",
519 MUIA_InputMode, MUIV_InputMode_RelVerify,
520 End,
521 Child, HVSpace,
522 Child, HGroup,
523 Child, HVSpace,
524 Child, MUI_MakeObject(MUIO_Checkmark,
525 "_Checkmark"),
526 End,
527 Child, HGroup,
528 Child, MUI_MakeObject(MUIO_Label,
529 "_Checkmark", 0),
530 Child, HVSpace,
531 End,
532 Child, HVSpace,
533 Child, HVSpace,
534 End,
535 Child, group = VGroup,
536 GroupFrameT("A vertical group"),
537 Child, DropTextObject,
538 MUIA_Dropable, TRUE,
539 MUIA_CycleChain, 1,
540 ButtonFrame,
541 MUIA_Background, MUII_ButtonBack,
542 MUIA_Text_PreParse, "\33c",
543 MUIA_Text_Contents, "Drop Here",
544 MUIA_Dropable, TRUE,
545 MUIA_InputMode, MUIV_InputMode_RelVerify,
546 End,
547 Child, TextObject,
548 TextFrame,
549 MUIA_Background, MUII_MARKHALFSHINE,
550 MUIA_CycleChain, 1,
551 MUIA_Text_PreParse, "\33c",
552 MUIA_Text_Contents, "Pattern",
553 End,
554 Child, MUI_NewObject(MUIC_Popimage, TAG_DONE),
555 End,
556 Child, ScrollgroupObject,
557 GroupFrameT("A scroll group"),
558 MUIA_Scrollgroup_Contents, VGroupV,
559 VirtualFrame,
560 Child, TextObject,
561 TextFrame,
562 MUIA_Text_Contents,
563 "Line1\nLine2\nLine3\nLine4\n"
564 "Line5\nLine6\nLine7\nLine8\n"
565 "\n\n\n"
566 "Line9\nLine10\nLine11\n",
567 End,
568 Child, HGroup,
569 Child, MUI_MakeObject(MUIO_Button,
570 "Button9"),
571 Child, MUI_MakeObject(MUIO_Button,
572 "Button10"),
573 End,
574 End,
575 End,
576 End,
577 Child, popobject = PopobjectObject,
578 MUIA_Popstring_String,
579 MUI_MakeObject(MUIO_String, NULL, 200),
580 MUIA_Popstring_Button, PopButton(MUII_PopUp),
581 MUIA_Popobject_Object, VGroup,
582 Child, TextObject,
583 MUIA_Text_Contents, "test",
584 End,
585 Child, listview = ListviewObject,
586 MUIA_Listview_List, ListObject,
587 InputListFrame,
588 MUIA_List_DisplayHook, &hook_display,
589 MUIA_List_Format, ",,",
590 MUIA_List_SourceArray, entries,
591 MUIA_List_Title, TRUE,
592 End,
593 End,
594 End,
595 End,
596 Child, CycleObject,
597 ButtonFrame,
598 MUIA_Cycle_Entries, pages,
599 End,
600 Child, ScrollbarObject,
601 MUIA_Group_Horiz, TRUE,
602 MUIA_Prop_Visible, 100,
603 MUIA_Prop_Entries, 300,
604 MUIA_Prop_First, 50,
605 End,
606 End,
608 /* text */
609 Child, VGroup,
610 Child, TextObject,
611 MUIA_Background, "2:cfffffff,cfffffff,10000000",
612 TextFrame,
613 MUIA_Text_Contents, "\33cHello World!\n"
614 "This is a text object\n\33lLeft \33bbold\33n\n"
615 "\33rRight",
616 End,
617 Child, RectangleObject,
618 MUIA_VertWeight, 0,
619 /* Seems to be not supported properly as orginal MUI
620 doesn't allow to alter the height of the window */
621 MUIA_Rectangle_HBar, TRUE,
622 MUIA_Rectangle_BarTitle,"Enter a string",
623 End,
624 Child, StringObject,
625 StringFrame,
626 MUIA_CycleChain,1,
627 MUIA_String_AdvanceOnCR, TRUE,
628 End,
629 Child, HVSpace,
630 End,
632 /* colorwheel */
633 Child, VGroup,
634 Child, wheel = BoopsiObject, /* MUI/Boopsi tags mixed */
635 GroupFrame,
636 /* boopsi objects don't know */
637 /* their sizes, so we help */
638 /* keep important values */
639 /* during window resize */
640 MUIA_Boopsi_ClassID, "colorwheel.gadget",
641 MUIA_Boopsi_MinWidth , 30,
642 MUIA_Boopsi_MinHeight, 30,
643 MUIA_Boopsi_Remember , WHEEL_Saturation,
644 MUIA_Boopsi_Remember , WHEEL_Hue,
645 /* this magic fills in the screen pointer */
646 MUIA_Boopsi_TagScreen, WHEEL_Screen,
647 WHEEL_Screen, NULL,
648 GA_Left, 0,
649 GA_Top, 0, /* MUI will automatically */
650 GA_Width, 0, /* fill in the correct values */
651 GA_Height, 0,
652 ICA_TARGET, ICTARGET_IDCMP,
653 /* needed for notification */
654 WHEEL_Saturation, 0, /* start in the center */
655 MUIA_FillArea, TRUE,
656 /* use this because it defaults to FALSE
657 for boopsi gadgets but the colorwheel
658 doesn't bother about redrawing its
659 background */
660 End,
662 Child, r_slider = SliderObject,
663 MUIA_Group_Horiz, TRUE,
664 MUIA_Numeric_Min, 0,
665 MUIA_Numeric_Max, 255,
666 End,
667 Child, g_slider = SliderObject,
668 MUIA_Group_Horiz, TRUE,
669 MUIA_Numeric_Min, 0,
670 MUIA_Numeric_Max, 255,
671 End,
672 Child, b_slider = SliderObject,
673 MUIA_Group_Horiz, TRUE,
674 MUIA_Numeric_Min, 0,
675 MUIA_Numeric_Max, 255,
676 End,
677 Child, hue_gauge = GaugeObject,
678 GaugeFrame,
679 MUIA_Gauge_Horiz, TRUE,
680 MUIA_Gauge_Max, 255,
681 MUIA_Gauge_Divide, 1<<24,
682 MUIA_Gauge_InfoText, "Hue: %ld",
683 End,
684 End,
686 /* color */
687 Child, VGroup, GroupFrameT("Palette"),
688 Child, PaletteObject,
689 End,
690 End,
692 /* edit */
693 Child, VGroup,
694 Child, editor_text = StringObject,
695 StringFrame,
696 MUIA_Text_Multiline, TRUE,
697 End,
698 Child, PopaslObject,
699 ASLFR_DoSaveMode, TRUE,
700 MUIA_Popstring_String, filename_string =
701 MUI_MakeObject(MUIO_String, NULL, 200),
702 MUIA_Popstring_Button, PopButton(MUII_PopFile),
703 End,
704 Child, save_button =
705 MUI_MakeObject(MUIO_Button, "Save"),
706 End,
708 /* lists */
709 Child, RegisterGroup(list_pages),
710 Child, VGroup,
711 Child, ColGroup(LIST_COUNT),
712 Child, VGroup, GroupFrameT("No Multiselect"),
713 Child, ListviewObject,
714 MUIA_Listview_List,
715 lists[0] = ListObject,
716 InputListFrame,
717 MUIA_List_Title, "Fruits",
718 MUIA_List_SourceArray, fruits,
719 End,
720 MUIA_Listview_MultiSelect,
721 MUIV_Listview_MultiSelect_None,
722 MUIA_CycleChain, 1,
723 End,
724 End,
725 Child, VGroup,
726 GroupFrameT("Default Multiselect"),
727 Child, ListviewObject,
728 MUIA_Listview_List,
729 lists[1] = ListObject,
730 InputListFrame,
731 MUIA_List_SourceArray, fruits,
732 End,
733 MUIA_Listview_ScrollerPos,
734 MUIV_Listview_ScrollerPos_Left,
735 MUIA_CycleChain, 1,
736 End,
737 End,
738 Child, VGroup,
739 GroupFrameT("Shifted Multiselect"),
740 Child, ListviewObject,
741 MUIA_Listview_List,
742 lists[2] = ListObject,
743 InputListFrame,
744 MUIA_List_SourceArray, fruits,
745 End,
746 MUIA_Listview_MultiSelect,
747 MUIV_Listview_MultiSelect_Shifted,
748 MUIA_Listview_ScrollerPos,
749 MUIV_Listview_ScrollerPos_Right,
750 MUIA_CycleChain, 1,
751 End,
752 End,
753 Child, VGroup,
754 GroupFrameT("Unconditional Multiselect"),
755 Child, ListviewObject,
756 MUIA_Listview_List,
757 lists[3] = ListObject,
758 InputListFrame,
759 MUIA_List_SourceArray, fruits,
760 End,
761 MUIA_Listview_MultiSelect,
762 MUIV_Listview_MultiSelect_Always,
763 MUIA_Listview_ScrollerPos,
764 MUIV_Listview_ScrollerPos_None,
765 MUIA_CycleChain, 1,
766 End,
767 End,
768 Child, VGroup,
769 GroupFrameT("Read Only"),
770 Child, ListviewObject,
771 MUIA_Listview_List,
772 lists[4] = ListObject,
773 ReadListFrame,
774 MUIA_List_SourceArray, fruits,
775 End,
776 MUIA_Listview_Input, FALSE,
777 MUIA_CycleChain, 1,
778 End,
779 End,
780 End,
781 Child, RectangleObject,
782 MUIA_VertWeight, 0,
783 MUIA_Rectangle_HBar, TRUE,
784 MUIA_Rectangle_BarTitle, "List Controls",
785 End,
786 Child, ColGroup(3),
787 Child, sort_button =
788 MUI_MakeObject(MUIO_Button, "Sort"),
789 Child, clear_button =
790 MUI_MakeObject(MUIO_Button, "Clear"),
791 Child, fill_button =
792 MUI_MakeObject(MUIO_Button, "Fill"),
793 Child, HGroup,
794 Child, dragsortable_check =
795 MUI_MakeObject(MUIO_Checkmark, NULL),
796 Child, MUI_MakeObject(MUIO_Label,
797 "Drag sortable", 0),
798 Child, HVSpace,
799 End,
800 Child, HGroup,
801 Child, showdropmarks_check =
802 MUI_MakeObject(MUIO_Checkmark, NULL),
803 Child, MUI_MakeObject(MUIO_Label,
804 "Show drop marks", 0),
805 Child, HVSpace,
806 End,
807 Child, HGroup,
808 Child, quiet_check =
809 MUI_MakeObject(MUIO_Checkmark,NULL),
810 Child, MUI_MakeObject(MUIO_Label,
811 "Quiet", 0),
812 Child, HVSpace,
813 End,
814 End,
815 End,
816 Child, VGroup,
817 Child, ListviewObject,
818 MUIA_Listview_List, list2 = ListObject,
819 InputListFrame,
820 MUIA_List_DisplayHook, &hook_display2,
821 End,
822 End,
823 Child, HGroup,
824 Child, list_add_button =
825 MUI_MakeObject(MUIO_Button,"_Add"),
826 Child, list_remove_button =
827 MUI_MakeObject(MUIO_Button,"_Remove"),
828 Child, list_clear_button =
829 MUI_MakeObject(MUIO_Button,"_Clear"),
830 End,
831 End,
832 Child, VGroup,
833 Child, ColGroup(LIST_COUNT / 2),
834 Child, VGroup, GroupFrameT("Standard Format"),
835 Child, ListviewObject,
836 MUIA_Listview_List,
837 multi_lists[0] = ListObject,
838 InputListFrame,
839 MUIA_List_DisplayHook,
840 &hook_display,
841 MUIA_List_Format, list_format,
842 MUIA_List_SourceArray, entries,
843 MUIA_List_Title, TRUE,
844 End,
845 MUIA_Listview_MultiSelect,
846 MUIV_Listview_MultiSelect_None,
847 MUIA_CycleChain, 1,
848 End,
849 End,
850 Child, VGroup, GroupFrameT("Custom Format"),
851 Child, ListviewObject,
852 MUIA_Listview_List,
853 multi_lists[1] = ListObject,
854 InputListFrame,
855 MUIA_List_DisplayHook,
856 &hook_display,
857 MUIA_List_Format, list_format,
858 MUIA_List_SourceArray, entries,
859 MUIA_List_Title, TRUE,
860 End,
861 MUIA_Listview_MultiSelect,
862 MUIV_Listview_MultiSelect_None,
863 MUIA_CycleChain, 1,
864 End,
865 End,
866 End,
867 Child, RectangleObject,
868 MUIA_VertWeight, 0,
869 MUIA_Rectangle_HBar, TRUE,
870 MUIA_Rectangle_BarTitle, "List Controls",
871 End,
872 Child, HGroup,
873 Child, MUI_MakeObject(MUIO_Label, "Format:", 0),
874 Child, format_string = StringObject,
875 StringFrame,
876 MUIA_String_Contents, list_format,
877 MUIA_CycleChain, 1,
878 End,
879 Child, showheadings_check =
880 MUI_MakeObject(MUIO_Checkmark, NULL),
881 Child, MUI_MakeObject(MUIO_Label,
882 "Show column headings", 0),
883 End,
884 End,
885 End,
887 /* gauges */
888 Child, HGroup,
889 Child, VGroup,
890 Child, VGroup,
891 GroupFrame,
892 Child, GaugeObject,
893 GaugeFrame,
894 MUIA_Gauge_InfoText, "%ld %%",
895 MUIA_Gauge_Horiz, TRUE,
896 MUIA_Gauge_Current, 25,
897 End,
898 Child, ScaleObject,
899 End,
900 End,
901 Child, VGroup,
902 GroupFrame,
903 Child, GaugeObject,
904 GaugeFrame,
905 MUIA_Gauge_InfoText, "%ld %%",
906 MUIA_Gauge_Horiz, TRUE,
907 MUIA_Gauge_Current, 50,
908 End,
909 Child, ScaleObject,
910 End,
911 End,
912 Child, VGroup,
913 GroupFrame,
914 Child, GaugeObject,
915 GaugeFrame,
916 MUIA_Gauge_InfoText, "%ld %%",
917 MUIA_Gauge_Horiz, TRUE,
918 MUIA_Gauge_Current, 75,
919 End,
920 Child, ScaleObject,
921 End,
922 End,
923 End,
924 Child, HGroup,
925 Child, HVSpace,
926 Child, GaugeObject,
927 GaugeFrame,
928 MUIA_Gauge_InfoText, "%ld %%",
929 MUIA_Gauge_Current, 25,
930 End,
931 Child, GaugeObject,
932 GaugeFrame,
933 MUIA_Gauge_InfoText, "%ld %%",
934 MUIA_Gauge_Current, 50,
935 End,
936 Child, GaugeObject,
937 GaugeFrame,
938 MUIA_Gauge_InfoText, "%ld %%",
939 MUIA_Gauge_Current, 75,
940 End,
941 Child, HVSpace,
942 End,
943 End,
945 /* numeric */
946 Child, HGroup,
947 Child, ColGroup(2),
948 GroupFrameT("Horizontal Sliders"),
949 Child, MUI_MakeObject(MUIO_Label, "Normal:", 0),
950 Child, numerics[HNSLIDER] = SliderObject,
951 MUIA_Slider_Horiz, TRUE,
952 MUIA_Numeric_Min, NUMERIC_MIN,
953 MUIA_Numeric_Max, NUMERIC_MAX,
954 MUIA_CycleChain, 1,
955 End,
956 Child, MUI_MakeObject(MUIO_Label, "Reverse:", 0),
957 Child, numerics[HRSLIDER] = SliderObject,
958 MUIA_Numeric_Reverse, TRUE,
959 MUIA_Numeric_Min, NUMERIC_MIN,
960 MUIA_Numeric_Max, NUMERIC_MAX,
961 MUIA_CycleChain, 1,
962 End,
963 Child, MUI_MakeObject(MUIO_Label, "Quiet:", 0),
964 Child, numerics[HQSLIDER] = SliderObject,
965 MUIA_Slider_Quiet, TRUE,
966 MUIA_Numeric_Min, NUMERIC_MIN,
967 MUIA_Numeric_Max, NUMERIC_MAX,
968 MUIA_CycleChain, 1,
969 End,
970 End,
971 Child, ColGroup(3),
972 GroupFrameT("Vertical Sliders"),
973 Child, MUI_MakeObject(MUIO_Label, "Normal", 0),
974 Child, MUI_MakeObject(MUIO_Label, "Reverse", 0),
975 Child, MUI_MakeObject(MUIO_Label, "Quiet", 0),
976 Child, numerics[VNSLIDER] = SliderObject,
977 MUIA_Slider_Horiz, FALSE,
978 MUIA_Numeric_Min, NUMERIC_MIN,
979 MUIA_Numeric_Max, NUMERIC_MAX,
980 MUIA_CycleChain, 1,
981 End,
982 Child, numerics[VRSLIDER] = SliderObject,
983 MUIA_Slider_Horiz, FALSE,
984 MUIA_Numeric_Reverse, TRUE,
985 MUIA_Numeric_Min, NUMERIC_MIN,
986 MUIA_Numeric_Max, NUMERIC_MAX,
987 MUIA_CycleChain, 1,
988 End,
989 Child, numerics[VQSLIDER] = SliderObject,
990 MUIA_Slider_Horiz, FALSE,
991 MUIA_Slider_Quiet, TRUE,
992 MUIA_Numeric_Min, NUMERIC_MIN,
993 MUIA_Numeric_Max, NUMERIC_MAX,
994 MUIA_CycleChain, 1,
995 End,
996 End,
997 Child, ColGroup(2),
998 GroupFrameT("Numeric Buttons"),
999 Child, MUI_MakeObject(MUIO_Label, "Normal:", 0),
1000 Child, numerics[NNUMERICBUTTON] =
1001 NumericbuttonObject,
1002 MUIA_Numeric_Min, NUMERIC_MIN,
1003 MUIA_Numeric_Max, NUMERIC_MAX,
1004 MUIA_CycleChain, 1,
1005 End,
1006 Child, MUI_MakeObject(MUIO_Label, "Reverse:", 0),
1007 Child, numerics[RNUMERICBUTTON] =
1008 NumericbuttonObject,
1009 MUIA_Numeric_Reverse, TRUE,
1010 MUIA_Numeric_Min, NUMERIC_MIN,
1011 MUIA_Numeric_Max, NUMERIC_MAX,
1012 MUIA_CycleChain, 1,
1013 End,
1014 End,
1015 Child, ColGroup(2),
1016 GroupFrameT("Knobs"),
1017 Child, MUI_MakeObject(MUIO_Label, "Normal", 0),
1018 Child, MUI_MakeObject(MUIO_Label, "Reverse", 0),
1019 Child, numerics[NKNOB] = KnobObject,
1020 MUIA_Numeric_Min, NUMERIC_MIN,
1021 MUIA_Numeric_Max, NUMERIC_MAX,
1022 MUIA_CycleChain, 1,
1023 End,
1024 Child, numerics[RKNOB] = KnobObject,
1025 MUIA_Numeric_Reverse, TRUE,
1026 MUIA_Numeric_Min, NUMERIC_MIN,
1027 MUIA_Numeric_Max, NUMERIC_MAX,
1028 MUIA_CycleChain, 1,
1029 End,
1030 End,
1031 Child, ColGroup(2),
1032 Child, MUI_MakeObject(MUIO_Label,
1033 "Minimum Value:", 0),
1034 Child, min_string = (Object *)StringObject,
1035 StringFrame,
1036 MUIA_String_Accept, (IPTR)"-0123456789",
1037 MUIA_String_Integer, NUMERIC_MIN,
1038 MUIA_CycleChain, 1,
1039 End,
1040 Child, MUI_MakeObject(MUIO_Label,
1041 "Maximum Value:", 0),
1042 Child, max_string = (Object *)StringObject,
1043 StringFrame,
1044 MUIA_String_Accept, (IPTR)"-0123456789",
1045 MUIA_String_Integer, NUMERIC_MAX,
1046 MUIA_CycleChain, 1,
1047 End,
1048 Child, slider_button = TextObject,
1049 ButtonFrame,
1050 MUIA_InputMode, MUIV_InputMode_RelVerify,
1051 MUIA_CycleChain, 1,
1052 MUIA_Background, MUII_ButtonBack,
1053 MUIA_Text_PreParse, "\33c",
1054 MUIA_Text_Contents,
1055 "Change Slider Orientations",
1056 End,
1057 Child, MUI_MakeObject(MUIO_Label, "", 0),
1058 End,
1059 End,
1061 /* radios */
1062 Child, HGroup,
1063 Child, VGroup,
1064 Child, RadioObject,
1065 GroupFrame,
1066 MUIA_Radio_Entries, radio_entries1,
1067 End,
1068 Child, country_radio[0] = RadioObject,
1069 GroupFrame,
1070 MUIA_Radio_Entries, radio_entries2,
1071 MUIA_Radio_Active, 1,
1072 End,
1073 End,
1074 Child, HGroup,
1075 Child, RadioObject,
1076 GroupFrame,
1077 MUIA_Radio_Entries, radio_entries1,
1078 End,
1079 Child, country_radio[1] = RadioObject,
1080 GroupFrame,
1081 MUIA_Radio_Entries, radio_entries2,
1082 MUIA_Radio_Active, 1,
1083 End,
1084 End,
1085 End,
1087 #if defined(TEST_ICONLIST)
1088 /* iconlist */
1089 Child, HGroup,
1090 Child, volume_iconlist =
1091 MUI_NewObject(MUIC_IconVolumeList, GroupFrame,
1092 TAG_DONE),
1093 Child, drawer_iconlist =
1094 MUI_NewObject(MUIC_IconDrawerList, GroupFrame,
1095 MUIA_IconDrawerList_Drawer, "SYS:",
1096 TAG_DONE),
1097 End,
1098 #endif
1100 /* balancing */
1101 Child, HGroup,
1102 Child, create_balance_column(),
1103 Child, BalanceObject,
1104 End,
1106 Child, create_balance_column(),
1107 Child, BalanceObject,
1108 End,
1110 Child, create_balance_column(),
1111 Child, BalanceObject,
1112 End,
1114 Child, create_balance_column(),
1115 Child, BalanceObject,
1116 End,
1118 Child, create_balance_column(),
1120 End,
1122 End,
1124 Child, HGroup,
1125 Child, about_button = TextObject,
1126 ButtonFrame,
1127 MUIA_InputMode, MUIV_InputMode_RelVerify,
1128 MUIA_CycleChain, 1,
1129 MUIA_Background, MUII_ButtonBack,
1130 MUIA_Text_PreParse, "\33c",
1131 MUIA_Text_Contents, "About",
1132 End,
1133 Child, quit_button = TextObject,
1134 ButtonFrame,
1135 MUIA_InputMode, MUIV_InputMode_RelVerify,
1136 MUIA_CycleChain, 1,
1137 MUIA_Background, MUII_ButtonBack,
1138 MUIA_ControlChar, 'q',
1139 MUIA_Text_HiChar, 'q',
1140 MUIA_Text_PreParse, "\33c",
1141 MUIA_Text_Contents, "Quit",
1142 End,
1143 End,
1144 End,
1145 End,
1147 SubWindow, second_wnd = WindowObject,
1148 MUIA_Window_Title, "Second window",
1149 WindowContents, VGroup,
1150 Child, DropTextObject,
1151 MUIA_Text_Contents, "Drop here",
1152 MUIA_Dropable, TRUE,
1153 End,
1154 End,
1155 End,
1157 End;
1159 if (app)
1161 ULONG sigs = 0;
1163 DoMethod(wnd, MUIM_Notify, MUIA_Window_CloseRequest, TRUE, app, 2,
1164 MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit);
1165 DoMethod(second_wnd, MUIM_Notify, MUIA_Window_CloseRequest, TRUE,
1166 second_wnd, 3, MUIM_Set, MUIA_Window_Open, FALSE);
1167 DoMethod(open_button, MUIM_Notify, MUIA_Pressed, FALSE, second_wnd,
1168 3, MUIM_Set, MUIA_Window_Open, TRUE);
1169 DoMethod(about_button, MUIM_Notify, MUIA_Pressed, FALSE, app, 2,
1170 MUIM_Application_AboutMUI, NULL);
1171 DoMethod(quit_button, MUIM_Notify, MUIA_Pressed, FALSE, app, 2,
1172 MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit);
1173 DoMethod(objects_button, MUIM_Notify, MUIA_Pressed, FALSE, app, 2,
1174 MUIM_CallHook, &hook_objects);
1175 DoMethod(repeat_button, MUIM_Notify, MUIA_Timer, MUIV_EveryTime,
1176 app, 2, MUIM_CallHook, &hook);
1178 DoMethod(wheel, MUIM_Notify, WHEEL_Hue, MUIV_EveryTime, app, 2,
1179 MUIM_CallHook, &hook_wheel);
1180 DoMethod(wheel, MUIM_Notify, WHEEL_Saturation, MUIV_EveryTime, app,
1181 2, MUIM_CallHook, &hook_wheel);
1182 DoMethod(r_slider, MUIM_Notify, MUIA_Numeric_Value, MUIV_EveryTime,
1183 app, 2, MUIM_CallHook, &hook_slider);
1184 DoMethod(g_slider, MUIM_Notify, MUIA_Numeric_Value, MUIV_EveryTime,
1185 app, 2, MUIM_CallHook, &hook_slider);
1186 DoMethod(b_slider, MUIM_Notify, MUIA_Numeric_Value, MUIV_EveryTime,
1187 app, 2, MUIM_CallHook, &hook_slider);
1189 DoMethod(save_button, MUIM_Notify, MUIA_Pressed, FALSE, app, 3,
1190 MUIM_CallHook, &hook_standard, save_function);
1192 DoMethod(quit_item, MUIM_Notify, MUIA_Menuitem_Trigger,
1193 MUIV_EveryTime, app, 2, MUIM_Application_ReturnID,
1194 MUIV_Application_ReturnID_Quit);
1195 DoMethod(about_item, MUIM_Notify, MUIA_Menuitem_Trigger,
1196 MUIV_EveryTime, app, 3, MUIM_CallHook, &hook_standard,
1197 about_function);
1199 /* list */
1200 set(showdropmarks_check, MUIA_Selected, TRUE);
1201 for (i = 0; i < LIST_COUNT; i++)
1203 DoMethod(sort_button, MUIM_Notify, MUIA_Pressed, FALSE,
1204 lists[i], 1, MUIM_List_Sort);
1205 DoMethod(clear_button, MUIM_Notify, MUIA_Pressed, FALSE,
1206 lists[i], 1, MUIM_List_Clear);
1207 DoMethod(fill_button, MUIM_Notify, MUIA_Pressed, FALSE,
1208 lists[i], 4, MUIM_List_Insert, fruits, -1,
1209 MUIV_List_Insert_Bottom);
1210 DoMethod(dragsortable_check, MUIM_Notify, MUIA_Selected,
1211 MUIV_EveryTime, lists[i], 3, MUIM_Set,
1212 MUIA_List_DragSortable, MUIV_TriggerValue);
1213 DoMethod(showdropmarks_check, MUIM_Notify, MUIA_Selected,
1214 MUIV_EveryTime, lists[i], 3, MUIM_Set,
1215 MUIA_List_ShowDropMarks, MUIV_TriggerValue);
1216 DoMethod(quiet_check, MUIM_Notify, MUIA_Selected,
1217 MUIV_EveryTime, lists[i], 3, MUIM_Set, MUIA_List_Quiet,
1218 MUIV_TriggerValue);
1221 set(showheadings_check, MUIA_Selected, TRUE);
1222 DoMethod(format_string, MUIM_Notify, MUIA_String_Acknowledge,
1223 MUIV_EveryTime, multi_lists[1], 3, MUIM_Set, MUIA_List_Format,
1224 MUIV_TriggerValue);
1225 for (i = 0; i < MULTI_LIST_COUNT; i++)
1227 DoMethod(showheadings_check, MUIM_Notify, MUIA_Selected,
1228 MUIV_EveryTime, multi_lists[i], 3, MUIM_Set,
1229 MUIA_List_Title, MUIV_TriggerValue);
1232 DoMethod(listview, MUIM_Notify, MUIA_Listview_DoubleClick, TRUE,
1233 popobject, 2, MUIM_Popstring_Close, TRUE);
1235 /* The callbacks of the buttons within the list page */
1236 DoMethod(list_add_button, MUIM_Notify, MUIA_Pressed, FALSE, app, 3,
1237 MUIM_CallHook, &hook_standard, add_function);
1238 DoMethod(list_remove_button, MUIM_Notify, MUIA_Pressed, FALSE,
1239 list2, 2, MUIM_List_Remove, MUIV_List_Remove_Active);
1240 DoMethod(list_clear_button, MUIM_Notify, MUIA_Pressed, FALSE, list2,
1241 1, MUIM_List_Clear);
1243 /* numeric */
1244 for (i = 0; i < NUMERIC_COUNT; i++)
1246 DoMethod(min_string, MUIM_Notify, MUIA_String_Integer,
1247 MUIV_EveryTime, numerics[i], 3, MUIM_Set, MUIA_Numeric_Min,
1248 MUIV_TriggerValue);
1249 DoMethod(max_string, MUIM_Notify, MUIA_String_Integer,
1250 MUIV_EveryTime, numerics[i], 3, MUIM_Set, MUIA_Numeric_Max,
1251 MUIV_TriggerValue);
1253 DoMethod(slider_button, MUIM_Notify, MUIA_Pressed, FALSE,
1254 numerics[HRSLIDER], 3, MUIM_Set, MUIA_Slider_Horiz, FALSE);
1256 /* radio */
1257 DoMethod(country_radio[0], MUIM_Notify, MUIA_Radio_Active,
1258 MUIV_EveryTime, country_radio[1], 3, MUIM_NoNotifySet,
1259 MUIA_Radio_Active, MUIV_TriggerValue);
1260 DoMethod(country_radio[1], MUIM_Notify, MUIA_Radio_Active,
1261 MUIV_EveryTime, country_radio[0], 3, MUIM_NoNotifySet,
1262 MUIA_Radio_Active, MUIV_TriggerValue);
1264 #if defined(TEST_ICONLIST)
1265 /* iconlist */
1266 DoMethod(volume_iconlist, MUIM_Notify, MUIA_IconList_DoubleClick,
1267 TRUE, volume_iconlist, 3, MUIM_CallHook, &hook_standard,
1268 volume_doubleclicked);
1269 DoMethod(drawer_iconlist, MUIM_Notify, MUIA_IconList_DoubleClick,
1270 TRUE, drawer_iconlist, 3, MUIM_CallHook, &hook_standard,
1271 drawer_doubleclicked);
1272 #endif
1274 set(wnd, MUIA_Window_Open, TRUE);
1275 set(wnd, MUIA_Window_ScreenTitle, "Zune Test application");
1277 while ((LONG) DoMethod(app, MUIM_Application_NewInput,
1278 &sigs) != MUIV_Application_ReturnID_Quit)
1280 if (sigs)
1282 sigs = Wait(sigs | SIGBREAKF_CTRL_C | SIGBREAKF_CTRL_D);
1283 if (sigs & SIGBREAKF_CTRL_C)
1284 break;
1285 if (sigs & SIGBREAKF_CTRL_D)
1286 break;
1290 MUI_DisposeObject(app);
1292 if (context_menu)
1293 MUI_DisposeObject(context_menu);
1294 CloseLibrary(ColorWheelBase);
1295 MUI_DeleteCustomClass(CL_DropText);
1297 CloseLibrary(MUIMasterBase);
1298 return 0;