git.fiddlerwoaroof.com
Browse code

Load ui from nib !!!

Ed L authored on 09/01/2018 09:32:48
Showing 6 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,732 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="13771" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
3
+    <dependencies>
4
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13771"/>
5
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
6
+    </dependencies>
7
+    <objects>
8
+        <customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
9
+            <connections>
10
+                <outlet property="delegate" destination="Voe-Tx-rLC" id="GzC-gU-4Uq"/>
11
+            </connections>
12
+        </customObject>
13
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
14
+        <customObject id="-3" userLabel="Application"/>
15
+        <customObject id="Voe-Tx-rLC" customClass="AppDelegate">
16
+            <connections>
17
+                <outlet property="window" destination="QvC-M9-y7g" id="gIp-Ho-8D9"/>
18
+            </connections>
19
+        </customObject>
20
+        <customObject id="YLy-65-1bz" customClass="NSFontManager"/>
21
+        <menu title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
22
+            <items>
23
+                <menuItem title="Foop" id="1Xt-HY-uBw">
24
+                    <modifierMask key="keyEquivalentModifierMask"/>
25
+                    <menu key="submenu" title="Foop" systemMenu="apple" id="uQy-DD-JDr">
26
+                        <items>
27
+                            <menuItem title="About Foop" id="5kV-Vb-QxS">
28
+                                <modifierMask key="keyEquivalentModifierMask"/>
29
+                                <connections>
30
+                                    <action selector="orderFrontStandardAboutPanel:" target="-1" id="Exp-CZ-Vem"/>
31
+                                </connections>
32
+                            </menuItem>
33
+                            <menuItem isSeparatorItem="YES" id="VOq-y0-SEH"/>
34
+                            <menuItem title="Preferences…" keyEquivalent="," id="BOF-NM-1cW"/>
35
+                            <menuItem isSeparatorItem="YES" id="wFC-TO-SCJ"/>
36
+                            <menuItem title="Services" id="NMo-om-nkz">
37
+                                <modifierMask key="keyEquivalentModifierMask"/>
38
+                                <menu key="submenu" title="Services" systemMenu="services" id="hz9-B4-Xy5"/>
39
+                            </menuItem>
40
+                            <menuItem isSeparatorItem="YES" id="4je-JR-u6R"/>
41
+                            <menuItem title="Hide Foop" keyEquivalent="h" id="Olw-nP-bQN">
42
+                                <connections>
43
+                                    <action selector="hide:" target="-1" id="PnN-Uc-m68"/>
44
+                                </connections>
45
+                            </menuItem>
46
+                            <menuItem title="Hide Others" keyEquivalent="h" id="Vdr-fp-XzO">
47
+                                <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
48
+                                <connections>
49
+                                    <action selector="hideOtherApplications:" target="-1" id="VT4-aY-XCT"/>
50
+                                </connections>
51
+                            </menuItem>
52
+                            <menuItem title="Show All" id="Kd2-mp-pUS">
53
+                                <modifierMask key="keyEquivalentModifierMask"/>
54
+                                <connections>
55
+                                    <action selector="unhideAllApplications:" target="-1" id="Dhg-Le-xox"/>
56
+                                </connections>
57
+                            </menuItem>
58
+                            <menuItem isSeparatorItem="YES" id="kCx-OE-vgT"/>
59
+                            <menuItem title="Quit Foop" keyEquivalent="q" id="4sb-4s-VLi">
60
+                                <connections>
61
+                                    <action selector="terminate:" target="-1" id="Te7-pn-YzF"/>
62
+                                </connections>
63
+                            </menuItem>
64
+                        </items>
65
+                    </menu>
66
+                </menuItem>
67
+                <menuItem title="File" id="dMs-cI-mzQ">
68
+                    <modifierMask key="keyEquivalentModifierMask"/>
69
+                    <menu key="submenu" title="File" id="bib-Uj-vzu">
70
+                        <items>
71
+                            <menuItem title="New" keyEquivalent="n" id="Was-JA-tGl">
72
+                                <connections>
73
+                                    <action selector="newDocument:" target="-1" id="4Si-XN-c54"/>
74
+                                </connections>
75
+                            </menuItem>
76
+                            <menuItem title="Open…" keyEquivalent="o" id="IAo-SY-fd9">
77
+                                <connections>
78
+                                    <action selector="openDocument:" target="-1" id="bVn-NM-KNZ"/>
79
+                                </connections>
80
+                            </menuItem>
81
+                            <menuItem title="Open Recent" id="tXI-mr-wws">
82
+                                <modifierMask key="keyEquivalentModifierMask"/>
83
+                                <menu key="submenu" title="Open Recent" systemMenu="recentDocuments" id="oas-Oc-fiZ">
84
+                                    <items>
85
+                                        <menuItem title="Clear Menu" id="vNY-rz-j42">
86
+                                            <modifierMask key="keyEquivalentModifierMask"/>
87
+                                            <connections>
88
+                                                <action selector="clearRecentDocuments:" target="-1" id="Daa-9d-B3U"/>
89
+                                            </connections>
90
+                                        </menuItem>
91
+                                    </items>
92
+                                </menu>
93
+                            </menuItem>
94
+                            <menuItem isSeparatorItem="YES" id="m54-Is-iLE"/>
95
+                            <menuItem title="Close" keyEquivalent="w" id="DVo-aG-piG">
96
+                                <connections>
97
+                                    <action selector="performClose:" target="-1" id="HmO-Ls-i7Q"/>
98
+                                </connections>
99
+                            </menuItem>
100
+                            <menuItem title="Save…" keyEquivalent="s" id="pxx-59-PXV">
101
+                                <connections>
102
+                                    <action selector="saveDocument:" target="-1" id="teZ-XB-qJY"/>
103
+                                </connections>
104
+                            </menuItem>
105
+                            <menuItem title="Save As…" keyEquivalent="S" id="Bw7-FT-i3A">
106
+                                <connections>
107
+                                    <action selector="saveDocumentAs:" target="-1" id="mDf-zr-I0C"/>
108
+                                </connections>
109
+                            </menuItem>
110
+                            <menuItem title="Revert to Saved" keyEquivalent="r" id="KaW-ft-85H">
111
+                                <connections>
112
+                                    <action selector="revertDocumentToSaved:" target="-1" id="iJ3-Pv-kwq"/>
113
+                                </connections>
114
+                            </menuItem>
115
+                            <menuItem isSeparatorItem="YES" id="aJh-i4-bef"/>
116
+                            <menuItem title="Page Setup…" keyEquivalent="P" id="qIS-W8-SiK">
117
+                                <modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
118
+                                <connections>
119
+                                    <action selector="runPageLayout:" target="-1" id="Din-rz-gC5"/>
120
+                                </connections>
121
+                            </menuItem>
122
+                            <menuItem title="Print…" keyEquivalent="p" id="aTl-1u-JFS">
123
+                                <connections>
124
+                                    <action selector="print:" target="-1" id="qaZ-4w-aoO"/>
125
+                                </connections>
126
+                            </menuItem>
127
+                        </items>
128
+                    </menu>
129
+                </menuItem>
130
+                <menuItem title="Edit" id="5QF-Oa-p0T">
131
+                    <modifierMask key="keyEquivalentModifierMask"/>
132
+                    <menu key="submenu" title="Edit" id="W48-6f-4Dl">
133
+                        <items>
134
+                            <menuItem title="Undo" keyEquivalent="z" id="dRJ-4n-Yzg">
135
+                                <connections>
136
+                                    <action selector="undo:" target="-1" id="M6e-cu-g7V"/>
137
+                                </connections>
138
+                            </menuItem>
139
+                            <menuItem title="Redo" keyEquivalent="Z" id="6dh-zS-Vam">
140
+                                <connections>
141
+                                    <action selector="redo:" target="-1" id="oIA-Rs-6OD"/>
142
+                                </connections>
143
+                            </menuItem>
144
+                            <menuItem isSeparatorItem="YES" id="WRV-NI-Exz"/>
145
+                            <menuItem title="Cut" keyEquivalent="x" id="uRl-iY-unG">
146
+                                <connections>
147
+                                    <action selector="cut:" target="-1" id="YJe-68-I9s"/>
148
+                                </connections>
149
+                            </menuItem>
150
+                            <menuItem title="Copy" keyEquivalent="c" id="x3v-GG-iWU">
151
+                                <connections>
152
+                                    <action selector="copy:" target="-1" id="G1f-GL-Joy"/>
153
+                                </connections>
154
+                            </menuItem>
155
+                            <menuItem title="Paste" keyEquivalent="v" id="gVA-U4-sdL">
156
+                                <connections>
157
+                                    <action selector="paste:" target="-1" id="UvS-8e-Qdg"/>
158
+                                </connections>
159
+                            </menuItem>
160
+                            <menuItem title="Paste and Match Style" keyEquivalent="V" id="WeT-3V-zwk">
161
+                                <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
162
+                                <connections>
163
+                                    <action selector="pasteAsPlainText:" target="-1" id="cEh-KX-wJQ"/>
164
+                                </connections>
165
+                            </menuItem>
166
+                            <menuItem title="Delete" id="pa3-QI-u2k">
167
+                                <modifierMask key="keyEquivalentModifierMask"/>
168
+                                <connections>
169
+                                    <action selector="delete:" target="-1" id="0Mk-Ml-PaM"/>
170
+                                </connections>
171
+                            </menuItem>
172
+                            <menuItem title="Select All" keyEquivalent="a" id="Ruw-6m-B2m">
173
+                                <connections>
174
+                                    <action selector="selectAll:" target="-1" id="VNm-Mi-diN"/>
175
+                                </connections>
176
+                            </menuItem>
177
+                            <menuItem isSeparatorItem="YES" id="uyl-h8-XO2"/>
178
+                            <menuItem title="Find" id="4EN-yA-p0u">
179
+                                <modifierMask key="keyEquivalentModifierMask"/>
180
+                                <menu key="submenu" title="Find" id="1b7-l0-nxx">
181
+                                    <items>
182
+                                        <menuItem title="Find…" tag="1" keyEquivalent="f" id="Xz5-n4-O0W">
183
+                                            <connections>
184
+                                                <action selector="performFindPanelAction:" target="-1" id="cD7-Qs-BN4"/>
185
+                                            </connections>
186
+                                        </menuItem>
187
+                                        <menuItem title="Find and Replace…" tag="12" keyEquivalent="f" id="YEy-JH-Tfz">
188
+                                            <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
189
+                                            <connections>
190
+                                                <action selector="performFindPanelAction:" target="-1" id="WD3-Gg-5AJ"/>
191
+                                            </connections>
192
+                                        </menuItem>
193
+                                        <menuItem title="Find Next" tag="2" keyEquivalent="g" id="q09-fT-Sye">
194
+                                            <connections>
195
+                                                <action selector="performFindPanelAction:" target="-1" id="NDo-RZ-v9R"/>
196
+                                            </connections>
197
+                                        </menuItem>
198
+                                        <menuItem title="Find Previous" tag="3" keyEquivalent="G" id="OwM-mh-QMV">
199
+                                            <connections>
200
+                                                <action selector="performFindPanelAction:" target="-1" id="HOh-sY-3ay"/>
201
+                                            </connections>
202
+                                        </menuItem>
203
+                                        <menuItem title="Use Selection for Find" tag="7" keyEquivalent="e" id="buJ-ug-pKt">
204
+                                            <connections>
205
+                                                <action selector="performFindPanelAction:" target="-1" id="U76-nv-p5D"/>
206
+                                            </connections>
207
+                                        </menuItem>
208
+                                        <menuItem title="Jump to Selection" keyEquivalent="j" id="S0p-oC-mLd">
209
+                                            <connections>
210
+                                                <action selector="centerSelectionInVisibleArea:" target="-1" id="IOG-6D-g5B"/>
211
+                                            </connections>
212
+                                        </menuItem>
213
+                                    </items>
214
+                                </menu>
215
+                            </menuItem>
216
+                            <menuItem title="Spelling and Grammar" id="Dv1-io-Yv7">
217
+                                <modifierMask key="keyEquivalentModifierMask"/>
218
+                                <menu key="submenu" title="Spelling" id="3IN-sU-3Bg">
219
+                                    <items>
220
+                                        <menuItem title="Show Spelling and Grammar" keyEquivalent=":" id="HFo-cy-zxI">
221
+                                            <connections>
222
+                                                <action selector="showGuessPanel:" target="-1" id="vFj-Ks-hy3"/>
223
+                                            </connections>
224
+                                        </menuItem>
225
+                                        <menuItem title="Check Document Now" keyEquivalent=";" id="hz2-CU-CR7">
226
+                                            <connections>
227
+                                                <action selector="checkSpelling:" target="-1" id="fz7-VC-reM"/>
228
+                                            </connections>
229
+                                        </menuItem>
230
+                                        <menuItem isSeparatorItem="YES" id="bNw-od-mp5"/>
231
+                                        <menuItem title="Check Spelling While Typing" id="rbD-Rh-wIN">
232
+                                            <modifierMask key="keyEquivalentModifierMask"/>
233
+                                            <connections>
234
+                                                <action selector="toggleContinuousSpellChecking:" target="-1" id="7w6-Qz-0kB"/>
235
+                                            </connections>
236
+                                        </menuItem>
237
+                                        <menuItem title="Check Grammar With Spelling" id="mK6-2p-4JG">
238
+                                            <modifierMask key="keyEquivalentModifierMask"/>
239
+                                            <connections>
240
+                                                <action selector="toggleGrammarChecking:" target="-1" id="muD-Qn-j4w"/>
241
+                                            </connections>
242
+                                        </menuItem>
243
+                                        <menuItem title="Correct Spelling Automatically" id="78Y-hA-62v">
244
+                                            <modifierMask key="keyEquivalentModifierMask"/>
245
+                                            <connections>
246
+                                                <action selector="toggleAutomaticSpellingCorrection:" target="-1" id="2lM-Qi-WAP"/>
247
+                                            </connections>
248
+                                        </menuItem>
249
+                                    </items>
250
+                                </menu>
251
+                            </menuItem>
252
+                            <menuItem title="Substitutions" id="9ic-FL-obx">
253
+                                <modifierMask key="keyEquivalentModifierMask"/>
254
+                                <menu key="submenu" title="Substitutions" id="FeM-D8-WVr">
255
+                                    <items>
256
+                                        <menuItem title="Show Substitutions" id="z6F-FW-3nz">
257
+                                            <modifierMask key="keyEquivalentModifierMask"/>
258
+                                            <connections>
259
+                                                <action selector="orderFrontSubstitutionsPanel:" target="-1" id="oku-mr-iSq"/>
260
+                                            </connections>
261
+                                        </menuItem>
262
+                                        <menuItem isSeparatorItem="YES" id="gPx-C9-uUO"/>
263
+                                        <menuItem title="Smart Copy/Paste" id="9yt-4B-nSM">
264
+                                            <modifierMask key="keyEquivalentModifierMask"/>
265
+                                            <connections>
266
+                                                <action selector="toggleSmartInsertDelete:" target="-1" id="3IJ-Se-DZD"/>
267
+                                            </connections>
268
+                                        </menuItem>
269
+                                        <menuItem title="Smart Quotes" id="hQb-2v-fYv">
270
+                                            <modifierMask key="keyEquivalentModifierMask"/>
271
+                                            <connections>
272
+                                                <action selector="toggleAutomaticQuoteSubstitution:" target="-1" id="ptq-xd-QOA"/>
273
+                                            </connections>
274
+                                        </menuItem>
275
+                                        <menuItem title="Smart Dashes" id="rgM-f4-ycn">
276
+                                            <modifierMask key="keyEquivalentModifierMask"/>
277
+                                            <connections>
278
+                                                <action selector="toggleAutomaticDashSubstitution:" target="-1" id="oCt-pO-9gS"/>
279
+                                            </connections>
280
+                                        </menuItem>
281
+                                        <menuItem title="Smart Links" id="cwL-P1-jid">
282
+                                            <modifierMask key="keyEquivalentModifierMask"/>
283
+                                            <connections>
284
+                                                <action selector="toggleAutomaticLinkDetection:" target="-1" id="Gip-E3-Fov"/>
285
+                                            </connections>
286
+                                        </menuItem>
287
+                                        <menuItem title="Data Detectors" id="tRr-pd-1PS">
288
+                                            <modifierMask key="keyEquivalentModifierMask"/>
289
+                                            <connections>
290
+                                                <action selector="toggleAutomaticDataDetection:" target="-1" id="R1I-Nq-Kbl"/>
291
+                                            </connections>
292
+                                        </menuItem>
293
+                                        <menuItem title="Text Replacement" id="HFQ-gK-NFA">
294
+                                            <modifierMask key="keyEquivalentModifierMask"/>
295
+                                            <connections>
296
+                                                <action selector="toggleAutomaticTextReplacement:" target="-1" id="DvP-Fe-Py6"/>
297
+                                            </connections>
298
+                                        </menuItem>
299
+                                    </items>
300
+                                </menu>
301
+                            </menuItem>
302
+                            <menuItem title="Transformations" id="2oI-Rn-ZJC">
303
+                                <modifierMask key="keyEquivalentModifierMask"/>
304
+                                <menu key="submenu" title="Transformations" id="c8a-y6-VQd">
305
+                                    <items>
306
+                                        <menuItem title="Make Upper Case" id="vmV-6d-7jI">
307
+                                            <modifierMask key="keyEquivalentModifierMask"/>
308
+                                            <connections>
309
+                                                <action selector="uppercaseWord:" target="-1" id="sPh-Tk-edu"/>
310
+                                            </connections>
311
+                                        </menuItem>
312
+                                        <menuItem title="Make Lower Case" id="d9M-CD-aMd">
313
+                                            <modifierMask key="keyEquivalentModifierMask"/>
314
+                                            <connections>
315
+                                                <action selector="lowercaseWord:" target="-1" id="iUZ-b5-hil"/>
316
+                                            </connections>
317
+                                        </menuItem>
318
+                                        <menuItem title="Capitalize" id="UEZ-Bs-lqG">
319
+                                            <modifierMask key="keyEquivalentModifierMask"/>
320
+                                            <connections>
321
+                                                <action selector="capitalizeWord:" target="-1" id="26H-TL-nsh"/>
322
+                                            </connections>
323
+                                        </menuItem>
324
+                                    </items>
325
+                                </menu>
326
+                            </menuItem>
327
+                            <menuItem title="Speech" id="xrE-MZ-jX0">
328
+                                <modifierMask key="keyEquivalentModifierMask"/>
329
+                                <menu key="submenu" title="Speech" id="3rS-ZA-NoH">
330
+                                    <items>
331
+                                        <menuItem title="Start Speaking" id="Ynk-f8-cLZ">
332
+                                            <modifierMask key="keyEquivalentModifierMask"/>
333
+                                            <connections>
334
+                                                <action selector="startSpeaking:" target="-1" id="654-Ng-kyl"/>
335
+                                            </connections>
336
+                                        </menuItem>
337
+                                        <menuItem title="Stop Speaking" id="Oyz-dy-DGm">
338
+                                            <modifierMask key="keyEquivalentModifierMask"/>
339
+                                            <connections>
340
+                                                <action selector="stopSpeaking:" target="-1" id="dX8-6p-jy9"/>
341
+                                            </connections>
342
+                                        </menuItem>
343
+                                    </items>
344
+                                </menu>
345
+                            </menuItem>
346
+                        </items>
347
+                    </menu>
348
+                </menuItem>
349
+                <menuItem title="Format" id="jxT-CU-nIS">
350
+                    <modifierMask key="keyEquivalentModifierMask"/>
351
+                    <menu key="submenu" title="Format" id="GEO-Iw-cKr">
352
+                        <items>
353
+                            <menuItem title="Font" id="Gi5-1S-RQB">
354
+                                <modifierMask key="keyEquivalentModifierMask"/>
355
+                                <menu key="submenu" title="Font" systemMenu="font" id="aXa-aM-Jaq">
356
+                                    <items>
357
+                                        <menuItem title="Show Fonts" keyEquivalent="t" id="Q5e-8K-NDq">
358
+                                            <connections>
359
+                                                <action selector="orderFrontFontPanel:" target="YLy-65-1bz" id="WHr-nq-2xA"/>
360
+                                            </connections>
361
+                                        </menuItem>
362
+                                        <menuItem title="Bold" tag="2" keyEquivalent="b" id="GB9-OM-e27">
363
+                                            <connections>
364
+                                                <action selector="addFontTrait:" target="YLy-65-1bz" id="hqk-hr-sYV"/>
365
+                                            </connections>
366
+                                        </menuItem>
367
+                                        <menuItem title="Italic" tag="1" keyEquivalent="i" id="Vjx-xi-njq">
368
+                                            <connections>
369
+                                                <action selector="addFontTrait:" target="YLy-65-1bz" id="IHV-OB-c03"/>
370
+                                            </connections>
371
+                                        </menuItem>
372
+                                        <menuItem title="Underline" keyEquivalent="u" id="WRG-CD-K1S">
373
+                                            <connections>
374
+                                                <action selector="underline:" target="-1" id="FYS-2b-JAY"/>
375
+                                            </connections>
376
+                                        </menuItem>
377
+                                        <menuItem isSeparatorItem="YES" id="5gT-KC-WSO"/>
378
+                                        <menuItem title="Bigger" tag="3" keyEquivalent="+" id="Ptp-SP-VEL">
379
+                                            <connections>
380
+                                                <action selector="modifyFont:" target="YLy-65-1bz" id="Uc7-di-UnL"/>
381
+                                            </connections>
382
+                                        </menuItem>
383
+                                        <menuItem title="Smaller" tag="4" keyEquivalent="-" id="i1d-Er-qST">
384
+                                            <connections>
385
+                                                <action selector="modifyFont:" target="YLy-65-1bz" id="HcX-Lf-eNd"/>
386
+                                            </connections>
387
+                                        </menuItem>
388
+                                        <menuItem isSeparatorItem="YES" id="kx3-Dk-x3B"/>
389
+                                        <menuItem title="Kern" id="jBQ-r6-VK2">
390
+                                            <modifierMask key="keyEquivalentModifierMask"/>
391
+                                            <menu key="submenu" title="Kern" id="tlD-Oa-oAM">
392
+                                                <items>
393
+                                                    <menuItem title="Use Default" id="GUa-eO-cwY">
394
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
395
+                                                        <connections>
396
+                                                            <action selector="useStandardKerning:" target="-1" id="6dk-9l-Ckg"/>
397
+                                                        </connections>
398
+                                                    </menuItem>
399
+                                                    <menuItem title="Use None" id="cDB-IK-hbR">
400
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
401
+                                                        <connections>
402
+                                                            <action selector="turnOffKerning:" target="-1" id="U8a-gz-Maa"/>
403
+                                                        </connections>
404
+                                                    </menuItem>
405
+                                                    <menuItem title="Tighten" id="46P-cB-AYj">
406
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
407
+                                                        <connections>
408
+                                                            <action selector="tightenKerning:" target="-1" id="hr7-Nz-8ro"/>
409
+                                                        </connections>
410
+                                                    </menuItem>
411
+                                                    <menuItem title="Loosen" id="ogc-rX-tC1">
412
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
413
+                                                        <connections>
414
+                                                            <action selector="loosenKerning:" target="-1" id="8i4-f9-FKE"/>
415
+                                                        </connections>
416
+                                                    </menuItem>
417
+                                                </items>
418
+                                            </menu>
419
+                                        </menuItem>
420
+                                        <menuItem title="Ligatures" id="o6e-r0-MWq">
421
+                                            <modifierMask key="keyEquivalentModifierMask"/>
422
+                                            <menu key="submenu" title="Ligatures" id="w0m-vy-SC9">
423
+                                                <items>
424
+                                                    <menuItem title="Use Default" id="agt-UL-0e3">
425
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
426
+                                                        <connections>
427
+                                                            <action selector="useStandardLigatures:" target="-1" id="7uR-wd-Dx6"/>
428
+                                                        </connections>
429
+                                                    </menuItem>
430
+                                                    <menuItem title="Use None" id="J7y-lM-qPV">
431
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
432
+                                                        <connections>
433
+                                                            <action selector="turnOffLigatures:" target="-1" id="iX2-gA-Ilz"/>
434
+                                                        </connections>
435
+                                                    </menuItem>
436
+                                                    <menuItem title="Use All" id="xQD-1f-W4t">
437
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
438
+                                                        <connections>
439
+                                                            <action selector="useAllLigatures:" target="-1" id="KcB-kA-TuK"/>
440
+                                                        </connections>
441
+                                                    </menuItem>
442
+                                                </items>
443
+                                            </menu>
444
+                                        </menuItem>
445
+                                        <menuItem title="Baseline" id="OaQ-X3-Vso">
446
+                                            <modifierMask key="keyEquivalentModifierMask"/>
447
+                                            <menu key="submenu" title="Baseline" id="ijk-EB-dga">
448
+                                                <items>
449
+                                                    <menuItem title="Use Default" id="3Om-Ey-2VK">
450
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
451
+                                                        <connections>
452
+                                                            <action selector="unscript:" target="-1" id="0vZ-95-Ywn"/>
453
+                                                        </connections>
454
+                                                    </menuItem>
455
+                                                    <menuItem title="Superscript" id="Rqc-34-cIF">
456
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
457
+                                                        <connections>
458
+                                                            <action selector="superscript:" target="-1" id="3qV-fo-wpU"/>
459
+                                                        </connections>
460
+                                                    </menuItem>
461
+                                                    <menuItem title="Subscript" id="I0S-gh-46l">
462
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
463
+                                                        <connections>
464
+                                                            <action selector="subscript:" target="-1" id="Q6W-4W-IGz"/>
465
+                                                        </connections>
466
+                                                    </menuItem>
467
+                                                    <menuItem title="Raise" id="2h7-ER-AoG">
468
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
469
+                                                        <connections>
470
+                                                            <action selector="raiseBaseline:" target="-1" id="4sk-31-7Q9"/>
471
+                                                        </connections>
472
+                                                    </menuItem>
473
+                                                    <menuItem title="Lower" id="1tx-W0-xDw">
474
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
475
+                                                        <connections>
476
+                                                            <action selector="lowerBaseline:" target="-1" id="OF1-bc-KW4"/>
477
+                                                        </connections>
478
+                                                    </menuItem>
479
+                                                </items>
480
+                                            </menu>
481
+                                        </menuItem>
482
+                                        <menuItem isSeparatorItem="YES" id="Ndw-q3-faq"/>
483
+                                        <menuItem title="Show Colors" keyEquivalent="C" id="bgn-CT-cEk">
484
+                                            <connections>
485
+                                                <action selector="orderFrontColorPanel:" target="-1" id="mSX-Xz-DV3"/>
486
+                                            </connections>
487
+                                        </menuItem>
488
+                                        <menuItem isSeparatorItem="YES" id="iMs-zA-UFJ"/>
489
+                                        <menuItem title="Copy Style" keyEquivalent="c" id="5Vv-lz-BsD">
490
+                                            <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
491
+                                            <connections>
492
+                                                <action selector="copyFont:" target="-1" id="GJO-xA-L4q"/>
493
+                                            </connections>
494
+                                        </menuItem>
495
+                                        <menuItem title="Paste Style" keyEquivalent="v" id="vKC-jM-MkH">
496
+                                            <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
497
+                                            <connections>
498
+                                                <action selector="pasteFont:" target="-1" id="JfD-CL-leO"/>
499
+                                            </connections>
500
+                                        </menuItem>
501
+                                    </items>
502
+                                </menu>
503
+                            </menuItem>
504
+                            <menuItem title="Text" id="Fal-I4-PZk">
505
+                                <modifierMask key="keyEquivalentModifierMask"/>
506
+                                <menu key="submenu" title="Text" id="d9c-me-L2H">
507
+                                    <items>
508
+                                        <menuItem title="Align Left" keyEquivalent="{" id="ZM1-6Q-yy1">
509
+                                            <connections>
510
+                                                <action selector="alignLeft:" target="-1" id="zUv-R1-uAa"/>
511
+                                            </connections>
512
+                                        </menuItem>
513
+                                        <menuItem title="Center" keyEquivalent="|" id="VIY-Ag-zcb">
514
+                                            <connections>
515
+                                                <action selector="alignCenter:" target="-1" id="spX-mk-kcS"/>
516
+                                            </connections>
517
+                                        </menuItem>
518
+                                        <menuItem title="Justify" id="J5U-5w-g23">
519
+                                            <modifierMask key="keyEquivalentModifierMask"/>
520
+                                            <connections>
521
+                                                <action selector="alignJustified:" target="-1" id="ljL-7U-jND"/>
522
+                                            </connections>
523
+                                        </menuItem>
524
+                                        <menuItem title="Align Right" keyEquivalent="}" id="wb2-vD-lq4">
525
+                                            <connections>
526
+                                                <action selector="alignRight:" target="-1" id="r48-bG-YeY"/>
527
+                                            </connections>
528
+                                        </menuItem>
529
+                                        <menuItem isSeparatorItem="YES" id="4s2-GY-VfK"/>
530
+                                        <menuItem title="Writing Direction" id="H1b-Si-o9J">
531
+                                            <modifierMask key="keyEquivalentModifierMask"/>
532
+                                            <menu key="submenu" title="Writing Direction" id="8mr-sm-Yjd">
533
+                                                <items>
534
+                                                    <menuItem title="Paragraph" enabled="NO" id="ZvO-Gk-QUH">
535
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
536
+                                                    </menuItem>
537
+                                                    <menuItem id="YGs-j5-SAR">
538
+                                                        <string key="title">	Default</string>
539
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
540
+                                                        <connections>
541
+                                                            <action selector="makeBaseWritingDirectionNatural:" target="-1" id="qtV-5e-UBP"/>
542
+                                                        </connections>
543
+                                                    </menuItem>
544
+                                                    <menuItem id="Lbh-J2-qVU">
545
+                                                        <string key="title">	Left to Right</string>
546
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
547
+                                                        <connections>
548
+                                                            <action selector="makeBaseWritingDirectionLeftToRight:" target="-1" id="S0X-9S-QSf"/>
549
+                                                        </connections>
550
+                                                    </menuItem>
551
+                                                    <menuItem id="jFq-tB-4Kx">
552
+                                                        <string key="title">	Right to Left</string>
553
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
554
+                                                        <connections>
555
+                                                            <action selector="makeBaseWritingDirectionRightToLeft:" target="-1" id="5fk-qB-AqJ"/>
556
+                                                        </connections>
557
+                                                    </menuItem>
558
+                                                    <menuItem isSeparatorItem="YES" id="swp-gr-a21"/>
559
+                                                    <menuItem title="Selection" enabled="NO" id="cqv-fj-IhA">
560
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
561
+                                                    </menuItem>
562
+                                                    <menuItem id="Nop-cj-93Q">
563
+                                                        <string key="title">	Default</string>
564
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
565
+                                                        <connections>
566
+                                                            <action selector="makeTextWritingDirectionNatural:" target="-1" id="lPI-Se-ZHp"/>
567
+                                                        </connections>
568
+                                                    </menuItem>
569
+                                                    <menuItem id="BgM-ve-c93">
570
+                                                        <string key="title">	Left to Right</string>
571
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
572
+                                                        <connections>
573
+                                                            <action selector="makeTextWritingDirectionLeftToRight:" target="-1" id="caW-Bv-w94"/>
574
+                                                        </connections>
575
+                                                    </menuItem>
576
+                                                    <menuItem id="RB4-Sm-HuC">
577
+                                                        <string key="title">	Right to Left</string>
578
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
579
+                                                        <connections>
580
+                                                            <action selector="makeTextWritingDirectionRightToLeft:" target="-1" id="EXD-6r-ZUu"/>
581
+                                                        </connections>
582
+                                                    </menuItem>
583
+                                                </items>
584
+                                            </menu>
585
+                                        </menuItem>
586
+                                        <menuItem isSeparatorItem="YES" id="fKy-g9-1gm"/>
587
+                                        <menuItem title="Show Ruler" id="vLm-3I-IUL">
588
+                                            <modifierMask key="keyEquivalentModifierMask"/>
589
+                                            <connections>
590
+                                                <action selector="toggleRuler:" target="-1" id="FOx-HJ-KwY"/>
591
+                                            </connections>
592
+                                        </menuItem>
593
+                                        <menuItem title="Copy Ruler" keyEquivalent="c" id="MkV-Pr-PK5">
594
+                                            <modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
595
+                                            <connections>
596
+                                                <action selector="copyRuler:" target="-1" id="71i-fW-3W2"/>
597
+                                            </connections>
598
+                                        </menuItem>
599
+                                        <menuItem title="Paste Ruler" keyEquivalent="v" id="LVM-kO-fVI">
600
+                                            <modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
601
+                                            <connections>
602
+                                                <action selector="pasteRuler:" target="-1" id="cSh-wd-qM2"/>
603
+                                            </connections>
604
+                                        </menuItem>
605
+                                    </items>
606
+                                </menu>
607
+                            </menuItem>
608
+                        </items>
609
+                    </menu>
610
+                </menuItem>
611
+                <menuItem title="View" id="H8h-7b-M4v">
612
+                    <modifierMask key="keyEquivalentModifierMask"/>
613
+                    <menu key="submenu" title="View" id="HyV-fh-RgO">
614
+                        <items>
615
+                            <menuItem title="Show Toolbar" keyEquivalent="t" id="snW-S8-Cw5">
616
+                                <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
617
+                                <connections>
618
+                                    <action selector="toggleToolbarShown:" target="-1" id="BXY-wc-z0C"/>
619
+                                </connections>
620
+                            </menuItem>
621
+                            <menuItem title="Customize Toolbar…" id="1UK-8n-QPP">
622
+                                <modifierMask key="keyEquivalentModifierMask"/>
623
+                                <connections>
624
+                                    <action selector="runToolbarCustomizationPalette:" target="-1" id="pQI-g3-MTW"/>
625
+                                </connections>
626
+                            </menuItem>
627
+                            <menuItem isSeparatorItem="YES" id="hB3-LF-h0Y"/>
628
+                            <menuItem title="Show Sidebar" keyEquivalent="s" id="kIP-vf-haE">
629
+                                <modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
630
+                                <connections>
631
+                                    <action selector="toggleSourceList:" target="-1" id="iwa-gc-5KM"/>
632
+                                </connections>
633
+                            </menuItem>
634
+                            <menuItem title="Enter Full Screen" keyEquivalent="f" id="4J7-dP-txa">
635
+                                <modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
636
+                                <connections>
637
+                                    <action selector="toggleFullScreen:" target="-1" id="dU3-MA-1Rq"/>
638
+                                </connections>
639
+                            </menuItem>
640
+                        </items>
641
+                    </menu>
642
+                </menuItem>
643
+                <menuItem title="Window" id="aUF-d1-5bR">
644
+                    <modifierMask key="keyEquivalentModifierMask"/>
645
+                    <menu key="submenu" title="Window" systemMenu="window" id="Td7-aD-5lo">
646
+                        <items>
647
+                            <menuItem title="Minimize" keyEquivalent="m" id="OY7-WF-poV">
648
+                                <connections>
649
+                                    <action selector="performMiniaturize:" target="-1" id="VwT-WD-YPe"/>
650
+                                </connections>
651
+                            </menuItem>
652
+                            <menuItem title="Zoom" id="R4o-n2-Eq4">
653
+                                <modifierMask key="keyEquivalentModifierMask"/>
654
+                                <connections>
655
+                                    <action selector="performZoom:" target="-1" id="DIl-cC-cCs"/>
656
+                                </connections>
657
+                            </menuItem>
658
+                            <menuItem isSeparatorItem="YES" id="eu3-7i-yIM"/>
659
+                            <menuItem title="Bring All to Front" id="LE2-aR-0XJ">
660
+                                <modifierMask key="keyEquivalentModifierMask"/>
661
+                                <connections>
662
+                                    <action selector="arrangeInFront:" target="-1" id="DRN-fu-gQh"/>
663
+                                </connections>
664
+                            </menuItem>
665
+                        </items>
666
+                    </menu>
667
+                </menuItem>
668
+                <menuItem title="Help" id="wpr-3q-Mcd">
669
+                    <modifierMask key="keyEquivalentModifierMask"/>
670
+                    <menu key="submenu" title="Help" systemMenu="help" id="F2S-fz-NVQ">
671
+                        <items>
672
+                            <menuItem title="Foop Help" keyEquivalent="?" id="FKE-Sm-Kum">
673
+                                <connections>
674
+                                    <action selector="showHelp:" target="-1" id="y7X-2Q-9no"/>
675
+                                </connections>
676
+                            </menuItem>
677
+                        </items>
678
+                    </menu>
679
+                </menuItem>
680
+            </items>
681
+            <point key="canvasLocation" x="117" y="-135"/>
682
+        </menu>
683
+        <window title="Foop" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="QvC-M9-y7g">
684
+            <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
685
+            <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
686
+            <rect key="contentRect" x="335" y="390" width="130" height="127"/>
687
+            <rect key="screenRect" x="0.0" y="0.0" width="1680" height="1050"/>
688
+            <view key="contentView" wantsLayer="YES" id="EiT-Mj-1SZ">
689
+                <rect key="frame" x="0.0" y="0.0" width="130" height="127"/>
690
+                <autoresizingMask key="autoresizingMask"/>
691
+                <subviews>
692
+                    <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="tsC-6t-n8w">
693
+                        <rect key="frame" x="14" y="79" width="102" height="32"/>
694
+                        <buttonCell key="cell" type="push" title="Do Things" bezelStyle="rounded" alignment="center" borderStyle="border" identifier="DoThingsBtn" imageScaling="proportionallyDown" inset="2" id="dqd-0y-0la">
695
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
696
+                            <font key="font" metaFont="system"/>
697
+                        </buttonCell>
698
+                    </button>
699
+                    <button identifier="QButton" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="B58-6z-vcj">
700
+                        <rect key="frame" x="14" y="46" width="102" height="32"/>
701
+                        <buttonCell key="cell" type="push" title="???" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="fM6-sP-hqC">
702
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
703
+                            <font key="font" metaFont="system"/>
704
+                        </buttonCell>
705
+                    </button>
706
+                    <button identifier="ProfitBtn" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="kpz-zw-hNc">
707
+                        <rect key="frame" x="14" y="13" width="102" height="32"/>
708
+                        <buttonCell key="cell" type="push" title="Profit!" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="LF1-1d-WyD">
709
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
710
+                            <font key="font" metaFont="system"/>
711
+                        </buttonCell>
712
+                    </button>
713
+                </subviews>
714
+                <constraints>
715
+                    <constraint firstItem="kpz-zw-hNc" firstAttribute="leading" secondItem="EiT-Mj-1SZ" secondAttribute="leading" constant="20" id="FUw-ts-Dvv"/>
716
+                    <constraint firstItem="kpz-zw-hNc" firstAttribute="top" secondItem="B58-6z-vcj" secondAttribute="bottom" constant="12" id="Mo0-Fq-Ekv"/>
717
+                    <constraint firstAttribute="trailing" secondItem="B58-6z-vcj" secondAttribute="trailing" constant="20" id="PrU-3Q-xbT"/>
718
+                    <constraint firstItem="B58-6z-vcj" firstAttribute="top" secondItem="tsC-6t-n8w" secondAttribute="bottom" constant="12" id="R99-fb-R0a"/>
719
+                    <constraint firstAttribute="trailing" secondItem="kpz-zw-hNc" secondAttribute="trailing" constant="20" id="cXz-s9-bm0"/>
720
+                    <constraint firstItem="tsC-6t-n8w" firstAttribute="top" secondItem="EiT-Mj-1SZ" secondAttribute="top" constant="20" id="fgb-wQ-bYz"/>
721
+                    <constraint firstItem="tsC-6t-n8w" firstAttribute="leading" secondItem="EiT-Mj-1SZ" secondAttribute="leading" constant="20" id="gkO-dz-KSN"/>
722
+                    <constraint firstAttribute="trailing" secondItem="tsC-6t-n8w" secondAttribute="trailing" constant="20" id="kvv-3f-CPP"/>
723
+                    <constraint firstItem="B58-6z-vcj" firstAttribute="leading" secondItem="EiT-Mj-1SZ" secondAttribute="leading" constant="20" id="pxX-yN-nxG"/>
724
+                    <constraint firstItem="B58-6z-vcj" firstAttribute="width" secondItem="tsC-6t-n8w" secondAttribute="width" id="raD-LI-R65"/>
725
+                    <constraint firstItem="kpz-zw-hNc" firstAttribute="width" secondItem="B58-6z-vcj" secondAttribute="width" id="sko-eC-fdc"/>
726
+                    <constraint firstAttribute="bottom" secondItem="kpz-zw-hNc" secondAttribute="bottom" constant="20" id="zFb-Pu-3aJ"/>
727
+                </constraints>
728
+            </view>
729
+            <point key="canvasLocation" x="-36" y="44.5"/>
730
+        </window>
731
+    </objects>
732
+</document>
... ...
@@ -13,7 +13,7 @@ demo-app: dylib
13 13
 		--eval '(ccl:save-application "demo-app" :toplevel-function '"'"'demo-app::main :prepend-kernel t)'
14 14
 demo-app.iconset: demo-app.svg
15 15
 	rm -rf demo-app.iconset
16
-	mkdir demo-app.iconset
16
+	mkdir -p demo-app.iconset
17 17
 	rsvg-convert -h 16  demo-app.svg >	demo-app.iconset/icon_16x16.png
18 18
 	rsvg-convert -h 32  demo-app.svg >	demo-app.iconset/icon_16x16@2x.png
19 19
 	rsvg-convert -h 32  demo-app.svg >	demo-app.iconset/icon_32x32.png
... ...
@@ -28,12 +28,13 @@ demo-app.iconset: demo-app.svg
28 28
 mkapp: dylib demo-app demo-app.iconset
29 29
 	rm -rf demo.app
30 30
 	cp -R demo.app.template demo.app
31
-	mkdir demo.app/Contents/{Resources,MacOS}
31
+	mkdir -p demo.app/Contents/{Resources,MacOS}
32 32
 	iconutil -c icns demo-app.iconset -o demo.app/Contents/Resources/demo-app.icns
33
+	ibtool --compile demo.app/Contents/Resources/MainMenu.nib MainMenu.xib
33 34
 	cp demo-app demo.app/Contents/MacOS
34 35
 
35 36
 run: dylib
36
-	$(CCL) --load ~/quicklisp/setup.lisp
37
+	$(CCL) --load ~/quicklisp/setup.lisp \
37 38
 			--eval '(load (compile-file "objc-runtime.asd"))' \
38 39
 			--eval '(ql:quickload :objc-runtime)' \
39 40
 			--eval '(load (compile-file "demo-app.lisp"))' \
... ...
@@ -1,6 +1,7 @@
1 1
 (defpackage :demo-app
2 2
   (:use :cl :objc-runtime)
3
-  (:export ))
3
+  (:export
4
+   #:get-method-names))
4 5
 (in-package :demo-app)
5 6
 (named-readtables:in-readtable :objc-readtable)
6 7
 
... ...
@@ -145,7 +146,24 @@
145 146
             [#@NSApplication shared-application]
146 147
             [objc-runtime::ns-app set-activation-policy :int 0]
147 148
 
149
+            (let ((app-delegate (objc-runtime::objc-allocate-class-pair #@NSObject
150
+                                                                        "AppDelegate"
151
+                                                                        0)))
152
+              (objc-runtime::add-pointer-ivar app-delegate "window")
153
+              (objc-runtime::add-pointer-ivar app-delegate "delegate"))
154
+
155
+            (let* ((bundle [#@NSBundle @(mainBundle)])
156
+                   (nib [[#@NSNib @(alloc)] @(initWithNibNamed:bundle:)
157
+                        :pointer @"MainMenu"
158
+                        :pointer bundle]))
159
+              (cffi:with-foreign-object (p :pointer)
160
+                [nib @(instantiateWithOwner:topLevelObjects:)
161
+                :pointer objc-runtime::ns-app
162
+                :pointer p]))
163
+            [ objc-runtime::ns-app activate-ignoring-other-apps :boolean t]
164
+            [ objc-runtime::ns-app run]
148 165
             ;; (break)
166
+            #+null
149 167
             (let* ((application-name [[#@NSProcessInfo process-info] process-name]))
150 168
               (let* ((menubar [[#@NSMenu new] autorelease])
151 169
                      (app-menu-item [[#@NSMenuItem new] autorelease])
... ...
@@ -7,6 +7,6 @@
7 7
     <key>CFBundleIdentifier</key>
8 8
     <string>com.fwoar.demo-app</string>
9 9
     <key>CFBundleIconFile</key>
10
-    <string>AppIcon</string>
10
+    <string>demo-app</string>
11 11
   </dict>
12 12
 </plist>
... ...
@@ -11,6 +11,7 @@
11 11
                #:fwoar.lisputils
12 12
                #:cffi
13 13
                #:trivial-main-thread
14
+               #:trivial-features
14 15
                #:cffi-libffi)
15 16
   :defsystem-depends-on (#:cffi-grovel)
16 17
   :components ((:file "package")
... ...
@@ -31,6 +31,10 @@
31 31
   (name :string)
32 32
   (extra-bytes :int))
33 33
 
34
+(defcfun (objc-register-class-pair "objc_registerClassPair" :library foundation)
35
+    :void
36
+  (superclass :pointer))
37
+
34 38
 (defcfun (objc-get-protocol "objc_getProtocol" :library foundation)
35 39
     :pointer
36 40
   (name :string))
... ...
@@ -40,6 +44,26 @@
40 44
   (class :pointer)
41 45
   (protocol :pointer))
42 46
 
47
+(serapeum:eval-always
48
+  (defctype sizet
49
+      :ulong
50
+      #+32-bit-target :uint))
51
+
52
+(defcfun (class-add-ivar "class_addIvar" :library foundation)
53
+    :boolean
54
+  (class :pointer)
55
+  (name :string)
56
+  (size :ulong)
57
+  (alignment :uint8)
58
+  (types :string))
59
+
60
+(defun add-pointer-ivar (class name)
61
+  (class-add-ivar class name
62
+                  (foreign-type-size :pointer)
63
+                  (floor (log (foreign-type-size :pointer)
64
+                              2))
65
+                  "@"))
66
+
43 67
 (defcfun (objc-class-get-name "class_getName" :library foundation)
44 68
     :string
45 69
   (cls o-class))
... ...
@@ -98,6 +122,17 @@
98 122
   (object :pointer)
99 123
   (ivar :pointer))
100 124
 
125
+(defcfun (class-get-instance-variable "class_getInstanceVariable" :library foundation)
126
+    :pointer
127
+  (class :pointer)
128
+  (name :string))
129
+
130
+(defcfun (object-get-instance-variable "object_getInstanceVariable" :library foundation)
131
+    :pointer
132
+  (object :pointer)
133
+  (name :string)
134
+  (out :pointer))
135
+
101 136
 (defcfun (class-get-property "class_getProperty" :library foundation)
102 137
     :pointer
103 138
   (cls o-class)