Author: junrue
Date: Mon Dec 18 00:22:52 2006
New Revision: 417
Added:
trunk/src/uitoolkit/system/shell32.lisp
Modified:
trunk/docs/manual/gfc-symbols.xml
trunk/docs/manual/gfs-symbols.xml
trunk/docs/manual/legal.xml
trunk/graphic-forms-uitoolkit.asd
trunk/src/uitoolkit/system/comctl32.lisp
trunk/src/uitoolkit/system/metrics.lisp
trunk/src/uitoolkit/system/system-types.lisp
Log:
enhanced obtain-system-metrics to include version info for comctl32.dll and shell32.dll, but still need to track down why duplicate version info is returned
Modified: trunk/docs/manual/gfc-symbols.xml
==============================================================================
--- trunk/docs/manual/gfc-symbols.xml (original)
+++ trunk/docs/manual/gfc-symbols.xml Mon Dec 18 00:22:52 2006
@@ -17,6 +17,51 @@
<!-- CLASSES -->
+ <class name="listener-panel">
+ <description>
+ <hierarchy>
+ <inherits>
+ <reftopic>gfw:panel</reftopic>
+ </inherits>
+ </hierarchy>
+ This class implements a text-based input/output component which
+ can serve as a REPL. Its size and location can be
+ maintained by its parent's layout manager; however, note that best
+ visual results are achieved when the panel is allowed to maintain
+ integral height and width.
+ </description>
+ <initargs>
+ <argument name=":callbacks">
+ <description>
+ See <reftopic>gfw:event-source</reftopic>.
+ </description>
+ </argument>
+ <argument name=":dispatcher">
+ <description>
+ See <reftopic>gfw:event-source</reftopic>.
+ </description>
+ </argument>
+ <argument name=":handle">
+ <description>
+ See <reftopic>gfs:native-object</reftopic>.
+ </description>
+ </argument>
+ <argument name=":parent">
+ <description>
+ See <reftopic>gfw:panel</reftopic>.
+ </description>
+ </argument>
+ <argument name=":style">
+ <description>
+ </description>
+ </argument>
+ </initargs>
+ <seealso>
+ <reftopic>gfs:dispose</reftopic>
+ <reftopic>gfw:parent</reftopic>
+ </seealso>
+ </class>
+
<!-- STRUCTURES -->
<!-- FUNCTIONS -->
Modified: trunk/docs/manual/gfs-symbols.xml
==============================================================================
--- trunk/docs/manual/gfs-symbols.xml (original)
+++ trunk/docs/manual/gfs-symbols.xml Mon Dec 18 00:22:52 2006
@@ -370,6 +370,13 @@
button type.
</description>
</argument>
+ <argument name=":comctl32-version">
+ <description>
+ A <refclhs>list</refclhs> whose first element is an integer specifying
+ comctl32.dll's major version number. The second element is the DLL's
+ minor version number, and the third element is the DLL's build number.
+ </description>
+ </argument>
<argument name=":cursor-size">
<description>
A <reftopic>gfs:size</reftopic> describing the dimensions of a cursor
@@ -535,6 +542,13 @@
arrow bitmap.
</description>
</argument>
+ <argument name=":shell32-version">
+ <description>
+ A <refclhs>list</refclhs> whose first element is an integer specifying
+ shell32.dll's major version number. The second element is the DLL's
+ minor version number, and the third element is the DLL's build number.
+ </description>
+ </argument>
<argument name=":shutting-down">
<description>
T if the current session is shutting down; NIL otherwise.
Modified: trunk/docs/manual/legal.xml
==============================================================================
--- trunk/docs/manual/legal.xml (original)
+++ trunk/docs/manual/legal.xml Mon Dec 18 00:22:52 2006
@@ -1,12 +1,12 @@
<!--
legal.xml
- Copyright (c) 2006, Jack D. Unrue
+ Copyright (c) 2006-2007, Jack D. Unrue
-->
<chapter id="legal">
<title>Legal Notices</title>
<para>
- Copyright © 2006, Jack D. Unrue <jdunrue at gmail dot com>
+ Copyright © 2006-2007, Jack D. Unrue <jdunrue at gmail dot com>
</para>
<para role="normal">
Redistribution and use in source and binary forms, with or without
Modified: trunk/graphic-forms-uitoolkit.asd
==============================================================================
--- trunk/graphic-forms-uitoolkit.asd (original)
+++ trunk/graphic-forms-uitoolkit.asd Mon Dec 18 00:22:52 2006
@@ -67,8 +67,9 @@
(:file "system-types")
(:file "datastructs")
(:file "clib")
- (:file "comdlg32")
(:file "comctl32")
+ (:file "comdlg32")
+ (:file "shell32")
(:file "gdi32")
(:file "kernel32")
(:file "user32")
Modified: trunk/src/uitoolkit/system/comctl32.lisp
==============================================================================
--- trunk/src/uitoolkit/system/comctl32.lisp (original)
+++ trunk/src/uitoolkit/system/comctl32.lisp Mon Dec 18 00:22:52 2006
@@ -39,6 +39,11 @@
(load-foreign-library "comctl32.dll")
(defcfun
+ ("DllGetVersion" comctl-dll-get-version)
+ HRESULT
+ (info :pointer))
+
+(defcfun
("InitCommonControlsEx" init-common-controls)
BOOL
(init LPTR))
Modified: trunk/src/uitoolkit/system/metrics.lisp
==============================================================================
--- trunk/src/uitoolkit/system/metrics.lisp (original)
+++ trunk/src/uitoolkit/system/metrics.lisp Mon Dec 18 00:22:52 2006
@@ -33,6 +33,13 @@
(in-package :graphic-forms.uitoolkit.system)
+(defun obtain-dll-version-info (foreign-func)
+ (cffi:with-foreign-object (ptr 'dllversioninfo)
+ (cffi:with-foreign-slots ((size vermajor verminor buildnum) ptr dllversioninfo)
+ (setf size (cffi:foreign-type-size 'dllversioninfo))
+ (funcall foreign-func ptr)
+ (list vermajor verminor buildnum))))
+
(defun obtain-system-metrics ()
"Query system metrics and return them via a hash table."
(let ((table (make-hash-table)))
@@ -106,6 +113,13 @@
(make-size :width (get-system-metrics +sm-cxsmsize+)
:height (get-system-metrics +sm-cysmsize+))))
;;
+ ;; :comctl32-version
+ ;;
+ ;; A list of integers describing the version of comctl32.dll.
+ ;;
+ (setf (gethash :comctl32-version table)
+ (obtain-dll-version-info #'comctl-dll-get-version))
+ ;;
;; :cursor-size
;;
;; The size of the cursor image in pixels.
@@ -334,6 +348,13 @@
(make-size :width (get-system-metrics +sm-cxhscroll+)
:height (get-system-metrics +sm-cyvscroll+)))
;;
+ ;; :shell32-version
+ ;;
+ ;; A list of integers describing the version of comctl32.dll.
+ ;;
+ (setf (gethash :shell32-version table)
+ (obtain-dll-version-info #'shell-dll-get-version))
+ ;;
;; :shutting-down
;;
;; T if the current session is shutting down; NIL otherwise.
Added: trunk/src/uitoolkit/system/shell32.lisp
==============================================================================
--- (empty file)
+++ trunk/src/uitoolkit/system/shell32.lisp Mon Dec 18 00:22:52 2006
@@ -0,0 +1,44 @@
+;;;;
+;;;; shell32.lisp
+;;;;
+;;;; Copyright (C) 2006, Jack D. Unrue
+;;;; All rights reserved.
+;;;;
+;;;; Redistribution and use in source and binary forms, with or without
+;;;; modification, are permitted provided that the following conditions
+;;;; are met:
+;;;;
+;;;; 1. Redistributions of source code must retain the above copyright
+;;;; notice, this list of conditions and the following disclaimer.
+;;;;
+;;;; 2. Redistributions in binary form must reproduce the above copyright
+;;;; notice, this list of conditions and the following disclaimer in the
+;;;; documentation and/or other materials provided with the distribution.
+;;;;
+;;;; 3. Neither the names of the authors nor the names of its contributors
+;;;; may be used to endorse or promote products derived from this software
+;;;; without specific prior written permission.
+;;;;
+;;;; THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS "AS IS" AND ANY
+;;;; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+;;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DIS-
+;;;; CLAIMED. IN NO EVENT SHALL THE AUTHORS AND CONTRIBUTORS BE LIABLE FOR ANY
+;;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+;;;; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+;;;; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+;;;; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+;;;; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+;;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+;;;;
+
+(in-package :graphic-forms.uitoolkit.system)
+
+(eval-when (:compile-toplevel :load-toplevel :execute)
+ (use-package :cffi))
+
+(load-foreign-library "shell32.dll")
+
+(defcfun
+ ("DllGetVersion" shell-dll-get-version)
+ HRESULT
+ (info :pointer))
Modified: trunk/src/uitoolkit/system/system-types.lisp
==============================================================================
--- trunk/src/uitoolkit/system/system-types.lisp (original)
+++ trunk/src/uitoolkit/system/system-types.lisp Mon Dec 18 00:22:52 2006
@@ -45,33 +45,33 @@
:unicode
:ascii))
-(defctype ATOM :unsigned-short) ; shadowed in gfs: package
-(defctype BOOL :int)
-(defctype BOOLEAN :char) ; shadowed in gfs: package
-(defctype BYTE :unsigned-char)
+(defctype ATOM :unsigned-short) ; shadowed in gfs: package
+(defctype BOOL :int)
+(defctype BOOLEAN :char) ; shadowed in gfs: package
+(defctype BYTE :unsigned-char)
(defctype COLORREF :unsigned-long)
-(defctype DWORD :unsigned-long)
-(defctype HANDLE :pointer)
-(defctype INT :int)
-(defctype LANGID :short)
-(defctype LONG :long)
-(defctype LPARAM :long)
-(defctype LPCSTR :pointer)
-(defctype LPCTSTR :pointer)
-(defctype LPFN :long) ; FIXME: not currently used; maybe should be :pointer instead
-(defctype LPRECT :pointer)
-(defctype LPSTR :pointer)
-(defctype LPTR :pointer)
-(defctype LPTSTR :pointer)
-(defctype LPVOID :long)
-(defctype LRESULT :unsigned-long)
-(defctype SHORT :unsigned-short)
-(defctype TCHAR :char)
-(defctype UINT :unsigned-int)
-(defctype ULONG :unsigned-long)
-(defctype USHORT :unsigned-short)
-(defctype WORD :short)
-(defctype WPARAM :unsigned-int)
+(defctype DWORD :unsigned-long)
+(defctype HANDLE :pointer)
+(defctype HRESULT :unsigned-int)
+(defctype INT :int)
+(defctype LANGID :short)
+(defctype LONG :long)
+(defctype LPARAM :long)
+(defctype LPCSTR :pointer)
+(defctype LPCTSTR :pointer)
+(defctype LPRECT :pointer)
+(defctype LPSTR :pointer)
+(defctype LPTR :pointer)
+(defctype LPTSTR :pointer)
+(defctype LPVOID :long)
+(defctype LRESULT :unsigned-long)
+(defctype SHORT :unsigned-short)
+(defctype TCHAR :char)
+(defctype UINT :unsigned-int)
+(defctype ULONG :unsigned-long)
+(defctype USHORT :unsigned-short)
+(defctype WORD :short)
+(defctype WPARAM :unsigned-int)
#+sbcl
(sb-alien:define-alien-type enumchildproc
@@ -178,6 +178,15 @@
(minsize INT)
(maxsize INT))
+(defcstruct dllversioninfo
+ (size DWORD)
+ (vermajor DWORD)
+ (verminor DWORD)
+ (buildnum DWORD)
+ (platform DWORD))
+
+(defctype dllversioninfo-pointer :pointer)
+
(defcstruct drawtextparams
(cbsize UINT)
(tablength INT)
@@ -209,7 +218,7 @@
(defcstruct initcommoncontrolsex
(size DWORD)
- (icc DWORD))
+ (icc DWORD))
(defcstruct logbrush
(style UINT)