INIT

 (Available in 00 TS Base(GUI) - TS_Base_6_StatusBoxDialog)

Source

METHOD INIT( uoOwner, uoErrorOrStatusHL, udwLevel ) CLASS TS_StatusBox
LOCAL oStatusBoxGlobalData AS _TS_StatusBoxGlobalData
LOCAL cSeverity2String AS STRING
LOCAL struWinBitmap IS _WinBitmap
LOCAL oGlobalData AS _TS_GlobalData
LOCAL dwSeverity AS DWORD
LOCAL pszBitmap AS PSZ
LOCAL dwLevel AS DWORD
   #IFDEF TS_TRACETIMED_ENABLE
      _TS_TraceTimedEnter( SysAddAtom( PSZ( _CAST, __APPLICATION__ ) ), SysAddAtom ; ...
     ... ( PSZ( _CAST, __MODULE__ ) ), SysAddAtom( PSZ( _CAST, __ENTITY__ ) ) )
   #ENDIF
   oStatusBoxGlobalData:=_TS_ModuleGetStatusBoxGlobalData( )
   oGlobalData:=oStatusBoxGlobalData:_GlobalData
   pszBitmap:=NULL_PSZ
   SELF:_ButtonCount:=0U
   SELF:_OButtons:=ArrayCreate( 6U )
   SELF:_OButtons[ 1U ]:=_TS_StatusBoxButton{ }
   SELF:_OButtons[ 2U ]:=_TS_StatusBoxButton{ }
   SELF:_OButtons[ 3U ]:=_TS_StatusBoxButton{ }
   SELF:_OButtons[ 4U ]:=_TS_StatusBoxButton{ }
   SELF:_OButtons[ 5U ]:=_TS_StatusBoxButton{ }
   SELF:_OButtons[ 6U ]:=_TS_StatusBoxButton{ }
   SELF:_BitmapHeight:=0L
   SELF:_BitmapWidth:=0L
   IF SELF:_SetErrorBoxCount==TS_LOGIC_DEFAULT
      SELF:_SetErrorBoxCount:=TS_LOGIC_TRUE
      _TS_ErrorSysSetErrorBoxCount( TRUE, NULL_OBJECT, FALSE )
   END
   dwLevel:=TS_SafeDWORD( udwLevel, NULL_PTR )+1U
   IF Empty( SELF:_ErrorSharedObj )
      IF IsObject( uoErrorOrStatusHL ) .AND. LOGIC( _CAST, IVarGetInfo( uoErrorOrStatusHL ; ...
     ... , #_ErrorShared ) )
         SELF:_ErrorSharedObj:=IVarGet( uoErrorOrStatusHL, #_ErrorShared  ; ...
        ... )
      END
      IF Empty( SELF:_ErrorSharedObj )
         SELF:_ErrorSharedObj:=_TS_ErrorShared{ SELF, dwLevel  ; ...
        ... }
      END
   END
   SELF:_App:=oGlobalData:_AppObject
   SELF:_FriendlyMessage:=NULL_STRING
   DO CASE
   CASE IsInstanceOfUsual( uoErrorOrStatusHL, #TS_ErrorStatus )
      SELF:_StatusStatus:=uoErrorOrStatusHL
      SELF:_StatusError:=NULL_OBJECT
      dwSeverity:=_TS_ErrorSysItemSeverity( SELF:_StatusStatus ; ...
     ... , NIL )
      DO CASE
      CASE dwSeverity>ES_ERROR
         SELF:BeepSound:=MB_ICONEXCLAMATION
         pszBitmap:=oStatusBoxGlobalData:_StatusBoxBMPSResourceFatal
         cSeverity2String:=TS_S_FATAL+TS_S_ERROR
      CASE dwSeverity>ES_WARNING
         SELF:BeepSound:=MB_ICONASTERISK
         pszBitmap:=oStatusBoxGlobalData:_StatusBoxBMPSResourceError
         cSeverity2String:=TS_S_ERROR
      CASE dwSeverity>ES_WHOCARES
         SELF:BeepSound:=MB_ICONHAND
         pszBitmap:=oStatusBoxGlobalData:_StatusBoxBMPSResourceWarning
         cSeverity2String:=TS_S_WARNING
      OTHERWISE
         SELF:BeepSound:=MB_ICONQUESTION
         pszBitmap:=oStatusBoxGlobalData:_StatusBoxBMPSResourceToDo
         cSeverity2String:=TS_S_TODO
      END
      SELF:_FriendlyMessage:=SELF:_StatusStatus:ShortDescription
   CASE IsInstanceOfUsual( uoErrorOrStatusHL, #Error )
      SELF:_StatusStatus:=NULL_OBJECT
      SELF:_StatusError:=uoErrorOrStatusHL
      dwSeverity:=_TS_ErrorSysItemSeverity( SELF:_StatusError ; ...
     ... , NIL )
      DO CASE
      CASE dwSeverity>ES_ERROR
         SELF:BeepSound:=MB_ICONEXCLAMATION
         pszBitmap:=oStatusBoxGlobalData:_StatusBoxBMPSResourceFatal
         cSeverity2String:=TS_S_FATAL+TS_S_ERROR
         dwSeverity:=ES_CATASTROPHIC
      CASE dwSeverity>ES_WARNING
         SELF:BeepSound:=MB_ICONASTERISK
         pszBitmap:=oStatusBoxGlobalData:_StatusBoxBMPSResourceError
         cSeverity2String:=TS_S_ERROR
         dwSeverity:=ES_ERROR
      CASE dwSeverity>ES_WHOCARES
         SELF:BeepSound:=MB_ICONHAND
         pszBitmap:=oStatusBoxGlobalData:_StatusBoxBMPSResourceWarning
         cSeverity2String:=TS_S_WARNING
         dwSeverity:=ES_WARNING
      OTHERWISE
         SELF:BeepSound:=MB_ICONQUESTION
         pszBitmap:=oStatusBoxGlobalData:_StatusBoxBMPSResourceToDo
         cSeverity2String:=TS_S_TODO
         dwSeverity:=ES_WHOCARES
      END
      SELF:_FriendlyMessage:=cSeverity2String
      SELF:_FriendlyMessage+=""
      DO CASE
      CASE LOGIC( _CAST, SELF:_StatusError:GenCode  ; ...
     ... )
         SELF:_FriendlyMessage+=NTrim( SELF:_StatusError:GenCode  ; ...
        ... )
         SELF:_FriendlyMessage+=" [ "
         SELF:_FriendlyMessage+=Upper( ErrString( SELF:_StatusError:GenCode  ; ...
        ... ) )
         SELF:_FriendlyMessage+=" ]"
         IF !Empty( SELF:_StatusError:Description )
            SELF:_FriendlyMessage+=TS_S_GLUON+AllTrim( SELF:_StatusError:Description  ; ...
           ... )
         END
      CASE Empty( SELF:_StatusError:Description )
         SELF:_FriendlyMessage+=TS_S_UNKNOWN
      OTHERWISE
         SELF:_FriendlyMessage+=AllTrim( SELF:_StatusError:Description  ; ...
        ... )
      END
      IF IsClass( #TS_ErrorStatus )
         SELF:_StatusStatus:=CreateInstance( #TS_ErrorStatus,  ; ...
        ... SELF:_StatusError, SELF:_FriendlyMessage ; ...
        ... , TRUE, dwLevel, dwSeverity )
//       TSTrace SetCreatedAt (SELF:_StatusStatus)
         IF Upper( ProcName( 0U ) )==Upper( __ENTITYSYM__ ) .AND. IsObject( SELF:_StatusStatus  ; ...
        ... )
            _TS_TraceObjectExtendLifeTime( SELF:_StatusStatus ; ...
           ... , _TS_TraceCreatedAt( TS_S_EMPTY, 1U ) )
         END
      ELSE
         SELF:_StatusStatus:=NULL_OBJECT
      END
   CASE IsString( uoErrorOrStatusHL ) .AND. !Empty( uoErrorOrStatusHL )
      SELF:_StatusStatus:=NULL_OBJECT
      SELF:_StatusError:=NULL_OBJECT
      SELF:_FriendlyMessage:=AllTrim( uoErrorOrStatusHL )
      SELF:BeepSound:=MB_ICONQUESTION
      pszBitmap:=oStatusBoxGlobalData:_StatusBoxBMPSResourceToDo
      cSeverity2String:=TS_S_INFO
   OTHERWISE
      SELF:_StatusStatus:=NULL_OBJECT
      SELF:_StatusError:=NULL_OBJECT
      _TS_ErrorSysErrorInternal( "uStatusSource must be instance of 'TS_ErrorStatus' " ; ...
     ... +"or 'Error'", TS_TRACESUBCODE_TEXT, TS_TRACESUBCODE_ID, EG_UNKNOWN, ES_WARNING ; ...
     ... , __APPLICATION__, __MODULE__, __ENTITY__, __LINE__, SELF, 0U )
      SELF:BeepSound:=MB_ICONASTERISK
      pszBitmap:=oStatusBoxGlobalData:_StatusBoxBMPSResourceError
      cSeverity2String:=TS_S_ERROR
   END
   IF pszBitmap<>NULL_PSZ
      SELF:_Bitmap:=LoadBitmap( _GetInst( ), pszBitmap )
      IF SELF:_Bitmap<>NULL_PTR
         IF GetObject( SELF:_Bitmap, _SIZEOF( _WinBitmap ), @ ; ...
        ... struWinBitmap )<>0L
            SELF:_BitmapHeight:=struWinBitmap.bmHeight
            SELF:_BitmapWidth:=struWinBitmap.bmWidth
            IF SELF:_BitmapHeight==0L .OR. SELF:_BitmapWidth ; ...
           ... ==0L
               SELF:_BitmapHeight:=0L
               SELF:_BitmapWidth:=0L
               DeleteObject( SELF:_Bitmap )
               SELF:_Bitmap:=NULL_PTR
            END
         ELSE
            DeleteObject( SELF:_Bitmap )
            SELF:_Bitmap:=NULL_PTR
         END
      END
      pszBitmap:=NULL_PSZ
   ELSE
      SELF:_Bitmap:=NULL_PTR
   END
   SELF:_GroupBoxWidth:=Max( Max( SELF:_GroupBoxWidth ; ...
  ... , SELF:_BitmapWidth ), Max( _TS_STATUSBOX_GROUPBOX_WIDTH_MIN ; ...
  ... , _TS_STATUSBOX_PICTUREBOX_WIDTH_MIN ) )
   SELF:_BitmapYOffset:=( Max( SELF:_BitmapHeight ; ...
  ... , _TS_STATUSBOX_PICTUREBOX_HEIGHT_MIN )-SELF:_BitmapHeight  ; ...
  ... )/2L
   SELF:_BitmapHeight:=Max( SELF:_BitmapHeight ; ...
  ... , _TS_STATUSBOX_PICTUREBOX_HEIGHT_MIN )
   SELF:_BitmapXOffset:=( Max( Max( SELF:_GroupBoxWidth ; ...
  ... , SELF:_BitmapWidth ), _TS_STATUSBOX_PICTUREBOX_WIDTH_MIN  ; ...
  ... )-SELF:_BitmapWidth )/2L
   SELF:_BitmapWidth:=Max( Max( SELF:_GroupBoxWidth ; ...
  ... , SELF:_BitmapWidth ), _TS_STATUSBOX_PICTUREBOX_WIDTH_MIN  ; ...
  ... )
   IF Empty( SELF:_FriendlyMessage )
      DO CASE
      CASE SELF:_StatusStatus<>NULL_OBJECT
         SELF:_FriendlyMessage:=TS_StringMerge( TS_S_UNKNOWN_ITEM_STATUS_SPEC ; ...
        ... , TS_AsHexStringOBJECT( SELF:_StatusStatus, TRUE  ; ...
        ... ) )
      CASE SELF:_StatusError<>NULL_OBJECT
         SELF:_FriendlyMessage:=TS_StringMerge( TS_S_UNKNOWN_ITEM_STATUS_SPEC ; ...
        ... , TS_AsHexStringOBJECT( SELF:_StatusError, TRUE )  ; ...
        ... )
      OTHERWISE
         SELF:_FriendlyMessage:=TS_StringMerge( TS_S_UNKNOWN_ITEM_STATUS_SPEC ; ...
        ... , TS_S_THISSHOULDNEVERHAPPEN )
      END
   END
   IF SELF:_App<>NULL_OBJECT
      IF LOGIC( _CAST, IVarGetInfo( SELF:_App, #ProductName )  ; ...
     ... )
         SELF:_ProductName:=IVarGet( SELF:_App ; ...
        ... , #ProductName )
      ELSE
         SELF:_ProductName:=ExecName( TRUE )
      END
      IF IsMethod( SELF:_App, #RegistryGet ) .AND. oStatusBoxGlobalData:_StatusBoxIsWithFirstTime
//       TSTrace ToDo "Check this out! Where/when are they written? ( to the registry ; ...
//      ... )"
         oStatusBoxGlobalData:_StatusBoxIsWithFirstTime:=FALSE
         oStatusBoxGlobalData:_StatusBoxIsWithError:=Send( SELF:_App ; ...
        ... , #RegistryGet, #IsWithError, FALSE )
         oStatusBoxGlobalData:_StatusBoxIsWithExtEr:=Send( SELF:_App ; ...
        ... , #RegistryGet, #IsWithExtEr, FALSE )
         oStatusBoxGlobalData:_StatusBoxIsWithStack:=Send( SELF:_App ; ...
        ... , #RegistryGet, #IsWithStack, FALSE )
      END
   ELSE
      SELF:_ProductName:=ExecName( TRUE )
   END
   IF Empty( SELF:_ProductName )
      SUPER:INIT( uoOwner, "_TS_STATUSBOXRESOURCE",  ; ...
     ... cSeverity2String )
   ELSE
      SUPER:INIT( uoOwner, "_TS_STATUSBOXRESOURCE",  ; ...
     ... SELF:_ProductName+TS_S_CAPTION_GLUON+cSeverity2String  ; ...
     ... )
   END
   SELF:_StatusBoxIsWithStack:=oStatusBoxGlobalData:_StatusBoxIsWithStack
   SELF:_StatusBoxIsWithError:=oStatusBoxGlobalData:_StatusBoxIsWithError
   SELF:_StatusBoxIsWithExtEr:=oStatusBoxGlobalData:_StatusBoxIsWithExtEr
   oStatusBoxGlobalData:=NULL_OBJECT
   #IFDEF TS_TRACETIMED_ENABLE
      _TS_TraceTimedLeave( SysAddAtom( PSZ( _CAST, __APPLICATION__ ) ), SysAddAtom ; ...
     ... ( PSZ( _CAST, __MODULE__ ) ), SysAddAtom( PSZ( _CAST, __ENTITY__ ) ) )
   #ENDIF
RETURN SELF