-
Notifications
You must be signed in to change notification settings - Fork 6
/
GtkConcreteWidget.st
122 lines (88 loc) · 2.26 KB
/
GtkConcreteWidget.st
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
GtkAbstractConcreteWidget subclass: GtkConcreteWidget [
| child parentWindow popupMenu |
GtkConcreteWidget class >> parentWindow: aGtkWindow [
<category: 'instance creation'>
^ self new
parentWindow: aGtkWindow;
initialize;
yourself
]
GtkConcreteWidget class >> showAll [
<category: 'instance creation'>
^ self new
initialize;
showAll;
yourself
]
initialize [
<category: 'initialize'>
]
parentWindow: aGtkWindow [
<category: 'accessing'>
parentWindow := aGtkWindow
]
parentWindow [
<category: 'accessing'>
^ parentWindow
]
mainWidget [
<category: 'accessing'>
^ child
]
mainWidget: aGtkWidget [
<category: 'accessing'>
child ifNotNil: [ child hideAll ].
child := aGtkWidget
]
showAll [
<category: 'user interface'>
child showAll
]
hideAll [
<category: 'user interface'>
child hideAll
]
isVisible [
<category: 'testing'>
^ child getVisible
]
hasFocus [
<category: 'testing'>
| parent current |
parent := child.
[ (current := parent getFocusChild) notNil ] whileTrue: [
parent := current ].
^ self parentWindow getFocus = parent
]
focusedWidget [
<category: 'focus'>
self hasFocus ifTrue: [ ^ self ].
^ nil
]
onFocusPerform: aSymbol [
<category: 'widget'>
^ self focusedWidget perform: aSymbol
]
onPress: aGtkWidget event: aGdkEvent [
<category: 'button event'>
| menu aGdkButtonEvent |
aGdkButtonEvent := aGdkEvent castTo: GTK.GdkEventButton type.
aGdkButtonEvent button value = 3 ifFalse: [ ^ false ].
menu := popupMenu asPopupMenu.
menu attachToWidget: self treeView detacher: nil.
menu popup: nil parentMenuItem: nil func: nil data: nil button: 3 activateTime: aGdkButtonEvent time value.
menu showAll.
^ true
]
connectToWhenPopupMenu: aMenuBuilder [
<category: 'user interface'>
popupMenu := aMenuBuilder.
^ self treeView connectSignal: 'button-press-event' to: self selector: #'onPress:event:'
]
grabFocus [
<category: 'user interface'>
]
close [
<category: 'user interface'>
]
]