Commit | Line | Data |
---|---|---|
e8af40ee | 1 | ;;; idlw-toolbar.el --- a debugging toolbar for IDLWAVE |
d7a0267c | 2 | |
4e643dd2 | 3 | ;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 |
d7a0267c | 4 | ;; Free Software Foundation, Inc. |
8c7b4ec8 | 5 | |
5e72c6b2 S |
6 | ;; Author: Carsten Dominik <dominik@astro.uva.nl> |
7 | ;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu> | |
d6debdcd | 8 | ;; Version: 6.1_em22 |
8c7b4ec8 EZ |
9 | ;; Keywords: processes |
10 | ||
11 | ;; This file is part of GNU Emacs. | |
12 | ||
b1fc2b50 | 13 | ;; GNU Emacs is free software: you can redistribute it and/or modify |
8c7b4ec8 | 14 | ;; it under the terms of the GNU General Public License as published by |
b1fc2b50 GM |
15 | ;; the Free Software Foundation, either version 3 of the License, or |
16 | ;; (at your option) any later version. | |
8c7b4ec8 EZ |
17 | |
18 | ;; GNU Emacs is distributed in the hope that it will be useful, | |
19 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
20 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
21 | ;; GNU General Public License for more details. | |
22 | ||
23 | ;; You should have received a copy of the GNU General Public License | |
b1fc2b50 | 24 | ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
8c7b4ec8 EZ |
25 | |
26 | ;;; Commentary: | |
27 | ||
28 | ;; This file implements a debugging toolbar for IDLWAVE. It requires | |
29 | ;; Emacs or XEmacs with toolbar and xpm support. | |
30 | ||
5e72c6b2 S |
31 | ;; New versions of IDLWAVE, documentation, and more information |
32 | ;; available from: | |
33 | ;; http://idlwave.org | |
34 | ||
8c7b4ec8 EZ |
35 | \f |
36 | ;;; Code: | |
37 | ||
38 | (eval-when-compile (require 'cl)) | |
39 | ||
40 | (defun idlwave-toolbar-make-button (image) | |
41 | (if (featurep 'xemacs) | |
42 | (toolbar-make-button-list image) | |
43 | (list 'image :type 'xpm :data image))) | |
44 | ||
c56509c0 | 45 | (defvar idlwave-toolbar) |
8e0b12d3 | 46 | (defvar default-toolbar) |
c56509c0 RS |
47 | (defvar idlwave-toolbar-is-possible) |
48 | ||
8c7b4ec8 EZ |
49 | (if (not (or (and (featurep 'xemacs) ; This is XEmacs |
50 | (featurep 'xpm) ; need xpm | |
51 | (featurep 'toolbar)) ; ... and the toolbar | |
52 | (and (not (featurep 'xemacs)) ; This is Emacs | |
8124289f | 53 | (boundp 'tool-bar-button-margin) ; need toolbar |
8c7b4ec8 EZ |
54 | (fboundp 'image-type-available-p) ; need image stuff |
55 | (image-type-available-p 'xpm)) ; need xpm | |
56 | )) | |
57 | ;; oops - cannot do the toolbar | |
58 | (message "Sorry, IDLWAVE xpm toolbar cannot be used on this version of Emacs") | |
59 | ;; OK, we can define a toolbar | |
60 | ||
8124289f CD |
61 | (defconst idlwave-toolbar-is-possible t |
62 | "When defined, indicates that a toolbar is possible with this Emacs.") | |
8c7b4ec8 EZ |
63 | (defvar idlwave-toolbar-compile-icon |
64 | (idlwave-toolbar-make-button | |
65 | "/* XPM */ | |
66 | static char * file[] = { | |
67 | \"28 28 2 1\", | |
5e72c6b2 | 68 | \" c None s backgroundToolBarColor\", |
8c7b4ec8 EZ |
69 | \". c #000000000000\", |
70 | \" \", | |
71 | \" \", | |
72 | \" \", | |
73 | \" . \", | |
74 | \" .. ... .. \", | |
75 | \" .... ... .... \", | |
76 | \" ............. \", | |
77 | \" ........... \", | |
78 | \" ................... \", | |
79 | \" ........ ........ \", | |
80 | \" ..... ........ \", | |
81 | \" .... ......... \", | |
82 | \" ..... .. ... ..... \", | |
83 | \" ...... .. .. ...... \", | |
84 | \" ..... ... .. ..... \", | |
85 | \" ......... .... \", | |
86 | \" ........ ..... \", | |
87 | \" ........ ........ \", | |
88 | \" ................... \", | |
89 | \" ........... \", | |
90 | \" ............. \", | |
91 | \" .... ... .... \", | |
92 | \" .. ... .. \", | |
93 | \" . \", | |
94 | \" \", | |
95 | \" \", | |
96 | \" \", | |
97 | \" \"};") | |
98 | "The compile icon.") | |
99 | ||
100 | (defvar idlwave-toolbar-next-error-icon | |
101 | (idlwave-toolbar-make-button | |
102 | "/* XPM */ | |
103 | static char * file[] = { | |
104 | \"28 28 3 1\", | |
5e72c6b2 | 105 | \" c None s backgroundToolBarColor\", |
8c7b4ec8 EZ |
106 | \". c #000000000000\", |
107 | \"R c #FFFF00000000\", | |
108 | \" \", | |
109 | \" \", | |
110 | \" R \", | |
111 | \" RR RRR RR \", | |
112 | \" RRRR RRR RRRR \", | |
113 | \" RRRRRRRRRRRRR \", | |
114 | \" RRRRRRRRRRR \", | |
115 | \" RRRRRRRRRRRRRRRRRRR \", | |
116 | \" RRRRRRRR \", | |
117 | \" RRRRR \", | |
118 | \" RRRR \", | |
119 | \" ........ \", | |
120 | \" ........ \", | |
121 | \" ......... \", | |
122 | \" ..... .. ... ..... \", | |
123 | \" ...... .. .. ...... \", | |
124 | \" ..... ... .. ..... \", | |
125 | \" ......... .... \", | |
126 | \" ........ ..... \", | |
127 | \" ........ ........ \", | |
128 | \" ................... \", | |
129 | \" ........... \", | |
130 | \" ............. \", | |
131 | \" .... ... .... \", | |
132 | \" .. ... .. \", | |
133 | \" . \", | |
134 | \" \", | |
135 | \" \"};") | |
136 | "The Next Error icon.") | |
137 | ||
138 | (defvar idlwave-toolbar-stop-at-icon | |
139 | (idlwave-toolbar-make-button | |
140 | "/* XPM */ | |
141 | static char * file[] = { | |
142 | \"28 28 3 1\", | |
5e72c6b2 | 143 | \" c None s backgroundToolBarColor\", |
8c7b4ec8 EZ |
144 | \". c #000000000000\", |
145 | \"R c #FFFF00000000\", | |
146 | \" \", | |
147 | \" \", | |
148 | \" \", | |
149 | \" \", | |
150 | \" ........ \", | |
151 | \" .RRRRRRRR. \", | |
152 | \" .RRRRRRRRRR. \", | |
153 | \" .RRRRRRRRRRRR. \", | |
154 | \" .RRRRRRRRRRRRRR. \", | |
155 | \" .RRRRRRRRRRRRRRRR. \", | |
156 | \" .RRRRRRRRRRRRRRRRRR. \", | |
157 | \" .RRRRRRRRRRRRRRRRRR. \", | |
158 | \" .RRRRRRRRRRRRRRRRRR. \", | |
159 | \" .RRRRRRRRRRRRRRRRRR. \", | |
160 | \" .RRRRRRRRRRRRRRRRRR. \", | |
161 | \" .RRRRRRRRRRRRRRRRRR. \", | |
162 | \" .RRRRRRRRRRRRRRRRRR. \", | |
163 | \" .RRRRRRRRRRRRRRRRRR. \", | |
164 | \" .RRRRRRRRRRRRRRRR. \", | |
165 | \" .RRRRRRRRRRRRRR. \", | |
166 | \" .RRRRRRRRRRRR. \", | |
167 | \" .RRRRRRRRRR. \", | |
168 | \" .RRRRRRRR. \", | |
169 | \" ........ \", | |
170 | \" \", | |
171 | \" \", | |
172 | \" \", | |
173 | \" \"};") | |
174 | "The Stop At icon.") | |
175 | ||
8c7b4ec8 EZ |
176 | |
177 | (defvar idlwave-toolbar-clear-at-icon | |
178 | (idlwave-toolbar-make-button | |
179 | "/* XPM */ | |
180 | static char * file[] = { | |
181 | \"28 28 3 1\", | |
5e72c6b2 | 182 | \" c None s backgroundToolBarColor\", |
8c7b4ec8 EZ |
183 | \". c #000000000000\", |
184 | \"R c #FFFF00000000\", | |
185 | \" \", | |
186 | \" \", | |
187 | \" \", | |
188 | \" ... ... \", | |
189 | \" ... ........ ... \", | |
190 | \" ... .RRRRRRRR. ... \", | |
191 | \" ....RRRRRRRRRR.... \", | |
192 | \" ...RRRRRRRRRR... \", | |
193 | \" ....RRRRRRRR.... \", | |
194 | \" .RR...RRRRRR...RR. \", | |
195 | \" .RRRR...RRRR...RRRR. \", | |
196 | \" .RRRRR...RR...RRRRR. \", | |
197 | \" .RRRRRR......RRRRRR. \", | |
198 | \" .RRRRRRR....RRRRRRR. \", | |
199 | \" .RRRRRRR....RRRRRRR. \", | |
200 | \" .RRRRRR......RRRRRR. \", | |
201 | \" .RRRRR...RR...RRRRR. \", | |
202 | \" .RRRR...RRRR...RRRR. \", | |
203 | \" .RR...RRRRRR...RR. \", | |
204 | \" ....RRRRRRRR.... \", | |
205 | \" ...RRRRRRRRRR... \", | |
206 | \" ....RRRRRRRRRR.... \", | |
207 | \" ... .RRRRRRRR. ... \", | |
208 | \" ... ........ ... \", | |
209 | \" ... ... \", | |
210 | \" \", | |
211 | \" \", | |
212 | \" \"};") | |
213 | "The Clear At icon.") | |
214 | ||
215 | (defvar idlwave-toolbar-clear-all-icon | |
216 | (idlwave-toolbar-make-button | |
217 | "/* XPM */ | |
218 | static char * file[] = { | |
219 | \"28 28 4 1\", | |
5e72c6b2 | 220 | \" c None s backgroundToolBarColor\", |
8c7b4ec8 EZ |
221 | \". c #000000000000\", |
222 | \"X c #FFFFFFFFFFFF\", | |
223 | \"R c #FFFF00000000\", | |
224 | \" \", | |
225 | \" \", | |
226 | \" \", | |
227 | \" .. .... .... .. \", | |
228 | \" ...RRRR. .RRRR... \", | |
229 | \" ...RRRR. .RRRR... \", | |
230 | \" .R...RRRR. .RRRR...R. \", | |
231 | \" .RR...RRR. .RRR...RR. \", | |
232 | \" .RRR...RR. .RR...RRR. \", | |
233 | \" .RRRR...R. .R...RRRR. \", | |
234 | \" .RRRR... ...RRRR. \", | |
235 | \" .RRRR... ...RRRR. \", | |
236 | \" .... ... ... .... \", | |
237 | \" ..... \", | |
238 | \" ... \", | |
239 | \" .... ..... .... \", | |
240 | \" .RRRR.... ....RRRR. \", | |
241 | \" .RRRRR... ...RRRRR. \", | |
242 | \" .RRRRR.... ....RRRRR. \", | |
243 | \" .RRRR...R. .R...RRRR. \", | |
244 | \" .RRR...RR. .RR...RRR. \", | |
245 | \" .RR...RRR. .RRR...RR. \", | |
246 | \" ....RRR. .RRR.... \", | |
247 | \" ...RRR. .RRR... \", | |
248 | \" ....... ....... \", | |
249 | \" \", | |
250 | \" \", | |
251 | \" \"};") | |
252 | "The Clear-All icon.") | |
253 | ||
52a244eb S |
254 | (defvar idlwave-toolbar-stop-beginning-icon |
255 | (idlwave-toolbar-make-button | |
256 | "/* XPM */ | |
257 | static char * file[] = { | |
258 | \"28 28 4 1\", | |
259 | \" c None s backgroundToolBarColor\", | |
260 | \". c #000000000000\", | |
261 | \"X c #FFFF00000000\", | |
262 | \"_ c #FFFFFFFFFFFF\", | |
263 | \" \", | |
264 | \" \", | |
265 | \" \", | |
266 | \" \", | |
267 | \" ........ \", | |
268 | \" .XXXXXXXX. \", | |
269 | \" .XXXXXXXXXX. \", | |
270 | \" .XXXXXXXXXXXX. \", | |
271 | \" .XX..XXXXXXXXXX. \", | |
272 | \" .XX.XX.X______XXX. \", | |
273 | \" .XXX.XX.X______XXXX. \", | |
274 | \" .XXXX..XXXXXXXXXXXX. \", | |
275 | \" .XXXXXXXXXX____XXXX. \", | |
276 | \" .XXXXXXXXXX____XXXX. \", | |
277 | \" .XXXXXXXXXXXXXXXXXX. \", | |
278 | \" .XXXXXXXXXX____XXXX. \", | |
279 | \" .XXXXXXXXXX____XXXX. \", | |
280 | \" .XXXXXXXXXXXXXXXXXX. \", | |
281 | \" .XXXXXXXXX____XXX. \", | |
282 | \" .XXXXXXXX____XX. \", | |
283 | \" .XXXXXXXXXXXX. \", | |
284 | \" .XXXXXXXXXX. \", | |
285 | \" .XXXXXXXX. \", | |
286 | \" ........ \", | |
287 | \" \", | |
288 | \" \", | |
289 | \" \", | |
290 | \" \"};") | |
291 | "The Stop at Beginning icon.") | |
292 | ||
293 | (defvar idlwave-toolbar-stop-in-icon | |
294 | (idlwave-toolbar-make-button | |
295 | "/* XPM */ | |
296 | static char * file[] = { | |
297 | \"28 28 4 1\", | |
298 | \" c None s backgroundToolBarColor\", | |
299 | \"_ c #FFFFFFFFFFFF\", | |
300 | \". c #000000000000\", | |
301 | \"R c #FFFF00000000\", | |
302 | \" \", | |
303 | \" \", | |
304 | \" \", | |
305 | \" \", | |
306 | \" ........ \", | |
307 | \" .RRRRRRRR. \", | |
308 | \" .RRRRRRRRRR. \", | |
309 | \" .RRRRRRRRRRRR. \", | |
310 | \" .RRR___RR___RRR. \", | |
311 | \" .RRRR__RRRR__RRRR. \", | |
312 | \" .RRRRR__RRRR__RRRRR. \", | |
313 | \" .RRRRR__RRRR__RRRRR. \", | |
314 | \" .RRRRR__RRRR__RRRRR. \", | |
315 | \" .RRRR__RRRRRR__RRRR. \", | |
316 | \" .RRRRR__RRRR__RRRRR. \", | |
317 | \" .RRRRR__RRRR__RRRRR. \", | |
318 | \" .RRRRR__RRRR__RRRRR. \", | |
319 | \" .RRRRR__RRRR__RRRRR. \", | |
320 | \" .RRRR___RR___RRRR. \", | |
321 | \" .RRRRRRRRRRRRRR. \", | |
322 | \" .RRRRRRRRRRRR. \", | |
323 | \" .RRRRRRRRRR. \", | |
324 | \" .RRRRRRRR. \", | |
325 | \" ........ \", | |
326 | \" \", | |
327 | \" \", | |
328 | \" \", | |
329 | \" \"};") | |
330 | "The Stop in icon.") | |
331 | ||
8c7b4ec8 EZ |
332 | (defvar idlwave-toolbar-edit-cmd-icon |
333 | (idlwave-toolbar-make-button | |
334 | "/* XPM */ | |
335 | static char * file[] = { | |
336 | \"28 28 2 1\", | |
5e72c6b2 | 337 | \" c None s backgroundToolBarColor\", |
8c7b4ec8 EZ |
338 | \". c #000000000000\", |
339 | \" \", | |
340 | \" \", | |
341 | \" \", | |
342 | \" \", | |
343 | \" \", | |
344 | \" \", | |
345 | \" \", | |
346 | \" \", | |
347 | \" \", | |
348 | \" \", | |
349 | \" \", | |
350 | \" .. \", | |
351 | \" .. \", | |
352 | \" .. \", | |
353 | \" .. \", | |
354 | \" .. \", | |
355 | \" \", | |
356 | \" \", | |
357 | \" ................. \", | |
358 | \" \", | |
359 | \" \", | |
360 | \" \", | |
361 | \" \", | |
362 | \" \", | |
363 | \" \", | |
364 | \" \", | |
365 | \" \", | |
366 | \" \"};") | |
367 | "The edit-cmd icon") | |
368 | ||
369 | (defvar idlwave-toolbar-run-icon | |
370 | (idlwave-toolbar-make-button | |
371 | "/* XPM */ | |
372 | static char * file[] = { | |
373 | \"28 28 3 1\", | |
5e72c6b2 | 374 | \" c None s backgroundToolBarColor\", |
8c7b4ec8 EZ |
375 | \". s FgColor c #000000000000\", |
376 | \"G c #0000BBBB0000\", | |
377 | \" \", | |
378 | \" \", | |
379 | \" \", | |
380 | \" \", | |
381 | \" ..... \", | |
382 | \" .GGG. \", | |
383 | \" .GGG. \", | |
384 | \" .GGG. ....... \", | |
385 | \" .GGG. \", | |
386 | \" .GGG. \", | |
387 | \" .GGG. ....... \", | |
388 | \" .GGG. \", | |
389 | \" ....GGG.... \", | |
390 | \" .GGGGGGG. ....... \", | |
391 | \" .GGGGG. \", | |
392 | \" .GGG. \", | |
393 | \" .G. ....... \", | |
394 | \" . \", | |
395 | \" \", | |
396 | \" ....... \", | |
397 | \" \", | |
398 | \" \", | |
399 | \" ....... \", | |
400 | \" \", | |
401 | \" \", | |
402 | \" \", | |
403 | \" \", | |
404 | \" \"};") | |
405 | "The Run icon.") | |
406 | ||
407 | (defvar idlwave-toolbar-cont-icon | |
408 | (idlwave-toolbar-make-button | |
409 | "/* XPM */ | |
410 | static char * file[] = { | |
411 | \"28 28 3 1\", | |
5e72c6b2 | 412 | \" c None s backgroundToolBarColor\", |
8c7b4ec8 EZ |
413 | \". s FgColor c #000000000000\", |
414 | \"G c #0000BBBB0000\", | |
415 | \" \", | |
416 | \" \", | |
417 | \" \", | |
418 | \" ....... \", | |
419 | \" \", | |
420 | \" ....... \", | |
421 | \" .GGGGGG. ....... \", | |
422 | \" .GGGGGGG. \", | |
423 | \" .GGG..... \", | |
424 | \" .GGG. ....... \", | |
425 | \" .GGG. \", | |
426 | \" .GGG. \", | |
427 | \" .GGG. ....... \", | |
428 | \" .GGG. \", | |
429 | \" ....GGG.... \", | |
430 | \" .GGGGGGG. ....... \", | |
431 | \" .GGGGG. \", | |
432 | \" .GGG. \", | |
433 | \" .G. ....... \", | |
434 | \" . \", | |
435 | \" \", | |
436 | \" ....... \", | |
437 | \" \", | |
438 | \" \", | |
439 | \" \", | |
440 | \" \", | |
441 | \" \", | |
442 | \" \"};") | |
52a244eb | 443 | "The Cont icon.") |
8c7b4ec8 EZ |
444 | |
445 | (defvar idlwave-toolbar-to-here-icon | |
446 | (idlwave-toolbar-make-button | |
447 | "/* XPM */ | |
448 | static char * file[] = { | |
449 | \"28 28 4 1\", | |
5e72c6b2 | 450 | \" c None s backgroundToolBarColor\", |
8c7b4ec8 EZ |
451 | \". c #000000000000\", |
452 | \"G c #0000BBBB0000\", | |
453 | \"R c #FFFF00000000\", | |
454 | \" \", | |
455 | \" \", | |
456 | \" \", | |
457 | \" \", | |
458 | \" \", | |
459 | \" \", | |
460 | \" ..... ........ \", | |
461 | \" .GGGG. \", | |
462 | \" .GGGGG. \", | |
463 | \" .GG.... ........ \", | |
464 | \" .GG. \", | |
465 | \" .GG. . \", | |
466 | \" .GG. .. \", | |
467 | \" .GG. .G. ...... \", | |
468 | \" .GG...GG. \", | |
469 | \" .GGGGGGGG. RRRRRR \", | |
470 | \" .GGGGGGGGG. RRRRRR \", | |
471 | \" .GGGGGGG. RRRRRR \", | |
472 | \" ....GG. \", | |
473 | \" .G. ...... \", | |
474 | \" .. \", | |
475 | \" . \", | |
476 | \" \", | |
477 | \" \", | |
478 | \" \", | |
479 | \" \", | |
480 | \" \", | |
481 | \" \"};") | |
482 | "The Cont-to-here icon.") | |
483 | ||
484 | (defvar idlwave-toolbar-step-over-icon | |
485 | (idlwave-toolbar-make-button | |
486 | "/* XPM */ | |
487 | static char * file[] = { | |
488 | \"28 28 3 1\", | |
5e72c6b2 | 489 | \" c None s backgroundToolBarColor\", |
8c7b4ec8 EZ |
490 | \". c #000000000000\", |
491 | \"G c #0000BBBB0000\", | |
492 | \" \", | |
493 | \" \", | |
494 | \" \", | |
495 | \" \", | |
496 | \" \", | |
497 | \" \", | |
498 | \" ..... \", | |
499 | \" .GGGG. ....... \", | |
500 | \" .GGGGG. \", | |
501 | \" .GG.... \", | |
502 | \" .GG. ....... \", | |
503 | \" .GG. . \", | |
504 | \" .GG. .. \", | |
505 | \" .GG. .G. ....... \", | |
506 | \" .GG...GG. \", | |
507 | \" .GGGGGGGG. \", | |
508 | \" .GGGGGGGGG. ....... \", | |
509 | \" .GGGGGGG. \", | |
510 | \" ....GG. \", | |
511 | \" .G. ....... \", | |
512 | \" .. \", | |
513 | \" . \", | |
514 | \" ....... \", | |
515 | \" \", | |
516 | \" \", | |
517 | \" \", | |
518 | \" \", | |
519 | \" \"};") | |
520 | "The Step Over icon.") | |
521 | ||
522 | (defvar idlwave-toolbar-step-into-icon | |
523 | (idlwave-toolbar-make-button | |
524 | "/* XPM */ | |
525 | static char * file[] = { | |
526 | \"28 28 3 1\", | |
5e72c6b2 | 527 | \" c None s backgroundToolBarColor\", |
8c7b4ec8 EZ |
528 | \". c #000000000000\", |
529 | \"G c #0000BBBB0000\", | |
530 | \" \", | |
531 | \" \", | |
532 | \" \", | |
533 | \" \", | |
534 | \" \", | |
535 | \" \", | |
536 | \" ..... ....... \", | |
537 | \" .GGGG. \", | |
538 | \" .GGGGG. \", | |
539 | \" .GG.... ........ \", | |
540 | \" .GG. \", | |
541 | \" .GG. . \", | |
542 | \" .GG. .. \", | |
543 | \" .GG. .G. \", | |
544 | \" .GG...GG. ....... \", | |
545 | \" .GGGGGGGG. \", | |
546 | \" .GGGGGGGGG. \", | |
547 | \" .GGGGGGG. ....... \", | |
548 | \" ....GG. \", | |
549 | \" .G. \", | |
550 | \" .. ....... \", | |
551 | \" . \", | |
552 | \" \", | |
553 | \" \", | |
554 | \" \", | |
555 | \" \", | |
556 | \" \", | |
557 | \" \"};") | |
558 | "The Step Into icon.") | |
559 | ||
560 | (defvar idlwave-toolbar-step-out-icon | |
561 | (idlwave-toolbar-make-button | |
562 | "/* XPM */ | |
563 | static char * file[] = { | |
564 | \"28 28 3 1\", | |
5e72c6b2 | 565 | \" c None s backgroundToolBarColor\", |
8c7b4ec8 EZ |
566 | \". c #000000000000\", |
567 | \"G c #0000BBBB0000\", | |
568 | \" \", | |
569 | \" \", | |
570 | \" \", | |
571 | \" \", | |
572 | \" \", | |
573 | \" \", | |
574 | \" . \", | |
575 | \" .. ........ \", | |
576 | \" .G. \", | |
577 | \" ....GG. \", | |
578 | \" .GGGGGGG. ........ \", | |
579 | \" .GGGGGGGGG. \", | |
580 | \" .GGGGGGGG. \", | |
581 | \" .GG...GG. ........ \", | |
582 | \" .GG. .G. \", | |
583 | \" .GG. .. \", | |
584 | \" .GG. . \", | |
585 | \" .GG. \", | |
586 | \" .GG....... ....... \", | |
587 | \" .GGGGGGGG. \", | |
588 | \" .GGGGGGG. \", | |
589 | \" ........ ....... \", | |
590 | \" \", | |
591 | \" \", | |
592 | \" \", | |
593 | \" \", | |
594 | \" \", | |
595 | \" \"};") | |
596 | "The Step up icon.") | |
597 | ||
598 | ||
599 | (defvar idlwave-toolbar-eval-icon | |
600 | (idlwave-toolbar-make-button | |
601 | "/* XPM */ | |
602 | static char * file[] = { | |
603 | \"28 28 2 1\", | |
5e72c6b2 | 604 | \" c None s backgroundToolBarColor\", |
8c7b4ec8 EZ |
605 | \". c #000000000000\", |
606 | \" \", | |
607 | \" \", | |
608 | \" \", | |
609 | \" \", | |
610 | \" \", | |
611 | \" \", | |
612 | \" \", | |
613 | \" \", | |
614 | \" \", | |
615 | \" \", | |
616 | \" \", | |
617 | \" .... \", | |
618 | \" .. .. ...... \", | |
619 | \" .. .. ...... \", | |
620 | \" .. .. \", | |
621 | \" .. .. ...... \", | |
622 | \" .. .. ...... \", | |
623 | \" .... \", | |
624 | \" .. \", | |
625 | \" .. \", | |
626 | \" \", | |
627 | \" \", | |
628 | \" \", | |
629 | \" \", | |
630 | \" \", | |
631 | \" \", | |
632 | \" \", | |
633 | \" \"};") | |
634 | "The Evaluate icon.") | |
635 | ||
636 | (defvar idlwave-toolbar-stack-up-icon | |
637 | (idlwave-toolbar-make-button | |
638 | "/* XPM */ | |
639 | static char * file[] = { | |
640 | \"28 28 5 1\", | |
5e72c6b2 | 641 | \" c None s backgroundToolBarColor\", |
8c7b4ec8 EZ |
642 | \". s FgColor c #000000000000\", |
643 | \"_ c #FFFFFFFFFFFF\", | |
644 | \"G c #0000BBBB0000\", | |
645 | \"R c #FFFF00000000\", | |
646 | \" \", | |
647 | \" \", | |
648 | \" \", | |
649 | \" \", | |
650 | \" \", | |
651 | \" ........ . \", | |
652 | \" .______. ... \", | |
653 | \" .______. ..... \", | |
654 | \" .______. ....... \", | |
655 | \" .______. ... \", | |
656 | \" .______. ... \", | |
657 | \" ........ ... \", | |
658 | \" .GGGGGG. ... \", | |
659 | \" .GGGGGG. ... \", | |
660 | \" .GGGGGG. \", | |
661 | \" .GGGGGG. \", | |
662 | \" .GGGGGG. \", | |
663 | \" ........ \", | |
664 | \" .RRRRRR. \", | |
665 | \" .RRRRRR. \", | |
666 | \" .RRRRRR. \", | |
667 | \" .RRRRRR. \", | |
668 | \" .RRRRRR. \", | |
669 | \" ........ \", | |
670 | \" \", | |
671 | \" \", | |
672 | \" \", | |
673 | \" \"};") | |
674 | "The Stack Up icon.") | |
675 | ||
676 | (defvar idlwave-toolbar-stack-down-icon | |
677 | (idlwave-toolbar-make-button | |
678 | "/* XPM */ | |
679 | static char * file[] = { | |
680 | \"28 28 5 1\", | |
5e72c6b2 | 681 | \" c None s backgroundToolBarColor\", |
8c7b4ec8 EZ |
682 | \". s FgColor c #000000000000\", |
683 | \"_ c #FFFFFFFFFFFF\", | |
684 | \"G c #0000BBBB0000\", | |
685 | \"R c #FFFF00000000\", | |
686 | \" \", | |
687 | \" \", | |
688 | \" \", | |
689 | \" \", | |
690 | \" \", | |
691 | \" ........ \", | |
692 | \" .______. \", | |
693 | \" .______. \", | |
694 | \" .______. \", | |
695 | \" .______. \", | |
696 | \" .______. \", | |
697 | \" ........ \", | |
698 | \" .GGGGGG. \", | |
699 | \" .GGGGGG. \", | |
700 | \" .GGGGGG. \", | |
701 | \" .GGGGGG. ... \", | |
702 | \" .GGGGGG. ... \", | |
703 | \" ........ ... \", | |
704 | \" .RRRRRR. ... \", | |
705 | \" .RRRRRR. ... \", | |
706 | \" .RRRRRR. ....... \", | |
707 | \" .RRRRRR. ..... \", | |
708 | \" .RRRRRR. ... \", | |
709 | \" ........ . \", | |
710 | \" \", | |
711 | \" \", | |
712 | \" \", | |
713 | \" \"};") | |
714 | "The Stack Down icon.") | |
715 | ||
716 | (defvar idlwave-toolbar-reset-icon | |
717 | (idlwave-toolbar-make-button | |
718 | "/* XPM */ | |
719 | static char * file[] = { | |
720 | \"28 28 3 1\", | |
5e72c6b2 | 721 | \" c None s backgroundToolBarColor\", |
8c7b4ec8 EZ |
722 | \"G c #0000BBBB0000\", |
723 | \". c #000000000000\", | |
724 | \" \", | |
725 | \" \", | |
726 | \" \", | |
727 | \" . \", | |
728 | \" .G. . \", | |
729 | \" .GGG.. .G. \", | |
730 | \" .GGGGG..GG. \", | |
731 | \" ..GGGGGGGG. \", | |
732 | \" ..GGGGGG. \", | |
733 | \" ..GGGGG. \", | |
734 | \" .GGGGGG. \", | |
735 | \" .G...... \", | |
736 | \" \", | |
737 | \" ..... \", | |
738 | \" ......... \", | |
739 | \" ......... \", | |
740 | \" ......... \", | |
741 | \" . ..... . \", | |
742 | \" . . \", | |
743 | \" . . \", | |
744 | \" . . \", | |
745 | \" . . \", | |
746 | \" . . \", | |
747 | \" .. .. \", | |
748 | \" ....... \", | |
749 | \" ..... \", | |
750 | \" \", | |
751 | \" \"};") | |
752 | "The Reset icon.") | |
753 | ||
52a244eb S |
754 | (defvar idlwave-toolbar-electric-debug-icon |
755 | (idlwave-toolbar-make-button | |
756 | "/* XPM */ | |
757 | static char * file[] = { | |
758 | \"28 28 8 1\", | |
759 | \" c None s backgroundToolBarColor\", | |
760 | \". c #CFC854\", | |
761 | \"+ c #EEDB0E\", | |
762 | \"@ c #D2C739\", | |
763 | \"# c #A39C54\", | |
764 | \"$ c #CDC020\", | |
765 | \"% c #020202\", | |
766 | \"& c #D60E36\", | |
767 | \" \", | |
768 | \" \", | |
769 | \" .. \", | |
770 | \" +++++@ \", | |
771 | \" ++++++ \", | |
772 | \" +++++@ \", | |
773 | \" +++++ \", | |
774 | \" #++++@ \", | |
775 | \" $+++@ %% %% \", | |
776 | \" ++++++$ % % \", | |
777 | \" #+++++$ % % \", | |
778 | \" #++$# %%% \", | |
779 | \" #+++ %%%%%%% \", | |
780 | \" .++ %%%%%%%%%%% \", | |
781 | \" ++$$ %%%%%%%%%%% \", | |
782 | \" .+@# &&%%%%%%%&& \", | |
783 | \" .++++# &&&&&%%%&&&&& \", | |
784 | \" +++++$ &&%%&&&&&%%&& \", | |
785 | \" $+++$ &&%%&&&&&%%&& \", | |
786 | \" $++@ &&&&&&%&&&&&& \", | |
787 | \" $+@ &&&&&&%&&&&&& \", | |
788 | \" @+ &&%%&&&&&%%&& \", | |
789 | \" ++. &%%&&%&&%%& \", | |
790 | \" +. &&&&%%%&&&& \", | |
791 | \" .+ &&%%%%%&& \", | |
792 | \" ++ %%%%%%% \", | |
793 | \" . %%% \", | |
794 | \" \"};") | |
795 | "The electric debug icon.") | |
796 | ||
8c7b4ec8 EZ |
797 | (defvar idlwave-toolbar |
798 | '( | |
799 | [idlwave-toolbar-compile-icon | |
800 | idlwave-shell-save-and-compile | |
801 | t | |
802 | "Save and Compile this file (or recompile last)"] | |
803 | [idlwave-toolbar-next-error-icon | |
804 | idlwave-shell-goto-next-error | |
805 | t | |
806 | "Goto Next Error"] | |
807 | [idlwave-toolbar-stop-at-icon | |
808 | idlwave-shell-break-here | |
809 | (eq major-mode 'idlwave-mode) | |
810 | "Set Breakpoint at selected position"] | |
8c7b4ec8 EZ |
811 | [idlwave-toolbar-clear-at-icon |
812 | idlwave-shell-clear-current-bp | |
813 | t | |
814 | "Clear Breakpoint at selected position"] | |
815 | [idlwave-toolbar-clear-all-icon | |
816 | idlwave-shell-clear-all-bp | |
817 | t | |
818 | "Clear all Breakpoints"] | |
52a244eb S |
819 | [idlwave-toolbar-stop-beginning-icon |
820 | idlwave-shell-break-this-module | |
821 | (eq major-mode 'idlwave-mode) | |
822 | "Stop at beginning of enclosing Routine"] | |
823 | [idlwave-toolbar-stop-in-icon | |
824 | idlwave-shell-break-in | |
825 | t | |
826 | "Stop in Routine with name near point"] | |
8c7b4ec8 EZ |
827 | [idlwave-toolbar-edit-cmd-icon |
828 | idlwave-shell-edit-default-command-line | |
829 | t | |
830 | "Edit Default Command Line"] | |
831 | [idlwave-toolbar-run-icon | |
832 | idlwave-shell-execute-default-command-line | |
833 | t | |
834 | "Reset, then Execute Default Command Line"] | |
835 | [idlwave-toolbar-cont-icon | |
836 | idlwave-shell-cont | |
837 | t | |
838 | "Continue Current Program"] | |
839 | [idlwave-toolbar-to-here-icon | |
840 | idlwave-shell-to-here | |
841 | (eq major-mode 'idlwave-mode) | |
842 | "Continue to Here (cursor position)"] | |
843 | [idlwave-toolbar-step-over-icon | |
844 | idlwave-shell-stepover | |
845 | t | |
846 | "Step Over (aka next)"] | |
847 | [idlwave-toolbar-step-into-icon | |
848 | idlwave-shell-step | |
849 | t | |
850 | "Step Into (aka step)"] | |
851 | [idlwave-toolbar-step-out-icon | |
852 | idlwave-shell-out | |
853 | t | |
854 | "Step Out (of subroutine)"] | |
855 | [idlwave-toolbar-eval-icon | |
856 | idlwave-shell-print | |
857 | t | |
858 | "Print Expression at or before Point"] | |
859 | [idlwave-toolbar-stack-up-icon | |
860 | idlwave-shell-stack-up | |
861 | t | |
862 | "Stack Up (towards \"cooler\" - less recently visited - frames)"] | |
863 | [idlwave-toolbar-stack-down-icon | |
864 | idlwave-shell-stack-down | |
865 | t | |
866 | "Stack Down (towards \"warmer\" - more recently visited - frames)"] | |
867 | [idlwave-toolbar-reset-icon | |
868 | idlwave-shell-reset | |
869 | t | |
870 | "Reset IDL (RETALL & CLOSE,/ALL and more)"] | |
52a244eb S |
871 | [idlwave-toolbar-electric-debug-icon |
872 | idlwave-shell-electric-debug-mode | |
873 | (eq major-mode 'idlwave-mode) | |
874 | "Toggle Electric Debug Mode"] | |
8c7b4ec8 EZ |
875 | )) |
876 | ||
8124289f | 877 | ;; When the shell exits, arrange to remove the special toolbar everywhere. |
8c7b4ec8 EZ |
878 | (add-hook 'idlwave-shell-cleanup-hook |
879 | 'idlwave-toolbar-remove-everywhere) | |
880 | );; End can define toolbar | |
881 | ||
882 | (defun idlwave-toolbar-add () | |
883 | "Add the IDLWAVE toolbar if appropriate." | |
884 | (if (and (featurep 'xemacs) ; This is a noop on Emacs | |
8124289f | 885 | (boundp 'idlwave-toolbar-is-possible) |
8c7b4ec8 EZ |
886 | (or (eq major-mode 'idlwave-mode) |
887 | (eq major-mode 'idlwave-shell-mode))) | |
888 | (set-specifier default-toolbar (cons (current-buffer) | |
889 | idlwave-toolbar)))) | |
890 | ||
891 | (defun idlwave-toolbar-remove () | |
892 | "Add the IDLWAVE toolbar if appropriate." | |
893 | (if (and (featurep 'xemacs) ; This is a noop on Emacs | |
8124289f | 894 | (boundp 'idlwave-toolbar-is-possible) |
8c7b4ec8 EZ |
895 | (or (eq major-mode 'idlwave-mode) |
896 | (eq major-mode 'idlwave-shell-mode))) | |
897 | (remove-specifier default-toolbar (current-buffer)))) | |
898 | ||
899 | (defvar idlwave-shell-mode-map) | |
15e42531 | 900 | (defvar idlwave-mode-map) |
8c7b4ec8 EZ |
901 | (defvar idlwave-toolbar-visible nil) |
902 | (defun idlwave-toolbar-add-everywhere () | |
903 | "Add the toolbar in all appropriate buffers." | |
8124289f CD |
904 | (when (boundp 'idlwave-toolbar-is-possible) |
905 | ||
906 | ;; First make sure new buffers will get the toolbar | |
907 | (add-hook 'idlwave-mode-hook 'idlwave-toolbar-add) | |
908 | ;; Then add it to all existing buffers | |
909 | (if (featurep 'xemacs) | |
910 | ;; For XEmacs, map over all buffers to add toolbar | |
911 | (save-excursion | |
912 | (mapcar (lambda (buf) | |
913 | (set-buffer buf) | |
914 | (idlwave-toolbar-add)) | |
915 | (buffer-list))) | |
916 | ;; For Emacs, add the key definitions to the mode maps | |
e430c623 GM |
917 | (mapc (lambda (x) |
918 | (let* ((icon (aref x 0)) | |
919 | (func (aref x 1)) | |
920 | (show (aref x 2)) | |
921 | (help (aref x 3)) | |
922 | (key (vector 'tool-bar func)) | |
923 | (def (list 'menu-item | |
924 | "a" | |
925 | func | |
926 | :image (symbol-value icon) | |
927 | :visible show | |
928 | :help help))) | |
929 | (define-key idlwave-mode-map key def) | |
930 | (define-key idlwave-shell-mode-map key def))) | |
931 | (reverse idlwave-toolbar))) | |
8124289f | 932 | (setq idlwave-toolbar-visible t))) |
8c7b4ec8 EZ |
933 | |
934 | (defun idlwave-toolbar-remove-everywhere () | |
935 | "Remove the toolbar in all appropriate buffers." | |
936 | ;; First make sure new buffers won't get the toolbar | |
8124289f CD |
937 | (when idlwave-toolbar-is-possible |
938 | (remove-hook 'idlwave-mode-hook 'idlwave-toolbar-add) | |
939 | ;; Then remove it in all existing buffers. | |
940 | (if (featurep 'xemacs) | |
941 | ;; For XEmacs, map over all buffers to remove toolbar | |
942 | (save-excursion | |
943 | (mapcar (lambda (buf) | |
944 | (set-buffer buf) | |
945 | (idlwave-toolbar-remove)) | |
946 | (buffer-list))) | |
947 | ;; For Emacs, remove the key definitions from the mode maps | |
e430c623 GM |
948 | (mapc (lambda (x) |
949 | (let* (;;(icon (aref x 0)) | |
950 | (func (aref x 1)) | |
951 | ;;(show (aref x 2)) | |
952 | ;;(help (aref x 3)) | |
953 | (key (vector 'tool-bar func))) | |
954 | (define-key idlwave-mode-map key nil) | |
955 | (define-key idlwave-shell-mode-map key nil))) | |
956 | idlwave-toolbar)) | |
8124289f CD |
957 | (setq idlwave-toolbar-visible nil))) |
958 | ||
959 | (defun idlwave-toolbar-toggle (&optional force-on) | |
8c7b4ec8 EZ |
960 | (interactive) |
961 | (if idlwave-toolbar-visible | |
8124289f | 962 | (or force-on (idlwave-toolbar-remove-everywhere)) |
15e42531 CD |
963 | (idlwave-toolbar-add-everywhere)) |
964 | ;; Now make sure this | |
965 | (if (featurep 'xemacs) | |
966 | nil ; no action necessary, toolbar gets updated automatically | |
967 | ;; On Emacs, redraw the frame to make sure the Toolbar is updated. | |
968 | (redraw-frame (selected-frame)))) | |
8c7b4ec8 EZ |
969 | |
970 | (provide 'idlw-toolbar) | |
1a4bfedd | 971 | (provide 'idlwave-toolbar) |
8c7b4ec8 | 972 | |
8df608c1 | 973 | ;; arch-tag: ec9a3717-c44c-4716-9bda-cdacbe5ddb62 |
8c7b4ec8 | 974 | ;;; idlw-toolbar.el ends here |