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