"{ Package: 'stx:libview' }"
Object subclass:#MimeTypeIconLibrary
instanceVariableNames:''
classVariableNames:'Icons MatchedIcons'
poolDictionaries:''
category:'Interface-Smalltalk'
!
!MimeTypeIconLibrary class methodsFor:'initialization'!
initialize
self initializeIcons
!
initializeFileTypeIcons
|resources|
resources := ResourcePack for:self.
#(
"/ internal-type to icon mappings.
(#directory 'ICON_DIRECTORY' 'tiny_yellow_dir.xpm' )
(#directoryOpen 'ICON_DIRECTORY_OPEN' 'tiny_yellow_dir_open.xpm' )
(#directoryLocked 'ICON_DIRECTORY_LOCKED' 'tiny_yellow_dir_locked.xpm' )
(#directoryLink 'ICON_DIRECTORY_LINK' 'tiny_yellow_dir_link.xpm' )
(#directoryNetwork 'ICON_DIRECTORY_NETWORK' 'tiny_yellow_dir_network.xpm' )
(#file 'ICON_FILE' 'tiny_file_plain.xpm' )
(#fileLink 'ICON_FILE_LINK' 'tiny_file_link.xpm' )
(#fileLocked 'ICON_FILE_LOCKED' 'tiny_file_lock.xpm' )
(#imageFile 'ICON_IMAGE_FILE' 'tiny_file_pix.xpm' )
(#textFile 'ICON_TEXT_FILE' 'tiny_file_text.xpm' )
(#executableFile 'ICON_EXECUTABLEFILE' 'tiny_file_exec.xpm' )
(#deviceFile 'ICON_DEVICE_FILE' 'tiny_file_device.xpm' )
(#binaryFile 'ICON_BINARY_FILE' 'tiny_file_binary.xpm' )
(#specialFile 'ICON_SPECIALFILE' 'tiny_file_special.xpm' )
(#addOnLocked 'ICON_ADDON_LOCKED' 'tiny_addOn_lock.xpm' )
(#addOnLinked 'ICON_ADDON_LINKED' 'tiny_addOn_link.xpm' )
(#directoryGray 'ICON_DIRECTORY_GRAY' 'tiny_yellow_dir_gray.xpm' )
(#directoryOpenGray 'ICON_DIRECTORY_OPEN_GRAY' 'tiny_yellow_dir_open_gray.xpm' )
) do:[:entry |
|key resource defaultName nm img|
key := entry at:1.
resource := entry at:2.
defaultName := entry at:3.
resource notNil ifTrue:[
nm := resources at:resource default:nil.
].
nm isNil ifTrue:[
nm := 'xpmBitmaps/document_images/' , defaultName
].
Icons at:key put:(Smalltalk imageFromFileNamed:nm forClass:self).
]
"
self initializeFileTypeIcons
"
!
initializeIcons
Icons := Dictionary new.
MatchedIcons := OrderedCollection new.
self initializeFileTypeIcons.
self initializeMimeTypeIcons.
"
self initializeIcons
"
"Modified: / 1.8.1998 / 17:39:27 / cg"
!
initializeMimeTypeIcons
#(
"/ mime-type to icon mappings.
"/ 'image/jpeg' 'tiny_file_pix.xpm'
"/ 'image/gif' 'tiny_file_pix.xpm'
"/ 'image/tiff' 'tiny_file_pix.xpm'
"/ 'image/x-xbitmap' 'tiny_file_pix.xpm'
"/ 'image/x-xpixmap' 'tiny_file_pix.xpm'
"/ 'image/x-png' 'tiny_file_pix.xpm'
"/ 'image/x-photo-cd' 'tiny_file_pix.xpm'
"/ 'image/x-MS-bmp' 'tiny_file_pix.xpm'
"/ 'image/x-rgb' 'tiny_file_pix.xpm'
"/ 'image/x-portable-pixmap' 'tiny_file_pix.xpm'
"/ 'image/x-portable-graymap' 'tiny_file_pix.xpm'
"/ 'image/x-portable-bitmap' 'tiny_file_pix.xpm'
"/ 'image/x-portable-anymap' 'tiny_file_pix.xpm'
"/ 'image/x-xwindowdump' 'tiny_file_pix.xpm'
"/ 'image/x-cmu-raster' 'tiny_file_pix.xpm'
"/ 'image/x-targa' 'tiny_file_pix.xpm'
'image/*' 'tiny_file_pix.xpm'
"/ misc text ...
'text/html' 'tiny_file_html.xpm'
"/ 'text/plain' 'tiny_file_text.xpm'
'text/*' 'tiny_file_text.xpm'
'application/postscript' 'tiny_file_postscript.xpm'
'application/pdf' 'tiny_file_pdf.xpm'
'application/rtf' 'tiny_file_rtf.xpm'
"/ video formats ...
"/ 'video/x-sgi-movie' 'tiny_file_movie.xpm'
"/ 'video/x-msvideo' 'tiny_file_movie.xpm'
"/ 'video/quicktime' 'tiny_file_movie.xpm'
"/ 'video/x-mpeg2' 'tiny_file_movie.xpm'
"/ 'video/mpeg' 'tiny_file_movie.xpm'
'video/*' 'tiny_file_movie2.xpm'
'application/vnd.rn-realmedia' 'tiny_file_movie2.xpm'
"/ audio formats ...
"/ 'audio/x-pn-realaudio' 'tiny_file_sound.xpm'
"/ 'audio/x-mpeg' 'tiny_file_sound.xpm'
"/ 'audio/x-mp3' 'tiny_file_sound.xpm'
"/ 'audio/x-wav' 'tiny_file_sound.xpm'
"/ 'audio/x-aiff' 'tiny_file_sound.xpm'
"/ 'audio/basic' 'tiny_file_sound.xpm'
"/ 'audio/x-shockwave-flash' 'tiny_file_sound.xpm'
'audio/*' 'tiny_file_sound.xpm'
"/ misc stuff
'application/winword' 'tiny_file_text.xpm'
"/ binary formats
'application/binary' 'tiny_file_binary.xpm'
'application/library' 'tiny_file_binary.xpm'
'application/shared-library' 'tiny_file_binary.xpm'
"/ progr. languages
'application/x-smalltalk-source' 'tiny_file_st.xpm'
'application/x-smalltalk-source-sif' 'tiny_file_text.xpm'
'application/x-c-source' 'tiny_file_text.xpm'
'application/x-c-header' 'tiny_file_text.xpm'
'application/x-cpp-source' 'tiny_file_text.xpm'
'application/x-javascript' 'tiny_file_text.xpm'
'application/x-java-source' 'tiny_file_java.xpm'
'application/x-sh' 'tiny_file_text.xpm'
'application/x-csh' 'tiny_file_text.xpm'
'application/x-tcl' 'tiny_file_text.xpm'
'application/x-perl' 'tiny_file_text.xpm'
'application/x-make' 'tiny_file_text.xpm'
'application/x-batch-script' 'tiny_file_text.xpm'
'application/x-asn1-source' 'tiny_file_text.xpm'
"/ compressors / archivers
'application/x-tar' 'tiny_file_archive.xpm'
'application/x-gtar' 'tiny_file_archive.xpm'
'application/x-tar-compressed' 'tiny_file_compressed_archive.xpm'
'application/x-zip-compressed' 'tiny_file_compressed_archive.xpm'
'application/x-gzip-compressed' 'tiny_file_compressed_archive.xpm'
'application/x-cpio' 'tiny_file_archive.xpm'
'application/x-shar' 'tiny_file_archive.xpm'
'application/java-archive' 'tiny_file_archive.xpm'
'*' 'tiny_file_plain.xpm'
) pairWiseDo:[:mimeTypePattern :fileName |
| nm |
nm := 'xpmBitmaps/document_images/' , fileName.
mimeTypePattern includesMatchCharacters ifTrue:[
MatchedIcons add:(mimeTypePattern-> (Smalltalk imageFromFileNamed:nm forClass:self)).
] ifFalse:[
Icons at:mimeTypePattern put:(Smalltalk imageFromFileNamed:nm forClass:self).
]
]
"
self initializeIcons
"
! !
!MimeTypeIconLibrary class methodsFor:'accessing'!
iconForKey:mimeTypeOrKey
^ Icons at:mimeTypeOrKey ifAbsent:nil.
!
iconForKeyMatching:mimeTypeOrKey
^ MatchedIcons detect:[:assoc | assoc key match:mimeTypeOrKey] ifNone:nil.
! !
!MimeTypeIconLibrary class methodsFor:'documentation'!
version
^ '$Header: /cvs/stx/stx/libview2/MIMETypeIconLibrary.st,v 1.2 2003-12-01 14:47:57 penk Exp $'
! !
MimeTypeIconLibrary initialize!