summaryrefslogtreecommitdiff
path: root/doc/widgetclasses.sgml
blob: 48c4de2dfb37a1b491b554e8333453a68917fd61 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
<refentry id="widgetclasses" revision="8 Feb 2006">
  <refmeta>
    <refentrytitle>Widget Class Definitions</refentrytitle>
    <refmiscinfo>Glade UI</refmiscinfo>
  </refmeta>
  <refnamediv>
    <refname>Widget Classes</refname>
    <refpurpose>
How to augment or define a #GladeWidgetClass
    </refpurpose>
  </refnamediv>

  <refsect1>
    <title>Forward</title>

    <para>
#GladeWidgetClass stuctures are added to a global pool using the `glade-widget-class' tag
and then later added to the palette through the `glade-widget-group' section; class-wide
parameters can be set on non-instantiatable classes; for example, parameters for
#GtkBox are valid for #GtkHBox and #GtkVBox.
    </para>
    <para>
Note that there are alot of features to support alot of special-cases from
toolkits; but assuming that a widget is completely configurable via properties
and does not implement any special container relationships (which we will
explain in further detail later on) the catalog entry should really just be
a one liner like this:
      <programlisting>
<![CDATA[<glade-widget-class name="GtkLabel" generic-name="label" title="Label"/>]]></programlisting>
    </para>
    <para>
To delve further into details; the complex layout looks like this:
      <programlisting>
<![CDATA[<glade-widget-class name="GtkLabel" generic-name="label" title="Label">

  ... widget class support functions go here

  <properties>

    ... property definitions go here

  </properties>

  <children>

    ... child specific parameters go here

  </children>
</glade-widget-class>]]></programlisting>
    </para>

  </refsect1>
  <refsect2>
    <title>Widget Class Parameters</title>
    <variablelist>
      <varlistentry>
        <term>name</term>
        <listitem>
          <para>
The 'name' property is the class name of the widget; this will essentially be 
used to instantiate the actual class by deriving 'gtk_label_get_type' from 'GtkLabel' 
and searching for 'gtk_label_get_type' in the support library.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term>generic-name</term>
        <listitem>
          <para>
The 'generic-name' property is used to get the icon name for the widget palette
and is a regular icon theme icon. The generic name is also used to generate 
a default name for instances of the widget in the UI editor.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term>title</term>
        <listitem>
          <para>
The'title' property is used to display the name of the class in the palette and widget 
tree and will be translated before use in the interface.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term>post-create-function</term>
        <listitem>
          <para>
The 'post-create-function' tag is a #GladePostCreateFunc support function that
gets called whenever a widget of 'this class' (or a widget derived from 'this class' 
that didn't provide its own post-create-function) is instantiated.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term>launch-editor-function</term>
        <listitem>
          <para>
The 'launch-editor-function' tag is a #GladeEditorLaunchFunc support function used to 
launch a custom editor for this class; a good example for this is the #GtkMenuBar 
which needs a special editor in order to be easier to use.
          </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term>get-internal-child-function</term>
        <listitem>
          <para>
The 'get-internal-child-function' tag is a #GladeGetInternalFunc support function 
used to retrieve an internal child of a composite object (like a button in a 
filechooser or something); support for internal children must also be added to
your application via libglade.
          </para>
        </listitem>
      </varlistentry>

    </variablelist>
  </refsect2>
  <refsect3>
    <title>Grouping widget classes in the catalog</title>
    <para>
The widgets are groups in different groups in the Glade UI. Those groups
are defined in the catalog file as follows:
      <programlisting>
<![CDATA[
<glade-widget-group name="my-widgets" title="My widgets">
  <glade-widget-class-ref name="MyFirstWidget"/>
  <glade-widget-class-ref name="MysecondWidget"/>

  ...

</glade-widget-group>]]></programlisting>
The file should contain one or more widget groups.
    </para>
  </refsect3>
</refentry>