]> git.saurik.com Git - wxWidgets.git/blobdiff - src/motif/mdi/doc/mwindow.html
More Motif additions: mdi and sashtest samples now just about work!
[wxWidgets.git] / src / motif / mdi / doc / mwindow.html
diff --git a/src/motif/mdi/doc/mwindow.html b/src/motif/mdi/doc/mwindow.html
new file mode 100644 (file)
index 0000000..effbdcd
--- /dev/null
@@ -0,0 +1,277 @@
+<HTML>
+
+<HEAD>
+<TITLE>XsMotifWindow Class</TITLE>
+<LINK REV="made" HREF="mailto:sws@iti-oh.com">
+</HEAD>
+
+<H2>
+The XsMotifWindow Class
+</H2>
+
+<P>
+The <I>XsMDICanvas</I> requires that all documents be a subclass of 
+<I>XsMDIWindow</I> or a subclass of a class derived from it.  By itself
+<I>XsMDIWindow</I> does not define any appearance or behavior for the
+documents.  However, <I>XsMotifWindow</I>, derived from <I>XsMDIWindow</I>,
+defines a MWM-like look-and-feel to a document.
+
+<P>
+Documents in your application should be derived from <I>XsMotifWindow</I>.  
+This class provides the look-and-feel of Motif window and supports the 
+interaction with the <I>XsMDICanvas</I>.  It is up to the application to 
+define the contents of each document.
+
+<P>
+<B>Constructor and Destructor:</B>
+
+<P>
+The <I>XsMotifWindow</I> constructor accepts one argument:
+
+<DL>
+<DD>XsMotifWindow (const char *name)</DD>
+</DL>
+
+<P>
+The <I>name</I> parameter specifies the name of the document and is used
+as the widget name for the underlying implementation.  The name parameter
+is also used as the default title and icon-name for the document.  
+
+<P>
+<B>Note:</B>  The <I>XsMotifWindow</I> constructor does not create any
+widgets.  Rather it only initializes internal variables.  The widgets are
+not created until the document is added to the canvas.  The <I>XsMDICanvas</I>
+calls the member-function <I>XsMotifWindow::_buildClientArea()</I> when it needs
+to create the document widgets.
+
+<P>
+The <I>XsMotifWindow</I> destructor destroys the document widgets (if they have
+been created) and frees its internal storage.  It is up to the application
+to free all documents.  The <I>XsMDICanvas</I> will <B>not</B> destroy the
+documents for you.
+
+<P>
+<B>Document Utilities:</B>
+
+<P>
+Although rarely called from the application, the <I>XsMotifWindow</I> supports
+a number of utility functions to manipulate the document.
+
+<DL>
+<DD>virtual void raise ( )</DD>
+<DD>virtual void lower ( )</DD>
+<DD>virtual void minimize ( )</DD>
+<DD>virtual void maximize ( )</DD>
+<DD>virtual void restore ( )</DD>
+<DD>virtual void close ( )</DD>
+</DL>
+
+<P>
+The <I>close</I> member-function does not destroy the document, it simply
+hides it from view.  You can restore a closed document with
+<I>XsMotifWindow::show()</I>.
+
+<P>
+The following member-functions are used to change/query the appearance of
+the document:
+
+<DL>
+<DD>void  setTitle (const char *name)</DD>
+<DD>const char *title ( ) const</DD>
+<DD>void  setIconName (const char *name)</DD>
+<DD>const char *iconName ( ) const</DD>
+<DD>void  setPixmap (Pixmap pixmap)</DD>
+<DD>Pixmap pixmap ( ) const</DD>
+<DD>Widget icon ( ) const</DD>
+<DD>Boolean minimized ( ) const</DD>
+<DD>Boolean  maximized ( ) const</DD>
+<DD>virtual void setPosition (Position x, Position y)</DD>
+<DD>virtual void setSize (Dimension width, Dimension height)</DD>
+</DL>
+
+<P>
+The <I>setPixmap</I> member-function accepts a pixmap which the document then
+uses as the decoration on the icon.  Because the document does not make a copy 
+of the pixmap, it is important that the application not free the pixmap until 
+all documents that reference it are deleted.  The document does, however, make 
+a local copy of the title or icon-name string passed to it, so the application
+is free to do whatever it wants to the passed-in string.  The <I>icon</I>
+member-function returns the widget that is used to implement the icon.
+
+
+<P>
+<B>Creating Window Subclasses:</B>
+
+<P>
+The application must derive its documents from <I>XsMotifWindow</I> in order to
+define the contents of the document.  The <I>XsMDICanvas</I> calls the
+protected member-function <I>_buildClientArea</I> when it creates the 
+document. Each class derived from <I>XsMotifWindow</I> <B>must</B> override
+this pure-virtual member-function.
+
+<P>
+The member-function <I>_buildClientArea</I> is called with a single argument:
+
+<DL>
+<DD>virtual void _buildClientArea (Widget parent)</DD>
+</DL>
+
+The <I>parent</I> argument should be used as the parent of the contents of
+the document.  This widget is an unmanaged <I>XmForm</I> widget, and all of 
+the standard resources and constrains apply to it.  The <I>XsMDICanvas</I>
+is responsible for managing the parent widget at the appropriate time.
+
+<P>
+As an example, consider the following:
+
+<PRE>
+// _buildClientArea (called to create document contents)
+
+void MyDocument::_buildClientArea (Widget parent)
+{
+   assert (parent != 0);
+   
+// Create a main window with some dummy menus
+
+   Widget mainW = XtVaCreateWidget ("mainWin", xmMainWindowWidgetClass, parent,
+      XmNtopAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM,
+      XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM,
+      NULL);
+   ...
+   
+   XtManageChild (mainW);
+}
+</PRE>
+
+<P>
+In this case, an <I>XmMainWindow</I> is created as the child of the parent
+widget.  The <I>XmMainWindow</I> is then attached to the 4 sides of the parent
+form.  Note also that the main window is managed before returning from the
+function.
+
+<P>
+<B>Resources:</B>
+
+<P>
+The <I>XsMotifWindow</I> supports the following resources:
+
+<PRE>
+   Name              Class             Type           Default
+------------------------------------------------------------------------------
+   borderSize        BorderSize        Dimension      6
+   buttonSize        ButtonSize        Dimension      23
+   title             Title             String         dynamic
+   titleFont         TitleFont         String         -*-helvetica-bold-o-normal-*-14-*-*-*-*-*-iso8859-1
+   iconSize          IconSize          Dimension      70
+   iconName          IconName          String         dynamic
+   iconFont          IconFont          String         *-helvetica-bold-r-normal-*-12-*-*-*-*-*-iso8859-1
+   XmNiconX          XmCIconX          Position       dynamic
+   XmNiconY          XmCIconY          Position       dynamic
+   saveUnder         SaveUnder         Boolean        True
+   restoreString     RestoreString     String         "Restore"
+   moveString        MoveString        String         "Move"
+   sizeString        SizeString        String         "Size"
+   minimizeString    MinimizeString    String         "Minimize"
+   maximizeString    MaximizeString    String         "Maximize"
+   raiseString       RaiseString       String         "Raise"
+   lowerString       LowerString       String         "Lower"
+   closeString       CloseString       String         "Close"
+   menuFont          MenuFont          String         -*-helvetica-bold-o-normal-*-14-*-*-*-*-*-iso8859-1
+   showBorder        ShowBorder        Boolean        True
+   showResize        ShowResize        Boolean        True
+   showTitle         ShowTitle         Boolean        True
+   showMenu          ShowMenu          Boolean        True
+   showMinimize      ShowMinimize      Boolean        True   
+   showMaximize      ShowMaximize      Boolean        True
+   lowerOnIconify    LowerOnIconify    Boolean        False
+   XmNminWidth       XmCMinWidth       Dimension      dynamic
+   XmNmaxWidth       XmCMaxWidth       Dimension      dynamic
+   XmNminHeight      XmCMinHeight      Dimension      dynamic
+   XmNmaxHeight      XmCMaxHeight      Dimension      dynamic
+</PRE>
+
+<DL>
+<DD>
+<DL>
+<DT>borderSize</DT>
+<DD>Size of the window border.</DD>
+<DT>buttonSize</DT>
+<DD>Size of the window buttons.</DD>
+<DT>title</DT>
+<DD>Title of the window.  The default is the name of the window instance.</DD>
+<DT>titleFont</DT>
+<DD>Font used to draw the window title.</DD>
+<DT>iconSize</DT>
+<DD>Size of the icon representation.</DD>
+<DT>iconName</DT>
+<DD>String used on the title.  If unspecified, the window title is used.</DD>
+<DT>iconFont</DT>
+<DD>Font used to draw the icon-name.</DD>
+<DT>XmNiconX</DT>
+<DD>X-position of the icon.  The default location is the top-left
+corner of the window when it is iconified.</DD>
+<DT>XmNiconY</DT>
+<DD>Y-position of the icon.  The default location is the top-left
+corner of the window when it is iconified.</DD>
+<DT>saveUnder</DT>
+<DD>Enables/Disables save-unders for the menu.</DD>
+<DT>restoreString</DT>
+<DD>String used as the "restore" menu item.</DD>
+<DT>moveString</DT>
+<DD>String used as the "move" menu item.</DD>
+<DT>sizeString</DT>
+<DD>String used as the "size" menu item.</DD>
+<DT>minimizeString</DT>
+<DD>String used as the "minimize" menu item.</DD>
+<DT>maximizeString</DT>
+<DD>String used as the "maximize" menu item.</DD>
+<DT>raiseString</DT>
+<DD>String used as the "raise" menu item.</DD>
+<DT>lowerString</DT>
+<DD>String used as the the "lower" menu item.</DD>
+<DT>closeString</DT>
+<DD>String used as the "close" menu item.</DD>
+<DT>menuFont</DT>
+<DD>Font used to draw the menu strings.</DD>
+<DT>showBorder</DT>
+<DD>Enables/Disables the window border.  If the border is disabled,
+the resize-handles are automatically disabled.</DD>
+<DT>showResize</DT>
+<DD>Enables/Disables the window resize handles.</DD>
+<DT>showTitle</DT>
+<DD>Enables/Disables the window title.  If the title is disabled,
+all of the window buttons are automatically disabled.</DD>
+<DT>showMenu</DT>
+<DD>Enables/Disables the window menu button.</DD>
+<DT>showMinimize</DT>
+<DD>Enables/Disables the window minimize button.</DD>
+<DT>showMaximize</DT>
+<DD>Enables/Disables the window maximize button.</DD>
+<DT>lowerOnIconify</DT>
+<DD>Automatically lower windows when iconified.</DD>
+<DT>XmNminWidth</DT>
+<DD>Minimium window width.  The default is about four times the size of
+the window button.</DD>
+<DT>XmNmaxWidth</DT>
+<DD>Maximum window width.  The default is not to constrain the maximum size.</DD>
+<DT>XmNminHeight</DT>
+<DD>Minimum window height.  The default is about four times the size of
+the window button.</DD>
+<DT>XmNmaxHeight</DT>
+<DD>Maximum window height.  The default is not to constrain the maximum size.</DD>
+</DL>
+</DD>
+</DL>
+
+<P>
+<B>XsMotifWindow Implementation:</B>
+
+<P>
+As a convenience to those who wish to modify the <I>XsMotifWindow</I> code,
+here is a diagram of the internal class structure:
+
+<P>
+<IMG SRC="pics/winclass.gif" ALT="[Class Structure]">
+
+</BODY>
+</HTML>