home *** CD-ROM | disk | FTP | other *** search
- DEBUGBOOL = 0 ; (TRUE for debug-mode)
- ;; *****************************************************************
- * Programm: ChangeIcon V1.0 *
- * (AppIcon/Window/Menu gesteuerter *
- * Icon-Creator/Changer using the *
- * whatis.library) *
- * Copyright: Freeware (C)opyright by Hanns Holger *
- * Rutz *
- * Date: 02.-17. Februar 1994 *
- * 25./26. Februar 1994 - GTLV_MakeVisible *
- * works now for OS3; fixed bug in *
- * IDCMP-handling routines; *
- * 27. Februar 1994 - Types without the *
- * ICONNAME keyword do not appear *
- * in the listview any longer *
- * *
- * Notes: ASM-One V1.02 *
- * Needs OS2.04 or better *
- * (WB2.1 recommended) *
- * To do: - Shell-Startup possible(?) *
- * - File-selection via Requester(?) *
- *****************************************************************
-
- ;;-- Includes ---------------------------------------------
-
- incdir 'work:pax/asm/inc/'
- include 'dos/dosextens.i'
- include 'dos/dostags.i'
- include 'exec/memory.i'
- include 'intuition/intuition.i'
- include 'libraries/gadtools.i'
- include 'libraries/locale.i'
- include 'libraries/whatisbase.i'
- include 'private/intuition_lib.i'
- include 'private/dos_lib.i'
- include 'private/gadtools_lib.i'
- include 'private/gfx_lib.i'
- include 'private/icon_lib.i'
- include 'private/locale_lib.i'
- include 'private/macros.i'
- include 'private/whatis_lib.i'
- include 'private/workbench_lib.i'
- include 'workbench/workbench.i'
- include 'workbench/startup.i'
-
- ;;-- Konstanten -------------------------------------------
-
- MYIDCMP set LISTVIEWIDCMP!CHECKBOXIDCMP!STRINGIDCMP!BUTTONIDCMP
- MYIDCMP set MYIDCMP!IDCMP_VANILLAKEY!IDCMP_RAWKEY
- MYIDCMP set MYIDCMP!IDCMP_CLOSEWINDOW!IDCMP_MENUPICK
-
- PTR_HEIGHT = 16
- PTR_WIDTH = 16
- PTR_XOFFSET = -6
- PTR_YOFFSET = 0
-
- RAW_CURSORUP = $4C
- RAW_CURSORDOWN = $4D
- IEQUALIFIER_SHIFT = IEQUALIFIER_LSHIFT!IEQUALIFIER_RSHIFT
- IEQUALIFIER_ALT = IEQUALIFIER_LALT!IEQUALIFIER_RALT
-
- WA_Dummy = TAG_USER+99
- WA_NewLookMenus = WA_Dummy+$30 ; OS3.0 values
- WA_BusyPointer = WA_Dummy+$35
- GTMN_NewLookMenus = GT_TagBase+67
- GTCB_Scaled = GT_TagBase+68
- GTLV_MakeVisible = GT_TagBase+78
- _LVOSetWindowPointerA = -816 ; (win,taglist)(a0/a1)
-
- PathBufferLen = 257
- DefToolStrLen = 257
-
- ENUM
- EITEM MSG_REQ_TITLE
- EITEM MSG_ABORT
- EITEM MSG_OKAY
- EITEM MSG_RETRY_CANCEL
- EITEM MSG_LIBRARY_MISSING
- EITEM MSG_SHELL_START
- EITEM MSG_NEED_ICON
- EITEM MSG_NO_PORT
- EITEM MSG_NO_TYPES
- EITEM MSG_NO_APP
- EITEM MSG_NO_WIN
- EITEM MSG_EDITOR_FAILED
- EITEM MSG_NO_MEM
- EITEM MSG_TYPES
- EITEM MSG_AUTOTYPE
- EITEM MSG_DEFAULT_TOOL
- EITEM MSG_APPICON
- EITEM MSG_APPMENUITEM
- EITEM MSG_QUIT
- EITEM MSG_DROP_BOX
- EITEM MSG_PROJECT
- EITEM MSG_REPARSE
- EITEM MSG_EDIT
- EITEM MSG_ABOUT
- EITEM MSG_INFORMATION
- EITEM MSG_SIZEOF
-
- ENUM
- EITEM ID_LISTVIEW
- EITEM ID_DEFTOOLCHK
- EITEM ID_DEFTOOLSTR
- EITEM ID_APPOBJECT
- EITEM ID_QUIT
- EITEM ID_AUTOTYPE
- EITEM ID_PROJECT
- EITEM ID_REPARSE
- EITEM ID_EDIT
- EITEM ID_ABOUT
-
- STRUCTURE GadgetInfo,0
- STRUCT ggi_Node,LN_SIZE ; LN_NAME = &ggi_UnderScore
- UWORD ggi_UnderScore ; UBYTE Char + NULLByte
- UWORD ggi_GadgetID
- APTR ggi_Gadget
- LABEL ggi_SIZEOF
-
- STRUCTURE FileTypeInfo,0
- STRUCT fti_Node,LN_SIZE ; LN_NAME = &TypeName
- ULONG fti_Type
- LABEL fti_SIZEOF
-
- STRUCTURE Globals,0
- APTR gl_DOSBase
- APTR gl_GToolsBase
- APTR gl_GfxBase
- APTR gl_IconBase
- APTR gl_IntuiBase
- APTR gl_LocaleBase
- APTR gl_WBenchBase
- APTR gl_WhatIsBase
-
- APTR gl_Process
- UBYTE gl_Return
- ALIGNWORD
- ULONG gl_Result2
- APTR gl_WBMsg
- BOOL gl_OS3
-
- APTR gl_Locale
- APTR gl_Catalog
- APTR gl_Window
- APTR gl_OldProcWin ; = pr_WindowPtr
- APTR gl_Request ; used to block Gadget-access
- APTR gl_PubScreen
- APTR gl_VisualInfo
- APTR gl_AppPort
- APTR gl_AppObject ; &AppIcon/MenuItem/Window
-
- APTR gl_FirstGad ; &FirstGG (GadTools)
- STRUCT gl_GadList,LH_SIZE ; &GadgetInfo
- STRUCT gl_TypeList,LH_SIZE ; &FileTypeInfo
- WORD gl_NumType
- BYTE gl_FreezeCnt
- ALIGNWORD
- APTR gl_Pointer
- APTR gl_MenuStrings
- APTR gl_MenuStrip
- STRUCT gl_TopazAttr,ta_SIZEOF
-
- UWORD gl_Type
- BOOL gl_AutoType
- BOOL gl_DefTool
- APTR gl_PathBuffer
- APTR gl_DefToolStr ; to be FreeVec()ed as gl_PathBuffer!!
- APTR gl_IconDir
-
- BOOL gl_PopUp
- BOOL gl_Mode ; FALSE = Icon, TRUE = Menu
- APTR gl_AppIcon ; (struct DiskObject *) !!
- LONG gl_IconX
- LONG gl_IconY
- APTR gl_AppName ; (STRPTR) Name für Icon & MenuItem
- APTR gl_Editor ; "<EditorName> S:FileTypes"
- UWORD gl_EditorLen ; strlen( "<EditorName>" )
- LABEL gl_SIZEOF
-
- ;;-- Macros -----------------------------------------------
-
- ;-- asks for a locale-string --
- ; In: Arg1 = StringID, [Arg2 = TargetRegister (defaults to a0)]
- ; Out: d0.l/a0.l are trashed; TargetRegister/a0.l = &String (ReadOnly!)
- getstr MACRO
- IF \1<128
- moveq.l #\1,d0
- ELSE
- move.l #\1,d0
- ENDC
- bsr.w _GetCatString
- IF NARG>1
- move.l a0,\2
- ENDC
- ENDM
-
- ;;-- Code Beginn ------------------------------------------
-
- section Text,code
-
- _Start moveq.l #gl_SIZEOF/2-1,d0
- .ClearLoop clr.w -(sp)
- dbra d0,.ClearLoop
- movea.l sp,gl
-
- move.b #RETURN_FAIL,gl_Return(gl)
- exec
- moveq.l #0,d0
- cmpi.w #39,LIB_VERSION(lb)
- sge.b d0
- move.w d0,gl_OS3(gl)
- movea.l ThisTask(lb),a2
- move.l a2,gl_Process(gl)
- tst.l pr_CLI(a2)
- beq.b .WBench
-
- .Shell bsr.w _OpenLibs
- slib DOS,d0
- beq.b .ShellNoDOS
- movea.l d0,lb
- getstr MSG_SHELL_START,d1
- fjsr PutStr
- .ShellNoDOS bra.w _CleanUp
-
- .WBench IF ~DEBUGBOOL
- lea.l pr_MsgPort(a2),a0
- fjsr WaitPort
- lea.l pr_MsgPort(a2),a0
- fjsr GetMsg
- move.l d0,gl_WBMsg(gl)
- ENDC
- bsr.w _OpenLibs
- beq.b _CleanUp
- IF DEBUGBOOL
- move.w #-1,gl_Mode(gl)
- move.w #-1,gl_PopUp(gl)
- movea.l gl_Process(gl),a0
- move.l LN_NAME(a0),gl_AppName(gl)
- exec
- moveq.l #.Y-.X,d0
- moveq.l #MEMF_PUBLIC,d1
- fjsr AllocVec
- move.l d0,gl_IconDir(gl)
- movea.l d0,a1
- lea.l .X(pc),a0
- .W move.b (a0)+,(a1)+
- bne.b .W
- bra.b .Z
- .X dc.b 'Work:Gfx/Icons/',0
- .Y even
- .Z
- ELSE
- bsr.w _GetArgs ; ToolTypes auswerten etc.
- beq.b _CleanUp
- ENDC
- bsr.w _InitOther ; MsgPort etc.
- beq.b _CleanUp
-
- ;;-- Main stuff -------------------------------------------
-
- _Main bsr.w _AllocTypes ; create List for ListView
- beq.b _CleanUp
- bsr.w _OpenApp ; show AppIcon/MenuItem/Window
- beq.b _CleanUp
-
- .WaitLoop exec
- movea.l gl_AppPort(gl),a0
- move.b MP_SIGBIT(a0),d1
- moveq.l #0,d0
- bset.l d1,d0
- move.l gl_Window(gl),d1
- beq.b .WaitCont
- movea.l d1,a0
- move.l wd_UserPort(a0),d1
- beq.b .WaitCont
- movea.l d1,a0
- move.b MP_SIGBIT(a0),d1
- bset.l d1,d0
- .WaitCont fjsr Wait
-
- bsr.w _ProcessGTools ; handle Gadgets and stuff
- beq.b _CleanUp ; ..Error
- bgt.b .MainDone ; ..User selected "Quit"
- .AppLoop exec
- movea.l gl_AppPort(gl),a0
- fjsr GetMsg
- tst.l d0
- beq.b .WaitLoop
- movea.l d0,a1
- bsr.w _ProcessApp ; handle AppMessages
- slt.b d2
- sgt.b d3
- fjsr ReplyMsg
- tst.b d2
- bne.b .AppLoop ; ..Okay
- tst.b d3
- beq.b _CleanUp ; ..Error
-
- .MainDone clr.b gl_Return(gl)
-
- ;;-- Aufräumen --------------------------------------------
-
- _CleanUp bsr.w _CloseAll
-
- exec
- move.l gl_WBMsg(gl),d0
- beq.b .MsgEnd
- movea.l d0,a1
- fjsr Forbid
- fjsr ReplyMsg
- .MsgEnd
- moveq.l #0,d0
- move.b gl_Return(gl),d0
- beq.b _Quit
- movea.l gl_Process(gl),a0
- move.l gl_Result2(gl),pr_Result2(a0)
- _Quit lea.l gl_SIZEOF(sp),sp
- rts
-
- dc.b '$VER: ChangeIcon 1.0 (26-Feb-94)',0
- _WBPubName dc.b 'Workbench',0
- _FileTypes dc.b 'S:FileTypes',0
- FileTypesLen = *-_FileTypes
- even
-
- ;;-- Libraries & Catalog öffnen ---------------------------
- ; Out: cc=eq, wenn Fehler
-
- _OpenLibs push
-
- exec
- lea.l .IntuiName(pc),a1
- moveq.l #36,d0
- fjsr OpenLibrary
- move.l d0,gl_IntuiBase(gl)
- beq.w .Error
-
- lea.l .LocaleName(pc),a1
- moveq.l #38,d0
- fjsr OpenLibrary
- move.l d0,gl_LocaleBase(gl)
- beq.b .LocCont
- movea.l d0,lb
- suba.l a0,a0
- fjsr OpenLocale
- move.l d0,gl_Locale(gl)
- movea.l d0,a0
- lea.l .CatName(pc),a1
- clr.l -(sp)
- clr.l -(sp)
- pea.l .BuiltIn(pc)
- move.l #OC_BuiltInLanguage,-(sp)
- movea.l sp,a2
- fjsr OpenCatalogA
- move.l d0,gl_Catalog(gl)
- lea.l 4*4(sp),sp
- .LocCont
- exec
- lea.l .DOSName(pc),a2
- movea.l a2,a1
- moveq.l #37,d0
- fjsr OpenLibrary
- move.l d0,gl_DOSBase(gl)
- beq.b .PrintErr
- lea.l .GToolsName(pc),a2
- movea.l a2,a1
- moveq.l #37,d0
- fjsr OpenLibrary
- move.l d0,gl_GToolsBase(gl)
- beq.b .PrintErr
- lea.l .GfxName(pc),a2
- movea.l a2,a1
- moveq.l #36,d0
- fjsr OpenLibrary
- move.l d0,gl_GfxBase(gl)
- beq.b .PrintErr
- lea.l .IconName(pc),a2
- movea.l a2,a1
- moveq.l #36,d0
- fjsr OpenLibrary
- move.l d0,gl_IconBase(gl)
- beq.b .PrintErr
- lea.l .WBenchName(pc),a2
- movea.l a2,a1
- moveq.l #36,d0
- fjsr OpenLibrary
- move.l d0,gl_WBenchBase(gl)
- beq.b .PrintErr
- lea.l .WhatIsName(pc),a2
- movea.l a2,a1
- moveq.l #2,d0
- fjsr OpenLibrary
- move.l d0,gl_WhatIsBase(gl)
- beq.b .PrintErr
-
- .Exit pull
- rts
-
- ; In: a2 = &LibName
- .PrintErr getstr MSG_ABORT,a1
- getstr MSG_LIBRARY_MISSING ; a0
- movea.l a2,-(sp)
- movea.l sp,a2
- bsr.w _EasyReq
- addq.l #4,sp
- ;||
- .Error moveq.l #ERROR_INVALID_RESIDENT_LIBRARY,d0
- move.l d0,gl_Result2(gl)
- clr.b d0
- bra.b .Exit
-
- .DOSName dc.b 'dos.library',0
- .GToolsName dc.b 'gadtools.library',0
- .GfxName dc.b 'graphics.library',0
- .IconName dc.b 'icon.library',0
- .IntuiName dc.b 'intuition.library',0
- .LocaleName dc.b 'locale.library',0
- .WBenchName dc.b 'workbench.library',0
- .WhatIsName dc.b 'whatis.library',0
- .CatName dc.b 'changeicon.catalog',0
- .BuiltIn dc.b 'english',0
- even
-
- ;;-- Close all stuff --------------------------------------
- ; MUSS AUF OS1.3 LAUFEN!
-
- _CloseAll push
- bsr.w _FreeTypes
- bsr.w _CloseApp
-
- exec
- move.l gl_AppPort(gl),d0
- beq.b .PortCont ; maybe some 1.3-Users around..
- movea.l d0,a0
- fjsr DeleteMsgPort
- .PortCont
- move.l gl_AppIcon(gl),d0
- beq.b .IconCont
- slib Icon
- movea.l d0,a0
- fjsr FreeDiskObject
- .IconCont
- exec
- move.l gl_PathBuffer(gl),d0
- beq.b .BufCont
- movea.l d0,a1
- fjsr FreeVec
- .BufCont move.l gl_Editor(gl),d0
- beq.b .EditorCont
- movea.l d0,a1
- fjsr FreeVec
- .EditorCont move.l gl_IconDir(gl),d0
- beq.b .DirCont
- movea.l d0,a1
- fjsr FreeVec
- .DirCont move.l gl_Request(gl),d0
- beq.b .ReqCont
- movea.l d0,a1
- moveq.l #rq_SIZEOF,d0
- fjsr FreeMem
- .ReqCont
- slib Locale
- move.l gl_Catalog(gl),d0
- beq.b .CatCont
- movea.l d0,a0
- fjsr CloseCatalog
- .CatCont move.l gl_Locale(gl),d0
- beq.b .LocCont
- movea.l d0,a0
- fjsr CloseLocale
- .LocCont
- exec
- movea.l gl_WhatIsBase(gl),d0
- beq.b .LibCont1
- movea.l d0,a1
- fjsr CloseLibrary
- .LibCont1 movea.l gl_WBenchBase(gl),d0
- beq.b .LibCont2
- movea.l d0,a1
- fjsr CloseLibrary
- .LibCont2 movea.l gl_LocaleBase(gl),d0
- beq.b .LibCont3
- movea.l d0,a1
- fjsr CloseLibrary
- .LibCont3 movea.l gl_IntuiBase(gl),d0
- beq.b .LibCont4
- movea.l d0,a1
- fjsr CloseLibrary
- .LibCont4 movea.l gl_IconBase(gl),d0
- beq.b .LibCont5
- movea.l d0,a1
- fjsr CloseLibrary
- .LibCont5 movea.l gl_GfxBase(gl),d0
- beq.b .LibCont6
- movea.l d0,a1
- fjsr CloseLibrary
- .LibCont6 movea.l gl_GToolsBase(gl),d0
- beq.b .LibCont7
- movea.l d0,a1
- fjsr CloseLibrary
- .LibCont7 movea.l gl_DOSBase(gl),d0
- beq.b .LibCont
- movea.l d0,a1
- fjsr CloseLibrary
- .LibCont
- pull
- rts
-
- ;;-- Icon lesen & Args auswerten --------------------------
- ; Out: cc=eq, wenn Fehler
-
- _GetArgs push
-
- movea.l gl_WBMsg(gl),a2
- movea.l sm_ArgList(a2),a2
- slib DOS
- move.l wa_Lock(a2),d1
- fjsr CurrentDir
- slib Icon
- movea.l wa_Name(a2),a0
- move.l a0,gl_AppName(gl) ; default AppName
- fjsr GetDiskObject
- move.l d0,gl_AppIcon(gl) ; default AppIcon
- beq.w .Error
- movea.l d0,a3
- movea.l do_ToolTypes(a3),a3
-
- moveq.l #FileTypesLen,d0
- lea.l .EditorTxt(pc),a0
- bsr.w .GetToolType
- move.l a0,gl_Editor(gl)
- moveq.l #0,d0
- lea.l .IconDirTxt(pc),a0
- bsr.w .GetToolType
- move.l a0,gl_IconDir(gl)
-
- movea.l a3,a0
- lea.l .PopUpTxt(pc),a1
- ;slib Icon
- fjsr FindToolType
- tst.l d0
- beq.b .PopUpCont ; default PopUp = No
- movea.l d0,a0
- lea.l .YesTxt(pc),a1
- fjsr MatchToolValue
- .PopUpCont move.w d0,gl_PopUp(gl)
-
- movea.l a3,a0
- lea.l .ModeTxt(pc),a1
- ;slib Icon
- fjsr FindToolType
- tst.l d0
- beq.b .ModeCont ; default Mode = Icon
- movea.l d0,a0
- lea.l .MenuTxt(pc),a1
- fjsr MatchToolValue
- .ModeCont move.w d0,gl_Mode(gl)
- beq.b .IconMode
-
- .MenuMode movea.l a3,a0
- lea.l .MenuNameTxt(pc),a1
- ;slib Icon
- fjsr FindToolType
- tst.l d0
- beq.b .MMCont
- move.l d0,gl_AppName(gl)
- .MMCont bra.w .Okay
-
- .IconMode movea.l a3,a0
- lea.l .IconXTxt(pc),a1
- ;slib Icon
- fjsr FindToolType
- move.l d0,d1
- beq.b .IMNoXPos
- slib DOS
- lea.l gl_IconX(gl),a0
- move.l a0,d2
- fjsr StrToLong
- addq.l #1,d0
- bne.b .IMGetYPos
- .IMNoXPos move.l #NO_ICON_POSITION,gl_IconX(gl) ; default Icon_X
- .IMGetYPos
- movea.l a3,a0
- lea.l .IconYTxt(pc),a1
- slib Icon
- fjsr FindToolType
- move.l d0,d1
- beq.b .IMNoYPos
- slib DOS
- lea.l gl_IconY(gl),a0
- move.l a0,d2
- fjsr StrToLong
- addq.l #1,d0
- bne.b .IMGetIcon
- .IMNoYPos move.l #NO_ICON_POSITION,gl_IconY(gl) ; default Icon_Y
- .IMGetIcon
- slib Icon
- movea.l a3,a0
- lea.l .IconNameTxt(pc),a1
- fjsr FindToolType
- move.l d0,d4
- beq.b .IMCont
- slib DOS
- move.l d4,d1
- fjsr FilePart
- move.l d0,d3
- movea.l d3,a0
- moveq.l #0,d2
- .IMLoop addq.l #1,d2 ; strlen( ICONNAME ) + 1
- tst.b (a0)+
- bne.b .IMLoop
- exec ; d4=&FullName, d3=&FileName, d2=Length
- move.l d2,d0
- moveq.l #MEMF_PUBLIC,d1
- fjsr AllocMem
- movea.l d3,a0
- move.l d0,d3
- beq.b .IMCopyCont
- movea.l d3,a1
- .IMLoop2 move.b (a0)+,(a1)+ ; strcpy( ICONNAME )
- bne.b .IMLoop2
- .IMCopyCont
- slib Icon
- movea.l d4,a0
- fjsr GetDiskObject
- move.l d0,d4
- beq.b .IMSwapCont
- movea.l gl_AppIcon(gl),a0
- fjsr FreeDiskObject ; exchange
- move.l d4,gl_AppIcon(gl) ; ..AppIcon
- .IMSwapCont
- tst.l d3
- beq.b .IMCont ; ..kein Name allokiert
- movea.l gl_AppIcon(gl),a0
- lea.l do_SIZEOF(a0),a0 ; &FreeList
- movea.l d3,a1
- movea.l d2,a2
- fjsr AddFreeList ; add ICONNAME to FreeList
- tst.w d0
- beq.b .IMFreeName
- move.l d3,gl_AppName(gl)
- .IMCont bra.b .Okay
-
- .IMFreeName exec
- movea.l d3,a1 ; Name couldn't be added
- move.l d2,d0
- fjsr FreeMem ; ..we'll free it again
- ;||
- .Okay moveq.l #-1,d0
-
- .Exit pull
- rts
-
- .Error slib DOS
- fjsr IoErr
- move.l d0,gl_Result2(gl)
- suba.l a2,a2
- getstr MSG_ABORT,a1
- getstr MSG_NEED_ICON ; a0
- bsr.w _EasyReq
- ;clr.b d0
- bra.b .Exit
-
- ;-- FindToolType(), alloc buffer and copy type --
- ; In: a0 = &TypeString, d0.l = ExtraSize to alloc (Bytes), a3 = &ToolTypeArray
- ; Out: a0 = &Buffer or NULL (AllocVec()ed)
-
- .GetToolType push d0-d7/a1-a7
-
- movea.l a0,a1
- movea.l a3,a0
- slib Icon
- fjsr FindToolType
- movea.l d0,a0
- move.l d0,d2
- beq.b .GTTExit
-
- move.l (sp),d0
- .GTTLoop addq.l #1,d0
- tst.b (a0)+
- bne.b .GTTLoop
- exec
- move.l #MEMF_PUBLIC!MEMF_CLEAR,d1
- fjsr AllocVec
- movea.l d0,a0
- tst.l d0
- beq.b .GTTExit
-
- movea.l d2,a1
- movea.l a0,a2
- .GTTLoop2 move.b (a1)+,(a2)+
- bne.b .GTTLoop2
- .GTTExit pull d0-d7/a1-a7
- rts
-
- .ModeTxt dc.b 'MODE',0
- .MenuTxt dc.b 'MENU',0
- .MenuNameTxt dc.b 'MENUNAME',0
- .IconXTxt dc.b 'ICON_X',0
- .IconYTxt dc.b 'ICON_Y',0
- .IconNameTxt dc.b 'ICONNAME',0
- .PopUpTxt dc.b 'POPUP',0
- .YesTxt dc.b 'YES',0
- .EditorTxt dc.b 'EDITOR',0
- .IconDirTxt dc.b 'ICONDIR',0
- even
-
- ;;-- MsgPort einrichten etc. -----------------------------
- ; Out: cc=eq, wenn Fehler
-
- _InitOther push
-
- exec
- fjsr CreateMsgPort
- move.l d0,gl_AppPort(gl)
- beq.w .PortErr
-
- tst.w gl_Mode(gl)
- bne.b .IconCont
- movea.l gl_AppIcon(gl),a0
- move.l gl_IconX(gl),do_CurrentX(a0)
- move.l gl_IconY(gl),do_CurrentY(a0)
- .IconCont
- lea.l gl_TypeList(gl),a0
- NEWLIST a0
- lea.l gl_GadList(gl),a0
- NEWLIST a0
- IF DEBUGBOOL
- move.l #_Ptr,d0
- ELSE
- move.l _Start-4(pc),d0
- lsl.l #2,d0 ; BPTR >> APTR
- addq.l #4,d0
- ENDC
- move.l d0,gl_Pointer(gl)
-
- moveq.l #~0,d0 ; some defaults
- move.w d0,gl_AutoType(gl)
- move.w d0,gl_Type(gl)
- clr.w gl_DefTool(gl)
-
- tst.l gl_Editor(gl)
- bne.w .EdJoin
- slib DOS
- clr.w -(sp)
- lea.l .VarName(pc),a0
- move.l a0,d1
- move.l sp,d2
- moveq.l #2,d3
- moveq.l #0,d4
- fjsr GetVar
- addq.l #2,sp
- addq.l #1,d0
- beq.b .EdDefault
- fjsr IoErr
- addq.l #1,d0
- move.l d0,d3
- addi.l #FileTypesLen,d0
- moveq.l #MEMF_PUBLIC,d1
- exec
- fjsr AllocVec
- move.l d0,gl_Editor(gl)
- beq.b .EdDefault
- slib DOS
- lea.l .VarName(pc),a0
- move.l a0,d1
- move.l d0,d2
- fjsr GetVar
- addq.l #1,d0
- beq.b .EdRetry
- fjsr IoErr
- addq.l #1,d0
- cmp.l d0,d3
- beq.b .EdJoin
- .EdRetry exec
- movea.l gl_Editor(gl),a1
- clr.l gl_Editor(gl)
- fjsr FreeVec
- .EdDefault
- exec
- moveq.l #FileTypesLen+.DefEditorLen,d0
- moveq.l #MEMF_PUBLIC,d1
- fjsr AllocVec
- move.l d0,gl_Editor(gl)
- beq.b .EdCont
- movea.l d0,a1
- lea.l .DefEditor(pc),a0
- .EdDefLoop move.b (a0)+,(a1)+
- bne.b .EdDefLoop
- .EdJoin
- moveq.l #-1,d0
- movea.l gl_Editor(gl),a1
- .EdJoinLoop addq.w #1,d0
- tst.b (a1)+
- bne.b .EdJoinLoop
- move.w d0,gl_EditorLen(gl)
- lea.l _FileTypes(pc),a0
- .EdJoinLoop2 move.b (a0)+,(a1)+
- bne.b .EdJoinLoop2
- .EdCont
- exec
- move.l #PathBufferLen+DefToolStrLen,d0
- move.l #MEMF_PUBLIC!MEMF_CLEAR,d1
- fjsr AllocVec
- move.l d0,gl_PathBuffer(gl)
- beq.b .MemErr
- addi.l #PathBufferLen,d0
- move.l d0,gl_DefToolStr(gl)
-
- exec
- moveq.l #rq_SIZEOF,d0
- moveq.l #MEMF_PUBLIC,d1
- fjsr AllocMem
- move.l d0,gl_Request(gl)
- beq.b .MemErr
-
- lea.l .TopazName(pc),a1 ; Topaz8-TextAttr maken
- move.l a1,gl_TopazAttr+ta_Name(gl)
- move.w #8,gl_TopazAttr+ta_YSize(gl)
- move.b #FS_NORMAL,gl_TopazAttr+ta_Style(gl)
- move.b #FPF_ROMFONT!FPF_DESIGNED,gl_TopazAttr+ta_Flags(gl)
-
- moveq.l #-1,d0
- .Exit pull
- rts
-
- .MemErr moveq.l #ERROR_NO_FREE_STORE,d0
- move.l d0,gl_Result2(gl)
- getstr MSG_NO_MEM ; a0
- bra.b .Error
-
- .PortErr getstr MSG_NO_PORT ; a0
- ; In: a0 = &WhyText
- .Error move.l a0,-(sp)
- suba.l a2,a2
- getstr MSG_ABORT,a1
- movea.l (sp)+,a0
- bsr.w _EasyReq
- ;clr.b d0
- bra.b .Exit
-
- .DefEditor dc.b 'C:Ed',0
- .DefEditorLen = *-.DefEditor
- .VarName dc.b 'EDITOR',0
- .TopazName dc.b 'topaz.font',0
- even
-
- ;;-- AppIcon/MenuItem/Window anzeigen/öffnen --------------
- ; Out: cc=eq, wenn Fehler
-
- _OpenApp push
-
- tst.w gl_PopUp(gl)
- bne.b .WinMode
- tst.w gl_Mode(gl)
- beq.b .IconMode
-
- .MenuMode slib WBench
- moveq.l #0,d0
- moveq.l #0,d1
- movea.l gl_AppName(gl),a0
- movea.l gl_AppPort(gl),a1
- suba.l a2,a2
- fjsr AddAppMenuItemA
- move.l d0,gl_AppObject(gl)
- beq.b .Error
- bra.b .Okay
-
- .IconMode slib WBench
- moveq.l #0,d0
- moveq.l #0,d1
- movea.l gl_AppName(gl),a0
- movea.l gl_AppPort(gl),a1
- suba.l a2,a2
- movea.l gl_AppIcon(gl),a3
- suba.l a4,a4
- fjsr AddAppIconA
- move.l d0,gl_AppObject(gl)
- beq.b .Error
- bra.b .Okay
-
- .WinMode bsr.w _OpenWindow
- beq.b .Exit ; (Requester schon abgefragt)
- slib WBench
- moveq.l #0,d0
- moveq.l #0,d1
- movea.l gl_Window(gl),a0
- movea.l gl_AppPort(gl),a1
- suba.l a2,a2
- fjsr AddAppWindowA
- move.l d0,gl_AppObject(gl)
- beq.b .Error
- .Okay moveq.l #-1,d0
-
- .Exit pull
- bgt.b _OpenApp ; User selected "Retry"
- rts
-
- .Error bsr.b _CloseApp ; evtl. Window schließen etc.
- suba.l a2,a2
- getstr MSG_RETRY_CANCEL,a1
- getstr MSG_NO_APP ; a0
- bsr.w _EasyReq
- ;tst.l d0 ; gt = Retry, eq = Cancel
- bra.b .Exit
-
- ;;-- AppIcon/Window/MenuItem entfernen etc. ---------------
- ; MUSS AUF OS1.3 LAUFEN!
-
- _CloseApp push
-
- move.l gl_AppObject(gl),d0
- beq.b .AppCont
- movea.l d0,a0
- clr.l gl_AppObject(gl)
- slib WBench
- tst.w gl_PopUp(gl)
- bne.b .WinMode
- tst.w gl_Mode(gl)
- beq.b .IconMode
-
- .MenuMode fjsr RemoveAppMenuItem
- bra.b .AppCont
- .IconMode fjsr RemoveAppIcon
- bra.b .AppCont
- .WinMode fjsr RemoveAppWindow
- .AppCont
- tst.l gl_AppPort(gl)
- beq.b .AppCont2
- exec
- .AppLoop movea.l gl_AppPort(gl),a0
- fjsr GetMsg
- tst.l d0
- beq.b .AppCont2
- movea.l d0,a1
- fjsr ReplyMsg
- bra.b .AppLoop
- .AppCont2
- move.l gl_Window(gl),d0
- beq.b .WinCont
- movea.l gl_Process(gl),a0
- move.l gl_OldProcWin(gl),pr_WindowPtr(a0)
- slib Intui
- movea.l d0,a0
- fjsr ClearMenuStrip
- .WinLoop tst.b gl_FreezeCnt(gl)
- ble.b .WinCont2
- moveq.l #0,d0
- bsr.w _FreezeWin
- bra.b .WinLoop
- .WinCont2 movea.l gl_Window(gl),a0
- clr.l gl_Window(gl)
- fjsr CloseWindow
- .WinCont
- move.l gl_FirstGad(gl),d0
- beq.b .GadCont
- bsr.w _CopyStrBuf
- clr.l gl_FirstGad(gl)
- movea.l d0,a0
- slib GTools
- fjsr FreeGadgets
- .GadCont
- move.l gl_MenuStrip(gl),d0
- beq.b .MenuCont
- clr.l gl_MenuStrip(gl)
- movea.l d0,a0
- slib GTools
- fjsr FreeMenus
- .MenuCont move.l gl_MenuStrings(gl),d0
- beq.b .MenuCont2
- clr.l gl_MenuStrings(gl)
- movea.l d0,a1
- exec
- fjsr FreeVec
- .MenuCont2
- exec
- movea.l gl_GadList+LH_HEAD(gl),a2
- .GadLoop move.l ggi_Node+LN_SUCC(a2),d2
- beq.b .GadCont2
- movea.l a2,a1
- REMOVE
- movea.l a2,a1
- moveq.l #ggi_SIZEOF,d0
- fjsr FreeMem
- movea.l d2,a2
- bra.b .GadLoop
- .GadCont2
- move.l gl_VisualInfo(gl),d0
- beq.b .VICont
- clr.l gl_VisualInfo(gl)
- movea.l d0,a0
- slib GTools
- fjsr FreeVisualInfo
- .VICont
- move.l gl_PubScreen(gl),d0
- beq.b .ScrCont
- clr.l gl_PubScreen(gl)
- movea.l d0,a1
- suba.l a0,a0
- slib Intui
- fjsr UnlockPubScreen
- .ScrCont
- pull
- rts
-
- ;;-- Copy contents of the DefTool-StringGG ----------------
-
- _CopyStrBuf push
- tst.l gl_FirstGad(gl)
- beq.b .Exit
-
- moveq.l #ID_DEFTOOLSTR,d0
- bsr.w _GetGadget
- move.l a0,d0
- beq.b .Exit
- movea.l gg_SpecialInfo(a0),a0
- movea.l si_Buffer(a0),a0
- movea.l gl_DefToolStr(gl),a1
- .Loop move.b (a0)+,(a1)+
- bne.b .Loop
-
- .Exit pull
- rts
-
- ;;-- Gadgets erzeugen, Fenster öffnen etc. ----------------
- ; Out: cc=eq, wenn Fehler
-
- STRUCTURE OWLocals,0
- APTR ow_PrevGad
- APTR ow_TempRPort
- APTR ow_TextFont
- BOOL ow_FontRetry ; if TRUE: try with Topaz 8!
- WORD ow_MaxWidth ; \
- WORD ow_MaxHeight ; /
- APTR ow_TextAttr
-
- WORD ow_ListViewLeft ; \
- WORD ow_ListViewTop ; \
- WORD ow_ListViewWidth ; /
- WORD ow_ListViewHeight ; /
-
- WORD ow_DefToolChkLeft
- WORD ow_DefToolChkTop
- WORD ow_DefToolChkWidth
- WORD ow_DefToolChkHeight
-
- WORD ow_DefToolStrLeft
- WORD ow_DefToolStrTop
- WORD ow_DefToolStrWidth
- WORD ow_DefToolStrHeight
-
- WORD ow_AppObjectLeft
- WORD ow_AppObjectTop
- WORD ow_AppObjectWidth
- WORD ow_AppObjectHeight
- LABEL ow_SIZEOF
-
- _OpenWindow push
- moveq.l #ow_SIZEOF/2-1,d0
- .ClearLoop clr.w -(sp)
- dbra d0,.ClearLoop
- movea.l sp,lo
- .Restart moveq.l #0,d7
-
- slib Intui
- lea.l _WBPubName(pc),a0
- fjsr LockPubScreen
- move.l d0,gl_PubScreen(gl)
- bne.b .GetPubCont
- suba.l a0,a0
- fjsr LockPubScreen
- move.l d0,gl_PubScreen(gl)
- beq.w .Error
- .GetPubCont
- slib GTools
- movea.l gl_PubScreen(gl),a0
- lea.l .EmptyTags(pc),a1
- fjsr GetVisualInfoA
- move.l d0,gl_VisualInfo(gl)
- lea.l gl_FirstGad(gl),a0
- fjsr CreateContext
- move.l d0,ow_PrevGad(lo)
- beq.w .Error
- clr.l ow_MaxWidth(lo)
-
- exec
- moveq.l #rp_SIZEOF,d0
- move.l #MEMF_CLEAR!MEMF_PUBLIC,d1
- fjsr AllocVec
- move.l d0,ow_TempRPort(lo)
- beq.w .Error
- slib Gfx
- movea.l d0,a1
- fjsr InitRastPort
-
- movea.l gl_PubScreen(gl),a0
- movea.l sc_Font(a0),a0 ; &TextAttr
- tst.w ow_FontRetry(lo)
- beq.b .RetryCont
- lea.l gl_TopazAttr(gl),a0 ; &TopazAttr (retry)
- .RetryCont move.l a0,ow_TextAttr(lo)
- fjsr OpenFont
- move.l d0,ow_TextFont(lo)
- beq.w .FontError
- movea.l ow_TempRPort(lo),a1
- movea.l d0,a0
- fjsr SetFont
-
- movea.l ow_TextFont(lo),a2
- moveq.l #16,d0 ; 16
- moveq.l #12,d1
- add.w tf_YSize(a2),d1 ; 12+FH
- move.w tf_XSize(a2),d2
- lsl.w #4,d2
- addi.w #32,d2 ; 32+FW*16
- move.w tf_YSize(a2),d3
- addq.w #2,d3
- mulu.w #7,d3
- addq.w #6,d3 ; 6+(FH+2)*7
- movem.w d0-d3,ow_ListViewLeft(lo)
- lea.l .ListViewGG(pc),a0
- pea.l .ListViewTags(pc)
- move.l #TAG_MORE,-(sp)
- pea.l gl_TypeList(gl)
- move.l #GTLV_Labels,-(sp)
- move.w gl_Type(gl),d4
- ext.l d4
- move.l d4,-(sp)
- move.l #GTLV_Selected,-(sp)
- tst.l d4
- bge.b .LVCont
- moveq.l #0,d4
- .LVCont move.l d4,-(sp)
- move.l #GTLV_Top,-(sp)
- movea.l sp,a1
- bsr.w .CreateGad
- lea.l 8*4(sp),sp
- beq.w .Error
-
- move.w .DefToolChkGG+4(pc),d0
- bsr.w .GetLength
- addi.w #24,d0 ; 24+len(DefaultTool)
- move.w ow_ListViewTop(lo),d1
- addq.w #6-1,d1
- add.w ow_ListViewHeight(lo),d1 ; bottom(ListView)+6
- moveq.l #26,d2 ; 26
- move.w tf_YSize(a2),d3
- addq.w #3,d3 ; 3+FH
- movem.w d0-d3,ow_DefToolChkLeft(lo)
- lea.l .DefToolChkGG(pc),a0
- pea.l .DefToolChkTags(pc)
- move.l #TAG_MORE,-(sp)
- move.w gl_DefTool(gl),-(sp)
- clr.w -(sp)
- move.l #GTCB_Checked,-(sp)
- move.w gl_AutoType(gl),-(sp)
- clr.w -(sp)
- move.l #GA_Disabled,-(sp)
- movea.l sp,a1
- bsr.w .CreateGad
- lea.l 6*4(sp),sp
- beq.w .Error
-
- move.w ow_DefToolChkLeft(lo),d0
- addq.w #9-1,d0
- add.w ow_DefToolChkWidth(lo),d0 ; right(DefToolChk)+9
- move.w ow_ListViewTop(lo),d1
- addq.w #5-1,d1
- add.w ow_ListViewHeight(lo),d1 ; bottom(ListView)+5
- move.w tf_XSize(a2),d2
- mulu.w #25,d2
- addi.w #12,d2 ; 12+FW*25
- moveq.l #6,d3
- add.w tf_YSize(a2),d3 ; 6+FH
- movem.w d0-d3,ow_DefToolStrLeft(lo)
- lea.l .DefToolStrGG(pc),a0
- pea.l .DefToolStrTags(pc)
- move.l #TAG_MORE,-(sp)
- move.l gl_DefToolStr(gl),-(sp)
- move.l #GTST_String,-(sp)
- movea.l sp,a1
- bsr.w .CreateGad
- lea.l 4*4(sp),sp
- beq.w .Error
-
- move.w ow_DefToolStrTop(lo),d1
- addi.w #13-1,d1
- add.w ow_DefToolStrHeight(lo),d1 ;(TOP) bottom(DefToolStr)+13
- lea.l .AppIconGG(pc),a0
- tst.w gl_Mode(gl)
- beq.b .MenuModeCont
- lea.l .AppMenuItemGG(pc),a0
- .MenuModeCont move.w 4(a0),d0
- bsr.w .GetLength
- move.w d0,d2
- addi.w #36,d2 ; len(AppObject)+36
- moveq.l #16,d0 ; (LEFT) 16
- moveq.l #6,d3
- add.w tf_YSize(a2),d3 ; (HEIGHT) 6+FH
- movem.w d0-d3,ow_AppObjectLeft(lo)
- lea.l .AppObjectTags(pc),a1
- bsr.w .CreateGad
- beq.w .Error
-
- move.w .QuitGG+4(pc),d0
- bsr.w .GetLength
- addi.w #36,d0
- move.w d0,d2 ; (WIDTH) len(Quit)+36
- neg.w d0
- add.w ow_DefToolStrLeft(lo),d0 ; (LEFT) right(DefToolStr)
- add.w ow_DefToolStrWidth(lo),d0 ; ..-width(Quit)
- move.w ow_AppObjectTop(lo),d1 ; top(AppObject)
- move.w ow_AppObjectHeight(lo),d3 ; (HEIGHT) height(AppObject)
- lea.l .QuitGG(pc),a0
- lea.l .QuitTags(pc),a1
- bsr.w .CreateGad
- beq.w .Error
-
- moveq.l #-25-1,d0
- add.w ow_DefToolStrLeft(lo),d0
- add.w ow_DefToolStrWidth(lo),d0 ; right(DefToolStr)-25
- moveq.l #6,d1 ; 6
- moveq.l #26,d2 ; 26
- move.w tf_YSize(a2),d3
- addq.w #3,d3 ; FH+3
- lea.l .AutoTypeGG(pc),a0
- pea.l .AutoTypeTags(pc)
- move.l #TAG_MORE,-(sp)
- move.w gl_AutoType(gl),-(sp)
- clr.w -(sp)
- move.l #GTCB_Checked,-(sp)
- movea.l sp,a1
- bsr.w .CreateGad
- lea.l 4*4(sp),sp
- beq.w .Error
-
- movea.l sp,a2
- clr.l -(sp)
- pea.l .QuitMN(pc)
- pea.l .BarMN(pc)
- pea.l .AboutMN(pc)
- pea.l .BarMN(pc)
- lea.l .AppIconMN(pc),a0
- tst.w gl_Mode(gl)
- beq.b .MenuModeCont2
- lea.l .AppMenuItemMN(pc),a0
- .MenuModeCont2 move.l a0,-(sp)
- tst.l gl_Editor(gl)
- beq.b .DisEdit
- pea.l .EditMN(pc) ; Editor available
- bra.b .EditCont
- .DisEdit pea.l .DisEditMN(pc) ; no way, disable it
- .EditCont pea.l .ReparseMN(pc)
- pea.l .ProjectMN(pc)
- movea.l sp,a0
- bsr.w .CreateMenu
- movea.l a2,sp
- beq.w .Error
-
- slib Intui
- movea.l gl_PubScreen(gl),a0
- movea.l sp,a2
- pea.l .WinTags(pc)
- move.l #TAG_MORE,-(sp)
- move.l a0,-(sp)
- move.l #WA_PubScreen,-(sp)
- move.l gl_FirstGad(gl),-(sp)
- move.l #WA_Gadgets,-(sp)
- move.l gl_AppName(gl),-(sp)
- move.l #WA_Title,-(sp)
- moveq.l #0,d2
- move.b sc_WBorRight(a0),d2
- ext.w d2
- add.w ow_MaxWidth(lo),d2
- move.l d2,-(sp) ; \
- move.l #WA_MinWidth,-(sp) ; \
- addi.w #16,d2 ; \
- move.l d2,-(sp) ; \
- move.l #WA_Width,-(sp) ; \
- moveq.l #0,d3 ; \
- move.b sc_WBorBottom(a0),d3 ; \
- ext.w d3 ; /
- add.w ow_MaxHeight(lo),d3 ; /
- move.l d3,-(sp) ; /
- move.l #WA_MinHeight,-(sp) ; /
- addq.w #8,d3 ; /
- move.l d3,-(sp) ; /
- move.l #WA_Height,-(sp) ; /
- move.l d2,d0
- lsr.w #1,d0
- move.w d3,d1
- lsr.w #3,d1
- mulu.w #7,d1
- neg.w d0
- neg.w d1
- add.w sc_MouseX(a0),d0
- add.w sc_MouseY(a0),d1
- neg.w d2
- neg.w d3
- add.w sc_Width(a0),d2
- add.w sc_Height(a0),d3
- cmp.w d2,d0
- ble.b .LeftCont
- move.w d2,d0
- .LeftCont cmp.w d3,d1
- ble.b .TopCont
- move.w d3,d1
- .TopCont tst.w d0
- bge.b .LeftCont2
- moveq.l #0,d0
- .LeftCont2 tst.w d1
- bge.b .TopCont2
- moveq.l #0,d1
- .TopCont2 cmp.w d2,d0
- ble.b .LeftCont3
- move.l 7*4(sp),5*4(sp) ; Width = MitWidth
- .LeftCont3 cmp.w d3,d1
- ble.b .TopCont3
- move.l 3*4(sp),1*4(sp) ; Height = MinHeight
- .TopCont3 move.l d0,-(sp)
- move.l #WA_Left,-(sp)
- move.l d1,-(sp)
- move.l #WA_Top,-(sp)
- suba.l a0,a0
- movea.l sp,a1
- fjsr OpenWindowTagList
- movea.l a2,sp
- move.l d0,gl_Window(gl)
- beq.w .FontError
-
- clr.b gl_FreezeCnt(gl)
- moveq.l #-1,d0
- bsr.w _FreezeWin
- movea.l gl_Process(gl),a1
- move.l pr_WindowPtr(a1),gl_OldProcWin(gl)
- movea.l gl_Window(gl),a0
- move.l a0,pr_WindowPtr(a1)
- movea.l gl_MenuStrip(gl),a1
- fjsr SetMenuStrip
- tst.w d0
- beq.w .Error
- slib GTools
- movea.l gl_Window(gl),a0
- suba.l a1,a1
- fjsr GT_RefreshWindow
-
- getstr MSG_DROP_BOX ; a0
- move.w ow_ListViewLeft(lo),d0
- add.w ow_ListViewWidth(lo),d0
- addi.w #17-1,d0 ; right(ListView)+17
- move.w d0,d2
- move.w ow_ListViewTop(lo),d1
- addq.w #4,d1 ; top(ListView)+4
- neg.w d2
- add.w ow_DefToolStrLeft(lo),d2
- add.w ow_DefToolStrWidth(lo),d2 ; right(DefTStr)-right(LV)-16
- move.w ow_ListViewHeight(lo),d3
- subq.w #8,d3 ; height(ListView)-8
- bsr.w .DrawIconBox
- moveq.l #NG_HIGHLABEL,d4
- bsr.w .PrintText
-
- moveq.l #0,d0
- bsr.w _FreezeWin
- moveq.l #-1,d7 ; Okay
-
- ; In: d7.b = ReturnCode
- .CleanUp exec
- movea.l ow_TempRPort(lo),a1
- clr.l ow_TempRPort(lo)
- fjsr FreeVec
-
- move.l ow_TextFont(lo),d0
- beq.b .CUCont
- clr.l ow_TextFont(lo)
- slib Gfx
- movea.l d0,a1
- fjsr CloseFont
- .CUCont
- tst.b d7
- bgt.w .Restart
- lea.l ow_SIZEOF(sp),sp
- pull
- rts
-
- .FontError tst.w ow_FontRetry(lo)
- bne.b .Error ; ..already tried Topaz 8
- move.w #-1,ow_FontRetry(lo)
- moveq.l #1,d7
- bsr.w _CloseApp
- bra.b .CleanUp
-
- .Error bsr.w _CloseApp
- clr.w ow_FontRetry(lo)
- suba.l a2,a2
- getstr MSG_RETRY_CANCEL,a1
- getstr MSG_NO_WIN ; a0
- bsr.w _EasyReq
- move.l d0,d7
- bra.b .CleanUp
-
- ;-- CreateGadgetA aufrufen --
- ; In: a0 = (struct { ULONG Kind, UWORD TextID, UWORD GadgetID, ULONG Flags } *)
- ; a1 = &TagList, d0/d1/d2/d3.w = Left/Top/Width/Height
- ; Out: cc=eq, wenn Fehler; ow_PrevGad will be updated
-
- .CreateGad push
-
- slib GTools
- movea.l a1,a2 ; &TagList
- movea.l gl_PubScreen(gl),a1
- move.b sc_WBorLeft(a1),d4
- ext.w d4
- add.w d4,d0
- move.b sc_WBorTop(a1),d4
- ext.w d4
- addq.w #1,d4
- movea.l sc_Font(a1),a1
- add.w ta_YSize(a1),d4
- add.w d4,d1
-
- clr.l -(sp) ; ng_UserData
- movea.l gl_VisualInfo(gl),-(sp) ; ng_VisualInfo
- move.l 8(a0),-(sp) ; ng_Flags
- move.w 6(a0),-(sp) ; ng_GadgetID
- movea.l ow_TextAttr(lo),-(sp) ; ng_TextAttr
- clr.l -(sp) ; ng_GadgetText
- movem.w d0-d3,-(sp) ; ng_LeftEdge/TopEdge/Width/Height
- movea.l sp,a1 ; &NewGad
- move.l (a0),d1
- moveq.l #0,d0
- move.w 4(a0),d0
- blt.b .CGGCont
- bsr.w _GetCatString
- move.l a0,gng_GadgetText(a1)
- .CGGCont move.l d1,d0 ; Kind
- movea.l ow_PrevGad(lo),a0 ; &PreviousGG
- fjsr CreateGadgetA
- move.l d0,ow_PrevGad(lo) ; cc = ?
- beq.b .CGGExit
-
- movem.w gng_LeftEdge(sp),d0/d1
- add.w gng_Width(sp),d0
- add.w gng_Height(sp),d1
- cmp.w ow_MaxWidth(lo),d0
- blt.b .CGGWidthCont
- move.w d0,ow_MaxWidth(lo)
- .CGGWidthCont cmp.w ow_MaxHeight(lo),d1
- blt.b .CGGHeightCont
- move.w d1,ow_MaxHeight(lo)
- .CGGHeightCont
- exec
- moveq.l #ggi_SIZEOF,d0
- move.l #MEMF_PUBLIC!MEMF_CLEAR,d1
- fjsr AllocMem
- tst.l d0
- beq.b .CGGExit
- movea.l d0,a1
- move.l ow_PrevGad(lo),ggi_Gadget(a1)
- move.w gng_GadgetID(sp),ggi_GadgetID(a1)
- move.l gng_GadgetText(sp),d0
- beq.b .CGGInfoCont
- movea.l d0,a0
- bsr.w .GetUnderScore
- .CGGInfoCont lea.l ggi_UnderScore(a1),a0
- move.b d0,(a0)
- move.l a0,ggi_Node+LN_NAME(a1)
- lea.l gl_GadList(gl),a0
- ADDTAIL
-
- moveq.l #-1,d0
- .CGGExit lea.l gng_SIZEOF(sp),sp
- pull
- rts
-
- ;-- MenuStrip erstellen --
- ; In: a0 = &ArrayOfPtrn (STRUCT {UBYTE Type,UWORD LabelID,UWORD ID,UWORD Flax})
- ; (terminated by NULL-Ptr)
- ; Out: cc=eq, wenn Fehler, gl_MenuStrip = &MenuStrip (layoutet)
- ; gl_MenuStrings will be updated
-
- .CreateMenu push
- moveq.l #0,d7
- ;moveq.l #0,d3
- movea.l a0,a2
-
- moveq.l #0,d1
- moveq.l #1,d2 ; (AllocV needs at least1 byte)
- movea.l a2,a1
- .CMCntLoop addq.l #1,d1
- move.l (a1)+,d0
- beq.b .CMCntDone
- movea.l d0,a0
- moveq.l #0,d0
- move.w 2(a0),d0
- blt.b .CMCntLoop ; ..BarLabel
- bsr.w _GetCatString
- addq.l #3,d2 ; NULL-Byte, 2 Chars 4 ShortCut
- .CMCntLoop2 move.b (a0)+,d0
- beq.b .CMCntLoop
- cmpi.b #'_',d0
- beq.b .CMCntLoop2
- addq.l #1,d2
- bra.b .CMCntLoop2
- .CMCntDone ; d1= NumberOfNewMenus, d2 = SizeOfStrings
- exec
- move.l d1,d0
- mulu.w #gnm_SIZEOF,d0
- move.l #MEMF_PUBLIC!MEMF_CLEAR,d1
- fjsr AllocVec
- move.l d0,d3
- beq.w .CMCleanUp
- move.l d2,d0
- move.l #MEMF_PUBLIC!MEMF_CLEAR,d1
- fjsr AllocVec
- move.l d0,gl_MenuStrings(gl)
- beq.w .CMCleanUp
-
- movea.l d0,a3 ; a3 = &Strings
- movea.l d3,a1 ; a1 = &NewMenus
- .CMMakLoop move.l (a2)+,d0 ; a2 = &ArrayOfPtrn
- beq.b .CMMakDone
- movea.l d0,a0
- move.w 0(a0),gnm_Type(a1) ; nm_Type, nm_PAD
- move.l #NM_BARLABEL,gnm_Label(a1) ; defaults to BarLabel
- move.w 6(a0),gnm_Flags(a1) ; nm_Flags
- ;clr.l gnm_MutualExclude(a1) ; nm_MutualExclude
- move.w 4(a0),gnm_UserData+2(a1) ; nm_UserData
- moveq.l #0,d0
- move.w 2(a0),d0
- blt.b .CMMakNext ; ..BarLabel
- bsr.w _GetCatString
- bsr.w .GetUnderScore
- move.l a3,gnm_Label(a1) ; nm_Label
- .CMMakLoop2 move.b (a0)+,d1
- cmpi.b #'_',d1
- beq.b .CMMakLoop2 ; ..skip Underscores
- move.b d1,(a3)+ ; copy Label
- bne.b .CMMakLoop2
- move.b d0,(a3) ; copy Underscore
- beq.b .CMMakCont ; ..(no ShortCut)
- move.l a3,gnm_CommKey(a1) ; nm_CommKey
- .CMMakCont addq.l #2,a3
- .CMMakNext lea.l gnm_SIZEOF(a1),a1
- bra.b .CMMakLoop
- .CMMakDone ;move.b #NM_END,gnm_Type(a1) ; mark end of array
-
- clr.l -(sp)
- clr.l -(sp)
- moveq.l #-1,d0
- move.l d0,-(sp)
- move.l #GTMN_NewLookMenus,-(sp)
- slib GTools
- movea.l d3,a0
- movea.l sp,a1
- fjsr CreateMenusA
- lea.l 4*4(sp),sp
- move.l d0,gl_MenuStrip(gl)
- beq.b .CMCleanUp
- lea.l -4*4(sp),sp ; reuse TagList
- movea.l d0,a0
- movea.l gl_VisualInfo(gl),a1
- movea.l sp,a2
- fjsr LayoutMenusA
- lea.l 4*4(sp),sp
- tst.w d0
- beq.b .CMCleanUp
-
- moveq.l #-1,d7
- .CMCleanUp exec
- movea.l d3,a1
- fjsr FreeVec
- tst.b d7
- pull
- rts
-
- ;-- Länge eines Locale-Strings in Pixeln ermitteln --
- ; In: d0.w = StringID (limited to 64 chars!)
- ; Out: d0.w = Length
-
- .GetLength push d1-d7/a0-a7
- lea.l -64(sp),sp
-
- slib Gfx
- ext.l d0
- bsr.w _GetCatString
- movea.l a0,a1
- movea.l sp,a2
- moveq.l #0,d0
- .GLLoop cmpi.b #'_',(a1)+
- beq.b .GLLoop ; ..skip Underscores
- move.b -1(a1),(a2)+
- beq.b .GLCont
- addq.w #1,d0
- cmpi.b #64,d0
- blt.b .GLLoop
- .GLCont movea.l ow_TempRPort(lo),a1
- fjsr TextLength
-
- lea.l 64(sp),sp
- pull d1-d7/a0-a7
- rts
-
- ;-- UnderScore ermitteln --
- ; In: a0 = &GadgetText
- ; Out: d0.b = uppercase Char (NULL = no UnderScore)
-
- .GetUnderScore push d1-d7/a0-a7
- moveq.l #0,d0
-
- .GUSLoop move.b (a0)+,d0
- beq.b .GUSExit
- cmpi.b #'_',d0
- bne.b .GUSLoop
- move.b (a0),d0 ; UnderScore-Char
- beq.b .GUSExit
- bsr.w _UpperCase
-
- .GUSExit pull d1-d7/a0-a7
- rts
-
- ;-- IconDropBox zeichen --
- ; In: d0/d1/d2/d3.w = Left/Top/Width/Height
-
- .DrawIconBox push
- movea.l sp,a2
-
- slib GTools
- movea.l gl_PubScreen(gl),a0
- move.b sc_WBorLeft(a0),d4
- ext.w d4
- add.w d4,d0
- move.b sc_WBorTop(a0),d4
- ext.w d4
- addq.w #1,d4
- movea.l sc_Font(a0),a0
- add.w ta_YSize(a0),d4
- add.w d4,d1
-
- movea.l gl_Window(gl),a0
- movea.l wd_RPort(a0),a0
- clr.l -(sp)
- clr.l -(sp)
- move.l gl_VisualInfo(gl),-(sp)
- move.l #GT_VisualInfo,-(sp)
- movea.l sp,a1
- push d0-d3/a0
- fjsr DrawBevelBoxA
- pull d0-d3/a0
- addq.w #4,d0
- addq.w #2,d1
- subq.w #8,d2
- subq.w #4,d3
- move.l #-1,-(sp)
- move.l #GTBB_Recessed,-(sp)
- movea.l sp,a1
- fjsr DrawBevelBoxA
-
- movea.l a2,sp
- pull
- rts
-
- ;-- Text ausgeben --
- ; In: d0/d1/d2/d3.w = Left/Top/Width/Height
- ; a0 = &Text, d4.l = Flags (only NG_HIGHLABEL supported yet)
-
- .PrintText push
- lsr.w #1,d2
- lsr.w #1,d3
- add.w d0,d2 ; d2.w = LeftMiddle
- add.w d1,d3 ; d3.w = TopMiddle
- movea.l a0,a2
- movea.l gl_Window(gl),a3
- movea.l wd_RPort(a3),a3
-
- movea.l ow_TextFont(lo),a0
- movea.l a3,a1
- slib Gfx
- fjsr SetFont
- moveq.l #RP_JAM1,d0
- movea.l a3,a1
- fjsr SetDrMd
-
- movea.l gl_PubScreen(gl),a0
- move.b sc_WBorLeft(a0),d0
- ext.w d0
- add.w d0,d2
- move.b sc_WBorTop(a0),d0
- ext.w d0
- addq.w #1,d0
- movea.l sc_Font(a0),a0
- add.w ta_YSize(a0),d0
- add.w d0,d3
-
- movea.l gl_PubScreen(gl),a0
- slib Intui
- fjsr GetScreenDrawInfo
- movea.l d0,a1
- movea.l dri_Pens(a1),a0
- moveq.l #TEXTPEN*2,d0
- andi.l #NG_HIGHLABEL,d4
- beq.b .PTColorCont
- moveq.l #HIGHLIGHTTEXTPEN*2,d0
- .PTColorCont move.w (a0,d0.w),d4 ; d4.w = TextColor
- movea.l gl_PubScreen(gl),a0
- fjsr FreeScreenDrawInfo
- move.b d4,d0
- movea.l a3,a1
- slib Gfx
- fjsr SetAPen
-
- movea.l ow_TextFont(lo),a0
- movea.l a2,a1
- moveq.l #-2,d0
- .PTLinesNew add.w tf_YSize(a0),d0
- addq.w #2,d0
- .PTLinesLoop move.b (a1)+,d1
- beq.b .PTLinesCont
- cmpi.b #$0A,d1
- bne.b .PTLinesLoop
- bra.b .PTLinesNew
- .PTLinesCont lsr.w #1,d0
- sub.w d0,d3
- add.w tf_Baseline(a0),d3 ; d3.w = RealTopEdge
-
- .PTPrintLoop movea.l a2,a0
- movea.l a3,a1
- moveq.l #-1,d0
- .PTPrintLoop2 addq.w #1,d0
- move.b (a2)+,d1
- beq.b .PTPrintCont
- cmpi.b #$0A,d1
- bne.b .PTPrintLoop2
- .PTPrintCont push d0/a0/a1
- fjsr TextLength
- asr.w #1,d0
- neg.w d0
- add.w d2,d0
- move.w d3,d1
- movea.l a3,a1
- fjsr Move ;Any Mountain; The Shamen r cool...
- pull d0/a0/a1
- fjsr Text
- movea.l ow_TextFont(lo),a0
- add.w tf_YSize(a0),d3
- addq.w #2,d3
- tst.b -1(a2)
- bne.b .PTPrintLoop
-
- pull
- rts
-
- ;- - - - - - - - - - - - - - - - - - -
-
- .EmptyTags dc.l TAG_DONE,0
-
- .ListViewGG dc.l LISTVIEW_KIND ; GadTools-Kind
- dc.w MSG_TYPES,ID_LISTVIEW ; ng_GadgetTextID, ng_GadgetID
- dc.l PLACETEXT_ABOVE!NG_HIGHLABEL ; ng_Flags
- .ListViewTags dc.l GTLV_ReadOnly,0
- dc.l GTLV_ShowSelected,0
- dc.l GTLV_ScrollWidth,20
- dc.l LAYOUTA_Spacing,2
- dc.l TAG_DONE,0
-
- .DefToolChkGG dc.l CHECKBOX_KIND
- dc.w MSG_DEFAULT_TOOL,ID_DEFTOOLCHK
- dc.l PLACETEXT_LEFT
- .DefToolChkTags dc.l GT_Underscore,'_'
- dc.l GTCB_Scaled,-1
- dc.l TAG_DONE,0
-
- .DefToolStrGG dc.l STRING_KIND
- dc.w -1,ID_DEFTOOLSTR
- dc.l 0
- .DefToolStrTags dc.l GTST_MaxChars,DefToolStrLen-1
- dc.l GA_TabCycle,0 ; we have only one Gadget
- dc.l TAG_DONE,0
-
- .AppIconGG dc.l BUTTON_KIND
- dc.w MSG_APPICON,ID_APPOBJECT
- dc.l PLACETEXT_IN
- .AppMenuItemGG dc.l BUTTON_KIND
- dc.w MSG_APPMENUITEM,ID_APPOBJECT
- dc.l PLACETEXT_IN
- .AppObjectTags dc.l GT_Underscore,'_'
- dc.l TAG_DONE,0
-
- .QuitGG dc.l BUTTON_KIND
- dc.w MSG_QUIT,ID_QUIT
- dc.l PLACETEXT_IN
- .QuitTags dc.l GT_Underscore,'_'
- dc.l TAG_DONE,0
-
- .AutoTypeGG dc.l CHECKBOX_KIND
- dc.w MSG_AUTOTYPE,ID_AUTOTYPE
- dc.l PLACETEXT_LEFT
- .AutoTypeTags dc.l GT_Underscore,'_'
- dc.l GTCB_Scaled,-1
- dc.l TAG_DONE,0
-
- .ProjectMN dc.b NM_TITLE,0 ; nm_Type, PAD
- dc.w MSG_PROJECT,ID_PROJECT ; nm_LabelID, nm_UserData (=ID)
- dc.w 0 ; nm_Flags
-
- .ReparseMN dc.b NM_ITEM,0
- dc.w MSG_REPARSE,ID_REPARSE
- dc.w 0
-
- .EditMN dc.b NM_ITEM,0
- dc.w MSG_EDIT,ID_EDIT
- dc.w 0
-
- .DisEditMN dc.b NM_ITEM,0
- dc.w MSG_EDIT,ID_EDIT
- dc.w NM_ITEMDISABLED
-
- .AppIconMN dc.b NM_ITEM,0
- dc.w MSG_APPICON,ID_APPOBJECT
- dc.w 0
-
- .AppMenuItemMN dc.b NM_ITEM,0
- dc.w MSG_APPMENUITEM,ID_APPOBJECT
- dc.w 0
-
- .BarMN dc.b NM_ITEM,0
- dc.w -1,-1
- dc.w 0
-
- .AboutMN dc.b NM_ITEM,0
- dc.w MSG_ABOUT,ID_ABOUT
- dc.w 0
-
- .QuitMN dc.b NM_ITEM,0
- dc.w MSG_QUIT,ID_QUIT
- dc.w 0
-
- .WinTags dc.l WA_DragBar,-1
- dc.l WA_DepthGadget,-1
- dc.l WA_CloseGadget,-1
- dc.l WA_Activate,-1
- dc.l WA_SmartRefresh,-1
- * dc.l WA_RMBTrap,-1
- dc.l WA_PubScreenFallBack,-1
- dc.l WA_AutoAdjust,0
- dc.l WA_MaxWidth,~0
- dc.l WA_MaxHeight,~0
- dc.l WA_NewLookMenus,-1
- dc.l TAG_DONE,0
-
- ;;-- Zeichen in Großbuchstaben umwandeln -------------------
- ; In: d0.b = Char
- ; Out: d0.b = UpperCase( Char )
-
- _UpperCase push d1-d7/a0-a7
-
- move.l gl_Locale(gl),d1
- beq.b .NoLocale
- slib Locale
- movea.l d1,a0
- andi.l #$FF,d0
- fjsr ConvToUpper
- bra.b .Exit
-
- .NoLocale cmpi.b #'a',d0
- blt.b .Exit
- cmpi.b #'z',d0
- bgt.b .Exit
- bclr.l #5,d0 ; nice ToUpper method :-)
-
- .Exit pull d1-d7/a0-a7
- rts
-
- ;;-- Nodes für Typen allokieren, in Liste verankern -------
- ; Out: cc=eq, wenn Fehler
-
- _AllocTypes push
- bsr.w _FreeTypes ; Make sure that List is empty
-
- slib WhatIs
- fjsr FirstType
- move.l d0,d2
- .Loop slib WhatIs
- movea.l d2,a0
- fjsr NextType
- move.l d0,d2
- beq.w .Done
- cmpi.l #TYPE_UNKNOWNFILETYPE,d2
- beq.b .Done
- movea.l d2,a0
- fjsr GetIconName
- tst.l d0
- beq.b .Loop ; ..no ICONNAME keyword
- movea.l d2,a0
- fjsr GetIDString
- movea.l d0,a2
- exec
- moveq.l #fti_SIZEOF,d0
- move.l #MEMF_PUBLIC!MEMF_CLEAR,d1
- fjsr AllocMem
- tst.l d0
- beq.b .Error
-
- movea.l d0,a1
- move.l a2,fti_Node+LN_NAME(a1)
- move.l d2,fti_Type(a1)
- movea.l gl_TypeList+LH_HEAD(gl),a0
- .AlphaLoop move.l fti_Node+LN_SUCC(a0),d3
- beq.b .AlphaCont
- movea.l fti_Node+LN_NAME(a0),a2
- movea.l fti_Node+LN_NAME(a1),a3
- .AlphaLoop2 move.b (a2)+,d0
- beq.b .AlphaNext
- move.b (a3)+,d1
- beq.b .AlphaCont
- ori.b #$20,d0
- ori.b #$20,d1
- cmp.b d0,d1
- beq.b .AlphaLoop2
- blt.b .AlphaCont
- .AlphaNext movea.l d3,a0
- bra.b .AlphaLoop
- .AlphaCont move.l a0,fti_Node+LN_SUCC(a1) ; insert new before old
- movea.l fti_Node+LN_PRED(a0),a2
- move.l a2,fti_Node+LN_PRED(a1)
- move.l a1,fti_Node+LN_PRED(a0)
- move.l a1,fti_Node+LN_SUCC(a2)
- addq.w #1,gl_NumType(gl)
- bra.w .Loop
-
- .Done moveq.l #-1,d0
- .Exit pull
- bgt.w _AllocTypes ; ..Retry
- rts
-
- .Error suba.l a2,a2
- getstr MSG_RETRY_CANCEL,a1
- getstr MSG_NO_TYPES ; a0
- bsr.w _EasyReq
- ;tst.l d0
- bra.b .Exit
-
- ;;-- Typen-Nodes freigeben --------------------------------
-
- _FreeTypes push
-
- exec
- movea.l gl_TypeList+LH_HEAD(gl),a2
- .Loop move.l fti_Node+LN_SUCC(a2),d2
- beq.b .Done
- movea.l a2,a1
- REMOVE
- movea.l a2,a1
- moveq.l #fti_SIZEOF,d0
- fjsr FreeMem
- movea.l d2,a2
- bra.b .Loop
- .Done
- clr.w gl_NumType(gl)
- pull
- rts
-
- ;;-- GadTools/IDCMP-Messages auswerten --------------------
- ; Out: cc=eq, wenn Fehler (OpenWindow() and stuff)
- ; cc=gt, wenn "Quit" gewählt
- ; Handles case that no window opened!
-
- _ProcessGTools push
-
- move.l gl_Window(gl),d0
- beq.b .Okay
- movea.l d0,a0
- move.l wd_UserPort(a0),d0
- beq.b .Okay
- movea.l d0,a4
- .MsgLoop slib GTools
- movea.l a4,a0
- fjsr GT_GetIMsg
- movea.l d0,a1
- tst.l d0
- beq.b .Okay ; ..no more messys
- move.l im_Class(a1),d0
- move.w im_Code(a1),d1
- move.w im_Qualifier(a1),d2
- move.l im_IAddress(a1),a0
- push d0/d1/a0
- fjsr GT_ReplyIMsg
- pull d0/d1/a0
- cmpi.l #IDCMP_CLOSEWINDOW,d0
- beq.b .Quit
- cmpi.l #IDCMP_GADGETUP,d0
- beq.b .GadgetUp
- cmpi.l #IDCMP_MENUPICK,d0
- beq.w .MenuPick
- cmpi.l #IDCMP_VANILLAKEY,d0
- beq.w .VanillaKey
- cmpi.l #IDCMP_RAWKEY,d0
- beq.w .RawKey
- bra.b .MsgLoop
-
- .Okay moveq.l #-1,d7
- .Exit tst.b d7
- pull
- rts
-
- .Quit moveq.l #1,d7
- bra.b .Exit
-
- .AppObject bsr.w _CloseApp
- clr.w gl_PopUp(gl)
- bsr.w _OpenApp
- sne.b d7
- bra.b .Exit
-
- .GadgetUp move.w gg_GadgetID(a0),d3
- cmpi.w #ID_APPOBJECT,d3
- beq.b .AppObject
- cmpi.w #ID_QUIT,d3
- beq.b .Quit
- pea.l .MsgLoop(pc)
- cmpi.w #ID_LISTVIEW,d3
- beq.b .ListView
- cmpi.w #ID_DEFTOOLCHK,d3
- beq.b .DefToolChk
- cmpi.w #ID_DEFTOOLSTR,d3
- beq.w .DefToolStr
- cmpi.w #ID_AUTOTYPE,d3
- beq.w .AutoType
- rts
-
- ; In: d1.w = SelectID
- .ListView move.w d1,gl_Type(gl)
- moveq.l #ID_DEFTOOLCHK,d0
- bsr.w _GetGadget
- movea.l gl_Window(gl),a1
- suba.l a2,a2
- clr.l -(sp)
- clr.l -(sp)
- clr.l -(sp)
- move.l #GTCB_Checked,-(sp)
- movea.l sp,a3
- move.l a0,-(sp)
- slib GTools
- fjsr GT_SetGadgetAttrsA
- movea.l (sp)+,a0
- lea.l 4*4(sp),sp
- bsr.b .DefToolChk
- moveq.l #ID_AUTOTYPE,d0
- bsr.w _GetGadget
- movea.l gl_Window(gl),a1
- suba.l a2,a2
- clr.l -(sp)
- clr.l -(sp)
- clr.l -(sp)
- move.l #GTCB_Checked,-(sp)
- movea.l sp,a3
- move.l a0,-(sp)
- slib GTools
- fjsr GT_SetGadgetAttrsA
- movea.l (sp)+,a0
- lea.l 4*4(sp),sp
- bra.b .AutoType
-
- ; In: a0 = &Gadget
- .DefToolChk move.w gg_Flags(a0),d0
- andi.w #GFLG_SELECTED,d0
- move.w d0,gl_DefTool(gl)
- beq.b .DTCExit
- moveq.l #ID_DEFTOOLSTR,d0
- bsr.w _GetGadget
- slib Intui
- movea.l gl_Window(gl),a1
- suba.l a2,a2
- fjsr ActivateGadget
- .DTCExit rts
-
- .DefToolStr moveq.l #ID_DEFTOOLCHK,d0
- bsr.w _GetGadget
- move.w gg_Flags(a0),d0
- andi.w #GFLG_DISABLED,d0
- bne.b .DTSExit
- movea.l gl_Window(gl),a1
- suba.l a2,a2
- clr.l -(sp)
- clr.l -(sp)
- moveq.l #-1,d0
- move.w d0,gl_DefTool(gl)
- move.l d0,-(sp)
- move.l #GTCB_Checked,-(sp)
- movea.l sp,a3
- slib GTools
- fjsr GT_SetGadgetAttrsA
- lea.l 4*4(sp),sp
- .DTSExit rts
-
- ; In: a0 = &Gadget
- .AutoType clr.l -(sp)
- clr.l -(sp)
- move.w gg_Flags(a0),d0
- andi.w #GFLG_SELECTED,d0
- move.w d0,gl_AutoType(gl)
- beq.b .AutoOff
- .AutoOn clr.w gl_DefTool(gl)
- clr.l -(sp)
- move.l #GTCB_Checked,-(sp)
- moveq.l #-1,d0
- move.l d0,-(sp)
- move.l #GA_Disabled,-(sp)
- moveq.l #24,d2
- .AutoAction moveq.l #ID_DEFTOOLCHK,d0
- bsr.w _GetGadget
- movea.l gl_Window(gl),a1
- suba.l a2,a2
- movea.l sp,a3
- move.l a0,-(sp)
- slib GTools
- fjsr GT_SetGadgetAttrsA
- movea.l (sp)+,a0
- lea.l (sp,d2.w),sp
- bra.w .DefToolChk
- .AutoOff clr.l -(sp)
- move.l #GA_Disabled,-(sp)
- moveq.l #16,d2
- bra.b .AutoAction
-
- .RawKey pea.l .MsgLoop(pc)
- tst.b d1
- blt.b .RawKeyExit ; key released
- cmpi.w #RAW_CURSORUP,d1
- beq.b .CursorUp
- cmpi.w #RAW_CURSORDOWN,d1
- beq.b .CursorDown
- .RawKeyExit rts
-
- .CursorDown moveq.l #1,d1
- move.w d2,d0
- andi.w #IEQUALIFIER_SHIFT,d0
- beq.b .CDCont
- moveq.l #6,d1
- tst.w gl_Type(gl)
- bge.b .CDCont
- addq.w #1,d1
- .CDCont andi.w #IEQUALIFIER_ALT,d2
- beq.b .CDCont2
- move.w #$4000,d1
- .CDCont2 bra.b .CursorAction
-
- .CursorUp moveq.l #-1,d1
- move.w d2,d0
- andi.w #IEQUALIFIER_SHIFT,d0
- beq.b .CUCont
- moveq.l #-6,d1
- .CUCont andi.w #IEQUALIFIER_ALT,d2
- beq.b .CUCont2
- move.w #$8001,d1
- .CUCont2
- ; In: d1.w = TypeAdd
- .CursorAction add.w gl_Type(gl),d1
- bge.b .CACont
- moveq.l #0,d1
- .CACont cmp.w gl_NumType(gl),d1
- blt.b .CACont2
- move.w gl_NumType(gl),d1
- beq.b .CACont2
- subq.w #1,d1
- .CACont2 moveq.l #ID_LISTVIEW,d0
- bsr.w _GetGadget
- movea.l gl_Window(gl),a1
- suba.l a2,a2
- clr.l -(sp)
- clr.l -(sp)
- move.w d1,-(sp)
- clr.w -(sp)
- move.l #GTLV_Selected,-(sp)
- move.w d1,-(sp)
- clr.w -(sp)
- move.l #GTLV_Top,d0
- tst.w gl_OS3(gl)
- beq.b .CACont3
- move.l #GTLV_MakeVisible,d0
- .CACont3 move.l d0,-(sp) ; OS3.0+ = MakeVisible, OS2=Top
- movea.l sp,a3
- slib GTools
- move.w d1,-(sp)
- fjsr GT_SetGadgetAttrsA
- move.w (sp)+,d1
- lea.l 6*4(sp),sp
- bra.w .ListView
-
- .VanillaKey cmpi.b #' ',d1
- beq.w .VKSpace
- move.b d1,d0
- bsr.w _UpperCase
- lsl.w #8,d0
- move.w d0,-(sp)
- exec
- movea.l sp,a1
- lea.l gl_GadList(gl),a0
- fjsr FindName
- addq.l #2,sp
- tst.l d0
- beq.w .MsgLoop
-
- movea.l d0,a0
- move.w ggi_GadgetID(a0),d3
- movea.l ggi_Gadget(a0),a0
- cmpi.w #ID_APPOBJECT,d3
- beq.w .AppObject
- cmpi.w #ID_QUIT,d3
- beq.w .Quit
- pea.l .MsgLoop(pc)
- cmpi.w #ID_DEFTOOLCHK,d3
- beq.b .VKDefToolChk
- cmpi.w #ID_AUTOTYPE,d3
- beq.b .VKAutoType
- rts
-
- .VKDefToolChk move.w gg_Flags(a0),d0
- andi.w #GFLG_DISABLED,d0
- bne.b .VKDTCExit
- movea.l gl_Window(gl),a1
- suba.l a2,a2
- clr.l -(sp)
- clr.l -(sp)
- moveq.l #0,d0
- tst.w gl_DefTool(gl)
- seq.b d0
- move.l d0,-(sp)
- move.l #GTCB_Checked,-(sp)
- movea.l sp,a3
- slib GTools
- move.l a0,-(sp)
- fjsr GT_SetGadgetAttrsA
- movea.l (sp)+,a0
- lea.l 4*4(sp),sp
- bra.w .DefToolChk
- .VKDTCExit rts
-
- ; In: a0 = &Gadget
- .VKAutoType movea.l gl_Window(gl),a1
- suba.l a2,a2
- clr.l -(sp)
- clr.l -(sp)
- moveq.l #0,d0
- tst.w gl_AutoType(gl)
- seq.b d0
- move.l d0,-(sp)
- move.l #GTCB_Checked,-(sp)
- movea.l sp,a3
- slib GTools
- move.l a0,-(sp)
- fjsr GT_SetGadgetAttrsA
- movea.l (sp)+,a0
- lea.l 4*4(sp),sp
- bra.w .AutoType
-
- .VKSpace moveq.l #ID_DEFTOOLSTR,d0
- bsr.w _GetGadget
- slib Intui
- movea.l gl_Window(gl),a1
- suba.l a2,a2
- fjsr ActivateGadget
- bra.w .MsgLoop
-
- .MenuPick move.b d1,d0
- andi.b #$1F,d0
- cmpi.b #NOMENU,d0
- beq.w .MsgLoop
- move.w d1,d0
- lsr.w #5,d0
- andi.b #$3F,d0
- cmpi.b #NOITEM,d0
- beq.w .MsgLoop
- move.w d1,d0
- movea.l gl_MenuStrip(gl),a0
- slib Intui
- fjsr ItemAddress
- tst.l d0
- beq.w .MsgLoop
-
- movea.l d0,a0
- move.w mi_SIZEOF+2(a0),d3
- cmpi.w #ID_QUIT,d3
- beq.w .Quit
- cmpi.w #ID_APPOBJECT,d3
- beq.w .AppObject
- cmpi.w #ID_ABOUT,d3
- beq.b .About
- cmpi.w #ID_REPARSE,d3
- beq.b .Reparse
- cmpi.w #ID_EDIT,d3
- beq.w .Edit
- bra.w .MsgLoop
-
- .About suba.l a2,a2
- getstr MSG_OKAY,a1
- getstr MSG_INFORMATION ; a0
- bsr.w _EasyReq
- bra.w .Okay
-
- .Reparse moveq.l #~0,d0
- bsr.b .ReRefresh ; detach items
- moveq.l #-1,d0
- bsr.w _FreezeWin
- bsr.w _FreeTypes
- slib WhatIs
- moveq.l #-1,d0 ; BOOL Now
- fjsr AskReparse
- tst.l d0
- beq.b .ReCont
- bsr.w _Beep
- .ReCont bsr.w _AllocTypes
- sne.b d7
- moveq.l #0,d0
- bsr.w _FreezeWin
- tst.b d7
- beq.w .Exit ; ..AllocTypes failed
- lea.l gl_TypeList(gl),a0
- move.l a0,d0
- bsr.b .ReRefresh ; re-install items
-
- clr.w gl_AutoType(gl)
- moveq.l #ID_AUTOTYPE,d0
- bsr.w _GetGadget
- bsr.w .VKAutoType ; Auto-Type on!
- moveq.l #ID_LISTVIEW,d0
- bsr.w _GetGadget
- movea.l gl_Window(gl),a1
- suba.l a2,a2
- clr.l -(sp)
- clr.l -(sp)
- moveq.l #~0,d0
- move.w d0,gl_Type(gl)
- move.l d0,-(sp)
- move.l #GTLV_Selected,-(sp)
- movea.l sp,a3
- slib GTools
- fjsr GT_SetGadgetAttrsA ; no selection
- lea.l 4*4(sp),sp
- bra.w .Exit
-
- ; In: d0 = &LabelList or ~0
- .ReRefresh push
- moveq.l #ID_LISTVIEW,d0
- bsr.w _GetGadget
- movea.l gl_Window(gl),a1
- suba.l a2,a2
- clr.l -(sp)
- clr.l -(sp)
- move.l 8(sp),-(sp)
- move.l #GTLV_Labels,-(sp)
- movea.l sp,a3
- slib GTools
- fjsr GT_SetGadgetAttrsA ; detach items
- lea.l 4*4(sp),sp
- pull
- rts
-
- .Edit moveq.l #-1,d0
- bsr.w _FreezeWin
- slib DOS
- movea.l gl_Editor(gl),a2
- move.w gl_EditorLen(gl),d3
- clr.b (a2,d3.w)
- move.l a2,d1
- moveq.l #ACCESS_READ,d2
- fjsr Lock
- move.l d0,d4
- beq.b .EdError
- clr.l -(sp)
- clr.l -(sp)
- move.l a2,d1
- move.b #' ',(a2,d3.w)
- move.l sp,d2
- slib DOS
- fjsr SystemTagList
- addq.l #8,sp
- move.l d0,d2
- moveq.l #RETURN_ERROR,d0
- cmp.l d0,d2
- blo.b .EdCont
- bsr.w _Beep
- .EdCont move.l d4,d1
- fjsr UnLock
- moveq.l #0,d0
- bsr.w _FreezeWin
- tst.l d2
- beq.w .Reparse
- bra.w .Okay
-
- ; In: a2 = &terminated gl_Editor
- .EdError getstr MSG_OKAY,a1
- getstr MSG_EDITOR_FAILED ; a0
- move.l a2,-(sp)
- movea.l sp,a2
- bsr.w _EasyReq
- movea.l (sp)+,a2
- bra.b .EdCont
-
- ;-- Gadget-Adresse besorgen -------------------------------
- ; In: d0.w = GadgetID
- ; Out: a0 = &GGAddress or NULL
-
- _GetGadget push d0-d7/a1-a7
-
- movea.l gl_GadList+LH_HEAD(gl),a1
- .GGLoop move.l ggi_Node+LN_SUCC(a1),a0
- move.l a0,d1
- beq.b .GGExit
- exg.l a0,a1
- cmpi.w ggi_GadgetID(a0),d0
- movea.l ggi_Gadget(a0),a0
- bne.b .GGLoop
-
- .GGExit pull d0-d7/a1-a7
- rts
-
- ;;-- AppMessage bearbeiten --------------------------------
- ; In: a1 = &AppMsg
- ; Out: cc=eq, wenn Fehler (OpenWindow() etc.)
-
- _ProcessApp push
- move.l am_NumArgs(a1),d2
- movea.l am_ArgList(a1),a2
-
- move.w am_Type(a1),d0
- cmpi.w #MTYPE_APPWINDOW,d0
- beq.b .GoodMsg
- cmpi.w #MTYPE_APPMENUITEM,d0
- beq.b .GoodMsg
- cmpi.w #MTYPE_APPICON,d0
- bne.b .Okay ; ..Msg uninteressant
- .GoodMsg
- tst.l d2
- ble.b .PopUp
- moveq.l #-1,d0
- bsr.w _FreezeWin
- bsr.w _CopyStrBuf
- tst.w gl_AutoType(gl)
- bne.b .CIAutoType
-
- moveq.l #0,d3
- move.w gl_Type(gl),d0
- move.l gl_TypeList+LH_HEAD(gl),d1
- .CITypeLoop movea.l d1,a0
- move.l LN_SUCC(a0),d1
- beq.b .CITypeErr ; ..well, shouldn't happen
- dbra d0,.CITypeLoop
- movea.l fti_Type(a0),a0
- slib WhatIs
- fjsr GetIconName
- tst.l d0
- beq.b .CITypeErr
- movea.l d0,a0
- bsr.b .GetIcon ; GetDiskObject() with paths
- move.l d0,d3
- beq.b .CITypeErr
- movea.l a2,a1
- movea.l d3,a0
- .CITypeLoop2 bsr.w .PerformChange
- addq.l #wa_SIZEOF,a1
- subq.l #1,d2
- bgt.b .CITypeLoop2
- bra.b .CITypeFree
- .CITypeErr bsr.w _Beep
- .CITypeFree tst.l d3
- beq.b .CIDone
- movea.l d3,a0
- slib Icon
- fjsr FreeDiskObject
- bra.b .CIDone
-
- .CIAutoType suba.l a0,a0
- movea.l a2,a1
- .CIAutoLoop bsr.w .PerformChange
- addq.l #wa_SIZEOF,a1
- subq.l #1,d2
- bgt.b .CIAutoLoop
-
- .CIDone moveq.l #0,d0
- bsr.w _FreezeWin
- ;||
- .Okay moveq.l #-1,d0
- .Exit pull
- rts
-
- .PopUp tst.w gl_PopUp(gl)
- bne.b .Exit ; ..already popped up
- bsr.w _CloseApp
- move.w #-1,gl_PopUp(gl)
- bsr.w _OpenApp ; (cc gesetzt)
- bra.b .Exit
-
- ;-- GetDiskObject() in several paths --
- ; In: a0 = &Name
- ; Out: d0 = &DiskObject or NULL
-
- .GetIcon push d1-d7/a0-a7
- movea.l a0,a2
-
- move.l gl_IconDir(gl),d1
- beq.b .GICont
- bsr.b .GITry ; 1) check IconDir
- bne.b .GIExit
- .GICont slib Icon
- movea.l a2,a0
- fjsr GetDiskObject ; 2) check current dir
- tst.l d0
- bne.b .GIExit
- lea.l .GIDef1(pc),a0
- move.l a0,d1
- bsr.b .GITry ; 3) check ENV:Sys/
- bne.b .GIExit
- lea.l .GIDef2(pc),a0
- move.l a0,d1
- bsr.b .GITry ; 4) check ENVARC:Sys/
-
- .GIExit pull d1-d7/a0-a7
- rts
-
- ; In: d1 = &DirName, a2 = &IconName
- ; Out: cc=d0 = &DiskObject or NULL
- .GITry push d1-d7/a0-a7
- moveq.l #ACCESS_READ,d2
- slib DOS
- fjsr Lock
- move.l d0,d2
- beq.b .GITExit
- move.l d2,d1
- fjsr CurrentDir
- move.l d0,d3
- slib Icon
- movea.l a2,a0
- fjsr GetDiskObject
- move.l d0,-(sp)
- slib DOS
- move.l d3,d1
- fjsr CurrentDir
- move.l d2,d1
- fjsr UnLock
- move.l (sp)+,d0
- .GITExit pull d1-d7/a0-a7
- rts
-
- ;-- Icon wechseln --
- ; In: a0 = &DiskObject or NULL (then AutoType MUST BE TRUE), a1 = &WBArg
- .PerformChange push
- move.l a0,d4
- movea.l a1,a2
-
- move.l gl_PathBuffer(gl),d2
- movea.l d2,a0
- move.l #PathBufferLen-1,d0 ; they didn't say that
- .PCClearLoop clr.b (a0)+ ; AddPart() puts a
- dbra d0,.PCClearLoop ; NULL-Byte at the end!
- slib DOS
- move.l wa_Lock(a2),d1
- move.l #PathBufferLen-5,d3 ; noch Platz für "disk"
- fjsr NameFromLock ; get full path-name
- tst.w d0
- beq.w .PCIoErr
- move.l d2,d1
- move.l wa_Name(a2),d2
- ; d3 is still valid
- fjsr AddPart ; add file-name
- tst.w d0
- beq.w .PCIoErr
-
- tst.l d4
- bne.b .PCAutoCont
- slib WhatIs
- movea.l gl_PathBuffer(gl),a0
- lea.l .WhatIsTags(pc),a1
- fjsr WhatIs ; (DEEP-Mode)
- tst.l d0
- beq.b .PCErr
- cmpi.l #TYPE_UNKNOWNFILETYPE,d0
- beq.b .PCErr
- movea.l d0,a0
- fjsr GetIconName
- tst.l d0
- beq.b .PCErr
- movea.l d0,a0
- bsr.w .GetIcon
- move.l d0,d4
- beq.b .PCIoErr
- .PCAutoCont
- move.l gl_PathBuffer(gl),d0
- movea.l d0,a0
- .PCSeekLoop tst.b (a0)+
- bne.b .PCSeekLoop
- subq.l #1,a0
- cmp.l a0,d0
- beq.b .PCVolume
- cmpi.b #':',-1(a0)
- beq.b .PCVolume
- cmpi.b #'/',-(a0)
- bne.b .PCNameCont
- clr.b (a0) ; delete "/"
- bra.b .PCNameCont
- .PCVolume move.b #'d',(a0)+
- move.b #'i',(a0)+
- move.b #'s',(a0)+
- move.b #'k',(a0)+
- clr.b (a0)
- .PCNameCont
- slib Icon
- movea.l gl_PathBuffer(gl),a0
- movea.l d4,a1
- tst.w gl_DefTool(gl)
- beq.b .PCPutCont
- move.l gl_DefToolStr(gl),do_DefaultTool(a1)
- .PCPutCont fjsr PutDiskObject
- tst.w d0
- bne.b .PCCont
- .PCIoErr slib DOS
- fjsr IoErr
- move.l d0,gl_Result2(gl)
- .PCErr bsr.w _Beep
- .PCCont
- tst.w gl_AutoType(gl)
- beq.b .PCExit
- tst.l d4
- beq.b .PCExit
- movea.l d4,a0
- slib Icon
- fjsr FreeDiskObject
-
- .PCExit pull
- rts
-
- .WhatIsTags dc.l WI_Deep,DEEPTYPE
- dc.l TAG_DONE,0
-
- .GIDef1 dc.b 'ENV:Sys/',0
- .GIDef2 dc.b 'ENVARC:Sys/',0
- even
-
- ;;-- Window "einfrieren" und "auftauen" -------------------
- ; In: d0.b = Freeze (TRUE = einfrieren, FALSE = auftauen)
- ; Handles case that there's no window!
-
- _FreezeWin push
- tst.l gl_Window(gl)
- beq.w .Exit
- slib Intui
-
- tst.b d0
- beq.b .Tauen
- .Frieren tst.b gl_FreezeCnt(gl)
- bne.b .FrCont
- movea.l gl_Request(gl),a0
- fjsr InitRequester
- movea.l gl_Request(gl),a0
- movea.l gl_Window(gl),a1
- fjsr Request
- movea.l gl_Window(gl),a0
- tst.w gl_OS3(gl)
- bne.b .FrOS3
- .FrOld movea.l gl_Pointer(gl),a1
- moveq.l #PTR_HEIGHT,d0
- moveq.l #PTR_WIDTH,d1
- moveq.l #PTR_XOFFSET,d2
- moveq.l #PTR_YOFFSET,d3
- fjsr SetPointer ; SetPointer()
- bra.b .FrCont2
- .FrOS3 clr.l -(sp)
- clr.l -(sp)
- moveq.l #-1,d0
- move.l d0,-(sp)
- move.l #WA_BusyPointer,-(sp)
- movea.l sp,a1
- fjsr SetWindowPointerA ; OS3.0+: SetWinPtrA()
- lea.l 4*4(sp),sp
- .FrCont2 movea.l gl_Window(gl),a0
- moveq.l #0,d0
- fjsr ModifyIDCMP
- .FrCont addq.b #1,gl_FreezeCnt(gl)
- bra.b .Exit
-
- .Tauen subq.b #1,gl_FreezeCnt(gl)
- bne.b .TaCont
- movea.l gl_Window(gl),a0
- tst.w gl_OS3(gl)
- bne.b .TaOS3
- .TaOld fjsr ClearPointer ; ClearPointer()
- bra.b .TaCont2
- .TaOS3 clr.l -(sp)
- clr.l -(sp)
- movea.l sp,a1
- fjsr SetWindowPointerA ; OS3.0+: SetWinPtrA()
- addq.l #8,sp
- .TaCont2 movea.l gl_Request(gl),a0
- movea.l gl_Window(gl),a1
- fjsr EndRequest
- movea.l gl_Window(gl),a0
- move.l #MYIDCMP,d0
- fjsr ModifyIDCMP ; sorry, zu faul, um hier noch
- .TaCont ; Error-Handling einzubauen!
- .Exit pull
- rts
-
- ;;-- DisplayBeep()en --------------------------------------
-
- _Beep push
-
- slib Intui
- move.l gl_PubScreen(gl),d0
- beq.b .NoScreen
- movea.l d0,a0
- fjsr DisplayBeep
-
- .Exit pull
- rts
-
- .NoScreen lea.l _WBPubName(pc),a0
- fjsr LockPubScreen
- move.l d0,-(sp)
- movea.l d0,a0
- fjsr DisplayBeep ; evtl. alle Screens flashen
- movea.l (sp)+,a1
- suba.l a0,a0
- fjsr UnlockPubScreen
- bra.b .Exit
-
- ;;-- EasyRequester öffnen ---------------------------------
- ; In: a0 = &TextFormat, a1 = &GadgetFormat, a2 = &ArgList
- ; Out: cc=d0.l = EasyRequest()
-
- _EasyReq push d0-d7/a0-a7
- moveq.l #-1,d0
- bsr.w _FreezeWin
-
- slib Intui
- move.l a1,-(sp) ; es_GadgetFormat
- move.l a0,-(sp) ; es_TextFormat
- getstr MSG_REQ_TITLE ; a0
- move.l a0,-(sp) ; es_Title
- clr.l -(sp) ; es_Flags
- moveq.l #es_SIZEOF,d0
- move.l d0,-(sp) ; es_StructSize
- movea.l gl_Window(gl),a0
- movea.l sp,a1
- movea.l a2,a3
- suba.l a2,a2
- fjsr EasyRequestArgs
- lea.l es_SIZEOF(sp),sp
- move.l d0,(sp)
-
- moveq.l #0,d0
- bsr.w _FreezeWin
- pull d0-d7/a0-a7
- tst.l d0
- rts
-
- ;;-- GetCatString (called by getstr macro) ----------------
- ; In: d0.l = StringID
- ; Out: a0 = &String (READ ONLY!)
-
- _GetCatString push d0-d7/a1-a7
-
- lea.l .DS(pc),a1
- move.l d0,d1
- add.l d1,d1
- adda.w (a1,d1.w),a1
- move.l a1,a0 ; &DefString, if LocaleBase = NULL
- slib Locale,d1
- beq.b .Exit
- movea.l d1,lb
- movea.l gl_Catalog(gl),a0
- fjsr GetCatalogStr
- movea.l d0,a0
-
- .Exit pull d0-d7/a1-a7
- rts
-
- .DS dc.w .MSG_REQ_TITLE-.DS
- dc.w .MSG_ABORT-.DS
- dc.w .MSG_OKAY-.DS
- dc.w .MSG_RETRY_CANCEL-.DS
- dc.w .MSG_LIBRARY_MISSING-.DS
- dc.w .MSG_SHELL_START-.DS
- dc.w .MSG_NEED_ICON-.DS
- dc.w .MSG_NO_PORT-.DS
- dc.w .MSG_NO_TYPES-.DS
- dc.w .MSG_NO_APP-.DS
- dc.w .MSG_NO_WIN-.DS
- dc.w .MSG_EDITOR_FAILED-.DS
- dc.w .MSG_NO_MEM-.DS
- dc.w .MSG_TYPES-.DS
- dc.w .MSG_AUTOTYPE-.DS
- dc.w .MSG_DEFAULT_TOOL-.DS
- dc.w .MSG_APPICON-.DS
- dc.w .MSG_APPMENUITEM-.DS
- dc.w .MSG_QUIT-.DS
- dc.w .MSG_DROP_BOX-.DS
- dc.w .MSG_PROJECT-.DS
- dc.w .MSG_REPARSE-.DS
- dc.w .MSG_EDIT-.DS
- dc.w .MSG_ABOUT-.DS
- dc.w .MSG_INFORMATION-.DS
-
- .MSG_REQ_TITLE dc.b 'ChangeIcon message',0
- .MSG_ABORT dc.b 'Abort',0
- .MSG_OKAY dc.b 'Okay',0
- .MSG_RETRY_CANCEL dc.b 'Retry|Cancel',0
- .MSG_LIBRARY_MISSING dc.b "Can't open",$0A,'"%s"!',0
- .MSG_SHELL_START dc.b 'Please start me from the Workbench!',$0A,0
- .MSG_NEED_ICON dc.b "Can't get access",$0A,'to my own Icon!',0
- .MSG_NO_PORT dc.b 'Unable to create',$0A,'Message Port!',0
- .MSG_NO_TYPES dc.b 'Not enough memory',$0A
- dc.b 'to get all File-types!',0
- .MSG_NO_APP dc.b 'Unable to register',$0A
- dc.b 'as Workbench Application!',0
- .MSG_NO_WIN dc.b 'Failed to lock Screen,',$0A
- dc.b 'create Gadgets and Menus',$0A
- dc.b 'or open Window!',0
- .MSG_EDITOR_FAILED dc.b "Can't start your editor",$0A,'"%s"!',0
- .MSG_NO_MEM dc.b 'Not enough free memory!',0
-
- .MSG_TYPES dc.b 'Types',0
- .MSG_AUTOTYPE dc.b 'Auto _type',0
- .MSG_DEFAULT_TOOL dc.b '_DefaultTool',0
- .MSG_APPICON dc.b '_AppIcon',0
- .MSG_APPMENUITEM dc.b '_AppMenuItem',0
- .MSG_QUIT dc.b '_Quit',0
- .MSG_DROP_BOX dc.b 'Drop',$0A,'Icons',$0A,'into',$0A,'this',$0A
- dc.b 'Box',0
-
- .MSG_PROJECT dc.b 'Project',0
- .MSG_REPARSE dc.b '_Reparse types',0
- .MSG_EDIT dc.b '_Edit types',0
- .MSG_ABOUT dc.b 'About...',0
- .MSG_INFORMATION dc.b 'ChangeIcon V1.0 is a Freeware program',$0A
- dc.b '(C)opyright by Hanns Holger Rutz. If you',$0A
- dc.b 'have bugreports, suggestions or just',$0A
- dc.b 'want to contact me, then write to:',$0A,$0A
- dc.b ' Hanns Holger Rutz',$0A
- dc.b ' Auf dem Godenstedter Berg 17',$0A
- dc.b ' D-27404 Zeven',$0A
- dc.b ' GERMANY',$0A,$0A
- dc.b 'Please consult the Doc-File for further',$0A
- dc.b 'information.',$0A
- dc.b ' - Holgi -',0
- even
-
- ;;-- ChipData ---------------------------------------------
-
- section Daten,data_c
-
- _Ptr dc.w 0,0
- dc.w %0000010000000000,%0000011111000000
- dc.w %0000000000000000,%0000011111000000
- dc.w %0000000100000000,%0000001110000000
- dc.w %0000000000000000,%0000011111100000
- dc.w %0000011111000000,%0001111111111000
- dc.w %0001111111110000,%0011111111101100
- dc.w %0011111111111000,%0111111111011110
- dc.w %0011111111111000,%0111111110111110
- dc.w %0111111111111100,%1111111101111111
- dc.w %0111111011111100,%1111111111111111
- dc.w %0111111111111100,%1111111111111111
- dc.w %0011111111111000,%0111111111111110
- dc.w %0011111111111000,%0111111111111110
- dc.w %0001111111110000,%0011111111111100
- dc.w %0000011111000000,%0001111111111000
- dc.w %0000000000000000,%0000011111100000
- dc.w 0,0
-