Browse code
Load ui from nib !!!
Ed L authored on 09/01/2018 09:32:48
Showing 6 changed files
Showing 6 changed files
- MainMenu.xib
- Makefile
- demo-app.lisp
- demo.app.template/Contents/Info.plist
- objc-runtime.asd
- objc-runtime.lisp
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]) |
... | ... |
@@ -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) |