<?xml version="1.0"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
  <!ENTITY appversion "3.1.0">
  <!ENTITY manrevision "3.0">
  <!ENTITY app "Glade">
]>
<!-- 
  Maintained by the GNOME Documentation Project
  http://developer.gnome.org/projects/gdp
  Template version: 2.0 beta
  Template last modified Apr 11, 2002
-->
<article id="index" lang="en">

  <articleinfo> 
    <title>&app; Interface Designer Manual</title> 
      
    <abstract role="description"><para>
      Glade is a user interface designer for GTK+ applications.</para>
    </abstract>

    <copyright> 
      <year>2006</year> 
      <holder>Vincent Geddes</holder> 
    </copyright>
    <copyright> 
      <year>2004</year>
      <year>2003</year>
      <holder>Sun Microsystems</holder> 
    </copyright> 
    <copyright> 
      <year>2002</year><year>2000</year> 
      <holder>Michael Vance</holder> 
    </copyright> 

    <publisher> 
      <publishername>GNOME Documentation Project</publishername> 
    </publisher> 

   <include href="legal.xml" xmlns="http://www.w3.org/2001/XInclude" />

    <authorgroup> 
      <author role="maintainer"> 
	<firstname>Vincent</firstname> 
	<surname>Geddes</surname> 
	<affiliation> 
	  <orgname>GNOME Documentation Project</orgname>
	  <address><email>vincent.geddes@gmail.com</email></address>
	</affiliation>
      </author> 
      <author> 
        <firstname>Sun</firstname> 
        <surname>GNOME Documentation Team</surname> 
        <affiliation> 
          <orgname>Sun Microsystems</orgname> 
        </affiliation> 
       </author> 
       <author> 
         <firstname>Michael</firstname> 
         <surname>Vance</surname> 
         <affiliation> 
           <orgname>GNOME Documentation Project</orgname> 
           </affiliation> 
       </author> 
    </authorgroup>


<!-- According to GNU FDL, revision history is mandatory if you are -->
<!-- modifying/reusing someone else's document.  If not, you can omit it. -->
<!-- Remember to remove the &manrevision; entity from the revision entries other
-->
<!-- than the current revision. -->
<!-- The revision numbering system for GNOME manuals is as follows: -->
<!-- * the revision number consists of two components -->
<!-- * the first component of the revision number reflects the release version of the GNOME desktop. -->
<!-- * the second component of the revision number is a decimal unit that is incremented with each revision of the manual. -->
<!-- For example, if the GNOME desktop release is V2.x, the first version of the manual that -->
<!-- is written in that desktop timeframe is V2.0, the second version of the manual is V2.1, etc. -->
<!-- When the desktop release version changes to V3.x, the revision number of the manual changes -->
<!-- to V3.0, and so on. -->  
    <revhistory>
        <revision> 
		<revnumber>&app; Manual &manrevision;</revnumber> 
		<date>5 December 2006</date>
		<revdescription> 
	  		<para role="author">Vincent Geddes</para>
	  		<para role="publisher">GNOME Documentation Project</para>
		</revdescription> 
        </revision>
        <revision> 
                <revnumber>&app; Manual 2.1;</revnumber> 
                <date>17 June 2004</date> 
                <revdescription> 
                        <para role="author">Sun GNOME Documentation Team</para>
                        <para role="publisher">GNOME Documentation Project</para>
                </revdescription> 
        </revision>
        <revision> 
                <revnumber>&app; User Manual 2.0</revnumber> 
                <date>25 February 2004</date> 
                <revdescription> 
                        <para role="author">Sun GNOME Documentation Team</para>
                        <para role="publisher">GNOME Documentation Project</para>
                </revdescription> 
        </revision>             
        <revision> 
                <revnumber>&app; User Manual 1.2</revnumber> 
                <date>10 Feb 2004</date> 
                <revdescription> 
                        <para role="author">Sun GNOME Documentation Team</para>
                        <para role="publisher">GNOME Documentation Project</para>
                </revdescription> 
        </revision>  
        <revision> 
                <revnumber>&app; User Manual 1.1</revnumber> 
                <date>30 Mar 2002</date> 
                <revdescription> 
                        <para role="author"> Michael Vance</para>
                        <para role="publisher">GNOME Documentation Project</para>
                </revdescription> 
        </revision> 
        <revision> 
                <revnumber>&app; User Manual 1.0</revnumber> 
                <date>11 May 2000</date> 
                <revdescription> 
                        <para role="author">Michael Vance</para>
                        <para role="publisher">GNOME Documentation Project</para>
                </revdescription> 
        </revision> 
    </revhistory> 

    <releaseinfo>This manual describes version &appversion; of &app;.</releaseinfo> 
    <legalnotice> 
      <title>Feedback</title> 
      <para>To report a bug or make a suggestion regarding the &app; application or
      this manual, follow the directions in the <ulink url="ghelp:gnome-feedback"
	  type="help">GNOME Feedback Page</ulink>.
      </para>
<!-- Translators may also add here feedback address for translations -->
    </legalnotice> 
  </articleinfo> 

    <indexterm><primary>glade</primary></indexterm>
    <indexterm><primary>user interface designer</primary></indexterm>


<!-- ============= Document Body ============================= -->
<!-- ============= Introduction ============================== -->
<!-- Use the Introduction section to give a brief overview of what
     the application is and what it does. -->
  <sect1 id="introduction"> 
    <title>Introduction</title> 

    <para>The <application>&app;</application> interface designer enables you to create and edit user interface designs for 
    <application>GTK+</application> applications.</para>

    <para>The GTK+ library provides an extensive collection of user interface building blocks
    such as text boxes, dialog labels, numeric entries, check boxes, and menus. These
    building blocks are called <emphasis>widgets</emphasis>. You can use &app; to place widgets in a GUI. &app; allows you
    to modify the layout and properties of these widgets. You can also use &app; to add connections between
    widgets and application source code.</para>

    <para>The user interfaces designed in &app; are stored in an XML format, enabling easy integration 
    with external tools. You can use the <application>libglade</application> library to dynamically create
    GUIs from the XML description.</para>

  </sect1>

  <sect1 id="getting-started"> 
    <title>Getting Started</title> 

    <sect2 id="glade-start">
    <title>To Start <application>&app;</application></title>
    <para>You can start <application>&app;</application> in the following ways:
    </para> 
    <variablelist>
    	<varlistentry>
    		<term><guimenu>Applications</guimenu> menu</term>
    		<listitem>
    		<para>Choose 
    		<menuchoice>
    		<guisubmenu>Programming</guisubmenu>
    		<guimenuitem>Glade Interface Designer</guimenuitem>
    		</menuchoice>. </para>
    		</listitem>
    	</varlistentry>
    	<varlistentry>
    		<term>Command line</term>
    		<listitem>
    		<para>To start <application>&app;</application> from a command line, type the following command, 
    		then press <keycap>Return</keycap>: <command>glade-3</command></para>	 
    		</listitem>
    	</varlistentry>
    </variablelist>
    </sect2>

    <sect2 id="glade-when-start">
    <title>When You Start <application>&app;</application></title>
    <para>When you start <application>&app;</application>, the following window is displayed.</para>

        <figure id="main-window-fig"> 
          <title><application>&app;</application> window</title> 
            <screenshot> 
              <mediaobject>
                <imageobject><imagedata fileref="figures/main-window.png" format="PNG"/></imageobject>
                <textobject><phrase>Shows the<application>&app;</application> window.</phrase></textobject> 
              </mediaobject> 
            </screenshot> 
        </figure>
        
        <para>The <application>&app;</application> window contains the following elements: </para>

        <variablelist>
          <varlistentry> <term>Menubar</term>
            <listitem>
            <para>The menus on the menubar contain all of the commands you need to work with files in <application>&app;</application>.</para>
            </listitem>
          </varlistentry>
          <varlistentry> <term>Toolbar</term>
            <listitem>
            <para>The toolbar contains a subset of the commands that you can access from the menubar.</para>
            </listitem>
          </varlistentry>
          <varlistentry> <term>Design Area</term>
            <listitem>
            <para> The design area is where a user interface can be visually edited.</para>
            </listitem>
          </varlistentry>
          <varlistentry> <term>Palette</term>
            <listitem>
            <para>The palette contains the widgets that can be used to build a user interface.</para>
            </listitem>
          </varlistentry>
          <varlistentry> <term>Inspector</term>
            <listitem>
            <para>The inspector displays information about the widgets in a project.</para>
            </listitem>
          </varlistentry>
          <varlistentry> <term>Property Editor</term>
            <listitem>
            <para>The property editor is used to manipulate the properties of widgets, as well as adding connections to source code.</para>
            </listitem>
          </varlistentry>
          <varlistentry> <term>Statusbar</term>
            <listitem>
            <para>The statusbar displays information about current <application>&app;</application> activity and contextual information about the menu items.</para>
            </listitem>
          </varlistentry>
        </variablelist>

    </sect2>
  </sect1>

  <sect1 id="working-with-projects"> 
         <title>Working with Projects</title> 
  
 
<!-- To Create a New Project  -->
	 <sect2 id="glade-create-new-project"> 
		<title>Creating a New Project</title>
		<para>To create a new project, choose <menuchoice><guimenu>File</guimenu><guimenuitem>New</guimenuitem></menuchoice>. The application displays a new blank project in the <application>&app;</application> window.</para>
	 </sect2>

	 <sect2 id="glade-open-project"> 
		<title>Opening a Project</title>
		<para>To open an existing project, choose <menuchoice><guimenu>File</guimenu><guimenuitem>Open</guimenuitem></menuchoice>. The application displays the project in the <application>&app;</application> window.</para>
	 </sect2>

<!-- To Save a Project -->
	 <sect2 id="glade-save-project"> 
		<title>Saving a Project</title>
		<para>You can save projects in the following ways:</para>
		<itemizedlist> 
		  <listitem><para>To save changes to an existing project file, choose <menuchoice><guimenu>File</guimenu><guimenuitem>Save</guimenuitem></menuchoice>. </para>
		  </listitem>
		  <listitem><para>To save a new project file or to save an existing project file under a new filename, choose <menuchoice> <guimenu>File</guimenu> <guimenuitem>Save As</guimenuitem> </menuchoice>. Enter a name for the project file in the <guilabel>Save As</guilabel> dialog, then click <guibutton>Save</guibutton>. </para>
		  </listitem>
		</itemizedlist>
	 </sect2>
  </sect1>


  <sect1 id="working-with-widgets"> 
         <title>Working with Widgets</title>
         <sect2 id="select-widgets-palette">
                <title>To Select Widgets From the Palette Window</title>
                <para>
                  You can work with the widgets in the 
                  <guilabel>Palette</guilabel> window in the following
ways:
                </para>
                <variablelist> 
                  <varlistentry> 
                         <term>Selection mode</term> 
                         <listitem>
                                <para>
                                  To use selection mode,
 click on the 
                                  <guilabel>Selector</guilabel> arrow. The
pointer changes to an
                                  arrow to indicate that selection mode is
active. In this mode, you use the mouse to select widgets in your project.
You can then use the <guilabel>Properties</guilabel> window to edit the
properties of the widgets.</para>
<para>You can also use the widget context menu to select a widget.
Right-click on a widget to open the widget context menu.</para><para>You
can add multiple widgets of a specific type from the
<guilabel>Palette</guilabel> to your project by holding down the
<keycap>Control</keycap> key when you select a widget. You need to click on
the <guilabel>Selector</guilabel> arrow or another widget in the
<guilabel>Palette</guilabel> to return to normal mode.</para>
                         </listitem> 
                  </varlistentry> 
                </variablelist> 
                <variablelist> 
                  <varlistentry> 
                         <term>Widget placement mode</term> 
                         <listitem> 
                                <para>
                                  To use widget placement mode, select a
widget in the 
                                  <guilabel>Palette</guilabel> window. When
you select most widgets, the
                                  pointer changes to a pointer-plus-cross.
You can then place the widget inside containers,
                                  top-level  widgets, and so on. After you
place a widget, the mode returns to
                                  selection mode.</para>
                         </listitem> 
                  </varlistentry> 
                </variablelist> 
                <variablelist> 
                  <varlistentry> 
                         <term>Top-level placement mode</term> 
                         <listitem> 
                                <para>
                                  To use top level placement mode, select a
defined top-level
                                  widget in the
<application>Palette</application> window. When you select a top-level
                                  widget in the 
                                  <guilabel>Palette</guilabel> window, the
widget appears
                                  immediately on your desktop. You can then
edit the widget. After you select a top-level widget,
                                  the mode returns to selection mode.
                                </para>
                         </listitem> 
                  </varlistentry> 
                </variablelist> 
         </sect2>
<sect2 id="organize-widgets">
<title>To Organize Widgets In Your Project</title>
<para>You use widget containers, or boxes, to layout and organize widgets
in your project window. You can choose the following widget containers from
the <guilabel>Palette</guilabel> window:
</para>
<itemizedlist>
<listitem><para>Horizontal Box</para>
</listitem><listitem><para>Vertical Box</para></listitem>
<listitem><para>Table</para></listitem>
<listitem><para>Fixed Positions</para></listitem>
<listitem><para>Horizontal Button Box</para></listitem>
<listitem><para>Vertical Button Box</para></listitem>
<listitem><para>Horizontal Panes</para></listitem>
<listitem><para>Vertical Panes</para></listitem>
<listitem><para>Notebook</para></listitem>
<listitem><para>Frame</para></listitem>
<listitem><para>Scrolled Window</para></listitem>
<listitem><para>Viewport</para></listitem>
</itemizedlist>
<para>
You can  nest boxes  to create complex layout structures. When you create
horizontal and vertical boxes, <application>Glade</application> asks you
how many rows or columns to create initially, though rows and columns can
easily be added or deleted later. 
</para>
<para>
When you have created all the boxes you require, you can add specific
widgets like labels, buttons, and more complicated widgets into the boxes.
Notice that <application>Glade</application> packs widgets into the layout
which eliminates a lot of tedious work. The use of boxes enables windows to
change size to accommodate different size labels in different languages
when the application is localized.</para></sect2>
         <sect2 id="place-widgets-clipboard"> 
                <title>To Place a Widget on the Clipboard</title> 
                <para>
                  To remove a widget from a parent and place the widget on
the clipboard,
                  select the widget then choose 
                  <menuchoice> 
                         <guimenu>Edit</guimenu> 
                         <guisubmenu>Cut</guisubmenu> 
                  </menuchoice>. 
                </para>
         </sect2> 
         <sect2 id="copy-widget-clipboard"> 
                <title>To Copy a Widget to the Clipboard</title> 
                <para>
                  To copy a widget to the clipboard, select the widget then
choose 
                  <menuchoice> 
                         <guimenu>Edit</guimenu> 
                         <guisubmenu>Copy</guisubmenu> 
                  </menuchoice>. The original widget remains attached to
the parent. 
                </para>
         </sect2> 
         <sect2 id="paste-widget-clipboard"> 
                <title>To Paste a Widget From the Clipboard Into Your
Project</title> 
                <para>
                  To paste a widget that exists on the clipboard into your
project,
                  choose 
                  <menuchoice> 
                         <guimenu>Edit</guimenu> 
                         <guisubmenu>Paste</guisubmenu> 
                  </menuchoice>.</para><para>All widgets must have a unique
name within <application>Glade</application>. If you cut a widget, and then
paste the widget into your project, then the widget and all of the children
of the widget keep their original names. If you copy a widget, or paste the
widget multiple times into your project, then
<application>Glade</application> generates new names for the widget
copies.</para>
         </sect2> 
         <sect2 id="delete-widget"> 
                <title>To Delete a Widget</title> 
                <para>To delete a widget from the parent without
                  moving the widget to the clipboard, 
                                select the widget then 
                                choose 
                                <menuchoice> 
                                  <guimenu>Edit</guimenu> 
                                  <guisubmenu>Delete</guisubmenu> 
                                </menuchoice>. 
                         </para>
                 
         </sect2> 
         
         <sect2 id="edit-widget"> 
                <title>To Change a Property of a Widget</title> 
                <para>The property editor is used to edit the properties of a selected widget.
                      To change a property of a widget, select the widget and then enter an appropriate value
                      in one of the Property window's property fields.
                </para>
                
                
         </sect2> 
  </sect1>
  
<sect1 id="about"> 
    <title>About &app;</title> 
    <para> &app; is maintained by the &app; developers and GNOME community volunteers.
      To find more information about &app;, please visit the 
      <ulink url="http://glade.gnome.org" type="http">&app; 
      Web site</ulink>.</para>
    <para>
      To report a bug or make a suggestion regarding this application or
      this manual, you can submit them using 
      <ulink url="http://bugzilla.gnome.org/enter_bug.cgi?product=glade3" 
	type="http">bugzilla</ulink>.
    </para>

    <para>
      Another excellent source of information are the &app; 
      <ulink url="http://lists.ximian.com/mailman/listinfo/glade-users" 
	type="http">user</ulink> and 
      <ulink url="http://lists.ximian.com/mailman/listinfo/glade-devel" 
	type="http">developer</ulink> mailing lists.  In addition to 
      subscribing, you might also want to browse the list archives, available
      via these same links.
    </para>

    <para> This program is distributed under the terms of the GNU
      General Public license as published by the Free Software
      Foundation; either version 2 of the License, or (at your option)
      any later version. A copy of this license can be found at this
      <ulink url="ghelp:gpl" type="help">link</ulink>, or in the file
      COPYING included with the source code of this program. </para>
  </sect1> 

</article>
