[squeak-dev] The Trunk: Tools-mt.1056.mcz

christoph.thiede at student.hpi.uni-potsdam.de christoph.thiede at student.hpi.uni-potsdam.de
Mon Nov 22 17:56:30 UTC 2021


Hi Marcel,

> Adds new preference to file-out workspace contents on accept. Thanks to Jaromir for the idea! Preference is enabled by default since there was noe default accept-action in workspaces yet.

We have already so many preferences in the image. Could we merge #fileOutOnAccept and #fileOutFilePath and say, only do a file-out if a path was specified? :-)

Best,
Christoph

---
Sent from Squeak Inbox Talk

On 2021-05-18T11:58:28+00:00, commits at source.squeak.org wrote:

> Marcel Taeumel uploaded a new version of Tools to project The Trunk:
> http://source.squeak.org/trunk/Tools-mt.1056.mcz
> 
> ==================== Summary ====================
> 
> Name: Tools-mt.1056
> Author: mt
> Time: 18 May 2021, 1:58:25.950287 pm
> UUID: f32e4e04-6f83-d641-ba5a-0de0c535aa73
> Ancestors: Tools-mt.1055
> 
> Tweak #embedTranscript to only apply when opening a regular workspace via class-side #open. Note that the workspace model is re-used for other purposes such as string edit. See UIManager.
> 
> Adds new preference to file-out workspace contents on accept. Thanks to Jaromir for the idea! Preference is enabled by default since there was noe default accept-action in workspaces yet.
> 
> =============== Diff against Tools-mt.1055 ===============
> 
> Item was changed:
>   StringHolder subclass: #Workspace
>       instanceVariableNames: 'bindings acceptDroppedMorphs acceptAction mustDeclareVariables shouldStyle environment'
> +     classVariableNames: 'DeclareVariablesAutomatically EmbedTranscript FileOutFilePath FileOutOnAccept LookupPools ShouldStyle'
> -     classVariableNames: 'DeclareVariablesAutomatically EmbedTranscript LookupPools ShouldStyle'
>       poolDictionaries: ''
>       category: 'Tools-Base'!
>   
>   !Workspace commentStamp: 'fbs 6/2/2012 20:46' prior: 0!
>   A Workspace is a text area plus a lot of support for executable code.  It is a great place to execute top-level commands to compute something useful, and it is a great place to develop bits of a program before those bits get put into class methods.
>   
>   To open a new workspace, execute:
>   
>       Workspace open
>   
>   
>   A workspace can have its own variables, called "workspace variables", to hold intermediate results.  For example, if you type into a workspace "x := 5" and do-it, then later you could type in "y := x * 2" and y would become 10.
>   
>   Additionally, in Morphic, a workspace can gain access to morphs that are on the screen.  If acceptDroppedMorphs is turned on, then whenever a morph is dropped on the workspace, a variable will be created which references that morph.  This functionality is toggled with the window-wide menu of a workspace.
>   
>   
>   The instance variables of this class are:
>   
>       bindings  -  holds the workspace variables for this workspace
>   
>       acceptDroppedMorphs - whether dropped morphs should create new variables!
> 
> Item was changed:
>   ----- Method: Workspace class>>embedTranscript (in category 'preferences') -----
>   embedTranscript
>       <preference: 'Embed a Transcript in Workspace' 
> +         categoryList: #('browsing' 'tools')
> -         category: 'browsing' 
>           description: 'If true, new workspaces will open with an embedded Transcript.' 
>           type: #Boolean>
>       ^ EmbedTranscript ifNil: [ false ]!
> 
> Item was added:
> + ----- Method: Workspace class>>fileOut: (in category 'support') -----
> + fileOut: contents
> +     "Write the given contents into the workspace file-out file path."
> + 
> +     | filePath |
> +     filePath := self fileOutFilePath.
> +     (FileDirectory default on: filePath) containingDirectory assureExistence.
> +     FileStream
> +         fileNamed: filePath
> +         do: [:stream |
> +             stream
> +                 setToEnd;
> +                 nextPutAll: '"----ACCEPT----';
> +                 nextPutAll: DateAndTime now asString;
> +                 nextPutAll: '"';
> +                 cr; nextPutAll: contents; cr].
> +     Transcript showln: 'Workspace contents successfully appended to: ', filePath printString.!
> 
> Item was added:
> + ----- Method: Workspace class>>fileOutFilePath (in category 'preferences') -----
> + fileOutFilePath
> +     <preference: 'File-out file path for workspace' 
> +         categoryList: #('browsing' 'tools')
> +         description: 'Set the file-out location for #fileOutOnAccept in workspaces.' 
> +         type: #String>
> +     ^ FileOutFilePath ifNil: [ 'workspace.st' ]!
> 
> Item was added:
> + ----- Method: Workspace class>>fileOutFilePath: (in category 'preferences') -----
> + fileOutFilePath: aString
> + 
> +     FileOutFilePath := aString.!
> 
> Item was added:
> + ----- Method: Workspace class>>fileOutOnAccept (in category 'preferences') -----
> + fileOutOnAccept
> +     <preference: 'File-out workspace contents on accept' 
> +         categoryList: #('browsing' 'tools')
> +         description: 'If true, accepting contents in a workspace will append them to a known location in the file system. See #fileOutFilePath.' 
> +         type: #Boolean>
> +     ^ FileOutOnAccept ifNil: [ true ]!
> 
> Item was added:
> + ----- Method: Workspace class>>fileOutOnAccept: (in category 'preferences') -----
> + fileOutOnAccept: aBoolean
> + 
> +     FileOutOnAccept := aBoolean.!
> 
> Item was added:
> + ----- Method: Workspace class>>open (in category 'instance creation') -----
> + open
> + 
> +     | workspace |
> +     workspace := self new.
> +     self fileOutOnAccept ifTrue: [
> +         workspace acceptAction: [:string | self fileOut: string]].
> +     ^ self embedTranscript
> +         ifTrue: [workspace buildAndOpenWorkspaceTranscript]
> +         ifFalse: [workspace buildAndOpen]!
> 
> Item was added:
> + ----- Method: Workspace>>buildAndOpen (in category 'toolbuilder') -----
> + buildAndOpen
> + 
> +     ToolBuilder default open: self.
> +     ^ self!
> 
> Item was added:
> + ----- Method: Workspace>>buildAndOpenWorkspaceTranscript (in category 'toolbuilder') -----
> + buildAndOpenWorkspaceTranscript
> + 
> +     | windowSpec builder |
> +     builder := ToolBuilder default.
> +     windowSpec := self buildWindowWith: builder specs: {
> +         (0.0 @ 0.0 corner: 1.0 @ 0.6) -> [self buildCodePaneWith: builder].
> +         (0.0 @ 0.6 corner: 1.0 @ 1.0) -> [self buildTranscriptWith: builder].
> +     }.
> +     builder open: windowSpec.
> +     ^ self!
> 
> Item was removed:
> - ----- Method: Workspace>>buildWith: (in category 'toolbuilder') -----
> - buildWith: builder
> - 
> -     ^ self class embedTranscript
> -         ifTrue: [self buildWorkspaceTranscriptWith: builder]
> -         ifFalse: [super buildWith: builder]!
> 
> Item was removed:
> - ----- Method: Workspace>>buildWorkspaceTranscriptWith: (in category 'toolbuilder') -----
> - buildWorkspaceTranscriptWith: builder
> - 
> -     | windowSpec |
> -     windowSpec := self buildWindowWith: builder specs: {
> -         (0.0 @ 0.0 corner: 1.0 @ 0.6) -> [self buildCodePaneWith: builder].
> -         (0.0 @ 0.6 corner: 1.0 @ 1.0) -> [self buildTranscriptWith: builder].
> -     }.
> -     ^builder build: windowSpec!
> 
> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20211122/a7b82020/attachment.html>


More information about the Squeak-dev mailing list