packages/PackageSelector.st
author Claus Gittinger <cg@exept.de>
Thu, 14 Jun 2018 17:02:40 +0200
changeset 4329 f1a534377d1e
parent 1672 109412dd5830
child 3011 1997ff6e7e55
permissions -rw-r--r--
#UI_ENHANCEMENT by cg class: SourceCodeManagerUtilities class definition changed: #checkoutClass:askForRevision:askForMerge:askForConfirmation: optout the "only version methods are different..." dialog

"
 COPYRIGHT (c) 2003 by eXept Software AG
	      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.
"

"{ Package: 'stx:libbasic3' }"

"{ NameSpace: Packages }"

AbstractPackageBrowser subclass:#PackageSelector
	instanceVariableNames:'selectionChangedBlock list'
	classVariableNames:''
	poolDictionaries:''
	category:'Package-Application'
!

AbstractPackageBrowser subclass:#BasicPackageSelector
	instanceVariableNames:'selectionChangedBlock list'
	classVariableNames:''
	poolDictionaries:''
	privateIn:PackageSelector
!

AbstractPackageBrowser subclass:#HierarchicalPackageSelector
	instanceVariableNames:'selectionChangedBlock tree packagesSelectedIndexHolder'
	classVariableNames:''
	poolDictionaries:''
	privateIn:PackageSelector
!

HierarchicalItem subclass:#CategoryItem
	instanceVariableNames:'name packageManager'
	classVariableNames:''
	poolDictionaries:''
	privateIn:PackageSelector::HierarchicalPackageSelector
!

HierarchicalItem subclass:#PackageItem
	instanceVariableNames:'package'
	classVariableNames:''
	poolDictionaries:''
	privateIn:PackageSelector::HierarchicalPackageSelector
!

HierarchicalItem subclass:#RootItem
	instanceVariableNames:''
	classVariableNames:''
	poolDictionaries:''
	privateIn:PackageSelector::HierarchicalPackageSelector
!

!PackageSelector class methodsFor:'documentation'!

copyright
"
 COPYRIGHT (c) 2003 by eXept Software AG
	      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.
"
! !

!PackageSelector class methodsFor:'interface specs'!

windowSpec
    "This resource specification was automatically generated
     by the UIPainter of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the UIPainter may not be able to read the specification."

    "
     UIPainter new openOnClass:Packages::PackageSelector andSelector:#windowSpec
     Packages::PackageSelector new openInterface:#windowSpec
     Packages::PackageSelector open
    "

    <resource: #canvas>

    ^
     #(#FullSpec
	#name: #windowSpec
	#window:
       #(#WindowSpec
	  #label: 'Packages::PackageSelectorApplication'
	  #name: 'Packages::PackageSelectorApplication'
	  #min: #(#Point 10 10)
	  #max: #(#Point 1024 768)
	  #bounds: #(#Rectangle 29 59 329 359)
	  #menu: #mainMenu
	)
	#component:
       #(#SpecCollection
	  #collection: #(
	   #(#SubCanvasSpec
	      #name: 'SelectorSubCanvas'
	      #layout: #(#LayoutFrame 0 0 0 0 0 1 0 1)
	      #hasHorizontalScrollBar: false
	      #hasVerticalScrollBar: false
	      #clientHolder: #applicationHolder
	    )
	   )

	)
      )
! !

!PackageSelector class methodsFor:'plugIn spec'!

aspectSelectors
    "This resource specification was automatically generated
     by the UIPainter of ST/X."

    "Do not manually edit this. If it is corrupted,
     the UIPainter may not be able to read the specification."

    "Return a description of exported aspects;
     these can be connected to aspects of an embedding application
     (if this app is embedded in a subCanvas)."

    ^ #(
	#packagesSelectedHolder
      ).

! !

!PackageSelector methodsFor:'aspects'!

applicationHolder
    "automatically generated by UIPainter ..."

    |holder|
    (holder := builder bindingAt:#applicationHolder) isNil ifTrue:[
"/        builder aspectAt:#applicationHolder put:(holder :=  (BasicPackageSelector new) asValue).
	builder aspectAt:#applicationHolder put:(holder :=  (HierarchicalPackageSelector new) asValue).
    ].
    ^ holder
!

declareDependents
    self packageManager addDependent:self.
!

undeclareDependents
    self packageManager removeDependent:self.
! !

!PackageSelector methodsFor:'change & update'!

packagedManagerChangeAddPackage:aPackage
    self applicationHolder value packagedManagerChangeAddPackage:aPackage.
!

packagedManagerChangeRemovePackage:aPackage
    self applicationHolder value packagedManagerChangeRemovePackage:aPackage
!

update:something with:aParameter from:changedObject
    something == #packagedChanged ifTrue:[
	^ super update:something with:aParameter from:changedObject
    ].

    something == #addPackage: ifTrue:[
	^ self packagedManagerChangeAddPackage:aParameter.
    ].
    something == #removePackage: ifTrue:[
	^ self packagedManagerChangeRemovePackage:aParameter.
    ].

    super update:something with:aParameter from:changedObject
! !

!PackageSelector::BasicPackageSelector class methodsFor:'interface specs'!

windowSpec
    "This resource specification was automatically generated
     by the UIPainter of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the UIPainter may not be able to read the specification."

    "
     UIPainter new openOnClass:Packages::PackageSelector::BasicPackageSelector andSelector:#windowSpec
     Packages::PackageSelector::BasicPackageSelector new openInterface:#windowSpec
     Packages::PackageSelector::BasicPackageSelector open
    "

    <resource: #canvas>

    ^
     #(#FullSpec
	#name: #windowSpec
	#window:
       #(#WindowSpec
	  #label: 'Packages::PackageSelectorApplication'
	  #name: 'Packages::PackageSelectorApplication'
	  #min: #(#Point 10 10)
	  #max: #(#Point 1024 768)
	  #bounds: #(#Rectangle 29 59 329 359)
	  #menu: #mainMenu
	)
	#component:
       #(#SpecCollection
	  #collection: #(
	   #(#SelectionInListModelViewSpec
	      #name: 'SelectionInListModelView'
	      #layout: #(#LayoutFrame 0 0 0 0 0 1 0 1)
	      #model: #packagesSelectedHolder
	      #hasHorizontalScrollBar: true
	      #hasVerticalScrollBar: true
	      #listModel: #list
	      #multipleSelectOk: true
	      #useIndex: false
	      #highlightMode: #line
	      #selectOnButtomMenu: true
	    )
	   )

	)
      )
! !

!PackageSelector::BasicPackageSelector class methodsFor:'plugIn spec'!

aspectSelectors
    "This resource specification was automatically generated
     by the UIPainter of ST/X."

    "Do not manually edit this. If it is corrupted,
     the UIPainter may not be able to read the specification."

    "Return a description of exported aspects;
     these can be connected to aspects of an embedding application
     (if this app is embedded in a subCanvas)."

    ^ #(
	#packagesSelectedHolder
      ).

! !

!PackageSelector::BasicPackageSelector methodsFor:'accessing'!

masterApplication:aMasterApplication
    "initialization"
    | aPackageManager myList packageNames|
    super masterApplication:aMasterApplication.

    aPackageManager := self packageManager.
    (myList := self list) removeAll.
    packageNames := (aPackageManager packages collect:[:aPackage | aPackage name]).
    myList addAll:packageNames.

!

selected
    ^ self selectionHolder value
!

selectedPackage
    ^ self packageManager packageNamed:self selection
!

selectionChangedBlock
    "return the value of the instance variable 'selectionChangedBlock' (automatically generated)"

    ^ selectionChangedBlock
!

selectionChangedBlock:something
    "set the value of the instance variable 'selectionChangedBlock' (automatically generated)"

    selectionChangedBlock := something.
! !

!PackageSelector::BasicPackageSelector methodsFor:'aspects'!

list

    list ifNil:[
	list := List new.
	list addDependent:self.
    ].
    ^ list.
! !

!PackageSelector::BasicPackageSelector methodsFor:'change & update'!

listUpdate:something with:aParameter

    | copy |
    copy := list asOrderedCollection.

    copy sort:[:x :y |
	x < y
    ].

    list become:copy.
!

update:something with:aParameter from:changedObject

    (changedObject == list) ifTrue:[
	^ self listUpdate:something with:aParameter
    ].


    self breakPoint:''.
! !

!PackageSelector::BasicPackageSelector methodsFor:'initialization'!

initialize
    | aPackageManager myList packageNames firstOrNil|
    masterApplication ifNil:[
	^ super initialize
    ].

    aPackageManager := masterApplication model.
    (myList := self list) removeAll.
    packageNames := (aPackageManager packages collect:[:aPackage | aPackage name]).
    myList addAll:packageNames.

    self model:masterApplication model.

    self list isEmpty ifFalse:[
	firstOrNil := self list first
    ].
    self selectionHolder value:firstOrNil.
    ^ super initialize
!

initializeWithMasterApplication:aMasterApplication
    | myList packageNames aPackageManager|
    aPackageManager := aMasterApplication model.
    (myList := self list) removeAll.
    packageNames := (aPackageManager packages collect:[:aPackage | aPackage name]).
    myList addAll:packageNames.
!

postBuildWith:aBuilder
    ^ super postBuildWith:aBuilder
! !

!PackageSelector::HierarchicalPackageSelector class methodsFor:'image specs'!

basePackageIcon
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self miniPackageSystem inspect
     ImageEditor openOnClass:self andSelector:#miniPackageSystem
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
	constantNamed:#'Packages::PackageSelector::HierarchicalPackageSelector class miniPackageSystem'
	ifAbsentPut:[(Depth8Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
BP$IBP$IBP$IBP$@BP$IBP$IBP$IBP$IBP$@A@@@BP$IBP$IBP$IBP$@A@HD@0@IBP$IBP$I@@$I@@H@@@DC@@$IBP@I@@ @@@PD@@@D@@$IBP@H@@ GA0@@
@PLBA@@IBP@HB@ GA0\FA @@A@@IBP$I@@ GA0\FAPT@BP@IBP$I@@ GA0@@@@TEAP@IBP$I@@ GA0X@BP@EAPXF@@$IBP$@A0XF@@@@APXF@@$IBP$IBP@F
APTEAPXF@@$IBP$IBP@FAPTEAPXFA0\@BP$IBP$I@@T@APXF@@\@BP$IBP$IBP$@BP@G@@$@BP$IBP$IBP$IBP$I@@$IBP$IBP$IBP@a') ; colorMapFromArray:#[0 0 0 255 128 0 255 168 88 192 192 0 255 255 0 160 160 160 195 195 195 220 220 220 255 255 255 0 0 0]; mask:((ImageMask new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@A@@O@A>@''<W?#?>_?0?:G?0?_!!?<C? _?@?8A]@@ @b') ; yourself); yourself]
!

defaultPackageIcon
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self defaultPackageIcon inspect
     ImageEditor openOnClass:self andSelector:#defaultPackageIcon
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
	constantNamed:#'Packages::PackageSelector::HierarchicalPackageSelector class defaultPackageIcon'
	ifAbsentPut:[(Depth8Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
APTEAPT@@@TEAP@EAPTEAPTEAP@@@0L@@@@C@@@EAPTE@@@C@0@@@PH@@@LC@@@E@@LC@@@A@PDB@ H@@@LC@@@@@@DA@PDA@ HB@ H@@@@E@@L@@@DA@PHB
@ @@@@TEAP@C@0L@@@DB@@@B@ @EAPT@@0LC@0L@@@HB@ H@APTE@@LC@0LC@0HB@ HB@@TEAP@C@0LC@0LB@ HB@ @EAPT@@0LC@0LC@ HB@ H@APTE@@LC
@0LC@0HB@ HB@@TEAP@B@0LC@0LB@ HB@@@EAPTE@@@B@0LC@ H@@@TEAPTEAPTE@@@B@0@@APTEAPTEAPTEAPTE@@@EAPTEAPTEAP@a') ; colorMapFromArray:#[0 0 0 128 170 0 192 220 0 230 255 192 255 255 255 0 0 0]; mask:((ImageMask new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'A"@_>G?>?????7?<_?1??G?<_?1??G?<_?0?<@?@@0@b') ; yourself); yourself]
!

loadedPackageIcon
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self loadedPackageIcon inspect
     ImageEditor openOnClass:self andSelector:#loadedPackageIcon
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
	constantNamed:#'Packages::PackageSelector::HierarchicalPackageSelector class loadedPackageIcon'
	ifAbsentPut:[(Depth8Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
APTEAP@@@@@@@@@@APTEAPTE@@@@@@@@@@@@@@@EAPT@@@@@@@@@@0L@@@@@@@@E@@@@@@@C@0LC@0L@@@@@@@@@@@LC@0LC@0LC@0L@@@@E@@L@@@LC@0LC
@0@@@@TEAP@C@0L@@@LC@@@B@ @EAPT@@0LC@0L@@@HB@ H@APTE@@LC@0LC@0HB@ HB@@TEAP@C@0LC@0LB@ HB@ @EAPT@@0LC@0LC@ HB@ H@APTE@@LC
@0LC@0HB@ HB@@TEAP@B@0LC@0LB@ HB@@@EAPTE@@@B@0LC@ H@@@TEAPTEAPTE@@@B@0@@APTEAPTEAPTEAPTE@@@EAPTEAPTEAP@a') ; colorMapFromArray:#[0 0 0 128 128 0 192 192 0 255 255 192 255 255 255 0 0 0]; mask:((ImageMask new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@A @_ G?!!??G?<_?1??G?<_?1??G?<_?0?<@?@@0@b') ; yourself); yourself]
!

miniBasePackage
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self miniBasePackage inspect
     ImageEditor openOnClass:self andSelector:#miniBasePackage
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
	constantNamed:#'Packages::PackageSelector::HierarchicalPackageSelector class miniBasePackage'
	ifAbsentPut:[(Depth8Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
APTEAPT@@@TEAP@EAPTEAPTEAP@@@0L@@@@C@@@EAPTE@@@C@0@@@PH@@@LC@@@E@@LC@@@A@PDB@ H@@@LC@@@@@@DA@PDA@ HB@ H@@@@E@@L@@@DA@PHB
@ @@@@TEAP@C@0L@@@DB@@@B@ @EAPT@@0LC@0L@A@PDA@PDA@PE@@LC@0LC@0PDA@@@A@PDAP@C@0LC@0LDA@@DA@@DA@T@@0LC@0LCA@@@@@@@@@PE@@LC
@0LC@0P@@0LB@ @DAP@B@0LC@0LD@@LC@ H@A@TE@@@B@0LCA@@C@0HB@@PEAPTE@@@B@0PD@@@@@@PDAPTEAPTE@@@DA@PDA@PDA@@a') ; colorMapFromArray:#[0 0 0 128 128 0 192 192 0 255 255 192 255 255 255 0 0 0]; mask:((ImageMask new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'A"@_>G?>?????7?<_?1??7??_?=??7??_?<??0??@?<b') ; yourself); yourself]
!

miniPackageApplications
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self miniPackageApplications inspect
     ImageEditor openOnClass:self andSelector:#miniPackageApplications
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
	constantNamed:#'Packages::PackageSelector::HierarchicalPackageSelector class miniPackageApplications'
	ifAbsentPut:[(Depth8Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
B (JB (@@@(JB @JB (JB (JB @@B@ @@@@H@@@JB (J@@@HB@@C@0PCB@ H@@@J@@ H@@LC@0LDA@PCB@ H@@@@@0@@@@@@@@@@@@P@@@@J@@ @A0HB@ \A
A0@H@@(JB @H@@\IBP$IBP\@@@@JB (@B@@GBP$IBP$G@@\@B (J@@ @A0$IBP$IA0@G@@@JB @H@@\GA0\GA0\@A0T@B (@B@@@@@@@@@@@@@\F@@(J@@ H
B@ @A0\GA0\GA @JB @DB@ H@@@FA XFA X@B (J@@@DB@ H@@@@@@@@@@(JB (J@@@DB@@@B (JB (JB (JB (J@@@JB (JB (JB @a') ; colorMapFromArray:#[0 0 0 88 88 88 0 0 255 128 128 0 192 192 0 128 128 128 160 160 160 195 195 195 255 255 192 255 255 255 0 0 0]; mask:((ImageMask new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'A"@_>G?>?????7?<_?1??G?>_?9??''?>_?8?? ?@@0@b') ; yourself); yourself]
!

miniPackageEditors
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self miniPackageEditors inspect
     ImageEditor openOnClass:self andSelector:#miniPackageEditors
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
	constantNamed:#'Packages::PackageSelector::HierarchicalPackageSelector class miniPackageEditors'
	ifAbsentPut:[(Depth8Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
BP$IBP$@@@$I@@@IBP$IBP$IBP@@A0\@@@\G@@@IBP$I@@@GA0@@@PL@@@\G@@@I@@\G@@@A@PDC@0L@@@\G@@@@@@DA@PDA@0LC@0L@@@@I@@ @@@DA@PLC
@0@@@@$IBP@HA0\@@@DC@@@C@0@IBP$@B@\GA0\@@@LC@0L@BP$I@@ GA0\GA0LC@0LC@@$IBP@HA0\G@@@@@@LC@0@IBP$@B@\@@@THB@T@@@L@@@$I@@@@
AP HA XHB@T@@@H@@@THB@ FA  HAP@@A@H@@@@@AP HB@ E@@@D@ @@BP$IBP@@APT@@@ B@@@IBP$IBP$IBP@@BP@@@@$IBP$IBP@a') ; colorMapFromArray:#[0 0 0 128 128 0 255 168 88 192 192 0 255 220 168 195 195 195 192 192 255 255 255 192 255 255 255 0 0 0]; mask:((ImageMask new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'A&@_>G?>?????7?<_?1??G?<_?1??''???????C?0C\@b') ; yourself); yourself]
!

miniPackageFavourites
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self miniPackageFavourites inspect
     ImageEditor openOnClass:self andSelector:#miniPackageFavourites
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
	constantNamed:#'Packages::PackageSelector::HierarchicalPackageSelector class miniPackageFavourites'
	ifAbsentPut:[(Depth8Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
BP$IBP$@@@$IBP@IBP$IBP$IBP@@B@ @@@@H@@@IBP$I@@@HB@@@A@X@@@ H@@@I@@ H@@@DA@PFA X@@@ H@@@@@@PDA@PDA XFA X@@@@I@@ @@@PDA@XF
A @@@@$IBP@HB@ @@@PF@@@FA @IBP$@B@ HB@ @@@XFA X@BP$I@@ HB@ HB@X@@@XF@@@IBP@HB@ HB@ @APHA@@LB@@$@B@ HB@ @AP\E@@HC@0@I@@ H
B@ H@@TGAPHC@0H@BP@FB@ HB@ @APLE@0L@BP$I@@@FB@ HA @E@0H@BP$IBP$I@@@FB@@@@@L@BP$IBP$IBP$I@@@IBP$@BP$IBP@a') ; colorMapFromArray:#[0 0 0 128 0 0 192 0 0 255 0 0 128 128 0 255 128 0 192 192 0 255 192 192 255 255 192 0 0 0]; mask:((ImageMask new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'A"@_>G?>?????7?<_?1??G?>_?=??7??_?8??@?8@1@b') ; yourself); yourself]
!

miniPackageGames
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self miniPackageGames inspect
     ImageEditor openOnClass:self andSelector:#miniPackageGames
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
	constantNamed:#'Packages::PackageSelector::HierarchicalPackageSelector class miniPackageGames'
	ifAbsentPut:[(Depth8Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
B (JB (@@@(JB @JB (JB (JB @@B@ @@@@H@@@JB (J@@@HB@@@@0P@B@ H@@@J@@ H@@@C@0LDA@@@B@ @B @@@@LC@0LCA@PDA@@@@@@J@@ @@@LC@0PD
@@H@@@(JB @HB@ @@@LD@@@G@@PJB (@B@ HB@ @@@@@A0@DB (J@@ HB@ HB@PD@@\@A@(JB @HB@ HB@ D@@@G@@PJB (@B@ HB@ @@PD@A0@@B (J@@ H
B@ H@@\IA @FA @@B @DB@ HB@@GA0\IA \E@@(J@@@DB@ H@@XGA0TEAP@JB (J@@@DB@@@@@XE@@@JB (JB (J@@@JB (@@@(JB @a') ; colorMapFromArray:#[0 0 0 192 0 0 255 0 0 128 128 0 192 192 0 128 128 128 160 160 160 195 195 195 255 255 192 255 255 255 0 0 0]; mask:((ImageMask new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'A"@_>G?>??;??7?<_?1??G?<_?1??G??_?<??0?>@1 b') ; yourself); yourself]
!

miniPackageGraphics
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self miniPackageGraphics inspect
     ImageEditor openOnClass:self andSelector:#miniPackageGraphics
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
	constantNamed:#'Packages::PackageSelector::HierarchicalPackageSelector class miniPackageGraphics'
	ifAbsentPut:[(Depth8Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
G1<_G1<@@A<_G0@_G1<_G1<_G0@@GQ4@@@@]@@@_G1<_@@@]GP@@DQP@GQ4]@@@_@A4]@@@QDQDTE@@@GQ4]@@@@@ADQDQDQEAPTE@@@@@@_@A4@@ADQDQPT
E@@]@A<_G0@]GQ4@@ADT@@@TE@@_G1<@GQ4]GQ4@@@@@@@@@@@@_@A4]GQ4]@A AE!!XAFA @@@@@@@@@@@@JA@HGC!!DM@@@SD1LSD1L@B0TBB@<TD @@D!!HR
D!!HR@@0F@0$PEQL@@@@@@@@@@@@[F!!$^GA4W@A<_@@@TGQ4@@@@@@@@@@@@_G1<_@@@TGP@@G1<_G1<_G1<_G1<_@@@_G1<_G1<_G0@a') ; colorMapFromArray:#[0 0 0 88 88 88 0 0 128 0 0 255 0 128 0 0 192 0 0 128 0 0 128 128 0 192 192 0 255 255 128 0 0 192 0 0 255 0 0 192 88 0 128 0 128 192 0 192 255 0 255 128 128 0 255 128 0 255 168 88 192 192 0 255 255 0 128 128 128 255 220 168 195 195 195 192 192 255 192 255 192 255 192 192 255 192 255 255 255 192 255 255 255 0 0 0]; mask:((ImageMask new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'A"@_>G?>?????7?<_?1??7????????????<??0?@@0@b') ; yourself); yourself]
!

miniPackageMultimedia
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self miniPackageMultimedia inspect
     ImageEditor openOnClass:self andSelector:#miniPackageMultimedia
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
	constantNamed:#'Packages::PackageSelector::HierarchicalPackageSelector class miniPackageMultimedia'
	ifAbsentPut:[(Depth8Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
BP$IBP$@@@$IBP@IBP$IBP$IBP@@A0\@@@@G@@@IBP$I@@@GA0@@@PH@@@\G@@@I@@\G@@@A@PDB@ H@@@\G@@@@@@DA@PDA@ HB@ @@@@@I@@\@@@DA@PHB
@@@B@@$IBP@GA0\@@@D@@@HB@ @IBP$@A0\GA0\@@ H@@@@@BP$I@@\GA0\GA0H@A@PD@@$IBP@GA0\GA0\@A PDA@ @BP$@A0\GA0\@A@PC@@LDA@@I@@\G
A0\G@@PD@@\@A@P@BP@BA0\GA0@DA@L@APPD@@$I@@@BA0\G@@ DA@PE@@$IBP$I@@@BA0@@A@PD@@$IBP$IBP$I@@@IBP@@@@$IBP@a') ; colorMapFromArray:#[0 0 0 128 128 0 192 192 0 160 160 160 195 195 195 192 192 255 192 255 255 255 255 192 255 255 255 0 0 0]; mask:((ImageMask new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'A"@_>G?>?????7?<_?1??G?<_?9??7??_?<?? ?<@3 b') ; yourself); yourself]
!

miniPackageNetwork
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self miniPackageNetwork inspect
     ImageEditor openOnClass:self andSelector:#miniPackageNetwork
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
	constantNamed:#'Packages::PackageSelector::HierarchicalPackageSelector class miniPackageNetwork'
	ifAbsentPut:[(Depth8Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
B (JB (@@@(JB @JB (JB (JB @@B@ @@@@H@@@JB (J@@@HB@@@@0P@@@ H@@@J@@ H@@@C@0LDA@P@@@ H@@@@@@LC@0LCA@PDA@P@@@@J@@ @@@LC@@@@
@@PD@@(JB @HB@ @@@$IBP$@A@@JB (@B@ HB@@GA XG@@@@@@(J@@ HB@ @A0HB@@$IBP$@B @HB@ H@@$IBP@G@ HE@@(@B@ HB@ EAPT@A0DAAP@J@@ H
B@ @A0\G@@$IBP@JB @DB@ H@@@@@@T@@@@E@@(J@@@DB@ HA@P@APTEAP@JB (J@@@DB@@@@@\GA0@JB (JB (J@@@JB (@@@@JB @a') ; colorMapFromArray:#[0 0 0 0 0 128 0 0 255 128 128 0 192 192 0 128 128 128 128 128 255 195 195 195 255 255 192 255 255 255 0 0 0]; mask:((ImageMask new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'A"@_>G?>?????7?<_?1??''??_?=??7?>_?<??0?>@10b') ; yourself); yourself]
!

miniPackageSettings
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self miniPackageSettings inspect
     ImageEditor openOnClass:self andSelector:#miniPackageSettings
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
	constantNamed:#'Packages::PackageSelector::HierarchicalPackageSelector class miniPackageSettings'
	ifAbsentPut:[(Depth8Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
B@ HB@ @@@ HB@@HB@ HB@ HB@@@A X@@@@F@@@HB@ H@@@FA @@@PH@@@XF@@@H@@XF@@@A@PDB@ H@@@XF@@@@@@DA@PDA@ HB@ H@@@@H@@X@@@DA@PHB
@ @@@@ HB@@FA X@@@DB@@@@@ @HB@ @A XFA X@@@@@@@H@B@ H@@XFA XF@@P@A0T@A0@HB@@FA XFA X@APTEAP@HB@ @A XFA X@A0TC@@TE@@ H@@XF
A XF@@TE@@HGAP@HB@@BA XFA X@APTGAP@HB@ H@@@BA X@A0@EAP@E@@ HB@ H@@@BA @@@@@H@@ HB@ HB@ H@@@HB@ HB@ HB@@a') ; colorMapFromArray:#[0 0 0 128 128 0 192 192 0 128 128 128 160 160 160 195 195 195 255 255 192 255 255 255 0 0 0]; mask:((ImageMask new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'A"@_>G?>?????7?<_?1??G?>_?1??''?>_?0?? ?4@0@b') ; yourself); yourself]
!

miniPackageSystem
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self miniPackageSystem inspect
     ImageEditor openOnClass:self andSelector:#miniPackageSystem
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
	constantNamed:#'Packages::PackageSelector::HierarchicalPackageSelector class miniPackageSystem'
	ifAbsentPut:[(Depth8Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
BP$IBP$IBP$IBP$@BP$IBP$IBP$IBP$IBP$@A@@@BP$IBP$IBP$IBP$@A@HD@0@IBP$IBP$I@@$I@@H@@@DC@@$IBP@I@@ @@@PD@@@D@@$IBP@H@@ GA0@@
@PLBA@@IBP@HB@ GA0\FA @@A@@IBP$I@@ GA0\FAPT@BP@IBP$I@@ GA0@@@@TEAP@IBP$I@@ GA0X@BP@EAPXF@@$IBP$@A0XF@@@@APXF@@$IBP$IBP@F
APTEAPXF@@$IBP$IBP@FAPTEAPXFA0\@BP$IBP$I@@T@APXF@@\@BP$IBP$IBP$@BP@G@@$@BP$IBP$IBP$IBP$I@@$IBP$IBP$IBP@a') ; colorMapFromArray:#[0 0 0 255 128 0 255 168 88 192 192 0 255 255 0 160 160 160 195 195 195 220 220 220 255 255 255 0 0 0]; mask:((ImageMask new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@A@@O@A>@''<W?#?>_?0?:G?0?_!!?<C? _?@?8A]@@ @b') ; yourself); yourself]
!

miniPackageUtilities
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self miniPackageUtilities inspect
     ImageEditor openOnClass:self andSelector:#miniPackageUtilities
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
	constantNamed:#'Packages::PackageSelector::HierarchicalPackageSelector class miniPackageUtilities'
	ifAbsentPut:[(Depth8Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
BP$IBP$@@@$IBP@IBP$IBP$IBP@@A0\@@@@G@@@IBP$I@@@GA0@@@0T@@@\G@@@I@@\G@@@C@0LEAPT@@@\G@@@@@@LC@0LCAPTEAPT@@@@I@@\@@@LC@0L@
@@@@@@$IBP@GA0\@@@L@@@@@AP@IBP$@A0\GA0\@A X@AP@B@@$I@@\GA0\@A XA@@TB@@H@BP@GA0\@A XAA@@@@ HB@@$@A0\GA0@A@@@D@@H@@@$I@@\G
A0\G@@T@@@P@@@$IBP@EA0\GA0\@@ H@A@@IBP$I@@@EA0\@@ H@@@@D@@$IBP$I@@@E@@H@BP$I@@P@BP$IBP$I@@@@BP$IBP$@BP@a') ; colorMapFromArray:#[0 0 0 88 88 88 0 192 192 128 128 0 255 168 88 192 192 0 160 160 160 255 255 192 255 255 255 0 0 0]; mask:((ImageMask new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'A"@_>G?>?????7?<_?1??''??_?=??''?<_?0?? ?G@8Hb') ; yourself); yourself]
!

noramlPackage
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self noramlPackage inspect
     ImageEditor openOnClass:self andSelector:#noramlPackage
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
	constantNamed:#'Packages::PackageSelector::HierarchicalPackageSelector class noramlPackage'
	ifAbsentPut:[(Depth8Image new) width: 32; height: 32; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
APTEAPTEAPTEAPTE@@@EAPTEAP@EAPTEAPTEAPTEAPTEAPTEAPTEAPTE@@@DA@@EAPT@A@@@APTEAPTEAPTEAPTEAPTEAPTE@@@DA@LCA@@E@@PCA@P@@@TE
APTEAPTEAPTEAPTE@@@DA@LC@0LC@@@D@0LC@0PD@@@EAPTEAPTEAPTE@@@DA@LC@0LC@@@A@ @@@0LC@0LDA@@@APTEAPTE@@@DA@LC@0LC@@@A@PDA@ D@
@@LC@0LCA@P@@@TE@@@DA@LC@0LC@@@A@PDA@PHA@ DB@@@C@0LC@0PD@@@E@@PC@0LC@@@A@PDA@PDA@PHA@ DB@P@@@0LC@0L@APTE@@PC@@@A@PDA@PDA
@PDB@PHA@ DB@PH@@@LC@@TE@@@@@@@A@PDA@PDA@PDA@PDB@PHA@ DB@PHA@@@@@@@E@@@C@0@@@PDA@PDA@PDA@ DB@PHA@ DB@@@C@0@@APTEAP@@@0L@
@@DA@PDA@PDA@ DB@PHA@@@C@0@@APTEAPTE@@P@@@LC@@@A@PDA@PHA@ DB@@@C@0@@@ @EAPTEAPT@A@LC@@@C@0@@@PDA@PHA@@@C@0@@@ HB@@TEAPTE
AP@D@0LC@0@@@0L@@@DB@@@C@0@@@ HB@ H@APTEAPTE@@PC@0LC@0L@@@LC@@@C@0@@@ HB@ HB@ @EAPTEAPT@A@LC@0LC@0LC@@@C@ @@@ HB@ HB@ HB
@@TEAPTEAP@D@0LC@0LC@0LC@0LB@ HB@ HB@ HB@ H@APTEAPTE@@PC@0LC@0LC@0LC@0HB@ HB@ HB@ HB@ @EAPTEAPT@A@LC@0LC@0LC@0LC@ HB@ HB
@ HB@ HB@@TEAPTEAP@D@0LC@0LC@0LC@0LB@ HB@ HB@ HB@ H@APTEAPTE@@PC@0LC@0LC@0LC@0HB@ HB@ HB@ HB@ @EAPTEAPT@A@LC@0LC@0LC@0LC
@ HB@ HB@ HB@ HB@@TEAPTEAP@D@0LC@0LC@0LC@0LB@ HB@ HB@ HB@ H@APTEAPTE@@HC@0LC@0LC@0LC@0HB@ HB@ HB@ HB@P@EAPTEAPT@@@HB@0LC
@0LC@0LC@ HB@ HB@ HB@PD@@@TEAPTEAPTE@@@B@ LC@0LC@0LB@ HB@ HB@PD@@@TEAPTEAPTEAPTEAP@@@ HC@0LC@0HB@ HB@PD@@@TEAPTEAPTEAPTE
APTEAPT@@@HB@0LC@ HB@PD@@@TEAPTEAPTEAPTEAPTEAPTEAPTE@@@B@ LB@PD@@@TEAPTEAPTEAPTEAPTEAPTEAPTEAPTEAP@@@ D@@@TEAPTEAPTEAPTE
APTEAPTEAPTEAPTEAPTEAPT@@@TEAPTEAPTEAPTEAPTEAP@a') ; colorMapFromArray:#[0 0 0 128 128 0 192 192 0 255 255 192 255 255 255 0 0 0]; mask:((ImageMask new) width: 32; height: 32; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
@@0P@@@>O@@@?7<@@???0@????@????<?????7????8????<?????7????8_???8G???>A???? _???8G???>A???? _???8G???>A???? _???8G???>A??
?? _???8G???>A???? G??? @_?? @A?? @@G? @@@_ @@@A @@b') ; yourself); yourself]
!

normalApplications
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self normalApplications inspect
     ImageEditor openOnClass:self andSelector:#normalApplications
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
	constantNamed:#'Packages::PackageSelector::HierarchicalPackageSelector class normalApplications'
	ifAbsentPut:[(Depth8Image new) width: 32; height: 32; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
B (JB (JB (JB (J@@@JB (JB @JB (JB (JB (JB (JB (JB (JB (J@@@IBP@JB (@BP@@B (JB (JB (JB (JB (JB (J@@@IBP HBP@J@@$HBP$@@@(J
B (JB (JB (JB (J@@@IBP HB@ H@@@IB@ HB@$I@@@JB (JB (JB (J@@@IBP HB@ H@@@CA@@@B@ HB@ IBP@@B (JB (J@@@IBP HB@ H@@@C@0LCA@L@
@@ HB@ HBP$@@@(J@@@IBP HB@ H@@@C@0LC@0PCA@LD@@@HB@ HB@$I@@@J@@$HB@ H@@@C@0LC@0LC@0PCA@LD@0@@B@ HB@ @B (J@@$H@@@C@0LC@0LC
@0LD@0PCA@LD@0P@@@ H@@(J@@@@@@@C@0L@@@@@@@@@@@@@@@@@@@@D@0PC@@@@@@@J@@@HB@@@@0@GA0HB@ HB@ \G@P\G@@LD@@@HB@@@B (JB @@B@ @
@@\G@ HB@ HBA0\AA0\@@@@HB@@@B (JB (J@@$@@@ @@PDA@PDA@PDA@PDA@P@HB@@@A@@JB (JB (@BP H@@@GBP$IBP$IBP$IBP$G@@@@@@@D@@(JB (J
B @IB@ H@@\IBP$IBP$IBP$IBP\@AP\G@@P@B (JB (J@@$HB@ @A0$IBP$IBP$IBP$IA0@EA0\@A@@JB (JB (@BP HB@@GBP$IBP$IBP$IBP$G@@TEAP@D
@@(JB (JB @IB@ H@@\IBP$IBP$IBP$IBP\@A $G@@@@@@@JB (J@@$HB@ @A0$IBP$IBP$IBP$IA0@FBP\@AP\G@@(JB (@BP HB@@GA0\GA0\GA0\GA0\G
@@XIA0@EA0\@B (JB @IB@ H@@@@@@@@@@@@@@@@@@@@A $G@@TEAP@JB (J@@$HB@ HB@ H@@XFA XFA XFA XFBP\@A $G@@(JB (@BP HB@ HB@ @A0$I
BP$IBP$IBP$IA0@FBP\@B (JB @IB@ HB@ HB@@GA0\GA0\GA0\GA0\G@@XIA0@JB (J@@PHB@ HB@ H@@@@@@@@@@@@@@@@@@@@A $G@@(JB (@@@PDB@ H
B@ HB@ H@@XFA XFA XFA XFBP\@B (JB (J@@@DA@ HB@ HB@ @A0$IBP$IBP$IBP$IA0@JB (JB (JB @@A@PHB@ HB@@GA0\GA0\GA0\GA0\G@@(JB (J
B (JB (@@@PDB@ H@@@@@@@@@@@@@@@@@@@@B (JB (JB (JB (J@@@DA@ D@0L@@@(JB (JB (JB (JB (JB (JB (JB (JB @@A@L@@@(JB (JB (JB (J
B (JB (JB (JB (JB (JB (@@@(JB (JB (JB (JB (JB @a') ; colorMapFromArray:#[0 0 0 88 88 88 0 0 255 128 128 0 192 192 0 128 128 128 160 160 160 195 195 195 255 255 192 255 255 255 0 0 0]; mask:((ImageMask new) width: 32; height: 32; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
@@0P@@@>O@@@?7<@@???0@????@????<?????7????8????<?????7????8_???8G???>A???? _???8G???>A???? _???>G????!!????8_???>G????!!??
??8_???>G????!!????8G???>@_??? A???8@G? @@@_ @@@A @@b') ; yourself); yourself]
!

normalEditors
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self normalEditors inspect
     ImageEditor openOnClass:self andSelector:#normalEditors
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
	constantNamed:#'Packages::PackageSelector::HierarchicalPackageSelector class normalEditors'
	ifAbsentPut:[(Depth8Image new) width: 32; height: 32; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
B0,KB0,KB0,KB0,K@@@KB0,KB0@KB0,KB0,KB0,KB0,KB0,KB0,KB0,K@@@JB @KB0,@B @@B0,KB0,KB0,KB0,KB0,KB0,K@@@JB $IB @K@@(IB (@@@,K
B0,KB0,KB0,KB0,K@@@JB $IBP$I@@@JBP$IBP(J@@@KB0,KB0,KB0,K@@@JB $IBP$I@@@AA@@@BP$IBP$JB @@B0,KB0,K@@@JB $IBP$I@@@A@PDAA@D@
@@$IBP$IB (@@@,K@@@JB $IBP$I@@@A@PDA@PPAA@DD@@@IBP$IBP(J@@@K@@(IBP$I@@@A@PDA@PDA@PPAA@DD@P@@BP$IBP$@B0,K@@(I@@@A@PDA@PDA
@PDD@PPAA@DD@PP@@@$I@@,K@@@@@@@A@PDA@PDA@PDA@PDD@PPAA@DD@PPA@@@@@@@K@@@IBP@@@PDA@PDA@PDAA@DD@PPAA@DD@@@IBP@@B0,KB0@@BP$@
@@DA@PDA@PDAA@DD@PPA@@@IBP@@B0,KB0,K@@(@@@$I@@@A@PDA@PPAA@DD@@@IBP@@A@@KB0,KB0,@B $I@@@IBP@@@PDA@PPA@@@IBP@@A@PD@@,KB0,K
B0@JBP$IBP@@BP$@@@DD@@@IBP@@A@PDA@P@B0,KB0,K@@(IBP$IBP$@@@$I@@@IBP@@A@PDA@PDA@@KB0,KB0,@B $IBP$IBP$I@@@IA@@@A@PDA@PDA@PD
@@,KB0,KB0@JBP$IBP$IBP$IBP$DA@PDA@PDA@PDA@P@B0,KB0,K@@(IBP$IBP$IBP$I@@@DA@PDA@PDA@PDA@@KB0,KB0,@B $IBP$IBP$I@@@FB @@A@PD
A@PDA@PD@@,KB0,KB0@JBP$IBP$I@@@FB (JB X@@@PDA@PDA@P@B0,KB0,K@@(IBP$I@@@FB (JA0\JB (F@@@DA@PDA@@@@@,KB0,@B $I@@@FB (JA0(J
B \GB (JA @@A@P@@@TE@@,KB0@J@@@FB (JB (GA0\JB \GB (JB X@@@TE@0L@B0,K@@@FB (JA0\GB (JB \JB (JB X@@@TEAPLC@ @K@@@FB (JB (J
B \GA0(JB (JB X@@@TEAPLC@ @@B0@FB (JB (JB (JB (JA0(JB X@@@TEAPLC@ @@B0,KB0@@A (JB (JB (JB (JB X@@@TEAPLC@ @@B0,KB0,KB0,@
@@XJB (JB (JB X@@@TEAPLC@ @@B0,KB0,KB0,KB0,K@@@FB (JB X@@@@HB@LC@ @@B0,KB0,KB0,KB0,KB0,KB0@@B X@@@,K@@(J@ @@B0,KB0,KB0,K
B0,KB0,KB0,KB0,@@@,KB0,@@@@@B0,KB0,KB0,KB0,KB0@a') ; colorMapFromArray:#[0 0 0 128 128 0 255 128 0 255 168 88 192 192 0 255 220 168 195 195 195 192 192 255 192 255 255 255 255 192 255 255 255 0 0 0]; mask:((ImageMask new) width: 32; height: 32; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
@@0P@@@>O@@@?7<@@???0@????@????<?????7????8????<?????7????8_???8G???>A???? _???8G???>A???? _???8G???>A???? _???8G????!!??
??<_????G????7????;????8_???8A???8@G??8@@_''8@@A!!8@@b') ; yourself); yourself]
!

normalInspectPackage
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self normalInspectPackage inspect
     ImageEditor openOnClass:self andSelector:#normalInspectPackage
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
	constantNamed:#'Packages::PackageSelector::HierarchicalPackageSelector class normalInspectPackage'
	ifAbsentPut:[(Depth8Image new) width: 32; height: 32; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
APTEAPTEAPTEAPTE@@@EAPTEAP@EAPTEAPTEAPTEAPTEAPTEAPTEAPTE@@@DA@@EAPT@A@@@APTEAPTEAPTEAPTEAPTEAPTE@@@DA@LCA@@E@@PCA@P@@@TE
APTEAPTEAPTEAPTE@@@DA@LC@0LC@@@D@0LC@0PD@@@EAPTEAPTEAPTE@@@DA@LC@0LC@@@A@ @@@0LC@0LDA@@@APTEAPTE@@@DA@LC@0LC@@@A@PDA@ D@
@@LC@0LCA@P@@@TE@@@DA@LC@0LC@@@A@PDA@PHA@ DB@@@C@0LC@0PD@@@E@@PC@0LC@@@A@PDA@PDA@PHA@ DB@P@@@0LC@0L@APTE@@PC@@@A@PDA@PDA
@PDB@PHA@ DB@PH@@@LC@@TE@@@@@@@A@PDA@PDA@PDA@PDB@PHA@ DB@PHA@@@@@@@E@@@C@0@@@PDA@PDA@PDA@ DB@PHA@ DB@@@C@0@@APTEAP@@@0L@
@@DA@PDA@PDA@ DB@PHA@@@C@0@@APTEAPTE@@P@@@LC@@@A@PDA@PHA@ DB@@@C@0@@@ @EAPTEAPT@A@LC@@@C@0@@@PDA@PHA@@@C@0@@@ HB@@TEAPTE
AP@D@0LC@0@@@0L@@@DB@@@C@0@@@ HB@ H@APTEAPTE@@PC@0LC@0L@@@LC@@@C@0@@@ HB@ HB@ @EAPTEAPT@A@LC@0LC@0LC@@@C@ @@@ HB@ HB@ HB
@@TEAPTEAP@D@0LC@0LC@0LC@0LB@ HB@ HB@ HB@ H@APTEAPTE@@PC@0LC@0LC@0LC@0HB@ HB@ HB@ HB@ @EAPTEAPT@A@LC@0LC@0LC@0LC@ HB@ HB
@ HB@ HB@@TEAPTEAP@D@0LC@0LC@0LC@0LB@ HB@ HB@ HB@ H@APTEAPTE@@PC@0LC@0LC@0LC@0HB@ HB@ HB@ HB@ @EAPTEAPT@A@LC@0LC@0LC@0LC
@ HB@ HB@ HB@ HB@@TEAPTEAP@D@0LC@0LC@0LC@0LB@ HB@ HB@ HB@ H@APTEAPTE@@HC@0LC@0LC@0LC@0HB@ HB@ HB@ HB@P@EAPTEAPT@@@HB@0LC
@0LC@0LC@ HB@ HB@ HB@PD@@@TEAPTEAPTE@@@B@ LC@0LC@0LB@ HB@ HB@PD@@@TEAPTEAPTEAPTEAP@@@ HC@0LC@0HB@ HB@PD@@@TEAPTEAPTEAPTE
APTEAPT@@@HB@0LC@ HB@PD@@@TEAPTEAPTEAPTEAPTEAPTEAPTE@@@B@ LB@PD@@@TEAPTEAPTEAPTEAPTEAPTEAPTEAPTEAP@@@ D@@@TEAPTEAPTEAPTE
APTEAPTEAPTEAPTEAPTEAPT@@@TEAPTEAPTEAPTEAPTEAP@a') ; colorMapFromArray:#[0 0 0 128 128 0 192 192 0 255 255 192 255 255 255 0 0 0]; mask:((ImageMask new) width: 32; height: 32; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
@@0P@@@>O@@@?7<@@???0@????@????<?????7????8????<?????7????8_???8G???>A???? _???8G???>A???? _???8G???>A???? _???8G???>A??
?? _???8G???>A???? G??? @_?? @A?? @@G? @@@_ @@@A @@b') ; yourself); yourself]
!

normalPackage
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self normalPackage inspect
     ImageEditor openOnClass:self andSelector:#normalPackage
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
	constantNamed:#'Packages::PackageSelector::HierarchicalPackageSelector class normalPackage'
	ifAbsentPut:[(Depth8Image new) width: 32; height: 32; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
APTEAPTEAPTEAPTE@@@EAPTEAP@EAPTEAPTEAPTEAPTEAPTEAPTEAPTE@@@DA@@EAPT@A@@@APTEAPTEAPTEAPTEAPTEAPTE@@@DA@LCA@@E@@PCA@P@@@TE
APTEAPTEAPTEAPTE@@@DA@LC@0LC@@@D@0LC@0PD@@@EAPTEAPTEAPTE@@@DA@LC@0LC@@@A@ @@@0LC@0LDA@@@APTEAPTE@@@DA@LC@0LC@@@A@PDA@ D@
@@LC@0LCA@P@@@TE@@@DA@LC@0LC@@@A@PDA@PHA@ DB@@@C@0LC@0PD@@@E@@PC@0LC@@@A@PDA@PDA@PHA@ DB@P@@@0LC@0L@APTE@@PC@@@A@PDA@PDA
@PDB@PHA@ DB@PH@@@LC@@TE@@@@@@@A@PDA@PDA@PDA@PDB@PHA@ DB@PHA@@@@@@@E@@@C@0@@@PDA@PDA@PDA@ DB@PHA@ DB@@@C@0@@APTEAP@@@0L@
@@DA@PDA@PDA@ DB@PHA@@@C@0@@APTEAPTE@@P@@@LC@@@A@PDA@PHA@ DB@@@C@0@@@ @EAPTEAPT@A@LC@@@C@0@@@PDA@PHA@@@C@0@@@ HB@@TEAPTE
AP@D@0LC@0@@@0L@@@DB@@@C@0@@@ HB@ H@APTEAPTE@@PC@0LC@0L@@@LC@@@C@0@@@ HB@ HB@ @EAPTEAPT@A@LC@0LC@0LC@@@C@ @@@ HB@ HB@ HB
@@TEAPTEAP@D@0LC@0LC@0LC@0LB@ HB@ HB@ HB@ H@APTEAPTE@@PC@0LC@0LC@0LC@0HB@ HB@ HB@ HB@ @EAPTEAPT@A@LC@0LC@0LC@0LC@ HB@ HB
@ HB@ HB@@TEAPTEAP@D@0LC@0LC@0LC@0LB@ HB@ HB@ HB@ H@APTEAPTE@@PC@0LC@0LC@0LC@0HB@ HB@ HB@ HB@ @EAPTEAPT@A@LC@0LC@0LC@0LC
@ HB@ HB@ HB@ HB@@TEAPTEAP@D@0LC@0LC@0LC@0LB@ HB@ HB@ HB@ H@APTEAPTE@@HC@0LC@0LC@0LC@0HB@ HB@ HB@ HB@P@EAPTEAPT@@@HB@0LC
@0LC@0LC@ HB@ HB@ HB@PD@@@TEAPTEAPTE@@@B@ LC@0LC@0LB@ HB@ HB@PD@@@TEAPTEAPTEAPTEAP@@@ HC@0LC@0HB@ HB@PD@@@TEAPTEAPTEAPTE
APTEAPT@@@HB@0LC@ HB@PD@@@TEAPTEAPTEAPTEAPTEAPTEAPTE@@@B@ LB@PD@@@TEAPTEAPTEAPTEAPTEAPTEAPTEAPTEAP@@@ D@@@TEAPTEAPTEAPTE
APTEAPTEAPTEAPTEAPTEAPT@@@TEAPTEAPTEAPTEAPTEAP@a') ; colorMapFromArray:#[0 0 0 128 128 0 192 192 0 255 255 192 255 255 255 0 0 0]; mask:((ImageMask new) width: 32; height: 32; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
@@0P@@@>O@@@?7<@@???0@????@????<?????7????8????<?????7????8_???8G???>A???? _???8G???>A???? _???8G???>A???? _???8G???>A??
?? _???8G???>A???? G??? @_?? @A?? @@G? @@@_ @@@A @@b') ; yourself); yourself]
!

normalPackageFavourite
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self normalPackageFavourite inspect
     ImageEditor openOnClass:self andSelector:#normalPackageFavourite
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
	constantNamed:#'Packages::PackageSelector::HierarchicalPackageSelector class normalPackageFavourite'
	ifAbsentPut:[(Depth8Image new) width: 32; height: 32; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
B (JB (JB (JB (J@@@JB (JB @JB (JB (JB (JB (JB (JB (JB (J@@@IBP@JB (@BP@@B (JB (JB (JB (JB (JB (J@@@IBP HBP@J@@$HBP$@@@(J
B (JB (JB (JB (J@@@IBP HB@ H@@@IB@ HB@$I@@@JB (JB (JB (J@@@IBP HB@ H@@@DA @@B@ HB@ IBP@@B (JB (J@@@IBP HB@ H@@@DA@PDA P@
@@ HB@ HBP$@@@(J@@@IBP HB@ H@@@DA@PDA@XDA PF@@@HB@ HB@$I@@@J@@$HB@ H@@@DA@PDA@PDA@XDA PFA@@@B@ HB@ @B (J@@$H@@@DA@PDA@PD
A@PFA@XDA PFA@X@@@ H@@(J@@@@@@@DA@PDA@PDA@PDA@PFA@XDA PFA@XD@@@@@@@J@@@HB@@@A@PDA@PDA@PDA PFA@XDA PF@@@HB@@@B (JB @@B@ @
@@PDA@PDA@PDA PFA@XD@@@HB@@@B (JB (J@@$@@@ H@@@DA@PDA@XDA PF@@@HB@@@A @JB (JB (@BP H@@@HB@@@A@PDA@XD@@@HB@@@A XF@@(JB (J
B @IB@ HB@@@B@ @@@PF@@@HB@@@A XFA X@B (JB (J@@$HB@ HB@ @@@ H@@@HB@@@A XFA XFA @JB (JB (@BP HB@ HB@ H@@@HA @@A XFA XFA XF
@@(JB (JB @IB@ HB@ HB@ HB@ FA XFA XFA XFA X@B (JB (J@@$HB@ HB@ HB@ HB@XFA @@@@@FA X@@@@@B (JB (@BP HB@ HB@ HB@ HA X@@0TC
AP@F@@LB@0H@B (JB @IB@ HB@ HB@ HB@ F@@TEA0TE@0H@@0HC@ H@B (J@@$HB@ HB@ HB@ HB@X@AP\EA0TE@@LC@0HC@ @JB (@BP HB@ HB@ HB@ H
A @EA0\EAPLA@0LC@0HB@@(JB @IB@ HB@ HB@ HB@ F@@TGAPTC@0HC@0LB@0H@B (J@@XHB@ HB@ HB@ HB@XF@@LGAPTC@0LC@0LB@@(JB (@@@XFB@ H
B@ HB@ HA X@APTE@0TC@0LB@0H@B (JB (J@@@FA  HB@ HB@ FA X@@0LE@0LC@ LB@@(JB (JB (JB @@A XHB@ HB@XFA X@APLE@0HC@ @JB (JB (J
B (JB (@@@XFB@ HA XFA@P@@0LC@0H@B (JB (JB (JB (JB (J@@@FA  FA@P@@@(@@0LB@@(JB (JB (JB (JB (JB (JB @@A P@@@(JB (@@0@JB (J
B (JB (JB (JB (JB (JB (@@@(JB (JB (@B (JB (JB @a') ; colorMapFromArray:#[0 0 0 128 0 0 192 0 0 255 0 0 128 128 0 255 128 0 192 192 0 255 192 192 255 255 192 255 255 255 0 0 0]; mask:((ImageMask new) width: 32; height: 32; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
@@0P@@@>O@@@?7<@@???0@????@????<?????7????8????<?????7????8_???8G???>A???? _???8G???>A???? _???8G????A????8_????G????1??
??<_????G????!!????8G???<@_??>@A???@@G?/ @@_!!0@@A H@b') ; yourself); yourself]
!

normalPackageGames
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self normalPackageGames inspect
     ImageEditor openOnClass:self andSelector:#normalPackageGames
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
	constantNamed:#'Packages::PackageSelector::HierarchicalPackageSelector class normalPackageGames'
	ifAbsentPut:[(Depth8Image new) width: 32; height: 32; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
B0,KB0,KB0,KB0,K@@@KB0,KB0@KB0,KB0,KB0,KB0,KB0,KB0,KB0,K@@@JB @KB0,@B @@B0,KB0,KB0,KB0,KB0,KB0,K@@@JB $IB @K@@(IB (@@@,K
B0,KB0,KB0,KB0,K@@@JB $IBP$I@@@JBP$IBP(J@@@KB0,KB0,KB0,K@@@JB $IBP$I@@@DAP@@BP$IBP$JB @@B0,KB0,K@@@JB $IBP$I@@@DA@PDAPP@
@@$IBP$IB (@@@,K@@@JB $IBP$I@@@DA@PDA@TDAPPE@@@IBP$IBP(J@@@K@@(IBP$I@@@DA@PDA@PDA@TDAPPEA@@@BP$IBP$@B0,K@@(I@@@DA@PDA@PD
A@PEA@TDAPPEA@T@@@$I@@,K@@@@@@@DA@PDA@PDA@PDA@PEA@TDAPPEA@TD@@@@@@@K@@@IBP@@A@PDA@PDA@PDAPPEA@TD@@@@A@@IBP@@B0,KB0@@BP$@
@@PDA@PDA@PDAPPEA@@C@0L@BP@@B0,KB0,K@@(@@@$I@@@DA@PDA@TDAPPE@@@@@@@@AP@KB0,KB0,@B $I@@@IBP@@A@PDA@TD@@@@B  F@@TE@@,KB0,K
B0@JBP$IBP@@BP$@@@PE@@@IBP@JB@X@APT@B0,KB0,K@@(IBP$IBP$@@@$I@@@IBP@@@@(HA @EAP@KB0,KB0,@B $IBP$IBP$I@@@IAP@@APT@B  F@@TE
@@,KB0,KB0@JBP$IBP$IBP$IBP$EAPTEAP@JB@X@APT@B0,KB0,K@@(IBP$IBP$IBP$IBPTEAPT@@@(HA @EAP@KB0,KB0,@B $IBP$IBP$IBP$IAPT@@@\@
B  F@@TE@@,KB0,KB0@JBP$IBP$IBP$IBP$@@@HBA0@JB@X@@@T@B0,KB0,K@@(IBP$IBP$IBP$I@@DB@0HG@@(HA @@@@@KB0,KB0,@B $IBP$IBP$IBP@H
B (A@P\@B  F@@\G@@@KB0,KB0@JBP$IBP$IBP$I@@ HB@(JA0\@@@@GA0\GA0@KB0,K@@TIBP$IBP$IBP$@B@ HB@ JB \GA0\GA0 HA @KB0,@@@TEBP$I
BP$IBP@GB@ HB@ HB (GA0 HA XF@@,KB0,K@@@EAP$IBP$IBP@GA0 HB@ HB@(HA XFA X@B0,KB0,KB0@@APTIBP$IBP@@A0\HB@ HB@XFA XFA @KB0,K
B0,KB0,@@@TEBP$IAPT@@@\GB@ HA XFA X@B0,KB0,KB0,KB0,K@@@EAP$EA@P@@@@GA0 FA X@@@,KB0,KB0,KB0,KB0,KB0@@APP@@@,KB0@@A0X@@@,K
B0,KB0,KB0,KB0,KB0,KB0,@@@,KB0,KB0,@@@,KB0,KB0@a') ; colorMapFromArray:#[0 0 0 128 0 0 192 0 0 255 0 0 128 128 0 192 192 0 128 128 128 160 160 160 195 195 195 255 255 192 255 255 255 0 0 0]; mask:((ImageMask new) width: 32; height: 32; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
@@0P@@@>O@@@?7<@@???0@????@????<?????7????8????<?????7????8_???8G???>A???? _???8G???>A???? _???8G???>A???? _???8G???>A??
??0_???>G????1????<G????@_???0A???8@G??<@@_#<@@A L@b') ; yourself); yourself]
!

normalPackageGraphics
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self normalPackageGraphics inspect
     ImageEditor openOnClass:self andSelector:#normalPackageGraphics
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
	constantNamed:#'Packages::PackageSelector::HierarchicalPackageSelector class normalPackageGraphics'
	ifAbsentPut:[(Depth8Image new) width: 32; height: 32; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
HB@ HB@ HB@ HB@ @@@ HB@ H@@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ @@@_G0@ HB@@G0@@HB@ HB@ HB@ HB@ HB@ HB@ @@@_G18^G0@ @A<^G1<@@B@
HB@ HB@ HB@ HB@ @@@_G18^G!!8^@@@_G!!8^G!!<_@@@ HB@ HB@ HB@ @@@_G18^G!!8^@@@QE@@@G!!8^G!!8_G0@@HB@ HB@ @@@_G18^G!!8^@@@QDQDQEAD@
@A8^G!!8^G1<@@B@ @@@_G18^G!!8^@@@QDQDQDQPQEADT@@@^G!!8^G!!<_@@@ @A<^G!!8^@@@QDQDQDQDQDQPQEADTDP@@G!!8^G!!8@HB@ @A<^@@@QDQDQDQDQ
DQDTDQPQEADTDQP@@A8^@B@ @@@@@@@QDQDQDQDQDQDQDQDTDQPQEADTDQPQ@@@@@@@ @@@^G @@DQDQDQDQDQDQEADTDQPQEADT@@@^G @@HB@ H@@@G!!8@
@ADQDQDQDQDQEADTDQPQ@@@^G @@HB@ HB@ @A<@@A8^@@@QDQDQDQPQEADT@@@^G @@E@@ HB@ HB@@G18^@@@^G @@DQDQDQPQ@@@^G @@EAPT@B@ HB@
H@@_G!!8^G @@G!!8@@ADT@@@^G @@EAPTEAP@HB@ HB@ @A<^G!!8^G!!8@@A8^@@@@@@@@@@@@@@@@@@@@@@@ HB@@G18^G!!8^G!!8^@@@^@A$Y@QXVE!!XV@Q$Y
@Q$Y@B@ H@@_G!!8^G!!8^G!!8^G!!8@FQ$AE!!XVE!!XAFQ$AFQ$@HB@ @A<^G!!8^G!!8^G!!8^G @@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@^@@(JA@PB
@ \GC 8QDP4M@@@XFA XFA XFA XFA XF@@@B (DA@HBA0\NC!!DQCP4@@ALSD1LSD1LSD1LSD1L^G @KB0TE@0LHB@<OEAPRD @@CP4MCP4MCP4MCP4MCQ8^
FP@KAPTC@0 HC0<TEAHR@@@RD!!HRD!!HRD!!HRD!!HRG!!8@C@0FA!!\WBP$PDATUD1L@@@4MCP4MCP4MCP4MCP4M@@@LC@XFE1\IBQ@PEQTSD0@ @@@@@@@@@@@@
@@@@@@@^@A0\F1,ZF!!<_GQ4^G!! X@B@ HB@ @@@TEA8^G!!8^G!!8@GA0[F1(ZG1<]GQ8^FA @HB@ HB@ H@@@EAP^G!!8^G @@@@@@@@@@@@@@@@@@@@@ HB@
HB@ HB@@@APTG!!8^EAPTDQD@@B@ HB@ HB@ HB@ HB@ HB@ HB@ @@@TEA8TDQD@@B@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ H@@@EAD@@B@ HB@ HB@ HB@
HB@ HB@ HB@ HB@ HB@ HB@@@B@ HB@ HB@ HB@ HB@ H@@a') ; colorMapFromArray:#[0 0 0 88 88 88 0 0 128 0 0 255 0 128 0 0 192 0 0 128 0 0 128 128 0 192 192 0 255 255 128 0 0 192 0 0 255 0 0 192 88 0 128 0 128 192 0 192 255 0 255 128 128 0 255 128 0 255 168 88 192 192 0 255 255 0 128 128 128 128 128 255 255 220 168 195 195 195 192 192 255 192 255 192 255 192 192 255 192 255 255 255 192 255 255 255 0 0 0]; mask:((ImageMask new) width: 32; height: 32; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
@@0P@@@>O@@@?7<@@???0@????@????<?????7????8????<?????7????8_???8G???>A???? _???8G????1????<_????G????7??????????????????
?????????????7????<G????@_???0A?? @@G? @@@_ @@@A @@b') ; yourself); yourself]
!

normalPackageMutimedia
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self normalPackageMutimedia inspect
     ImageEditor openOnClass:self andSelector:#normalPackageMutimedia
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
	constantNamed:#'Packages::PackageSelector::HierarchicalPackageSelector class normalPackageMutimedia'
	ifAbsentPut:[(Depth8Image new) width: 32; height: 32; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
DA@PDA@PDA@PDA@P@@@PDA@PD@@PDA@PDA@PDA@PDA@PDA@PDA@PDA@P@@@OC0@PDA@@C0@@DA@PDA@PDA@PDA@PDA@PDA@P@@@OC08NC0@P@@<NC0<@@A@P
DA@PDA@PDA@PDA@P@@@OC08NC 8N@@@OC 8NC <O@@@PDA@PDA@PDA@P@@@OC08NC 8N@@@DAP@@C 8NC 8OC0@@DA@PDA@P@@@OC08NC 8N@@@DA@PDAPP@
@@8NC 8NC0<@@A@P@@@OC08NC 8N@@@DA@PDA@TDAPPE@@@NC 8NC <O@@@P@@<NC 8N@@@DA@PDA@PDA@TDAPPEA@@@C 8NC 8@DA@P@@<N@@@DA@PDA@PD
A@PEA@TDAPPEA@T@@@8N@A@P@@@@@@@DA@PDA@PDA@PDA@PEA@TDAPPEA@TD@@@@@@@P@@@NC @@A@PDA@PDA@PDAPPEA@TDAPPE@@@NC @@DA@PD@@@C 8@
@@PDA@PDA@PDAPPEA@TD@@@NC @@DA@PDA@P@@<@@@8N@@@DA@PDA@TDAPPE@@@NC @@AP@PDA@PDA@@C08N@@@NC @@A@PDA@TD@@@NC @@APTE@A@PDA@P
D@@OC 8NC @@C 8@@@PE@@@N@@@@@@@@APT@DA@PDA@P@@<NC 8NC 8@@@8N@@@N@@@HB@ HB@ @@@@PDA@PDA@@C08NC 8NC 8N@@@NAP@MB@ HB@ HB@ H
@A@PDA@PD@@OC 8NC 8NC 8NC 8@B0LMB@ HB@ HB@<O@A@PDA@P@@<NC 8NC 8NC 8N@@DAB0LHB@ HB@ OC0<H@A@PDA@@C08NC 8NC 8NC 8@B@(AB0LH
B@ HB@<OB@ @DA@PD@@OC 8NC 8NC 8N@@ HB@ AB0\FA \OB@ HB@ @DA@P@@<NC 8NC 8NC 8@B@ HB@ GA @@A \HB@ HB@@PDA@@C08NC 8NC 8NC @H
B@ HB@X@APT@A  HB@ H@A@PD@@OC 8NC 8NC 8N@@ HB@ HA @EC @FB@ HB@ @DA@P@@TNC 8NC 8NC 8@B@ HB@ GA @@A \HB@ HB@@PDA@@@@TEC 8N
C 8NC @HB@ HB@<GA XGBPHHB@ H@A@PDA@P@@@EAP8NC 8NC @HB@<OB@ HB@ CBPHKB@@PDA@PDA@PD@@@APTNC 8N@@ OC0<HB@ HB@ CBPHB@A@PDA@P
DA@PDA@@@@TEC 8N@@<OB@ HB@ HB@0CBP@PDA@PDA@PDA@PDA@P@@@EAP8E@@ HB@ HB@ HB@0@DA@PDA@PDA@PDA@PDA@PD@@@APP@@@@HB@ HB@ @@A@P
DA@PDA@PDA@PDA@PDA@PDA@@@A@PD@@@@@@@@A@PDA@PD@@a') ; colorMapFromArray:#[0 0 0 0 128 0 0 255 255 255 0 255 128 128 0 192 192 0 128 128 128 160 160 160 195 195 195 192 192 255 192 255 192 192 255 255 255 192 192 255 192 255 255 255 192 255 255 255 0 0 0]; mask:((ImageMask new) width: 32; height: 32; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
@@0P@@@>O@@@?7<@@???0@????@????<?????7????8????<?????7????8_???8G???>A???? _???8G???>A???? _???<G????!!????8_????G????1??
??<_????G????1????<G???>@_??? A???0@G??8@@_?<@@A#<@b') ; yourself); yourself]
!

normalPackageNetwork
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self normalPackageNetwork inspect
     ImageEditor openOnClass:self andSelector:#normalPackageNetwork
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
	constantNamed:#'Packages::PackageSelector::HierarchicalPackageSelector class normalPackageNetwork'
	ifAbsentPut:[(Depth8Image new) width: 32; height: 32; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
C@0LC@0LC@0LC@0L@@@LC@0LC@@LC@0LC@0LC@0LC@0LC@0LC@0LC@0L@@@KB0@LC@0@B0@@C@0LC@0LC@0LC@0LC@0LC@0L@@@KB0(JB0@L@@,JB0,@@@0L
C@0LC@0LC@0LC@0L@@@KB0(JB (J@@@KB (JB ,K@@@LC@0LC@0LC@0L@@@KB0(JB (J@@@FA0@@B (JB (KB0@@C@0LC@0L@@@KB0(JB (J@@@FA XFA0X@
@@(JB (JB0,@@@0L@@@KB0(JB (J@@@FA XFA \FA0XG@@@JB (JB ,K@@@L@@,JB (J@@@FA XFA XFA \FA0XGA @@B (JB (@C@0L@@,J@@@FA XFA XF
A XGA \FA0XGA \@@@(J@@0L@@@@@@@FA XFA XFA XFA XGA \FA0XGA \F@@@@@@@L@@@JB @@A XFA XFA X@@@@@@@@@@@@G@@@JB @@C@0LC@@@B (@
@@XFA XF@@$IBP$IBP$IBP@JB @@C@0LC@0L@@,@@@(J@@@FA @IBP$IBP$IBP$H@@@@A0@LC@0LC@0@B0(J@@@JB @@@@,KB0,KB0,KB@ @A0\G@@0LC@0L
C@@KB (JB @@B (@BP HB@ HB@$HB@@GA0\@C@0LC@0L@@,JB (JB (@@@@I@ HB@ HBB0 @@@@@@@@@@@0LC@0@B0(JB (JB (J@@$AA@DB@PHK@@$IBP$I
BP$I@@0LC@@KB (JB (JB (@BPDA@PDA@P@IBP$IBP$IBP @C@0L@@,JB (JB (JB @I@PDA@PD@B0,KB0,KB0,HB@@LC@0@B0(JB (JB (J@@,KB0,KB0@I
B@ HB@ HBP H@@0LC@@KB (JB (JB (J@@@@@@@@@@$B@ HB@ HKB@ @C@0L@@,JB (JB (JB (@B@ HB@ @BPHD@ DB@P,HB@@LC@0@B0(JB (JB (J@@,K
B0,KB0@I@PDA@PDAB0 H@@0LC@@KB (JB (JB (@BP$IBP$I@@$A@PDA@PDKB@@LC@0L@@\JB (JB (JB @I@0$@@@@@B0,KB0,KB0,@B@@LC@0@@@\GB (J
B (J@@$IBP$IBP$@@@@@@@@@@@ I@@0LC@0L@@@GA0(JB (J@@@@@@@@@@@HB@ HB@ HBP @C@0LC@0LC@@@A0\JB (JB \GA0\@B0,KB0,KB0,HB@@LC@0L
C@0LC@0@@@\GB (JA0\GA @IBP$IBP$IBP H@@0LC@0LC@0LC@0L@@@GA0(GA X@@@$EBP@@@@@IB@@LC@0LC@0LC@0LC@0LC@@@A0X@@@0@BP$IBP$IBP$@
C@0LC@0LC@0LC@0LC@0LC@0@@@0LC@0@@@@@@@@@@@0LC@@a') ; colorMapFromArray:#[0 0 0 0 0 128 0 0 255 0 128 0 0 255 255 255 0 0 128 128 0 192 192 0 128 128 128 195 195 195 255 255 192 255 255 255 0 0 0]; mask:((ImageMask new) width: 32; height: 32; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
@@0P@@@>O@@@?7<@@???0@????@????<?????7????8????<?????7????8_???8G???>A???? _???8G????!!????<_????G????1????<_????G????1??
??<_???>G????1????<G????@_???0A???<@G??>@@_/?@@A!!? b') ; yourself); yourself]
!

normalPackageSettings
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self normalPackageSettings inspect
     ImageEditor openOnClass:self andSelector:#normalPackageSettings
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
	constantNamed:#'Packages::PackageSelector::HierarchicalPackageSelector class normalPackageSettings'
	ifAbsentPut:[(Depth8Image new) width: 32; height: 32; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
B@ HB@ HB@ HB@ H@@@HB@ HB@@HB@ HB@ HB@ HB@ HB@ HB@ HB@ H@@@GA0@HB@ @A0@@B@ HB@ HB@ HB@ HB@ HB@ H@@@GA0XFA0@H@@\FA0\@@@ H
B@ HB@ HB@ HB@ H@@@GA0XFA XF@@@GA XFA \G@@@HB@ HB@ HB@ H@@@GA0XFA XF@@@A@ @@A XFA XGA0@@B@ HB@ H@@@GA0XFA XF@@@A@PDA@ D@
@@XFA XFA0\@@@ H@@@GA0XFA XF@@@A@PDA@PHA@ DB@@@FA XFA \G@@@H@@\FA XF@@@A@PDA@PDA@PHA@ DB@P@@A XFA X@B@ H@@\F@@@A@PDA@PDA
@PDB@PHA@ DB@PH@@@XF@@ H@@@@@@@A@PDA@PDA@PDA@PDB@PHA@ DB@PHA@@@@@@@H@@@FA @@@PDA@PDA@PDA@ DB@PHA@ DB@@@FA @@B@ HB@@@A X@
@@DA@PDA@PDA@ DB@PHA@@@FA @@B@ HB@ H@@\@@@XF@@@A@PDA@PHA@ DB@@@FA @@@ @HB@ HB@ @A0XF@@@FA @@@PDA@PHA@@@FA @@@ HB@@ HB@ H
B@@GA XFA @@A X@@@DA@@@FA @@@@HB@ H@B@ HB@ H@@\FA XFA X@@@XF@@@FA @@@@\D@@HB@ @HB@ HB@ @A0XFA XFA XF@@@F@ @@@ H@A0P@@ H@
@@ HB@ HB@@GA XFA XFA XFA X@A@\@@@\EAPL@@@\D@@ HB@ H@@\FA XFA XFA XFA @CAP\GAPTEAP\GAPL@B@ HB@ @A0XFA XFA XFA XF@ @DAPTE
APTEAPTC@@ HB@ HB@@GA XFA XFA XFA XB@@\EAPPCA@TEAPP@B@ HB@ H@@\FA XFA XFA XF@@@GAPTD@0@@A0TEAPP@@@ HB@ @A0XFA XFA XFA @G
A0TEAPL@@ H@A0TEAP\D@@ HB@@GA XFA XFA XF@@LCAPTEA@@B@ @GAPTE@0L@B@ H@@HFA XFA XFA XF@@@DA@TEA0@@A0TEAPL@@@ HB@ @@@HBA XF
A XFA XF@ @DAPTEA0\EAPTC@@ HB@ HB@ H@@@B@ XFA XFA XB@@\EAPTEAPTEAPL@B@ HB@ HB@ HB@@@@ HFA XFA @GAPLDAPTEAPTGAPL@B@ HB@ H
B@ HB@ @@@HBA XF@@PC@@@GAPTC@@@D@0@HB@ HB@ HB@ HB@ H@@@B@ XB@@@@@@@G@0@HB@@@B@ HB@ HB@ HB@ HB@ HB@@@@ H@@@ H@@\C@@ HB@ H
B@ HB@ HB@ HB@ HB@ HB@ @@@ HB@ H@@@HB@ HB@ HB@@a') ; colorMapFromArray:#[0 0 0 128 128 0 192 192 0 128 128 128 160 160 160 195 195 195 255 255 192 255 255 255 0 0 0]; mask:((ImageMask new) width: 32; height: 32; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
@@0P@@@>O@@@?7<@@???0@????@????<?????7????8????<?????7????8_???8G???>A???? _???8G???>A???? _???<G????A???? _???8G????!!??
??<_????G????!!???? G???8@_???@A???0@G?>X@@_'' @@A 0@b') ; yourself); yourself]
!

normalPackageSystem
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self normalPackageSystem inspect
     ImageEditor openOnClass:self andSelector:#normalPackageSystem
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
	constantNamed:#'Packages::PackageSelector::HierarchicalPackageSelector class normalPackageSystem'
	ifAbsentPut:[(Depth8Image new) width: 32; height: 32; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
B@ HB@ HB@ HB@ H@@@HB@ HB@@HB@ HB@ HB@ HB@ HB@ HB@ HB@ H@@@GA0@HB@ @A0@@B@ HB@ HB@ HB@ HB@ HB@ H@@@GA0XFA0@H@@\FA0\@@@ H
B@ HB@ HB@ HB@ H@@@GA0XFA XF@@@GA XFA \G@@@HB@ HB@ HB@ H@@@GA0XFA XF@@@BA@@@A XFA XGA0@@B@ HB@ H@@@GA0XFA XF@@@B@ HBA@H@
@@XFA XFA0\@@@ H@@@GA0XFA XF@@@B@ HB@ PBA@HD@@@FA XFA \G@@@H@@\FA XF@@@B@ HB@ HB@ PBA@HD@ @@A XFA X@B@ H@@\F@@@B@ HB@ HB
@ HD@ PBA@HD@ P@@@XF@@ H@@@@@@@B@ HB@ HB@ HB@ HD@ PBA@HD@ PB@@@@@@@H@@@FA @@@ HB@ HB@ HBA@HD@ @@@@@D@@@FA @@B@ HB@@@A X@
@@HB@ HB@ HBA@H@@@@@@@@FA @@B@ HB@ H@@\@@@XF@@@B@ HB@ PBA@@G@@@G@@@@@ @HB@ HB@ @A0XF@@@FA @@@ HB@ P@@@@@@@@@@ HB@@ HB@ H
B@@GA XFA @@A X@@@H@@@X@@@DC@0D@@ H@B@ HB@ H@@\FA XFA X@@@XF@@@@@@@@@0LC@0L@@ @HB@ HB@ @A0XFA XFA XF@@@F@ HB@@@@@PDC@0@B
@@ HB@ HB@@GA XFA XFA XF@@@B@ H@@@@@@@@@@ H@@@ HB@ H@@\FA XFA XFA @G@@HB@@@@@@@@@@@B@ @G@@ HB@ @A0XFA XFA X@A0\@@@@@@@@G
A0@@@@@@@@\G@@ HB@@GA XFA XFA @GA0\@@@@@@@\G@@@@@@@GA0\@B@ H@@\FA XFA XFA @@@@@@@@@@A0\@@@@@@@@@@@ HB@ @A0XFA XFA XFA XF
@ @@@@@GA0@@@@@B@@ HB@ HB@@GA XFA XFA XFA XB@@@@AP\GAP@@@@H@B@ HB@ H@@PFA XFA XFA XFA H@@@\GA0\GA0@@@ @HB@ HB@ @@@PDA XF
A XFA XF@ @GA0\GA0\GA0@@@@ HB@ HB@ H@@@DA@XFA XFA XB@@\GA0\GA0\G@@ HB@ HB@ HB@ HB@@@A@PFA XFA H@A0\GA0\GA0\@B@ HB@ HB@ H
B@ HB@ @@@PDA XF@ H@@@\GA0\@@@ HB@ HB@ HB@ HB@ HB@ H@@@DA@XB@@LC@@@@@@LC@@ HB@ HB@ HB@ HB@ HB@ HB@@@A@@C@0L@B@ @@0LC@@ H
B@ HB@ HB@ HB@ HB@ HB@ @B@@@@@ HB@ @@@@HB@ HB@@a') ; colorMapFromArray:#[0 0 0 192 88 0 128 128 0 255 128 0 192 192 0 128 128 128 255 255 192 255 255 255 0 0 0]; mask:((ImageMask new) width: 32; height: 32; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
@@0P@@@>O@@@?7<@@???0@????@????<?????7????8????<?????7????8_???8G???>A???? _???8G???>A???? _???<G????!!????<_????G????!!??
?? _???8G???>A???? G??? @_??8@A??<@@G?? @@_9<@@A\N@b') ; yourself); yourself]
!

normalPackageUtilities
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self normalPackageUtilities inspect
     ImageEditor openOnClass:self andSelector:#normalPackageUtilities
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
	constantNamed:#'Packages::PackageSelector::HierarchicalPackageSelector class normalPackageUtilities'
	ifAbsentPut:[(Depth8Image new) width: 32; height: 32; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
C 8NC 8NC 8NC 8N@@@NC 8NC @NC 8NC 8NC 8NC 8NC 8NC 8NC 8N@@@MCP@NC 8@CP@@C 8NC 8NC 8NC 8NC 8NC 8N@@@MCP0LCP@N@@4LCP4@@@8N
C 8NC 8NC 8NC 8N@@@MCP0LC@0L@@@MC@0LC@4M@@@NC 8NC 8NC 8N@@@MCP0LC@0L@@@CA @@C@0LC@0MCP@@C 8NC 8N@@@MCP0LC@0L@@@C@0LCA L@
@@0LC@0LCP4@@@8N@@@MCP0LC@0L@@@C@0LC@0XCA LF@@@LC@0LC@4M@@@N@@4LC@0L@@@C@0LC@0LC@0XCA LF@0@@C@0LC@0@C 8N@@4L@@@C@0LC@0LC
@0LF@0XCA LF@0X@@@0L@@8N@@@@@@@C@0LC@0LC@0LC@0LF@0XCA LF@0XC@@@@@@@N@@@LC@@@@0LC@0LC@0LCA LF@0XCA LF@@@LC@@@C 8NC @@C@0@
@@LC@0LC@0LF@0@@@@@@@@@LC@@@C 8NC 8N@@4@@@0L@@@C@0LC@0L@A0DA@P@LC@@@A @NC 8NC 8@CP0L@@@LC@@@@0LC@@\GA0\G@@@@A XF@@8NC 8N
C @MC@0LC@@@C@0@@@@GA0 A@PD@A XF@@@@@@8NC 8N@@4LC@0LC@0@@@0@A0\H@PDA@P@FA @KB @NC 8NC 8@CP0LC@0LC@0L@@\GB@DA@PDA@@X@B0(@
C 8N@@8NC @MC@0LC@0LC@@GA0 A@PDA@P@FA @KB @NC @@C 8N@@4LC@0LC@0L@@\H@PDA@PD@A XF@@,JB0@@B @NC 8@CP0LC@0LC@0@B@DA@PDA@@$@
A @KB HJB0,B@@8NC @MC@0LC@0LC@@A@PDA@P@DAP$@B0(BB HB@ @NC 8N@@4LC@0LC@0LC@@A@PD@A @D@@,J@ (B@@@@C 8NC 8@CP0LC@0LC@0LC@@A
@@XFA @KB HJ@ @F@@8NC 8NC @MC@0LC@0LC@0LC@@FA X@B0(BB H@A X@C 8NC 8N@@XLC@0LC@0LC@0LC@XF@@,J@ (B@@$@A @NC 8NC 8@@@XFC@0L
C@0LC@0LA @KB HJ@ @DAP$@@@8NC 8NC 8N@@@FA 0LC@0LC@0@B0(BB H@A @DAP$@C 8NC 8NC 8NC @@A XLC@0L@@,J@ (B@@X@@@@DAP$@C 8NC 8N
C 8NC 8@@@XFC@@KB HJ@ @@@@8NC @DAP$@C 8NC 8NC 8NC 8N@@@F@@,BB H@@@8NC 8NC @DAP$@C 8NC 8NC 8NC 8NC @@@ HB@@8NC 8NC 8NC @D
AP@NC 8NC 8NC 8NC 8NC 8@@@@NC 8NC 8NC 8NC @@C @a') ; colorMapFromArray:#[0 0 0 88 88 88 0 192 192 128 128 0 255 128 0 255 168 88 192 192 0 128 128 128 160 160 160 255 220 168 195 195 195 192 255 255 255 255 192 255 255 255 0 0 0]; mask:((ImageMask new) width: 32; height: 32; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
@@0P@@@>O@@@?7<@@???0@????@????<?????7????8????<?????7????8_???8G???>A???? _???<G???>A????D_???3G????1????<_???>G????A??
?? _???8G???>A???? G???8@_???@A??#8@G? _@@_ C0@A0@Xb') ; yourself); yourself]
!

notInstalledpackageIcon
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self notInstalledpackageIcon inspect
     ImageEditor openOnClass:self andSelector:#notInstalledpackageIcon
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
	constantNamed:#'Packages::PackageSelector::HierarchicalPackageSelector class notInstalledpackageIcon'
	ifAbsentPut:[(Depth2Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@ATET@AUEE@APQAP@TDQT@A]5_@@UUU\@O5?G@@E@M0C=_3\@?W<7@O5?M0C=_3\@?W<4@O5?M@C=_0@@@T@@@@a') ; colorMapFromArray:#[0 0 0 132 0 132 255 255 0 152 156 152]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'A30O[A%LF?<O?0??G?<??3??O?<??3??O?8??C?8O?@b') ; yourself); yourself]
!

packageDirtyIcon
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self packageDirtyIcon inspect
     ImageEditor openOnClass:self andSelector:#packageDirtyIcon
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
	constantNamed:#'Packages::PackageSelector::HierarchicalPackageSelector class packageDirtyIcon'
	ifAbsentPut:[(Depth8Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
APTEAPT@@@TEAP@EAPTEAPTEAP@@@0L@@@@C@@@EAPTE@@@C@0@@@PH@@@LC@@@E@@LC@@@A@PDB@ H@@@LC@@@@@@DA@PDA@ HB@ H@@@@E@@L@@@DA@PHB
@ @@@@TEAP@C@0L@@@DB@@@B@ @EAPT@@0@C@@L@@@HB@@H@APTE@@LC@0LC@0H@@ H@@@TEAP@C@@L@@0@B@ @B@ @EAPT@@0LC@0LC@@HB@ @@APTE@@L@
@0@C@@HB@@HB@@TEAP@B@0LC@0L@@ HB@@@EAPTE@@@B@0@C@ H@@@TEAPTEAPTE@@@B@0@@APTEAPTEAPTEAPTE@@@EAPTEAPTEAP@a') ; colorMapFromArray:#[0 0 0 128 128 0 192 192 0 255 255 192 200 200 200 0 0 0]; mask:((ImageMask new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'A"@_>G?>?????7?<_?1??G?<_?1??G?<_?0?<@?@@0@b') ; yourself); yourself]
!

packageIcon
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self packageIcon inspect
     ImageEditor openOnClass:self andSelector:#packageIcon
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
	constantNamed:#'Packages::PackageSelector::HierarchicalPackageSelector class packageIcon'
	ifAbsentPut:[(Depth8Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
APTEAPT@@@TEAP@EAPTEAPTEAP@@@0L@@@@C@@@EAPTE@@@C@0@@@PH@@@LC@@@E@@LC@@@A@PDB@ H@@@LC@@@@@@DA@PDA@ HB@ H@@@@E@@L@@@DA@PHB
@ @@@@TEAP@C@0L@@@DB@@@B@ @EAPT@@0LC@0L@@@HB@ H@APTE@@LC@0LC@0HB@ HB@@TEAP@C@0LC@0LB@ HB@ @EAPT@@0LC@0LC@ HB@ H@APTE@@LC
@0LC@0HB@ HB@@TEAP@B@0LC@0LB@ HB@@@EAPTE@@@B@0LC@ H@@@TEAPTEAPTE@@@B@0@@APTEAPTEAPTEAPTE@@@EAPTEAPTEAP@a') ; colorMapFromArray:#[0 0 0 128 128 0 192 192 0 255 255 192 255 255 255 0 0 0]; mask:((ImageMask new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'A"@_>G?>?????7?<_?1??G?<_?1??G?<_?0?<@?@@0@b') ; yourself); yourself]
!

packageOverriddenIcon
    "This resource specification was automatically generated
     by the ImageEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the ImageEditor may not be able to read the specification."

    "
     self packageOverriddenIcon inspect
     ImageEditor openOnClass:self andSelector:#packageOverriddenIcon
     Icon flushCachedIcons
    "

    <resource: #image>

    ^Icon
	constantNamed:#'Packages::PackageSelector::HierarchicalPackageSelector class packageOverriddenIcon'
	ifAbsentPut:[(Depth8Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(nil )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
APTEAPT@@@TEAP@EAPTEAPTEAP@@@0L@@@@C@@@EAPTE@@@C@0@@@PH@@@LC@@@E@@LC@@@A@PDB@ H@@@LC@@@@@@DA@PDA@ HB@ H@@@@E@@L@@@DA@PHB
@ @@@@TEAP@C@0L@@@DB@@@B@ @EAPT@@0LC@0L@@@HB@ H@APTE@@LC@0LC@0HB@ HB@@TEAP@C@0LC@0LB@ HB@ @EAPT@@0LC@0LC@ HB@ H@APTE@@LC
@0LC@0HB@ HB@@TEAP@B@0LC@0LB@ HB@@@EAPTE@@@B@0LC@ H@@@TEAPTEAPTE@@@B@0@@APTEAPTEAPTEAPTE@@@EAPTEAPTEAP@a') ; colorMapFromArray:#[0 0 0 192 0 0 250 0 0 255 150 150 255 255 255 0 0 0]; mask:((ImageMask new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'A"@_>G?>?????7?<_?1??G?<_?1??G?<_?0?<@?@@0@b') ; yourself); yourself]
! !

!PackageSelector::HierarchicalPackageSelector class methodsFor:'interface specs'!

windowSpec
    "This resource specification was automatically generated
     by the UIPainter of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the UIPainter may not be able to read the specification."

    "
     UIPainter new openOnClass:Packages::PackageSelector::HierarchicalPackageSelector andSelector:#windowSpec
     Packages::PackageSelector::HierarchicalPackageSelector new openInterface:#windowSpec
     Packages::PackageSelector::HierarchicalPackageSelector open
    "

    <resource: #canvas>

    ^
     #(#FullSpec
	#name: #windowSpec
	#window:
       #(#WindowSpec
	  #label: 'Packages::PackageSelectorApplication'
	  #name: 'Packages::PackageSelectorApplication'
	  #min: #(#Point 10 10)
	  #max: #(#Point 1024 768)
	  #bounds: #(#Rectangle 29 59 329 359)
	  #menu: #mainMenu
	)
	#component:
       #(#SpecCollection
	  #collection: #(
	   #(#HierarchicalListViewSpec
	      #name: 'SelectionInListModelView2'
	      #layout: #(#LayoutFrame 0 0 0 0 0 1 0 1)
	      #model: #packagesSelectedIndexHolder
	      #menu: #popUpMenu
	      #hasHorizontalScrollBar: true
	      #hasVerticalScrollBar: true
	      #listModel: #tree
	      #multipleSelectOk: true
	      #highlightMode: #line
	      #valueChangeSelector: #newSelectedIndexes:
	    )
	   )

	)
      )
! !

!PackageSelector::HierarchicalPackageSelector class methodsFor:'menu specs'!

popUpMenu
    "This resource specification was automatically generated
     by the MenuEditor of ST/X."

    "Do not manually edit this!! If it is corrupted,
     the MenuEditor may not be able to read the specification."

    "
     MenuEditor new openOnClass:Packages::PackageSelector::HierarchicalPackageSelector andSelector:#popUpMenu
     (Menu new fromLiteralArrayEncoding:(Packages::PackageSelector::HierarchicalPackageSelector popUpMenu)) startUp
    "

    <resource: #menu>

    ^
     #(#Menu
	#(
	 #(#MenuItem
	    #label: 'New category'
	    #itemValue: #kjj
	    #translateLabel: true
	  )
	 #(#MenuItem
	    #label: 'Properties'
	    #itemValue: #showProperties
	    #translateLabel: true
	  )
	 #(#MenuItem
	    #label: 'Inspect'
	    #itemValue: #inspectPackage
	    #translateLabel: true
	  )
	 #(#MenuItem
	    #label: '-'
	  )
	 #(#MenuItem
	    #label: 'Save Package'
	    #itemValue: #savePackage
	    #translateLabel: true
	  )
	 #(#MenuItem
	    #label: 'Unload Package'
	    #itemValue: #unloadPackage
	    #translateLabel: true
	  )
	 #(#MenuItem
	    #label: 'Uninstall Package'
	    #itemValue: #uninstallPackage
	    #translateLabel: true
	  )
	 )
	nil
	nil
      )
! !

!PackageSelector::HierarchicalPackageSelector class methodsFor:'plugIn spec'!

aspectSelectors
    "This resource specification was automatically generated
     by the UIPainter of ST/X."

    "Do not manually edit this. If it is corrupted,
     the UIPainter may not be able to read the specification."

    "Return a description of exported aspects;
     these can be connected to aspects of an embedding application
     (if this app is embedded in a subCanvas)."

    ^ #(
	#packagesSelectedHolder
      ).

! !

!PackageSelector::HierarchicalPackageSelector methodsFor:'* As yet uncategorized *'!

categoryItemNamed:aName
    tree root children do:[:anItem |
	anItem isCategoryItem ifTrue:[
	    anItem label = aName ifTrue:[
		^ anItem
	    ].
	].
    ].

    ^ nil
!

packagedManagerChangeAddPackage:aPackage
    | categoryItem |
    categoryItem := (self categoryItemNamed:aPackage category) ifNil:[
	categoryItem := tree root add: (CategoryItem name:aPackage category packageManager:self packageManager)
    ].

    categoryItem add:(categoryItem newItemPackageWithPackage:aPackage).
    ^ self
!

packagedManagerChangeRemovePackage:aPackage

    tree copy do:[:anItem |
	anItem isPackageItem ifTrue:[
	    anItem package == aPackage ifTrue:[
		anItem remove.
	    ].
	].
    ].
! !

!PackageSelector::HierarchicalPackageSelector methodsFor:'accessing'!

masterApplication:aMasterApplication
    "initialization"
    | aPackageManager newRootItem tree categories |
    super masterApplication:aMasterApplication.
    tree := self tree.
    tree showRoot:false.
    aPackageManager := self packageManager.

    newRootItem := RootItem new.
    tree root:newRootItem.
    categories := aPackageManager allPackageCategories collect:[:aCategory |
	self newItemPackageWithCategory:aCategory packageManager:aPackageManager
    ].

"/    packageItems := (aPackageManager packages collect:[:aPackage |  self newItemPackageWithPackage:aPackage]).
    newRootItem addAll:categories.
    newRootItem add:(self newItemPackageWithPackage:aPackageManager defaultPackage) .

    newRootItem expand.
    newRootItem sort.
!

selected
    ^ self selectionHolder value
!

selectedPackage
    ^ self packageManager packageNamed:self selection
!

selectionChangedBlock
    "return the value of the instance variable 'selectionChangedBlock' (automatically generated)"

    ^ selectionChangedBlock
!

selectionChangedBlock:something
    "set the value of the instance variable 'selectionChangedBlock' (automatically generated)"

    selectionChangedBlock := something.
! !

!PackageSelector::HierarchicalPackageSelector methodsFor:'actions'!

inspectPackage
    | packagesSelected selectedSinglePackage|
    packagesSelected := self  packagesSelected.
    (packagesSelected size > 1) ifTrue:[
	self warn:'Only one package can be selected!!'.
	^ self
    ].
    (packagesSelected size = 0) ifTrue:[
	self warn:'You need to select a package'.
	^ self
    ].

    selectedSinglePackage := packagesSelected first.
    selectedSinglePackage inspect.
!

savePackage
    "assumes that there is only one package is selected"
    | filename repeat |
    repeat := true.
    [repeat] whileTrue:[
	filename := FileDialog
			requestFileName:'enter a fileName:'
			default:''
			version:nil
			ifFail:[nil]
			pattern:'*.*'
			fromDirectory:nil
			whenBoxCreatedEvaluate:nil.
	(Switch new)
	    if:[filename isNil] then:[^ self "do nothing!!"];
	    if:[filename asFilename isDirectory] then:[
		repeat := (self confirm:'Directory selected!! Do you want to try this again?')
	    ];
	    if:[filename asFilename exists] then:[
		repeat := (self confirm:'This file already exists!! Do you want to override this file?') not
	    ];
	    otherwise:[repeat := false];
	    value

    ].
    self halt.
    self packageManager savePackage:(self packagesSelected first) as:filename asFilename
!

showProperties

    "size should only be one as this action should be disabled if there is more than
    one package selected."

    self showPropertiesOfPackage:self packagesSelected first
!

showPropertiesOfPackage:aPackage

    ((PackageProperties new) masterApplication:self)openAsSlave
!

uninstallPackage
    "assumes that there is only one package is selected"
    | aPackage |
    aPackage := self packagesSelected first.
    (self packageManager isBasePackage:aPackage) ifTrue:[
	self warn:'Package is registered as a ''Base Package'' and cannot be uninstalled'.
	^ self
    ].

    (self confirm:'Are you sure you want to uninstall the package named: ', aPackage name, '?\\' withCRs
		    , 'This will remove all classes currently under this package''s control!!') ifFalse:[
	^ self
    ].

    self packageManager uninstallPackage:aPackage
!

unloadPackage
    "assumes that there is only one package is selected"
    | aPackage |
    aPackage := self packagesSelected first.
    (self packageManager isBasePackage:aPackage) ifTrue:[
	self warn:'Package is registered as a ''Base Package'' and cannot be unload'.
	^ self
    ].

    (self confirm:'Are you sure you want to unload the package named: ', aPackage name) ifFalse:[
	^ self
    ].
    self packageManager unloadPackage:aPackage
! !

!PackageSelector::HierarchicalPackageSelector methodsFor:'aspects'!

packagesSelectedIndexHolder
    "automatically generated by UIPainter ..."

    "*** the code below creates a default model when invoked."
    "*** (which may not be the one you wanted)"
    "*** Please change as required and accept it in the browser."
    "*** (and replace this comment by something more useful ;-)"

    packagesSelectedIndexHolder isNil ifTrue:[
	packagesSelectedIndexHolder := ValueHolder new.
"/ if your app needs to be notified of changes, uncomment one of the lines below:
"/       packagesSelectedIndexHolder addDependent:self.
"/       packagesSelectedIndexHolder onChangeSend:#packagesSelectedIndexHolderChanged to:self.
    ].
    ^ packagesSelectedIndexHolder.
!

tree
    "automatically generated by UIPainter ..."

    "*** the code below creates a default model when invoked."
    "*** (which may not be the one you wanted)"
    "*** Please change as required and accept it in the browser."
    "*** (and replace this comment by something more useful ;-)"

    tree isNil ifTrue:[
	tree := HierarchicalList new.
	tree application:self.
"/ if your app needs to be notified of changes, uncomment one of the lines below:
"/       tree addDependent:self.
"/       tree onChangeSend:#treeChanged to:self.
    ].
    ^ tree.
! !

!PackageSelector::HierarchicalPackageSelector methodsFor:'change & update'!

newSelectedIndexes:collectionOfIndexes
    | newSelectionItems|
    newSelectionItems := collectionOfIndexes collect:[:idx |
	self tree at:idx
    ].

    self newSelectedItems:newSelectionItems
!

newSelectedItems:aCollectionOfPackageItems
    | packageNames packagesSelected |
    packageNames := aCollectionOfPackageItems collect:[:anItem |
	(anItem isRootItem) ifFalse:[
	    anItem isPackageItem ifTrue:[
		anItem package name.
	    ] ifFalse:[
		nil.
	    ].
	] ifTrue:[
	    nil. "no package is selected."
	].
    ].
    packagesSelected := (self packagesNamed: packageNames).
    (packagesSelected includes:nil) ifTrue:[| minimumIndex |
	"error handling in a case that should not really happen"

	self warn:'Error - Packages selected include a name which the package manager does not know!!'.
	minimumIndex := self packagesSelectedIndexHolder value first.
	self packagesSelectedIndexHolder value do:[:anIndex | | item |
	    minimumIndex := minimumIndex min:anIndex.
	    item := (tree at:anIndex).
	    (self packageManager includesPackage:item package) ifFalse:[
		item remove.
	    ].
	].

	self packagesSelectedIndexHolder value:(Array with:((minimumIndex - 1) max:1)).
    ].
    self packagesSelectedHolder value:packagesSelected
!

update:something with:aParameter from:changedObject

    self breakPoint:''.
! !

!PackageSelector::HierarchicalPackageSelector methodsFor:'factory'!

newItemPackageWithCategory:name packageManager:manager
    ^ CategoryItem name:name packageManager:manager
!

newItemPackageWithPackage:aPackage
    ^ PackageItem package:aPackage
! !

!PackageSelector::HierarchicalPackageSelector::CategoryItem class methodsFor:'accessing'!

iconFor:aCategoryItem
    "roundabout ;-) "
    ^ aCategoryItem model iconFor:aCategoryItem
! !

!PackageSelector::HierarchicalPackageSelector::CategoryItem class methodsFor:'instance creation'!

name:aName packageManager:aPackageManager
    ^(self new)
	    name:aName;
	    packageManager:aPackageManager
! !

!PackageSelector::HierarchicalPackageSelector::CategoryItem methodsFor:'accessing'!

children
    children ifNil:[
	children :=  self createPackageItemsFrom:(packageManager packagesAtCategoryName:self name).
	self sort:[:x :y |
	    x label < y label
	].
    ].
    ^ children
!

icon
    ^ self class iconFor:self.
!

label

    ^ name
!

name
    "return the value of the instance variable 'name' (automatically generated)"
    ^ name
!

name:something
    "set the value of the instance variable 'name' (automatically generated)"

    name := something.
!

packageManager
    "return the value of the instance variable 'packageManager' (automatically generated)"

    ^ packageManager
!

packageManager:something
    "set the value of the instance variable 'packageManager' (automatically generated)"

    packageManager := something.
! !

!PackageSelector::HierarchicalPackageSelector::CategoryItem methodsFor:'factory'!

createPackageItemsFrom:aCollectionOfPackages
    ^ aCollectionOfPackages collect:[:aPackage |
	self newItemPackageWithPackage:aPackage
    ].





!

newItemPackageWithPackage:aPackage
    ^ ((Packages::PackageSelector::HierarchicalPackageSelector::PackageItem) parent:self)  package:aPackage
! !

!PackageSelector::HierarchicalPackageSelector::CategoryItem methodsFor:'printing'!

printOn:aStream
    aStream nextPutAll:'CategoryItem named: ''',
	self name, ''''.
! !

!PackageSelector::HierarchicalPackageSelector::CategoryItem methodsFor:'queries'!

isCategoryItem
    ^ true
!

isPackageItem
    ^ false.
! !

!PackageSelector::HierarchicalPackageSelector::PackageItem class methodsFor:'accessing'!

iconFor:aPackageItem
    | package |
    package := aPackageItem package.
    (package name == (Project noProjectID)) ifTrue:[
	^ self iconsClass defaultPackageIcon
    ].

    (aPackageItem packageManager isBasePackage:package) ifTrue:[
	^ self iconsClass basePackageIcon
    ].

    (package isInstalled not) ifTrue:[
	^ self iconsClass loadedPackageIcon
    ].

    ^ self iconsClass packageIcon
! !

!PackageSelector::HierarchicalPackageSelector::PackageItem class methodsFor:'constants'!

iconsClass
    ^ Packages::PackageSelector::HierarchicalPackageSelector
! !

!PackageSelector::HierarchicalPackageSelector::PackageItem class methodsFor:'instance creation'!

package:something
    ^ self basicNew package:something
! !

!PackageSelector::HierarchicalPackageSelector::PackageItem methodsFor:'* As yet uncategorized *'!

isSelected
    | packagesSelected |
    packagesSelected := (self application packagesSelected).

    packagesSelected ifNotNil:[
	^ packagesSelected includes:package
    ].

    ^ false.
!

packageManager
    ^ PackageManager smalltalkPackageManager
! !

!PackageSelector::HierarchicalPackageSelector::PackageItem methodsFor:'accessing'!

icon
    ^ self class iconFor:self.
!

label
    | emphasis |
    emphasis := OrderedCollection new.
    package isDirty ifTrue:[
	emphasis add:#italic.
    ].
    package isOverridden ifTrue:[
	self isSelected ifFalse:[
	    emphasis add:(#color->Color red darker )
	]
    ].

    ^ Text string:package name emphasis:emphasis asArray.
"/    ^ package name
!

package
    "return the value of the instance variable 'package' (automatically generated)"

    ^ package
!

package:something
    "set the value of the instance variable 'package' (automatically generated)"

    package := something.
! !

!PackageSelector::HierarchicalPackageSelector::PackageItem methodsFor:'queries'!

isCategoryItem
    ^ false
!

isPackageItem
    ^ true
! !

!PackageSelector::HierarchicalPackageSelector::RootItem methodsFor:'queries'!

isCategoryItem
    ^ false
!

isPackageItem
    ^ false
! !

!PackageSelector::HierarchicalPackageSelector::RootItem methodsFor:'sorting'!

sort
    self sort:[:x :y|
	(x isCategoryItem and:[y isCategoryItem]) ifTrue:[
	    x name < y name
	] ifFalse:[ y isCategoryItem
	].
    ].
! !

!PackageSelector class methodsFor:'documentation'!

version
    ^ '$Header: /cvs/stx/stx/libbasic3/packages/PackageSelector.st,v 1.5 2006-08-24 08:38:35 cg Exp $'
! !