GuiServerWorkstation.st
author Claus Gittinger <cg@exept.de>
Sun, 03 Aug 2014 14:44:13 +0200
changeset 6561 5a0656be2773
child 6886 572d6caea52a
permissions -rw-r--r--
initial checkin
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6561
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
COPYRIGHT (c) 2014 by Claus Gittinger
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
              All Rights Reserved
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
 This software is furnished under a license and may be used
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
 hereby transferred.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
"{ Package: 'stx:libview' }"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
DeviceWorkstation subclass:#GuiServerWorkstation
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
	instanceVariableNames:'guiServerPid out in connectionTimeout
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
		connectionTimeoutForWindowCreation hasConnectionBroken
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
		dispatchingExpose buttonsPressed displayName listOfFonts fontMap
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
		viewMap nextId useExtraCanvas answerSemaphore accessLock
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
		useNativeWidgets'
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	classVariableNames:'DefaultConnectionTimeout
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
		DefaultConnectionTimeoutForWindowCreation KeyPressMask
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
		KeyReleaseMask ButtonPressMask ButtonReleaseMask ButtonMotionMask
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
		PointerMotionMask ExposureMask FocusChangeMask EnterWindowMask
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
		LeaveWindowMask KeymapStateMask VisibilityChangeMask
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
		StructureNotifyMask ResizeRedirectMask PropertyChangeMask
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
		ColormapChangeMask SubstructureNotifyMask
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
		SubstructureRedirectMask'
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
	poolDictionaries:''
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
	category:'Interface-Graphics'
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
!GuiServerWorkstation class methodsFor:'documentation'!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
copyright
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
COPYRIGHT (c) 2014 by Claus Gittinger
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
              All Rights Reserved
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
 This software is furnished under a license and may be used
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
 only in accordance with the terms of that license and with the
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
 inclusion of the above copyright notice.   This software may not
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
 be provided or otherwise made available to, or used by, any
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
 other person.  No title to or ownership of the software is
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
 hereby transferred.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
documentation
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
    This is an experimental UI interface, not yet ready for general use.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
    This class provides the interface to the GUIServer. 
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
    It redefines all required methods from DeviceWorkstation.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
    The GUIServer is a little Java program, which provides a socket interface,
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
    allowing for GUI operations to be sent and events to be received.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
    Thus providing a platform independent, portable and nice looking GUI interface alternative.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
    [author:]
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
        Claus Gittinger
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
example
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
     Smalltalk at:#D2 put:(self new initializeFor:nil).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
     Smalltalk at:#D2 put:(self new initializeFor:'localhost:47020')
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
     D2 startDispatch.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
     (View onDevice:D2) open.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
     (Button onDevice:D2) label:'Hello'; open.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
     |v b1 b2|
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
     v := View onDevice:D2.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
     v extent:200@200.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
     b1 := Button label:'Press Me' in:v. b1 extent:100@50.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
     b2 := Button label:'Me Too' in:v. b2 extent:100@50.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
     b2 top:60.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
     b1 action:[ Transcript showCR:'b1 pressed'. b1 extent:150@40].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
     b2 action:[ Transcript showCR:'b2 pressed'].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
     v open.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
     v inspect.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
     (SystemBrowser onDevice:D2) open
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
example1
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
     |v b1 b2|
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
     Smalltalk at:#D2 put:(self new initializeFor:nil).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
     D2 startDispatch.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
     v := View onDevice:D2.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
     v extent:200@200.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
     b1 := Button label:'Press Me' in:v. b1 extent:100@50.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
     b2 := Button label:'Me Too' in:v. b2 extent:100@50.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
     b2 top:60.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
     b1 action:[ Transcript showCR:'b1 pressed'. b1 extent:150@40].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
     b2 action:[ Transcript showCR:'b2 pressed'].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
     v open.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
example1b
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
     |v b1 b2|
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
     Smalltalk at:#D2 put:(self new initializeFor:nil).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
     D2 startDispatch.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
     v := View onDevice:D2.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
     v extent:200@200.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
     v open.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
     Delay waitForSeconds:2.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
     v displayString:'hello' x:10 y:20.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
example2
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
     |v v1 v2 v3|
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
     Smalltalk at:#D2 put:(self new initializeFor:nil).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
     D2 startDispatch.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
     v := View onDevice:D2.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
     v extent:200@220.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
     v1 := View in:v. 
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
     v1 origin:5@5 corner:95@95.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
     v1 viewBackground:Color red.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
     v2 := View in:v. 
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
     v2 origin:100@5 corner:195@95.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
     v2 viewBackground:Color green.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
     v3 := View in:v. 
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
     v3 origin:5@100 corner:95@195.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
     v3 viewBackground:Color blue.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
     v open
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
example3
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
    |v v1 |
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
    Smalltalk at:#D2 put:(self new initializeFor:nil).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
    D2 startDispatch.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
    v := View onDevice:D2.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
    v extent:200@220.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
    v1 := ScrollBar in:v. 
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
    v1 origin:5@5 corner:25@1.0.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
    v1 viewBackground:Color red.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
    v open
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
example3b
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
    |v v1 v2|
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
    Smalltalk at:#D2 put:(self new initializeFor:nil).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
    D2 startDispatch.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
    v := View onDevice:D2.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
    v extent:200@220.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
    v1 := ScrollBar in:v. 
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
    v1 origin:5@5 corner:25@1.0.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
    v2 := HorizontalScrollBar in:v. 
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
    v2 origin:25@5 corner:1.0@25.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
    v open
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
example4
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
    |v v1 r1 r2 if c1 grp chk tm|
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
    Smalltalk at:#D2 put:(self new initializeFor:nil).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
    D2 startDispatch.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
    v := View onDevice:D2.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
    v extent:200@220.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
    v1 := Label label:'label' in:v. 
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
    v1 origin:5@5 corner:125@25.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
    grp := RadioButtonGroup new.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
    r1 := RadioButton label:'radio 1' in:v. 
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
    r1 origin:5@25 corner:1.0@50.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
    grp add:r1 value:1.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
    r2 := RadioButton label:'radio 2' in:v. 
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
    r2 origin:5@50 corner:1.0@75.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
    grp add:r2 value:2.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
    grp onChangeEvaluate:[ Transcript showCR:'changed'].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
    r2 := RadioButton label:'radio 2' in:v. 
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
    r2 origin:5@50 corner:1.0@75.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
    grp add:r2 value:2.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
    grp onChangeEvaluate:[ Transcript showCR:'changed'].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
    chk := false asValue.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
    c1 := CheckBox label:'check' in:v. 
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
    c1 origin:5@75 corner:1.0@100.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
    c1 model:chk.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
    chk onChangeEvaluate:[ Transcript showCR:'changed'].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   224
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   225
    tm := 'hello' asValue.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
    if := EditField in:v.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
    if viewBackground:(Color yellow lightened).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
    if origin:5@100 corner:1.0@125.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
    if model:tm.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
    ' if passwordCharacter:$* '.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
    tm onChangeEvaluate:[ Transcript showCR:'changed'].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
    v open
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
example5
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
    |v v1 r1 r2 v3 c1 grp chk|
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
    Smalltalk at:#D2 put:(self new initializeFor:nil).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
    D2 startDispatch.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   244
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   245
    v := View onDevice:D2.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
    v extent:200@220.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   247
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
    v1 := TextView in:v.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
    v1 viewBackground:Color red.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
    v1 origin:5@5 corner:1.0@1.0.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
    v1 contents:'line1
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   252
line2
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
line3'.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
    v1 textChanged.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
    v open
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   259
example5b
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   261
    |v v1 v2 v3|
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   262
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
    Smalltalk at:#D2 put:(self new initializeFor:nil).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
    D2 startDispatch.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
    v := View onDevice:D2.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   268
    v extent:200@220.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
    v viewBackground:Color yellow.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   271
    v1 := View in:v.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   272
    v1 extent:180@180.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   273
    v1 viewBackground:Color green.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   275
    v2 := SelectionInListView in:v1.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   276
    v2 viewBackground:Color red.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
    v2 origin:5@5 corner:100@100.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   278
    v2 list:#('line1' 'line2' 'line3').
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   279
    v open.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   280
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   281
    Delay waitForSeconds:2.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   282
    D2 send:'set-visible ',v2 id,' true'.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   283
    D2 send:'set-bounds ',v2 id,' 10 10 50 50'.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   284
"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   285
! !
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   286
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   287
!GuiServerWorkstation class methodsFor:'class initialization'!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   288
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   289
initialize
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   290
    KeyPressMask := 16r01.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   291
    KeyReleaseMask := 16r02.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   292
    ButtonPressMask := 16r04.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   293
    ButtonReleaseMask := 16r08.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   294
    ButtonMotionMask := 16r10.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   295
    PointerMotionMask := 16r20.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   296
    ExposureMask := 16r40.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   297
    FocusChangeMask := 16r80.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   298
    EnterWindowMask := 16r100.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   299
    LeaveWindowMask := 16r200.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   300
    KeymapStateMask := 16r400.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   301
    VisibilityChangeMask := 16r800.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   302
    StructureNotifyMask := 16r1000.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   303
    ResizeRedirectMask := 16r2000.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   304
    PropertyChangeMask := 16r4000.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   305
    ColormapChangeMask := 16r8000.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   306
    SubstructureNotifyMask := 16r10000.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   307
    SubstructureRedirectMask := 16r20000.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   308
! !
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   309
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   310
!GuiServerWorkstation class methodsFor:'defaults'!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   311
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   312
defaultGUIServerPath
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   313
    ^ Smalltalk projectDirectory constructString:'../support/guiServer/guiserver.jar'    
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   314
"/  ^ '/Users/cg/Downloads/languages/lisp/newLisp/newlisp-10.6.0/guiserver/guiserver.jar'.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   315
"/    ^ self projectDirectory constructString:'guiserver.jar'
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   316
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   317
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   318
defaultGUIServerPort
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   319
    ^ 47011
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   320
! !
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   321
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   322
!GuiServerWorkstation methodsFor:'bitmap/window creation'!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   323
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   324
createBitmapFromArray:data width:w height:h
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   325
    "create a monochrome, depth1 bitmap from a given (byte-)array.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   326
     The rows are aligned to a multiple of 8"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   327
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   328
    "/ for now, just return a dummy id...
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   329
    ^ 4711
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   330
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   331
    "/ todo: save as png and use that path in the future...
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   332
"/    self halt.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   333
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   334
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   335
createWindowFor:aView type:typeSymbol origin:org extent:ext
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   336
        minExtent:minE maxExtent:maxE borderWidth:bw subViewOf:sv
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   337
        style:styleSymbol inputOnly:inp
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   338
        label:label owner:owner
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   339
        icon:icn iconMask:icnM iconView:icnV
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   340
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   341
    |nr id nativeWindowType x y w h containerId|
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   342
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   343
    nr := nextId.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   344
    nextId := nextId + 1.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   345
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   346
    useNativeWidgets ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   347
        nativeWindowType := aView nativeWindowType.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   348
    ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   349
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   350
    x := org x.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   351
    y := org y.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   352
    w := ext x.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   353
    h := ext y.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   354
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   355
    id := '%1_%2' bindWith:aView class nameWithoutPrefix with:nr.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   356
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   357
    sv isNil ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   358
        self gs_frame:id x:org x y:org y width:w height:h label:'x' visible:false.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   359
        "/ self send:('canvas ','canvas_',id).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   360
        useExtraCanvas ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   361
            self send:('canvas ','canvas_',id).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   362
            self send:('add-to ',id,' canvas_',id).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   363
            self send:('set-visible ','canvas_',id,' true').
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   364
            self send:('set-null-layout ','canvas_',id).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   365
        ] ifFalse:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   366
            self send:('set-null-layout ',id).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   367
        ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   368
    ] ifFalse:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   369
        containerId := sv id.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   370
        useExtraCanvas ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   371
            sv superView isNil ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   372
                containerId := 'canvas_',containerId
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   373
            ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   374
        ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   375
        nativeWindowType notNil ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   376
            nativeWindowType == #Button ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   377
                self send:('button ',id,' button-action ',(Base64Coder encode:aView label),' ',x printString,' ',y printString)
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   378
                "/ (gs:set-flow-layout 'ButtonDemo "center" 2 15)
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   379
                "/ (gs:add-to 'ButtonDemo 'ColorPanel 'aButton)
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   380
            ] ifFalse:[ nativeWindowType == #VerticalScrollBar ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   381
                "/ action orientation minPos maxPos pos pageIncrement
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   382
                self send:('scrollbar ',id,' scrollbar-action vertical 0 100 0 10')
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   383
            ] ifFalse:[ nativeWindowType == #HorizontalScrollBar ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   384
                "/ action orientation minPos maxPos pos pageIncrement
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   385
                self send:('scrollbar ',id,' scrollbar-action horizontal 0 100 0 10')
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   386
            ] ifFalse:[ nativeWindowType == #Label ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   387
                "/ "left", "center", "right", "leading", "trailing", "bottom" and "top"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   388
                self send:('label ',id,' ',(Base64Coder encode:aView label),' center ',w printString,' ',h printString).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   389
            ] ifFalse:[ nativeWindowType == #RadioButton ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   390
                self send:('radio-button ',id,' radio-button-action ',(Base64Coder encode:aView label),' ',(aView isOn printString)).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   391
            ] ifFalse:[ nativeWindowType == #CheckBox ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   392
                self send:('check-box ',id,' check-box-action ',(Base64Coder encode:aView label),' ',(aView isOn printString)).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   393
            ] ifFalse:[ nativeWindowType == #EditField ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   394
                aView passwordCharacter notNil ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   395
                    self send:('text-field ',id,' text-field-action ',(aView maxChars ? 9999) printString,' ',(Base64Coder encode:aView passwordCharacter asString)).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   396
                ] ifFalse:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   397
                    self send:('text-field ',id,' text-field-action ',(aView maxChars ? 9999) printString).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   398
                ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   399
                self changeText:(aView contents asString) in:id.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   400
            ] ifFalse:[ nativeWindowType == #TextView ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   401
                self send:('text-area ',id,' text-area-action ',w printString,' ',h printString).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   402
                self changeText:(aView contents) in:id.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   403
            ] ifFalse:[ nativeWindowType == #SelectionInListView ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   404
                self send:('list-box ',id,' list-box-action ',((aView list collect:[:l | (Base64Coder encode:l?'')]) asStringCollection asStringWith:' ')).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   405
                "/ self changeList:aView list in:id.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   406
            ] ifFalse:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   407
self halt.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   408
                self send:('canvas ',id)
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   409
            ]]]]]]]]].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   410
        ] ifFalse:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   411
            self send:('canvas ',id)
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   412
        ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   413
        self send:('add-to ',containerId,' ',id).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   414
        self send:('set-visible ',id,' true').
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   415
        self send:('set-null-layout ',id).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   416
        self send:('set-bounds ',id,' %1 %2 %3 %4' bindWith:x with:y with:w with:h).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   417
    ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   418
    viewMap at:id put:aView.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   419
    ^ id
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   420
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   421
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   422
destroyGC:gcId
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   423
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   424
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   425
destroyPixmap:pixmapId
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   426
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   427
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   428
destroyView:aView withId:id
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   429
    |container|
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   430
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   431
    container := aView superView.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   432
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   433
    viewMap removeKey:id ifAbsent:[].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   434
    container isNil ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   435
        self send:('dispose ',id)
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   436
    ] ifFalse:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   437
        (useExtraCanvas and:[container superView isNil]) ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   438
            self send:('remove-from canvas_',container id,' ',id)
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   439
        ] ifFalse:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   440
            self send:('remove-from ',container id,' ',id)
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   441
        ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   442
    ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   443
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   444
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   445
supportsNativeWidgetType:aWidgetTypeSymbol
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   446
    useNativeWidgets ifFalse:[^ false].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   447
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   448
    aWidgetTypeSymbol == #Button ifTrue:[^ true].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   449
    aWidgetTypeSymbol == #Scrollbar ifTrue:[^ true].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   450
    aWidgetTypeSymbol == #Label ifTrue:[^ true].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   451
    aWidgetTypeSymbol == #Toggle ifTrue:[^ true].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   452
    aWidgetTypeSymbol == #ScrolledView ifTrue:[^ true].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   453
    aWidgetTypeSymbol == #CheckBox ifTrue:[^ true].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   454
    aWidgetTypeSymbol == #RadioButton ifTrue:[^ true].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   455
    aWidgetTypeSymbol == #ComboBox ifTrue:[^ true].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   456
    aWidgetTypeSymbol == #Slider ifTrue:[^ true].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   457
    aWidgetTypeSymbol == #ProgressBar ifTrue:[^ true].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   458
    aWidgetTypeSymbol == #ListBox ifTrue:[^ true].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   459
    aWidgetTypeSymbol == #EditField ifTrue:[^ true].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   460
    aWidgetTypeSymbol == #TextView ifTrue:[^ true].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   461
    aWidgetTypeSymbol == #Menu ifTrue:[^ true].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   462
    aWidgetTypeSymbol == #MenuBar ifTrue:[^ true].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   463
    aWidgetTypeSymbol == #Table ifTrue:[^ true].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   464
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   465
    ^ false
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   466
! !
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   467
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   468
!GuiServerWorkstation methodsFor:'cursor stuff'!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   469
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   470
builtInCursorShapes
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   471
    "return a collection of standard cursor names.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   472
     Those are built into the XServer and need not be created as
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   473
     user cursors.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   474
     (actually, there are more than those below ...)"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   475
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   476
    "/ if you add something here, also add to #shapeNumberFromCursor ...
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   477
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   478
    ^ #(
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   479
        #upLeftArrow            "/ default
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   480
        #upRightHand            "/ hand
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   481
        #text                   "/ text
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   482
        #wait                   "/ wait
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   483
        #crossHair              "/ crosshair
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   484
        #origin                 "/ nw-resize
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   485
        #topLeft                "/ nw-resize
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   486
        #corner                 "/ se-resize
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   487
        #bottomRight            "/ se-resize
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   488
        #topRight               "/ ne-resize
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   489
        #bottomLeft             "/ sw-resize
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   490
      )
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   491
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   492
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   493
createCursorShape:aShapeSymbol
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   494
    |cursors i|
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   495
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   496
    cursors := #(
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   497
        (#upLeftArrow            #default      )
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   498
        (#upRightHand            #hand         )
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   499
        (#text                   #text         )
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   500
        (#wait                   #wait         )
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   501
        (#crossHair              #crosshair    )
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   502
        (#origin                 #nw-resize    )
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   503
        (#topLeft                #nw-resize    )
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   504
        (#corner                 #se-resize    )
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   505
        (#bottomRight            #se-resize    )
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   506
        (#topRight               #ne-resize    )
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   507
        (#bottomLeft             #sw-resize    )
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   508
      ).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   509
      i := cursors findFirst:[:entry | entry first == aShapeSymbol].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   510
      i == 0 ifTrue:[^ nil].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   511
      ^ (cursors at:i) second
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   512
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   513
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   514
destroyCursor:aCursorId 
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   515
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   516
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   517
setCursor:aCursorId in:aWindowId
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   518
    "/    ;; @syntax (gs:set-cursor <sym-id> <str-shape>)
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   519
    "/    ;; @param <sym-id> The name of the frame, dialog or window.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   520
    "/    ;; @param <str-shape> The string describing the cursor shape.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   521
    "/    ;;
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   522
    "/    ;; The cursor shape can be one of the following:
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   523
    "/    ;; <pre>
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   524
    "/    ;;  "default"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   525
    "/    ;;  "crosshair"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   526
    "/    ;;  "text"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   527
    "/    ;;  "wait"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   528
    "/    ;;  "sw-resize"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   529
    "/    ;;  "se-resize"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   530
    "/    ;;  "nw-resize"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   531
    "/    ;;  "ne-resize"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   532
    "/    ;;  "n-resize"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   533
    "/    ;;  "s-resize"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   534
    "/    ;;  "w-resize"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   535
    "/    ;;  "e-resize"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   536
    "/    ;;  "hand"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   537
    "/    ;;  "move"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   538
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   539
    self gs_set_cursor:aWindowId cursor:aCursorId
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   540
! !
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   541
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   542
!GuiServerWorkstation methodsFor:'event handling'!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   543
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   544
addToKnownScreens
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   545
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   546
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   547
base64StringFromLineStream:s
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   548
    |str|
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   549
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   550
    str := s upToAny:')( '.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   551
    (str first = $") ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   552
        str := str withoutQuotes.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   553
    ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   554
    ^ (Base64Coder decodeAsString:str) 
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   555
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   556
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   557
defaultEventMask
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   558
    ^ ExposureMask | StructureNotifyMask |
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   559
      KeyPressMask | KeyReleaseMask |
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   560
      PointerMotionMask |
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   561
      EnterWindowMask | LeaveWindowMask |
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   562
      ButtonPressMask | ButtonMotionMask | ButtonReleaseMask |
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   563
      PropertyChangeMask 
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   564
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   565
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   566
dispatchEventFor:aViewIdOrNil withMask:eventMask
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   567
    "central event handling method:
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   568
     get next event and send appropriate message to the sensor or view.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   569
     If the argument aViewIdOrNil is nil, events for any view are processed,
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   570
     otherwise only events for the view with given id are processed.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   571
     If the argument aMask is nonNil, only events for this eventMask are
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   572
     handled.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   573
     WARNING: this may block to wait for an event - you better check for a
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   574
              pending event before calling this."
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   575
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   576
    |line|
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   577
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   578
    EndOfStreamNotification handle:[:ex |
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   579
    ] do:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   580
        line := in nextLine.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   581
    ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   582
    line isNil ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   583
        hasConnectionBroken := true.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   584
        self brokenConnection.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   585
        ^ self.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   586
    ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   587
    self handleInput:line.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   588
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   589
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   590
eventMaskFor:anEventSymbol
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   591
    "return the eventMask bit-constant corresponding to an event symbol"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   592
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   593
    anEventSymbol == #keyPress ifTrue:[^ KeyPressMask].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   594
    anEventSymbol == #keyRelease ifTrue:[^ KeyReleaseMask].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   595
    anEventSymbol == #buttonPress ifTrue:[^ ButtonPressMask].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   596
    anEventSymbol == #buttonRelease ifTrue:[^ ButtonReleaseMask].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   597
    anEventSymbol == #buttonMotion ifTrue:[^ ButtonMotionMask].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   598
    anEventSymbol == #pointerMotion ifTrue:[^ PointerMotionMask].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   599
    anEventSymbol == #expose ifTrue:[^ ExposureMask].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   600
    anEventSymbol == #focusChange ifTrue:[^ FocusChangeMask].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   601
    anEventSymbol == #enter ifTrue:[^ EnterWindowMask].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   602
    anEventSymbol == #leave ifTrue:[^ LeaveWindowMask].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   603
    anEventSymbol == #keymapState ifTrue:[^ KeymapStateMask].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   604
    anEventSymbol == #visibilityChange ifTrue:[^ VisibilityChangeMask].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   605
    anEventSymbol == #structureNotify ifTrue:[^ StructureNotifyMask].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   606
    anEventSymbol == #resizeRedirect ifTrue:[^ ResizeRedirectMask].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   607
    anEventSymbol == #propertyChange ifTrue:[^ PropertyChangeMask].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   608
    anEventSymbol == #colormapChange ifTrue:[^ ColormapChangeMask].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   609
    anEventSymbol == #substructureNotify ifTrue:[^ SubstructureNotifyMask].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   610
    anEventSymbol == #substructureRedirect ifTrue:[^ SubstructureRedirectMask].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   611
    ^ 0
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   612
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   613
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   614
eventPending
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   615
    ^ in notNil
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   616
    and:[ in isOpen
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   617
    and:[ in canReadWithoutBlocking ]]
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   618
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   619
    "
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   620
     self new initializeFor:nil
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   621
    "
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   622
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   623
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   624
handleInput:line
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   625
    "handle an incoming event from the guiServer"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   626
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   627
    |s cmd var view text|
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   628
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   629
    "/ gui server sends lisp-like lines:
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   630
    "/  (action id)
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   631
    "/  ...
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   632
Transcript showCR:'<< ',line.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   633
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   634
    s := line readStream.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   635
    s next == $( ifFalse:[^ false ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   636
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   637
    s skipSeparators.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   638
    cmd := s upToAny:'")( '.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   639
    s skipSeparators.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   640
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   641
    cmd = 'button-action' ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   642
        view := self viewFromLineStream:s.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   643
Transcript showCR:view.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   644
Transcript showCR:view isNativeWidget.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   645
        self buttonPress:1 x:1 y:1 view:view.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   646
        self buttonRelease:1 x:1 y:1 view:view.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   647
        ^ true.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   648
    ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   649
    cmd = 'radio-button-action' ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   650
        view := self viewFromLineStream:s.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   651
Transcript showCR:view.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   652
Transcript showCR:view isNativeWidget.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   653
        self buttonPress:1 x:1 y:1 view:view.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   654
        self buttonRelease:1 x:1 y:1 view:view.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   655
        ^ true.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   656
    ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   657
    cmd = 'check-box-action' ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   658
        view := self viewFromLineStream:s.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   659
Transcript showCR:view.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   660
Transcript showCR:view isNativeWidget.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   661
        self buttonPress:1 x:1 y:1 view:view.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   662
        self buttonRelease:1 x:1 y:1 view:view.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   663
        ^ true.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   664
    ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   665
    cmd = 'scrollbar-action' ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   666
        view := self viewFromLineStream:s.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   667
Transcript showCR:view.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   668
Transcript showCR:view isNativeWidget.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   669
        ^ true.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   670
    ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   671
    cmd = 'text-field-action' ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   672
        view := self viewFromLineStream:s.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   673
        text := self base64StringFromLineStream:s.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   674
Transcript showCR:view.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   675
Transcript showCR:view isNativeWidget.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   676
Transcript showCR:text.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   677
        ^ true.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   678
    ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   679
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   680
    cmd = 'set' ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   681
        var := s upToAny:')( '.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   682
        s skipSeparators.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   683
        var first == $' ifTrue:[ var := var copyFrom:2 ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   684
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   685
        var = 'gs:screen' ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   686
            s peek == $' ifTrue:[ s next ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   687
            s peek ~~ $( ifTrue:[ self halt].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   688
            s next.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   689
            width := (Number readFrom:s) asInteger.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   690
            s skipSeparators.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   691
            height := (Number readFrom:s) asInteger.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   692
            s skipSeparators.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   693
            resolutionHor := resolutionVer := (Number readFrom:s) asInteger "is dpi" / 25.4.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   694
            widthMM := width / resolutionHor.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   695
            heightMM := height / resolutionVer.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   696
            "/ self halt.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   697
            ^ true.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   698
        ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   699
    ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   700
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   701
    self halt.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   702
    ^ false.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   703
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   704
    "
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   705
     self new initializeFor:nil
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   706
    "
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   707
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   708
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   709
setEventMask:mask in:viewID
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   710
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   711
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   712
viewFromLineStream:s
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   713
    |id|
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   714
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   715
    id := s upToAny:')( '.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   716
    (id first = $") ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   717
        id := id withoutQuotes.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   718
    ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   719
    ^ viewMap at:id ifAbsent:nil.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   720
! !
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   721
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   722
!GuiServerWorkstation methodsFor:'font stuff'!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   723
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   724
ascentOf:id
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   725
    ^ 16
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   726
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   727
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   728
descentOf:id
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   729
    ^ 8
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   730
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   731
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   732
getFontWithFamily:familyString face:faceString style:styleString size:sizeArg sizeUnit:sizeUnit encoding:encodingSym
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   733
    |nm id|
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   734
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   735
    nm := familyString,'-',faceString,'-',styleString,'-',sizeArg printString.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   736
    id := (fontMap size // 2) + 1.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   737
    fontMap at:nm put:id.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   738
    fontMap at:id put:nm.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   739
    ^ id
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   740
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   741
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   742
maxAscentOf:id
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   743
    ^ 16
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   744
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   745
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   746
maxDescentOf:id
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   747
    ^ 8
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   748
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   749
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   750
maxWidthOfFont:id
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   751
    ^ 10
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   752
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   753
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   754
minWidthOfFont:id
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   755
    ^ 10
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   756
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   757
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   758
subclassResponsibility
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   759
    MiniDebugger enter.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   760
    AbortSignal raise
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   761
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   762
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   763
widthOf:aString from:index1 to:index2 inFont:aFontId
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   764
    ^ (index2-index1+1) * 10
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   765
! !
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   766
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   767
!GuiServerWorkstation methodsFor:'gs interaction'!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   768
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   769
gs_frame:id x:x y:y width:w height:h label:label visible:visible
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   770
    label isNil ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   771
        self send:('frame %1 %2 %3 %4' 
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   772
                    bindWith:id with:x with:y with:w with:h)
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   773
    ] ifFalse:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   774
        self send:('frame %1 %2 %3 %4 %5 %6' 
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   775
                    bindWith:id with:x with:y with:w with:h
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   776
                        with:(Base64Coder encode:label) with:visible)
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   777
    ]
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   778
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   779
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   780
gs_set_background:id color:colorId
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   781
    self gs_set_color:id color:colorId
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   782
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   783
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   784
gs_set_background:id r:redFraction g:greenFraction b:blueFraction alpha:alphaFraction
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   785
    self gs_set_color:id r:redFraction g:greenFraction b:blueFraction alpha:alphaFraction
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   786
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   787
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   788
gs_set_color:id color:colorId
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   789
    self gs_set_color:id     
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   790
            r:(((colorId rightShift:16) bitAnd:16rFF) / 255.0) 
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   791
            g:(((colorId rightShift:8) bitAnd:16rFF) / 255.0) 
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   792
            b:((colorId bitAnd:16rFF) / 255.0) 
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   793
            alpha:1
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   794
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   795
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   796
gs_set_color:id r:redFraction g:greenFraction b:blueFraction alpha:alphaFraction
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   797
    self send:('set-color %1 %2 %3 %4 %5' 
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   798
            bindWith:id 
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   799
                with:redFraction
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   800
                with:greenFraction
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   801
                with:blueFraction
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   802
                with:alphaFraction)
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   803
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   804
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   805
gs_set_cursor:id cursor:cursorId
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   806
    self send:('set-cursor ',id,' ',cursorId) 
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   807
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   808
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   809
gs_set_foreground:id r:redFraction g:greenFraction b:blueFraction alpha:alphaFraction
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   810
    self send:('set-foreground %1 %2 %3 %4 %5' 
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   811
            bindWith:id 
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   812
                with:redFraction
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   813
                with:greenFraction
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   814
                with:blueFraction
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   815
                with:alphaFraction)
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   816
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   817
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   818
gs_set_resizable:id resizable:aBoolean
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   819
    self send:'set-resizable %1 %2' with:id with:aBoolean
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   820
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   821
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   822
gs_set_trace:aBoolean
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   823
    self send:'set-trace System %1' with:aBoolean
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   824
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   825
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   826
gs_set_utf8:aBoolean
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   827
    self send:'set-utf8 System %1' with:aBoolean
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   828
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   829
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   830
gs_set_visible:id visible:visible
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   831
    self send:('set-visible ',id,' ',visible printString) 
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   832
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   833
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   834
send:cmdString
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   835
    out isNil ifTrue:[^ self].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   836
    out nextPutLine:cmdString
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   837
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   838
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   839
send:cmd with:arg
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   840
    self send:(cmd bindWith:arg)
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   841
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   842
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   843
send:cmd with:arg1 with:arg2
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   844
    self send:(cmd bindWith:arg1 with:arg2)
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   845
! !
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   846
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   847
!GuiServerWorkstation methodsFor:'initialization & release'!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   848
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   849
closeConnection
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   850
    |c p|
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   851
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   852
    (c := in) notNil ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   853
        in := nil.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   854
        c close.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   855
    ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   856
    (c := out) notNil ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   857
        out := nil.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   858
        c close.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   859
    ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   860
    (p := guiServerPid) notNil ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   861
        guiServerPid := nil.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   862
        OperatingSystem terminateProcess:p
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   863
    ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   864
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   865
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   866
guiServerTerminated
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   867
    "connection to GUIServer broken"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   868
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   869
    |c|
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   870
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   871
    Transcript showCR:'guiServer terminated'.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   872
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   873
    (c := in) notNil ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   874
        in := nil.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   875
        c close.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   876
    ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   877
    (c := out) notNil ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   878
        out := nil.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   879
        c close.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   880
    ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   881
    self brokenConnection
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   882
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   883
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   884
initializeFor:aHostName
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   885
    "initialize the receiver for a connection to a GUIServer;
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   886
     the argument, aHostName may be nil (for a new server on the local machine)
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   887
     or the name:port of an already running server"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   888
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   889
    in notNil ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   890
        "/ already connected - you bad guy try to trick me manually ?
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   891
        ^ self
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   892
    ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   893
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   894
    self openConnectionTo:aHostName.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   895
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   896
    "/ useNativeWidgets := false.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   897
    useNativeWidgets := true.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   898
    useExtraCanvas := false.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   899
    "/ useExtraCanvas := true.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   900
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   901
    connectionTimeout := connectionTimeout ? DefaultConnectionTimeout.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   902
    connectionTimeoutForWindowCreation := connectionTimeoutForWindowCreation ? DefaultConnectionTimeoutForWindowCreation.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   903
    hasConnectionBroken := false.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   904
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   905
    dispatching := false.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   906
    dispatchingExpose := false.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   907
    isSlow := false.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   908
    shiftDown := false.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   909
    ctrlDown := false.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   910
    metaDown := false.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   911
    altDown := false.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   912
    motionEventCompression := true.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   913
    buttonsPressed := 0.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   914
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   915
    visualType := #TrueColor.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   916
    depth := 24.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   917
    redShift := 16. greenShift := 8. blueShift := 0.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   918
    listOfFonts := nil.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   919
    nextId := 1.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   920
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   921
    fontMap := Dictionary new.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   922
    viewMap := Dictionary new.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   923
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   924
    self initializeDeviceResourceTables.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   925
    self initializeScreenProperties.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   926
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   927
    self initializeDefaultValues.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   928
    self initializeSpecialFlags.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   929
    self initializeKeyboardMap.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   930
    self initializeDeviceSignals.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   931
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   932
    self initializeViewStyle.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   933
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   934
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   935
initializeScreenProperties
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   936
    "setup screen specific properties."
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   937
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   938
    super initializeScreenProperties.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   939
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   940
    out nextPutLine:'get-screen System'.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   941
    self handleInput:(in nextLine).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   942
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   943
    width := 1280.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   944
    height := 1024.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   945
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   946
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   947
initializeSpecialFlags
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   948
    ^ self
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   949
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   950
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   951
nativeWidgets:aBoolean
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   952
    "enable/disable native widgets on a display"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   953
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   954
    useNativeWidgets := aBoolean
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   955
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   956
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   957
openConnectionTo:aHostNameOrNil
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   958
    "open a connection to aHostNameOrNil;
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   959
     if nil, a new GUIServer is started; otherwise, try to connect to that host."
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   960
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   961
    |host port hostAndPort startGUIServer acceptSocket connectionFromGS connectionToGS|
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   962
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   963
    startGUIServer := false.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   964
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   965
    aHostNameOrNil isNil ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   966
        host := 'localhost'.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   967
        port := self guiServerPort.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   968
        startGUIServer := true.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   969
    ] ifFalse:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   970
        hostAndPort := aHostNameOrNil splitBy:$:.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   971
        host := hostAndPort first.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   972
        port := (hostAndPort at:2 ifAbsent:[self guiServerPort]) asNumber.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   973
    ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   974
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   975
    displayName := (host , ':' , port printString).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   976
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   977
    startGUIServer ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   978
        self startGUIServerWithPort:port
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   979
    ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   980
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   981
    acceptSocket := Socket newTCPserverAtPort:(port+1).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   982
    acceptSocket listenFor:1.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   983
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   984
    "/ give GUI server a chance to come up
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   985
    [connectionFromGS isNil] whileTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   986
        connectionFromGS := Socket newTCPclientToHost:host port:port.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   987
        connectionFromGS isNil ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   988
            Delay waitForSeconds:0.1
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   989
        ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   990
    ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   991
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   992
    acceptSocket readWaitWithTimeoutMs:500.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   993
    connectionToGS := acceptSocket accept.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   994
    acceptSocket close.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   995
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   996
    out := connectionFromGS.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   997
    in := connectionToGS.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   998
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   999
    "/ self startReaderProcess.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1000
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1001
    self gs_set_trace:true.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1002
    self gs_set_utf8:true.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1003
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1004
    "
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1005
     Smalltalk at:#D2 put:(self new initializeFor:nil).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1006
     Smalltalk at:#D2 put:(self new initializeFor:'localhost:47020')
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1007
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1008
     WorkspaceApplication openOnDevice:D2
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1009
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1010
     D2 startDispatch.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1011
     SystemBrowser openOnDevice:d
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1012
    "
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1013
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1014
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1015
startGUIServerWithPort:portNr
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1016
    "start the java GUIServer"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1017
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1018
    |cmd args javaHome guiServerPath|
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1019
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1020
    guiServerPath := self guiServerPath.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1021
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1022
    OperatingSystem isMSWINDOWSlike ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1023
        cmd := 'cmd/c'
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1024
    ] ifFalse:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1025
        javaHome := OperatingSystem getEnvironment:'JAVA_HOME'.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1026
        cmd := javaHome isNil 
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1027
                        ifTrue:'/usr/bin/java'
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1028
                        ifFalse:[ javaHome asFilename constructString:'bin/java' ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1029
    ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1030
    args := { 'java' . '-jar' . guiServerPath . portNr asString }.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1031
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1032
    Processor
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1033
               monitor:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1034
                  guiServerPid := OperatingSystem
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1035
                      exec:cmd
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1036
                      withArguments:args
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1037
                      fork:true
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1038
               ]
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1039
               action:[:status |
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1040
                  status stillAlive ifFalse:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1041
                      OperatingSystem closePid:guiServerPid.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1042
                      guiServerPid := nil.  
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1043
                      self guiServerTerminated.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1044
                  ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1045
               ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1046
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1047
    guiServerPid isNil ifTrue:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1048
        self error:'failed to launch guiserver.jar'
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1049
    ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1050
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1051
    "
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1052
     self new initializeFor:nil
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1053
    "
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1054
! !
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1055
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1056
!GuiServerWorkstation methodsFor:'misc'!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1057
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1058
halt
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1059
    Screen currentScreenQuerySignal answer:Display do:[
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1060
        super halt.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1061
    ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1062
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1063
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1064
mapWindow:viewId
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1065
    self gs_set_visible:viewId visible:true
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1066
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1067
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1068
setWindowBackground:colorId in:viewId
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1069
    self gs_set_background:viewId color:colorId.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1070
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1071
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1072
setWindowName:label in:viewId
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1073
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1074
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1075
unmapWindow:viewId
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1076
    self gs_set_visible:viewId visible:false
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1077
! !
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1078
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1079
!GuiServerWorkstation methodsFor:'native window stuff'!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1080
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1081
changeButtonState:stateBoolean in:id
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1082
    out nextPutLine:('set-selected ',id,' ',stateBoolean printString).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1083
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1084
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1085
changeLabel:label in:id
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1086
    out nextPutLine:('set-text ',id,' ',(Base64Coder encode:label)).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1087
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1088
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1089
changeList:list in:id
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1090
    out nextPutLine:('clear-list ',id).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1091
    list do:[:each |
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1092
        out nextPutLine:('add-list-item ',id,' ',(Base64Coder encode:each asString)).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1093
    ].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1094
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1095
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1096
changeText:text in:id
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1097
    out nextPutLine:('set-text ',id,' ',(Base64Coder encode:text asString)).
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1098
! !
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1099
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1100
!GuiServerWorkstation methodsFor:'queries'!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1101
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1102
displayFileDescriptor
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1103
    "return the file descriptor associated with the display
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1104
     if any. If there is no underlying filedescriptor, return nil.
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1105
     (used for event select/polling)"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1106
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1107
    ^ in fileDescriptor
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1108
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1109
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1110
displayName
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1111
    ^ displayName
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1112
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1113
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1114
guiServerPath
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1115
    ^ self class defaultGUIServerPath
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1116
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1117
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1118
guiServerPort
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1119
    ^ self class defaultGUIServerPort
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1120
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1121
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1122
isOpen
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1123
    "answer true, if device can be used"
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1124
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1125
    ^ hasConnectionBroken not
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1126
        and:[guiServerPid notNil
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1127
        and:[in notNil 
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1128
        and:[out notNil 
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1129
        and:[in isOpen 
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1130
        and:[out isOpen]]]]].
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1131
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1132
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1133
mayOpenDebugger
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1134
    ^ false
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1135
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1136
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1137
supportsNativeWidgets
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1138
    ^ useNativeWidgets
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1139
! !
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1140
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1141
!GuiServerWorkstation methodsFor:'window stuff'!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1142
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1143
moveResizeWindow:aWindowId x:x y:y width:w height:h
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1144
    self send:('set-bounds %1 %2 %3 %4 %5' bindWith:aWindowId with:x with:y with:w with:h)
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1145
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1146
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1147
moveWindow:aWindowId x:x y:y 
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1148
    self send:('set-location %1 %2 %3 %4 %5' bindWith:aWindowId with:x with:y)
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1149
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1150
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1151
resizeWindow:aWindowId width:w height:h
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1152
    self send:('set-current-size %1 %2 %3' bindWith:aWindowId with:w with:h)
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1153
! !
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1154
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1155
!GuiServerWorkstation class methodsFor:'documentation'!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1156
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1157
version
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1158
    ^ '$Header: /cvs/stx/stx/libview/GuiServerWorkstation.st,v 1.1 2014-08-03 12:44:13 cg Exp $'
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1159
!
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1160
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1161
version_CVS
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1162
    ^ '$Header: /cvs/stx/stx/libview/GuiServerWorkstation.st,v 1.1 2014-08-03 12:44:13 cg Exp $'
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1163
! !
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1164
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1165
5a0656be2773 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1166
GuiServerWorkstation initialize!