<HTML ><HEAD ><TITLE >gtkcauldron</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.74b"><LINK REL="HOME" TITLE="Gnome User Interface Library Reference Manual" HREF="book1.html"><LINK REL="UP" TITLE="Gnome User Interface Library" HREF="libgnomeui.html"><LINK REL="PREVIOUS" TITLE="gnome-winhints" HREF="gnomeui-gnome-winhints.html"><LINK REL="NEXT" TITLE="GNOME Widgets and Objects" HREF="gnome-objects.html"></HEAD ><BODY CLASS="REFENTRY" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE WIDTH="100%" BORDER="0" BGCOLOR="#000000" CELLPADDING="1" CELLSPACING="0" ><TR ><TH COLSPAN="4" ALIGN="center" ><FONT COLOR="#FFFFFF" SIZE="5" >Gnome User Interface Library Reference Manual</FONT ></TH ></TR ><TR ><TD WIDTH="25%" BGCOLOR="#C00000" ALIGN="left" ><A HREF="gnomeui-gnome-winhints.html" ><FONT COLOR="#FFFFFF" SIZE="3" ><B ><<< Previous Page</B ></FONT ></A ></TD ><TD WIDTH="25%" BGCOLOR="#0000C0" ALIGN="center" ><FONT COLOR="#FFFFFF" SIZE="3" ><B ><A HREF="book1.html" ><FONT COLOR="#FFFFFF" SIZE="3" ><B >Home</B ></FONT ></A ></B ></FONT ></TD ><TD WIDTH="25%" BGCOLOR="#00C000" ALIGN="center" ><FONT COLOR="#FFFFFF" SIZE="3" ><B ><A HREF="libgnomeui.html" ><FONT COLOR="#FFFFFF" SIZE="3" ><B >Up</B ></FONT ></A ></B ></FONT ></TD ><TD WIDTH="25%" BGCOLOR="#C00000" ALIGN="right" ><A HREF="gnome-objects.html" ><FONT COLOR="#FFFFFF" SIZE="3" ><B >Next Page >>></B ></FONT ></A ></TD ></TR ></TABLE ></DIV ><H1 ><A NAME="GNOMEUI-GTKCAULDRON" >gtkcauldron</A ></H1 ><DIV CLASS="REFNAMEDIV" ><A NAME="AEN7218" ></A ><H2 >Name</H2 >gtkcauldron -- Produce gtk/gnome dialog boxes from format strings.</DIV ><DIV CLASS="REFSYNOPSISDIV" ><A NAME="AEN7221" ></A ><H2 >Synopsis</H2 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="SYNOPSIS" > #include <gnome.h> #define <A HREF="gnomeui-gtkcauldron.html#GTK-CAULDRON-TOPLEVEL-CAPS" >GTK_CAULDRON_TOPLEVEL</A > #define <A HREF="gnomeui-gtkcauldron.html#GTK-CAULDRON-DIALOG-CAPS" >GTK_CAULDRON_DIALOG</A > #define <A HREF="gnomeui-gtkcauldron.html#GTK-CAULDRON-POPUP-CAPS" >GTK_CAULDRON_POPUP</A > #define <A HREF="gnomeui-gtkcauldron.html#GTK-CAULDRON-SPACE-SHIFT-CAPS" >GTK_CAULDRON_SPACE_SHIFT</A > #define <A HREF="gnomeui-gtkcauldron.html#GTK-CAULDRON-SPACE-MASK-CAPS" >GTK_CAULDRON_SPACE_MASK</A > #define <A HREF="gnomeui-gtkcauldron.html#GTK-CAULDRON-SPACE1-CAPS" >GTK_CAULDRON_SPACE1</A > #define <A HREF="gnomeui-gtkcauldron.html#GTK-CAULDRON-SPACE2-CAPS" >GTK_CAULDRON_SPACE2</A > #define <A HREF="gnomeui-gtkcauldron.html#GTK-CAULDRON-SPACE3-CAPS" >GTK_CAULDRON_SPACE3</A > #define <A HREF="gnomeui-gtkcauldron.html#GTK-CAULDRON-SPACE4-CAPS" >GTK_CAULDRON_SPACE4</A > #define <A HREF="gnomeui-gtkcauldron.html#GTK-CAULDRON-SPACE5-CAPS" >GTK_CAULDRON_SPACE5</A > #define <A HREF="gnomeui-gtkcauldron.html#GTK-CAULDRON-SPACE6-CAPS" >GTK_CAULDRON_SPACE6</A > #define <A HREF="gnomeui-gtkcauldron.html#GTK-CAULDRON-SPACE7-CAPS" >GTK_CAULDRON_SPACE7</A > #define <A HREF="gnomeui-gtkcauldron.html#GTK-CAULDRON-SPACE8-CAPS" >GTK_CAULDRON_SPACE8</A > #define <A HREF="gnomeui-gtkcauldron.html#GTK-CAULDRON-SPACE9-CAPS" >GTK_CAULDRON_SPACE9</A > #define <A HREF="gnomeui-gtkcauldron.html#GTK-CAULDRON-SPACE10-CAPS" >GTK_CAULDRON_SPACE10</A > #define <A HREF="gnomeui-gtkcauldron.html#GTK-CAULDRON-SPACE11-CAPS" >GTK_CAULDRON_SPACE11</A > #define <A HREF="gnomeui-gtkcauldron.html#GTK-CAULDRON-SPACE12-CAPS" >GTK_CAULDRON_SPACE12</A > #define <A HREF="gnomeui-gtkcauldron.html#GTK-CAULDRON-SPACE13-CAPS" >GTK_CAULDRON_SPACE13</A > #define <A HREF="gnomeui-gtkcauldron.html#GTK-CAULDRON-SPACE14-CAPS" >GTK_CAULDRON_SPACE14</A > #define <A HREF="gnomeui-gtkcauldron.html#GTK-CAULDRON-SPACE15-CAPS" >GTK_CAULDRON_SPACE15</A > #define <A HREF="gnomeui-gtkcauldron.html#GTK-CAULDRON-IGNOREESCAPE-CAPS" >GTK_CAULDRON_IGNOREESCAPE</A > #define <A HREF="gnomeui-gtkcauldron.html#GTK-CAULDRON-IGNOREENTER-CAPS" >GTK_CAULDRON_IGNOREENTER</A > #define <A HREF="gnomeui-gtkcauldron.html#GTK-CAULDRON-GRAB-CAPS" >GTK_CAULDRON_GRAB</A > void (<A HREF="gnomeui-gtkcauldron.html#GTKCAULDRONNEXTARGCALLBACK" >*GtkCauldronNextArgCallback</A >) (<GTKDOCLINK HREF="GINT" >gint</GTKDOCLINK > cauldron_type, <GTKDOCLINK HREF="GPOINTER" >gpointer</GTKDOCLINK > user_data, void *result); <GTKDOCLINK HREF="GTKWIDGET" >GtkWidget</GTKDOCLINK >* (<A HREF="gnomeui-gtkcauldron.html#GTKCAULDRONCUSTOMCALLBACK" >*GtkCauldronCustomCallback</A >) (<GTKDOCLINK HREF="GTKWIDGET" >GtkWidget</GTKDOCLINK > *widget, <GTKDOCLINK HREF="GPOINTER" >gpointer</GTKDOCLINK > user_data); <GTKDOCLINK HREF="GCHAR" >gchar</GTKDOCLINK >* <A HREF="gnomeui-gtkcauldron.html#GTK-DIALOG-CAULDRON" >gtk_dialog_cauldron</A > (const <GTKDOCLINK HREF="GCHAR" >gchar</GTKDOCLINK > *title, <GTKDOCLINK HREF="GLONG" >glong</GTKDOCLINK > options, ...); <GTKDOCLINK HREF="GCHAR" >gchar</GTKDOCLINK >* <A HREF="gnomeui-gtkcauldron.html#GTK-DIALOG-CAULDRON-PARSE" >gtk_dialog_cauldron_parse</A > (const <GTKDOCLINK HREF="GCHAR" >gchar</GTKDOCLINK > *title, <GTKDOCLINK HREF="GLONG" >glong</GTKDOCLINK > options, const <GTKDOCLINK HREF="GCHAR" >gchar</GTKDOCLINK > *format, <A HREF="gnomeui-gtkcauldron.html#GTKCAULDRONNEXTARGCALLBACK" >GtkCauldronNextArgCallback</A > next_arg, <GTKDOCLINK HREF="GPOINTER" >gpointer</GTKDOCLINK > user_data, <GTKDOCLINK HREF="GTKWIDGET" >GtkWidget</GTKDOCLINK > *parent);</PRE ></TD ></TR ></TABLE ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN7266" ></A ><H2 >Description</H2 ><P >The following simple example shows basic usage of <A HREF="gnomeui-gtkcauldron.html#GTK-DIALOG-CAULDRON" >gtk_dialog_cauldron</A >() for those writing dialogs for GUI applications:</P ><DIV CLASS="INFORMALEXAMPLE" ><A NAME="AEN7270" ></A ><P ></P ><TABLE BORDER="0" BGCOLOR="#D8F8D8" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" > gtk_dialog_cauldron ("Search", 0, " ( (Enter search string:) | <TT CLASS="LITERAL" >Eod</TT > ) / ( <TT CLASS="LITERAL" >Bqrxfp</TT > || <TT CLASS="LITERAL" >Bqxfp</TT > ) ", &search_string, "Ok", "Cancel"); </PRE ></TD ></TR ></TABLE ><P ></P ></DIV ><P >The <SPAN CLASS="TYPE" >format</SPAN > string consists of a list of frames or widgets which are packed consecutively into the top-level window. Each frame is specified with an opening and closing frame token (a bracket). Each widget specifier consists of a % followed by one or more capital letters indicating the widget type, followed by zero or more small letters indicating various packing, behaviour and/or data options.</P ><P >A list of frames or widgets are seperated by one of several <SPAN CLASS="TYPE" >seperator-tokens</SPAN >. Their meanings are:</P ><P ></P ><UL ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >|</I ></SPAN > Pack side by side. </P ></LI ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >||</I ></SPAN > Pack side by side with homogenous spacing - that is, the widget or frames to the left or right will always have the same size. </P ></LI ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >/</I ></SPAN > Pack on top of each other. </P ></LI ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >//</I ></SPAN > Pack on top of each other with homogenous spacing. </P ></LI ></UL ><P >If no seperator is specified, then a <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >|</I ></SPAN > seperator is implied. Frames can be nested infinitely within each other. Only one type of seperator can be used within a single frame. If more than one kind of seperator is used within a single frame, then each seperator within that frame will revert to the type of the first seperator within that frame.</P ><P >In the above example, the <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >E</I ></SPAN > stands for Entry-widget and the <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >B</I ></SPAN > stands for Button-widget. Each of these widgets incurs one format conversion: in the case of the entry widget, a <SPAN CLASS="TYPE" >char **</SPAN > must be passed, while in that case of the button widget, a <SPAN CLASS="TYPE" >char *</SPAN > must be passed. The entry widget will store its result into <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >search_string</I ></SPAN > if the dialog is not cancelled and hence <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >search_string</I ></SPAN > must be writable. The entry widget also derives its default text from this variable.</P ><P >The dialog consists of two frames placed above each other, (defined by the two pairs of brackets). The buttons are of the same size, while the label and entry widgets are spaced as they require.</P ><DIV CLASS="REFSECT2" ><A NAME="AEN7302" ></A ><H3 >Reference</H3 ><P >The following is a complete list of the widgets. Each widget can take additional options which are described in options section below.</P ><P ></P ><UL ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" ><TT CLASS="LITERAL" >L</TT ></I ></SPAN > Label. Causes one va_arg conversion of type <SPAN CLASS="TYPE" >gchar *</SPAN > dictating the label's text. This is identical to inline label given in the example above, however this allows for internationalisation.</P ></LI ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" ><TT CLASS="LITERAL" >F</TT >, <TT CLASS="LITERAL" >N</TT >, <TT CLASS="LITERAL" >E</TT >, <TT CLASS="LITERAL" >P</TT ></I ></SPAN > Entry. This is one of a File, Number, plain text Entry or Password entry widget. Causes one va_arg conversion of type <SPAN CLASS="TYPE" >char **</SPAN > which must contain the default text to be inserted into the entry widget, and must be writable to return the result. If the <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >g</I ></SPAN > option is present then entries are the gnome versions of those entries instead. In the case of <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >F</I ></SPAN > and <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >N</I ></SPAN >, two more <SPAN CLASS="TYPE" >gchar *</SPAN > are converted - the history_id and the file browser or calculator window title respectively. In the case of <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >E</I ></SPAN >, only one more <SPAN CLASS="TYPE" >gchar *</SPAN > is converted: the history_id.</P ></LI ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" ><TT CLASS="LITERAL" >D</TT ></I ></SPAN > Date edit widget. Causes two va_arg conversions of type <SPAN CLASS="TYPE" >gdouble *</SPAN > and type <SPAN CLASS="TYPE" >gint</SPAN >. The first represents the time in seconds since Jan 1 1970 and is used to initialise the widget as well as to store the result - it is cast internally to <SPAN CLASS="TYPE" >time_t</SPAN >. The second is the options flag and is the inclusive <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >OR</I ></SPAN > of one or more of <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >GNOME_DATE_EDIT_SHOW_TIME</I ></SPAN >, <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >GNOME_DATE_EDIT_24_HR</I ></SPAN >, and <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >GNOME_DATE_EDIT_WEEK_STARTS_ON_MONDAY</I ></SPAN >. </P ></LI ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" ><TT CLASS="LITERAL" >B</TT > </I ></SPAN > Button with label. One va_arg conversion of type <SPAN CLASS="TYPE" >char *</SPAN >, dictating the button label. If this is NULL, then gtk_button_new is called instead of gtk_button_new_with_label. If the <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >g</I ></SPAN > option is present then a Gnome stock button is drawn, in which case you can pass a Gnome stock pixmap macro instead of a string.</P ></LI ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" ><TT CLASS="LITERAL" >C</TT > </I ></SPAN > Check box. Two va_arg conversions of type <SPAN CLASS="TYPE" >gchar *label</SPAN > and <SPAN CLASS="TYPE" >gint *state</SPAN >. If label is NULL the same applies as with <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >B</I ></SPAN >. result is stored in <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >state</I ></SPAN >. </P ></LI ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" ><TT CLASS="LITERAL" >R</TT > </I ></SPAN > Radio button. Two va_arg conversions of type <SPAN CLASS="TYPE" >char *label</SPAN > and <SPAN CLASS="TYPE" >gint *state</SPAN >. Multiple radio buttons within the same frame are grouped together. If label is NULL then same applies as with <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >B</I ></SPAN >.</P ></LI ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" ><TT CLASS="LITERAL" >S</TT > </I ></SPAN > Seperator. Vertical or horizontal automatically determined. </P ></LI ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" ><TT CLASS="LITERAL" >SB</TT > </I ></SPAN > Spin button. Two va_arg conversions of type <SPAN CLASS="TYPE" >double climb_rate</SPAN > and <SPAN CLASS="TYPE" >gint digits</SPAN >. This is not particularly useful on its own and must be used with option \fIj\fP which causes conversion of an <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >adjustment</I ></SPAN > parameter set. </P ></LI ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" ><TT CLASS="LITERAL" >T</TT > </I ></SPAN > Text. One va_arg conversion of the type <SPAN CLASS="TYPE" >gchar **text</SPAN >. Must be writable if option <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >e</I ></SPAN > is used to indicate that the text is editable.</P ></LI ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" ><TT CLASS="LITERAL" >X</TT > </I ></SPAN > User defined widget. This specifier causes two va_arg conversions: a function of type <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >GtkWidget *(*func) (GtkWidget * widget, gpointer user_data)</I ></SPAN > and <SPAN CLASS="TYPE" >gpointer user_data</SPAN > to be passed to the function. The function takes two arguments: the toplevel window widget (which is just to fill in a first argument and needn't have any use), and the user data. The function must return a widget which will then be packed into its enclosing frame. </P ></LI ></UL ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN7380" ></A ><H3 >Frames</H3 ><P >Different kinds of brackets specify different kinds of frames. These may also take an option, although the option must be specified after the closing bracket and not after the opening bracket.</P ><P ></P ><UL ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >[</I ></SPAN >A visible frame encloses the widget specified between the brackets. </P ></LI ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >%[</I ></SPAN >A frame with a title. Results in one va_arg conversion of type <SPAN CLASS="TYPE" >char *title</SPAN > </P ></LI ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >(</I ></SPAN >Invisible hbox or vbox, depending on the enclosed seperators. </P ></LI ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >{</I ></SPAN >Pane box (visible frame with adjustable seperator). Only two objects may be packed inside, further objects are ignored. It is best to pack only other containers into a pane.</P ><P >The closing bracket may be followed by options. Eg</P ><DIV CLASS="INFORMALEXAMPLE" ><A NAME="AEN7398" ></A ><P ></P ><TABLE BORDER="0" BGCOLOR="#D8F8D8" WIDTH="90%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" > [ <TT CLASS="LITERAL" >B</TT > ]seo</PRE ></TD ></TR ></TABLE ><P ></P ></DIV ><P >is a button inside an shadowed frame. The shadow is of type etched outer.</P ><P >The closing <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >) </I ></SPAN > may be followed by the options <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >v </I ></SPAN > or <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >h </I ></SPAN >. This indicates that the box must be packed into a scrollable window. Hence <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" > ( <TT CLASS="LITERAL" >C</TT > // <TT CLASS="LITERAL" >C</TT > // <TT CLASS="LITERAL" >C</TT > )v </I ></SPAN > are checkboxes inside a scrollable window with a vertical scrollbar but an automatic horizontal bar (automatic means it appears only if necesary).</P ><P >A very useful option is the \fIn\fP option. This creates a <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >notebook page </I ></SPAN > from the frame. Eg,</P ><DIV CLASS="INFORMALEXAMPLE" ><A NAME="AEN7412" ></A ><P ></P ><TABLE BORDER="0" BGCOLOR="#D8F8D8" WIDTH="90%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" > ( <TT CLASS="LITERAL" >C</TT > // <TT CLASS="LITERAL" >C</TT > )n ( <TT CLASS="LITERAL" >L</TT > / <TT CLASS="LITERAL" >E</TT > )n ( <TT CLASS="LITERAL" >Te</TT > )n</PRE ></TD ></TR ></TABLE ><P ></P ></DIV ><P > This creates a three page notebook. The <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >n </I ></SPAN > causes one additional conversion of type <SPAN CLASS="TYPE" >char *</SPAN >, which is the text to go onto the tag. If the <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >v </I ></SPAN > option is given in addition to the <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >n </I ></SPAN > option, then the notebook will have its tags placed to the left descending vertically, otherwise the tags are place in the conventional position above the notebook.</P ></LI ></UL ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN7424" ></A ><H3 >Options</H3 ><P >Conversions caused by an option happen in the following order, regardless of the order in which the options are given: <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >g</I ></SPAN >, <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >j</I ></SPAN >, <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >a</I ></SPAN >, <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >u</I ></SPAN > then <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >c</I ></SPAN >.</P ><P ></P ><UL ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" > x </I ></SPAN >expand, (see gtk_box_pack_start). </P ></LI ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" > f </I ></SPAN > fill, (see gtk_box_pack_start) </P ></LI ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" > p </I ></SPAN >padding, (see gtk_box_pack_start). This may be specified more than once for additional padding. Padding is in units of 3 pixels per <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >p</I ></SPAN > specified. This default can be changed, see global options below. </P ></LI ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" > d </I ></SPAN >default, causes default fill, expand, and padding of the widget into its parent box. This must not be used with <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >x</I ></SPAN >, <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >f</I ></SPAN >, or <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >p</I ></SPAN >. </P ></LI ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >si</I ></SPAN >, <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >so</I ></SPAN >, <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >sei</I ></SPAN >, <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >seo</I ></SPAN > Shadow, (see gtk_frame_set_shadow_type). This stands for one of <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >i</I ></SPAN >nner, <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >o</I ></SPAN >uter, <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >e</I ></SPAN >tched <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >i</I ></SPAN >nner and <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >e</I ></SPAN >tched <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >o</I ></SPAN >uter. The s option must follow the <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >]</I ></SPAN > and not the <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >[</I ></SPAN >. </P ></LI ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" > c </I ></SPAN > callback. Indicates that we want a callback function to be run after the widget is created and packed. It causes two va_arg conversions: a function of type <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >*(*func) (GtkWidget * widget, gpointer user_data)</I ></SPAN > and <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >gpointer user_data</I ></SPAN > to be passed to the function. The function takes two arguments: the widget itself, and <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >user_data</I ></SPAN >. This option may be used if their are additional things we want to do to the widget that are out of the scope of the options.</P ></LI ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" > r </I ></SPAN >results. For a button widget, causes clicking on the button to assign the current state of each widgets to any user pointers given. This may be given as an option to an `Apply' button, and will necesarily be given as an option to an `Ok' button. </P ></LI ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" > q </I ></SPAN > quit. For a button widget, causes the button to exit the dialog.</P ></LI ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" > j </I ></SPAN > adjustment. For the Spin Button widget, passes and adjustment object to the Spin Button. This causes 6 convertions: a <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >double *</I ></SPAN > where the initial value is obtained and where the result is stored, and five more <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >double</I ></SPAN > conversions containing: the lower bound, upper bound, step increment, page increment, and page size. (Note that page size must be more than the page increment).</P ></LI ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" > e </I ></SPAN > editable. For the text widget, set it to be editable. In this case, the result is assigned to the passed arg. By default the text widget only shows the text and does not allow modification.</P ></LI ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" > e </I ></SPAN > inactive. Use <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >gtk_widget_set_sensitive</I ></SPAN > to disabled (gray-out) the widget.</P ></LI ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" > v </I ></SPAN > vertical scrollbar. For the text widget and for the <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >[</I ></SPAN > <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >]</I ></SPAN > frame, this adds a vertical scrollbar.</P ></LI ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" > h </I ></SPAN > horizontal scrollbar. For the text widget and for the <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >[</I ></SPAN > <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >]</I ></SPAN > frame, this adds a horizontal scrollbar.</P ></LI ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" > a </I ></SPAN > accelerator. Causes <SPAN CLASS="TYPE" >gchar *signal</SPAN >, <SPAN CLASS="TYPE" >gint key</SPAN >, <SPAN CLASS="TYPE" >gint modifier</SPAN > to be converted. This will add an accelerator in the obvious way. Note that for most widgets, an accelerator need not be added, because the appropriate accelerator is added automatically with the use of an ampersand, <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >&</I ></SPAN >, before the accelerator hotkey in the label. (See accelerator ampersands below.)</P ></LI ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" > u </I ></SPAN > accelerator. This accelerator is used for dialogs that are to be internationalised and is similar to <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >a</I ></SPAN >. Causes <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >gchar *signal</I ></SPAN >, <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >gchar *key</I ></SPAN >, <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >gint modifier</I ></SPAN > to be converted. To the <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >key</I ></SPAN > argument is passed the same label that is used to label the widget. The widget will contain an underbar under the character following the & symbol. For example "clicked", "&Cancel", GDK_MOD1_MASK. Binds the widget to Alt-C and completely ignores the remaining characters. You can then use the same label for the actual contents of the cancel button to cause an underbar to be written under the `C'. Note that for most widgets, an accelerator need not be added, because the appropriate accelerator is added automatically with the use of an ampersand, <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >&</I ></SPAN >, before the accelerator hotkey in the label. (See accelerator ampersands below.)</P ></LI ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" > o </I ></SPAN > focus. Sets the input focus to this widget. Only one widget must have this option. (Most dialogs have a default widget accepting keyboard input to avoid having to manually set focus with the mouse.)</P ></LI ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" > g </I ></SPAN > gnome. Use the Gnome version of the widget. May cause additional conversions, see <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" ><TT CLASS="LITERAL" >E</TT ></I ></SPAN > above. </P ></LI ><LI ><P ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" > n </I ></SPAN > notebook. Cause a <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >[</I ></SPAN > <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >]</I ></SPAN > to be become a notebook page. See frames above.</P ></LI ></UL ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN7526" ></A ><H3 >Accelerator ampersands</H3 ><P >Any widget's text having an <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >&</I ></SPAN > sign in it will have an underbar placed below the letter after the <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >&</I ></SPAN > sign. The <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >&</I ></SPAN > will not be shown. To draw an actual & sign, use a double ampersand: <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >&&</I ></SPAN ></P ><P >Buttons, check-boxes, and radio-buttonsP will also have an accelerator automatically added to them along with the underbar. It will be bound to the key Alt-X where X is the letter following the ampersand.</P ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN7534" ></A ><H3 >Examples</H3 ><DIV CLASS="INFORMALEXAMPLE" ><A NAME="AEN7536" ></A ><P ></P ><TABLE BORDER="0" BGCOLOR="#D8F8D8" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" > gtk_dialog_cauldron ("Search", 0, " ( <TT CLASS="LITERAL" >Ld</TT > | <TT CLASS="LITERAL" >Eod</TT > ) / %[ ( <TT CLASS="LITERAL" >Cd</TT > // <TT CLASS="LITERAL" >Cd</TT > // <TT CLASS="LITERAL" >Cd</TT > ) ]seo / ( <TT CLASS="LITERAL" >Bqrxfp</TT > || <TT CLASS="LITERAL" >Bqxfp</TT > ) ", /* <TT CLASS="LITERAL" >L</TT > */ "Enter search string:", /* <TT CLASS="LITERAL" >E</TT > */ &search_string, /* %[ */ "Search options", /* <TT CLASS="LITERAL" >C</TT > */ "Case sensitive", &case_sensitive, /* <TT CLASS="LITERAL" >C</TT > */ "Whole words only", &whole_word, /* <TT CLASS="LITERAL" >C</TT > */ "Regular expression", &regular_expression, /* <TT CLASS="LITERAL" >B</TT > */ "Ok", /* <TT CLASS="LITERAL" >B</TT > */ "Cancel");</PRE ></TD ></TR ></TABLE ><P ></P ></DIV ><P >Interwidget spacing can be increased by inserting more space characters between format specifiers, however only the first gab is looked at. Eg, spreading out the check boxes can be done with:</P ><DIV CLASS="INFORMALEXAMPLE" ><A NAME="AEN7553" ></A ><P ></P ><TABLE BORDER="0" BGCOLOR="#D8F8D8" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" > " ( <TT CLASS="LITERAL" >Ld</TT > | <TT CLASS="LITERAL" >Ed</TT > ) / %[ ( <TT CLASS="LITERAL" >Cd</TT > // <TT CLASS="LITERAL" >Cd</TT > // <TT CLASS="LITERAL" >Cd</TT > ) ]seo / ( <TT CLASS="LITERAL" >Bqrefp</TT > || <TT CLASS="LITERAL" >Bqefp</TT > ) ", </PRE ></TD ></TR ></TABLE ><P ></P ></DIV ><P >The space between the widget and its parent box can be adjusted by adding space after the bracket, eg:</P ><DIV CLASS="INFORMALEXAMPLE" ><A NAME="AEN7563" ></A ><P ></P ><TABLE BORDER="0" BGCOLOR="#D8F8D8" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" > " ( <TT CLASS="LITERAL" >Ld</TT > | <TT CLASS="LITERAL" >Ed</TT > ) / %[ ( <TT CLASS="LITERAL" >Cd</TT > // <TT CLASS="LITERAL" >Cd</TT > // <TT CLASS="LITERAL" >Cd</TT > ) ]seo / ( <TT CLASS="LITERAL" >Bqrefp</TT > || <TT CLASS="LITERAL" >Bqefp</TT > ) ", </PRE ></TD ></TR ></TABLE ><P ></P ></DIV ><P >Each space character counts 3 pixels by default. This default can be changed, see global options.</P ></DIV ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN7573" ></A ><H2 >Details</H2 ><DIV CLASS="REFSECT2" ><A NAME="AEN7575" ></A ><H3 ><A NAME="GTK-CAULDRON-TOPLEVEL-CAPS" ></A >GTK_CAULDRON_TOPLEVEL</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >#define GTK_CAULDRON_TOPLEVEL (0x1L<<0)</PRE ></TD ></TR ></TABLE ><P >This is translated to the top level window (<TT CLASS="LITERAL" >GTK_WINDOW_TOPLEVEL</TT >)</P ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN7581" ></A ><H3 ><A NAME="GTK-CAULDRON-DIALOG-CAPS" ></A >GTK_CAULDRON_DIALOG</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >#define GTK_CAULDRON_DIALOG (0x1L<<1)</PRE ></TD ></TR ></TABLE ><P >This is translated to the top level window (<TT CLASS="LITERAL" >GTK_WINDOW_TOPLEVEL</TT >)</P ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN7587" ></A ><H3 ><A NAME="GTK-CAULDRON-POPUP-CAPS" ></A >GTK_CAULDRON_POPUP</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >#define GTK_CAULDRON_POPUP (0x1L<<2)</PRE ></TD ></TR ></TABLE ><P >This is translated to the top level window (<TT CLASS="LITERAL" >GTK_WINDOW_TOPLEVEL</TT >)</P ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN7593" ></A ><H3 ><A NAME="GTK-CAULDRON-SPACE-SHIFT-CAPS" ></A >GTK_CAULDRON_SPACE_SHIFT</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >#define GTK_CAULDRON_SPACE_SHIFT (3)</PRE ></TD ></TR ></TABLE ><P ></P ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN7598" ></A ><H3 ><A NAME="GTK-CAULDRON-SPACE-MASK-CAPS" ></A >GTK_CAULDRON_SPACE_MASK</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >#define GTK_CAULDRON_SPACE_MASK (0xFL<<GTK_CAULDRON_SPACE_SHIFT)</PRE ></TD ></TR ></TABLE ><P ></P ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN7603" ></A ><H3 ><A NAME="GTK-CAULDRON-SPACE1-CAPS" ></A >GTK_CAULDRON_SPACE1</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >#define GTK_CAULDRON_SPACE1 (0x1L<<GTK_CAULDRON_SPACE_SHIFT)</PRE ></TD ></TR ></TABLE ><P >Specify a width of 1 pixels of each space or p characters. </P ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN7608" ></A ><H3 ><A NAME="GTK-CAULDRON-SPACE2-CAPS" ></A >GTK_CAULDRON_SPACE2</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >#define GTK_CAULDRON_SPACE2 (0x2L<<GTK_CAULDRON_SPACE_SHIFT)</PRE ></TD ></TR ></TABLE ><P >Specify a width of 2 pixels of each space or p characters. </P ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN7613" ></A ><H3 ><A NAME="GTK-CAULDRON-SPACE3-CAPS" ></A >GTK_CAULDRON_SPACE3</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >#define GTK_CAULDRON_SPACE3 (0x3L<<GTK_CAULDRON_SPACE_SHIFT)</PRE ></TD ></TR ></TABLE ><P >Specify a width of 3 pixels of each space or p characters. </P ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN7618" ></A ><H3 ><A NAME="GTK-CAULDRON-SPACE4-CAPS" ></A >GTK_CAULDRON_SPACE4</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >#define GTK_CAULDRON_SPACE4 (0x4L<<GTK_CAULDRON_SPACE_SHIFT)</PRE ></TD ></TR ></TABLE ><P >Specify a width of 4 pixels of each space or p characters. </P ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN7623" ></A ><H3 ><A NAME="GTK-CAULDRON-SPACE5-CAPS" ></A >GTK_CAULDRON_SPACE5</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >#define GTK_CAULDRON_SPACE5 (0x5L<<GTK_CAULDRON_SPACE_SHIFT)</PRE ></TD ></TR ></TABLE ><P > Specify a width of 5 pixels of each space or p characters. </P ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN7628" ></A ><H3 ><A NAME="GTK-CAULDRON-SPACE6-CAPS" ></A >GTK_CAULDRON_SPACE6</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >#define GTK_CAULDRON_SPACE6 (0x6L<<GTK_CAULDRON_SPACE_SHIFT)</PRE ></TD ></TR ></TABLE ><P >Specify a width of 6 pixels of each space or p characters. </P ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN7633" ></A ><H3 ><A NAME="GTK-CAULDRON-SPACE7-CAPS" ></A >GTK_CAULDRON_SPACE7</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >#define GTK_CAULDRON_SPACE7 (0x7L<<GTK_CAULDRON_SPACE_SHIFT)</PRE ></TD ></TR ></TABLE ><P >Specify a width of 7 pixels of each space or p characters. </P ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN7638" ></A ><H3 ><A NAME="GTK-CAULDRON-SPACE8-CAPS" ></A >GTK_CAULDRON_SPACE8</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >#define GTK_CAULDRON_SPACE8 (0x8L<<GTK_CAULDRON_SPACE_SHIFT)</PRE ></TD ></TR ></TABLE ><P >Specify a width of 8 pixels of each space or p characters. </P ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN7643" ></A ><H3 ><A NAME="GTK-CAULDRON-SPACE9-CAPS" ></A >GTK_CAULDRON_SPACE9</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >#define GTK_CAULDRON_SPACE9 (0x9L<<GTK_CAULDRON_SPACE_SHIFT)</PRE ></TD ></TR ></TABLE ><P >Specify a width of 9 pixels of each space or p characters. </P ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN7648" ></A ><H3 ><A NAME="GTK-CAULDRON-SPACE10-CAPS" ></A >GTK_CAULDRON_SPACE10</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >#define GTK_CAULDRON_SPACE10 (0xAL<<GTK_CAULDRON_SPACE_SHIFT)</PRE ></TD ></TR ></TABLE ><P >Specify a width of 10 pixels of each space or p characters. </P ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN7653" ></A ><H3 ><A NAME="GTK-CAULDRON-SPACE11-CAPS" ></A >GTK_CAULDRON_SPACE11</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >#define GTK_CAULDRON_SPACE11 (0xBL<<GTK_CAULDRON_SPACE_SHIFT)</PRE ></TD ></TR ></TABLE ><P >Specify a width of 11 pixels of each space or p characters. </P ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN7658" ></A ><H3 ><A NAME="GTK-CAULDRON-SPACE12-CAPS" ></A >GTK_CAULDRON_SPACE12</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >#define GTK_CAULDRON_SPACE12 (0xCL<<GTK_CAULDRON_SPACE_SHIFT)</PRE ></TD ></TR ></TABLE ><P >Specify a width of 12 pixels of each space or p characters. </P ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN7663" ></A ><H3 ><A NAME="GTK-CAULDRON-SPACE13-CAPS" ></A >GTK_CAULDRON_SPACE13</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >#define GTK_CAULDRON_SPACE13 (0xDL<<GTK_CAULDRON_SPACE_SHIFT)</PRE ></TD ></TR ></TABLE ><P >Specify a width of 13 pixels of each space or p characters. </P ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN7668" ></A ><H3 ><A NAME="GTK-CAULDRON-SPACE14-CAPS" ></A >GTK_CAULDRON_SPACE14</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >#define GTK_CAULDRON_SPACE14 (0xEL<<GTK_CAULDRON_SPACE_SHIFT)</PRE ></TD ></TR ></TABLE ><P >Specify a width of 14 pixels of each space or p characters. </P ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN7673" ></A ><H3 ><A NAME="GTK-CAULDRON-SPACE15-CAPS" ></A >GTK_CAULDRON_SPACE15</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >#define GTK_CAULDRON_SPACE15 (0xFL<<GTK_CAULDRON_SPACE_SHIFT)</PRE ></TD ></TR ></TABLE ><P >Specify a width of 15 pixels of each space or p characters. </P ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN7678" ></A ><H3 ><A NAME="GTK-CAULDRON-IGNOREESCAPE-CAPS" ></A >GTK_CAULDRON_IGNOREESCAPE</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >#define GTK_CAULDRON_IGNOREESCAPE (0x1L<<7)</PRE ></TD ></TR ></TABLE ><P >Normalling, pressing the Escape key terminates the dialog. This prevents this.</P ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN7683" ></A ><H3 ><A NAME="GTK-CAULDRON-IGNOREENTER-CAPS" ></A >GTK_CAULDRON_IGNOREENTER</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >#define GTK_CAULDRON_IGNOREENTER (0x1L<<8)</PRE ></TD ></TR ></TABLE ><P >Normalling, pressing the Enter/Return key assigns the values and terminates. This prevents this.</P ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN7688" ></A ><H3 ><A NAME="GTK-CAULDRON-GRAB-CAPS" ></A >GTK_CAULDRON_GRAB</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >#define GTK_CAULDRON_GRAB (0x1L<<9)</PRE ></TD ></TR ></TABLE ><P >Causes a grab on the dialog - that is, no other widgets in the application will work until the dialog exits.</P ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN7693" ></A ><H3 ><A NAME="GTKCAULDRONNEXTARGCALLBACK" ></A >GtkCauldronNextArgCallback ()</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >void (*GtkCauldronNextArgCallback) (<GTKDOCLINK HREF="GINT" >gint</GTKDOCLINK > cauldron_type, <GTKDOCLINK HREF="GPOINTER" >gpointer</GTKDOCLINK > user_data, void *result);</PRE ></TD ></TR ></TABLE ><P ></P ><DIV CLASS="INFORMALTABLE" ><A NAME="AEN7700" ></A ><P ></P ><TABLE BORDER="0" WIDTH="100%" BGCOLOR="#FFD0D0" CELLSPACING="0" CELLPADDING="4" CLASS="CALSTABLE" ><TBODY ><TR ><TD WIDTH="20%" ALIGN="RIGHT" VALIGN="TOP" ><TT CLASS="PARAMETER" ><I >cauldron_type</I ></TT > :</TD ><TD WIDTH="80%" ALIGN="LEFT" VALIGN="TOP" > </TD ></TR ><TR ><TD WIDTH="20%" ALIGN="RIGHT" VALIGN="TOP" ><TT CLASS="PARAMETER" ><I >user_data</I ></TT > :</TD ><TD WIDTH="80%" ALIGN="LEFT" VALIGN="TOP" > </TD ></TR ><TR ><TD WIDTH="20%" ALIGN="RIGHT" VALIGN="TOP" ><TT CLASS="PARAMETER" ><I >result</I ></TT > :</TD ><TD WIDTH="80%" ALIGN="LEFT" VALIGN="TOP" > </TD ></TR ></TBODY ></TABLE ><P ></P ></DIV ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN7717" ></A ><H3 ><A NAME="GTKCAULDRONCUSTOMCALLBACK" ></A >GtkCauldronCustomCallback ()</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" ><GTKDOCLINK HREF="GTKWIDGET" >GtkWidget</GTKDOCLINK >* (*GtkCauldronCustomCallback) (<GTKDOCLINK HREF="GTKWIDGET" >GtkWidget</GTKDOCLINK > *widget, <GTKDOCLINK HREF="GPOINTER" >gpointer</GTKDOCLINK > user_data);</PRE ></TD ></TR ></TABLE ><P ></P ><DIV CLASS="INFORMALTABLE" ><A NAME="AEN7725" ></A ><P ></P ><TABLE BORDER="0" WIDTH="100%" BGCOLOR="#FFD0D0" CELLSPACING="0" CELLPADDING="4" CLASS="CALSTABLE" ><TBODY ><TR ><TD WIDTH="20%" ALIGN="RIGHT" VALIGN="TOP" ><TT CLASS="PARAMETER" ><I >widget</I ></TT > :</TD ><TD WIDTH="80%" ALIGN="LEFT" VALIGN="TOP" > </TD ></TR ><TR ><TD WIDTH="20%" ALIGN="RIGHT" VALIGN="TOP" ><TT CLASS="PARAMETER" ><I >user_data</I ></TT > :</TD ><TD WIDTH="80%" ALIGN="LEFT" VALIGN="TOP" > </TD ></TR ><TR ><TD WIDTH="20%" ALIGN="RIGHT" VALIGN="TOP" ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >Returns</I ></SPAN > :</TD ><TD WIDTH="80%" ALIGN="LEFT" VALIGN="TOP" > </TD ></TR ></TBODY ></TABLE ><P ></P ></DIV ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN7742" ></A ><H3 ><A NAME="GTK-DIALOG-CAULDRON" ></A >gtk_dialog_cauldron ()</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" ><GTKDOCLINK HREF="GCHAR" >gchar</GTKDOCLINK >* gtk_dialog_cauldron (const <GTKDOCLINK HREF="GCHAR" >gchar</GTKDOCLINK > *title, <GTKDOCLINK HREF="GLONG" >glong</GTKDOCLINK > options, ...);</PRE ></TD ></TR ></TABLE ><P >This function parses a <TT CLASS="PARAMETER" ><I >format</I ></TT > string with a variable length list of arguments. The <TT CLASS="PARAMETER" ><I >format</I ></TT > string describes a dialog box and has intuitive tokens to represent different frames and widgets. The dialog box is drawn whereupon <A HREF="gnomeui-gtkcauldron.html#GTK-DIALOG-CAULDRON" >gtk_dialog_cauldron</A >() blocks until closed or until an appropriate button is pushed. Results from the widgets are then stored into appropriate variables passed in the argument list in order to be retrieved by the caller.</P ><P >Retuns NULL is returned if the dialog is cancelled. GTK_CAULDRON_ENTERP is returned if the user pressed enter (return-on-enter can be overridden - see global options below), and GTK_CAULDRON_ESCAPEP is returned if the user pressed escape. Otherwise the label of the widget that was used to exit the dialog is returned.</P ><P ></P ><DIV CLASS="INFORMALTABLE" ><A NAME="AEN7755" ></A ><P ></P ><TABLE BORDER="0" WIDTH="100%" BGCOLOR="#FFD0D0" CELLSPACING="0" CELLPADDING="4" CLASS="CALSTABLE" ><TBODY ><TR ><TD WIDTH="20%" ALIGN="RIGHT" VALIGN="TOP" ><TT CLASS="PARAMETER" ><I >title</I ></TT > :</TD ><TD WIDTH="80%" ALIGN="LEFT" VALIGN="TOP" > dialog title</TD ></TR ><TR ><TD WIDTH="20%" ALIGN="RIGHT" VALIGN="TOP" ><TT CLASS="PARAMETER" ><I >options</I ></TT > :</TD ><TD WIDTH="80%" ALIGN="LEFT" VALIGN="TOP" > dialog options, see the macro definitions</TD ></TR ><TR ><TD WIDTH="20%" ALIGN="RIGHT" VALIGN="TOP" ><TT CLASS="PARAMETER" ><I >...</I ></TT > :</TD ><TD WIDTH="80%" ALIGN="LEFT" VALIGN="TOP" > </TD ></TR ><TR ><TD WIDTH="20%" ALIGN="RIGHT" VALIGN="TOP" ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >Returns</I ></SPAN > :</TD ><TD WIDTH="80%" ALIGN="LEFT" VALIGN="TOP" > </TD ></TR ></TBODY ></TABLE ><P ></P ></DIV ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN7776" ></A ><H3 ><A NAME="GTK-DIALOG-CAULDRON-PARSE" ></A >gtk_dialog_cauldron_parse ()</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" ><GTKDOCLINK HREF="GCHAR" >gchar</GTKDOCLINK >* gtk_dialog_cauldron_parse (const <GTKDOCLINK HREF="GCHAR" >gchar</GTKDOCLINK > *title, <GTKDOCLINK HREF="GLONG" >glong</GTKDOCLINK > options, const <GTKDOCLINK HREF="GCHAR" >gchar</GTKDOCLINK > *format, <A HREF="gnomeui-gtkcauldron.html#GTKCAULDRONNEXTARGCALLBACK" >GtkCauldronNextArgCallback</A > next_arg, <GTKDOCLINK HREF="GPOINTER" >gpointer</GTKDOCLINK > user_data, <GTKDOCLINK HREF="GTKWIDGET" >GtkWidget</GTKDOCLINK > *parent);</PRE ></TD ></TR ></TABLE ><P >This function parses a format string exactly like <A HREF="gnomeui-gtkcauldron.html#GTK-DIALOG-CAULDRON" >gtk_dialog_cauldron</A >(), however it derives arguments for the <TT CLASS="PARAMETER" ><I >format</I ></TT > string from a user function <TT CLASS="PARAMETER" ><I >next_arg</I ></TT >. <A HREF="gnomeui-gtkcauldron.html#GTK-DIALOG-CAULDRON-PARSE" >gtk_dialog_cauldron_parse</A >() is primarily used for creating wrappers for interpreted languages.</P ><P >Each subsequent call to <TT CLASS="PARAMETER" ><I >next_arg</I ></TT > must assign to <type>*result</type> a pointer to data of the type specified by <type>cauldron_type</type>. (An example can be found in <filename>gtk_dialog_cauldron.c</filename> and the pygnome package.) The \fIcauldron_type\fP's are a small set of types used for specifying and returning widget data. They are enumerated as <type>GTK_CAULDRON_TYPE_*</type> in the header file gtkcauldron.h.</P ><P >NULL is returned if the dialog is cancelled. GTK_CAULDRON_ENTER is returned if the user pressed enter (return-on-enter can be overridden - see global options below), and GTK_CAULDRON_ESCAPE is returned if the user pressed escape. GTK_CAULDRON_ERROR is returned by <A HREF="gnomeui-gtkcauldron.html#GTK-DIALOG-CAULDRON-PARSE" >gtk_dialog_cauldron_parse</A >() if an error occurred (like a malformed format string). The error message can be retrieved by <GTKDOCLINK HREF="GTK-DIALOG-CAULDRON-GET-ERROR" >gtk_dialog_cauldron_get_error</GTKDOCLINK >(). Otherwise the label of the widget that was used to exit the dialog is returned.</P ><P ></P ><DIV CLASS="INFORMALTABLE" ><A NAME="AEN7798" ></A ><P ></P ><TABLE BORDER="0" WIDTH="100%" BGCOLOR="#FFD0D0" CELLSPACING="0" CELLPADDING="4" CLASS="CALSTABLE" ><TBODY ><TR ><TD WIDTH="20%" ALIGN="RIGHT" VALIGN="TOP" ><TT CLASS="PARAMETER" ><I >title</I ></TT > :</TD ><TD WIDTH="80%" ALIGN="LEFT" VALIGN="TOP" > dialog title</TD ></TR ><TR ><TD WIDTH="20%" ALIGN="RIGHT" VALIGN="TOP" ><TT CLASS="PARAMETER" ><I >options</I ></TT > :</TD ><TD WIDTH="80%" ALIGN="LEFT" VALIGN="TOP" > dialog options, see the macro definitions</TD ></TR ><TR ><TD WIDTH="20%" ALIGN="RIGHT" VALIGN="TOP" ><TT CLASS="PARAMETER" ><I >format</I ></TT > :</TD ><TD WIDTH="80%" ALIGN="LEFT" VALIGN="TOP" > format string that describes the dialog</TD ></TR ><TR ><TD WIDTH="20%" ALIGN="RIGHT" VALIGN="TOP" ><TT CLASS="PARAMETER" ><I >next_arg</I ></TT > :</TD ><TD WIDTH="80%" ALIGN="LEFT" VALIGN="TOP" > user function.</TD ></TR ><TR ><TD WIDTH="20%" ALIGN="RIGHT" VALIGN="TOP" ><TT CLASS="PARAMETER" ><I >user_data</I ></TT > :</TD ><TD WIDTH="80%" ALIGN="LEFT" VALIGN="TOP" > data to pass to user function</TD ></TR ><TR ><TD WIDTH="20%" ALIGN="RIGHT" VALIGN="TOP" ><TT CLASS="PARAMETER" ><I >parent</I ></TT > :</TD ><TD WIDTH="80%" ALIGN="LEFT" VALIGN="TOP" > </TD ></TR ><TR ><TD WIDTH="20%" ALIGN="RIGHT" VALIGN="TOP" ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >Returns</I ></SPAN > :</TD ><TD WIDTH="80%" ALIGN="LEFT" VALIGN="TOP" > </TD ></TR ></TBODY ></TABLE ><P ></P ></DIV ></DIV ></DIV ><DIV CLASS="NAVFOOTER" ><BR CLEAR="all"><BR><TABLE WIDTH="100%" BORDER="0" BGCOLOR="#000000" CELLPADDING="1" CELLSPACING="0" ><TR ><TD WIDTH="25%" BGCOLOR="#C00000" ALIGN="left" ><A HREF="gnomeui-gnome-winhints.html" ><FONT COLOR="#FFFFFF" SIZE="3" ><B ><<< Previous Page</B ></FONT ></A ></TD ><TD WIDTH="25%" BGCOLOR="#0000C0" ALIGN="center" ><FONT COLOR="#FFFFFF" SIZE="3" ><B ><A HREF="book1.html" ><FONT COLOR="#FFFFFF" SIZE="3" ><B >Home</B ></FONT ></A ></B ></FONT ></TD ><TD WIDTH="25%" BGCOLOR="#00C000" ALIGN="center" ><FONT COLOR="#FFFFFF" SIZE="3" ><B ><A HREF="libgnomeui.html" ><FONT COLOR="#FFFFFF" SIZE="3" ><B >Up</B ></FONT ></A ></B ></FONT ></TD ><TD WIDTH="25%" BGCOLOR="#C00000" ALIGN="right" ><A HREF="gnome-objects.html" ><FONT COLOR="#FFFFFF" SIZE="3" ><B >Next Page >>></B ></FONT ></A ></TD ></TR ><TR ><TD COLSPAN="2" ALIGN="left" ><FONT COLOR="#FFFFFF" SIZE="3" ><B >gnome-winhints</B ></FONT ></TD ><TD COLSPAN="2" ALIGN="right" ><FONT COLOR="#FFFFFF" SIZE="3" ><B >GNOME Widgets and Objects</B ></FONT ></TD ></TR ></TABLE ></DIV ></BODY ></HTML >