AboutBox.st
author Claus Gittinger <cg@exept.de>
Wed, 02 Feb 2000 20:35:59 +0100
changeset 2577 14b7cc070a6b
parent 2477 cfb8a4d7b557
child 2700 854f2402bc08
permissions -rw-r--r--
added implementorsOf and sendersOf menu functions

"
 COPYRIGHT (c) 1995 by Claus Gittinger
	      All Rights Reserved

 This software is furnished under a license and may be used
 only in accordance with the terms of that license and with the
 inclusion of the above copyright notice.   This software may not
 be provided or otherwise made available to, or used by, any
 other person.  No title to or ownership of the software is
 hereby transferred.
"

InfoBox subclass:#AboutBox
	instanceVariableNames:''
	classVariableNames:'CachedIcon'
	poolDictionaries:''
	category:'Views-DialogBoxes'
!

!AboutBox class methodsFor:'documentation'!

copyright
"
 COPYRIGHT (c) 1995 by Claus Gittinger
	      All Rights Reserved

 This software is furnished under a license and may be used
 only in accordance with the terms of that license and with the
 inclusion of the above copyright notice.   This software may not
 be provided or otherwise made available to, or used by, any
 other person.  No title to or ownership of the software is
 hereby transferred.
"
!

documentation
"
    A box specialized to show the ST/X about information.
    As a speciality, this box automatically closes if left
    alone for a while.

    Can be subclasses for your own aboutBoxes; to do so, redefine
    #defaultIcon and #aboutText.

    examples:
        AboutBox new open

        AboutBox new showAtPointer
"
! !

!AboutBox class methodsFor:'defaults'!

aboutText
    "return a string to be shown in the box.
     Can be redefined in custom subclasses."

    |distributor expiration machine info|

    distributor := Smalltalk distributorString.
    distributor notEmpty ifTrue:[
        distributor := 'Distributor ...... ', distributor
    ].
    expiration := Smalltalk expirationTime.
    expiration notNil ifTrue:[
        expiration := 'Expires ........... ', expiration printString
    ] ifFalse:[
        expiration := ''.
    ].
    machine := OperatingSystem getHostName.
    info := OperatingSystem getSystemInfo.
    (info includesKey:#machine) ifTrue:[
        machine := machine , ' (' , (info at:#machine) , ')'
    ].

    ^
'SmallTalk/X

Version ......... ', Smalltalk versionString , '.' , Smalltalk releaseNr printString ,
                      ' (' , Smalltalk versionDate printString , ')
', distributor, '
', expiration , '
Release ID ...... ', Smalltalk releaseIdentification, '
Configuration ... ', Smalltalk configuration, '
Running on ...... ', machine, '

' , Smalltalk copyrightString , '

'

    "Modified: / 6.9.1996 / 10:11:08 / stefan"
    "Modified: / 4.8.1998 / 02:28:29 / cg"
!

defaultIcon
    "return a smalltalk/X icon.
     Can be redefined in custom subclasses."

    CachedIcon isNil ifTrue:[
        CachedIcon := Icon stxIcon.
        CachedIcon isNil ifTrue:[
            CachedIcon := Smalltalk imageFromFileNamed:'SmalltalkX.xbm' inPackage:'stx:libtool'
        ]
    ].
    ^ CachedIcon

    "Modified: / 25.5.1999 / 15:44:48 / cg"
!

defaultLabel
    "return the boxes default window title."

    ^ 'About ...'

    "Modified: 23.4.1996 / 17:09:48 / cg"
    "Created: 23.4.1996 / 17:11:46 / cg"
! !

!AboutBox methodsFor:'initialization'!

initialize
    "setup the box; change all of my components viewBackground
     to some darkish grey."

    |dark green lbl|

    super initialize.

"/    self label:'About ...'.

    device hasColors ifTrue:[
        green := (Color red:0 green:80 blue:20) "darkened".
        dark := Color grey:10.
    ] ifFalse:[
        green := Color white.
        dark := Color black.
    ].

    self withAllSubViewsDo:[:s | s viewBackground:dark].

    self form:(self class defaultIcon).
    (lbl := self formLabel) viewBackground:dark.
    lbl foregroundColor:green backgroundColor:dark.
    (lbl := self textLabel) viewBackground:dark.
    lbl foregroundColor:White backgroundColor:dark.

    self title:(self class aboutText).
    self okText:(resources string:'close').

    "Modified: / 12.6.1998 / 11:48:23 / cg"
! !

!AboutBox methodsFor:'show / hide'!

show
    "show the box.
     Redefined to automatically hide myself after some time"

    self autoHideAfter:15 with:[].
    super showAtCenter.

    "
     AboutBox new show
    "

    "Modified: 23.4.1996 / 17:10:03 / cg"
    "Modified: 6.9.1996 / 09:47:10 / stefan"
! !

!AboutBox class methodsFor:'documentation'!

version
    ^ '$Header: /cvs/stx/stx/libtool/AboutBox.st,v 1.24 1999-12-09 11:19:35 cg Exp $'
! !