summaryrefslogtreecommitdiff
path: root/lisp/progmodes/idlw-toolbar.el
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2000-01-03 14:23:13 +0000
committerEli Zaretskii <eliz@gnu.org>2000-01-03 14:23:13 +0000
commit8c7b4ec8610489c38b62864febc7b74c53a53ccd (patch)
tree2cdaff1bcfb89d2ae4fa2e9128012ba007b1572b /lisp/progmodes/idlw-toolbar.el
parent13f19968a96a5f9d8f5fb2817c1d7ca9017cd3dd (diff)
downloademacs-8c7b4ec8610489c38b62864febc7b74c53a53ccd.tar.gz
Renamed idlwave-*.el into idlw-*.el.
Diffstat (limited to 'lisp/progmodes/idlw-toolbar.el')
-rw-r--r--lisp/progmodes/idlw-toolbar.el866
1 files changed, 866 insertions, 0 deletions
diff --git a/lisp/progmodes/idlw-toolbar.el b/lisp/progmodes/idlw-toolbar.el
new file mode 100644
index 00000000000..a794e58b23b
--- /dev/null
+++ b/lisp/progmodes/idlw-toolbar.el
@@ -0,0 +1,866 @@
+;;; idlw-toolbar.el --- A debugging toolbar for IDLWAVE
+;; Copyright (c) 1999 Carsten Dominik
+;; Copyright (c) 1999 Free Software Foundation
+
+;; Author: Carsten Dominik <dominik@strw.leidenuniv.nl>
+;; Version: 3.11
+;; Date: $Date: 1999/12/20 11:12:58 $
+;; Keywords: processes
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;; This file implements a debugging toolbar for IDLWAVE. It requires
+;; Emacs or XEmacs with toolbar and xpm support.
+
+
+;;; Code:
+
+(eval-when-compile (require 'cl))
+
+(defun idlwave-toolbar-make-button (image)
+ (if (featurep 'xemacs)
+ (toolbar-make-button-list image)
+ (list 'image :type 'xpm :data image)))
+
+(defvar default-toolbar)
+(if (not (or (and (featurep 'xemacs) ; This is XEmacs
+ (featurep 'xpm) ; need xpm
+ (featurep 'toolbar)) ; ... and the toolbar
+ (and (not (featurep 'xemacs)) ; This is Emacs
+ (boundp 'toolbar-button-margin) ; need toolbar
+ (fboundp 'image-type-available-p) ; need image stuff
+ (image-type-available-p 'xpm)) ; need xpm
+ ))
+ ;; oops - cannot do the toolbar
+ (message "Sorry, IDLWAVE xpm toolbar cannot be used on this version of Emacs")
+;; OK, we can define a toolbar
+
+(defvar idlwave-toolbar-compile-icon
+ (idlwave-toolbar-make-button
+ "/* XPM */
+static char * file[] = {
+\"28 28 2 1\",
+\" c #C8C8C8C8C8C8 s backgroundToolBarColor\",
+\". c #000000000000\",
+\" \",
+\" \",
+\" \",
+\" . \",
+\" .. ... .. \",
+\" .... ... .... \",
+\" ............. \",
+\" ........... \",
+\" ................... \",
+\" ........ ........ \",
+\" ..... ........ \",
+\" .... ......... \",
+\" ..... .. ... ..... \",
+\" ...... .. .. ...... \",
+\" ..... ... .. ..... \",
+\" ......... .... \",
+\" ........ ..... \",
+\" ........ ........ \",
+\" ................... \",
+\" ........... \",
+\" ............. \",
+\" .... ... .... \",
+\" .. ... .. \",
+\" . \",
+\" \",
+\" \",
+\" \",
+\" \"};")
+ "The compile icon.")
+
+(defvar idlwave-toolbar-next-error-icon
+ (idlwave-toolbar-make-button
+ "/* XPM */
+static char * file[] = {
+\"28 28 3 1\",
+\" c #C8C8C8C8C8C8 s backgroundToolBarColor\",
+\". c #000000000000\",
+\"R c #FFFF00000000\",
+\" \",
+\" \",
+\" R \",
+\" RR RRR RR \",
+\" RRRR RRR RRRR \",
+\" RRRRRRRRRRRRR \",
+\" RRRRRRRRRRR \",
+\" RRRRRRRRRRRRRRRRRRR \",
+\" RRRRRRRR \",
+\" RRRRR \",
+\" RRRR \",
+\" ........ \",
+\" ........ \",
+\" ......... \",
+\" ..... .. ... ..... \",
+\" ...... .. .. ...... \",
+\" ..... ... .. ..... \",
+\" ......... .... \",
+\" ........ ..... \",
+\" ........ ........ \",
+\" ................... \",
+\" ........... \",
+\" ............. \",
+\" .... ... .... \",
+\" .. ... .. \",
+\" . \",
+\" \",
+\" \"};")
+ "The Next Error icon.")
+
+(defvar idlwave-toolbar-stop-at-icon
+ (idlwave-toolbar-make-button
+ "/* XPM */
+static char * file[] = {
+\"28 28 3 1\",
+\" c #C8C8C8C8C8C8 s backgroundToolBarColor\",
+\". c #000000000000\",
+\"R c #FFFF00000000\",
+\" \",
+\" \",
+\" \",
+\" \",
+\" ........ \",
+\" .RRRRRRRR. \",
+\" .RRRRRRRRRR. \",
+\" .RRRRRRRRRRRR. \",
+\" .RRRRRRRRRRRRRR. \",
+\" .RRRRRRRRRRRRRRRR. \",
+\" .RRRRRRRRRRRRRRRRRR. \",
+\" .RRRRRRRRRRRRRRRRRR. \",
+\" .RRRRRRRRRRRRRRRRRR. \",
+\" .RRRRRRRRRRRRRRRRRR. \",
+\" .RRRRRRRRRRRRRRRRRR. \",
+\" .RRRRRRRRRRRRRRRRRR. \",
+\" .RRRRRRRRRRRRRRRRRR. \",
+\" .RRRRRRRRRRRRRRRRRR. \",
+\" .RRRRRRRRRRRRRRRR. \",
+\" .RRRRRRRRRRRRRR. \",
+\" .RRRRRRRRRRRR. \",
+\" .RRRRRRRRRR. \",
+\" .RRRRRRRR. \",
+\" ........ \",
+\" \",
+\" \",
+\" \",
+\" \"};")
+ "The Stop At icon.")
+
+(defvar idlwave-toolbar-stop-in-icon
+ (idlwave-toolbar-make-button
+ "/* XPM */
+static char * file[] = {
+\"28 28 4 1\",
+\" c #C8C8C8C8C8C8 s backgroundToolBarColor\",
+\"_ c #FFFFFFFFFFFF\",
+\". c #000000000000\",
+\"R c #FFFF00000000\",
+\" \",
+\" \",
+\" \",
+\" \",
+\" ........ \",
+\" .RRRRRRRR. \",
+\" .RRRRRRRRRR. \",
+\" .RRRRRRRRRRRR. \",
+\" .RRR___RR___RRR. \",
+\" .RRRR__RRRR__RRRR. \",
+\" .RRRRR__RRRR__RRRRR. \",
+\" .RRRRR__RRRR__RRRRR. \",
+\" .RRRRR__RRRR__RRRRR. \",
+\" .RRRR__RRRRRR__RRRR. \",
+\" .RRRRR__RRRR__RRRRR. \",
+\" .RRRRR__RRRR__RRRRR. \",
+\" .RRRRR__RRRR__RRRRR. \",
+\" .RRRRR__RRRR__RRRRR. \",
+\" .RRRR___RR___RRRR. \",
+\" .RRRRRRRRRRRRRR. \",
+\" .RRRRRRRRRRRR. \",
+\" .RRRRRRRRRR. \",
+\" .RRRRRRRR. \",
+\" ........ \",
+\" \",
+\" \",
+\" \",
+\" \"};")
+ "The Stop in icon.")
+
+
+(defvar idlwave-toolbar-clear-at-icon
+ (idlwave-toolbar-make-button
+ "/* XPM */
+static char * file[] = {
+\"28 28 3 1\",
+\" c #C8C8C8C8C8C8 s backgroundToolBarColor\",
+\". c #000000000000\",
+\"R c #FFFF00000000\",
+\" \",
+\" \",
+\" \",
+\" ... ... \",
+\" ... ........ ... \",
+\" ... .RRRRRRRR. ... \",
+\" ....RRRRRRRRRR.... \",
+\" ...RRRRRRRRRR... \",
+\" ....RRRRRRRR.... \",
+\" .RR...RRRRRR...RR. \",
+\" .RRRR...RRRR...RRRR. \",
+\" .RRRRR...RR...RRRRR. \",
+\" .RRRRRR......RRRRRR. \",
+\" .RRRRRRR....RRRRRRR. \",
+\" .RRRRRRR....RRRRRRR. \",
+\" .RRRRRR......RRRRRR. \",
+\" .RRRRR...RR...RRRRR. \",
+\" .RRRR...RRRR...RRRR. \",
+\" .RR...RRRRRR...RR. \",
+\" ....RRRRRRRR.... \",
+\" ...RRRRRRRRRR... \",
+\" ....RRRRRRRRRR.... \",
+\" ... .RRRRRRRR. ... \",
+\" ... ........ ... \",
+\" ... ... \",
+\" \",
+\" \",
+\" \"};")
+ "The Clear At icon.")
+
+(defvar idlwave-toolbar-clear-all-icon
+ (idlwave-toolbar-make-button
+ "/* XPM */
+static char * file[] = {
+\"28 28 4 1\",
+\" c #C8C8C8C8C8C8 s backgroundToolBarColor\",
+\". c #000000000000\",
+\"X c #FFFFFFFFFFFF\",
+\"R c #FFFF00000000\",
+\" \",
+\" \",
+\" \",
+\" .. .... .... .. \",
+\" ...RRRR. .RRRR... \",
+\" ...RRRR. .RRRR... \",
+\" .R...RRRR. .RRRR...R. \",
+\" .RR...RRR. .RRR...RR. \",
+\" .RRR...RR. .RR...RRR. \",
+\" .RRRR...R. .R...RRRR. \",
+\" .RRRR... ...RRRR. \",
+\" .RRRR... ...RRRR. \",
+\" .... ... ... .... \",
+\" ..... \",
+\" ... \",
+\" .... ..... .... \",
+\" .RRRR.... ....RRRR. \",
+\" .RRRRR... ...RRRRR. \",
+\" .RRRRR.... ....RRRRR. \",
+\" .RRRR...R. .R...RRRR. \",
+\" .RRR...RR. .RR...RRR. \",
+\" .RR...RRR. .RRR...RR. \",
+\" ....RRR. .RRR.... \",
+\" ...RRR. .RRR... \",
+\" ....... ....... \",
+\" \",
+\" \",
+\" \"};")
+ "The Clear-All icon.")
+
+(defvar idlwave-toolbar-edit-cmd-icon
+ (idlwave-toolbar-make-button
+ "/* XPM */
+static char * file[] = {
+\"28 28 2 1\",
+\" c #C8C8C8C8C8C8 s backgroundToolBarColor\",
+\". c #000000000000\",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" .. \",
+\" .. \",
+\" .. \",
+\" .. \",
+\" .. \",
+\" \",
+\" \",
+\" ................. \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \"};")
+ "The edit-cmd icon")
+
+(defvar idlwave-toolbar-run-icon
+ (idlwave-toolbar-make-button
+ "/* XPM */
+static char * file[] = {
+\"28 28 3 1\",
+\" c #C8C8C8C8C8C8 s backgroundToolBarColor\",
+\". s FgColor c #000000000000\",
+\"G c #0000BBBB0000\",
+\" \",
+\" \",
+\" \",
+\" \",
+\" ..... \",
+\" .GGG. \",
+\" .GGG. \",
+\" .GGG. ....... \",
+\" .GGG. \",
+\" .GGG. \",
+\" .GGG. ....... \",
+\" .GGG. \",
+\" ....GGG.... \",
+\" .GGGGGGG. ....... \",
+\" .GGGGG. \",
+\" .GGG. \",
+\" .G. ....... \",
+\" . \",
+\" \",
+\" ....... \",
+\" \",
+\" \",
+\" ....... \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \"};")
+ "The Run icon.")
+
+(defvar idlwave-toolbar-cont-icon
+ (idlwave-toolbar-make-button
+ "/* XPM */
+static char * file[] = {
+\"28 28 3 1\",
+\" c #C8C8C8C8C8C8 s backgroundToolBarColor\",
+\". s FgColor c #000000000000\",
+\"G c #0000BBBB0000\",
+\" \",
+\" \",
+\" \",
+\" ....... \",
+\" \",
+\" ....... \",
+\" .GGGGGG. ....... \",
+\" .GGGGGGG. \",
+\" .GGG..... \",
+\" .GGG. ....... \",
+\" .GGG. \",
+\" .GGG. \",
+\" .GGG. ....... \",
+\" .GGG. \",
+\" ....GGG.... \",
+\" .GGGGGGG. ....... \",
+\" .GGGGG. \",
+\" .GGG. \",
+\" .G. ....... \",
+\" . \",
+\" \",
+\" ....... \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \"};")
+ "The Cont icon.")
+
+(defvar idlwave-toolbar-to-here-icon
+ (idlwave-toolbar-make-button
+ "/* XPM */
+static char * file[] = {
+\"28 28 4 1\",
+\" c #C8C8C8C8C8C8 s backgroundToolBarColor\",
+\". c #000000000000\",
+\"G c #0000BBBB0000\",
+\"R c #FFFF00000000\",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" ..... ........ \",
+\" .GGGG. \",
+\" .GGGGG. \",
+\" .GG.... ........ \",
+\" .GG. \",
+\" .GG. . \",
+\" .GG. .. \",
+\" .GG. .G. ...... \",
+\" .GG...GG. \",
+\" .GGGGGGGG. RRRRRR \",
+\" .GGGGGGGGG. RRRRRR \",
+\" .GGGGGGG. RRRRRR \",
+\" ....GG. \",
+\" .G. ...... \",
+\" .. \",
+\" . \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \"};")
+ "The Cont-to-here icon.")
+
+(defvar idlwave-toolbar-step-over-icon
+ (idlwave-toolbar-make-button
+ "/* XPM */
+static char * file[] = {
+\"28 28 3 1\",
+\" c #C8C8C8C8C8C8 s backgroundToolBarColor\",
+\". c #000000000000\",
+\"G c #0000BBBB0000\",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" ..... \",
+\" .GGGG. ....... \",
+\" .GGGGG. \",
+\" .GG.... \",
+\" .GG. ....... \",
+\" .GG. . \",
+\" .GG. .. \",
+\" .GG. .G. ....... \",
+\" .GG...GG. \",
+\" .GGGGGGGG. \",
+\" .GGGGGGGGG. ....... \",
+\" .GGGGGGG. \",
+\" ....GG. \",
+\" .G. ....... \",
+\" .. \",
+\" . \",
+\" ....... \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \"};")
+ "The Step Over icon.")
+
+(defvar idlwave-toolbar-step-into-icon
+ (idlwave-toolbar-make-button
+ "/* XPM */
+static char * file[] = {
+\"28 28 3 1\",
+\" c #C8C8C8C8C8C8 s backgroundToolBarColor\",
+\". c #000000000000\",
+\"G c #0000BBBB0000\",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" ..... ....... \",
+\" .GGGG. \",
+\" .GGGGG. \",
+\" .GG.... ........ \",
+\" .GG. \",
+\" .GG. . \",
+\" .GG. .. \",
+\" .GG. .G. \",
+\" .GG...GG. ....... \",
+\" .GGGGGGGG. \",
+\" .GGGGGGGGG. \",
+\" .GGGGGGG. ....... \",
+\" ....GG. \",
+\" .G. \",
+\" .. ....... \",
+\" . \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \"};")
+ "The Step Into icon.")
+
+(defvar idlwave-toolbar-step-out-icon
+ (idlwave-toolbar-make-button
+ "/* XPM */
+static char * file[] = {
+\"28 28 3 1\",
+\" c #C8C8C8C8C8C8 s backgroundToolBarColor\",
+\". c #000000000000\",
+\"G c #0000BBBB0000\",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" . \",
+\" .. ........ \",
+\" .G. \",
+\" ....GG. \",
+\" .GGGGGGG. ........ \",
+\" .GGGGGGGGG. \",
+\" .GGGGGGGG. \",
+\" .GG...GG. ........ \",
+\" .GG. .G. \",
+\" .GG. .. \",
+\" .GG. . \",
+\" .GG. \",
+\" .GG....... ....... \",
+\" .GGGGGGGG. \",
+\" .GGGGGGG. \",
+\" ........ ....... \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \"};")
+ "The Step up icon.")
+
+
+(defvar idlwave-toolbar-eval-icon
+ (idlwave-toolbar-make-button
+ "/* XPM */
+static char * file[] = {
+\"28 28 2 1\",
+\" c #C8C8C8C8C8C8 s backgroundToolBarColor\",
+\". c #000000000000\",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" .... \",
+\" .. .. ...... \",
+\" .. .. ...... \",
+\" .. .. \",
+\" .. .. ...... \",
+\" .. .. ...... \",
+\" .... \",
+\" .. \",
+\" .. \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \"};")
+ "The Evaluate icon.")
+
+(defvar idlwave-toolbar-stack-up-icon
+ (idlwave-toolbar-make-button
+ "/* XPM */
+static char * file[] = {
+\"28 28 5 1\",
+\" c #C8C8C8C8C8C8 s backgroundToolBarColor\",
+\". s FgColor c #000000000000\",
+\"_ c #FFFFFFFFFFFF\",
+\"G c #0000BBBB0000\",
+\"R c #FFFF00000000\",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" ........ . \",
+\" .______. ... \",
+\" .______. ..... \",
+\" .______. ....... \",
+\" .______. ... \",
+\" .______. ... \",
+\" ........ ... \",
+\" .GGGGGG. ... \",
+\" .GGGGGG. ... \",
+\" .GGGGGG. \",
+\" .GGGGGG. \",
+\" .GGGGGG. \",
+\" ........ \",
+\" .RRRRRR. \",
+\" .RRRRRR. \",
+\" .RRRRRR. \",
+\" .RRRRRR. \",
+\" .RRRRRR. \",
+\" ........ \",
+\" \",
+\" \",
+\" \",
+\" \"};")
+ "The Stack Up icon.")
+
+(defvar idlwave-toolbar-stack-down-icon
+ (idlwave-toolbar-make-button
+ "/* XPM */
+static char * file[] = {
+\"28 28 5 1\",
+\" c #C8C8C8C8C8C8 s backgroundToolBarColor\",
+\". s FgColor c #000000000000\",
+\"_ c #FFFFFFFFFFFF\",
+\"G c #0000BBBB0000\",
+\"R c #FFFF00000000\",
+\" \",
+\" \",
+\" \",
+\" \",
+\" \",
+\" ........ \",
+\" .______. \",
+\" .______. \",
+\" .______. \",
+\" .______. \",
+\" .______. \",
+\" ........ \",
+\" .GGGGGG. \",
+\" .GGGGGG. \",
+\" .GGGGGG. \",
+\" .GGGGGG. ... \",
+\" .GGGGGG. ... \",
+\" ........ ... \",
+\" .RRRRRR. ... \",
+\" .RRRRRR. ... \",
+\" .RRRRRR. ....... \",
+\" .RRRRRR. ..... \",
+\" .RRRRRR. ... \",
+\" ........ . \",
+\" \",
+\" \",
+\" \",
+\" \"};")
+ "The Stack Down icon.")
+
+(defvar idlwave-toolbar-reset-icon
+ (idlwave-toolbar-make-button
+ "/* XPM */
+static char * file[] = {
+\"28 28 3 1\",
+\" c #C8C8C8C8C8C8 s backgroundToolBarColor\",
+\"G c #0000BBBB0000\",
+\". c #000000000000\",
+\" \",
+\" \",
+\" \",
+\" . \",
+\" .G. . \",
+\" .GGG.. .G. \",
+\" .GGGGG..GG. \",
+\" ..GGGGGGGG. \",
+\" ..GGGGGG. \",
+\" ..GGGGG. \",
+\" .GGGGGG. \",
+\" .G...... \",
+\" \",
+\" ..... \",
+\" ......... \",
+\" ......... \",
+\" ......... \",
+\" . ..... . \",
+\" . . \",
+\" . . \",
+\" . . \",
+\" . . \",
+\" . . \",
+\" .. .. \",
+\" ....... \",
+\" ..... \",
+\" \",
+\" \"};")
+ "The Reset icon.")
+
+(defvar idlwave-toolbar
+ '(
+ [idlwave-toolbar-compile-icon
+ idlwave-shell-save-and-compile
+ t
+ "Save and Compile this file (or recompile last)"]
+ [idlwave-toolbar-next-error-icon
+ idlwave-shell-goto-next-error
+ t
+ "Goto Next Error"]
+ [idlwave-toolbar-stop-at-icon
+ idlwave-shell-break-here
+ (eq major-mode 'idlwave-mode)
+ "Set Breakpoint at selected position"]
+ [idlwave-toolbar-stop-in-icon
+ idlwave-shell-break-in
+ t
+ "Stop in Function with name near at point"]
+ [idlwave-toolbar-clear-at-icon
+ idlwave-shell-clear-current-bp
+ t
+ "Clear Breakpoint at selected position"]
+ [idlwave-toolbar-clear-all-icon
+ idlwave-shell-clear-all-bp
+ t
+ "Clear all Breakpoints"]
+ [idlwave-toolbar-edit-cmd-icon
+ idlwave-shell-edit-default-command-line
+ t
+ "Edit Default Command Line"]
+ [idlwave-toolbar-run-icon
+ idlwave-shell-execute-default-command-line
+ t
+ "Reset, then Execute Default Command Line"]
+ [idlwave-toolbar-cont-icon
+ idlwave-shell-cont
+ t
+ "Continue Current Program"]
+ [idlwave-toolbar-to-here-icon
+ idlwave-shell-to-here
+ (eq major-mode 'idlwave-mode)
+ "Continue to Here (cursor position)"]
+ [idlwave-toolbar-step-over-icon
+ idlwave-shell-stepover
+ t
+ "Step Over (aka next)"]
+ [idlwave-toolbar-step-into-icon
+ idlwave-shell-step
+ t
+ "Step Into (aka step)"]
+ [idlwave-toolbar-step-out-icon
+ idlwave-shell-out
+ t
+ "Step Out (of subroutine)"]
+ [idlwave-toolbar-eval-icon
+ idlwave-shell-print
+ t
+ "Print Expression at or before Point"]
+ [idlwave-toolbar-stack-up-icon
+ idlwave-shell-stack-up
+ t
+ "Stack Up (towards \"cooler\" - less recently visited - frames)"]
+ [idlwave-toolbar-stack-down-icon
+ idlwave-shell-stack-down
+ t
+ "Stack Down (towards \"warmer\" - more recently visited - frames)"]
+ [idlwave-toolbar-reset-icon
+ idlwave-shell-reset
+ t
+ "Reset IDL (RETALL & CLOSE,/ALL and more)"]
+ ))
+
+
+;; Add the toolbar to all open idlwave buffers when the shell starts.
+(add-hook 'idlwave-shell-mode-hook 'idlwave-toolbar-add-everywhere)
+;; Make sure the toolbar will be added to any future idlwave-mode buffers
+(add-hook 'idlwave-mode-hook 'idlwave-toolbar-add)
+;; When the shell exits, remove the special toolbar everywhere.
+(add-hook 'idlwave-shell-cleanup-hook
+ 'idlwave-toolbar-remove-everywhere)
+);; End can define toolbar
+
+(defun idlwave-toolbar-add ()
+ "Add the IDLWAVE toolbar if appropriate."
+ (if (and (featurep 'xemacs) ; This is a noop on Emacs
+ (or (eq major-mode 'idlwave-mode)
+ (eq major-mode 'idlwave-shell-mode)))
+ (set-specifier default-toolbar (cons (current-buffer)
+ idlwave-toolbar))))
+
+(defun idlwave-toolbar-remove ()
+ "Add the IDLWAVE toolbar if appropriate."
+ (if (and (featurep 'xemacs) ; This is a noop on Emacs
+ (or (eq major-mode 'idlwave-mode)
+ (eq major-mode 'idlwave-shell-mode)))
+ (remove-specifier default-toolbar (current-buffer))))
+
+(defvar idlwave-shell-mode-map)
+(defvar idlwave-toolbar-visible nil)
+(defun idlwave-toolbar-add-everywhere ()
+ "Add the toolbar in all appropriate buffers."
+ (if (featurep 'xemacs)
+ ;; For XEmacs, map over all buffers to add toolbar
+ (save-excursion
+ (mapcar (lambda (buf)
+ (set-buffer buf)
+ (idlwave-toolbar-add))
+ (buffer-list)))
+ ;; For Emacs, add the key definitions to the mode maps
+ (mapcar (lambda (x)
+ (let* ((icon (aref x 0))
+ (func (aref x 1))
+ ;;(show (aref x 2))
+ (help (aref x 3))
+ (key (vector 'toolbar func))
+ (def (list 'menu-item
+ "a"
+ func
+ :image (symbol-value icon)
+ :help help)))
+ (define-key idlwave-mode-map key def)
+ (define-key idlwave-shell-mode-map key def)))
+ (reverse idlwave-toolbar)))
+ (setq idlwave-toolbar-visible t))
+
+(defun idlwave-toolbar-remove-everywhere ()
+ "Remove the toolbar in all appropriate buffers."
+ ;; First make sure new buffers won't get the toolbar
+ (remove-hook 'idlwave-mode-hook 'idlwave-toolbar-add)
+ ;; Then remove it in all existing buffers.
+ (if (featurep 'xemacs)
+ ;; For XEmacs, map over all buffers to remove toolbar
+ (save-excursion
+ (mapcar (lambda (buf)
+ (set-buffer buf)
+ (idlwave-toolbar-remove))
+ (buffer-list)))
+ ;; For Emacs, remove the key definitions from the mode maps
+ (mapcar (lambda (x)
+ (let* (;;(icon (aref x 0))
+ (func (aref x 1))
+ ;;(show (aref x 2))
+ ;;(help (aref x 3))
+ (key (vector 'toolbar func)))
+ (define-key idlwave-mode-map key nil)
+ (define-key idlwave-shell-mode-map key nil)))
+ idlwave-toolbar))
+ (setq idlwave-toolbar-visible nil))
+
+(defun idlwave-toolbar-toggle ()
+ (interactive)
+ (if idlwave-toolbar-visible
+ (idlwave-toolbar-remove-everywhere)
+ (idlwave-toolbar-add-everywhere)))
+
+(provide 'idlw-toolbar)
+
+;;; idlw-toolbar.el ends here
+
+