home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 6 / AACD06.ISO / AACD / Programming / MUI / MUICusReq1_2 / ASC / MUICustomRequest.ASC < prev   
Text File  |  1999-08-16  |  9KB  |  267 lines

  1. ;
  2. ; MUI Custom Request, (C) Robert Hutchinson - Satanic Dreams Software 1999.
  3. ; Now Freeware.
  4. ;
  5. ; Use it how you want, but please leave this text-block here and send,
  6. ; any updates no matter how small to:
  7. ;
  8. ;    loki@sds.in2home.co.uk
  9. ;
  10. ; Should be included when object generation starts. As:
  11. ;   XINCLUDE "MUICustomRequest.BB2"
  12. ;
  13. ; And MUIObjects in the compiler set to at least 1000 :)
  14. ; Also requires, MUI2.RES (found at: http://www.satanicdreams.freeserve.co.uk)
  15. ; And EFMUILib (AmiNet).
  16. ;
  17. ; And lastly, you must open a bitmap (#4) and palette (#4) with imagery
  18. ; that this routine should use before you include it in your code.
  19. ;
  20. ; V1.0 - Initial version.
  21. ; V1.1 - Now uses imagery.
  22. ; V1.2 - Added transparency to image.
  23. ;
  24.  
  25.   ;--- Custom Spacing.. Change these to alter spacing between objects in
  26.   ;    the custom requester.
  27.   ;
  28.   #MUI_SP_TopVirt    = 0
  29.   #MUI_SP_BotVirt    = 0
  30.   #MUI_SP_LeftHoriz  = 0
  31.   #MUI_SP_RightHoriz = 5
  32.   #MUI_SP_ImageSpace = 4
  33.  
  34.   ;--- MUI Custom Request object tree.
  35.   ;
  36.   #MUI_CusReq_Window         = 950
  37.     #MUI_GP_CusReq1          = 951
  38.       #MUI_CusRHBar          = 952
  39.       #MUI_GP_CusReq5        = 953
  40.         #MUI_TopRect         = 954
  41.         #MUI_GP_CusReq6      = 955
  42.           #MUI_LeftRect      = 956
  43.           #MUI_ImageBitmap   = 957
  44.           #MUI_ImageRect     = 958
  45.           #MUI_CusRText      = 959
  46.           #MUI_RightRect     = 960
  47.         #MUI_BotRect         = 961
  48.  
  49.       #MUI_GP_CusReq2        = 962
  50.         #MUI_FromButton      = 963
  51.         #MUI_ToButton        = 970
  52.  
  53.   ;--- Notifies...
  54.   ;
  55.   #MUI_NT_Button1            = 2000
  56.   #MUI_NT_Button2            = 2001
  57.   #MUI_NT_Button3            = 2002
  58.   #MUI_NT_Button4            = 2003
  59.   #MUI_NT_Button5            = 2004
  60.   #MUI_NT_Button6            = 2005
  61.   #MUI_NT_Button7            = 2006
  62.   #MUI_NT_Button8            = 2007
  63.  
  64.   ;-####################################################################
  65.   ;-# CUSTOM REQUESTER OBJECTS                                         #
  66.   ;-#                                                                  #
  67.   ;-# Upto 8 buttons in a requester though only!                       #
  68.   ;-# Thats all that is allowed ATM. Sorry.                            #
  69.   ;-####################################################################
  70.   ;
  71.   MUIMakeObject #MUI_CusRHBar,#MUIO_HBar,1,0
  72.   MUIAddTags    #MUI_CusRText,#MUIA_Text_Contents,Null("ABC")
  73.   MUINewObject  #MUI_CusRText,"Text.mui",0
  74.  
  75.   MUIAddTags      #MUI_ImageBitmap,#MUIA_Bitmap_Transparent,0
  76.   MUIAddTags      #MUI_ImageBitmap,#MUIA_FixWidth,#BMP_Width,#MUIA_FixHeight,#BMP_Height
  77.   MUIBitmapObject #MUI_ImageBitmap,4,4
  78.  
  79.   MUIAddTags   #MUI_TopRect  ,#MUIA_FixHeight,#MUI_SP_TopVirt
  80.   MUINewObject #MUI_TopRect  ,"Rectangle.mui",0
  81.   MUIAddTags   #MUI_BotRect  ,#MUIA_FixHeight,#MUI_SP_BotVirt
  82.   MUINewObject #MUI_BotRect  ,"Rectangle.mui",0
  83.   MUIAddTags   #MUI_LeftRect ,#MUIA_FixWidth,#MUI_SP_LeftHoriz
  84.   MUINewObject #MUI_LeftRect ,"Rectangle.mui",0
  85.   MUIAddTags   #MUI_RightRect,#MUIA_FixWidth,#MUI_SP_RightHoriz
  86.   MUINewObject #MUI_RightRect,"Rectangle.mui",0
  87.   MUIAddTags   #MUI_ImageRect,#MUIA_FixWidth,#MUI_SP_ImageSpace
  88.   MUINewObject #MUI_ImageRect,"Rectangle.mui",0
  89.  
  90.   MUIAddObjsHGroup #MUI_GP_CusReq6,#MUI_LeftRect,#MUI_ImageBitmap,#MUI_ImageRect,#MUI_CusRText,#MUI_RightRect
  91.   MUICreateHGroup  #MUI_GP_CusReq6
  92.  
  93.   MUIAddObjsVGroup #MUI_GP_CusReq5,#MUI_TopRect,#MUI_GP_CusReq6,#MUI_BotRect
  94.   MUIAddTags       #MUI_GP_CusReq5,#MUIA_Frame,#MUIV_Frame_Text
  95.   MUICreateVGroup  #MUI_GP_CusReq5
  96.  
  97.   For TMP=#MUI_FromButton To #MUI_ToButton
  98.     MUIAddTags      TMP,#MUIA_Weight,100
  99.     MUISimpleButton TMP,Str$(TMP)
  100.     MUIAddObjHGroup #MUI_GP_CusReq2,TMP
  101.   Next
  102.  
  103.   MUICreateHGroup  #MUI_GP_CusReq2
  104.  
  105.   MUIAddTags       #MUI_GP_CusReq1,#MUIA_Frame,#MUIV_Frame_Button
  106.   MUIAddObjsVGroup #MUI_GP_CusReq1,#MUI_GP_CusReq5,#MUI_CusRHBar,#MUI_GP_CusReq2
  107.   MUICreateVGroup  #MUI_GP_CusReq1
  108.  
  109.   MUIAddTags       #MUI_CusReq_Window,#MUIA_Window_SizeGadget,False
  110.   MUIAddTags       #MUI_CusReq_Window,#MUIA_Window_CloseGadget,False
  111.   MUICreateWindow  #MUI_CusReq_Window,Titlee$,"",#MUI_GP_CusReq1
  112.   MUIAddSubWindow  #MUI_CusReq_Window
  113.   MUISet           #MUI_CusReq_Window,#MUIA_Window_ID,False
  114.  
  115.   ;-####################################################################
  116.   ;-# SPECIAL |-> TEXT <-| STRIPPER FUNCTIONS!                         #
  117.   ;-#                                                                  #
  118.   ;-#   Returns the text between ||`s :)                               #
  119.   ;-#   FOR EXAMPLE:                                                   #
  120.   ;-#     Ret$=StripValue{"Cool|Yeah|Woooo",3}                         #
  121.   ;-#   RETURNS:                                                       #
  122.   ;-#     Ret$="Woooo"                                                 #
  123.   ;-####################################################################
  124.   ;
  125.   Function.s StripValue{Strin$,GetValue}
  126.     DimLen=Len(Strin$)
  127.     For TMP=0 To DimLen+1
  128.       Strip$=Mid$(Strin$,TMP,1)
  129.       If Strip$="|" OR TMP=DimLen+1
  130.         GetValue-1
  131.         If GetValue=0
  132.           TMP-1
  133.           For A=TMP To 1 Step -1
  134.             If Done<>1
  135.               Stripp$=Mid$(Strin$,A,1)
  136.               If Stripp$<>"|"
  137.                 XVal$=Stripp$+XVal$
  138.               Else
  139.                 Done=1
  140.               EndIf
  141.             EndIf
  142.           Next
  143.         EndIf
  144.       EndIf
  145.     Next
  146.  
  147.     Function Return XVal$
  148.   End Function
  149.  
  150.   ;-####################################################################
  151.   ;-# FIND THE AMOUNT OF ENTRIES IN A STRING, FORMATTED:               #
  152.   ;-#    "<text>|<text>|<text>" IE: this would be 3..                  #
  153.   ;-#    Note: this routine doesn`t take into account 0..,             #
  154.   ;-#    so the above WOULD return 3 not 2.                            #
  155.   ;-####################################################################
  156.   ;
  157.   Function.w FindValue{Strin$}
  158.     ArgCount.w
  159.     DimLen=Len(Strin$)
  160.     For TMP=0 To DimLen
  161.       Strip$=Mid$(Strin$,TMP,1)
  162.       If Strip$="|"
  163.         ArgCount+1
  164.       EndIf
  165.     Next
  166.  
  167.     Function Return ArgCount+1
  168.   End Function
  169.  
  170.   Dim ButNames$(5)
  171.  
  172.   ;-###################################################################
  173.   ;-# SYNOPSIS: MUICustomRequest{Title$,Body$,LockObj,Buttons$}       #
  174.   ;-#                                                                 #
  175.   ;-# INPUTS: Title$ - A string containing the title of the requester #
  176.   ;-#         Body$  - The body of the requestor (Text in center)     #
  177.   ;-#         LokObj - A window number to lock. Parent Window.        #
  178.   ;-#                  Passing -1 will cause no window to lock.       #
  179.   ;-#         Buttons$ - A standard buttons text. IE, "<Text>|<Text>" #
  180.   ;-#                    Each separated by an | or symbol             #
  181.   ;-#                                                                 #
  182.   ;-# RETURNS: 0-7 for button hits.                                   #
  183.   ;-#                                                                 #
  184.   ;-# INFO: This is the main routine, can be called whenever.         #
  185.   ;-#       It opens a requester, locking it`s parent window behind it#
  186.   ;-###################################################################
  187.   ;
  188.   Function.w MUICustomRequest{Titlee$,Body$,LockObj,Buttons$}
  189.     SHARED ButNames$()
  190.  
  191.     ReqSpacing$="  "
  192.  
  193.     ;--- Show all buttons by default..
  194.     ;
  195.     For TMP=#MUI_FromButton To #MUI_ToButton
  196.       MUISet TMP,#MUIA_ShowMe,True
  197.     Next
  198.  
  199.     NBod$=Body$ : Tity$=Titlee$  ;hehehe
  200.  
  201.     ;--- Get the buttons...
  202.     ;
  203.     NumBut=FindValue{Buttons$}
  204.     For TMP=1 To NumBut
  205.       ButNames$(TMP-1)=StripValue{Buttons$,TMP}
  206.     Next
  207.  
  208.     ;--- Hide the buttons that arnt being shown
  209.     ;
  210.     Var=(NumBut-1)+#MUI_FromButton
  211.     For TMP=#MUI_ToButton To #MUI_FromButton Step -1
  212.       If Var<TMP
  213.         MUISet TMP,#MUIA_ShowMe,False
  214.       EndIf
  215.     Next
  216.  
  217.     ;--- Set up the params...
  218.     ;
  219.     MUISet #MUI_CusReq_Window,#MUIA_Window_Title,&Tity$
  220.     MUISet #MUI_CusRText,#MUIA_Text_Contents,&NBod$
  221.  
  222.     For TMP=1 To NumBut
  223.       MUISet #MUI_FromButton+(TMP-1),#MUIA_Text_Contents,&ButNames$(TMP-1)
  224.     Next
  225.  
  226.     ;--- Put parent window to sleep.
  227.     ;
  228.     If LockObj<>-1
  229.       MUISet LockObj,#MUIA_Window_Sleep,True
  230.     EndIf
  231.  
  232.     ;--- Open the requester window
  233.     ;
  234.     MUIOpenWindow #MUI_CusReq_Window
  235.  
  236.     ;--- Lock in a continuous loop
  237.     ;
  238.     Repeat
  239.       EV=MUIEvent
  240.       VWait
  241.     Until EV>=#MUI_NT_Button1 AND EV<=#MUI_NT_Button8
  242.  
  243.     ;--- Close the git :)
  244.     ;
  245.     MUICloseWindow #MUI_CusReq_Window
  246.  
  247.     ;--- Unlock the parent window
  248.     ;
  249.     If LockObj<>-1
  250.       MUISet LockObj,#MUIA_Window_Sleep,False
  251.     EndIf
  252.  
  253.     ;--- Return the event!
  254.     ;
  255.     Function Return EV-#MUI_NT_Button1
  256.   End Function
  257.  
  258.  ;########################################################################
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.