small fixes to X11
[k8lst.git] / modules / x11 / low / x11singleton.st
blob64f9922f2b3372d32f43630132fbd0eaed97ff2e
1 Package [
2   X11
6 class: X11Singleton  | widgetlist quitflag defaultFont dumpEvents | [
7   ^dumpEvents [
8     ^dumpEvents
9   ]
10   ^dumpEvents: aFlag [
11     dumpEvents := aFlag
12   ]
14   ^subtypeName: aX11 [
15     <#X11Do 0 aX11>.
16     ^nil
17   ]
19   ^wid2str: wid [
20     <#X11Do 1 wid>.
21     self primitiveFailed
22   ]
24   ^sameWids: w0 and: w1 [
25     <#X11Do 2 w0 w1>.
26     self primitiveFailed
27   ]
29   ^flush [
30     <#X11Do 8>.
31     self primitiveFailed
32   ]
34   ^initialize [
35     defaultFont ifNil: [ defaultFont := 'verdana,sans-10' ].
36     dumpEvents ifNil: [ dumpEvents := false ].
37     widgetlist := List new.
38     self XInitialize: nil.
39   ]
41   ^deinitialize [
42     widgetlist := nil.
43     ^self XDeinitialize
44   ]
46   ^defaultFont [
47     ^defaultFont
48   ]
50   ^defaultFont: aName [
51     defaultFont := aName ifNil: [ 'verdana,sans-10' ].
52   ]
54   ^blackPixel [
55     <#X11Do 5 false>.
56     self primitiveFailed
57   ]
59   ^whitePixel [
60     <#X11Do 5 true>.
61     self primitiveFailed
62   ]
65   ^XInitialize: aName [
66     <#X11Do 10 aName>.
67     self primitiveFailed
68   ]
70   ^XDeinitialize [
71     <#X11Do 11>.
72     self primitiveFailed
73   ]
75   ^getEvent [
76     <#X11Do 14>.
77     ^nil
78   ]
80   ^XSelectInput: aWindow interestFlag: aFlag [
81     <#X11Do 15 aWindow aFlag>.
82     self primitiveFailed
83   ]
85   ^XCreateSimpleWindow: parentWid x: x y: y width: wdt height: hgt bgcolor: clr [
86     <#X11Do 20 parentWid x y wdt hgt clr>.
87     self primitiveFailed
88   ]
90   ^XDestroyWindow: wid [
91     <#X11Do 21 wid>.
92     self primitiveFailed
93   ]
95   ^XSetTitle: wid title: aTitle [
96     <#X11Do 22 wid aTitle>.
97     self primitiveFailed
98   ]
100   ^XMapWindow: wid [
101     <#X11Do 23 wid true>.
102     self primitiveFailed
103   ]
105   ^XUnmapWindow: wid [
106     <#X11Do 23 wid false>.
107     self primitiveFailed
108   ]
110   ^XGetGeometry: wid item: aItem [
111     <#X11Do 24 wid aItem>.
112     self primitiveFailed
113   ]
115   ^XGetGeometry: wid [
116     <#X11Do 24 wid 0>.
117     self primitiveFailed
118   ]
120   ^XSetWindowBackground: wid color: clr [
121     <#X11Do 25 wid clr>.
122     self primitiveFailed
123   ]
125   ^XClearWindow: wid [
126     <#X11Do 26 wid>.
127     self primitiveFailed
128   ]
130   ^XMoveWindow: wid x: x y: y [
131     <#X11Do 27 wid 1 x y>.
132     self primitiveFailed
133   ]
135   ^XResizeWindow: wid width: w height: h [
136     <#X11Do 27 wid 2 w h>.
137     self primitiveFailed
138   ]
140   ^XMoveResizeWindow: wid x: x y: y width: w height: h [
141     <#X11Do 27 wid 3 x y w h>.
142     self primitiveFailed
143   ]
145   ^XSetInputFocus: wid [
146     <#X11Do 28 wid>.
147     self primitiveFailed
148   ]
150   ^XGetInputFocus [
151     <#X11Do 28 true>.
152     self primitiveFailed
153   ]
155   ^XCreateGC: wid fgColor: aColor [
156     <#X11Do 30 wid aColor>.
157     self primitiveFailed
158   ]
160   ^XCreateGC: wid [
161     <#X11Do 30 wid>.
162     self primitiveFailed
163   ]
165   ^XFreeGC: aGC [
166     <#X11Do 31 aGC>.
167     self primitiveFailed
168   ]
170   ^XNewColor: r g: g b: b [
171     <#X11Do 32 r g b>.
172     self primitiveFailed
173   ]
175   ^XFreeColor: aClr [
176     <#X11Do 33 aClr>.
177     self primitiveFailed
178   ]
180   ^XSetColor: aGC color: aClr backFlag: aBF [
181     <#X11Do 34 aGC aClr aBF>.
182     self primitiveFailed
183   ]
185   ^fgColor: aGC color: aClr [
186     ^self XSetColor: aGC color: aClr backFlag: false
187   ]
189   ^bgColor: aGC color: aClr [
190     ^self XSetColor: aGC color: aClr backFlag: true
191   ]
193   ^XSetLineAttr: aGC width: wdt line: line cap: cap join: join [
194     <#X11Do 35 aGC wdt line cap join>.
195     self primitiveFailed
196   ]
198   ^XDrawPoint: wid gc: gc x: x y: y [
199     <#X11Do 40 wid gc x y>.
200     self primitiveFailed
201   ]
203   ^XDrawLine: wid gc: gc x0: x0 y0: y0 x1: x1 y1: y1 [
204     <#X11Do 41 wid gc x0 y0 x1 y1>.
205     self primitiveFailed
206   ]
208   ^XDrawRect: wid gc: gc x: x y: y width: wdt height: hgt [
209     <#X11Do 42 wid gc x y wdt hgt>.
210     self primitiveFailed
211   ]
213   ^XFillRect: wid gc: gc x: x y: y width: wdt height: hgt [
214     <#X11Do 43 wid gc x y wdt hgt>.
215     self primitiveFailed
216   ]
218   ^XftFontOpen: aName [
219     <#X11Do 50 aName>.
220     self primitiveFailed
221   ]
223   ^XftFontClose: aFont [
224     <#X11Do 51 aFont>.
225     self primitiveFailed
226   ]
228   ^XftDrawCreate: wid [
229     <#X11Do 52 wid>.
230     self primitiveFailed
231   ]
233   ^XftDrawDestroy: aDraw [
234     <#X11Do 53 aDraw>.
235     self primitiveFailed
236   ]
238   ^XftNewColor: r g: g b: b [
239     <#X11Do 54 r g b>.
240     self primitiveFailed
241   ]
243   ^XftFreeColor: aClr [
244     <#X11Do 55 aClr>.
245     self primitiveFailed
246   ]
248   ^XftFontDraw: aDraw color: aClr font: aFont x: x y: y text: text [
249     <#X11Do 56 aDraw aClr aFont x y text>.
250     self primitiveFailed
251   ]
253   ^XftTextExtents: aFont text: text item: aNo [
254     <#X11Do 57 aFont text aNo>.
255     self primitiveFailed
256   ]
258   ^XftTextExtents: aFont text: text [
259     <#X11Do 57 aFont text>.
260     self primitiveFailed
261   ]
264   ^add: aWC [
265     widgetlist << aWC.
266   ]
268   ^remove: aWC [
269     widgetlist remove: aWC ifAbsent: [ nil ]
270   ]
272   ^removeById: aWid [
273     widgetlist do: [:w |
274       (X11Singleton sameWids: aWid and: w wid)
275         ifTrue: [
276           "'dead meat: ' print. (self wid2str: aWid) printNl."
277           self remove: w.
278           ^self
279         ]
280     ].
281   ]
283   ^findWidgetById: aWid [
284     widgetlist do: [:w | (X11Singleton sameWids: aWid and: w wid) ifTrue: [ ^w ]].
285     ^nil
286   ]
288   ^setQuitFlag [
289     quitflag := true.
290   ]
292   ^resetQuitFlag [
293     quitflag := false.
294   ]
296   ^passEvent: wid event: evt [
297     widgetlist do: [:w | (w passEvent: wid event: evt) ifTrue: [ ^true ]].
298     ^false
299   ]
301   ^eventLoop [
302     | evt wid kill |
303     quitflag := false.
304     [ quitflag ] whileFalse: [
305       System eventWaitFor: 1200.
306       (evt := self getEvent) ifNotNil: [
307         wid := evt at: 2.
308         dumpEvents ifTrue: [
309           'wid: ' print. (X11Singleton wid2str: wid) print. '; ' print. evt printNl.
310         ].
311         kill := (evt at: 1) == #DestroyNotify.
312         self passEvent: wid event: evt.
313         kill ifTrue: [
314           self removeById: wid.
315           widgetlist isEmpty ifTrue: [ quitflag := true ].
316         ].
317       ].
318     ]
319   ]
323 class: X11ResourceObject [
324   ^new [
325     | obj |
326     (obj := self basicNew) addToBeFinalized.
327     ^obj
328   ]
330   free [
331   ]
333   finalize [
334     self free
335   ]