Mercurial > hg > xemacs-beta
diff lisp/x11/x-toolbar.el @ 0:376386a54a3c r19-14
Import from CVS: tag r19-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 08:45:50 +0200 |
parents | |
children | b82b59fe008d |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/x11/x-toolbar.el Mon Aug 13 08:45:50 2007 +0200 @@ -0,0 +1,257 @@ +;; Toolbar support for X. +;; Copyright (C) 1994 Andy Piper <andyp@parallax.demon.co.uk> +;; Copyright (C) 1995 Board of Trustees, University of Illinois +;; Copyright (C) 1996 Ben Wing <wing@666.com> + +;; This file is part of XEmacs. + +;; XEmacs 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. + +;; XEmacs 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 XEmacs; see the file COPYING. If not, write to the Free +;; Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + +;; +;; toolbar ispell variables and defuns +;; + +(defun toolbar-ispell () + "Intelligently spell the region or buffer." + (interactive) + (if (region-active-p) + (ispell-region (region-beginning) (region-end)) + (ispell-buffer))) + +;; +;; toolbar mail variables and defuns +;; + +(defvar toolbar-use-separate-mail-frame nil + "If non-nil run mail in a separate frame.") + +(defvar toolbar-mail-frame nil + "The frame in which mail is displayed.") + +(defvar toolbar-mail-command 'vm + "The mail reader to run.") + +(defun toolbar-mail () + "Run mail in a separate frame." + (interactive) + (if (not toolbar-use-separate-mail-frame) + (funcall toolbar-mail-command) + (if (or (not toolbar-mail-frame) + (not (frame-live-p toolbar-mail-frame))) + (progn + (setq toolbar-mail-frame (make-frame)) + (add-hook 'vm-quit-hook + '(lambda () + (save-excursion + (if (frame-live-p toolbar-mail-frame) + (delete-frame toolbar-mail-frame))))) + (select-frame toolbar-mail-frame) + (raise-frame toolbar-mail-frame) + (funcall toolbar-mail-command))) + (if (frame-iconified-p toolbar-mail-frame) + (deiconify-frame toolbar-mail-frame)) + (select-frame toolbar-mail-frame) + (raise-frame toolbar-mail-frame))) + +;; +;; toolbar info variables and defuns +;; + +(defvar toolbar-info-frame nil + "The frame in which info is displayed.") + +(defun toolbar-info () + "Run info in a separate frame." + (interactive) + (if (or (not toolbar-info-frame) + (not (frame-live-p toolbar-info-frame))) + (progn + (setq toolbar-info-frame (make-frame)) + (select-frame toolbar-info-frame) + (raise-frame toolbar-info-frame))) + (if (frame-iconified-p toolbar-info-frame) + (deiconify-frame toolbar-info-frame)) + (select-frame toolbar-info-frame) + (raise-frame toolbar-info-frame) + (info)) + +;; +;; toolbar debug variables and defuns +;; + +(defun toolbar-debug () + (interactive) + (if (featurep 'eos-debugger) + (call-interactively 'eos::start-debugger) + (require 'gdbsrc) + (call-interactively 'gdbsrc)) + ) + +(defvar compile-command) + +(defun toolbar-compile () + "Run compile without having to touch the keyboard." + (interactive) + (require 'compile) + (popup-dialog-box + `(,(concat "Compile:\n " compile-command) + ["Compile" (compile compile-command) t] + ["Edit command" compile t] + nil + ["Cancel" (message "Quit") t]))) + +;; +;; toolbar news variables and defuns +;; + +(defvar toolbar-news-frame nil + "The frame in which news is displayed.") + +(defun toolbar-news () + "Run GNUS in a separate frame." + (interactive) + (if (or (not toolbar-news-frame) + (not (frame-live-p toolbar-news-frame))) + (progn + (setq toolbar-news-frame (make-frame)) + (add-hook 'gnus-exit-gnus-hook + '(lambda () + (if (frame-live-p toolbar-news-frame) + (delete-frame toolbar-news-frame)))) + (select-frame toolbar-news-frame) + (raise-frame toolbar-news-frame) + (gnus))) + (if (frame-iconified-p toolbar-news-frame) + (deiconify-frame toolbar-news-frame)) + (select-frame toolbar-news-frame) + (raise-frame toolbar-news-frame)) + +(defvar toolbar-last-win-icon nil "A `last-win' icon set.") +(defvar toolbar-next-win-icon nil "A `next-win' icon set.") +(defvar toolbar-file-icon nil "A `file' icon set.") +(defvar toolbar-folder-icon nil "A `folder' icon set") +(defvar toolbar-disk-icon nil "A `disk' icon set.") +(defvar toolbar-printer-icon nil "A `printer' icon set.") +(defvar toolbar-cut-icon nil "A `cut' icon set.") +(defvar toolbar-copy-icon nil "A `copy' icon set.") +(defvar toolbar-paste-icon nil "A `paste' icon set.") +(defvar toolbar-undo-icon nil "An `undo' icon set.") +(defvar toolbar-spell-icon nil "A `spell' icon set.") +(defvar toolbar-replace-icon nil "A `replace' icon set.") +(defvar toolbar-mail-icon nil "A `mail' icon set.") +(defvar toolbar-info-icon nil "An `info' icon set.") +(defvar toolbar-compile-icon nil "A `compile' icon set.") +(defvar toolbar-debug-icon nil "A `debugger' icon set.") +(defvar toolbar-news-icon nil "A `news' icon set.") + +;;; each entry maps a variable to the prefix used. + +(defvar init-x-toolbar-list + '((toolbar-last-win-icon . "last-win") + (toolbar-next-win-icon . "next-win") + (toolbar-file-icon . "file") + (toolbar-folder-icon . "folder") + (toolbar-disk-icon . "disk") + (toolbar-printer-icon . "printer") + (toolbar-cut-icon . "cut") + (toolbar-copy-icon . "copy") + (toolbar-paste-icon . "paste") + (toolbar-undo-icon . "undo") + (toolbar-spell-icon . "spell") + (toolbar-replace-icon . "replace") + (toolbar-mail-icon . "mail") + (toolbar-info-icon . "info-def") + (toolbar-compile-icon . "compile") + (toolbar-debug-icon . "debug") + (toolbar-news-icon . "news"))) + +(defun init-x-toolbar () + (mapcar + #'(lambda (cons) + (let ((prefix (expand-file-name (cdr cons) toolbar-icon-directory))) + (set (car cons) + (if (featurep 'xpm) + (toolbar-make-button-list + (concat prefix "-up.xpm") + nil + (concat prefix "-xx.xpm") + (concat prefix "-cap-up.xpm") + nil + (concat prefix "-cap-xx.xpm")) + (toolbar-make-button-list + (concat prefix "-up.xbm") + (concat prefix "-dn.xbm") + (concat prefix "-xx.xbm") + ))))) + init-x-toolbar-list) + ;; do this now because errors will occur if the icon symbols + ;; are not initted + (set-specifier default-toolbar initial-toolbar-spec)) + +(defvar initial-toolbar-spec + '(;[toolbar-last-win-icon pop-window-configuration + ;;; #### illicit knowledge? + ;;; #### these don't work right! + ;;; #### not consistent. + ;;; I don't know what's wrong; + ;;; perhaps `selected-frame' is + ;;; wrong sometimes when this + ;;; is evaluated. Note that I + ;;; even tried to kludge-fix this + ;;; by calls to `set-specifier-dirty-flag' + ;;; in pop-window-configuration + ;;; and such. + ;(frame-property (selected-frame) + ; 'window-config-stack) + ; t + ; "Most recent window config"] + ;[toolbar-next-win-icon unpop-window-configuration + ;;; #### illicit knowledge? + ;(frame-property (selected-frame) + ; 'window-config-unpop-stack) + ; t + ; "Undo \"Most recent window config\""] + [toolbar-file-icon find-file t "Open a file" ] + [toolbar-folder-icon dired t "View directory"] + [toolbar-disk-icon save-buffer t "Save buffer" ] + [toolbar-printer-icon lpr-buffer t "Print buffer" ] + [toolbar-cut-icon x-kill-primary-selection t "Kill region"] + [toolbar-copy-icon x-copy-primary-selection t "Copy region"] + [toolbar-paste-icon x-yank-clipboard-selection t + "Paste from clipboard"] + [toolbar-undo-icon undo t "Undo edit" ] + [toolbar-spell-icon toolbar-ispell t "Spellcheck" ] + [toolbar-replace-icon query-replace t "Replace text" ] + [toolbar-mail-icon toolbar-mail t "Mail" ] + [toolbar-info-icon toolbar-info t "Information" ] + [toolbar-compile-icon toolbar-compile t "Compile" ] + [toolbar-debug-icon toolbar-debug t "Debug" ] + [toolbar-news-icon toolbar-news t "News" ]) + "The initial toolbar for a buffer.") + + +(defun x-init-toolbar-from-resources (locale) + (x-init-specifier-from-resources + top-toolbar-height 'natnum locale + '("topToolBarHeight" . "TopToolBarHeight")) + (x-init-specifier-from-resources + bottom-toolbar-height 'natnum locale + '("bottomToolBarHeight" . "BottomToolBarHeight")) + (x-init-specifier-from-resources + left-toolbar-width 'natnum locale + '("leftToolBarWidth" . "LeftToolBarWidth")) + (x-init-specifier-from-resources + right-toolbar-width 'natnum locale + '("rightToolBarWidth" . "RightToolBarWidth")))