summaryrefslogtreecommitdiff
path: root/tools/glade/glade/gbsource.h
diff options
context:
space:
mode:
Diffstat (limited to 'tools/glade/glade/gbsource.h')
-rw-r--r--tools/glade/glade/gbsource.h191
1 files changed, 191 insertions, 0 deletions
diff --git a/tools/glade/glade/gbsource.h b/tools/glade/glade/gbsource.h
new file mode 100644
index 00000000..a5ff73fe
--- /dev/null
+++ b/tools/glade/glade/gbsource.h
@@ -0,0 +1,191 @@
+/* Gtk+ User Interface Builder
+ * Copyright (C) 1998 Damon Chaplin
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it 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.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+*/
+#ifndef GLADE_GBSOURCE_H
+#define GLADE_GBSOURCE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+/* These identify each of the source code buffers. New buffers can easily be
+ added by increasing GLADE_NUM_SOURCE_BUFFERS and adding an id here. */
+#define GLADE_NUM_SOURCE_BUFFERS 9
+typedef enum
+{
+ GLADE_UIINFO = 0, /* GnomeUIInfo structs, which are
+ output before the function as
+ static structs. */
+ GLADE_DECLARATIONS = 1, /* The declarations of the widgets
+ and temporary variables in the
+ function to create a component. */
+ GLADE_SOURCE = 2, /* The main code which creates the
+ widgets in a component. */
+ GLADE_SIGNAL_CONNECTIONS = 3, /* Code to connect signal handlers. */
+ GLADE_ACCELERATORS = 4, /* Code to setup accelerator keys, used
+ when the target widget is different
+ from the source (i.e. the label). */
+
+ GLADE_CALLBACK_DECLARATIONS = 5, /* Declarations of signal handler
+ functions and callbacks. */
+ GLADE_CALLBACK_SOURCE = 6, /* Source code of signal handlers or
+ callbacks. */
+ GLADE_OBJECT_HOOKUP = 7, /* Code to hookup pointers to widgets.
+ We put it all together so it can be
+ deleted easily if the user just
+ wants to pinch the source code. */
+ GLADE_ATK_SOURCE = 8 /* Code to set ATK properties, action
+ descriptions and relations. */
+} GladeSourceBuffer;
+
+
+typedef struct
+{
+ GladeProject *project;
+ GladeError *error; /* If an error occurs this will be
+ non-NULL, and will contain info
+ about the error. Note that we
+ abort the source generation as
+ soon as an error is encountered,
+ so there can only be one error. */
+ gchar *project_name;
+ gchar *program_name;
+ gchar *interface_c_filename; /* The full path of the source file
+ which creates the interface. */
+ gchar *interface_h_filename; /* The full path of the main header. */
+ gchar *callback_c_filename; /* The full path of the source file
+ where the empty callbacks/signal
+ handlers are added. */
+ gchar *callback_h_filename; /* The full path of callback header. */
+ gboolean set_widget_names; /* If gtk_widget_set_name (...) is
+ output to set the name of each
+ widget - useful for rc files. */
+ gboolean use_component_struct; /* TRUE if a struct is used to keep
+ pointers to all public widgets in a
+ component. (This is unfinished).
+ FALSE for the old behaviour of
+ using gtk_object_set_data () to
+ save pointers in the toplevel
+ widget's datalist. */
+ gboolean use_gettext; /* If strings in the source code are
+ marked with the standard gettext
+ macros _() or N_() so they can be
+ translated easily. */
+ gboolean creating_callback_files;/*TRUE if we are creating the files
+ containing the signal handlers and
+ callback functions. FALSE if we are
+ just appending new/updated
+ handlers and callbacks. */
+ time_t last_write_time; /* The last time that the source was
+ written. We need this to determine
+ exactly which signal handlers have
+ been added or updated. We get it
+ from one of the main source files.
+ */
+
+ gboolean need_tooltips; /* TRUE if any widgets in a component
+ have a tooltip set. If they do then
+ a GtkTooltips object has to be
+ created. */
+ gboolean need_accel_group; /* TRUE if any widgets have accelerator
+ keys set. If they do then an
+ accel_group needs to be created. */
+ gchar *wname; /* The C code to use to refer to the
+ widget currently being written.
+ This is the the name of the
+ variable holding the widget (which
+ is the same as the widget's name),
+ or if we are using structs to hold
+ pointers to all widgets this will
+ be something like "window1->label1".
+ See use_component_struct above. */
+ gchar *real_wname; /* This is the real name of the widget
+ currently being written, converted
+ so that it is a valid C identifier.
+ */
+ GtkWidget *component; /* This is the component currently
+ being output (i.e. a window/dialog).
+ */
+ gchar *component_name; /* This is the name of the component,
+ converted to a valid C identifier.
+ */
+ GladeWidgetData *widget_data; /* The GladeWidgetData of the widget
+ currently being output. */
+ GtkWidget *parent; /* The parent widget of the widget
+ currently being output. */
+ GHashTable *standard_widgets; /* A hash of GTK widgets used to
+ determine if values differ from
+ their default values. */
+ GtkWidget *standard_widget; /* This is the standard widget
+ corresponding to the widget being
+ written. It is used so we only
+ set properties which differ from the
+ standard setting. (It may be NULL,
+ in which case all properties should
+ be set). */
+ GHashTable *handlers_output; /* A hash of signal handlers we have
+ already output. */
+ gboolean create_widget; /* If TRUE then the code to create the
+ current widget needs to be output.
+ It is FALSE for widgets which are
+ created automatically by their
+ parents, e.g. filesel dialog
+ buttons. */
+ gboolean write_children; /* This is set to FALSE in a GbWidget
+ write_source() function to
+ indicate that the source code to
+ output the children has already
+ been written using explicit calls,
+ so the default recursive calls are
+ skipped. See gbwidgets/gbdialog.c */
+
+ gchar *focus_widget; /* Set to the name of the widget to
+ grab the focus. */
+ gchar *default_widget; /* Set to the name of the widget to
+ grab the default. We need to grab
+ the default after creating the
+ entire component, to overcome
+ problems with GnomeDialog. */
+
+ /* These buffers hold the code being generated for the current component
+ (window/dialog). When the component is finished they are all output
+ at once in the correct order, and with other necessary pieces of code
+ inserted. See source_write_component() in source.c. */
+ GString *source_buffers[GLADE_NUM_SOURCE_BUFFERS];
+} GbWidgetWriteSourceData;
+
+
+void gb_widget_write_source (GtkWidget *widget,
+ GbWidgetWriteSourceData *data);
+void gb_widget_write_standard_source
+ (GtkWidget *widget,
+ GbWidgetWriteSourceData *data);
+void gb_widget_write_add_child_source
+ (GtkWidget *widget,
+ GbWidgetWriteSourceData *data);
+void gb_widget_write_signal_handler_source
+ (GtkWidget *widget,
+ GbWidgetWriteSourceData *data,
+ const gchar *signal_name,
+ const gchar *handler);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* GLADE_GBSOURCE_H */