| Global ToolMenu:TGadget '----Menu Item Global PasteMenuBefore:TGadget '----Menu Item Global PasteMenuAfter:TGadget '----Menu Item Global AnimClipboard:TList=Createlist() |
| Function CreateMenus:Int() Local FileMenu:TGadget=CreateMenu("File",200,MyWindow) CreateMenu("Exit",210,FileMenu,KEY_F4,MODIFIER_OPTION) CreateMenu("Open",220,FileMenu) Local ToolMenu:TGadget=CreateMenu("AnimTool",300,MyWindow) CreateMenu("Toggle Animation",310,ToolMenu) CreateMenu("Clear Animation",320,ToolMenu) CreateMenu("Cut",330,ToolMenu) PasteMenuAfter:TGadget=CreateMenu("Paste After",340,ToolMenu) PasteMenuBefore:TGadget=CreateMenu("Before",350,ToolMenu) DisableMenu(PasteMenuAfter) DisableMenu(PasteMenuBefore) UpdateWindowMenu MyWindow End Function |
| Function Process_MenuActionEvent:Int() Select EventData() Case 210 'Exit or ALT-F4 End Case 220 'File Open LoadCanvasImage("") Case 310 'Toggle Animation AnimFlag= True ~ AnimFlag Case 320 ;AnimClearAll Case 330 ;AnimListPtr=AnimCut() Case 340 ;AnimPaste(0) 'Paste After Case 350 ;AnimPaste(1) 'Paste Before End Select End Function |
| Case Canvas3 'From Animstrip Select EventData() Case MOUSE_LEFT SelectFrame() Case MOUSE_RIGHT PopupWindowMenu MyWindow, ToolMenu End Select RedrawGadget(Canvas3) |
| Function AnimClearAll:Int() Local YES:Int=Confirm("Delete All?") If YES Then ClearList(AnimList) AnimListPtr=Null EndIf End Function |
| Function AnimCut:TLink() If CountList(AnimList)=0 Return Null AnimFlag=False SelectFrame() ClearList(AnimClipBoard) Local Tmp:TPixmap=CopyPixmap(TPixmap(AnimListPtr.value())) ListAddLast AnimClipBoard,Tmp Local TmpLink:TLink=AnimListPtr.NextLink() If TmpLink=Null Then TmpLink=AnimListPtr.PrevLink() 'Must be last item in list RemoveLink(AnimListPtr) EnableMenu PasteMenuBefore EnableMenu PasteMenuAfter UpdateWindowMenu MyWindow Return TmpLink End Function |
| Function AnimPaste:Int(Flag:Int=0) If CountList(AnimClipboard)=0 Return -1 Local Tmp:TPixmap=Tpixmap(AnimClipboard.First()) SelectFrame() If AnimList.Count()=0 ListAddLast AnimList, Tmp AnimListPtr=AnimList.FirstLink() Else If Flag=0 Then AnimListPtr:TLink= .. AnimList.InsertAfterLink(Tmp:TPixmap, AnimListPtr:TLink) Else AnimListPtr:TLink= .. AnimList.InsertBeforeLink(Tmp:TPixmap, AnimListPtr:TLink) EndIf EndIf ClearList(AnimClipBoard) DisableMenu PasteMenuBefore DisableMenu PasteMenuAfter UpdateWindowMenu MyWindow End Function |
![]() |