G4C

; sc.RMBline
; opens on RMB on CODE & EVENT & FILE

winbig 0 0 80 60 ''
wintype 000010
winonmouse 30 7
varpath sced.gc

xOnRMB
guiclose sc.RMBline

xOnInactive
guiclose sc.RMBline

xOnQuit
guiquit sc.txtgad

xOnOpen
; disable cut/paste as needed
if $mode = EVENT
   setgad sc.RMBline 1/2 off
   setgad sc.RMBline 3 on
   pastehelp = 'Add stored lines to all selected events'
elseif $mode = FILE
   setgad sc.RMBline 1/2 on
   setgad sc.RMBline 3 off
   pastehelp = 'No paste'
else
   setgad sc.RMBline 1/3 on
   pastehelp = 'Add stored lines to this event'
endif


xOnFail
ezreq "Error during operation" OK ""

; -----------------------------------------------------------------------------
;	Cut entries
; -----------------------------------------------------------------------------

xbutton 0 0  0 15 Cut
gadid 1
gadhelp 'Cut & store selected lines so you can Paste them later'
guiclose sc.RMBline
saveflag = 1
counter = 0
lvuse sced.gc 6    ; clear storage lv, so we store new clip
lvclear
lvuse sced.gc 2	   ; set all items on 2 (full file lv) off
lvmulti none
lvuse sced.gc 1	   ; select all lines on 2 as selected on 1 (so we can delete them)
lvmulti first
if $$lv.line = 0
and $mode = CODE
   ezreq 'Can not delete EVENT line' OK ''
   stop
endif
while $$lv.line > ''
    if $mode = CODE
       linenum = $($eventstart + $$lv.line + $counter) ; line in script
       lvuse sced.gc 2	; delete from full script
       lvgo #$linenum
       lvmulti on
    endif
    ++counter
    lvuse sced.gc 1
    lvclip cut 1 add sced.gc 6
    lvmulti next
endwhile
lvuse sced.gc 2	; now delete all selected lines on 2
lvmulti first
while $ln > ''
    lvdel -1
    lvmulti first
endwhile
gosub sced.gc report 'Cut $counter lines' 1


; -----------------------------------------------------------------------------
;	Store selected lines
; -----------------------------------------------------------------------------

xbutton 0 15 0 15 Copy
gadid 2
gadhelp 'Store selected lines so that you can Paste them later'
guiclose sc.RMBline
lvuse sced.gc 6
lvclear
lvuse sced.gc 1
lvmulti first
count = 0
while $$lv.line > ''
   ++count
   lvclip copy 1 add sced.gc 6
   lvmulti off
   lvmulti next
endwhile
gosub sced.gc report 'Copied $count lines' 0

; -----------------------------------------------------------------------------
;	Add stored lines
; -----------------------------------------------------------------------------

xbutton 0 30 0 15 Paste
gadhelp '$pastehelp'
gadid 3
guiclose sc.RMBline
guiwindow sced.gc wait
if $mode = CODE
   lvuse sced.gc 1
   eventend == $eventstart + $$lv.tot
   --eventend
   lvuse sced.gc 2
   lvgo #$eventend
   lvuse sced.gc 6
   lvgo first
   lvclip copy -1 insert sced.gc 2
   lvclip copy -1 add sced.gc 1
else
   lvuse sced.gc 6
   lvgo first
   cliplines = $$lv.tot
   linesadded = 0
   lvuse sced.gc 1
   lvmulti first
   while $$lv.line > ''
      rec = $$lv.rec
      cutvar rec cut word 1 eventstart
      eventstart == $eventstart + $linesadded
      lvuse sced.gc 2
      lvgo #$eventstart
      rec = $$lv.rec
      while $rec[0][3] != END
       and $$lv.line > ""
         lvgo next
         rec = $$lv.rec
      endwhile
      if $rec[0][3] == END
         lvgo prev
         lvuse sced.gc 6
         lvclip copy -1 insert sced.gc 2
         linesadded == $linesadded + $cliplines
         lvuse sced.gc 1
         lvmulti off
         lvmulti next
      endif
   endwhile
   gosub sced.gc getlist EVENT
endif
guiwindow sced.gc resume
saveflag = 1
gosub sced.gc report 'Pasted lines to Event(s)' 1

; -----------------------------------------------------------------------------
;	See clip
; -----------------------------------------------------------------------------

xbutton 0 45 0 15 'SeeClip'
gadhelp 'Look at stored lines'
guiclose sc.RMBline
oldmode = $mode
mode = CLIP
lvuse sced.gc 1
lvswitch sced.gc 6




