home *** CD-ROM | disk | FTP | other *** search
- /*
- ** Original C Code written by Stefan Stuntz
- **
- ** Translation into E by Klaus Becker
- **
- ** All comments are from the C-Source
- */
-
- OPT PREPROCESS
-
- MODULE 'AmigaLib/boopsi'
- MODULE 'utility/tagitem'
- MODULE 'muimaster','libraries/mui','libraries/muip',
- 'intuition/classes','intuition/classusr'
-
- DEF obj
- DEF bt1,bt2,bt3,bt4,gr,pcy,pgr
- DEF text1,text2,text3,
- cya_computer,cya_printer,cya_display,
- cy_computer,cy_printer,cy_display,
- mt_computer,mt_printer,mt_display,
- lv_computer,
- bt_button0,bt_button1,bt_button2,bt_button3,bt_button4,bt_button5,
- bt_button6,bt_button7,bt_button8,bt_button9,bt_button10,bt_button11,
- x4sex,x4pages,x4classes,x4weapons,x4races
-
- #define img(nr) ImageObject, MUIA_Image_Spec, nr, End
-
- #define mytxt(txt)\
- TextObject,\
- MUIA_Text_Contents,txt,\
- MUIA_Text_SetMax, MUI_TRUE,\
- End
-
- #define ibt(i)\
- ImageObject,\
- ImageButtonFrame,\
- MUIA_Background, MUII_ButtonBack,\
- MUIA_InputMode , MUIV_InputMode_RelVerify,\
- MUIA_Image_Spec, i,\
- End
-
- PROC makePage1()
- text1:='\eiHello User !\en\n\n' +
- 'This could be a very long text and you are looking\n' +
- 'at it through a \euvirtual group\en. Please use the\n' +
- 'scrollbars at the right and bottom of the group to\n' +
- 'move the visible area either vertically or\n' +
- 'horizontally. While holding down the small arrow\n' +
- 'button between both scrollbars, the display will\n' +
- 'follow your mouse moves.\n\n' +
- 'If you click somewhere into a \euvirtual group\en and\n' +
- 'move the mouse across one of its borders, the group will\n' +
- 'start scrolling. If you are lucky and own a middle mouse\n' +
- 'button, you may also want to press it and try moving.\n' +
- '\n' +
- 'Note to 7MHz/68000 users: Sorry if you find this\n' +
- 'thingy a bit slow. Clipping in virtual groups can\n' +
- 'get quite complicated. Please don\at blame me,\n' +
- 'blame your \aout of date\a machine! :-)\n\n' +
- '\ei\ecHave fun, Stefan.\en'
-
- obj := ScrollgroupObject,MUIA_Scrollgroup_UseWinBorder, MUI_TRUE,
- MUIA_Scrollgroup_Contents, VirtgroupObject,
- VirtualFrame,
- Child, TextObject,
- MUIA_Background, MUII_TextBack,
- MUIA_Text_Contents, text1,
- End,
- End,
- End
- ENDPROC (obj)
-
- PROC makePage2()
- text2:= '\ecAs you can see, this virtual group contains a\n'+
- 'lot of different objects. The (virtual) width\n'+
- 'and height of the virtual group are automatically\n'+
- 'calculated from the default width and height of\n'+
- 'the virtual groups contents.'
-
- obj := ScrollgroupObject,
- MUIA_UserData, 42,
- MUIA_Scrollgroup_Contents, VGroupV, VirtualFrame,
- MUIA_UserData, 42,
- Child, TextObject,
- TextFrame,
- MUIA_Background, MUII_TextBack,
- MUIA_Text_Contents, text2,
- End,
- Child, HGroup,
- Child, ColGroup(2), GroupFrameT('Standard Images'),
- Child, Label('ArrowUp:' ), Child, img(MUII_ArrowUp ),
- Child, Label('ArrowDown:' ), Child, img(MUII_ArrowDown ),
- Child, Label('ArrowLeft:' ), Child, img(MUII_ArrowLeft ),
- Child, Label('ArrowRight:' ), Child, img(MUII_ArrowRight ),
- Child, Label('RadioButton:'), Child, img(MUII_RadioButton),
- Child, Label('File:' ), Child, img(MUII_PopFile ),
- Child, Label('HardDisk:' ), Child, img(MUII_HardDisk ),
- Child, Label('Disk:' ), Child, img(MUII_Disk ),
- Child, Label('Chip:' ), Child, img(MUII_Chip ),
- Child, Label('Drawer:' ), Child, img(MUII_Drawer ),
- End,
- Child, VGroup, GroupFrameT('Some Backgrounds'),
- Child, HGroup,
- Child, RectangleObject, TextFrame, MUIA_Background, MUII_BACKGROUND , MUIA_FixWidth, 30, End,
- Child, RectangleObject, TextFrame, MUIA_Background, MUII_FILL , MUIA_FixWidth, 30, End,
- Child, RectangleObject, TextFrame, MUIA_Background, MUII_SHADOW , MUIA_FixWidth, 30, End,
- End,
- Child, HGroup,
- Child, RectangleObject, TextFrame, MUIA_Background, MUII_SHADOWBACK , MUIA_FixWidth, 30, End,
- Child, RectangleObject, TextFrame, MUIA_Background, MUII_SHADOWFILL , MUIA_FixWidth, 30, End,
- Child, RectangleObject, TextFrame, MUIA_Background, MUII_SHADOWSHINE, MUIA_FixWidth, 30, End,
- End,
- Child, HGroup,
- Child, RectangleObject, TextFrame, MUIA_Background, MUII_FILLBACK , MUIA_FixWidth, 30, End,
- Child, RectangleObject, TextFrame, MUIA_Background, MUII_SHINEBACK , MUIA_FixWidth, 30, End,
- Child, RectangleObject, TextFrame, MUIA_Background, MUII_FILLSHINE , MUIA_FixWidth, 30, End,
- End,
- End,
- End,
- Child, ColGroup(2), GroupFrame,
- Child, Label1('Gauge:'), Child, GaugeObject, GaugeFrame, MUIA_Gauge_Current, 66, MUIA_Gauge_Horiz, TRUE, End,
- Child, VSpace(0) , Child, ScaleObject, End,
- End,
- End,
- End
- ENDPROC (obj)
-
- PROC makePage3()
- text3:='\ecThe above pages only showed \aread only\a groups,\n' +
- 'no user actions within them were possible. Of course,\n' +
- 'handling user actions in a virtual group is not a\n' +
- 'problem for MUI. As I promised on the first page,\n' +
- 'you can use virtual groups with whatever objects\n' +
- 'you want. Here\as a small example...\n' +
- '\n' +
- 'Note: Due to some limitations of the operating system,\n' +
- 'it is not possible to clip gadgets depending on\n' +
- 'intuition.library correctly. This affects the appearence\n' +
- 'of string and proportional objects in virtual groups.\n' +
- 'You will only be able to use these gadgets when they\n' +
- 'are completely visible.\n' +
- '\n' +
- 'PS: Also try TAB cycling here!'
-
- cya_computer:= ['Amiga 500','Amiga 600','Amiga 1000 :)','Amiga 1200','Amiga 2000','Amiga 3000','Amiga 4000', 'Amiga 4000T', 'Atari ST :(', NIL]
- cya_printer:=['HP Deskjet','NEC P6','Okimate 20',NIL]
- cya_display:=['A1081','NEC 3D','A2024','Eizo T660i',NIL]
-
- obj := ScrollgroupObject,
- MUIA_Scrollgroup_Contents, VGroupV, VirtualFrame,
- Child, TextObject,
- TextFrame,
- MUIA_Background, MUII_TextBack,
- MUIA_Text_Contents, text3,
- End,
- Child, VGroup,
- Child, HGroup,
- Child, mt_computer := Radio('Computer:',cya_computer),
- Child, VGroup,
- Child, mt_printer := Radio('Printer:',cya_printer),
- Child, VSpace(0),
- Child, mt_display := Radio('Display:',cya_display),
- End,
- Child, VGroup,
- Child, ColGroup(2), GroupFrameT('Cycle Gadgets'),
- Child, KeyLabel1('Computer:',"c"), Child, cy_computer := KeyCycle(cya_computer,"c"),
- Child, KeyLabel1('Printer:' ,"p"), Child, cy_printer := KeyCycle(cya_printer ,"p"),
- Child, KeyLabel1('Display:' ,"d"), Child, cy_display := KeyCycle(cya_display ,"d"),
- End,
- Child, lv_computer := ListviewObject,
- MUIA_Listview_Input, MUI_TRUE,
- MUIA_Listview_List, ListObject, InputListFrame, End,
- End,
- End,
- End,
- Child, ColGroup(4), GroupFrameT('Button Field'),
- Child, bt_button0 := SimpleButton('Button'),
- Child, bt_button1 := SimpleButton('Button'),
- Child, bt_button2 := SimpleButton('Button'),
- Child, bt_button3 := SimpleButton('Button'),
- Child, bt_button4 := SimpleButton('Button'),
- Child, bt_button5 := SimpleButton('Button'),
- Child, bt_button6 := SimpleButton('Button'),
- Child, bt_button7 := SimpleButton('Button'),
- Child, bt_button8 := SimpleButton('Button'),
- Child, bt_button9 := SimpleButton('Button'),
- Child, bt_button10 := SimpleButton('Button'),
- Child, bt_button11 := SimpleButton('Button'),
- End,
- End,
- End,
- End
-
- IF (lv_computer) THEN doMethodA(lv_computer,[MUIM_List_Insert,cya_computer,-1,MUIV_List_Insert_Bottom])
- ENDPROC (obj)
-
- PROC makePage4()
-
- x4sex:=['male','female',NIL]
- x4pages:=['Race','Class','Armors','Weapons','Levels',NIL]
- x4races:=['Human','Elf','Dwarf','Hobbit','Gnome',NIL]
- x4classes:=['Warrior','Rogue','Bard','Monk','Magician','Archmage',NIL]
- x4weapons:=['Staff','Dagger','Sword','Axe','Grenade',NIL]
-
- obj := ScrollgroupObject,
- MUIA_Scrollgroup_Contents, ColGroupV(3), VirtualFrame,
- MUIA_Group_Spacing, 10,
- Child, VGroup, GroupFrame,
- Child, HGroup,
- Child, HSpace(0),
- Child, bt1 := ibt(MUII_ArrowUp),
- Child, HSpace(0),
- End,
- Child, HGroup,
- Child, bt2 := ibt(MUII_ArrowLeft),
- Child, bt3 := ibt(MUII_ArrowRight),
- End,
- Child, HGroup,
- Child, HSpace(0),
- Child, bt4 := ibt(MUII_ArrowDown),
- Child, HSpace(0),
- End,
- End,
- Child, mytxt('\ecEver wanted to see\na virtual group in\na virtual group?'),
- Child, HVSpace,
- Child, mytxt('\ecHere it is!'),
- Child, ScrollgroupObject,
- MUIA_Scrollgroup_Contents, gr := VGroupV, VirtualFrame,
- Child, ColGroup(6), MUIA_Group_SameSize, MUI_TRUE,
- Child, SimpleButton('One'),
- Child, SimpleButton('Two'),
- Child, SimpleButton('Three'),
- Child, SimpleButton('Four'),
- Child, SimpleButton('Five'),
- Child, SimpleButton('Six'),
- Child, SimpleButton('Eighteen'),
- Child, mytxt('\ecThe'),
- Child, mytxt('\ecred'),
- Child, mytxt('\ecbrown'),
- Child, mytxt('\ecfox'),
- Child, SimpleButton('Seven'),
- Child, SimpleButton('Seventeen'),
- Child, mytxt('\ecdog.'),
- Child, SimpleButton('Nineteen'),
- Child, SimpleButton('Twenty'),
- Child, mytxt('\ecjumps'),
- Child, SimpleButton('Eight'),
- Child, SimpleButton('Sixteen'),
- Child, mytxt('\eclazy'),
- Child, mytxt('\ecthe'),
- Child, mytxt('\ecover'),
- Child, mytxt('\ecquickly'),
- Child, SimpleButton('Nine'),
- Child, SimpleButton('Fifteen'),
- Child, SimpleButton('Fourteen'),
- Child, SimpleButton('Thirteen'),
- Child, SimpleButton('Twelve'),
- Child, SimpleButton('Eleven'),
- Child, SimpleButton('Ten'),
- End,
- End,
- End,
- Child, mytxt('\ecDo you like it? I hope...'),
- Child, HVSpace,
- Child, mytxt('\ecI admit, it\as a\n bit crazy... :-)\nBut it demonstrates\nthe power of\n\ebobject oriented\en\nGUI design.'),
- Child, ScrollgroupObject,
- MUIA_Scrollgroup_Contents, VGroupV, VirtualFrame, InnerSpacing(4,4),
- Child, VGroup,
- Child, pcy := Cycle(x4pages),
- Child, pgr := PageGroup,
- Child, HCenter(Radio(NIL,x4races)),
- Child, HCenter(Radio(NIL,x4classes)),
- Child, HGroup,
- Child, HSpace(0),
- Child, ColGroup(2),
- Child, Label1('Cloak:' ), Child, CheckMark(MUI_TRUE),
- Child, Label1('Shield:'), Child, CheckMark(MUI_TRUE),
- Child, Label1('Gloves:'), Child, CheckMark(MUI_TRUE),
- Child, Label1('Helm:' ), Child, CheckMark(MUI_TRUE),
- End,
- Child, HSpace(0),
- End,
- Child, HCenter(Radio(NIL,x4weapons)),
- Child, ColGroup(2),
- Child, Label('Experience:' ), Child, Slider(0,100, 3),
- Child, Label('Strength:' ), Child, Slider(0,100,42),
- Child, Label('Dexterity:' ), Child, Slider(0,100,24),
- Child, Label('Condition:' ), Child, Slider(0,100,39),
- Child, Label('Intelligence:'), Child, Slider(0,100,74),
- End,
- End,
- End,
- End,
- End,
- End,
- End
-
- IF (obj)
- doMethodA(bt1,[MUIM_Notify,MUIA_Pressed,FALSE,gr,3,MUIM_Set,MUIA_Virtgroup_Top ,0])
- doMethodA(bt2,[MUIM_Notify,MUIA_Pressed,FALSE,gr,3,MUIM_Set,MUIA_Virtgroup_Left,0])
- doMethodA(bt3,[MUIM_Notify,MUIA_Pressed,FALSE,gr,3,MUIM_Set,MUIA_Virtgroup_Left,9999])
- doMethodA(bt4,[MUIM_Notify,MUIA_Pressed,FALSE,gr,3,MUIM_Set,MUIA_Virtgroup_Top ,9999])
- doMethodA(pcy,[MUIM_Notify,MUIA_Cycle_Active,MUIV_EveryTime,
- pgr,3,MUIM_Set,MUIA_Group_ActivePage,MUIV_TriggerValue])
- ENDIF
-
- ENDPROC (obj)
-
- PROC main() HANDLE
- DEF app,window,sigs=0
-
- IF (muimasterbase:=OpenLibrary(MUIMASTER_NAME,MUIMASTER_VMIN))=NIL THEN
- Raise('Failed to open muimaster.library')
-
- app := ApplicationObject,
- MUIA_Application_Title , 'VirtualDemo',
- MUIA_Application_Version , '$VER: VirtualDemo 13.59 (30.01.96)',
- MUIA_Application_Copyright , 'c1993, Stefan Stuntz',
- MUIA_Application_Author , 'Stefan Stuntz & Klaus Becker',
- MUIA_Application_Description, 'Show virtual groups.',
- MUIA_Application_Base , 'VIRTUALDEMO',
- SubWindow, window := WindowObject,
- MUIA_Window_Title, 'Virtual Groups',
- MUIA_Window_ID , "VIRT",
- MUIA_Window_UseRightBorderScroller, MUI_TRUE,
- MUIA_Window_UseBottomBorderScroller, MUI_TRUE,
- WindowContents, ColGroup(2), GroupSpacing(8),
- Child, makePage1(),
- Child, makePage2(),
- Child, makePage3(),
- Child, makePage4(),
- End,
- End,
- End
-
- IF (app=NIL) THEN
- Raise('Failed to create Application.')
-
- doMethodA(window,[MUIM_Notify,MUIA_Window_CloseRequest,MUI_TRUE,
- app,2,MUIM_Application_ReturnID,MUIV_Application_ReturnID_Quit])
-
- doMethodA(window,[MUIM_Window_SetCycleChain,
- mt_computer,mt_printer,mt_display,
- cy_computer,cy_printer,cy_display,
- lv_computer,
- bt_button0,bt_button1,bt_button2,bt_button3,
- bt_button4,bt_button5,bt_button6,bt_button7,
- bt_button8,bt_button9,bt_button10,bt_button11,
- NIL])
-
- /*
- ** This is the ideal input loop for an object oriented MUI application.
- ** Everything is encapsulated in classes, no return ids need to be used,
- ** we just check if the program shall terminate.
- ** Note that MUIM_Application_NewInput expects sigs to contain the result
- ** from Wait() (or 0). This makes the input loop significantly faster.
- */
-
- set(window,MUIA_Window_Open,MUI_TRUE)
-
- WHILE (doMethodA(app,[MUIM_Application_NewInput,{sigs}]) <> MUIV_Application_ReturnID_Quit)
- IF sigs THEN sigs:=Wait(sigs)
- ENDWHILE
-
- set(window,MUIA_Window_Open,FALSE)
-
- EXCEPT DO
- IF app THEN Mui_DisposeObject(app)
- IF muimasterbase THEN CloseLibrary(muimasterbase)
- IF exception THEN WriteF('\s\n',exception)
- ENDPROC
-