CodeView.st
author claus
Mon, 17 Jan 1994 10:30:00 +0100
changeset 27 a7dd7c7528a9
parent 18 66bf62e27141
child 32 b6c23dfd5663
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     1
"
4
88eb91574867 *** empty log message ***
claus
parents: 2
diff changeset
     2
 COPYRIGHT (c) 1989 by Claus Gittinger
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     3
              All Rights Reserved
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     4
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    11
"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    12
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    13
Workspace subclass:#CodeView
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    14
       instanceVariableNames:'acceptAction explainAction'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    15
       classVariableNames:''
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    16
       poolDictionaries:''
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    17
       category:'Interface-Workspace'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    18
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    19
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    20
CodeView comment:'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    21
4
88eb91574867 *** empty log message ***
claus
parents: 2
diff changeset
    22
COPYRIGHT (c) 1989 by Claus Gittinger
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    23
            All Rights Reserved
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    24
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    25
a view for code which can recompile its contents. It adds accept and explain
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    26
to the menu, and defines two actions: acceptAction to be performed for accept
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    27
and explainAction to be performed for explain.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    28
27
a7dd7c7528a9 *** empty log message ***
claus
parents: 18
diff changeset
    29
$Header: /cvs/stx/stx/libwidg/CodeView.st,v 1.7 1994-01-17 09:30:00 claus Exp $
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    30
written winter-89 by claus
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    31
'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    32
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    33
!CodeView methodsFor:'initialization'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    34
6
fd1b68b48422 *** empty log message ***
claus
parents: 4
diff changeset
    35
initialize
fd1b68b48422 *** empty log message ***
claus
parents: 4
diff changeset
    36
    super initialize.
fd1b68b48422 *** empty log message ***
claus
parents: 4
diff changeset
    37
    showMatchingParenthesis := true
fd1b68b48422 *** empty log message ***
claus
parents: 4
diff changeset
    38
!
fd1b68b48422 *** empty log message ***
claus
parents: 4
diff changeset
    39
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    40
initializeMiddleButtonMenu
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    41
    |labels|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    42
6
fd1b68b48422 *** empty log message ***
claus
parents: 4
diff changeset
    43
    labels := resources array:#(
fd1b68b48422 *** empty log message ***
claus
parents: 4
diff changeset
    44
"
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    45
                               'undo'
6
fd1b68b48422 *** empty log message ***
claus
parents: 4
diff changeset
    46
"
fd1b68b48422 *** empty log message ***
claus
parents: 4
diff changeset
    47
                               'again'
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    48
                               '-'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    49
                               'copy'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    50
                               'cut'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    51
                               'paste'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    52
                               '-'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    53
                               'doIt'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    54
                               'printIt'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    55
                               'inspectIt'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    56
                               '-'
10
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
    57
                               'accept'
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    58
                               '-'
18
66bf62e27141 *** empty log message ***
claus
parents: 10
diff changeset
    59
                               'others'
10
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
    60
                               ).
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    61
10
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
    62
    self middleButtonMenu:(PopUpMenu
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    63
                                labels:labels
6
fd1b68b48422 *** empty log message ***
claus
parents: 4
diff changeset
    64
                             selectors:#(
fd1b68b48422 *** empty log message ***
claus
parents: 4
diff changeset
    65
"
fd1b68b48422 *** empty log message ***
claus
parents: 4
diff changeset
    66
                                         undo
fd1b68b48422 *** empty log message ***
claus
parents: 4
diff changeset
    67
"
fd1b68b48422 *** empty log message ***
claus
parents: 4
diff changeset
    68
                                         again
fd1b68b48422 *** empty log message ***
claus
parents: 4
diff changeset
    69
                                         nil
fd1b68b48422 *** empty log message ***
claus
parents: 4
diff changeset
    70
                                         copySelection
10
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
    71
                                         cut
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
    72
                                         paste
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
    73
                                         nil
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
    74
                                         doIt
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
    75
                                         printIt
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
    76
                                         inspectIt
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
    77
                                         nil
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
    78
                                         accept
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
    79
                                         nil
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
    80
                                         others
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
    81
                                        )
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    82
                                receiver:self
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    83
                                     for:self).
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    84
10
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
    85
    middleButtonMenu subMenuAt:#others put:(PopUpMenu
18
66bf62e27141 *** empty log message ***
claus
parents: 10
diff changeset
    86
                                labels:(resources array:#(
10
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
    87
                                         'search'
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
    88
                                         'goto'
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
    89
                                         '-'
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
    90
                                         'explain'
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
    91
                                         '-'
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
    92
                                         'font'
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
    93
                                         '-'
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
    94
                                         'indent'
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
    95
                                         '-'
18
66bf62e27141 *** empty log message ***
claus
parents: 10
diff changeset
    96
                                         'save as ...'
10
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
    97
                                         'print'
18
66bf62e27141 *** empty log message ***
claus
parents: 10
diff changeset
    98
                                        ))
10
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
    99
                              selectors:#(
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
   100
                                          search
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
   101
                                          gotoLine
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
   102
                                          nil
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
   103
                                          explain
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
   104
                                          nil
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
   105
                                          changeFont
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
   106
                                          nil
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
   107
                                          indent
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
   108
                                          nil
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
   109
                                          save
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
   110
                                          print
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
   111
                                         )
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
   112
                                receiver:self
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
   113
                                     for:self).
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   114
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   115
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   116
!CodeView methodsFor:'accessing'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   117
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   118
acceptAction:aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   119
    "set the action to be performed on accept"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   120
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   121
    acceptAction := aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   122
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   123
27
a7dd7c7528a9 *** empty log message ***
claus
parents: 18
diff changeset
   124
acceptAction
a7dd7c7528a9 *** empty log message ***
claus
parents: 18
diff changeset
   125
    "return the action to be performed on accept (or nil)"
a7dd7c7528a9 *** empty log message ***
claus
parents: 18
diff changeset
   126
a7dd7c7528a9 *** empty log message ***
claus
parents: 18
diff changeset
   127
    ^ acceptAction
a7dd7c7528a9 *** empty log message ***
claus
parents: 18
diff changeset
   128
!
a7dd7c7528a9 *** empty log message ***
claus
parents: 18
diff changeset
   129
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   130
explainAction:aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   131
    "set the action to be performed on explain"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   132
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   133
    explainAction := aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   134
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   135
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   136
!CodeView methodsFor:'selections'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   137
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   138
disableSelectionMenuEntries
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   139
    "disable relevant menu entries for a selection"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   140
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   141
    super disableSelectionMenuEntries.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   142
    middleButtonMenu disable:#explain
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   143
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   144
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   145
enableSelectionMenuEntries
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   146
    "enable relevant menu entries for a selection"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   147
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   148
    super enableSelectionMenuEntries.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   149
    middleButtonMenu enable:#explain
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   150
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   151
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   152
!CodeView methodsFor:'user actions'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   153
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   154
accept
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   155
    "accept action;
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   156
     save cursor and selection; then execute the accept-action
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   157
     and finally restore cursor and selection"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   158
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   159
    acceptAction notNil ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   160
        codeStartPosition := 1.
27
a7dd7c7528a9 *** empty log message ***
claus
parents: 18
diff changeset
   161
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   162
        abortBlock := [
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   163
            self cursor:Cursor normal.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   164
            "redraw selection in normal color"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   165
            self selectFromLine:selectionStartLine col:selectionStartCol 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   166
                         toLine:selectionEndLine col:selectionEndCol.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   167
            abortBlock := nil.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   168
            ^ nil
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   169
        ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   170
        [
27
a7dd7c7528a9 *** empty log message ***
claus
parents: 18
diff changeset
   171
            Object abortSignal catch:[
a7dd7c7528a9 *** empty log message ***
claus
parents: 18
diff changeset
   172
                acceptAction value:(self contents)
a7dd7c7528a9 *** empty log message ***
claus
parents: 18
diff changeset
   173
            ]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   174
        ] valueNowOrOnUnwindDo:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   175
            self unselect.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   176
            abortBlock := nil
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   177
        ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   178
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   179
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   180
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   181
explain
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   182
    "explain action;
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   183
     evaluate the explainBlock passing whole contents and 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   184
     selection as arguments."
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   185
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   186
    |text|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   187
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   188
    explainAction notNil ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   189
        text := self selection.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   190
        text notNil ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   191
            explainAction value:(self contents)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   192
                          value:(text asString)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   193
        ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   194
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   195
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   196
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   197
!CodeView methodsFor:'events'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   198
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   199
keyPress:key x:x y:y
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   200
    "catch keyboard shortcut: control-a for accept"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   201
10
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
   202
    (key == #Accept) ifTrue:[^ self accept].
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
   203
    (key == #Explain) ifTrue:[^ self explain].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   204
    (key == #Help) ifTrue:[^ self explain].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   205
    super keyPress:key x:x y:y
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   206
! !