Work on documentation
[cl-gtk2.git] / doc / gdk.ref.texi
index d062630..d1ee6f6 100644 (file)
 @menu
-* gdk Classes::
-* gdk Structs::
-* gdk Opaque Boxeds::
-* gdk Enums::
-* gdk Flags::
+* Screens and displays::
 @end menu
 
-@node gdk Classes
-@section gdk Classes
+@node Screens and displays
+@section Screens and displays
 
 @menu
 * display::
-* display-manager::
-* drag-context::
-* drawable::
-* gdk-window::
-* graphics-context::
-* keymap::
-* pango-layout::
-* pixbuf::
-* pixbuf-animation::
-* pixmap::
 * screen::
 @end menu
 
-Reference of classes in package GDK
-
-@node display
-@subsection display
-@Class display
-
-Superclasses: @ref{g-object}
-
-Slots:
-None
-
-Signals:
-@itemize
-@item closed. (@code{boolean}) -> @code{null}  [run-last]
-
-@end itemize
-
-@node display-manager
-@subsection display-manager
-@Class display-manager
-
-Superclasses: @ref{g-object}
-
-Slots:
-@itemize
-@item default-display. Type: @ref{display} (flags: readable writable)
-
-
-
-@end itemize
-Signals:
-@itemize
-@item display-opened. (@ref{display}) -> @code{null}  [run-last]
-
-@end itemize
-
-@node drag-context
-@subsection drag-context
-@Class drag-context
-
-Superclasses: @ref{g-object}
-
-Slots:
-None
-
-Signals:
-None
-
-
-@node drawable
-@subsection drawable
-@Class drawable
-
-Superclasses: @ref{g-object}
-
-Slots:
-None
-
-Signals:
-None
-
-
-@node gdk-window
-@subsection gdk-window
-@Class gdk-window
-
-Superclasses: @ref{drawable}
-
-Slots:
-None
-
-Signals:
-None
-
-
-@node graphics-context
-@subsection graphics-context
-@Class graphics-context
-
-Superclasses: @ref{g-object}
-
-Slots:
-None
-
-Signals:
-None
-
-
-@node keymap
-@subsection keymap
-@Class keymap
-
-Superclasses: @ref{g-object}
-
-Slots:
-None
-
-Signals:
-None
-
-
-@node pango-layout
-@subsection pango-layout
-@Class pango-layout
-
-Superclasses: @ref{g-object}
-
-Slots:
-None
-
-Signals:
-None
-
-
-@node pixbuf
-@subsection pixbuf
-@Class pixbuf
-
-Superclasses: @ref{g-object}
-
-Slots:
-@itemize
-@item bits-per-sample. Type: @code{integer} (flags: readable writable constructor-only)
-
-
-
-@item colorspace. Type: @ref{colorspace} (flags: readable writable constructor-only)
-
-
-
-@item has-alpha. Type: @code{boolean} (flags: readable writable constructor-only)
-
-
-
-@item height. Type: @code{integer} (flags: readable writable constructor-only)
-
-
-
-@item n-channels. Type: @code{integer} (flags: readable writable constructor-only)
-
-
-
-@item pixels. Type: @code{foreign-pointer} (flags: readable writable constructor-only)
-
-
-
-@item rowstride. Type: @code{integer} (flags: readable writable constructor-only)
-
-
-
-@item width. Type: @code{integer} (flags: readable writable constructor-only)
-
-
-
-@end itemize
-Signals:
-None
-
-
-@node pixbuf-animation
-@subsection pixbuf-animation
-@Class pixbuf-animation
-
-Superclasses: @ref{g-object}
-
-Slots:
-None
-
-Signals:
-None
-
-
-@node pixmap
-@subsection pixmap
-@Class pixmap
-
-Superclasses: @ref{drawable}
-
-Slots:
-None
-
-Signals:
-None
-
-
-@node screen
-@subsection screen
-@Class screen
-
-Superclasses: @ref{g-object}
-
-Slots:
-@itemize
-@item font-options. Type: @code{foreign-pointer} (flags: readable writable)
-
-
-
-@item resolution. Type: @code{double-float} (flags: readable writable)
-
-
-
-@end itemize
-Signals:
-@itemize
-@item composited-changed. () -> @code{null}  [run-last]
-
-@item monitors-changed. () -> @code{null}  [run-last]
-
-@item size-changed. () -> @code{null}  [run-last]
-
-@end itemize
-
-@node gdk Structs
-@section gdk Structs
-
-@menu
-* color::
-* event::
-* event-button::
-* event-client::
-* event-client-16::
-* event-client-32::
-* event-client-8::
-* event-configure::
-* event-crossing::
-* event-dnd::
-* event-expose::
-* event-focus::
-* event-grab-broken::
-* event-key::
-* event-motion::
-* event-no-expose::
-* event-owner-change::
-* event-property::
-* event-proximity::
-* event-scroll::
-* event-selection::
-* event-setting::
-* event-visibility::
-* event-window-state::
-* font::
-* geometry::
-* rectangle::
-@end menu
-
-Reference of structs in package GDK
-
-@node color
-@subsection color
-@Class color
-
-Superclasses: @code{structure-object}
-
-Subclasses: None
-
-Slots:
-@itemize
-@item blue
-
-@item green
-
-@item pixel
-
-@item red
-
-@end itemize
-
-@node event
-@subsection event
-@Class event
-
-Superclasses: @code{structure-object}
-
-Subclasses: @ref{event-key}, @ref{event-button}, @ref{event-scroll}, @ref{event-motion}, @ref{event-expose}, @ref{event-visibility}, @ref{event-crossing}, @ref{event-focus}, @ref{event-configure}, @ref{event-property}, @ref{event-selection}, @ref{event-dnd}, @ref{event-proximity}, @ref{event-client}, @ref{event-no-expose}, @ref{event-window-state}, @ref{event-setting}, @ref{event-owner-change}, @ref{event-grab-broken}
-
-Slots:
-@itemize
-@item send-event
-
-@item type
-
-@item window
-
-@end itemize
-
-@node event-button
-@subsection event-button
-@Class event-button
-
-Superclasses: @ref{event}
-
-Subclasses: None
-
-Slots:
-@itemize
-@item axes
-
-@item button
-
-@item device
-
-@item state
-
-@item time
-
-@item type
-
-@item x
-
-@item x-root
-
-@item y
-
-@item y-root
-
-@end itemize
-
-@node event-client
-@subsection event-client
-@Class event-client
-
-Superclasses: @ref{event}
-
-Subclasses: @ref{event-client-8}, @ref{event-client-16}, @ref{event-client-32}
-
-Slots:
-@itemize
-@item data-format
-
-@item message-time
-
-@item type
-
-@end itemize
-
-@node event-client-16
-@subsection event-client-16
-@Class event-client-16
-
-Superclasses: @ref{event-client}
-
-Subclasses: None
-
-Slots:
-@itemize
-@item data
-
-@item data-format
-
-@end itemize
-
-@node event-client-32
-@subsection event-client-32
-@Class event-client-32
-
-Superclasses: @ref{event-client}
-
-Subclasses: None
-
-Slots:
-@itemize
-@item data
-
-@item data-format
-
-@end itemize
-
-@node event-client-8
-@subsection event-client-8
-@Class event-client-8
-
-Superclasses: @ref{event-client}
-
-Subclasses: None
-
-Slots:
-@itemize
-@item data
-
-@item data-format
-
-@end itemize
-
-@node event-configure
-@subsection event-configure
-@Class event-configure
-
-Superclasses: @ref{event}
-
-Subclasses: None
-
-Slots:
-@itemize
-@item height
-
-@item type
-
-@item width
-
-@item x
-
-@item y
-
-@end itemize
-
-@node event-crossing
-@subsection event-crossing
-@Class event-crossing
-
-Superclasses: @ref{event}
-
-Subclasses: None
-
-Slots:
-@itemize
-@item detail
-
-@item focus
-
-@item mode
-
-@item state
-
-@item sub-window
-
-@item time
-
-@item type
-
-@item x
-
-@item x-root
-
-@item y
-
-@item y-root
-
-@end itemize
-
-@node event-dnd
-@subsection event-dnd
-@Class event-dnd
-
-Superclasses: @ref{event}
-
-Subclasses: None
-
-Slots:
-@itemize
-@item drag-context
-
-@item time
-
-@item type
-
-@item x-root
-
-@item y-root
-
-@end itemize
-
-@node event-expose
-@subsection event-expose
-@Class event-expose
-
-Superclasses: @ref{event}
-
-Subclasses: None
-
-Slots:
-@itemize
-@item area
-
-@item count
-
-@item region
-
-@item type
-
-@end itemize
-
-@node event-focus
-@subsection event-focus
-@Class event-focus
-
-Superclasses: @ref{event}
-
-Subclasses: None
-
-Slots:
+Multihead support is based around two main object types:
 @itemize
-@item in
-
-@item type
-
-@end itemize
-
-@node event-grab-broken
-@subsection event-grab-broken
-@Class event-grab-broken
-
-Superclasses: @ref{event}
-
-Subclasses: None
-
-Slots:
-@itemize
-@item grab-window
-
-@item implicit
-
-@item keyboard
-
-@item type
-
+@item @ref{display}
+@item @ref{screen}
 @end itemize
 
-@node event-key
-@subsection event-key
-@Class event-key
+@ref{display} objects are the GDK representation of the X Display which
+can be described as a workstation consisting of a keyboard a pointing
+device (such as a mouse) and one or more screens. It is used to open and
+keep track of various GdkScreen objects currently instanciated by the
+application. It is also used to grab and release the keyboard and the
+mouse pointer.
 
-Superclasses: @ref{event}
+@ref{screen} objects are the GDK representation of a physical screen. It
+is used throughout GDK and GTK+ to specify which screen the top level
+windows are to be displayed on. It is also used to query the screen
+specification and default settings such as the default colormap
+(@code{screen-default-colormap}), the screen width
+(@code{screen-width}), etc.
 
-Subclasses: None
+The following code samples demonstrate common usage of the objects
+described above.
 
-Slots:
-@itemize
-@item group
-
-@item hardware-keycode
-
-@item is-modifier
-
-@item keyval
-
-@item length
-
-@item state
-
-@item string
-
-@item time
+Testing the number of screen on the current display:
+@lisp
+(use-package :gdk)
 
-@item type
-
-@end itemize
-
-@node event-motion
-@subsection event-motion
-@Class event-motion
-
-Superclasses: @ref{event}
-
-Subclasses: None
-
-Slots:
-@itemize
-@item axes
+(defvar *display* (default-display))
 
-@item device
-
-@item is-hint
-
-@item state
-
-@item time
-
-@item type
-
-@item x
-
-@item x-root
-
-@item y
-
-@item y-root
-
-@end itemize
-
-@node event-no-expose
-@subsection event-no-expose
-@Class event-no-expose
-
-Superclasses: @ref{event}
-
-Subclasses: None
-
-Slots:
-@itemize
-@item type
-
-@end itemize
-
-@node event-owner-change
-@subsection event-owner-change
-@Class event-owner-change
-
-Superclasses: @ref{event}
-
-Subclasses: None
-
-Slots:
-@itemize
-@item owner
-
-@item reason
-
-@item selection
-
-@item selection-time
-
-@item time
-
-@item type
-
-@end itemize
+(display-name *display*) @result{} ":0.0"
 
-@node event-property
-@subsection event-property
-@Class event-property
+(display-n-screens *display*) @result{} 1
+@end lisp
 
-Superclasses: @ref{event}
-
-Subclasses: None
-
-Slots:
-@itemize
-@item atom
-
-@item state
-
-@item time
-
-@item type
-
-@end itemize
-
-@node event-proximity
-@subsection event-proximity
-@Class event-proximity
-
-Superclasses: @ref{event}
-
-Subclasses: None
-
-Slots:
-@itemize
-@item device
-
-@item time
-
-@item type
-
-@end itemize
-
-@node event-scroll
-@subsection event-scroll
-@Class event-scroll
-
-Superclasses: @ref{event}
-
-Subclasses: None
-
-Slots:
-@itemize
-@item device
-
-@item direction
-
-@item state
-
-@item time
-
-@item type
-
-@item x
-
-@item x-root
-
-@item y
-
-@item y-root
-
-@end itemize
-
-@node event-selection
-@subsection event-selection
-@Class event-selection
-
-Superclasses: @ref{event}
-
-Subclasses: None
-
-Slots:
-@itemize
-@item property
-
-@item requestor
-
-@item selection
-
-@item target
-
-@item time
-
-@item type
-
-@end itemize
-
-@node event-setting
-@subsection event-setting
-@Class event-setting
-
-Superclasses: @ref{event}
-
-Subclasses: None
-
-Slots:
-@itemize
-@item action
-
-@item name
-
-@item type
-
-@end itemize
-
-@node event-visibility
-@subsection event-visibility
-@Class event-visibility
-
-Superclasses: @ref{event}
-
-Subclasses: None
-
-Slots:
-@itemize
-@item state
+Opening a second display:
+(TODO)
+@lisp
+/* screen2_name needs to be initialized before calling 
+/* gdk_display_new() */
+second_display = gdk_display_new (&argc, &argv, second_screen_name);
+if (second_display)
+    second_screen = gdk_display_get_default_screen (second_display);
+else 
+  @{
+       g_print ("Can't open display :\n\t%s\n\n",
+                 second_screen_name);
+    exit (1);  
+  @}
+/* now GdkScreen can be assigned to GtkWindows */
 
-@item type
+window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+gtk_window_set_screen (window, second_screen);
+@end lisp
 
-@end itemize
-
-@node event-window-state
-@subsection event-window-state
-@Class event-window-state
-
-Superclasses: @ref{event}
-
-Subclasses: None
-
-Slots:
-@itemize
-@item changed-mask
-
-@item new-window-state
-
-@item type
-
-@end itemize
-
-@node font
-@subsection font
-@Class font
-
-Superclasses: @code{structure-object}
-
-Subclasses: None
-
-Slots:
-@itemize
-@item ascent
-
-@item descent
-
-@item type
-
-@end itemize
-
-@node geometry
-@subsection geometry
-@Class geometry
-
-Superclasses: @code{structure-object}
-
-Subclasses: None
-
-Slots:
-@itemize
-@item base-height
-
-@item base-width
-
-@item gravity
-
-@item height-increment
-
-@item max-aspect
-
-@item max-height
-
-@item max-width
-
-@item min-aspect
-
-@item min-height
-
-@item min-width
-
-@item width-increment
-
-@end itemize
-
-@node rectangle
-@subsection rectangle
-@Class rectangle
-
-Superclasses: @code{structure-object}
-
-Subclasses: None
-
-Slots:
-@itemize
-@item height
-
-@item width
-
-@item x
-
-@item y
-
-@end itemize
-
-@node gdk Opaque Boxeds
-@section gdk Opaque Boxeds
-
-@menu
-@end menu
-
-Reference of opaque boxeds in package GDK
-
-@node gdk Enums
-@section gdk Enums
+@node display
+@subsection display
 
 @menu
-* colorspace::
-* event-type::
-* font-type::
-* gdk-extension-mode::
-* gdk-window-type-hint::
-* grab-status::
-* gravity::
-* owner-change::
-* property-state::
-* scroll-direction::
-* setting-action::
-* visibility-state::
-* window-edge::
+* display-name::
+* display-n-screens::
+* display-default-screen::
 @end menu
 
-Reference of enums in package GDK
-
-@node colorspace
-@subsection colorspace
-@Enum colorspace
-Values:
-@itemize
-@item :rgb
-@end itemize
-
-
-@node event-type
-@subsection event-type
-@Enum event-type
-Values:
-@itemize
-@item :nothing
-@item :delete
-@item :destroy
-@item :expose
-@item :motion-notify
-@item :button-press
-@item :2button-press
-@item :3button-press
-@item :button-release
-@item :key-press
-@item :key-release
-@item :enter-notify
-@item :leave-notify
-@item :focus-change
-@item :configure
-@item :map
-@item :unmap
-@item :property-notify
-@item :selection-clear
-@item :selection-request
-@item :selection-notify
-@item :proximity-in
-@item :proximity-out
-@item :drag-enter
-@item :drag-leave
-@item :drag-motion
-@item :drag-status
-@item :drop-start
-@item :drop-finished
-@item :client-event
-@item :visibility-notify
-@item :no-expose
-@item :scroll
-@item :window-state
-@item :setting
-@item :owner-change
-@item :grab-broken
-@item :damage
-@end itemize
-
-
-@node font-type
-@subsection font-type
-@Enum font-type
-Values:
-@itemize
-@item :font
-@item :fontset
-@end itemize
-
-
-@node gdk-extension-mode
-@subsection gdk-extension-mode
-@Enum gdk-extension-mode
-Values:
-@itemize
-@item :none
-@item :all
-@item :cursor
-@end itemize
-
-
-@node gdk-window-type-hint
-@subsection gdk-window-type-hint
-@Enum gdk-window-type-hint
-Values:
-@itemize
-@item :normal
-@item :dialog
-@item :menu
-@item :toolbar
-@item :splashscreen
-@item :utility
-@item :dock
-@item :desktop
-@item :dropdown-menu
-@item :popup-menu
-@item :tooltip
-@item :notification
-@item :combo
-@item :dnd
-@end itemize
-
-
-@node grab-status
-@subsection grab-status
-@Enum grab-status
-Values:
-@itemize
-@item :success
-@item :already-grabbed
-@item :invalid-time
-@item :not-viewable
-@item :frozen
-@end itemize
-
-
-@node gravity
-@subsection gravity
-@Enum gravity
-Values:
-@itemize
-@item :north-west
-@item :north
-@item :north-east
-@item :west
-@item :center
-@item :east
-@item :south-west
-@item :south
-@item :south-east
-@item :static
-@end itemize
-
-
-@node owner-change
-@subsection owner-change
-@Enum owner-change
-Values:
-@itemize
-@item :new-owner
-@item :destroy
-@item :close
-@end itemize
-
-
-@node property-state
-@subsection property-state
-@Enum property-state
-Values:
-@itemize
-@item :new-value
-@item :delete
-@end itemize
-
+@Class display
+@Superclass g-object
 
-@node scroll-direction
-@subsection scroll-direction
-@Enum scroll-direction
-Values:
-@itemize
-@item :up
-@item :down
-@item :left
-@item :right
-@end itemize
+@ref{display} controls the keyboard/mouse pointer grabs and a set of @ref{screen}s.
 
+@ref{display} objects purpose are two fold:
 
-@node setting-action
-@subsection setting-action
-@Enum setting-action
-Values:
 @itemize
-@item :new
-@item :changed
-@item :deleted
+@item To grab/ungrab keyboard focus and mouse pointer
+@item To manage and provide information about the @ref{screen}(s) available for this @ref{display}
 @end itemize
 
+@ref{display} objects are the GDK representation of the X Display which
+can be described as a workstation consisting of a keyboard a pointing
+device (such as a mouse) and one or more screens. It is used to open and
+keep track of various @ref{screen} objects currently instanciated by the
+application. It is also used to grab and release the keyboard and the
+mouse pointer.
 
-@node visibility-state
-@subsection visibility-state
-@Enum visibility-state
-Values:
-@itemize
-@item :unobscured
-@item :partial
-@item :fully-obscured
-@end itemize
+@node display-name
+@subsubsection display-name
+@TypedAccessor {display-name, display, @code{string}}
+The name of a @var{display} (e.g. @code{":0.0"})
 
+@node display-n-screens
+@subsubsection display-n-screens
+@TypedAccessor {display-n-screens, display, @code{integer}}
+The number of screen managed by the @var{display}.
 
-@node window-edge
-@subsection window-edge
-@Enum window-edge
-Values:
-@itemize
-@item :north-west
-@item :north
-@item :north-east
-@item :west
-@item :east
-@item :south-west
-@item :south
-@item :south-east
-@end itemize
-
-
-@node gdk Flags
-@section gdk Flags
-
-@menu
-* event-mask::
-* window-hints::
-* window-state::
-@end menu
+@node display-default-screen
+@subsubsection display-default-screens
+@TypedAccessor {display-default-screen, display, @code{screen}}
+The default screen of the @var{display}.
 
-Reference of flags in package GDK
-
-@node event-mask
-@subsection event-mask
-@Flags event-mask
-Values:
-@itemize
-@item :exposure-mask
-@item :pointer-motion-mask
-@item :pointer-motion-hint-mask
-@item :button-motion-mask
-@item :button1-motion-mask
-@item :button2-motion-mask
-@item :button3-motion-mask
-@item :button-press-mask
-@item :button-release-mask
-@item :key-press-mask
-@item :key-release-mask
-@item :enter-notify-mask
-@item :leave-notify-mask
-@item :focus-change-mask
-@item :structure-mask
-@item :property-change-mask
-@item :visibility-notify-mask
-@item :proximity-in-mask
-@item :proximity-out-mask
-@item :substructure-mask
-@item :scroll-mask
-@item :all-events-mask
-@end itemize
-
-
-@node window-hints
-@subsection window-hints
-@Flags window-hints
-Values:
-@itemize
-@item :pos
-@item :min-size
-@item :max-size
-@item :base-size
-@item :aspect
-@item :resize-inc
-@item :win-gravity
-@item :user-pos
-@item :user-size
-@end itemize
-
-
-@node window-state
-@subsection window-state
-@Flags window-state
-Values:
-@itemize
-@item :withdrawn
-@item :iconified
-@item :maximized
-@item :sticky
-@item :fullscreen
-@item :above
-@item :below
-@end itemize
+@node screen
+@subsection screen
 
+@Class screen
+@Superclass g-object