CodeView.st
author claus
Sat, 08 Jan 1994 18:22:54 +0100
changeset 18 66bf62e27141
parent 10 a288b33897a5
child 27 a7dd7c7528a9
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
18
66bf62e27141 *** empty log message ***
claus
parents: 10
diff changeset
    29
$Header: /cvs/stx/stx/libwidg/CodeView.st,v 1.6 1994-01-08 17:22:54 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
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   124
explainAction:aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   125
    "set the action to be performed on explain"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   126
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   127
    explainAction := aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   128
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   129
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   130
!CodeView methodsFor:'selections'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   131
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   132
disableSelectionMenuEntries
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   133
    "disable relevant menu entries for a selection"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   134
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   135
    super disableSelectionMenuEntries.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   136
    middleButtonMenu disable:#explain
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   137
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   138
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   139
enableSelectionMenuEntries
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   140
    "enable relevant menu entries for a selection"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   141
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   142
    super enableSelectionMenuEntries.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   143
    middleButtonMenu enable:#explain
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   144
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   145
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   146
!CodeView methodsFor:'user actions'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   147
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   148
accept
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   149
    "accept action;
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   150
     save cursor and selection; then execute the accept-action
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   151
     and finally restore cursor and selection"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   152
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   153
    acceptAction notNil ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   154
        codeStartPosition := 1.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   155
"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   156
        self cursor:Cursor wait.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   157
"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   158
        abortBlock := [
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   159
            self cursor:Cursor normal.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   160
            "redraw selection in normal color"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   161
            self selectFromLine:selectionStartLine col:selectionStartCol 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   162
                         toLine:selectionEndLine col:selectionEndCol.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   163
            abortBlock := nil.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   164
            ^ nil
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   165
        ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   166
        [
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   167
            acceptAction value:(self contents)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   168
        ] valueNowOrOnUnwindDo:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   169
"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   170
            self cursor:Cursor normal.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   171
"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   172
            self unselect.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   173
            abortBlock := nil
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   174
        ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   175
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   176
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   177
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   178
explain
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   179
    "explain action;
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   180
     evaluate the explainBlock passing whole contents and 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   181
     selection as arguments."
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   182
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   183
    |text|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   184
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   185
    explainAction notNil ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   186
        text := self selection.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   187
        text notNil ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   188
            explainAction value:(self contents)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   189
                          value:(text asString)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   190
        ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   191
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   192
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   193
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   194
!CodeView methodsFor:'events'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   195
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   196
keyPress:key x:x y:y
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   197
    "catch keyboard shortcut: control-a for accept"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   198
10
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
   199
    (key == #Accept) ifTrue:[^ self accept].
a288b33897a5 *** empty log message ***
claus
parents: 6
diff changeset
   200
    (key == #Explain) ifTrue:[^ self explain].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   201
    (key == #Help) ifTrue:[^ self explain].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   202
    super keyPress:key x:x y:y
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   203
! !