[squeak-dev] The Trunk: MorphicExtras-nice.135.mcz

commits at source.squeak.org commits at source.squeak.org
Thu Dec 12 00:44:21 UTC 2013


Nicolas Cellier uploaded a new version of MorphicExtras to project The Trunk:
http://source.squeak.org/trunk/MorphicExtras-nice.135.mcz

==================== Summary ====================

Name: MorphicExtras-nice.135
Author: nice
Time: 12 December 2013, 1:43:36.621 am
UUID: bf7f9115-7daf-40b9-ae28-b4ae2a540a76
Ancestors: MorphicExtras-nice.134

Fix PaintBoxMorph prototype icons.
Remove historical bits - now that we can reconstruct, history is not necessary. It belongs to Monticello ancestry.

=============== Diff against MorphicExtras-nice.134 ===============

Item was added:
+ ----- Method: PaintBoxMorph class>>ellipseIcon (in category 'resources') -----
+ ellipseIcon
+ 	^self imageLibrary at: #ellipseIcon ifAbsentPut: [(Form fromBinaryStream: (Base64MimeConverter mimeDecodeToBytes:
+ 		'iVBORw0KGgoAAAANSUhEUgAAABsAAAAVCAMAAACAAGUXAAADAFBMVEX///8AAAD///9/f3//AAAA/wAAAP8A/////wAAAAAfHx8/Pz9fX1+enp6+vr7e3t4HBwcPDw8XFxcnJycvLy83NzdHR0dPT09XV1dnZ2dvb293d3eGhoaOjo6Wlpampqaurq62trbGxsbOzs7W1tbm5ubu7u729vYAAAAAMgAAZQAAmAAAywAA/wAAADIAMjIAZTIAmDIAyzIA/zIAAGUAMmUAZWUAmGUAy2UA/2UAAJgAMpgAZZgAmJgAy5gA/5gAAMsAMssAZcsAmMsAy8sA/8sAAP8AMv8AZf8AmP8Ay/8A//8yAAAyMgAyZQAymAAyywAy/wAyADIyMjIyZTIymDIyyzIy/zIyAGUyMmUyZWUymGUyy2Uy/2UyAJgyMpgyZZgymJgyy5gy/5gyAMsyMssyZcsymMsyy8sy/8syAP8yMv8yZf8ymP8yy/8y//9lAABlMgBlZQBlmABlywBl/wBlADJlMjJlZTJlmDJlyzJl/zJlAGVlMmVlZWVlmGVly2Vl/2VlAJhlMphlZZhlmJhly5hl/5hlAMtlMstlZctlmMtly8tl/8tlAP9lMv9lZf9lmP9ly/9l//+YAACYMgCYZQCYmACYywCY/wCYADKYMjKYZTKYmDKYyzKY/zKYAGWYMmWYZWWYmGWYy2WY/2WYAJiYMpiYZZiYmJiYy5iY/5iYAMuYMsuYZcuYmMuYy8uY/8uYAP+YMv+YZf+YmP+Yy/+Y///LAADLMgDLZQDLmADLywDL/wDLADLLMjLLZTLLmDLLyzLL/zLLAGXLMmXLZWXLmGXLy2XL/2XLAJjLMpjLZZjLmJjLy5jL/5jLAMvLMsvLZcvLmMvLy8vL/8vLAP/LMv/LZf/LmP/Ly//L////AAD/MgD/ZQD/mAD/ywD//wD/ADL/MjL/ZTL/mDL/yzL//zL/AGX/MmX/ZWX/mGX/y2X//2X/AJj/Mpj/ZZj/mJj/y5j//5j/AMv/Msv/Zcv/mMv/y8v//8sAAAD/Mv//Zf//mP//y//////eTOgfAAABAHRSTlP///////////8A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AP//////OE00OwAAALJJREFUeF6N0U0OgyAQBWDfFm0ygGLk73rteTzurCpIBIxN+lYTvpmEgYE5ZeeHDPyXRWeFlHLeWttz3g5QWhMgXD8XPcGEVFoN8p15KgdH1oLFPrFSQtGYh2lvqGGrLYitTRgvi1L0q5G+zMqxt9x7mqPl5xyT6g11jkV/F4u12oS5NYFQ7aVyZ0k8ty3G6TlLGQJU+54ZpbEc3AZo7o3jAoCOL6KV73boNOrZbPd/f8wXgWSq2Ol/ETUAAAAASUVORK5CYII=' readStream)) offset: -5@ -4; yourself]!

Item was added:
+ ----- Method: PaintBoxMorph class>>ellipseIconImage (in category 'resources') -----
+ ellipseIconImage
+ 	^self imageLibrary at: #ellipseIcon ifAbsentPut: [Form fromBinaryStream: (Base64MimeConverter mimeDecodeToBytes:
+ 		'iVBORw0KGgoAAAANSUhEUgAAABsAAAAVCAMAAACAAGUXAAADAFBMVEX///8AAAD///9/f3//AAAA/wAAAP8A/////wAAAAAfHx8/Pz9fX1+enp6+vr7e3t4HBwcPDw8XFxcnJycvLy83NzdHR0dPT09XV1dnZ2dvb293d3eGhoaOjo6Wlpampqaurq62trbGxsbOzs7W1tbm5ubu7u729vYAAAAAMgAAZQAAmAAAywAA/wAAADIAMjIAZTIAmDIAyzIA/zIAAGUAMmUAZWUAmGUAy2UA/2UAAJgAMpgAZZgAmJgAy5gA/5gAAMsAMssAZcsAmMsAy8sA/8sAAP8AMv8AZf8AmP8Ay/8A//8yAAAyMgAyZQAymAAyywAy/wAyADIyMjIyZTIymDIyyzIy/zIyAGUyMmUyZWUymGUyy2Uy/2UyAJgyMpgyZZgymJgyy5gy/5gyAMsyMssyZcsymMsyy8sy/8syAP8yMv8yZf8ymP8yy/8y//9lAABlMgBlZQBlmABlywBl/wBlADJlMjJlZTJlmDJlyzJl/zJlAGVlMmVlZWVlmGVly2Vl/2VlAJhlMphlZZhlmJhly5hl/5hlAMtlMstlZctlmMtly8tl/8tlAP9lMv9lZf9lmP9ly/9l//+YAACYMgCYZQCYmACYywCY/wCYADKYMjKYZTKYmDKYyzKY/zKYAGWYMmWYZWWYmGWYy2WY/2WYAJiYMpiYZZiYmJiYy5iY/5iYAMuYMsuYZcuYmMuYy8uY/8uYAP+YMv+YZf+YmP+Yy/+Y///LAADLMgDLZQDLmADLywDL/wDLADLLMjLLZTLLmDLLyzLL/zLLAGXLMmXLZWXLmGXLy2XL/2XLAJjLMpjLZZjLmJjLy5jL/5jLAMvLMsvLZcvLmMvLy8vL/8vLAP/LMv/LZf/LmP/Ly//L////AAD/MgD/ZQD/mAD/ywD//wD/ADL/MjL/ZTL/mDL/yzL//zL/AGX/MmX/ZWX/mGX/y2X//2X/AJj/Mpj/ZZj/mJj/y5j//5j/AMv/Msv/Zcv/mMv/y8v//8sAAAD/Mv//Zf//mP//y//////eTOgfAAABAHRSTlP///////////8A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AP//////OE00OwAAALJJREFUeF6N0U0OgyAQBWDfFm0ygGLk73rteTzurCpIBIxN+lYTvpmEgYE5ZeeHDPyXRWeFlHLeWttz3g5QWhMgXD8XPcGEVFoN8p15KgdH1oLFPrFSQtGYh2lvqGGrLYitTRgvi1L0q5G+zMqxt9x7mqPl5xyT6g11jkV/F4u12oS5NYFQ7aVyZ0k8ty3G6TlLGQJU+54ZpbEc3AZo7o3jAoCOL6KV73boNOrZbPd/f8wXgWSq2Ol/ETUAAAAASUVORK5CYII=' readStream)]!

Item was added:
+ ----- Method: PaintBoxMorph class>>eraseIcon (in category 'resources') -----
+ eraseIcon
+ 	^self imageLibrary at: #eraseIcon ifAbsentPut: [(Form fromBinaryStream: (Base64MimeConverter mimeDecodeToBytes:
+ 		'iVBORw0KGgoAAAANSUhEUgAAAC8AAAAjCAMAAAAzO6PlAAADAFBMVEUAAAAAAAD//+V/f3//AAAA/wAAAP8A/////wD/AP8fHx8/Pz9fX1+enp6+vr7e3t4HBwcPDw8XFxcnJycvLy83NzdHR0dPT09XV1dnZ2dvb293d3eGhoaOjo6Wlpampqaurq62trbGxsbOzs7W1tbm5ubu7u729vYAAAAAMgAAZQAAmAAAywAA/wAAADIAMjIAZTIAmDIAyzIA/zIAAGUAMmUAZWUAmGUAy2UA/2UAAJgAMpgAZZgAmJgAy5gA/5gAAMsAMssAZcsAmMsAy8sA/8sAAP8AMv8AZf8AmP8Ay/8A//8yAAAyMgAyZQAymAAyywAy/wAyADIyMjIyZTIymDIyyzIy/zIyAGUyMmUyZWUymGUyy2Uy/2UyAJgyMpgyZZgymJgyy5gy/5gyAMsyMssyZcsymMsyy8sy/8syAP8yMv8yZf8ymP8yy/8y//9lAABlMgBlZQBlmABlywBl/wBlADJlMjJlZTJlmDJlyzJl/zJlAGVlMmVlZWVlmGVly2Vl/2VlAJhlMphlZZhlmJhly5hl/5hlAMtlMstlZctlmMtly8tl/8tlAP9lMv9lZf9lmP9ly/9l//+YAACYMgCYZQCYmACYywCY/wCYADKYMjKYZTKYmDKYyzKY/zKYAGWYMmWYZWWYmGWYy2WY/2WYAJiYMpiYZZiYmJiYy5iY/5iYAMuYMsuYZcuYmMuYy8uY/8uYAP+YMv+YZf+YmP+Yy/+Y///LAADLMgDLZQDLmADLywDL/wDLADLLMjLLZTLLmDLLyzLL/zLLAGXLMmXLZWXLmGXLy2XL/2XLAJjLMpjLZZjLmJjLy5jL/5jLAMvLMsvLZcvLmMvLy8vL/8vLAP/LMv/LZf/LmP/Ly//L////AAD/MgD/ZQD/mAD/ywD//wD/ADL/MjL/ZTL/mDL/yzL//zL/AGX/MmX/ZWX/mGX/y2X//2X/AJj/Mpj/ZZj/mJj/y5j//5j/AMv/Msv/Zcv/mMv/y8v//8v/AP//Mv//Zf//mP//y////+Vs9r+lAAABAHRSTlMA////////////////////////////////////////////////////AP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2hiZ4AAAATlJREFUeF7l1DFuhDAQBVA0bST7AFmJzsfci9Cl4xSWVgodVHsDJJBWWMJ2AW4yGRsWJYWxt0qRoaF4Y/4YQ/GXBY7qRZ7f8eTuNW5NNgevjcnmShnTXanN5PFRdcaV750FOB8CNz4aAwjXt9TQTz5auqFIiV1CpMiej5TIACR2tUYSgfsOa1Nv4YFw8L3FWqViXGuEn3wcqG5DNLxe0f3iN6opPqtff5dT4HTZGBfeC7QbVyqsPkRnFd73GnHbTRV0dFLiwfd3EHaPPsSzeE6e99QguAtZhsmdcf610gOklC1jrOsmc3ZsiK/LwgX4BvlxuZQcz04ZcfLUIFgjZVVV9fmZ96svi9Z3zlhZt0wkvhG+8Xlua58l/Q16TbxpPhudwQt+8DXvF8L1/CA989w/GtfEl+L/11Hf/SVoHyShmoYAAAAASUVORK5CYII=' readStream)) offset: -16@ -34; yourself]!

Item was added:
+ ----- Method: PaintBoxMorph class>>eraseIconImage (in category 'resources') -----
+ eraseIconImage
+ 	^self imageLibrary at: #eraseIcon ifAbsentPut: [Form fromBinaryStream: (Base64MimeConverter mimeDecodeToBytes:
+ 		'iVBORw0KGgoAAAANSUhEUgAAAC8AAAAjCAMAAAAzO6PlAAADAFBMVEUAAAAAAAD//+V/f3//AAAA/wAAAP8A/////wD/AP8fHx8/Pz9fX1+enp6+vr7e3t4HBwcPDw8XFxcnJycvLy83NzdHR0dPT09XV1dnZ2dvb293d3eGhoaOjo6Wlpampqaurq62trbGxsbOzs7W1tbm5ubu7u729vYAAAAAMgAAZQAAmAAAywAA/wAAADIAMjIAZTIAmDIAyzIA/zIAAGUAMmUAZWUAmGUAy2UA/2UAAJgAMpgAZZgAmJgAy5gA/5gAAMsAMssAZcsAmMsAy8sA/8sAAP8AMv8AZf8AmP8Ay/8A//8yAAAyMgAyZQAymAAyywAy/wAyADIyMjIyZTIymDIyyzIy/zIyAGUyMmUyZWUymGUyy2Uy/2UyAJgyMpgyZZgymJgyy5gy/5gyAMsyMssyZcsymMsyy8sy/8syAP8yMv8yZf8ymP8yy/8y//9lAABlMgBlZQBlmABlywBl/wBlADJlMjJlZTJlmDJlyzJl/zJlAGVlMmVlZWVlmGVly2Vl/2VlAJhlMphlZZhlmJhly5hl/5hlAMtlMstlZctlmMtly8tl/8tlAP9lMv9lZf9lmP9ly/9l//+YAACYMgCYZQCYmACYywCY/wCYADKYMjKYZTKYmDKYyzKY/zKYAGWYMmWYZWWYmGWYy2WY/2WYAJiYMpiYZZiYmJiYy5iY/5iYAMuYMsuYZcuYmMuYy8uY/8uYAP+YMv+YZf+YmP+Yy/+Y///LAADLMgDLZQDLmADLywDL/wDLADLLMjLLZTLLmDLLyzLL/zLLAGXLMmXLZWXLmGXLy2XL/2XLAJjLMpjLZZjLmJjLy5jL/5jLAMvLMsvLZcvLmMvLy8vL/8vLAP/LMv/LZf/LmP/Ly//L////AAD/MgD/ZQD/mAD/ywD//wD/ADL/MjL/ZTL/mDL/yzL//zL/AGX/MmX/ZWX/mGX/y2X//2X/AJj/Mpj/ZZj/mJj/y5j//5j/AMv/Msv/Zcv/mMv/y8v//8v/AP//Mv//Zf//mP//y////+Vs9r+lAAABAHRSTlMA////////////////////////////////////////////////////AP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2hiZ4AAAATlJREFUeF7l1DFuhDAQBVA0bST7AFmJzsfci9Cl4xSWVgodVHsDJJBWWMJ2AW4yGRsWJYWxt0qRoaF4Y/4YQ/GXBY7qRZ7f8eTuNW5NNgevjcnmShnTXanN5PFRdcaV750FOB8CNz4aAwjXt9TQTz5auqFIiV1CpMiej5TIACR2tUYSgfsOa1Nv4YFw8L3FWqViXGuEn3wcqG5DNLxe0f3iN6opPqtff5dT4HTZGBfeC7QbVyqsPkRnFd73GnHbTRV0dFLiwfd3EHaPPsSzeE6e99QguAtZhsmdcf610gOklC1jrOsmc3ZsiK/LwgX4BvlxuZQcz04ZcfLUIFgjZVVV9fmZ96svi9Z3zlhZt0wkvhG+8Xlua58l/Q16TbxpPhudwQt+8DXvF8L1/CA989w/GtfEl+L/11Hf/SVoHyShmoYAAAAASUVORK5CYII=' readStream)]!

Item was added:
+ ----- Method: PaintBoxMorph class>>eyedropperIcon (in category 'resources') -----
+ eyedropperIcon
+ 	^self imageLibrary at: #eyedropperIcon ifAbsentPut: [(Form fromBinaryStream: (Base64MimeConverter mimeDecodeToBytes:
+ 		'iVBORw0KGgoAAAANSUhEUgAAACYAAAAkCAMAAADSK7iXAAADAFBMVEX///8AAAD///9/f3//AAAA/wAAAP8A/////wAAAAAfHx8/Pz9fX1+enp6+vr7e3t4HBwcPDw8XFxcnJycvLy83NzdHR0dPT09XV1dnZ2dvb293d3eGhoaOjo6Wlpampqaurq62trbGxsbOzs7W1tbm5ubu7u729vYAAAAAMgAAZQAAmAAAywAA/wAAADIAMjIAZTIAmDIAyzIA/zIAAGUAMmUAZWUAmGUAy2UA/2UAAJgAMpgAZZgAmJgAy5gA/5gAAMsAMssAZcsAmMsAy8sA/8sAAP8AMv8AZf8AmP8Ay/8A//8yAAAyMgAyZQAymAAyywAy/wAyADIyMjIyZTIymDIyyzIy/zIyAGUyMmUyZWUymGUyy2Uy/2UyAJgyMpgyZZgymJgyy5gy/5gyAMsyMssyZcsymMsyy8sy/8syAP8yMv8yZf8ymP8yy/8y//9lAABlMgBlZQBlmABlywBl/wBlADJlMjJlZTJlmDJlyzJl/zJlAGVlMmVlZWVlmGVly2Vl/2VlAJhlMphlZZhlmJhly5hl/5hlAMtlMstlZctlmMtly8tl/8tlAP9lMv9lZf9lmP9ly/9l//+YAACYMgCYZQCYmACYywCY/wCYADKYMjKYZTKYmDKYyzKY/zKYAGWYMmWYZWWYmGWYy2WY/2WYAJiYMpiYZZiYmJiYy5iY/5iYAMuYMsuYZcuYmMuYy8uY/8uYAP+YMv+YZf+YmP+Yy/+Y///LAADLMgDLZQDLmADLywDL/wDLADLLMjLLZTLLmDLLyzLL/zLLAGXLMmXLZWXLmGXLy2XL/2XLAJjLMpjLZZjLmJjLy5jL/5jLAMvLMsvLZcvLmMvLy8vL/8vLAP/LMv/LZf/LmP/Ly//L////AAD/MgD/ZQD/mAD/ywD//wD/ADL/MjL/ZTL/mDL/yzL//zL/AGX/MmX/ZWX/mGX/y2X//2X/AJj/Mpj/ZZj/mJj/y5j//5j/AMv/Msv/Zcv/mMv/y8v//8sAAAD/Mv//Zf//mP//y//////eTOgfAAABAHRSTlP///////////8A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AP//////OE00OwAAAR5JREFUeF6t1DGygjAQBmCHVkYroplhFBjzwmHouAidF8ALZOzSeYF4g1Smeu8CtlRJR5vqJejTV0CWwq2/2QnL/ruwdk4t7CfYj5IXmKnOaMkhdjO+5DHMlDF93xvZ4BD71oNyrAmx7ql4VQbYSzXlFFNK6f9qgslOaq/0U02wi2tjetPJYzWoqbdxZaQcWpWBn7Vfcfeqtxpn2ToquB/Enxpl2VdED7g5Vy81xpwi91Od1m81wnLqVJtYe64DLKeUXFsErKXvdcU1sL2riBKxXQJLnrtPFNsYyELhFUJAZJy6CxQDySr8uBAGAph7lcRATjM/riQF4rxfExEvUyD1rCACbcDjwA4t2sE3hKUYPDXsUTMuEpt3uD7LoPoFh1uzvVTXHQoAAAAASUVORK5CYII=' readStream)) offset: -12@ -35; yourself]!

Item was added:
+ ----- Method: PaintBoxMorph class>>eyedropperIconImage (in category 'resources') -----
+ eyedropperIconImage
+ 	^self imageLibrary at: #eyedropperIcon ifAbsentPut: [Form fromBinaryStream: (Base64MimeConverter mimeDecodeToBytes:
+ 		'iVBORw0KGgoAAAANSUhEUgAAACYAAAAkCAMAAADSK7iXAAADAFBMVEX///8AAAD///9/f3//AAAA/wAAAP8A/////wAAAAAfHx8/Pz9fX1+enp6+vr7e3t4HBwcPDw8XFxcnJycvLy83NzdHR0dPT09XV1dnZ2dvb293d3eGhoaOjo6Wlpampqaurq62trbGxsbOzs7W1tbm5ubu7u729vYAAAAAMgAAZQAAmAAAywAA/wAAADIAMjIAZTIAmDIAyzIA/zIAAGUAMmUAZWUAmGUAy2UA/2UAAJgAMpgAZZgAmJgAy5gA/5gAAMsAMssAZcsAmMsAy8sA/8sAAP8AMv8AZf8AmP8Ay/8A//8yAAAyMgAyZQAymAAyywAy/wAyADIyMjIyZTIymDIyyzIy/zIyAGUyMmUyZWUymGUyy2Uy/2UyAJgyMpgyZZgymJgyy5gy/5gyAMsyMssyZcsymMsyy8sy/8syAP8yMv8yZf8ymP8yy/8y//9lAABlMgBlZQBlmABlywBl/wBlADJlMjJlZTJlmDJlyzJl/zJlAGVlMmVlZWVlmGVly2Vl/2VlAJhlMphlZZhlmJhly5hl/5hlAMtlMstlZctlmMtly8tl/8tlAP9lMv9lZf9lmP9ly/9l//+YAACYMgCYZQCYmACYywCY/wCYADKYMjKYZTKYmDKYyzKY/zKYAGWYMmWYZWWYmGWYy2WY/2WYAJiYMpiYZZiYmJiYy5iY/5iYAMuYMsuYZcuYmMuYy8uY/8uYAP+YMv+YZf+YmP+Yy/+Y///LAADLMgDLZQDLmADLywDL/wDLADLLMjLLZTLLmDLLyzLL/zLLAGXLMmXLZWXLmGXLy2XL/2XLAJjLMpjLZZjLmJjLy5jL/5jLAMvLMsvLZcvLmMvLy8vL/8vLAP/LMv/LZf/LmP/Ly//L////AAD/MgD/ZQD/mAD/ywD//wD/ADL/MjL/ZTL/mDL/yzL//zL/AGX/MmX/ZWX/mGX/y2X//2X/AJj/Mpj/ZZj/mJj/y5j//5j/AMv/Msv/Zcv/mMv/y8v//8sAAAD/Mv//Zf//mP//y//////eTOgfAAABAHRSTlP///////////8A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AP//////OE00OwAAAR5JREFUeF6t1DGygjAQBmCHVkYroplhFBjzwmHouAidF8ALZOzSeYF4g1Smeu8CtlRJR5vqJejTV0CWwq2/2QnL/ruwdk4t7CfYj5IXmKnOaMkhdjO+5DHMlDF93xvZ4BD71oNyrAmx7ql4VQbYSzXlFFNK6f9qgslOaq/0U02wi2tjetPJYzWoqbdxZaQcWpWBn7Vfcfeqtxpn2ToquB/Enxpl2VdED7g5Vy81xpwi91Od1m81wnLqVJtYe64DLKeUXFsErKXvdcU1sL2riBKxXQJLnrtPFNsYyELhFUJAZJy6CxQDySr8uBAGAph7lcRATjM/riQF4rxfExEvUyD1rCACbcDjwA4t2sE3hKUYPDXsUTMuEpt3uD7LoPoFh1uzvVTXHQoAAAAASUVORK5CYII=' readStream)]!

Item was added:
+ ----- Method: PaintBoxMorph class>>fillIcon (in category 'resources') -----
+ fillIcon
+ 	^self imageLibrary at: #fillIcon ifAbsentPut: [(Form fromBinaryStream: (Base64MimeConverter mimeDecodeToBytes:
+ 		'iVBORw0KGgoAAAANSUhEUgAAACEAAAAxCAMAAABj7DDGAAADAFBMVEX///8AAAD///9/f3//AAAA/wAAAP8A/////wAAAAAfHx8/Pz9fX1+enp6+vr7e3t4HBwcPDw8XFxcnJycvLy83NzdHR0dPT09XV1dnZ2dvb293d3eGhoaOjo6Wlpampqaurq62trbGxsbOzs7W1tbm5ubu7u729vYAAAAAMgAAZQAAmAAAywAA/wAAADIAMjIAZTIAmDIAyzIA/zIAAGUAMmUAZWUAmGUAy2UA/2UAAJgAMpgAZZgAmJgAy5gA/5gAAMsAMssAZcsAmMsAy8sA/8sAAP8AMv8AZf8AmP8Ay/8A//8yAAAyMgAyZQAymAAyywAy/wAyADIyMjIyZTIymDIyyzIy/zIyAGUyMmUyZWUymGUyy2Uy/2UyAJgyMpgyZZgymJgyy5gy/5gyAMsyMssyZcsymMsyy8sy/8syAP8yMv8yZf8ymP8yy/8y//9lAABlMgBlZQBlmABlywBl/wBlADJlMjJlZTJlmDJlyzJl/zJlAGVlMmVlZWVlmGVly2Vl/2VlAJhlMphlZZhlmJhly5hl/5hlAMtlMstlZctlmMtly8tl/8tlAP9lMv9lZf9lmP9ly/9l//+YAACYMgCYZQCYmACYywCY/wCYADKYMjKYZTKYmDKYyzKY/zKYAGWYMmWYZWWYmGWYy2WY/2WYAJiYMpiYZZiYmJiYy5iY/5iYAMuYMsuYZcuYmMuYy8uY/8uYAP+YMv+YZf+YmP+Yy/+Y///LAADLMgDLZQDLmADLywDL/wDLADLLMjLLZTLLmDLLyzLL/zLLAGXLMmXLZWXLmGXLy2XL/2XLAJjLMpjLZZjLmJjLy5jL/5jLAMvLMsvLZcvLmMvLy8vL/8vLAP/LMv/LZf/LmP/Ly//L////AAD/MgD/ZQD/mAD/ywD//wD/ADL/MjL/ZTL/mDL/yzL//zL/AGX/MmX/ZWX/mGX/y2X//2X/AJj/Mpj/ZZj/mJj/y5j//5j/AMv/Msv/Zcv/mMv/y8v//8sAAAD/Mv//Zf//mP//y//////eTOgfAAABAHRSTlP///////////8A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AP//////OE00OwAAAglJREFUeF6tlN2aoyAMhsfTitIZJSugCX/67PXO5Xq0AdpOZ7a2J8ORJC/Jlwh52/cX623/VcL5mDwdE9R7RB+3SAeE87jsO2InpXtIkFuuFimJyNEPouvxZiFGUgrOfSPcV2QDuPnY9zH13R1xLYFYbM9SMMgUg/siuksB5IOUqwwbmhBD6N2NcKH6OXTis1zyZBjw5K6Ej9XPzhiTTFJqsAwQ3hHE/j4E9ksm1nmCmQGkSnQx9DF4HyKrWNcU49YJAMTZ2kowizkJu7dVphDc1llQwhotukIgHwDtt7UECD15mYlWazHZQkytUuPQIheaYhEoOyOUAjGByAQqBhgZZ8lqKAuUi5nYCqAgE2JUAzOM1ArRznIWkI3qQvDnULbKUi4AaTEChjFbShY7jGWj2uHEgDFhMQZUiayK0mWsG1BN085Ga88U1KBT7cckBKsGdW6as8gVcgx1BQphtck9+2h4jZp7IzSUvPr2b23uqckABwHuTlHZ2q/7gUQ+QiGaFmoCBXh3C/nmpDRU4lQTtAK/3VPPDX+vxN/czLbVP+46pTWem4sQBsD+/15iuBDNxL9jefjmrjE0TPj43V6IDy0OXjZW4iTwcDqcMgBIx/Mj90PTk/mRY0D3dAaNTWOfT6k/jXoxx+bHIe4n3Vnsr7KMLwj1Wsf7cx2fdT1X+vlyav8GcbD+Ab0bxRv8puClAAAAAElFTkSuQmCC' readStream)) offset: -10@ -44; yourself]!

Item was added:
+ ----- Method: PaintBoxMorph class>>fillIconImage (in category 'resources') -----
+ fillIconImage
+ 	^self imageLibrary at: #fillIcon ifAbsentPut: [Form fromBinaryStream: (Base64MimeConverter mimeDecodeToBytes:
+ 		'iVBORw0KGgoAAAANSUhEUgAAACEAAAAxCAMAAABj7DDGAAADAFBMVEX///8AAAD///9/f3//AAAA/wAAAP8A/////wAAAAAfHx8/Pz9fX1+enp6+vr7e3t4HBwcPDw8XFxcnJycvLy83NzdHR0dPT09XV1dnZ2dvb293d3eGhoaOjo6Wlpampqaurq62trbGxsbOzs7W1tbm5ubu7u729vYAAAAAMgAAZQAAmAAAywAA/wAAADIAMjIAZTIAmDIAyzIA/zIAAGUAMmUAZWUAmGUAy2UA/2UAAJgAMpgAZZgAmJgAy5gA/5gAAMsAMssAZcsAmMsAy8sA/8sAAP8AMv8AZf8AmP8Ay/8A//8yAAAyMgAyZQAymAAyywAy/wAyADIyMjIyZTIymDIyyzIy/zIyAGUyMmUyZWUymGUyy2Uy/2UyAJgyMpgyZZgymJgyy5gy/5gyAMsyMssyZcsymMsyy8sy/8syAP8yMv8yZf8ymP8yy/8y//9lAABlMgBlZQBlmABlywBl/wBlADJlMjJlZTJlmDJlyzJl/zJlAGVlMmVlZWVlmGVly2Vl/2VlAJhlMphlZZhlmJhly5hl/5hlAMtlMstlZctlmMtly8tl/8tlAP9lMv9lZf9lmP9ly/9l//+YAACYMgCYZQCYmACYywCY/wCYADKYMjKYZTKYmDKYyzKY/zKYAGWYMmWYZWWYmGWYy2WY/2WYAJiYMpiYZZiYmJiYy5iY/5iYAMuYMsuYZcuYmMuYy8uY/8uYAP+YMv+YZf+YmP+Yy/+Y///LAADLMgDLZQDLmADLywDL/wDLADLLMjLLZTLLmDLLyzLL/zLLAGXLMmXLZWXLmGXLy2XL/2XLAJjLMpjLZZjLmJjLy5jL/5jLAMvLMsvLZcvLmMvLy8vL/8vLAP/LMv/LZf/LmP/Ly//L////AAD/MgD/ZQD/mAD/ywD//wD/ADL/MjL/ZTL/mDL/yzL//zL/AGX/MmX/ZWX/mGX/y2X//2X/AJj/Mpj/ZZj/mJj/y5j//5j/AMv/Msv/Zcv/mMv/y8v//8sAAAD/Mv//Zf//mP//y//////eTOgfAAABAHRSTlP///////////8A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AP//////OE00OwAAAglJREFUeF6tlN2aoyAMhsfTitIZJSugCX/67PXO5Xq0AdpOZ7a2J8ORJC/Jlwh52/cX623/VcL5mDwdE9R7RB+3SAeE87jsO2InpXtIkFuuFimJyNEPouvxZiFGUgrOfSPcV2QDuPnY9zH13R1xLYFYbM9SMMgUg/siuksB5IOUqwwbmhBD6N2NcKH6OXTis1zyZBjw5K6Ej9XPzhiTTFJqsAwQ3hHE/j4E9ksm1nmCmQGkSnQx9DF4HyKrWNcU49YJAMTZ2kowizkJu7dVphDc1llQwhotukIgHwDtt7UECD15mYlWazHZQkytUuPQIheaYhEoOyOUAjGByAQqBhgZZ8lqKAuUi5nYCqAgE2JUAzOM1ArRznIWkI3qQvDnULbKUi4AaTEChjFbShY7jGWj2uHEgDFhMQZUiayK0mWsG1BN085Ga88U1KBT7cckBKsGdW6as8gVcgx1BQphtck9+2h4jZp7IzSUvPr2b23uqckABwHuTlHZ2q/7gUQ+QiGaFmoCBXh3C/nmpDRU4lQTtAK/3VPPDX+vxN/czLbVP+46pTWem4sQBsD+/15iuBDNxL9jefjmrjE0TPj43V6IDy0OXjZW4iTwcDqcMgBIx/Mj90PTk/mRY0D3dAaNTWOfT6k/jXoxx+bHIe4n3Vnsr7KMLwj1Wsf7cx2fdT1X+vlyav8GcbD+Ab0bxRv8puClAAAAAElFTkSuQmCC' readStream)]!

Item was removed:
- ----- Method: PaintBoxMorph class>>fixUpPrototype (in category 'class initialization') -----
- fixUpPrototype
- 	"PaintBoxMorph fixUpPrototype"
- self error: 'who uses this?'.
- 	Prototype eventHandler: nil!

Item was changed:
  ----- Method: PaintBoxMorph class>>initialize (in category 'class initialization') -----
  initialize
  	"PaintBoxMorph initialize"
  
+ 	self prototype eventHandler: nil.
+ 	self prototype focusMorph: nil.
+ 	self prototype stampHolder clear.  "clear stamps"
+ 	self prototype delete.  "break link to world, if any"
- 	Prototype eventHandler: nil.
- 	Prototype focusMorph: nil.
- 	Prototype stampHolder clear.  "clear stamps"
- 	Prototype delete.  "break link to world, if any"
  
  	AllOnImage := AllOffImage := AllPressedImage := nil.
  	OriginalBounds := nil.
  
  !

Item was added:
+ ----- Method: PaintBoxMorph class>>lineIcon (in category 'resources') -----
+ lineIcon
+ 	^self imageLibrary at: #lineIcon ifAbsentPut: [(Form fromBinaryStream: (Base64MimeConverter mimeDecodeToBytes:
+ 		'iVBORw0KGgoAAAANSUhEUgAAABYAAAAVCAMAAAB1/u6nAAADAFBMVEX///8AAAD///9/f3//AAAA/wAAAP8A/////wAAAAAfHx8/Pz9fX1+enp6+vr7e3t4HBwcPDw8XFxcnJycvLy83NzdHR0dPT09XV1dnZ2dvb293d3eGhoaOjo6Wlpampqaurq62trbGxsbOzs7W1tbm5ubu7u729vYAAAAAMgAAZQAAmAAAywAA/wAAADIAMjIAZTIAmDIAyzIA/zIAAGUAMmUAZWUAmGUAy2UA/2UAAJgAMpgAZZgAmJgAy5gA/5gAAMsAMssAZcsAmMsAy8sA/8sAAP8AMv8AZf8AmP8Ay/8A//8yAAAyMgAyZQAymAAyywAy/wAyADIyMjIyZTIymDIyyzIy/zIyAGUyMmUyZWUymGUyy2Uy/2UyAJgyMpgyZZgymJgyy5gy/5gyAMsyMssyZcsymMsyy8sy/8syAP8yMv8yZf8ymP8yy/8y//9lAABlMgBlZQBlmABlywBl/wBlADJlMjJlZTJlmDJlyzJl/zJlAGVlMmVlZWVlmGVly2Vl/2VlAJhlMphlZZhlmJhly5hl/5hlAMtlMstlZctlmMtly8tl/8tlAP9lMv9lZf9lmP9ly/9l//+YAACYMgCYZQCYmACYywCY/wCYADKYMjKYZTKYmDKYyzKY/zKYAGWYMmWYZWWYmGWYy2WY/2WYAJiYMpiYZZiYmJiYy5iY/5iYAMuYMsuYZcuYmMuYy8uY/8uYAP+YMv+YZf+YmP+Yy/+Y///LAADLMgDLZQDLmADLywDL/wDLADLLMjLLZTLLmDLLyzLL/zLLAGXLMmXLZWXLmGXLy2XL/2XLAJjLMpjLZZjLmJjLy5jL/5jLAMvLMsvLZcvLmMvLy8vL/8vLAP/LMv/LZf/LmP/Ly//L////AAD/MgD/ZQD/mAD/ywD//wD/ADL/MjL/ZTL/mDL/yzL//zL/AGX/MmX/ZWX/mGX/y2X//2X/AJj/Mpj/ZZj/mJj/y5j//5j/AMv/Msv/Zcv/mMv/y8v//8sAAAD/Mv//Zf//mP//y//////eTOgfAAABAHRSTlP///////////8A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AP//////OE00OwAAAF5JREFUeF6V0LEOgDAIBNB2dmmiSRPhq/ncTlbRSuEGvfGFELjUGkpqn3mviGktgLty5EsD03aqZ531zFnV8aMz50LgnTE7sdGbpd9gdXB991rmhV2DogHFCu77H4cc4R6SttzoBIUAAAAASUVORK5CYII=' readStream)) offset: -5@ -17; yourself]!

Item was added:
+ ----- Method: PaintBoxMorph class>>lineIconImage (in category 'resources') -----
+ lineIconImage
+ 	^self imageLibrary at: #lineIcon ifAbsentPut: [Form fromBinaryStream: (Base64MimeConverter mimeDecodeToBytes:
+ 		'iVBORw0KGgoAAAANSUhEUgAAABYAAAAVCAMAAAB1/u6nAAADAFBMVEX///8AAAD///9/f3//AAAA/wAAAP8A/////wAAAAAfHx8/Pz9fX1+enp6+vr7e3t4HBwcPDw8XFxcnJycvLy83NzdHR0dPT09XV1dnZ2dvb293d3eGhoaOjo6Wlpampqaurq62trbGxsbOzs7W1tbm5ubu7u729vYAAAAAMgAAZQAAmAAAywAA/wAAADIAMjIAZTIAmDIAyzIA/zIAAGUAMmUAZWUAmGUAy2UA/2UAAJgAMpgAZZgAmJgAy5gA/5gAAMsAMssAZcsAmMsAy8sA/8sAAP8AMv8AZf8AmP8Ay/8A//8yAAAyMgAyZQAymAAyywAy/wAyADIyMjIyZTIymDIyyzIy/zIyAGUyMmUyZWUymGUyy2Uy/2UyAJgyMpgyZZgymJgyy5gy/5gyAMsyMssyZcsymMsyy8sy/8syAP8yMv8yZf8ymP8yy/8y//9lAABlMgBlZQBlmABlywBl/wBlADJlMjJlZTJlmDJlyzJl/zJlAGVlMmVlZWVlmGVly2Vl/2VlAJhlMphlZZhlmJhly5hl/5hlAMtlMstlZctlmMtly8tl/8tlAP9lMv9lZf9lmP9ly/9l//+YAACYMgCYZQCYmACYywCY/wCYADKYMjKYZTKYmDKYyzKY/zKYAGWYMmWYZWWYmGWYy2WY/2WYAJiYMpiYZZiYmJiYy5iY/5iYAMuYMsuYZcuYmMuYy8uY/8uYAP+YMv+YZf+YmP+Yy/+Y///LAADLMgDLZQDLmADLywDL/wDLADLLMjLLZTLLmDLLyzLL/zLLAGXLMmXLZWXLmGXLy2XL/2XLAJjLMpjLZZjLmJjLy5jL/5jLAMvLMsvLZcvLmMvLy8vL/8vLAP/LMv/LZf/LmP/Ly//L////AAD/MgD/ZQD/mAD/ywD//wD/ADL/MjL/ZTL/mDL/yzL//zL/AGX/MmX/ZWX/mGX/y2X//2X/AJj/Mpj/ZZj/mJj/y5j//5j/AMv/Msv/Zcv/mMv/y8v//8sAAAD/Mv//Zf//mP//y//////eTOgfAAABAHRSTlP///////////8A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AP//////OE00OwAAAF5JREFUeF6V0LEOgDAIBNB2dmmiSRPhq/ncTlbRSuEGvfGFELjUGkpqn3mviGktgLty5EsD03aqZ531zFnV8aMz50LgnTE7sdGbpd9gdXB991rmhV2DogHFCu77H4cc4R6SttzoBIUAAAAASUVORK5CYII=' readStream)]!

Item was changed:
  ----- Method: PaintBoxMorph class>>new (in category 'instance creation') -----
  new
  
  	| pb |
+ 	pb := self prototype veryDeepCopy.
- 	pb := Prototype veryDeepCopy.
  		"Assume that the PaintBox does not contain any scripted Players!!"
  	pb stampHolder normalize.	"Get the stamps to show"
  	"Get my own copies of the brushes so I can modify them"
  	#(brush1: brush2: brush3: brush4: brush5: brush6:) do: [:sel | | dualUse formCanvas rect button |
  		button := pb submorphNamed: sel.
  		button offImage: button offImage deepCopy.
  		dualUse := button onImage == button pressedImage.	"sometimes shared"
  		button onImage: button onImage deepCopy.
  		dualUse
  			ifTrue: [button pressedImage: button onImage]
  			ifFalse: [button pressedImage: button pressedImage deepCopy].
  		"force color maps for later mapping"
  		button offImage.
  		button onImage.
  		button pressedImage.
  		formCanvas := button onImage getCanvas.
  		formCanvas := formCanvas
  			copyOrigin: 0 at 0
  			clipRect: (rect := 0 at 0 extent: button onImage extent).
  		(#(brush1: brush3:) includes: sel) ifTrue: [
  			rect := rect origin corner: rect corner - (2 at 2)].
  		(#brush2: == sel) ifTrue: [
  			rect := rect origin corner: rect corner - (2 at 4)].
  		formCanvas frameAndFillRectangle: rect fillColor: Color transparent
  			borderWidth: 2 borderColor: (Color r: 0.599 g: 0.8 b: 1.0).
  		].
  	pb showColor.
  	pb fixUpRecentColors.
  	pb addLabels.
  	^ pb!

Item was added:
+ ----- Method: PaintBoxMorph class>>paintIcon (in category 'resources') -----
+ paintIcon
+ 	^self imageLibrary at: #paintIcon ifAbsentPut: [(Form fromBinaryStream: (Base64MimeConverter mimeDecodeToBytes:
+ 		'iVBORw0KGgoAAAANSUhEUgAAACwAAAAnCAMAAABDnVrwAAADAFBMVEX///8AAAD///9/f3//AAAA/wAAAP8A/////wAAAAAfHx8/Pz9fX1+enp6+vr7e3t4HBwcPDw8XFxcnJycvLy83NzdHR0dPT09XV1dnZ2dvb293d3eGhoaOjo6Wlpampqaurq62trbGxsbOzs7W1tbm5ubu7u729vYAAAAAMgAAZQAAmAAAywAA/wAAADIAMjIAZTIAmDIAyzIA/zIAAGUAMmUAZWUAmGUAy2UA/2UAAJgAMpgAZZgAmJgAy5gA/5gAAMsAMssAZcsAmMsAy8sA/8sAAP8AMv8AZf8AmP8Ay/8A//8yAAAyMgAyZQAymAAyywAy/wAyADIyMjIyZTIymDIyyzIy/zIyAGUyMmUyZWUymGUyy2Uy/2UyAJgyMpgyZZgymJgyy5gy/5gyAMsyMssyZcsymMsyy8sy/8syAP8yMv8yZf8ymP8yy/8y//9lAABlMgBlZQBlmABlywBl/wBlADJlMjJlZTJlmDJlyzJl/zJlAGVlMmVlZWVlmGVly2Vl/2VlAJhlMphlZZhlmJhly5hl/5hlAMtlMstlZctlmMtly8tl/8tlAP9lMv9lZf9lmP9ly/9l//+YAACYMgCYZQCYmACYywCY/wCYADKYMjKYZTKYmDKYyzKY/zKYAGWYMmWYZWWYmGWYy2WY/2WYAJiYMpiYZZiYmJiYy5iY/5iYAMuYMsuYZcuYmMuYy8uY/8uYAP+YMv+YZf+YmP+Yy/+Y///LAADLMgDLZQDLmADLywDL/wDLADLLMjLLZTLLmDLLyzLL/zLLAGXLMmXLZWXLmGXLy2XL/2XLAJjLMpjLZZjLmJjLy5jL/5jLAMvLMsvLZcvLmMvLy8vL/8vLAP/LMv/LZf/LmP/Ly//L////AAD/MgD/ZQD/mAD/ywD//wD/ADL/MjL/ZTL/mDL/yzL//zL/AGX/MmX/ZWX/mGX/y2X//2X/AJj/Mpj/ZZj/mJj/y5j//5j/AMv/Msv/Zcv/mMv/y8v//8sAAAD/Mv//Zf//mP//y//////eTOgfAAABAHRSTlP///////////8A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AP//////OE00OwAAATNJREFUeF7d1KFywzAMBuCN9griLLnF7Rxs5DcJcZDZYKmRQ8pSVBZsFFS2ZwgK6mMUJU9QNMXLunV3sTwwMuHvdDrZ+h8er+H1f7EpaTA2WhcmEFfaWl2UQXiyXWeKKgC3YG03jDYAb7WBvv04Xs44Bmu7EWyPz1xN9vJhMWy+WwS7RdysH7duaTBwH/Dczg7QOMex/hz4jH8kZ4fbwF5czQMPPf5Ft7P96ruMmXvle7uEaVTcLc2H11FEyp99F/AKLOGge/wGnY1jzlvsYPPNc+osIQly3XmmklSCJYI85X68kUpJKMEJT5g/N/I4AalUTWW8ZkjIpEKArU9vJ8X8idRcM07EbCkSXw3jHKza13uZYVl3EICnMaR68Qdj0+wOx+NrpqA3DUjR5jeR+3c4oN4B/GzJ0c+GFaAAAAAASUVORK5CYII=' readStream)) offset: 0 at 0; yourself]!

Item was added:
+ ----- Method: PaintBoxMorph class>>paintIconImage (in category 'resources') -----
+ paintIconImage
+ 	^self imageLibrary at: #paintIcon ifAbsentPut: [Form fromBinaryStream: (Base64MimeConverter mimeDecodeToBytes:
+ 		'iVBORw0KGgoAAAANSUhEUgAAACwAAAAnCAMAAABDnVrwAAADAFBMVEX///8AAAD///9/f3//AAAA/wAAAP8A/////wAAAAAfHx8/Pz9fX1+enp6+vr7e3t4HBwcPDw8XFxcnJycvLy83NzdHR0dPT09XV1dnZ2dvb293d3eGhoaOjo6Wlpampqaurq62trbGxsbOzs7W1tbm5ubu7u729vYAAAAAMgAAZQAAmAAAywAA/wAAADIAMjIAZTIAmDIAyzIA/zIAAGUAMmUAZWUAmGUAy2UA/2UAAJgAMpgAZZgAmJgAy5gA/5gAAMsAMssAZcsAmMsAy8sA/8sAAP8AMv8AZf8AmP8Ay/8A//8yAAAyMgAyZQAymAAyywAy/wAyADIyMjIyZTIymDIyyzIy/zIyAGUyMmUyZWUymGUyy2Uy/2UyAJgyMpgyZZgymJgyy5gy/5gyAMsyMssyZcsymMsyy8sy/8syAP8yMv8yZf8ymP8yy/8y//9lAABlMgBlZQBlmABlywBl/wBlADJlMjJlZTJlmDJlyzJl/zJlAGVlMmVlZWVlmGVly2Vl/2VlAJhlMphlZZhlmJhly5hl/5hlAMtlMstlZctlmMtly8tl/8tlAP9lMv9lZf9lmP9ly/9l//+YAACYMgCYZQCYmACYywCY/wCYADKYMjKYZTKYmDKYyzKY/zKYAGWYMmWYZWWYmGWYy2WY/2WYAJiYMpiYZZiYmJiYy5iY/5iYAMuYMsuYZcuYmMuYy8uY/8uYAP+YMv+YZf+YmP+Yy/+Y///LAADLMgDLZQDLmADLywDL/wDLADLLMjLLZTLLmDLLyzLL/zLLAGXLMmXLZWXLmGXLy2XL/2XLAJjLMpjLZZjLmJjLy5jL/5jLAMvLMsvLZcvLmMvLy8vL/8vLAP/LMv/LZf/LmP/Ly//L////AAD/MgD/ZQD/mAD/ywD//wD/ADL/MjL/ZTL/mDL/yzL//zL/AGX/MmX/ZWX/mGX/y2X//2X/AJj/Mpj/ZZj/mJj/y5j//5j/AMv/Msv/Zcv/mMv/y8v//8sAAAD/Mv//Zf//mP//y//////eTOgfAAABAHRSTlP///////////8A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AP//////OE00OwAAATNJREFUeF7d1KFywzAMBuCN9griLLnF7Rxs5DcJcZDZYKmRQ8pSVBZsFFS2ZwgK6mMUJU9QNMXLunV3sTwwMuHvdDrZ+h8er+H1f7EpaTA2WhcmEFfaWl2UQXiyXWeKKgC3YG03jDYAb7WBvv04Xs44Bmu7EWyPz1xN9vJhMWy+WwS7RdysH7duaTBwH/Dczg7QOMex/hz4jH8kZ4fbwF5czQMPPf5Ft7P96ruMmXvle7uEaVTcLc2H11FEyp99F/AKLOGge/wGnY1jzlvsYPPNc+osIQly3XmmklSCJYI85X68kUpJKMEJT5g/N/I4AalUTWW8ZkjIpEKArU9vJ8X8idRcM07EbCkSXw3jHKza13uZYVl3EICnMaR68Qdj0+wOx+NrpqA3DUjR5jeR+3c4oN4B/GzJ0c+GFaAAAAAASUVORK5CYII=' readStream)]!

Item was added:
+ ----- Method: PaintBoxMorph class>>polygonIcon (in category 'resources') -----
+ polygonIcon
+ 	^self imageLibrary at: #polygonIcon ifAbsentPut: [(Form fromBinaryStream: (Base64MimeConverter mimeDecodeToBytes:
+ 		'iVBORw0KGgoAAAANSUhEUgAAABsAAAAVCAMAAACAAGUXAAADAFBMVEX///8AAAD///9/f3//AAAA/wAAAP8A/////wAAAAAfHx8/Pz9fX1+enp6+vr7e3t4HBwcPDw8XFxcnJycvLy83NzdHR0dPT09XV1dnZ2dvb293d3eGhoaOjo6Wlpampqaurq62trbGxsbOzs7W1tbm5ubu7u729vYAAAAAMgAAZQAAmAAAywAA/wAAADIAMjIAZTIAmDIAyzIA/zIAAGUAMmUAZWUAmGUAy2UA/2UAAJgAMpgAZZgAmJgAy5gA/5gAAMsAMssAZcsAmMsAy8sA/8sAAP8AMv8AZf8AmP8Ay/8A//8yAAAyMgAyZQAymAAyywAy/wAyADIyMjIyZTIymDIyyzIy/zIyAGUyMmUyZWUymGUyy2Uy/2UyAJgyMpgyZZgymJgyy5gy/5gyAMsyMssyZcsymMsyy8sy/8syAP8yMv8yZf8ymP8yy/8y//9lAABlMgBlZQBlmABlywBl/wBlADJlMjJlZTJlmDJlyzJl/zJlAGVlMmVlZWVlmGVly2Vl/2VlAJhlMphlZZhlmJhly5hl/5hlAMtlMstlZctlmMtly8tl/8tlAP9lMv9lZf9lmP9ly/9l//+YAACYMgCYZQCYmACYywCY/wCYADKYMjKYZTKYmDKYyzKY/zKYAGWYMmWYZWWYmGWYy2WY/2WYAJiYMpiYZZiYmJiYy5iY/5iYAMuYMsuYZcuYmMuYy8uY/8uYAP+YMv+YZf+YmP+Yy/+Y///LAADLMgDLZQDLmADLywDL/wDLADLLMjLLZTLLmDLLyzLL/zLLAGXLMmXLZWXLmGXLy2XL/2XLAJjLMpjLZZjLmJjLy5jL/5jLAMvLMsvLZcvLmMvLy8vL/8vLAP/LMv/LZf/LmP/Ly//L////AAD/MgD/ZQD/mAD/ywD//wD/ADL/MjL/ZTL/mDL/yzL//zL/AGX/MmX/ZWX/mGX/y2X//2X/AJj/Mpj/ZZj/mJj/y5j//5j/AMv/Msv/Zcv/mMv/y8v//8sAAAD/Mv//Zf//mP//y//////eTOgfAAABAHRSTlP///////////8A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AP//////OE00OwAAAI9JREFUeF6dkU0OhCAMhWXrOAmo0IxM5lIeQs/jcbvyp7appOPCBwuSj34vgQpxz4JGKnzOFsq/ufkNsad0sWATeCf5FqxOfBvc68qGIAxdKJgHYT1LT5YVa1hqOEXKc5qx1OgTqdEnUqsPR5LyXKvZh6Q8V8c8ZAlJpW97Rx8o7XZW7JfgWLQBkmJ48+9mVvybrBthz+e6AAAAAElFTkSuQmCC' readStream)) offset: -5@ -4; yourself]!

Item was added:
+ ----- Method: PaintBoxMorph class>>polygonIconImage (in category 'resources') -----
+ polygonIconImage
+ 	^self imageLibrary at: #polygonIcon ifAbsentPut: [Form fromBinaryStream: (Base64MimeConverter mimeDecodeToBytes:
+ 		'iVBORw0KGgoAAAANSUhEUgAAABsAAAAVCAMAAACAAGUXAAADAFBMVEX///8AAAD///9/f3//AAAA/wAAAP8A/////wAAAAAfHx8/Pz9fX1+enp6+vr7e3t4HBwcPDw8XFxcnJycvLy83NzdHR0dPT09XV1dnZ2dvb293d3eGhoaOjo6Wlpampqaurq62trbGxsbOzs7W1tbm5ubu7u729vYAAAAAMgAAZQAAmAAAywAA/wAAADIAMjIAZTIAmDIAyzIA/zIAAGUAMmUAZWUAmGUAy2UA/2UAAJgAMpgAZZgAmJgAy5gA/5gAAMsAMssAZcsAmMsAy8sA/8sAAP8AMv8AZf8AmP8Ay/8A//8yAAAyMgAyZQAymAAyywAy/wAyADIyMjIyZTIymDIyyzIy/zIyAGUyMmUyZWUymGUyy2Uy/2UyAJgyMpgyZZgymJgyy5gy/5gyAMsyMssyZcsymMsyy8sy/8syAP8yMv8yZf8ymP8yy/8y//9lAABlMgBlZQBlmABlywBl/wBlADJlMjJlZTJlmDJlyzJl/zJlAGVlMmVlZWVlmGVly2Vl/2VlAJhlMphlZZhlmJhly5hl/5hlAMtlMstlZctlmMtly8tl/8tlAP9lMv9lZf9lmP9ly/9l//+YAACYMgCYZQCYmACYywCY/wCYADKYMjKYZTKYmDKYyzKY/zKYAGWYMmWYZWWYmGWYy2WY/2WYAJiYMpiYZZiYmJiYy5iY/5iYAMuYMsuYZcuYmMuYy8uY/8uYAP+YMv+YZf+YmP+Yy/+Y///LAADLMgDLZQDLmADLywDL/wDLADLLMjLLZTLLmDLLyzLL/zLLAGXLMmXLZWXLmGXLy2XL/2XLAJjLMpjLZZjLmJjLy5jL/5jLAMvLMsvLZcvLmMvLy8vL/8vLAP/LMv/LZf/LmP/Ly//L////AAD/MgD/ZQD/mAD/ywD//wD/ADL/MjL/ZTL/mDL/yzL//zL/AGX/MmX/ZWX/mGX/y2X//2X/AJj/Mpj/ZZj/mJj/y5j//5j/AMv/Msv/Zcv/mMv/y8v//8sAAAD/Mv//Zf//mP//y//////eTOgfAAABAHRSTlP///////////8A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AP//////OE00OwAAAI9JREFUeF6dkU0OhCAMhWXrOAmo0IxM5lIeQs/jcbvyp7appOPCBwuSj34vgQpxz4JGKnzOFsq/ufkNsad0sWATeCf5FqxOfBvc68qGIAxdKJgHYT1LT5YVa1hqOEXKc5qx1OgTqdEnUqsPR5LyXKvZh6Q8V8c8ZAlJpW97Rx8o7XZW7JfgWLQBkmJ48+9mVvybrBthz+e6AAAAAElFTkSuQmCC' readStream)]!

Item was changed:
+ ----- Method: PaintBoxMorph class>>prototype (in category 'instance creation') -----
- ----- Method: PaintBoxMorph class>>prototype (in category 'resources') -----
  prototype
  	"Later we will be a subclass of Model, and it will have a general version of this"
  	^ Prototype ifNil: [Prototype := self newPrototype]!

Item was added:
+ ----- Method: PaintBoxMorph class>>rectIcon (in category 'resources') -----
+ rectIcon
+ 	^self imageLibrary at: #rectIcon ifAbsentPut: [(Form fromBinaryStream: (Base64MimeConverter mimeDecodeToBytes:
+ 		'iVBORw0KGgoAAAANSUhEUgAAABUAAAAUCAMAAABVlYYBAAADAFBMVEX///8AAAD///9/f3//AAAA/wAAAP8A/////wAAAAAfHx8/Pz9fX1+enp6+vr7e3t4HBwcPDw8XFxcnJycvLy83NzdHR0dPT09XV1dnZ2dvb293d3eGhoaOjo6Wlpampqaurq62trbGxsbOzs7W1tbm5ubu7u729vYAAAAAMgAAZQAAmAAAywAA/wAAADIAMjIAZTIAmDIAyzIA/zIAAGUAMmUAZWUAmGUAy2UA/2UAAJgAMpgAZZgAmJgAy5gA/5gAAMsAMssAZcsAmMsAy8sA/8sAAP8AMv8AZf8AmP8Ay/8A//8yAAAyMgAyZQAymAAyywAy/wAyADIyMjIyZTIymDIyyzIy/zIyAGUyMmUyZWUymGUyy2Uy/2UyAJgyMpgyZZgymJgyy5gy/5gyAMsyMssyZcsymMsyy8sy/8syAP8yMv8yZf8ymP8yy/8y//9lAABlMgBlZQBlmABlywBl/wBlADJlMjJlZTJlmDJlyzJl/zJlAGVlMmVlZWVlmGVly2Vl/2VlAJhlMphlZZhlmJhly5hl/5hlAMtlMstlZctlmMtly8tl/8tlAP9lMv9lZf9lmP9ly/9l//+YAACYMgCYZQCYmACYywCY/wCYADKYMjKYZTKYmDKYyzKY/zKYAGWYMmWYZWWYmGWYy2WY/2WYAJiYMpiYZZiYmJiYy5iY/5iYAMuYMsuYZcuYmMuYy8uY/8uYAP+YMv+YZf+YmP+Yy/+Y///LAADLMgDLZQDLmADLywDL/wDLADLLMjLLZTLLmDLLyzLL/zLLAGXLMmXLZWXLmGXLy2XL/2XLAJjLMpjLZZjLmJjLy5jL/5jLAMvLMsvLZcvLmMvLy8vL/8vLAP/LMv/LZf/LmP/Ly//L////AAD/MgD/ZQD/mAD/ywD//wD/ADL/MjL/ZTL/mDL/yzL//zL/AGX/MmX/ZWX/mGX/y2X//2X/AJj/Mpj/ZZj/mJj/y5j//5j/AMv/Msv/Zcv/mMv/y8v//8sAAAD/Mv//Zf//mP//y//////eTOgfAAABAHRSTlP///////////8A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AP//////OE00OwAAAG5JREFUeF6VkNEKgCAMRfV1L7mMRhZ9tJ+7p+ZyZCCIRxhyuNyH65gL99mQTqeSlwMwoLLG4KslpL08PWgWIn9Eswg9G8bZbZCNE9lub7+hm80IKdk4F5j1gq0j32pJVtFtdB4Sm1+aYq5Z/jNjH9oIHun4V1LxAAAAAElFTkSuQmCC' readStream)) offset: -6@ -17; yourself]!

Item was added:
+ ----- Method: PaintBoxMorph class>>rectIconImage (in category 'resources') -----
+ rectIconImage
+ 	^self imageLibrary at: #rectIcon ifAbsentPut: [Form fromBinaryStream: (Base64MimeConverter mimeDecodeToBytes:
+ 		'iVBORw0KGgoAAAANSUhEUgAAABUAAAAUCAMAAABVlYYBAAADAFBMVEX///8AAAD///9/f3//AAAA/wAAAP8A/////wAAAAAfHx8/Pz9fX1+enp6+vr7e3t4HBwcPDw8XFxcnJycvLy83NzdHR0dPT09XV1dnZ2dvb293d3eGhoaOjo6Wlpampqaurq62trbGxsbOzs7W1tbm5ubu7u729vYAAAAAMgAAZQAAmAAAywAA/wAAADIAMjIAZTIAmDIAyzIA/zIAAGUAMmUAZWUAmGUAy2UA/2UAAJgAMpgAZZgAmJgAy5gA/5gAAMsAMssAZcsAmMsAy8sA/8sAAP8AMv8AZf8AmP8Ay/8A//8yAAAyMgAyZQAymAAyywAy/wAyADIyMjIyZTIymDIyyzIy/zIyAGUyMmUyZWUymGUyy2Uy/2UyAJgyMpgyZZgymJgyy5gy/5gyAMsyMssyZcsymMsyy8sy/8syAP8yMv8yZf8ymP8yy/8y//9lAABlMgBlZQBlmABlywBl/wBlADJlMjJlZTJlmDJlyzJl/zJlAGVlMmVlZWVlmGVly2Vl/2VlAJhlMphlZZhlmJhly5hl/5hlAMtlMstlZctlmMtly8tl/8tlAP9lMv9lZf9lmP9ly/9l//+YAACYMgCYZQCYmACYywCY/wCYADKYMjKYZTKYmDKYyzKY/zKYAGWYMmWYZWWYmGWYy2WY/2WYAJiYMpiYZZiYmJiYy5iY/5iYAMuYMsuYZcuYmMuYy8uY/8uYAP+YMv+YZf+YmP+Yy/+Y///LAADLMgDLZQDLmADLywDL/wDLADLLMjLLZTLLmDLLyzLL/zLLAGXLMmXLZWXLmGXLy2XL/2XLAJjLMpjLZZjLmJjLy5jL/5jLAMvLMsvLZcvLmMvLy8vL/8vLAP/LMv/LZf/LmP/Ly//L////AAD/MgD/ZQD/mAD/ywD//wD/ADL/MjL/ZTL/mDL/yzL//zL/AGX/MmX/ZWX/mGX/y2X//2X/AJj/Mpj/ZZj/mJj/y5j//5j/AMv/Msv/Zcv/mMv/y8v//8sAAAD/Mv//Zf//mP//y//////eTOgfAAABAHRSTlP///////////8A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AP//////OE00OwAAAG5JREFUeF6VkNEKgCAMRfV1L7mMRhZ9tJ+7p+ZyZCCIRxhyuNyH65gL99mQTqeSlwMwoLLG4KslpL08PWgWIn9Eswg9G8bZbZCNE9lub7+hm80IKdk4F5j1gq0j32pJVtFtdB4Sm1+aYq5Z/jNjH9oIHun4V1LxAAAAAElFTkSuQmCC' readStream)]!

Item was added:
+ ----- Method: PaintBoxMorph class>>starIcon (in category 'resources') -----
+ starIcon
+ 	^self imageLibrary at: #starIcon ifAbsentPut: [(Form fromBinaryStream: (Base64MimeConverter mimeDecodeToBytes:
+ 		'iVBORw0KGgoAAAANSUhEUgAAABgAAAAUCAMAAACgaw2xAAADAFBMVEX///8AAAD///9/f3//AAAA/wAAAP8A/////wAAAAAfHx8/Pz9fX1+enp6+vr7e3t4HBwcPDw8XFxcnJycvLy83NzdHR0dPT09XV1dnZ2dvb293d3eGhoaOjo6Wlpampqaurq62trbGxsbOzs7W1tbm5ubu7u729vYAAAAAMgAAZQAAmAAAywAA/wAAADIAMjIAZTIAmDIAyzIA/zIAAGUAMmUAZWUAmGUAy2UA/2UAAJgAMpgAZZgAmJgAy5gA/5gAAMsAMssAZcsAmMsAy8sA/8sAAP8AMv8AZf8AmP8Ay/8A//8yAAAyMgAyZQAymAAyywAy/wAyADIyMjIyZTIymDIyyzIy/zIyAGUyMmUyZWUymGUyy2Uy/2UyAJgyMpgyZZgymJgyy5gy/5gyAMsyMssyZcsymMsyy8sy/8syAP8yMv8yZf8ymP8yy/8y//9lAABlMgBlZQBlmABlywBl/wBlADJlMjJlZTJlmDJlyzJl/zJlAGVlMmVlZWVlmGVly2Vl/2VlAJhlMphlZZhlmJhly5hl/5hlAMtlMstlZctlmMtly8tl/8tlAP9lMv9lZf9lmP9ly/9l//+YAACYMgCYZQCYmACYywCY/wCYADKYMjKYZTKYmDKYyzKY/zKYAGWYMmWYZWWYmGWYy2WY/2WYAJiYMpiYZZiYmJiYy5iY/5iYAMuYMsuYZcuYmMuYy8uY/8uYAP+YMv+YZf+YmP+Yy/+Y///LAADLMgDLZQDLmADLywDL/wDLADLLMjLLZTLLmDLLyzLL/zLLAGXLMmXLZWXLmGXLy2XL/2XLAJjLMpjLZZjLmJjLy5jL/5jLAMvLMsvLZcvLmMvLy8vL/8vLAP/LMv/LZf/LmP/Ly//L////AAD/MgD/ZQD/mAD/ywD//wD/ADL/MjL/ZTL/mDL/yzL//zL/AGX/MmX/ZWX/mGX/y2X//2X/AJj/Mpj/ZZj/mJj/y5j//5j/AMv/Msv/Zcv/mMv/y8v//8sAAAD/Mv//Zf//mP//y//////eTOgfAAABAHRSTlP///////////8A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AP//////OE00OwAAAKlJREFUeF51kTsSwyAMRNkWU8gQrOEzuV5yHh+XKsIEE2aIqkVPQlpQpaxDTSc3g7MfGHEJIsEtAdiNFnW2EGmpxNFydaQU2QMs00Fu45AaeJWyA/YhMjlRBDTw1kR5LBoA331Y2Dufj5rvBv1NMtdZw7nH1kSCmZ4k4OgVzwkYhCaOr0d1P1NOrGmTCi7zDA1UE+7aaQBISu4wFU2A9u8MQ3rxUX9/8Cc+919bKkV5meQAAAAASUVORK5CYII=' readStream)) offset: -2@ -5; yourself]!

Item was added:
+ ----- Method: PaintBoxMorph class>>starIconImage (in category 'resources') -----
+ starIconImage
+ 	^self imageLibrary at: #starIcon ifAbsentPut: [Form fromBinaryStream: (Base64MimeConverter mimeDecodeToBytes:
+ 		'iVBORw0KGgoAAAANSUhEUgAAABgAAAAUCAMAAACgaw2xAAADAFBMVEX///8AAAD///9/f3//AAAA/wAAAP8A/////wAAAAAfHx8/Pz9fX1+enp6+vr7e3t4HBwcPDw8XFxcnJycvLy83NzdHR0dPT09XV1dnZ2dvb293d3eGhoaOjo6Wlpampqaurq62trbGxsbOzs7W1tbm5ubu7u729vYAAAAAMgAAZQAAmAAAywAA/wAAADIAMjIAZTIAmDIAyzIA/zIAAGUAMmUAZWUAmGUAy2UA/2UAAJgAMpgAZZgAmJgAy5gA/5gAAMsAMssAZcsAmMsAy8sA/8sAAP8AMv8AZf8AmP8Ay/8A//8yAAAyMgAyZQAymAAyywAy/wAyADIyMjIyZTIymDIyyzIy/zIyAGUyMmUyZWUymGUyy2Uy/2UyAJgyMpgyZZgymJgyy5gy/5gyAMsyMssyZcsymMsyy8sy/8syAP8yMv8yZf8ymP8yy/8y//9lAABlMgBlZQBlmABlywBl/wBlADJlMjJlZTJlmDJlyzJl/zJlAGVlMmVlZWVlmGVly2Vl/2VlAJhlMphlZZhlmJhly5hl/5hlAMtlMstlZctlmMtly8tl/8tlAP9lMv9lZf9lmP9ly/9l//+YAACYMgCYZQCYmACYywCY/wCYADKYMjKYZTKYmDKYyzKY/zKYAGWYMmWYZWWYmGWYy2WY/2WYAJiYMpiYZZiYmJiYy5iY/5iYAMuYMsuYZcuYmMuYy8uY/8uYAP+YMv+YZf+YmP+Yy/+Y///LAADLMgDLZQDLmADLywDL/wDLADLLMjLLZTLLmDLLyzLL/zLLAGXLMmXLZWXLmGXLy2XL/2XLAJjLMpjLZZjLmJjLy5jL/5jLAMvLMsvLZcvLmMvLy8vL/8vLAP/LMv/LZf/LmP/Ly//L////AAD/MgD/ZQD/mAD/ywD//wD/ADL/MjL/ZTL/mDL/yzL//zL/AGX/MmX/ZWX/mGX/y2X//2X/AJj/Mpj/ZZj/mJj/y5j//5j/AMv/Msv/Zcv/mMv/y8v//8sAAAD/Mv//Zf//mP//y//////eTOgfAAABAHRSTlP///////////8A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AP//////OE00OwAAAKlJREFUeF51kTsSwyAMRNkWU8gQrOEzuV5yHh+XKsIEE2aIqkVPQlpQpaxDTSc3g7MfGHEJIsEtAdiNFnW2EGmpxNFydaQU2QMs00Fu45AaeJWyA/YhMjlRBDTw1kR5LBoA331Y2Dufj5rvBv1NMtdZw7nH1kSCmZ4k4OgVzwkYhCaOr0d1P1NOrGmTCi7zDA1UE+7aaQBISu4wFU2A9u8MQ3rxUX9/8Cc+919bKkV5meQAAAAASUVORK5CYII=' readStream)]!

Item was changed:
  ----- Method: PaintBoxMorph>>addShapeButtonsOffImage:onImage: (in category 'initialization') -----
  addShapeButtonsOffImage: offImage onImage: onImage
+ 	| shapes posSpec iconSpec |
- 	| shapes posSpec |
  	posSpec := #(
  		(17 17 17 17 17) "offset X"
  		(0 22 44 66 88) "offset Y"
  		(30 30 30 30 30) "width"
  		(21 21 21 21 21) "height").
  	shapes := self submorphNamed: 'shapes'.
+ 	iconSpec := #(lineIcon rectIcon ellipseIcon polygonIcon starIcon).
+ 	#(line: rect: ellipse: polygon: star:) keysAndValuesDo: [:index :name |
- 	#(line: rect: ellipse: poylgon: star:) keysAndValuesDo: [:index :name |
  		| button rect |
  		(self submorphNamed: name) ifNil:
  			[rect := ((posSpec at: 1) at: index) @ ((posSpec at: 2) at: index)
  					extent: ((posSpec at: 3) at: index) @ ((posSpec at: 4) at: index).
  			(button := ThreePhaseButtonMorph new)
  				onImage: (onImage copy: rect);
  				offImage: (offImage copy: rect);
  				pressedImage: (onImage copy: rect);
  				bounds: (rect translateBy: shapes position);
  				setNamePropertyTo: name;
  				actionSelector: #tool:action:cursor:evt:; 
+ 					arguments: (Array with: button with: name with: (self class perform: (iconSpec at: index)));
- 					arguments: (Array with: button with: name with: (self makeCursorFrom: (offImage copy: rect)));
  				actWhen: #buttonUp; target: self.
  			shapes addMorph: button.]].!

Item was changed:
  ----- Method: PaintBoxMorph>>addToolsOffImage:onImage: (in category 'initialization') -----
  addToolsOffImage: offImage onImage: onImage
+ 	| posSpec actionSpec iconSpec |
- 	| posSpec actionSpec |
  	posSpec := #(
  		(13 53 13 53) "offset X"
  		(13 13 61 61) "offset Y"
  		(40 40 40 40) "width"
  		(48 48 44 44) "height").
  	actionSpec := #(tool:action:cursor:evt: tool:action:cursor:evt: eyedropper:action:cursor:evt: tool:action:cursor:evt:).
+ 	iconSpec := #(paintIcon fillIcon eyedropperIcon eraseIcon).
  	#(paint: fill: eyedropper: erase:) keysAndValuesDo: [:index :name |
  		| button rect |
  		(self submorphNamed: name) ifNil:
  			[rect := ((posSpec at: 1) at: index) @ ((posSpec at: 2) at: index)
  					extent: ((posSpec at: 3) at: index) @ ((posSpec at: 4) at: index).
  			(button := ThreePhaseButtonMorph new)
  				onImage: (onImage copy: rect);
  				offImage: (offImage copy: rect);
  				pressedImage: (onImage copy: rect);
  				bounds: (rect translateBy: self position);
  				setNamePropertyTo: name;
  				actionSelector: (actionSpec at: index); 
+ 					arguments: (Array with: button with: name with: (self class perform: (iconSpec at: index)));
- 					arguments: (Array with: button with: name with: (self makeCursorFrom: (offImage copy: rect)));
  				actWhen: #buttonUp; target: self.
  			self addMorph: button.]].
  
  !

Item was removed:
- ----- Method: PaintBoxMorph>>createButtons (in category 'initialization') -----
- createButtons
- 	"Create buttons one at a time and let the user place them over the background.  Later can move them again by turning on AuthorModeOwner in ThreePhaseButtonMorph.
- 	self createButtons.	"
- 
- 	#(erase: eyedropper: fill: paint: rect: ellipse: polygon: line: star: pickup: "pickup: pickup: pickup:" stamp: "stamp: stamp: stamp:" undo: keep: toss: prevStamp: nextStamp:) do: [:sel |
- 		| rect button |
- 		(self submorphNamed: sel) ifNil:
- 			[self inform: 'Rectangle for ',sel.
- 			rect := Rectangle fromUser.
- 			button := ThreePhaseButtonMorph new.
- 			button onImage: nil; bounds: rect.
- 			self addMorph: button.
- 			button actionSelector: #tool:action:cursor:evt:; arguments: (Array with: button with: sel with: nil).
- 			button actWhen: #buttonUp; target: self]].
- 	#(brush1: brush2: brush3: brush4: brush5: brush6: ) doWithIndex: [:sel :ind |
- 		| rect button nib |
- 		(self submorphNamed: sel) ifNil:
- 			[self inform: 'Rectangle for ',sel.
- 			rect := Rectangle fromUser.
- 			button := ThreePhaseButtonMorph new.
- 			button onImage: nil; bounds: rect.
- 			self addMorph: button.
- 			nib := Form dotOfSize: (#(1 2 3 6 11 26) at: ind).
- 			button actionSelector: #brush:action:nib:evt:; 
- 					arguments: (Array with: button with: sel with: nib).
- 			button actWhen: #buttonUp; target: self]].
- 	"stamp:  Stamps are held in a ScrollingToolHolder.  Pickups and stamps and brushes are id-ed by the button == with item from a list."
- 
- 
- !

Item was changed:
  ----- Method: PaintBoxMorph>>fixupButtons (in category 'initialization') -----
  fixupButtons
+ 	self flag: #toRemove!
- 	| changes answer |
- 	changes := Dictionary new.
- 	changes
- 		at: #brush:action:nib: put: #brush:action:nib:evt:;
- 		at: #tool:action:cursor: put: #tool:action:cursor:evt:;
- 		at: #pickup:action:cursor: put: #pickup:action:cursor:evt:;
- 		at: #keep:with: put: #keep:with:evt:;
- 		at: #undo:with: put: #undo:with:evt:;
- 		at: #scrollStamps:action: put: #scrollStamps:action:evt:;
- 		at: #toss:with: put: #toss:with:evt:;
- 		at: #eyedropper:action:cursor: put: #eyedropper:action:cursor:evt:;
- 		at: #clear:with: put: #clear:with:evt:.
- 	answer := WriteStream on: String new.
- 	self allMorphsDo: 
- 			[:each | | newSelector | 
- 			(each isKindOf: ThreePhaseButtonMorph) 
- 				ifTrue: 
- 					[answer nextPutAll: each actionSelector.
- 					(changes includesKey: each actionSelector) 
- 						ifTrue: 
- 							[each actionSelector: (newSelector := changes at: each actionSelector).
- 							answer nextPutAll: ' <-- ' , newSelector].
- 					answer cr]].
- 	^answer contents
- 	"StringHolder new
- 		contents: answer contents;
- 		openLabel: 'button fixups'"!

Item was removed:
- ----- Method: PaintBoxMorph>>init3 (in category 'initialization') -----
- init3
- 	"Just a record of how we loaded in the latest paintbox button images"
- 
- 	| bb pic16Bit aa blt thin |
- 	self loadoffImage: 'etoy_default.gif'.
- 	self allMorphsDo: 
- 			[:button | 
- 			(button isKindOf: ThreePhaseButtonMorph) 
- 				ifTrue: [button offImage: nil]
- 				ifFalse: [button position: button position + (100 @ 0)]].
- 	(bb := self submorphNamed: #keep:) position: bb position + (100 @ 0).
- 	(bb := self submorphNamed: #toss:) position: bb position + (100 @ 0).
- 	(bb := self submorphNamed: #undo:) position: bb position + (100 @ 0).
- 	"Transparent is (Color r: 1.0 g: 0 b: 1.0)"
- 	self moveButtons.
- 	self loadOnImage: 'etoy_in.gif'.
- 	AllOnImage := nil.
- 	'save space'.
- 	self loadPressedImage: 'etoy_in.gif'.
- 	AllPressedImage := nil.
- 	'save space'.
- 	self loadCursors.
- 
- 	"position the stamp buttons"
- 	stampHolder stampButtons owner last delete.
- 	stampHolder pickupButtons last delete.
- 	stampHolder stampButtons: (stampHolder stampButtons copyFrom: 1 to: 3).
- 	stampHolder pickupButtons: (stampHolder pickupButtons copyFrom: 1 to: 3).
- 	stampHolder pickupButtons do: 
- 			[:button | 
- 			| rect |
- 			"PopUpMenu notify: 'Rectangle for ',sel."
- 
- 			rect := Rectangle fromUser.
- 			button bounds: rect	"image is nil"].
- 	"| rect lay |"
- 	stampHolder clear.
- 	stampHolder stampButtons do: 
- 			[:button |
- 			| lay rect | 
- 			button
- 				offImage: nil;
- 				pressedImage: nil.
- 			lay := button owner.
- 			"PopUpMenu notify: 'Rectangle for ',sel."
- 			rect := Rectangle fromUser.
- 			button image: (Form fromDisplay: (rect insetBy: 2)).
- 			lay borderWidth: 2.
- 			lay bounds: rect	"image is nil"].
- 	"| pic16Bit blt aa on |"
- 	pic16Bit := GIFReadWriter formFromFileNamed: 'etoy_in.gif'.	"really 8"
- 	aa := Form extent: OriginalBounds extent depth: 8.
- 	blt := BitBlt toForm: aa.
- 	blt
- 		sourceForm: pic16Bit;
- 		combinationRule: Form over;
- 		sourceRect: OriginalBounds;
- 		destOrigin: 0 @ 0;
- 		copyBits.
- 	"Collect all the images for the buttons in the on state"
- 	stampHolder pickupButtons do: 
- 			[:button | | on | 
- 			on := ColorForm extent: button extent depth: 8.
- 			on colors: pic16Bit colors.
- 			on 
- 				copy: (0 @ 0 extent: button extent)
- 				from: button topLeft - self topLeft
- 				in: aa
- 				rule: Form over.
- 			button
- 				image: on;
- 				pressedImage: on;
- 				offImage: nil].
- 	self invalidRect: bounds.
- 	((self submorphNamed: #erase:) arguments third) offset: 12 @ 35.
- 	((self submorphNamed: #eyedropper:) arguments third) offset: 0 @ 0.
- 	((self submorphNamed: #fill:) arguments third) offset: 10 @ 44.
- 	((self submorphNamed: #paint:) arguments third) offset: 3 @ 3.	"unused"
- 	((self submorphNamed: #rect:) arguments third) offset: 6 @ 17.
- 	((self submorphNamed: #ellipse:) arguments third) offset: 5 @ 4.
- 	((self submorphNamed: #polygon:) arguments third) offset: 5 @ 4.
- 	((self submorphNamed: #line:) arguments third) offset: 5 @ 17.
- 	((self submorphNamed: #star:) arguments third) offset: 2 @ 5.
- 	thumbnail delete.
- 	thumbnail := nil.
- 	(submorphs select: [:e | e class == RectangleMorph]) first 
- 		bounds: Rectangle fromUser.
- 	((submorphs select: [:e | e class == RectangleMorph]) first)
- 		borderWidth: 1;
- 		borderColor: Color black.
- 	"| thin |"
- 	submorphs do: [:ss | ss class == ImageMorph ifTrue: [thin := ss	"first"]].
- 	colorMemoryThin := thin!

Item was removed:
- ----- Method: PaintBoxMorph>>init4 (in category 'initialization') -----
- init4
- 	"Just a record of how Ted loaded in the paintbox button images, Feb 98"
- 	| bb im pp newImage pic24Bit picNewBit blt |
- 
- 	"self loadoffImage: 'roundedPalette3.bmp'."
- 	pic24Bit := GIFReadWriter formFromServerFile: 'updates/137roundedPalette3.bmp'.
- 	picNewBit := Form extent: pic24Bit extent depth: 16.
- 	pic24Bit displayOn: picNewBit.
- 	OriginalBounds := picNewBit boundingBox.
- 	AllOffImage := Form extent: OriginalBounds extent depth: 16.
- 	blt := BitBlt toForm: AllOffImage.
- 	blt sourceForm: picNewBit; combinationRule: Form over;
- 		sourceRect: OriginalBounds; destOrigin: 0 @ 0; copyBits.
- 
- 	AllOffImage mapColor: Color transparent to: Color black.
- 	self image: AllOffImage.
- 	self invalidRect: bounds.
- 
- 	self submorphsDo: [:button | button position: button position + (10 @ 10)].
- 	(im := submorphs at: 28) class == ImageMorph ifTrue: [
- 		im position: im position + (2 @ 0)].	"color picker"
- 	"exercise it once"
- 
- 	(bb := self submorphNamed: #keep:) position: bb position + (0 @ 25).
- 	(bb := self submorphNamed: #toss:) position: bb position + (0 @ 25).
- 	(bb := self submorphNamed: #undo:) position: bb position + (0 @ -25).
- 	(bb := self submorphNamed: #clear:) position: bb position + (0 @ -25).
- 	(bb := self submorphNamed: #undo:) position: bb position + (0 @ -69).
- 	(bb := self submorphNamed: #clear:) position: bb position + (0 @ -69).
- 	self submorphsDo: [:button | 
- 		button class == AlignmentMorph ifTrue: [
- 			button position: button position + (0 @ 25)].
- 		(button printString includesSubString: 'stamp:') ifTrue: [
- 			button position: button position + (0 @ 25)]].
- 	(bb := self submorphNamed: #prevStamp:) position: bb position + (0 @ 25).
- 	(bb := self submorphNamed: #nextStamp:) position: bb position + (0 @ 25).
- 
- 	bb := self submorphNamed: #keep:.
- 	newImage := bb pressedImage copy: (0 @ 4 corner: (bb pressedImage boundingBox extent)).
- 	bb onImage: newImage.  bb pressedImage: newImage.  bb extent: newImage extent.
- 	bb position: bb position + (4 @ 1).
- 
- 	pp := (bb := self submorphNamed: #toss:) pressedImage.
- 	newImage := pp copy: (0 @ 4 corner: (bb pressedImage extent - (3 @ 0))).
- 	bb onImage: newImage.  bb pressedImage: newImage.  
- 	bb extent: newImage extent.
- 	bb position: bb position + (3 @ 1).
- 
- 	pp := (bb := self submorphNamed: #undo:) pressedImage.
- 	newImage := pp copy: (0 @ 0 corner: (bb pressedImage extent - (3 @ 5))).
- 	bb onImage: newImage.  bb pressedImage: newImage.  
- 	bb extent: newImage extent.
- 	bb position: bb position + (3 @ -1).
- 
- 	pp := (bb := self submorphNamed: #clear:) pressedImage.
- 	newImage := pp copy: (0 @ 0 corner: (bb pressedImage extent - (0 @ 5))).
- 	bb onImage: newImage.  bb pressedImage: newImage.  
- 	bb extent: newImage extent.
- 	bb position: bb position + (3 @ -1).
- 
- 	pic24Bit := GIFReadWriter formFromServerFile: 'updates/137pencil.bmp'.
- 	picNewBit := Form extent: pic24Bit extent depth: 16.
- 	pic24Bit displayOn: picNewBit.
- 	newImage := picNewBit as8BitColorForm.
- 	newImage transparentColor: (Color r: 0 g: 0 b: 0).
- 	(bb := self submorphNamed: #erase:) pressedImage: newImage; onImage: newImage;
- 		extent: newImage extent.
- 
- 	bb position: bb position + (-11 @ -1).
- !

Item was removed:
- ----- Method: PaintBoxMorph>>loadColorChooser (in category 'initialization') -----
- loadColorChooser
- 	"Load Forms for ColorMemoryMorph."
- 
- 	| doc closedForm openForm |
- 	(Smalltalk hasClassNamed: #UpdateStreamDownloader) ifFalse: [ Installer new merge: #updateStream ].
- 	doc := (Smalltalk classNamed: #UpdateStreamDownloader) default objectStrmFromUpdates: 'colorPalClosed.obj'.
- 	closedForm := doc fileInObjectAndCode mapColor: Color transparent to: Color black.
- 	doc := (Smalltalk classNamed: #UpdateStreamDownloader) default objectStrmFromUpdates: 'colorPalOpen.obj'.
- 	openForm := doc fileInObjectAndCode mapColor: Color transparent to: Color black.
- 
- 	colorMemoryThin image: closedForm.
- 	colorMemoryThin position: self position + (0 at 140).
- 
- 	colorMemory delete.	"delete old one"
- 	colorMemory := PaintBoxColorPicker new image: openForm.
- !

Item was removed:
- ----- Method: PaintBoxMorph>>loadCursors (in category 'initialization') -----
- loadCursors
- 	"Display the form containing the cursors.  Transparent is (Color r: 1.0 g: 0 b: 1.0).  Grab the forms one at a time, and they are stored away.
- 	self loadCursors.	"
- 
- 	| transp map |
- 	transp := Color r: 1.0 g: 0 b: 1.0.
- 	map := Color indexedColors copy.	"just in case"
- 	1 to: 256 do: [:ind | (map at: ind) = transp ifTrue: 
- 				[map at: ind put: Color transparent]].
- 
- 	#(erase: eyedropper: fill: paint: rect: ellipse: polygon: line: star: ) do: [:sel | | button cursor |
- 		self inform: 'Rectangle for ',sel.
- 		cursor := ColorForm fromUser.
- 		cursor colors: map.	"share it"
- 		button := self submorphNamed: sel.
- 		button arguments at: 3 put: cursor].
- !

Item was removed:
- ----- Method: PaintBoxMorph>>loadOnImage: (in category 'initialization') -----
- loadOnImage: fileName
- 	"Read in and convert the image for the paintBox with the buttons
- on.  A .bmp 24-bit image.  For each button, cut that chunk out and save it."
- 	"	self loadOnImage: 'NoSh:=on.bmp'.
- 		AllOnImage := nil.	'save space'.	"
- 
- 	| pic16Bit blt aa type |
- 	type := 'gif'.  "   gif or bmp  "
- type = 'gif' ifTrue: [
- 	pic16Bit "really 8" := GIFReadWriter formFromFileNamed: fileName.
- 	pic16Bit display.
- 	aa := AllOnImage := Form extent: OriginalBounds extent depth: 8.
- 	blt := BitBlt toForm: aa.
- 	blt sourceForm: pic16Bit; combinationRule: Form over;
- 		sourceRect: OriginalBounds; destOrigin: 0 at 0; copyBits.
- 	].
- type = 'bmp' ifTrue: [
- 	pic16Bit := (Form fromBMPFileNamed: fileName) asFormOfDepth: 16.
- 	pic16Bit display.
- 	aa := AllOnImage := Form extent: OriginalBounds extent depth: 16.
- 	blt := BitBlt toForm: aa.
- 	blt sourceForm: pic16Bit; combinationRule: Form over;
- 		sourceRect: OriginalBounds; destOrigin: 0 at 0; copyBits.
- 	aa mapColor: Color transparent to: Color black.
- 	].
- 	"Collect all the images for the buttons in the on state"
- 	self allMorphsDo: [:button | | on |
- 		(button isKindOf: ThreePhaseButtonMorph) ifTrue: [
- 			type = 'gif' ifTrue: [on := ColorForm extent: button extent depth: 8.
- 					 on colors: pic16Bit colors]
- 				ifFalse: [on := Form extent: button extent depth: 16].
- 			on copy: (0 at 0 extent: button extent)
- 				from: (button topLeft - self topLeft) in: aa rule: Form over.
- 			button onImage: on]].
- 	self invalidRect: bounds.
- 
- 	!

Item was removed:
- ----- Method: PaintBoxMorph>>loadPressedImage: (in category 'initialization') -----
- loadPressedImage: fileName
- 	"Read in and convert the image for the paintBox with the buttons
- on.  A .bmp 24-bit image.  For each button, cut that chunk out and save it."
- 	"	self loadPressedImage: 'NoSh:=on.bmp'.
- 		AllPressedImage := nil.	'save space'.	"
- 
- 	| pic16Bit blt aa type |
- 	type := 'gif'.  "   gif or bmp  "
- type = 'gif' ifTrue: [
- 	pic16Bit "really 8" := GIFReadWriter formFromFileNamed: fileName.
- 	pic16Bit display.
- 	aa := AllPressedImage := Form extent: OriginalBounds extent depth: 8.
- 	blt := BitBlt toForm: aa.
- 	blt sourceForm: pic16Bit; combinationRule: Form over;
- 		sourceRect: OriginalBounds; destOrigin: 0 at 0; copyBits.
- 	].
- type = 'bmp' ifTrue: [
- 	pic16Bit := (Form fromBMPFileNamed: fileName) asFormOfDepth: 16.
- 	pic16Bit display.
- 	aa := AllPressedImage := Form extent: OriginalBounds extent depth: 16.
- 	blt := BitBlt toForm: aa.
- 	blt sourceForm: pic16Bit; combinationRule: Form over;
- 		sourceRect: OriginalBounds; destOrigin: 0 at 0; copyBits.
- 	aa mapColor: Color transparent to: Color black.
- 	].
- 	"Collect all the images for the buttons in the on state"
- 	self allMorphsDo: [:button | | on |
- 		(button isKindOf: ThreePhaseButtonMorph) ifTrue: [
- 			type = 'gif' ifTrue: [on := ColorForm extent: button extent depth: 8.
- 					 on colors: pic16Bit colors]
- 				ifFalse: [on := Form extent: button extent depth: 16].
- 			on copy: (0 at 0 extent: button extent)
- 				from: (button topLeft - self topLeft) in: aa rule: Form over.
- 			button pressedImage: on]].
- 	self invalidRect: bounds.
- 
- 	!

Item was removed:
- ----- Method: PaintBoxMorph>>loadoffImage: (in category 'initialization') -----
- loadoffImage: fileName
- 	"Read in and convert the background image for the paintBox.  All
- buttons off.  A .bmp 24-bit image."
- 	"	Prototype loadoffImage: 'roundedPalette3.bmp'	"
- 
- 	| pic16Bit blt type getBounds |
- 	type := 'bmp'.  " gif or bmp  "
- 	getBounds := 'fromPic'.	"fromUser = draw out rect of paintbox on image"
- 		"fromOB = just read in new bits, keep same size and place as last time."
- 		"fromPic = picture is just the PaintBox, use its bounds"
- type = 'gif' ifTrue: [
- 	pic16Bit "really 8" := GIFReadWriter formFromFileNamed: fileName.
- 	getBounds = 'fromUser' ifTrue: ["Just first time, collect the bounds"
- 			pic16Bit display.
- 			OriginalBounds := Rectangle fromUser].
- 	getBounds = 'fromPic' ifTrue: [OriginalBounds := pic16Bit boundingBox].
- 	].
- 		"Use OriginalBounds as it was last time"
- type = 'bmp' ifTrue: [
- 	pic16Bit := (Form fromBMPFileNamed: fileName) asFormOfDepth: 16.
- 	getBounds = 'fromUser' ifTrue: ["Just first time, collect the bounds"
- 			pic16Bit display.
- 			OriginalBounds := Rectangle fromUser].
- 		"Use OriginalBounds as it was last time"
- 	(getBounds = 'fromPic') ifTrue: [OriginalBounds := pic16Bit boundingBox].
- 	AllOffImage := Form extent: OriginalBounds extent depth: 16.
- 	].
- 
- type = 'gif' ifTrue: [
- 	AllOffImage := ColorForm extent: OriginalBounds extent depth: 8.
- 	AllOffImage colors: pic16Bit colors].
- 
- 	blt := BitBlt toForm: AllOffImage.
- 	blt sourceForm: pic16Bit; combinationRule: Form over;
- 		sourceRect: OriginalBounds; destOrigin: 0 at 0; copyBits.
- 
- type = 'bmp' ifTrue: [AllOffImage mapColor: Color transparent to: Color black].
- 	self image: AllOffImage.
- 	self invalidRect: bounds.
- 
- 	!

Item was removed:
- ----- Method: PaintBoxMorph>>makeCursorFrom: (in category 'initialization') -----
- makeCursorFrom: aForm
- 	| cursor map index colorToReplace |
- 	cursor :=  aForm as8BitColorForm.
- 	map := Color indexedColors.	
- 	index := cursor pixelValueAt: 2 at 2.
- 	colorToReplace := map at: index.
- 	cursor colors: (map collect: [:color | (color diff: colorToReplace) < 0.25
- 		ifTrue: [Color transparent]
- 		ifFalse: [color]]).
- 	^cursor
- 
- 
- !

Item was removed:
- ----- Method: PaintBoxMorph>>moveButtons (in category 'initialization') -----
- moveButtons
- 	"Move buttons one at a time and let the user place them over the background.  Later can move them again by turning on AuthorModeOwner in ThreePhaseButtonMorph.
- 	self createButtons.	"
- 
- 	#(erase: eyedropper: fill: paint: rect: ellipse: polygon: line: star: "pickup: pickup: pickup: pickup:" "stamp: stamp: stamp: stamp:" undo: keep: toss: prevStamp: nextStamp:
- 	brush1: brush2: brush3: brush4: brush5: brush6: ) do: [:sel |
- 			| rect button |
- 			self inform: 'Rectangle for ',sel.
- 			rect := Rectangle fromUser.
- 			button := self submorphNamed: sel.
- 			button bounds: rect.	"image is nil"].
- 	"stamp:  Stamps are held in a ScrollingToolHolder.  Pickups and stamps and brushes are id-ed by the button == with item from a list."
- !



More information about the Squeak-dev mailing list