Can anyone point out how to detect clicks on an icon setup in the
taskbar? I know there was a package (Taskbar.zip I think) mentioned earlier but the site is no longer responding. |
Jerome,
> Can anyone point out how to detect clicks on an icon setup in the > taskbar? I know there was a package (Taskbar.zip I think) mentioned > earlier but the site is no longer responding. Udo Schneider implemented and posted a package for this which was reposted by Don Rylander a few months ago. In that spirit I've reposted a D5.1.4 version below. Whether or not this is the latest version (Udo?) is not known. Cut between the lines and save to "US Notify Shell.pac" ==~===~===~=== | package | package := Package name: 'us notify shell'. package paxVersion: 0; basicComment: 'US NotifyShell Udo Schneider <[hidden email]> 2002 This package contains additions to the standard Dolphin Smalltalk Shell class which allows you to use the traybar. Execute the following code to see an example implementation of the NotifyShell which responds to various events. NotifyShellExample show'. package basicPackageVersion: '0.005'. package classNames add: #NotifyShell; add: #NotifyShellExample; add: #ShellNotifyView; yourself. package binaryGlobalNames: (Set new yourself). package globalAliases: (Set new yourself). package allResourceNames: (Set new add: #NotifyShell -> 'Default view'; yourself). package setPrerequisites: (IdentitySet new add: 'Object Arts\Dolphin\IDE\Base\Development System'; add: 'Object Arts\Dolphin\Base\Dolphin'; add: 'Object Arts\Dolphin\MVP\Base\Dolphin MVP Base'; yourself). package! "Class Definitions"! Shell subclass: #NotifyShell instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' classInstanceVariableNames: ''! NotifyShell subclass: #NotifyShellExample instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' classInstanceVariableNames: ''! ShellView subclass: #ShellNotifyView instanceVariableNames: 'notifyStruct notifyMessage notifyIcon notifyTipMessage' classVariableNames: 'NotifyMessageMap' poolDictionaries: '' classInstanceVariableNames: ''! "Global Aliases"! "Loose Methods"! "End of package definition"! "Source Globals"! "Classes"! NotifyShell guid: (GUID fromString: '{76A412BA-947A-40AA-83BA-9BD384979C29}')! NotifyShell comment: ''! !NotifyShell categoriesForClass!Unclassified! ! NotifyShellExample guid: (GUID fromString: '{8E0528A6-54F0-4368-8D83-83CC78AF605D}')! NotifyShellExample comment: ''! !NotifyShellExample categoriesForClass!Unclassified! ! !NotifyShellExample methodsFor! createSchematicWiring "Create the trigger wiring for the receiver" super createSchematicWiring. self when: #onTraybarLeftButtonPressed send: #traybarEvent: to: self with: 'Left Button Pressed'. self when: #onTraybarRightButtonPressed send: #traybarEvent: to: self with: 'Right Button Pressed'. self when: #onTraybarLeftButtonDoubleClicked send: #traybarEvent: to: self with: 'Left Button Double Clicked'. self when: #onTraybarRightButtonDoucleClicked send: #traybarEvent: to: self with: 'Right Button Double Clicked'.! traybarEvent: aString MessageBox notify: aString! ! !NotifyShellExample categoriesFor: #createSchematicWiring!public! ! !NotifyShellExample categoriesFor: #traybarEvent:!public! ! ShellNotifyView guid: (GUID fromString: '{6C3394D3-CC74-471F-86D8-6F5A7D25E621}')! ShellNotifyView comment: ''! !ShellNotifyView categoriesForClass!Unclassified! ! !ShellNotifyView methodsFor! addNotifyIcon self initializeNotifyStruct. notifyStruct hWnd: self asParameter. ^ShellLibrary default shell_NotifyIcon: NIM_ADD pnid: notifyStruct ! basicInitializeNotifyStruct notifyStruct uID: 1; icon: notifyIcon; message: notifyMessage; tipText: notifyTipMessage displayString. ! deleteNotifyIcon ^ShellLibrary default shell_NotifyIcon: NIM_DELETE pnid: notifyStruct.! dispatchRegistered: registeredId wParam: wParam lParam: lParam ^registeredId = notifyMessage ifTrue: [ (NotifyMessageMap includesKey: lParam) ifTrue: [ self perform: (NotifyMessageMap at: lParam) ] ]! initializeNotifyStruct notifyStruct := NOTIFYICONDATA new. notifyMessage := self class registerMessage: 'Dolphin Shell Notification'. self basicInitializeNotifyStruct.! modifyNotifyIcon self basicInitializeNotifyStruct. ^ShellLibrary default shell_NotifyIcon: NIM_MODIFY pnid: notifyStruct.! notifyIcon "Private - Answer the value of the receiver's ''notifyIcon'' instance variable." notifyIcon isNil ifTrue: [notifyIcon := self icon]. ^notifyIcon! notifyIcon: anObject "Private - Set the value of the receiver's ''notifyIcon'' instance variable to the argument, anObject." notifyIcon := anObject! notifyMessage "Private - Answer the value of the receiver's ''notifyMessage'' instance variable." ^notifyMessage! notifyMessage: anObject "Private - Set the value of the receiver's ''notifyMessage'' instance variable to the argument, anObject." notifyMessage := anObject! notifyStruct "Private - Answer the value of the receiver's ''notifyStruct'' instance variable." ^notifyStruct! notifyStruct: anObject "Private - Set the value of the receiver's ''notifyStruct'' instance variable to the argument, anObject." notifyStruct := anObject! notifyTipMessage "Private - Answer the value of the receiver's ''notifyTipMessage'' instance variable." notifyTipMessage isNil ifTrue: [notifyTipMessage := 'Notify Message']. ^notifyTipMessage! notifyTipMessage: anObject "Private - Set the value of the receiver's ''notifyTipMessage'' instance variable to the argument, anObject." notifyTipMessage := anObject! onCreated: anEvent self addNotifyIcon. ^super onCreated: anEvent ! onDestroyed self deleteNotifyIcon. ^super onDestroyed ! onTraybarLeftButtonDoubleClicked self presenter trigger: #onTraybarLeftButtonDoubleClicked! onTraybarLeftButtonPressed self presenter trigger: #onTraybarLeftButtonPressed! onTraybarRightButtonDoubleClicked self presenter trigger: #onTraybarRightButtonDoubleClicked! onTraybarRightButtonPressed self presenter trigger: #onTraybarRightButtonPressed! onViewMinimized: aSizeEvent "Private - ShellNotifyView handler for window minimize. Hide the window, then hand off to super." self hide. ^super onViewMinimized: aSizeEvent! ! !ShellNotifyView categoriesFor: #addNotifyIcon!private! ! !ShellNotifyView categoriesFor: #basicInitializeNotifyStruct!initializing!private! ! !ShellNotifyView categoriesFor: #deleteNotifyIcon!private! ! !ShellNotifyView categoriesFor: #dispatchRegistered:wParam:lParam:!private! ! !ShellNotifyView categoriesFor: #initializeNotifyStruct!initializing!private! ! !ShellNotifyView categoriesFor: #modifyNotifyIcon!private! ! !ShellNotifyView categoriesFor: #notifyIcon!accessing!private! ! !ShellNotifyView categoriesFor: #notifyIcon:!accessing!private! ! !ShellNotifyView categoriesFor: #notifyMessage!accessing!private! ! !ShellNotifyView categoriesFor: #notifyMessage:!accessing!private! ! !ShellNotifyView categoriesFor: #notifyStruct!accessing!private! ! !ShellNotifyView categoriesFor: #notifyStruct:!accessing!private! ! !ShellNotifyView categoriesFor: #notifyTipMessage!accessing!private! ! !ShellNotifyView categoriesFor: #notifyTipMessage:!accessing!private! ! !ShellNotifyView categoriesFor: #onCreated:!event handling!private! ! !ShellNotifyView categoriesFor: #onDestroyed!event handling!private! ! !ShellNotifyView categoriesFor: #onTraybarLeftButtonDoubleClicked!event handling!private! ! !ShellNotifyView categoriesFor: #onTraybarLeftButtonPressed!event handling!private! ! !ShellNotifyView categoriesFor: #onTraybarRightButtonDoubleClicked!event handling!private! ! !ShellNotifyView categoriesFor: #onTraybarRightButtonPressed!event handling!private! ! !ShellNotifyView categoriesFor: #onViewMinimized:!event handling!private! ! !ShellNotifyView class methodsFor! initialize NotifyMessageMap := Dictionary new. NotifyMessageMap at: WM_LBUTTONDOWN put: #onTraybarLeftButtonPressed; at: WM_RBUTTONDOWN put: #onTraybarRightButtonPressed; at: WM_LBUTTONDBLCLK put: #onTraybarLeftButtonDoubleClicked; at: WM_RBUTTONDBLCLK put: #onTraybarRightButtonDoubleClicked.! publishedAspectsOfInstances ^super publishedAspectsOfInstances add: (Aspect icon: #notifyIcon); add: (Aspect string: #notifyTipMessage); yourself ! publishedEventsOfInstances "Answer a Set of Symbols that describe the published events triggered by instances of the receiver." ^super publishedEventsOfInstances add: #onTraybarLeftButtonPressed; add: #onTraybarRightButtonPressed; add: #onTraybarLeftButtonDoubleClicked; add: #onTraybarRightButtonDoubleClicked; yourself.! ! !ShellNotifyView class categoriesFor: #initialize!public! ! !ShellNotifyView class categoriesFor: #publishedAspectsOfInstances!public! ! !ShellNotifyView class categoriesFor: #publishedEventsOfInstances!public! ! "Binary Globals"! "Resources"! (ResourceIdentifier class: NotifyShell name: 'Default view') assign: (Object fromBinaryStoreBytes: (ByteArray fromBase64String: 'IVNUQiAxIEYCDAABAAAAVmlld1Jlc291cmNlAAAAAA4BJABTVEJSZXNvdXJjZVNUQkJ5dGVBcnJ h eUFjY2Vzc29yUHJveHkAAAAAcgAAACMEAAAhU1RCIDAgTggMAAoAAABTVEJWaWV3UHJveHkAAAAA TgINAAEAAABTVEJDbGFzc1Byb3h5AAAAADYABgBTdHJpbmcSAAAAVVMgU2hlbGxOb3RpZnlWaWV3 kgAAAA8AAABTaGVsbE5vdGlmeVZpZXcmAAUAQXJyYXkfAAAAAAAAAAAAAADCAAAAAgAAAAEAngEB AAIAYAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4CGgBTVEJJZGVudGl0 eURpY3Rpb25hcnlQcm94eQAAAAB6AAAAAAAAAJIAAAAHAAAARG9scGhpbpIAAAASAAAASWRlbnRp dHlEaWN0aW9uYXJ5wgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAQAAAAAAAAAAAAAABgEOAE5PVElGWUlDT05EQVRBAAAAADYACQBCeXRlQXJyYXlYAAAAWAAA AMQEEwABAAAABwAAAHnBAADNAxUATm90aWZ5IE1lc3NhZ2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPOCAQBGBQQAAwAAAEljb24AAAAAAAAAABAAAAAO AhEAU1RCU2luZ2xldG9uUHJveHkAAAAAegAAAAAAAAAgAQAAkgAAABgAAABJbWFnZVJlbGF0aXZl RmlsZUxvY2F0b3IOAQ4AU1RCU3ltYm9sUHJveHkAAAAAkgAAAAcAAABjdXJyZW50kgAAAA0AAABT aGVsbFZpZXcuaWNvDgIfAFNUQkV4dGVybmFsUmVzb3VyY2VMaWJyYXJ5UHJveHkAAAAAkgAAABAA AABkb2xwaGluZHIwMDQuZGxsAAAAAJIAAAAOAAAATm90aWZ5IE1lc3NhZ2UGAQ8ATWVzc2FnZVNl cXVlbmNlAAAAAA4CEgBTVEJDb2xsZWN0aW9uUHJveHkAAAAAegAAAAAAAAAgAQAAkgAAABEAAABP cmRlcmVkQ29sbGVjdGlvbsIAAAACAAAABgMLAE1lc3NhZ2VTZW5kAAAAAPoBAAAAAAAAkgAAABAA AABjcmVhdGVBdDpleHRlbnQ6wgAAAAIAAAAGAgUAUG9pbnQAAAAAAQAAAAEAAAAyAwAAAAAAAFUF AAABBAAAYAAAAOICAAAAAAAA+gEAAAAAAACSAAAACAAAAG1lbnVCYXI6wgAAAAEAAAAAAAAAYAAA AAYBDwBXSU5ET1dQTEFDRU1FTlQAAAAAcgEAACwAAAAsAAAAAAAAAAAAAAD///////////////// ////AAAAAAAAAACqAgAAAAIAAJoCAAAAAAAAsAIAAEABAAAyAwAAAAAAAMEAAADBAAAAAAAAABUA AABGBQQAAwAAAEljb24AAAAAAAAAABAAAAAOAhEAU1RCU2luZ2xldG9uUHJveHkAAAAAmgAAAAAA AABSAAAABwAAAERvbHBoaW5SAAAAGAAAAEltYWdlUmVsYXRpdmVGaWxlTG9jYXRvcroAAAAAAAAA UgAAAAcAAABjdXJyZW50UgAAAAkAAABTaGVsbC5pY28OAh8AU1RCRXh0ZXJuYWxSZXNvdXJjZUxp YnJhcnlQcm94eQAAAABSAAAAEAAAAGRvbHBoaW5kcjAwNS5kbGwAAAAA'))! ==~===~===~=== -- Ian Use the Reply-To address to contact me. Mail sent to the From address is ignored. |
In reply to this post by Jerome Chan
Follow up to my original question. I made a mistake. I had assumed
that setting the value of a NOTIFYICONDATA object would automatically set the corresponding uFlag. I was using the win32 access methods and not the correct accessor. NOTIFYICONDATA uCallbackMessage: MY_CUSTOM_MESSAGE should have used NOTIFYICONDATA message: MY_CUSTOM_MESSAGE |
In reply to this post by Ian Bartholomew-19
Ian Bartholomew wrote:
> Udo Schneider implemented and posted a package for this which was > reposted by Don Rylander a few months ago. In that spirit I've > reposted a D5.1.4 version below. Ian, thanks for posting this. I nearls forgot this package because I am not using it anymore...... > Whether or not this is the latest version (Udo?) is not known. The latest version I am aware off is the one written by Don Rylander. I included his changes into my package. So your package should be the most actual one. However there is a different approach to this which was pointed out by Marc Nijdam. The whole background is in the following thread. http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&threadm=a8fddo%24rvdi3%241%40ID-57705.news.dfncis.de&rnum=1&prev=/groups%3Fhl%3Den%26lr%3D%26ie%3DUTF-8%26oe%3DUTF-8%26q%3DUS%2BNotifyShell%2B%2Bgroup%253Acomp.lang.smalltalk.dolphin%26btnG%3DSearch%26meta%3Dgroup%253Dcomp.lang.smalltalk.dolphin CU, Udo |
In reply to this post by Ian Bartholomew-19
Hi,
When installing the "US Notify Shell.pac", I found that Base64Codec class is missing in my image, which is referenced in ByteArray class>>fromBase64String: method. Where could I find it? Thanks. Francis Kuo On Wed, 7 Apr 2004 12:51:33 +0100, "Ian Bartholomew" <[hidden email]> wrote: >Udo Schneider implemented and posted a package for this which was reposted >by Don Rylander a few months ago. In that spirit I've reposted a D5.1.4 >version below. > >Whether or not this is the latest version (Udo?) is not known. > >Cut between the lines and save to "US Notify Shell.pac" > >==~===~===~=== >| package | > >package := Package name: 'us notify shell'. > >package paxVersion: 0; > >basicComment: 'US NotifyShell > >Udo Schneider <[hidden email]> 2002 > >This package contains additions to the standard Dolphin Smalltalk Shell > >class which allows you to use the traybar. > >Execute the following code to see an example implementation of the > >NotifyShell which responds to various events. > >NotifyShellExample show'. > >package basicPackageVersion: '0.005'. > > > >package classNames > >add: #NotifyShell; > >add: #NotifyShellExample; > >add: #ShellNotifyView; > >yourself. > >package binaryGlobalNames: (Set new > >yourself). > >package globalAliases: (Set new > >yourself). > >package allResourceNames: (Set new > >add: #NotifyShell -> 'Default view'; > >yourself). > >package setPrerequisites: (IdentitySet new > >add: 'Object Arts\Dolphin\IDE\Base\Development System'; > >add: 'Object Arts\Dolphin\Base\Dolphin'; > >add: 'Object Arts\Dolphin\MVP\Base\Dolphin MVP Base'; > >yourself). > >package! > >"Class Definitions"! > >Shell subclass: #NotifyShell > >instanceVariableNames: '' > >classVariableNames: '' > >poolDictionaries: '' > >classInstanceVariableNames: ''! > >NotifyShell subclass: #NotifyShellExample > >instanceVariableNames: '' > >classVariableNames: '' > >poolDictionaries: '' > >classInstanceVariableNames: ''! > >ShellView subclass: #ShellNotifyView > >instanceVariableNames: 'notifyStruct notifyMessage notifyIcon >notifyTipMessage' > >classVariableNames: 'NotifyMessageMap' > >poolDictionaries: '' > >classInstanceVariableNames: ''! > >"Global Aliases"! > > > >"Loose Methods"! > >"End of package definition"! > >"Source Globals"! > >"Classes"! > >NotifyShell guid: (GUID fromString: >'{76A412BA-947A-40AA-83BA-9BD384979C29}')! > >NotifyShell comment: ''! > >!NotifyShell categoriesForClass!Unclassified! ! > >NotifyShellExample guid: (GUID fromString: >'{8E0528A6-54F0-4368-8D83-83CC78AF605D}')! > >NotifyShellExample comment: ''! > >!NotifyShellExample categoriesForClass!Unclassified! ! > >!NotifyShellExample methodsFor! > >createSchematicWiring > >"Create the trigger wiring for the receiver" > >super createSchematicWiring. > >self when: #onTraybarLeftButtonPressed send: #traybarEvent: to: self with: > >'Left Button Pressed'. > >self when: #onTraybarRightButtonPressed send: #traybarEvent: to: self with: > >'Right Button Pressed'. > >self when: #onTraybarLeftButtonDoubleClicked send: #traybarEvent: to: self > >with: 'Left Button Double Clicked'. > >self when: #onTraybarRightButtonDoucleClicked send: #traybarEvent: to: self > >with: 'Right Button Double Clicked'.! > >traybarEvent: aString > >MessageBox notify: aString! ! > >!NotifyShellExample categoriesFor: #createSchematicWiring!public! ! > >!NotifyShellExample categoriesFor: #traybarEvent:!public! ! > >ShellNotifyView guid: (GUID fromString: >'{6C3394D3-CC74-471F-86D8-6F5A7D25E621}')! > >ShellNotifyView comment: ''! > >!ShellNotifyView categoriesForClass!Unclassified! ! > >!ShellNotifyView methodsFor! > >addNotifyIcon > >self initializeNotifyStruct. > >notifyStruct hWnd: self asParameter. > >^ShellLibrary default shell_NotifyIcon: NIM_ADD pnid: notifyStruct > >! > >basicInitializeNotifyStruct > >notifyStruct > >uID: 1; > >icon: notifyIcon; > >message: notifyMessage; > >tipText: notifyTipMessage displayString. > >! > >deleteNotifyIcon > >^ShellLibrary default shell_NotifyIcon: NIM_DELETE pnid: notifyStruct.! > >dispatchRegistered: registeredId wParam: wParam lParam: lParam > >^registeredId = notifyMessage > >ifTrue: [ > >(NotifyMessageMap includesKey: lParam) ifTrue: [ > >self perform: (NotifyMessageMap at: lParam) > >] > >]! > >initializeNotifyStruct > >notifyStruct := NOTIFYICONDATA new. > >notifyMessage := self class registerMessage: 'Dolphin Shell Notification'. > >self basicInitializeNotifyStruct.! > >modifyNotifyIcon > >self basicInitializeNotifyStruct. > >^ShellLibrary default shell_NotifyIcon: NIM_MODIFY pnid: notifyStruct.! > >notifyIcon > >"Private - Answer the value of the receiver's ''notifyIcon'' instance > >variable." > >notifyIcon isNil ifTrue: [notifyIcon := self icon]. > >^notifyIcon! > >notifyIcon: anObject > >"Private - Set the value of the receiver's ''notifyIcon'' instance variable > >to the argument, anObject." > >notifyIcon := anObject! > >notifyMessage > >"Private - Answer the value of the receiver's ''notifyMessage'' instance > >variable." > >^notifyMessage! > >notifyMessage: anObject > >"Private - Set the value of the receiver's ''notifyMessage'' instance > >variable to the argument, anObject." > >notifyMessage := anObject! > >notifyStruct > >"Private - Answer the value of the receiver's ''notifyStruct'' instance > >variable." > >^notifyStruct! > >notifyStruct: anObject > >"Private - Set the value of the receiver's ''notifyStruct'' instance > >variable to the argument, anObject." > >notifyStruct := anObject! > >notifyTipMessage > >"Private - Answer the value of the receiver's ''notifyTipMessage'' instance > >variable." > >notifyTipMessage isNil ifTrue: [notifyTipMessage := 'Notify Message']. > >^notifyTipMessage! > >notifyTipMessage: anObject > >"Private - Set the value of the receiver's ''notifyTipMessage'' instance > >variable to the argument, anObject." > >notifyTipMessage := anObject! > >onCreated: anEvent > >self addNotifyIcon. > >^super onCreated: anEvent > >! > >onDestroyed > >self deleteNotifyIcon. > >^super onDestroyed > >! > >onTraybarLeftButtonDoubleClicked > >self presenter trigger: #onTraybarLeftButtonDoubleClicked! > >onTraybarLeftButtonPressed > >self presenter trigger: #onTraybarLeftButtonPressed! > >onTraybarRightButtonDoubleClicked > >self presenter trigger: #onTraybarRightButtonDoubleClicked! > >onTraybarRightButtonPressed > >self presenter trigger: #onTraybarRightButtonPressed! > >onViewMinimized: aSizeEvent > >"Private - ShellNotifyView handler for window minimize. Hide the window, > >then > >hand off to super." > >self hide. > >^super onViewMinimized: aSizeEvent! ! > >!ShellNotifyView categoriesFor: #addNotifyIcon!private! ! > >!ShellNotifyView categoriesFor: >#basicInitializeNotifyStruct!initializing!private! ! > >!ShellNotifyView categoriesFor: #deleteNotifyIcon!private! ! > >!ShellNotifyView categoriesFor: #dispatchRegistered:wParam:lParam:!private! >! > >!ShellNotifyView categoriesFor: >#initializeNotifyStruct!initializing!private! ! > >!ShellNotifyView categoriesFor: #modifyNotifyIcon!private! ! > >!ShellNotifyView categoriesFor: #notifyIcon!accessing!private! ! > >!ShellNotifyView categoriesFor: #notifyIcon:!accessing!private! ! > >!ShellNotifyView categoriesFor: #notifyMessage!accessing!private! ! > >!ShellNotifyView categoriesFor: #notifyMessage:!accessing!private! ! > >!ShellNotifyView categoriesFor: #notifyStruct!accessing!private! ! > >!ShellNotifyView categoriesFor: #notifyStruct:!accessing!private! ! > >!ShellNotifyView categoriesFor: #notifyTipMessage!accessing!private! ! > >!ShellNotifyView categoriesFor: #notifyTipMessage:!accessing!private! ! > >!ShellNotifyView categoriesFor: #onCreated:!event handling!private! ! > >!ShellNotifyView categoriesFor: #onDestroyed!event handling!private! ! > >!ShellNotifyView categoriesFor: #onTraybarLeftButtonDoubleClicked!event > >handling!private! ! > >!ShellNotifyView categoriesFor: #onTraybarLeftButtonPressed!event > >handling!private! ! > >!ShellNotifyView categoriesFor: #onTraybarRightButtonDoubleClicked!event > >handling!private! ! > >!ShellNotifyView categoriesFor: #onTraybarRightButtonPressed!event > >handling!private! ! > >!ShellNotifyView categoriesFor: #onViewMinimized:!event handling!private! ! > >!ShellNotifyView class methodsFor! > >initialize > >NotifyMessageMap := Dictionary new. > >NotifyMessageMap at: WM_LBUTTONDOWN put: #onTraybarLeftButtonPressed; > >at: WM_RBUTTONDOWN put: #onTraybarRightButtonPressed; > >at: WM_LBUTTONDBLCLK put: #onTraybarLeftButtonDoubleClicked; > >at: WM_RBUTTONDBLCLK put: #onTraybarRightButtonDoubleClicked.! > >publishedAspectsOfInstances > >^super publishedAspectsOfInstances > >add: (Aspect icon: #notifyIcon); > >add: (Aspect string: #notifyTipMessage); > >yourself > >! > >publishedEventsOfInstances > >"Answer a Set of Symbols that describe the published events triggered > >by instances of the receiver." > >^super publishedEventsOfInstances > >add: #onTraybarLeftButtonPressed; > >add: #onTraybarRightButtonPressed; > >add: #onTraybarLeftButtonDoubleClicked; > >add: #onTraybarRightButtonDoubleClicked; > >yourself.! ! > >!ShellNotifyView class categoriesFor: #initialize!public! ! > >!ShellNotifyView class categoriesFor: #publishedAspectsOfInstances!public! ! > >!ShellNotifyView class categoriesFor: #publishedEventsOfInstances!public! ! > >"Binary Globals"! > >"Resources"! > >(ResourceIdentifier class: NotifyShell name: 'Default view') assign: (Object >fromBinaryStoreBytes: > >(ByteArray fromBase64String: >'IVNUQiAxIEYCDAABAAAAVmlld1Jlc291cmNlAAAAAA4BJABTVEJSZXNvdXJjZVNUQkJ5dGVBcnJ >h > >eUFjY2Vzc29yUHJveHkAAAAAcgAAACMEAAAhU1RCIDAgTggMAAoAAABTVEJWaWV3UHJveHkAAAAA > >TgINAAEAAABTVEJDbGFzc1Byb3h5AAAAADYABgBTdHJpbmcSAAAAVVMgU2hlbGxOb3RpZnlWaWV3 > >kgAAAA8AAABTaGVsbE5vdGlmeVZpZXcmAAUAQXJyYXkfAAAAAAAAAAAAAADCAAAAAgAAAAEAngEB > >AAIAYAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4CGgBTVEJJZGVudGl0 > >eURpY3Rpb25hcnlQcm94eQAAAAB6AAAAAAAAAJIAAAAHAAAARG9scGhpbpIAAAASAAAASWRlbnRp > >dHlEaWN0aW9uYXJ5wgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA > >AAAAAQAAAAAAAAAAAAAABgEOAE5PVElGWUlDT05EQVRBAAAAADYACQBCeXRlQXJyYXlYAAAAWAAA > >AMQEEwABAAAABwAAAHnBAADNAxUATm90aWZ5IE1lc3NhZ2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAA > >AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPOCAQBGBQQAAwAAAEljb24AAAAAAAAAABAAAAAO > >AhEAU1RCU2luZ2xldG9uUHJveHkAAAAAegAAAAAAAAAgAQAAkgAAABgAAABJbWFnZVJlbGF0aXZl > >RmlsZUxvY2F0b3IOAQ4AU1RCU3ltYm9sUHJveHkAAAAAkgAAAAcAAABjdXJyZW50kgAAAA0AAABT > >aGVsbFZpZXcuaWNvDgIfAFNUQkV4dGVybmFsUmVzb3VyY2VMaWJyYXJ5UHJveHkAAAAAkgAAABAA > >AABkb2xwaGluZHIwMDQuZGxsAAAAAJIAAAAOAAAATm90aWZ5IE1lc3NhZ2UGAQ8ATWVzc2FnZVNl > >cXVlbmNlAAAAAA4CEgBTVEJDb2xsZWN0aW9uUHJveHkAAAAAegAAAAAAAAAgAQAAkgAAABEAAABP > >cmRlcmVkQ29sbGVjdGlvbsIAAAACAAAABgMLAE1lc3NhZ2VTZW5kAAAAAPoBAAAAAAAAkgAAABAA > >AABjcmVhdGVBdDpleHRlbnQ6wgAAAAIAAAAGAgUAUG9pbnQAAAAAAQAAAAEAAAAyAwAAAAAAAFUF > >AAABBAAAYAAAAOICAAAAAAAA+gEAAAAAAACSAAAACAAAAG1lbnVCYXI6wgAAAAEAAAAAAAAAYAAA > >AAYBDwBXSU5ET1dQTEFDRU1FTlQAAAAAcgEAACwAAAAsAAAAAAAAAAAAAAD///////////////// > >////AAAAAAAAAACqAgAAAAIAAJoCAAAAAAAAsAIAAEABAAAyAwAAAAAAAMEAAADBAAAAAAAAABUA > >AABGBQQAAwAAAEljb24AAAAAAAAAABAAAAAOAhEAU1RCU2luZ2xldG9uUHJveHkAAAAAmgAAAAAA > >AABSAAAABwAAAERvbHBoaW5SAAAAGAAAAEltYWdlUmVsYXRpdmVGaWxlTG9jYXRvcroAAAAAAAAA > >UgAAAAcAAABjdXJyZW50UgAAAAkAAABTaGVsbC5pY28OAh8AU1RCRXh0ZXJuYWxSZXNvdXJjZUxp > >YnJhcnlQcm94eQAAAABSAAAAEAAAAGRvbHBoaW5kcjAwNS5kbGwAAAAA'))! > >==~===~===~=== |
kuo wrote:
> When installing the "US Notify Shell.pac", I found that > Base64Codec class is missing in my image, which is referenced in > ByteArray class>>fromBase64String: method. > Where could I find it? It's part of the recent update to version 5.1.4 - use the Live Update to install it into your image. If you're not using Dolphin 5 then let me know and I'll mail you a copy of the older version that doesn't need Base64Codec. -- Ian Use the Reply-To address to contact me. Mail sent to the From address is ignored. |
On Wed, 7 Apr 2004 17:41:49 +0100, "Ian Bartholomew"
<[hidden email]> wrote: >It's part of the recent update to version 5.1.4 - use the Live Update to >install it into your image. > >If you're not using Dolphin 5 then let me know and I'll mail you a copy of >the older version that doesn't need Base64Codec. Thanks to clarify the issue. So far, my image still remained at PL3 due to STBView conversion problems that I've posted recently. <Aside> I've noticed that once an individual st file of PL4 is available from OA web site but could not remember where? Currently, I had no ideas of the format of bytecodes of View, Resources, or STBFiles ( if anyone skilled in these fields ever metioned it before that I missed?), I think that some little learning materials would help those interested like me enjoy more fun in the exploration of Smalltalk world. </Aside> Best Regards Tgkuo |
Tgkuo,
> So far, my image still remained at PL3 due to STBView conversion > problems that I've posted recently. Andy posted a possible fix for that a few days ago. See the thread "Fix for STBViewProxy LiveUpdate Problem" posted at 10:40 (GMT+1) on the 5th. > <Aside> > I've noticed that once an individual st file of PL4 is available > from OA web site but could not remember where? Run "Live Update", select the patch you want and then select "Open" from the context menu. This loads the complete patch into a workspace that can be saved as normal. You can then just file it in to install the patch. > Currently, I had no ideas of the format of bytecodes of View, > Resources, or STBFiles ( if anyone skilled in these fields ever > metioned it before that I missed?), I think that some little learning > materials would help those interested like me enjoy more fun in the > exploration of Smalltalk world. This change of encoding (from a Hex format to a Base64 one) was just because of the difficulties that the older format could have when displaying as a text file (it's one line with no line delimiters) and the problems that can then occur if line delimiters are introduced. This is just a method of "encoding" a ByteArray into a text format though. The "contents" of the resources does change between Dolphin versions but, unless you really want to get dirty, is not something for anyone other than OA to get involved with. FWIW, there is a class, STBDebugger, that can be used to investigate the actual contents of STBFiles. -- Ian Use the Reply-To address to contact me. Mail sent to the From address is ignored. |
In reply to this post by kuo-2
kuo wrote:
> So far, my image still remained at PL3 due to STBView conversion > problems that I've posted recently. I'm still at v 5.1.2, so drop me a line if you'd like me to send a copy in the earlier format. (BTW, for anyone who's interested, the reason I'm not tracking the patches closely is that I still haven't found a way to do it that works well with STS -- how do other people manage this ?) -- chris |
In reply to this post by Ian Bartholomew-19
"Ian Bartholomew" <[hidden email]> wrote in message news:<w%Rcc.30730$Y%[hidden email]>...
> Udo Schneider implemented and posted a package for this which was reposted > by Don Rylander a few months ago. In that spirit I've reposted a D5.1.4 > version below. > > Whether or not this is the latest version (Udo?) is not known. > > Cut between the lines and save to "US Notify Shell.pac" > > I've tried deploying a view and Lagoon says the method publishedAspectsOfInstances depends on Aspect which is part of the development system and won't deploy. |
Jerome Chan wrote:
Jerome, > I've tried deploying a view and Lagoon says the method > publishedAspectsOfInstances depends on Aspect which is part of the > development system and won't deploy. If you add the method to the 'must strip' category everything should be fine. CU, Udo |
In reply to this post by Jerome Chan
There is another implementation, with no shell at all.
------ | package | package := Package name: 'TaskbarIcon'. package paxVersion: 0; basicComment: ''. package basicScriptAt: #postinstall put: '"define new fields on NOTIFYICONDATA" NOTIFYICONDATA defineFields.'. package basicScriptAt: #preinstall put: '"Add new constants to win32 pool for ShellLibrary version >= 5" Win32Constants "messages" add: ''NIM_SETVERSION''->4; add: ''NIM_SETFOCUS''->3; "balloon tooltip" add: ''NIF_INFO''->16; add: ''NIIF_ERROR''->3; add: ''NIIF_INFO''->1; add: ''NIIF_NONE''->0; add: ''NIIF_WARNING''->2; add: ''NIIF_ICON_MASK''->15; add: ''NIIF_NOSOUND''->16; "uVersion" add: ''NOTIFYICON_VERSION''->3; "dwState and dwStateMask" add: ''NIF_STATE''->8; add: ''NIS_HIDDEN''->1; add: ''NIS_SHAREDICON''->2; "Notification Interaction. These are offset by WM_USER" add: ''NIN_BALLOONSHOW'' ->2; add: ''NIN_BALLOONHIDE'' -> 3; add: ''NIN_BALLOONTIMEOUT'' -> 4; add: ''NIN_BALLOONUSERCLICK'' -> 5;'. package classNames add: #TaskbarIcon; add: #TaskbarMenu; add: #TaskbarPresenterAbstract; yourself. package methodNames add: #NOTIFYICONDATA -> #notify:title:for:withFlags:; add: #NOTIFYICONDATA -> #tipText:; add: 'NOTIFYICONDATA class' -> #defineFields; yourself. package binaryGlobalNames: (Set new yourself). package globalAliases: (Set new yourself). package allResourceNames: (Set new yourself). package! "Class Definitions"! Menu subclass: #TaskbarMenu instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' classInstanceVariableNames: ''! Presenter subclass: #TaskbarPresenterAbstract instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' classInstanceVariableNames: ''! View subclass: #TaskbarIcon instanceVariableNames: 'pnid icon' classVariableNames: 'TaskbarMessage TaskbarMessageMap' poolDictionaries: '' classInstanceVariableNames: ''! "Global Aliases"! "Loose Methods"! !NOTIFYICONDATA methodsFor! notify: aText title: aTitleText for: aIntMillisecs withFlags: aNIIFFlags self szInfo: aText; szInfoTitle: aTitleText; uTimeout: aIntMillisecs; dwInfoFlags: aNIIFFlags. self uFlags: (self uFlags bitOr: NIF_INFO).! tipText: aString "Set the receiver's szTip (tip text) field." |tmpString| "ShellLibrary earlier than version 5 accepts tipText up to 64 characters in length" tmpString := ((ShellLibrary default versionInfo productMajor highWord < 5) and: [aString size > 64]) ifTrue: [aString copyFrom: 1 to: 64] ifFalse: [aString]. self szTip: tmpString. self uFlags: (self uFlags bitOr: NIF_TIP)! ! !NOTIFYICONDATA categoriesFor: #notify:title:for:withFlags:!accessing!public! ! !NOTIFYICONDATA categoriesFor: #tipText:!accessing!public! ! !NOTIFYICONDATA class methodsFor! defineFields "Define the fields of the NOTIFYICONDATA 'structure'. self compileDefinition struct { DWORD cbSize; HWND hWnd; UINT uID; UINT uFlags; UINT uCallbackMessage; HICON hIcon; // NOTE that in ShellLibrary version < 5.0 this is limited to 64 char szTip[128]; // Available in ShellLibrary version >= 5.0 DWORD dwState; DWORD dwStateMask; CHAR szInfo[256]; union { UINT uTimeout; UINT uVersion; } DUMMYUNIONNAME; CHAR szInfoTitle[64]; DWORD dwInfoFlags; // NOTE Available in ShellLibrary version >= 6 GUID guidItem; } NOTIFYICONDATA; " self defineField: #cbSize type: DWORDField writeOnly; defineField: #hWnd type: HANDLEField writeOnly; defineField: #uID type: DWORDField writeOnly; defineField: #uFlags type: DWORDField new; defineField: #uCallbackMessage type: DWORDField writeOnly; defineField: #hIcon type: HANDLEField writeOnly; defineField: #szTip type: (StringField length: 128) beWriteOnly; defineField: #dwState type: DWORDField new; defineField: #dwStateMask type: DWORDField writeOnly; defineField: #szInfo type: (StringField length: 256) beWriteOnly; defineField: #uTimeout type: DWORDField writeOnly; defineField: #szInfoTitle type: (StringField length: 64) beWriteOnly; defineField: #dwInfoFlags type: DWORDField writeOnly; defineField: #guidItem type: (StructureField type: GUID) beFiller. ! ! !NOTIFYICONDATA class categoriesFor: #defineFields!initializing!public! ! "End of package definition"! "Source Globals"! "Classes"! TaskbarMenu guid: (GUID fromString: '{68EC8264-076A-42AA-87E1-D73BD179B215}')! TaskbarMenu comment: ''! !TaskbarMenu categoriesForClass!Graphics-Tools! ! !TaskbarMenu methodsFor! showIn: aView position: aPos "http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winu i/windowsuserinterface/resources/menus/menureference/menufunctions/trackpopu pmenu.asp To display a context menu for a notification icon, the current window must be the foreground window before the application calls TrackPopupMenu. Otherwise, the menu will not disappear when the user clicks outside of the menu or the window that created the menu (if it is visible). However, when the current window is the foreground window, the second time this menu is displayed, it displays and then immediately disappears. To correct this, you must force a task switch to the application that called TrackPopupMenu at some time in the near future. This is done by posting a benign message to the window or thread, as shown in the following code sample: SetForegroundWindow(hDlg); TrackPopupMenu( hSubMenu, TPM_RIGHTBUTTON,pt.x,pt.y, 0, hDlg, NULL); PostMessage(hDlg, WM_NULL, 0, 0); " aView beForeground. "SetForegroundWindow" super showIn: aView position: aPos. "TrackPopupMenu" aView postMessage: WM_NULL wParam: 0 lParam: 0. "PostMessage" ! ! !TaskbarMenu categoriesFor: #showIn:position:!public! ! TaskbarPresenterAbstract guid: (GUID fromString: '{78E376D9-AC26-4316-BF81-6703B85524E5}')! TaskbarPresenterAbstract comment: ''! !TaskbarPresenterAbstract categoriesForClass!MVP-Presenters! ! !TaskbarPresenterAbstract methodsFor! contextMenu ^(TaskbarMenu fromStrings: self menuStrings) setDefault: 1; yourself! createView: aResourceNameString self view: ((TaskbarIcon icon: self class icon tipText: self taskbarName) contextMenu: self contextMenu). ^self view! exit self view close. ! menuStrings " Something like this: ^ #('TaskbarApplication' 'Command1//command1' 'Command2//command2' '-' 'Exit//exit' ) Look at Menu class>>fromStrings: for further details. All commands should be 'must not strip'!! " ^ self subclassResponsibility! showShell self view show! taskbarName "Default tip text etc." ^ self subclassResponsibility! ! !TaskbarPresenterAbstract categoriesFor: #contextMenu!accessing!private! ! !TaskbarPresenterAbstract categoriesFor: #createView:!private! ! !TaskbarPresenterAbstract categoriesFor: #exit!commands!must not strip!public! ! !TaskbarPresenterAbstract categoriesFor: #menuStrings!accessing!constants!private! ! !TaskbarPresenterAbstract categoriesFor: #showShell!operations!public! ! !TaskbarPresenterAbstract categoriesFor: #taskbarName!accessing!constants!private! ! TaskbarIcon guid: (GUID fromString: '{84570C96-32F6-417B-8F68-9ED4C0415EA2}')! TaskbarIcon comment: ''! !TaskbarIcon categoriesForClass!Unclassified! ! !TaskbarIcon methodsFor! destroy self hide. super destroy.! dispatchRegistered: registeredId wParam: wParam lParam: lParam "Private - Dispatch the window message. lParam actually can contain a wide set of WM messages. We re-dispatch baed on lParam if a system message and handle the taskbar specific ones" | pt | pt := Cursor position. ^lParam < WM_USER ifTrue: [super dispatchMessage: lParam wParam: self asParameter lParam: pt asDword] ifFalse: [ | selector | selector := TaskbarMessageMap at: lParam - WM_USER ifAbsent: [ ^ true ]. self perform: selector ].! hide self sendTaskbar: NIM_DELETE! icon: aIcon "Check if icon has changed and icon is shown, then NIM_MODIFY. Need to store icon to avoid GC" icon := aIcon. self pnid icon: aIcon. self sendTaskbar: NIM_MODIFY. ! initialize super initialize. self parentView: self class desktop. ! notify: aText title: aTitle self notify: aText title: aTitle withFlags: NIIF_NONE.! notify: aText title: aTitle withFlags: aNIIFFlags self pnid notify: aText title: aTitle for: self notifyTimeout withFlags: aNIIFFlags. self sendTaskbar: NIM_MODIFY ! notifyError: aText title: aTitle self notify: aText title: aTitle withFlags: NIIF_ERROR. ! notifyInfo: aText title: aTitle self notify: aText title: aTitle withFlags: NIIF_INFO. ! notifyTimeout ^10000! notifyWarning: aText title: aTitle self notify: aText title: aTitle withFlags: NIIF_WARNING. ! onBalloonClicked self presenter trigger: #balloonClicked. ^true! onBalloonHide self presenter trigger: #balloonHide. ^true ! onBalloonShow self pnid uFlags: (self pnid uFlags bitAnd: NIF_INFO bitInvert). self presenter trigger: #balloonShow. ^true ! onBalloonTimeout self presenter trigger: #balloonTimeout. ^true ! pnid pnid isNil ifTrue: [ pnid := (NOTIFYICONDATA new); uID: 1; hWnd: self handle; message: self class taskbarMessage. "pnid icon: (Bitmap fromFile: 'beacon.bmp')"]. ^pnid.! sendTaskbar: aMessage "aMessage is one of the NIM_* messages" ShellLibrary default shell_NotifyIcon: aMessage pnid: self pnid! show self sendTaskbar: NIM_ADD.! tipText: aText self pnid tipText: aText displayString. self sendTaskbar: NIM_MODIFY. ! ! !TaskbarIcon categoriesFor: #destroy!public! ! !TaskbarIcon categoriesFor: #dispatchRegistered:wParam:lParam:!private! ! !TaskbarIcon categoriesFor: #hide!public! ! !TaskbarIcon categoriesFor: #icon:!initializing!public! ! !TaskbarIcon categoriesFor: #initialize!initializing!public! ! !TaskbarIcon categoriesFor: #notify:title:!notification!public! ! !TaskbarIcon categoriesFor: #notify:title:withFlags:!notification!public! ! !TaskbarIcon categoriesFor: #notifyError:title:!notification!public! ! !TaskbarIcon categoriesFor: #notifyInfo:title:!notification!public! ! !TaskbarIcon categoriesFor: #notifyTimeout!private! ! !TaskbarIcon categoriesFor: #notifyWarning:title:!notification!public! ! !TaskbarIcon categoriesFor: #onBalloonClicked!initializing!public! ! !TaskbarIcon categoriesFor: #onBalloonHide!initializing!public! ! !TaskbarIcon categoriesFor: #onBalloonShow!initializing!public! ! !TaskbarIcon categoriesFor: #onBalloonTimeout!initializing!public! ! !TaskbarIcon categoriesFor: #pnid!private! ! !TaskbarIcon categoriesFor: #sendTaskbar:!private! ! !TaskbarIcon categoriesFor: #show!public! ! !TaskbarIcon categoriesFor: #tipText:!initializing!public! ! !TaskbarIcon class methodsFor! icon: aIcon ^self new icon: aIcon! icon: aIcon tipText: aString ^self new icon: aIcon; tipText: aString! initialize "Private - TaskbarIcon initialize" TaskbarMessageMap:= LookupTable new. TaskbarMessageMap at: WM_LBUTTONDOWN put: #onLeftButtonPressed; at: WM_RBUTTONDOWN put: #onRightButtonPressed; at: WM_LBUTTONDBLCLK put: #onLeftButtonDoubleClicked; at: WM_RBUTTONDBLCLK put: #onRightButtonDoubleClicked; at: WM_CONTEXTMENU put: #onContextMenu; at: NIN_BALLOONSHOW put: #onBalloonShow; at: NIN_BALLOONHIDE put: #onBalloonHide; at: NIN_BALLOONTIMEOUT put: #onBalloonTimeout; at: NIN_BALLOONUSERCLICK put: #onBalloonClicked.! taskbarMessage TaskbarMessage isNil ifTrue: [ TaskbarMessage := self registerMessage: 'TaskbarMessage']. ^TaskbarMessage! ! !TaskbarIcon class categoriesFor: #icon:!instance creation!public! ! !TaskbarIcon class categoriesFor: #icon:tipText:!instance creation!public! ! !TaskbarIcon class categoriesFor: #initialize!private! ! !TaskbarIcon class categoriesFor: #taskbarMessage!public! ! "Binary Globals"! "Resources"! ------ -- Dmitry Zamotkin |
In reply to this post by Chris Uppal-3
On Thu, 8 Apr 2004 09:17:44 +0100, "Chris Uppal"
<[hidden email]> wrote: > >I'm still at v 5.1.2, so drop me a line if you'd like me to send a copy in the >earlier format. > >(BTW, for anyone who's interested, the reason I'm not tracking the patches >closely is that I still haven't found a way to do it that works well with >STS -- how do other people manage this ?) > > -- chris > regards kuo |
In reply to this post by Chris Uppal-3
"Chris Uppal" <[hidden email]> wrote in message
news:[hidden email]... > I'm still at v 5.1.2, so drop me a line if you'd like me to send a copy in the > earlier format. > > (BTW, for anyone who's interested, the reason I'm not tracking the patches > closely is that I still haven't found a way to do it that works well with > STS -- how do other people manage this ?) Does the new patch cause a problem with STS? I have STS in my image, but lately I only really use it to load previous versions of methods when I need to. I have drifted away from serious use of its version control features (I just make frequent image backups now). I haven't noticed a problem with it, but my current level of use is probably much more limited than yours. Chris |
In reply to this post by Chris Uppal-3
Chris Uppal wrote:
> (BTW, for anyone who's interested, the reason I'm not tracking the patches > closely is that I still haven't found a way to do it that works well with > STS -- how do other people manage this ?) FWIW, this is what I've settled into doing... I start with the image as distributed by Object Arts (with any previous live-updates), apply the current live-update, and save that as the new starting point. As to using STS, I like being able to (at the end of a development episode) use STS to compare any packages that have their change marker set. If it turns out there aren't any changes (or at least none that are worthy :-) ) I just clear the change marker. If it's one of my packages, I'll version off a new edition of it. If it's a package from the base image, I'll move any extensions to my own package and version that. In those rare cases where I actually want to patch a base method, I'll put a copy of the method into a patch file (for my automatic build) and make a new version of the base package in the STS repository, just so the delta won't bother me again. In order to get the STS package comparisons to work out, I version off new editions of the base packages after doing the live update to a new patch level. From the starting image, I install STS and then take a few minutes to compare each of the base packages with what's in STS from the previous version. For those that have been changed by the live-update, I'll make a new version. Since a new PL doesn't happen very often, I haven't felt the urge to automate this. Besides, browsing the changes on a per package basis can be educational. Before doing this I inspect "StsManager current" and set "developer" to 'Object Arts'. That way all the package and method editions get properly identified. Then from the starting image, I'll build a fresh working image using an automated script every day or two, that includes everything I normally work with. The script first installs STS and some packaged goodies and patches. Then it mainly works by loading the latest editions of indicated packages from STS. hopefully this had some useful ideas, -Bill ------------------------------------------- Bill Dargel [hidden email] Shoshana Technologies 100 West Joy Road, Ann Arbor, MI 48105 USA |
In reply to this post by Christopher J. Demers
Christopher J. Demers wrote:
> > (BTW, for anyone who's interested, the reason I'm not tracking the > > patches closely is that I still haven't found a way to do it that works > > well with STS -- how do other people manage this ?) > > Does the new patch cause a problem with STS? Not that *I* know of. Though I suspect that the new base64 encoding of binary resources will break STS's ability to import packages directly into its database (but that's not a feature I use much, if at all). No, it's just that I've yet to find a way of working with STS and Dolphin patches that doesn't involve most of a morning messing around to install, and version, the patches *and* get everything back the way I want it. -- chris |
Free forum by Nabble | Edit this page |