The Inbox: Tools-hmm.236.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

The Inbox: Tools-hmm.236.mcz

commits-2
A new version of Tools was added to project The Inbox:
http://source.squeak.org/inbox/Tools-hmm.236.mcz

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

Name: Tools-hmm.236
Author: hmm
Time: 27 April 2010, 8:46:59.789 pm
UUID: 283b99fb-15fd-45b6-81f0-49a6bb6bea15
Ancestors: Tools-ar.235

Display image files (graphics) in FileList

=============== Diff against Tools-ar.235 ===============

Item was added:
+ ----- Method: FileList>>stepTimeIn: (in category 'private') -----
+ stepTimeIn: aWindow
+ ^500!

Item was added:
+ ----- Method: FileList>>readGraphicContents (in category 'private') -----
+ readGraphicContents
+ | form maxExtent ext |
+ form := Form fromFileNamed: self fullName.
+ maxExtent := lastGraphicsExtent := self availableGraphicsExtent.
+ ext := form extent.
+ (maxExtent notNil and: [form extent <= maxExtent]) ifFalse: [
+ form := form magnify: form boundingBox by: (maxExtent x / form width min: maxExtent y / form height) asPoint smoothing: 3].
+ contents :=  ('Image extent: ', ext printString) asText,
+ (String with: Character cr),
+ (Text string: ' '
+ attribute: (TextFontReference toFont:
+ (FormSetFont new
+ fromFormArray: (Array with: form)
+ asciiStart: Character space asInteger
+ ascent: form height))).
+ brevityState := #graphic.
+ ^contents!

Item was added:
+ ----- Method: FileList>>step (in category 'private') -----
+ step
+ | ext |
+ brevityState = #graphic ifTrue: [
+ ext := self availableGraphicsExtent.
+ ext = lastGraphicsExtent ifFalse: [
+ lastGraphicsExtent := ext.
+ brevityState := #needToGetGraphic.
+ self changed: #contents]]!

Item was added:
+ ----- Method: FileList>>availableGraphicsExtent (in category 'private') -----
+ availableGraphicsExtent
+ self dependents do: [:each |
+ ((each isKindOf: PluggableTextMorph) and: [each getTextSelector == #contents]) ifTrue: [^each innerBounds extent - (6@22)]].
+ ^nil!

Item was added:
+ ----- Method: FileList>>isGraphicsFileSelected (in category 'private') -----
+ isGraphicsFileSelected
+ ^fileName notNil and: [((self itemsForFile: self fullName) detect: [:each | each provider == Form and: [each selector == #importImage:]] ifNone: []) notNil]!

Item was changed:
  ----- Method: FileList>>fileListIndex: (in category 'file list') -----
  fileListIndex: anInteger
  "Select the file name having the given index, and display its contents."
 
  | item name |
  self okToChange ifFalse: [^ self].
  listIndex := anInteger.
  listIndex = 0
  ifTrue: [fileName := nil]
  ifFalse:
  [item := self fileNameFromFormattedItem: (list at: anInteger).
  (item endsWith: self folderString)
  ifTrue:
  ["remove [...] folder string and open the folder"
  name := item copyFrom: 1 to: item size - self folderString size.
  listIndex := 0.
  brevityState := #FileList.
  self addPath: name.
  name first = $^
  ifTrue: [self directory: (ServerDirectory serverNamed: name allButFirst)]
  ifFalse: [volListIndex = 1 ifTrue: [name := name, directory slash].
  self directory: (directory directoryNamed: name)]]
  ifFalse: [fileName := item]].  "open the file selected"
 
+ brevityState := self isGraphicsFileSelected
+ ifTrue: [#needToGetGraphic]
+ ifFalse: [#needToGetBrief]..
- brevityState := #needToGetBrief.
  self changed: #fileListIndex.
  self changed: #contents.
  self updateButtonRow!

Item was changed:
  ----- Method: FileList>>contents (in category 'private') -----
  contents
  "Answer the contents of the file, reading it first if needed."
  "Possible brevityState values:
  FileList,
  fullFile, briefFile, needToGetFull, needToGetBrief,
  fullHex, briefHex, needToGetFullHex, needToGetBriefHex"
 
  (listIndex = 0) | (brevityState == #FileList) ifTrue: [^ self defaultContents].  "no file selected"
  brevityState == #fullFile ifTrue: [^ contents].
  brevityState == #fullHex ifTrue: [^ contents].
  brevityState == #briefFile ifTrue: [^ contents].
  brevityState == #briefHex ifTrue: [^ contents].
+ brevityState == #graphic ifTrue: [^ contents].
 
+ brevityState == #needToGetGraphic ifTrue: [^self readGraphicContents].
+
  brevityState == #needToGetFullHex ifTrue: [^ self readContentsHex: false].
  brevityState == #needToGetBriefHex ifTrue: [^ self readContentsHex: true].
 
  brevityState == #needToGetFull ifTrue: [^ self readContentsBrief: false].
  brevityState == #needToGetBrief ifTrue: [^ self readContentsBrief: true].  "default"
 
  (TextConverter allEncodingNames includes: brevityState)
  ifTrue: [ ^self readContentsAsEncoding: brevityState].
 
  self halt: 'unknown state ' , brevityState printString!

Item was changed:
  StringHolder subclass: #FileList
+ instanceVariableNames: 'fileName directory volList volListIndex list listIndex pattern sortMode brevityState directoryCache lastGraphicsExtent'
- instanceVariableNames: 'fileName directory volList volListIndex list listIndex pattern sortMode brevityState directoryCache'
  classVariableNames: 'FileReaderRegistry RecentDirs'
  poolDictionaries: ''
  category: 'Tools-FileList'!
 
  !FileList commentStamp: 'nk 11/26/2002 11:52' prior: 0!
  I am model that can be used to navigate the host file system. By omitting the volume list, file list, and template panes from the view, I can also be used as the model for an editor on an individual file.
 
  The FileList now provides a registration mechanism to which any tools the filelist uses ***MUST*** register.  This way it is possible to dynamically load or unload a new tool and have the FileList automatically updated.  This change supports a decomposition of Squeak and removes a problem with dead reference to classes after a major shrink.
 
  Tools should implement the following methods (look for implementors in the image):
 
  #fileReaderServicesForFile:suffix: (appropriate services for given file, takes a file name and a lowercased suffix)
 
  #services (all provided services, to be displayed in full list)
 
  These methods both return a collection of SimpleServiceEntry instances.  These contain a class, a menu label and a method selector having one argument.  They may also provide separate button labels and description.
 
  The argument to the specified method will be a string representing the full name of a file when one is selected or the file list itself when there is no selected file.
 
  Tools must register with the FileList calling the class method #registerFileReader: when they load. They also must call #unregisterFileReader: when they unload.
 
  There is a testSuite called FileListTest that presents some examples.
 
  Stef (I do not like really this distinction passing always a file list could be better)
 
 
  Old Comments:
 
 
  FileLists can now see FTP servers anywhere on the net.  In the volume list menu:
  fill in server info... Gives you a form to register a new ftp server you want to use.
  open server... Choose a server to connect to.
  local disk Go back to looking at your local volume.
 
 
  Still undone (you can contribute code):
  [ ] Using a Proxy server to get out through a firewall.  What is the convention for proxy servers with FTP?
  [ ] Fill in the date and size info in the list of remote files.  Allow sorting by it.  New smarts needed in (ServerDirectory fileNameFormattedFrom:sizePad:sortMode:).
  [ ] Currently the FileList has no way to delete a directory.  Since you can't select a directory without going into it, it would have to be deleting the current directory.  Which would usually be empty.!

Item was added:
+ ----- Method: FileList>>wantsSteps (in category 'private') -----
+ wantsSteps
+ ^true!


Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Tools-hmm.236.mcz

Hannes Hirzel
Hello

I loaded Tools-hmm.236.mcz into a pristine 4.1 image updated to the
last trunk 10025.

It displays PNG and JPG pictures (tested) and probably others (not
tested) nicely.

The graphic is loaded through

    form := Form fromFileNamed: self fullName.

I vote for inclusion into the trunk

Thank you Hans-Martin for this very nice and needed contribution.

--Hannes



On Tue, 27 Apr 2010 18:47:13.803 0000, [hidden email]
<[hidden email]> wrote:

> A new version of Tools was added to project The Inbox:
> http://source.squeak.org/inbox/Tools-hmm.236.mcz
>
> ==================== Summary ====================
>
> Name: Tools-hmm.236
> Author: hmm
> Time: 27 April 2010, 8:46:59.789 pm
> UUID: 283b99fb-15fd-45b6-81f0-49a6bb6bea15
> Ancestors: Tools-ar.235
>
> Display image files (graphics) in FileList
>
> =============== Diff against Tools-ar.235 ===============
>
> Item was added:
> + ----- Method: FileList>>stepTimeIn: (in category 'private') -----
> + stepTimeIn: aWindow
> + ^500!
>
> Item was added:
> + ----- Method: FileList>>readGraphicContents (in category 'private') -----
> + readGraphicContents
> + | form maxExtent ext |
> + form := Form fromFileNamed: self fullName.
> + maxExtent := lastGraphicsExtent := self availableGraphicsExtent.
> + ext := form extent.
> + (maxExtent notNil and: [form extent <= maxExtent]) ifFalse: [
> + form := form magnify: form boundingBox by: (maxExtent x / form width
> min: maxExtent y / form height) asPoint smoothing: 3].
> + contents :=  ('Image extent: ', ext printString) asText,
> + (String with: Character cr),
> + (Text string: ' '
> + attribute: (TextFontReference toFont:
> + (FormSetFont new
> + fromFormArray: (Array with: form)
> + asciiStart: Character space asInteger
> + ascent: form height))).
> + brevityState := #graphic.
> + ^contents!
>
> Item was added:
> + ----- Method: FileList>>step (in category 'private') -----
> + step
> + | ext |
> + brevityState = #graphic ifTrue: [
> + ext := self availableGraphicsExtent.
> + ext = lastGraphicsExtent ifFalse: [
> + lastGraphicsExtent := ext.
> + brevityState := #needToGetGraphic.
> + self changed: #contents]]!
>
> Item was added:
> + ----- Method: FileList>>availableGraphicsExtent (in category 'private')
> -----
> + availableGraphicsExtent
> + self dependents do: [:each |
> + ((each isKindOf: PluggableTextMorph) and: [each getTextSelector ==
> #contents]) ifTrue: [^each innerBounds extent - (6@22)]].
> + ^nil!
>
> Item was added:
> + ----- Method: FileList>>isGraphicsFileSelected (in category 'private')
> -----
> + isGraphicsFileSelected
> + ^fileName notNil and: [((self itemsForFile: self fullName) detect: [:each
> | each provider == Form and: [each selector == #importImage:]] ifNone: [])
> notNil]!
>
> Item was changed:
>   ----- Method: FileList>>fileListIndex: (in category 'file list') -----
>   fileListIndex: anInteger
>   "Select the file name having the given index, and display its contents."
>
>   | item name |
>   self okToChange ifFalse: [^ self].
>   listIndex := anInteger.
>   listIndex = 0
>   ifTrue: [fileName := nil]
>   ifFalse:
>   [item := self fileNameFromFormattedItem: (list at: anInteger).
>   (item endsWith: self folderString)
>   ifTrue:
>   ["remove [...] folder string and open the folder"
>   name := item copyFrom: 1 to: item size - self folderString size.
>   listIndex := 0.
>   brevityState := #FileList.
>   self addPath: name.
>   name first = $^
>   ifTrue: [self directory: (ServerDirectory serverNamed: name
> allButFirst)]
>   ifFalse: [volListIndex = 1 ifTrue: [name := name, directory slash].
>   self directory: (directory directoryNamed: name)]]
>   ifFalse: [fileName := item]].  "open the file selected"
>
> + brevityState := self isGraphicsFileSelected
> + ifTrue: [#needToGetGraphic]
> + ifFalse: [#needToGetBrief]..
> - brevityState := #needToGetBrief.
>   self changed: #fileListIndex.
>   self changed: #contents.
>   self updateButtonRow!
>
> Item was changed:
>   ----- Method: FileList>>contents (in category 'private') -----
>   contents
>   "Answer the contents of the file, reading it first if needed."
>   "Possible brevityState values:
>   FileList,
>   fullFile, briefFile, needToGetFull, needToGetBrief,
>   fullHex, briefHex, needToGetFullHex, needToGetBriefHex"
>
>   (listIndex = 0) | (brevityState == #FileList) ifTrue: [^ self
> defaultContents].  "no file selected"
>   brevityState == #fullFile ifTrue: [^ contents].
>   brevityState == #fullHex ifTrue: [^ contents].
>   brevityState == #briefFile ifTrue: [^ contents].
>   brevityState == #briefHex ifTrue: [^ contents].
> + brevityState == #graphic ifTrue: [^ contents].
>
> + brevityState == #needToGetGraphic ifTrue: [^self readGraphicContents].
> +
>   brevityState == #needToGetFullHex ifTrue: [^ self readContentsHex:
> false].
>   brevityState == #needToGetBriefHex ifTrue: [^ self readContentsHex:
> true].
>
>   brevityState == #needToGetFull ifTrue: [^ self readContentsBrief: false].
>   brevityState == #needToGetBrief ifTrue: [^ self readContentsBrief: true].
>  "default"
>
>   (TextConverter allEncodingNames includes: brevityState)
>   ifTrue: [ ^self readContentsAsEncoding: brevityState].
>
>   self halt: 'unknown state ' , brevityState printString!
>
> Item was changed:
>   StringHolder subclass: #FileList
> + instanceVariableNames: 'fileName directory volList volListIndex list
> listIndex pattern sortMode brevityState directoryCache lastGraphicsExtent'
> - instanceVariableNames: 'fileName directory volList volListIndex list
> listIndex pattern sortMode brevityState directoryCache'
>   classVariableNames: 'FileReaderRegistry RecentDirs'
>   poolDictionaries: ''
>   category: 'Tools-FileList'!
>
>   !FileList commentStamp: 'nk 11/26/2002 11:52' prior: 0!
>   I am model that can be used to navigate the host file system. By omitting
> the volume list, file list, and template panes from the view, I can also be
> used as the model for an editor on an individual file.
>
>   The FileList now provides a registration mechanism to which any tools the
> filelist uses ***MUST*** register.  This way it is possible to dynamically
> load or unload a new tool and have the FileList automatically updated.  This
> change supports a decomposition of Squeak and removes a problem with dead
> reference to classes after a major shrink.
>
>   Tools should implement the following methods (look for implementors in the
> image):
>
>   #fileReaderServicesForFile:suffix: (appropriate services for given file,
> takes a file name and a lowercased suffix)
>
>   #services (all provided services, to be displayed in full list)
>
>   These methods both return a collection of SimpleServiceEntry instances.
> These contain a class, a menu label and a method selector having one
> argument.  They may also provide separate button labels and description.
>
>   The argument to the specified method will be a string representing the
> full name of a file when one is selected or the file list itself when there
> is no selected file.
>
>   Tools must register with the FileList calling the class method
> #registerFileReader: when they load. They also must call
> #unregisterFileReader: when they unload.
>
>   There is a testSuite called FileListTest that presents some examples.
>
>   Stef (I do not like really this distinction passing always a file list
> could be better)
>
>
>   Old Comments:
>
>
>   FileLists can now see FTP servers anywhere on the net.  In the volume list
> menu:
>   fill in server info... Gives you a form to register a new ftp server you
> want to use.
>   open server... Choose a server to connect to.
>   local disk Go back to looking at your local volume.
>
>
>   Still undone (you can contribute code):
>   [ ] Using a Proxy server to get out through a firewall.  What is the
> convention for proxy servers with FTP?
>   [ ] Fill in the date and size info in the list of remote files.  Allow
> sorting by it.  New smarts needed in (ServerDirectory
> fileNameFormattedFrom:sizePad:sortMode:).
>   [ ] Currently the FileList has no way to delete a directory.  Since you
> can't select a directory without going into it, it would have to be deleting
> the current directory.  Which would usually be empty.!
>
> Item was added:
> + ----- Method: FileList>>wantsSteps (in category 'private') -----
> + wantsSteps
> + ^true!
>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Tools-hmm.236.mcz

Andreas.Raab
On 4/28/2010 8:42 PM, Hannes Hirzel wrote:
> I loaded Tools-hmm.236.mcz into a pristine 4.1 image updated to the
> last trunk 10025.

Thanks. Independent verification is always helpful.

Cheers,
   - Andreas

> It displays PNG and JPG pictures (tested) and probably others (not
> tested) nicely.
>
> The graphic is loaded through
>
>      form := Form fromFileNamed: self fullName.
>
> I vote for inclusion into the trunk
>
> Thank you Hans-Martin for this very nice and needed contribution.
>
> --Hannes
>
>
>
> On Tue, 27 Apr 2010 18:47:13.803 0000, [hidden email]
> <[hidden email]>  wrote:
>> A new version of Tools was added to project The Inbox:
>> http://source.squeak.org/inbox/Tools-hmm.236.mcz
>>
>> ==================== Summary ====================
>>
>> Name: Tools-hmm.236
>> Author: hmm
>> Time: 27 April 2010, 8:46:59.789 pm
>> UUID: 283b99fb-15fd-45b6-81f0-49a6bb6bea15
>> Ancestors: Tools-ar.235
>>
>> Display image files (graphics) in FileList
>>
>> =============== Diff against Tools-ar.235 ===============

Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Tools-hmm.236.mcz

Hannes Hirzel
Andreas,
the image crash Hans B. reports - I have experienced it before but
forgot to report as most of the jpg images I use work. I should have
mentioned that.
--Hannes

On 4/29/10, Andreas Raab <[hidden email]> wrote:

> On 4/28/2010 8:42 PM, Hannes Hirzel wrote:
>> I loaded Tools-hmm.236.mcz into a pristine 4.1 image updated to the
>> last trunk 10025.
>
> Thanks. Independent verification is always helpful.
>
> Cheers,
>    - Andreas
>
>> It displays PNG and JPG pictures (tested) and probably others (not
>> tested) nicely.
>>
>> The graphic is loaded through
>>
>>      form := Form fromFileNamed: self fullName.
>>
>> I vote for inclusion into the trunk
>>
>> Thank you Hans-Martin for this very nice and needed contribution.
>>
>> --Hannes
>>
>>
>>
>> On Tue, 27 Apr 2010 18:47:13.803 0000, [hidden email]
>> <[hidden email]>  wrote:
>>> A new version of Tools was added to project The Inbox:
>>> http://source.squeak.org/inbox/Tools-hmm.236.mcz
>>>
>>> ==================== Summary ====================
>>>
>>> Name: Tools-hmm.236
>>> Author: hmm
>>> Time: 27 April 2010, 8:46:59.789 pm
>>> UUID: 283b99fb-15fd-45b6-81f0-49a6bb6bea15
>>> Ancestors: Tools-ar.235
>>>
>>> Display image files (graphics) in FileList
>>>
>>> =============== Diff against Tools-ar.235 ===============
>
>