view lisp/gtk-password-dialog.el @ 5170:5ddbab03b0e6

various fixes to memory-usage stats -------------------- ChangeLog entries follow: -------------------- lisp/ChangeLog addition: 2010-03-25 Ben Wing <ben@xemacs.org> * diagnose.el (show-memory-usage): * diagnose.el (show-object-memory-usage-stats): Further changes to correspond with changes in the C code; add an additional column in show-object-memory-usage-stats showing the ancillary Lisp overhead used with each type; shrink columns for windows in show-memory-usage to get it to fit in 79 chars. src/ChangeLog addition: 2010-03-25 Ben Wing <ben@xemacs.org> * alloc.c: * alloc.c (struct): * alloc.c (finish_object_memory_usage_stats): * alloc.c (object_memory_usage_stats): * alloc.c (Fobject_memory_usage): * alloc.c (lisp_object_memory_usage_full): * alloc.c (compute_memusage_stats_length): * lrecord.h: * lrecord.h (struct lrecord_implementation): Add fields to the `lrecord_implementation' structure to list an offset into the array of extra statistics in a `struct generic_usage_stats' and a length, listing the first slice of ancillary Lisp-object memory. Compute automatically in compute_memusage_stats_length(). Use to add an entry `FOO-lisp-ancillary-storage' for object type FOO. Don't crash when an int or char is given to object-memory-usage, signal an error instead. Add functions lisp_object_memory_usage_full() and lisp_object_memory_usage() to compute the total memory usage of an object (sum of object, non-Lisp attached, and Lisp ancillary memory). * array.c: * array.c (gap_array_memory_usage): * array.h: Add function to return memory usage of a gap array. * buffer.c (struct buffer_stats): * buffer.c (compute_buffer_usage): * buffer.c (vars_of_buffer): * extents.c (compute_buffer_extent_usage): * marker.c: * marker.c (compute_buffer_marker_usage): * extents.h: * lisp.h: Remove `struct usage_stats' arg from compute_buffer_marker_usage() and compute_buffer_extent_usage() -- these are ancillary Lisp objects and don't get accumulated into `struct usage_stats'; change the value of `memusage_stats_list' so that `markers' and `extents' memory is in Lisp-ancillary, where it belongs. In compute_buffer_marker_usage(), use lisp_object_memory_usage() rather than lisp_object_storage_size(). * casetab.c: * casetab.c (case_table_memory_usage): * casetab.c (vars_of_casetab): * emacs.c (main_1): Add memory usage stats for case tables. * lisp.h: Add comment explaining the `struct generic_usage_stats' more, as well as the new fields in lrecord_implementation. * console-impl.h: * console-impl.h (struct console_methods): * scrollbar-gtk.c: * scrollbar-gtk.c (gtk_compute_scrollbar_instance_usage): * scrollbar-msw.c: * scrollbar-msw.c (mswindows_compute_scrollbar_instance_usage): * scrollbar-x.c: * scrollbar-x.c (x_compute_scrollbar_instance_usage): * scrollbar.c: * scrollbar.c (struct scrollbar_instance_stats): * scrollbar.c (compute_all_scrollbar_instance_usage): * scrollbar.c (scrollbar_instance_memory_usage): * scrollbar.c (scrollbar_objects_create): * scrollbar.c (vars_of_scrollbar): * scrollbar.h: * symsinit.h: * window.c: * window.c (find_window_mirror_maybe): * window.c (struct window_mirror_stats): * window.c (compute_window_mirror_usage): * window.c (window_mirror_memory_usage): * window.c (compute_window_usage): * window.c (window_objects_create): * window.c (syms_of_window): * window.c (vars_of_window): Redo memory-usage associated with windows, window mirrors, and scrollbar instances. Should fix crash in find_window_mirror, among other things. Properly assign memo ry to object memory, non-Lisp extra memory, and Lisp ancillary memory. For example, redisplay structures are non-Lisp memory hanging off a window mirror, not a window; make it an ancillary Lisp-object field. Window mirrors and scrollbar instances have their own statistics, among other things.
author Ben Wing <ben@xemacs.org>
date Thu, 25 Mar 2010 06:07:25 -0500
parents 7039e6323819
children 308d34e9f07d
line wrap: on
line source

;;; gtk-password-dialog.el --- Reading passwords in a dialog

;; Copyright (C) 2000 Free Software Foundation, Inc.

;; Maintainer: William M. Perry <wmperry@gnu.org>
;; Keywords: extensions, internal

;; 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, 59 Temple Place - Suite 330,
;; Boston, MA 02111-1307, USA.

;;; Synched up with: Not in FSF.

(globally-declare-fboundp
 '(gtk-dialog-new
   gtk-dialog-vbox gtk-dialog-action-area
   gtk-window-set-title gtk-button-new-with-label
   gtk-container-add gtk-signal-connect gtk-entry-get-text
   gtk-widget-destroy gtk-container-set-border-width gtk-label-new
   gtk-misc-set-alignment gtk-entry-new gtk-widget-set-sensitive
   gtk-entry-set-text gtk-entry-select-region))

(defun gtk-password-dialog-ok-button (dlg)
  (get dlg 'x-ok-button))

(defun gtk-password-dialog-cancel-button (dlg)
  (get dlg 'x-cancel-button))

(defun gtk-password-dialog-entry-widget (dlg)
  (get dlg 'x-initial-entry))

(defun gtk-password-dialog-confirmation-widget (dlg)
  (get dlg 'x-verify-entry))

(defun gtk-password-dialog-new (&rest keywords)
  ;; Format is (:keyword value ...)
  ;; Allowed keywords are:
  ;;
  ;;  :callback function
  ;;  :default string
  ;;  :title string
  :;  :prompt string
  ;;  :default string
  ;;  :verify boolean
  ;;  :verify-prompt string
  (let* ((callback (plist-get keywords :callback 'ignore))
	 (dialog (gtk-dialog-new))
	 (vbox (gtk-dialog-vbox dialog))
	 (button-area (gtk-dialog-action-area dialog))
	 (default (plist-get keywords :default))
	 (widget nil))
    (gtk-window-set-title dialog (plist-get keywords :title "Enter password..."))

    ;; Make us modal...
    (put dialog 'type 'dialog)

    ;; Put the buttons in the bottom
    (setq widget (gtk-button-new-with-label "OK"))
    (gtk-container-add button-area widget)
    (gtk-signal-connect widget 'clicked
			(lambda (button data)
			  (funcall (car data)
				   (gtk-entry-get-text
				    (get (cdr data) 'x-initial-entry))))
			(cons callback dialog))
    (put dialog 'x-ok-button widget)

    (setq widget (gtk-button-new-with-label "Cancel"))
    (gtk-container-add button-area widget)
    (gtk-signal-connect widget 'clicked
			(lambda (button dialog)
			  (gtk-widget-destroy dialog))
			dialog)
    (put dialog 'x-cancel-button widget)

    ;; Now the entry area...
    (gtk-container-set-border-width vbox 5)
    (setq widget (gtk-label-new (plist-get keywords :prompt "Password:")))
    (gtk-misc-set-alignment widget 0.0 0.5)
    (gtk-container-add vbox widget)

    (setq widget (gtk-entry-new))
    (put widget 'visibility nil)
    (gtk-container-add vbox widget)
    (put dialog 'x-initial-entry widget)

    (if (plist-get keywords :verify)
	(let ((changed-cb (lambda (editable dialog)
			    (gtk-widget-set-sensitive
			     (get dialog 'x-ok-button)
			     (equal (gtk-entry-get-text
				     (get dialog 'x-initial-entry))
				    (gtk-entry-get-text
				     (get dialog 'x-verify-entry)))))))
	  (gtk-container-set-border-width vbox 5)
	  (setq widget (gtk-label-new (plist-get keywords :verify-prompt "Verify:")))
	  (gtk-misc-set-alignment widget 0.0 0.5)
	  (gtk-container-add vbox widget)

	  (setq widget (gtk-entry-new))
	  (put widget 'visibility nil)
	  (gtk-container-add vbox widget)
	  (put dialog 'x-verify-entry widget)

	  (gtk-signal-connect (get dialog 'x-initial-entry)
			      'changed changed-cb dialog)
	  (gtk-signal-connect (get dialog 'x-verify-entry)
			      'changed changed-cb dialog)
	  (gtk-widget-set-sensitive (get dialog 'x-ok-button) nil)))

    (if default
	(progn
	  (gtk-entry-set-text (get dialog 'x-initial-entry) default)
	  (gtk-entry-select-region (get dialog 'x-initial-entry)
				   0 (length default))))
    dialog))

(provide 'gtk-password-dialog)