The Trunk: Morphic-ct.1586.mcz

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

The Trunk: Morphic-ct.1586.mcz

commits-2
Marcel Taeumel uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-ct.1586.mcz

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

Name: Morphic-ct.1586
Author: ct
Time: 10 November 2019, 4:06:17.228559 pm
UUID: d752eb23-2116-0945-b043-aff08fed94fd
Ancestors: Morphic-mt.1584

Proposal: Style printIt results as a pluggable link that can be clicked to inspect the result.

To enable this behavior, this commit also extends #insertAndSelect:at: to allow for inserting both strings and texts.

=============== Diff against Morphic-mt.1584 ===============

Item was changed:
  ----- Method: PluggableTextMorph>>printIt (in category 'menu commands') -----
  printIt
  | oldEditor |
  textMorph editor selectFrom: selectionInterval first to: selectionInterval last;
  model: model.  "For, eg, evaluateSelection"
  textMorph handleEdit: [(oldEditor := textMorph editor) evaluateSelectionAndDo:
  [:result |
  selectionInterval := oldEditor selectionInterval.
  textMorph installEditorToReplace: oldEditor.
+ textMorph handleEdit: [ oldEditor afterSelectionInsertAndSelect:
+ (oldEditor printTextFor: result)].
- textMorph handleEdit: [oldEditor afterSelectionInsertAndSelect: result printString].
  selectionInterval := oldEditor selectionInterval.
 
  textMorph editor selectFrom: selectionInterval first to: selectionInterval last.
  self scrollSelectionIntoView]]!

Item was changed:
  ----- Method: TextEditor>>afterSelectionInsertAndSelect: (in category 'new selection') -----
+ afterSelectionInsertAndSelect: aStringOrText
- afterSelectionInsertAndSelect: aString
 
+ self insertAndSelect: aStringOrText at: self stopIndex !
- self insertAndSelect: aString at: self stopIndex !

Item was changed:
  ----- Method: TextEditor>>insertAndSelect:at: (in category 'new selection') -----
+ insertAndSelect: aStringOrText at: anInteger
- insertAndSelect: aString at: anInteger
 
+ aStringOrText isString ifTrue: [
+ ^ self
+ insertAndSelect: (Text string: aStringOrText attributes: emphasisHere)
+ at: anInteger].
- self closeTypeIn.
 
+ self closeTypeIn.
  self selectInvisiblyFrom: anInteger to: anInteger - 1.
  self openTypeIn.
 
  self
  replace: self selectionInterval
+ with: (Text string: ' ' attributes: emphasisHere), aStringOrText
- with: (Text string: (' ', aString) attributes: emphasisHere)
  and: [].
-
  self closeTypeIn.!

Item was changed:
  ----- Method: TextEditor>>printIt (in category 'do-its') -----
  printIt
 
  self evaluateSelectionAndDo: [:result |
  (model respondsTo: #printIt:result:)
  ifTrue: [model
  perform: #printIt:result:
  with: self selection
  with: result]
+ ifFalse: [self afterSelectionInsertAndSelect: (self printTextFor: result)]]!
- ifFalse: [self afterSelectionInsertAndSelect: result printString]]!

Item was added:
+ ----- Method: TextEditor>>printTextFor: (in category 'do-its') -----
+ printTextFor: anObject
+
+ ^ Text
+ string: anObject printString
+ attributes: {PluggableTextAttribute evalBlock: [anObject inspect]}!