/* Main.rexx */

options results; address MrMIDI
address command 'Resident Kill'

if ~show('L', 'rexxsupport.library') then do
  if ~addlib('rexxsupport.library', 0, -30, 0) then do
    say('rexxsupport.library is not available. Exiting...')
    exit
  end
end
if ~show('L', 'rexxutil.library') then do
  if ~addlib('rexxutil.library', 0, -30, 0) then do
    say('rexxutil.library is not available. Exiting...')
    exit
  end
end

ASLFR_DrawersOnly	= 0x8008002f;	MUIA_Cycle_Active	= 0x80421788
MUIA_Disabled		= 0x80423661;	MUIA_Dropable		= 0x8042fbce
MUIA_Listview_DragType	= 0x80425cd3;	MUIA_Listview_ClickColumn	= 0x8042d1b3
MUIA_Listview_DoubleClick	= 0x80424635
MUIA_List_DragSortable	= 0x80426099;	MUIA_List_Format	= 0x80423c0a
MUIA_Menuitem_ShortCut	= 0x80422030;	MUIA_Menuitem_Title	= 0x804218be
MUIA_NoNotify		= 0x804237f9;	MUIA_Numeric_Value	= 0x8042ae3a
MUIA_Selected		= 0x8042654b;	MUIA_ShowMe		= 0x80429ba8
MUIA_Slider_Level	= 0x8042ae3a;	MUIA_Slider_Max		= 0x8042d78a
MUIA_Slider_Min		= 0x8042e404;	MUIA_Timer		= 0x80426435
MUIA_Window_Open	= 0x80428aa0;	MUIM_Application_AboutMUI	= 0x8042d21d
MUIM_Application_OpenConfigWindow	= 0x804299ba
MUIV_EveryTime		= 0x49893131;	MUIV_Listview_DragType_Immediate	= 1

setvar cont 0; setvar stopped 0; setvar current_song ""; setvar current_time '00:00'
setvar total_time '00:00:00'

window ID WIND1 TITLE '"MrMIDI"' COMMAND '"Clean"'
 menu LABEL "Project"
  item COMMAND '"Save 1"' ATTRS MUIA_Menuitem_Shortcut 'S' LABEL "Save Prefs"
  item COMMAND '"method 'MUIM_Application_OpenConfigWindow'"',
   ATTRS MUIA_Menuitem_Shortcut 'P' PORT MrMIDI LABEL "MUI Prefs..."
  item ATTRS MUIA_Menuitem_Title '-1'
  item COMMAND '"About"' ATTRS MUIA_Menuitem_Shortcut 'R' LABEL "About MrMIDI..."
  item COMMAND '"method 'MUIM_Application_AboutMUI' 0"',
   ATTRS MUIA_Menuitem_Shortcut 'M' PORT MrMIDI LABEL "About MUI..."
  item ATTRS MUIA_Menuitem_Title '-1'
  item COMMAND '"Clean"' ATTRS MUIA_Menuitem_Shortcut 'Q' LABEL "Quit"
 endmenu
 group ID MAIN FRAME
  string ID FNAME CONTENT "No song is loaded."
  text ID LCD LABEL "MrMPEG is also available from Aminet."
  group HORIZ
   label SINGLE "Song:"
   text ID ACTIV LABEL "\033b\033r  0"
   label SINGLE "/"
   text ID MAX LABEL "\033b\033r  0"
   label SINGLE "Time:"
   text ID CURNT LABEL "\033b\033r00:00"
   label SINGLE "/"
   text ID TOTAL LABEL "\033b\033r00:00:00"
  endgroup
  group HORIZ
   group
    knob ID VOLM ATTRS MUIA_Slider_Max 500 MUIA_Slider_Min 0 MUIA_Slider_Level 300
    label "Volume"
   endgroup
   group
    group HORIZ
     image ID PREV SPEC "4:MrMIDI:images/Previous.mf0" COMMAND '"Prev"'
     image ID RWND SPEC "4:MrMIDI:images/Backward.mf0" ATTRS MUIA_Disabled 1
     check ID PLAY SPEC "4:MrMIDI:images/Play.mf0" COMMAND '"Play"'
     image ID FFWD SPEC "4:MrMIDI:images/Forward.mf0" ATTRS MUIA_Disabled 1
     image ID NEXT SPEC "4:MrMIDI:images/Next.mf0" COMMAND '"Next"'
     image ID STOP SPEC "4:MrMIDI:images/Stop.mf0" COMMAND '"Stop"'
     check ID EJCT SPEC "4:MrMIDI:images/Eject.mf0" ATTRS MUIA_Selected 1,
      COMMAND '"window ID WIND2 ATTRS 'MUIA_Window_Open' %s"' PORT MrMIDI
    endgroup
    group HORIZ
     check ID ADVC SPEC "4:MrMIDI:images/Advanced.mf0" ATTRS MUIA_Selected 1,
      COMMAND '"group ID GRUP1 ATTRS 'MUIA_ShowMe' %s"' PORT MrMIDI
     check ID MONO SPEC "4:MrMIDI:images/Expand.mf0" COMMAND '"Continue"'
     check ID FILT SPEC "4:MrMIDI:images/Filter.mf0" ATTRS MUIA_Disabled 1
     check ID RAND SPEC "4:MrMIDI:images/Random.mf0"
     cycle ID REPT ATTRS MUIA_Cycle_Active 2 LABEL 'No Repeat,Repeat 1,Repeat All'
    endgroup
    text ID PROG LABEL "Stopped."
   endgroup
  endgroup
 endgroup
 group ID GRUP1 FRAME HORIZ
  group
   label DOUBLE "Freq. (Hz):"
   label DOUBLE "Polyphony:"
   label DOUBLE "Priority:"
   label DOUBLE "Tone:"
   label DOUBLE "Drum:"
   label DOUBLE "Buffer (KS):"
   label DOUBLE "Velocity Map:"
   label DOUBLE "Volume Map:"
  endgroup
  group
   cycle ID FREQ COMMAND '"Continue"' LABEL '4000,8000,11025,22050,28603,44100,48000,80000'
   slider ID POLY ATTRS MUIA_Slider_Max 32 MUIA_Slider_Min 8 MUIA_Slider_Level 8
   slider ID PRIO ATTRS MUIA_Slider_Max 30 MUIA_Slider_Min '-30' MUIA_Slider_Level 0
   group HORIZ
    check ID TOFI SPEC "4:MrMIDI:images/Filter.mf0"
    string ID TOMP CONTENT 'Standard'
   endgroup
   group HORIZ
    check ID DRFI SPEC "4:MrMIDI:images/Filter.mf0"
    string ID DRMP CONTENT 'Standard'
   endgroup
   slider ID BUFF ATTRS MUIA_Slider_Max 128 MUIA_Slider_Min 1 MUIA_Slider_Level 16
   cycle ID VEMP COMMAND '"Continue"' LABEL 'Linear,Quadratic,Exponential'
   cycle ID VOMP COMMAND '"Continue"' LABEL 'Linear,Quadratic,Exponential'
  endgroup
 endgroup
endwindow
window ID WIND2 TITLE '"Play List"'
 group HORIZ
  group
   label SINGLE "GMPlay Path:"
   label SINGLE "MIDI Files Path:"
  endgroup
  group
   popasl ID PATH SPEC "6:20" ATTRS ASLFR_DrawersOnly 1
   popasl ID FPATH SPEC "6:20" ATTRS ASLFR_DrawersOnly 1
  endgroup
 endgroup
 list ID SLIST TITLE '"Song Path,Time,Format,Tracks,DPQ"' ATTRS MUIA_Listview_DragType,
  MUIV_Listview_DragType_Immediate MUIA_List_DragSortable 1 MUIA_Dropable 1,
  MUIA_List_Format '"P=\033r C=1 BAR,C=0 BAR,P=\033r BAR,P=\033r BAR,P=\033r"',
  PORT INLINE COMMAND '"
  options results; address MrMIDI; check ID PLAY; if result = 0 then do;
  setvar cont 1; check ID PLAY ATTRS 'MUIA_Selected' 1; end; else do;
  call Continue.rexx; end"'
 group HORIZ
  button ID INST COMMAND '"Insert"' LABEL "Insert"
  button ID DELE COMMAND '"Delete"' LABEL "Delete"
  button ID CLR COMMAND '"Clear"' LABEL "Clear"
  button ID SORT COMMAND '"Sort"' LABEL "Sort"
 endgroup
 group HORIZ
  button ID LLOAD COMMAND '"ListLoad 1"' LABEL "Load"
  button ID LSAVE COMMAND '"ListSave 1"' LABEL "Save"
  button ID INCL COMMAND '"ListLoad 2"' LABEL "Include"
 endgroup
endwindow
call Load
call ListLoad(0)
callhook ID SLIST APP COMMAND '"DropInsert %s"'
callhook ID MAIN APP PORT INLINE COMMAND """options results; address MrMIDI;
 call DropInsert '%s'; check ID PLAY ATTRS "MUIA_Selected" 1"""
exit
