CodeView.st
author claus
Sat, 11 Dec 1993 02:41:07 +0100
changeset 6 fd1b68b48422
parent 4 88eb91574867
child 10 a288b33897a5
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
6
fd1b68b48422 *** empty log message ***
claus
parents: 4
diff changeset
    29
$Header: /cvs/stx/stx/libwidg/CodeView.st,v 1.4 1993-12-11 01:41:07 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
                               'replace'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    53
                               '-'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    54
                               'font'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    55
                               '-'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    56
                               'search'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    57
                               'goto'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    58
                               '-'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    59
                               'indent'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    60
                               '-'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    61
                               'save'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    62
                               'print'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    63
                            "  'filein' "
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    64
                               '-'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    65
                               'doIt'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    66
                               'printIt'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    67
                               'inspectIt'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    68
                               '-'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    69
                               'explain'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    70
                               '-'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    71
                               'accept').
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    72
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    73
    self middleButtonMenu:(PopUpMenu 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    74
                                labels:labels
6
fd1b68b48422 *** empty log message ***
claus
parents: 4
diff changeset
    75
                             selectors:#(
fd1b68b48422 *** empty log message ***
claus
parents: 4
diff changeset
    76
"
fd1b68b48422 *** empty log message ***
claus
parents: 4
diff changeset
    77
                                         undo
fd1b68b48422 *** empty log message ***
claus
parents: 4
diff changeset
    78
"
fd1b68b48422 *** empty log message ***
claus
parents: 4
diff changeset
    79
                                         again
fd1b68b48422 *** empty log message ***
claus
parents: 4
diff changeset
    80
                                         nil
fd1b68b48422 *** empty log message ***
claus
parents: 4
diff changeset
    81
                                         copySelection
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    82
                                         cut 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    83
                                         paste 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    84
                                         replace
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    85
                                         nil 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    86
                                         changeFont
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    87
                                         nil 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    88
                                         search
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    89
                                         gotoLine
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    90
                                         nil 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    91
                                         indent
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    92
                                         nil 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    93
                                         save
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    94
                                         print
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    95
                                       "  fileItIn "
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    96
                                         nil 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    97
                                         doIt 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    98
                                         printIt 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    99
                                         inspectIt 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   100
                                         nil 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   101
                                         explain
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   102
                                         nil 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   103
                                         accept)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   104
                                receiver:self
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   105
                                     for:self).
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   106
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   107
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   108
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   109
!CodeView methodsFor:'accessing'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   110
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   111
acceptAction:aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   112
    "set the action to be performed on accept"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   113
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   114
    acceptAction := aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   115
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   116
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   117
explainAction:aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   118
    "set the action to be performed on explain"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   119
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   120
    explainAction := aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   121
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   122
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   123
!CodeView methodsFor:'selections'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   124
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   125
disableSelectionMenuEntries
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   126
    "disable relevant menu entries for a selection"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   127
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   128
    super disableSelectionMenuEntries.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   129
    middleButtonMenu disable:#explain
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   130
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   131
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   132
enableSelectionMenuEntries
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   133
    "enable relevant menu entries for a selection"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   134
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   135
    super enableSelectionMenuEntries.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   136
    middleButtonMenu enable:#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
!CodeView methodsFor:'user actions'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   140
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   141
accept
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   142
    "accept action;
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   143
     save cursor and selection; then execute the accept-action
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   144
     and finally restore cursor and selection"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   145
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   146
    acceptAction notNil ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   147
        codeStartPosition := 1.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   148
"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   149
        self cursor:Cursor wait.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   150
"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   151
        abortBlock := [
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   152
            self cursor:Cursor normal.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   153
            "redraw selection in normal color"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   154
            self selectFromLine:selectionStartLine col:selectionStartCol 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   155
                         toLine:selectionEndLine col:selectionEndCol.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   156
            abortBlock := nil.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   157
            ^ nil
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   158
        ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   159
        [
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   160
            acceptAction value:(self contents)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   161
        ] valueNowOrOnUnwindDo:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   162
"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   163
            self cursor:Cursor normal.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   164
"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   165
            self unselect.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   166
            abortBlock := nil
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   167
        ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   168
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   169
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   170
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   171
explain
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   172
    "explain action;
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   173
     evaluate the explainBlock passing whole contents and 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   174
     selection as arguments."
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   175
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   176
    |text|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   177
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   178
    explainAction notNil ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   179
        text := self selection.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   180
        text notNil ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   181
            explainAction value:(self contents)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   182
                          value:(text asString)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   183
        ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   184
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   185
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   186
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   187
!CodeView methodsFor:'events'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   188
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   189
keyPress:key x:x y:y
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   190
    "catch keyboard shortcut: control-a for accept"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   191
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   192
    (key == #Cmda) ifTrue:[^ self accept].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   193
    (key == #Cmde) ifTrue:[^ self explain].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   194
    (key == #Help) ifTrue:[^ self explain].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   195
    super keyPress:key x:x y:y
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   196
! !