summaryrefslogtreecommitdiff
path: root/tools/glade/glade/utils.h
diff options
context:
space:
mode:
Diffstat (limited to 'tools/glade/glade/utils.h')
-rw-r--r--tools/glade/glade/utils.h386
1 files changed, 386 insertions, 0 deletions
diff --git a/tools/glade/glade/utils.h b/tools/glade/glade/utils.h
new file mode 100644
index 00000000..0a591142
--- /dev/null
+++ b/tools/glade/glade/utils.h
@@ -0,0 +1,386 @@
+/* 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_UTILS_H
+#define GLADE_UTILS_H
+
+#include <stdio.h>
+
+#include <gtk/gtkbox.h>
+#include <gtk/gtkcombo.h>
+#include <gtk/gtkfixed.h>
+#include <gtk/gtklistitem.h>
+#include <gtk/gtktable.h>
+#include <gtk/gtktoolbar.h>
+#include <gtk/gtkwindow.h>
+#include <gtk/gtkobject.h>
+
+#include "gbwidget.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+/* Days of the week, 'Sun' ... 'Sat'. */
+extern gchar *GladeDayNames[];
+/* Months of the year, 'Jan' ... 'Dec'. */
+extern gchar *GladeMonthNames[];
+
+
+/* This shows a simple dialog box with a label and an 'OK' button.
+ If transient_widget is not NULL, then its toplevel window is found and used
+ to set the transient_for property (this also works for menu widgets).
+
+ Example usage:
+ glade_util_show_message_box ("Error saving file", NULL);
+ */
+void glade_util_show_message_box (const gchar *message,
+ GtkWidget *transient_widget);
+
+
+/* This creates a dialog box with a message and a number of buttons.
+ * Signal handlers can be supplied for any of the buttons.
+ * NOTE: The dialog is automatically destroyed when any button is clicked.
+ * default_button specifies the default button, numbered from 1..
+ * data is passed to the signal handler.
+
+ Example usage:
+ gchar *buttons[] = { "Yes", "No", "Cancel" };
+ GtkSignalFunc signal_handlers[] = { on_yes, on_no, NULL };
+ glade_util_show_dialog ("Do you want to save the current project?",
+ 3, buttons, 3, signal_handlers, NULL);
+ */
+GtkWidget* glade_util_create_dialog_with_buttons (const gchar *message,
+ gint nbuttons,
+ const gchar *buttons[],
+ gint default_button,
+ GtkSignalFunc signal_handlers[],
+ gpointer data,
+ GtkWidget *transient_widget);
+
+
+/* This shows a dialog box with a message and an Entry for entering a value.
+ * When the OK button is pressed the handler of the specified widget will
+ * be called with the value and the given data.
+ * NOTE: The dialog is automatically destroyed when any button is clicked.
+
+ Example usage:
+ glade_util_show_entry_dialog ("Name:", "default", widget, on_dialog_ok,
+ "NewName");
+
+ void
+ on_dialog_ok(GtkWidget *widget, gchar *value, gpointer data)
+ {
+ ...
+ */
+typedef gint (*GbEntryDialogFunc) (GtkWidget *widget,
+ gchar *value,
+ gpointer data);
+
+void glade_util_show_entry_dialog(const gchar *message,
+ const gchar *initial_value,
+ GtkWidget *widget,
+ GbEntryDialogFunc signal_handler,
+ gpointer data,
+ GtkWidget *transient_widget);
+
+
+/* This creates a dialog with OK & Cancel buttons, usable in plain GTK or
+ Gnome, and returns a vbox which the caller can place widgets in.
+ If transient_for is non-NULL, the window it is in is used to set the
+ transient for relationship, so the dialog will always be above the widget.
+ The callback will be called when the OK button is pressed. */
+GtkWidget* glade_util_create_dialog (const gchar *title,
+ GtkWidget *transient_for,
+ GtkSignalFunc ok_handler,
+ gpointer ok_handler_data,
+ GtkWidget **vbox);
+
+
+typedef enum
+{
+ GladeEscCloses,
+ GladeEscDestroys
+} GladeEscAction;
+
+
+/* This event handler performs the selected GladeEscAction when Esc is
+ pressed in a dialog.
+ It is not necessary for GnomeDialogs. */
+gint glade_util_check_key_is_esc (GtkWidget *widget,
+ GdkEventKey *event,
+ gpointer data);
+
+
+/* This returns a new entry ready to insert in a dialog.
+ The entry is set up so that <Return> will invoke the default action. The
+ returned widget must be added to a container in the dialog. */
+extern GtkWidget *
+glade_util_entry_new (GtkObject *dialog);
+
+
+/* This returns a new spinbutton ready to insert in a dialog.
+ A pointer to the spin button is added as object data to the dialog. The
+ spinbutton is set up so that <Return> will invoke the default action. The
+ returned widget must be added to a container in the dialog. */
+extern GtkWidget *
+glade_util_spin_button_new (GtkObject *dialog,
+ const gchar *key,
+ GtkAdjustment *adjustment,
+ gfloat climb_rate,
+ guint digits);
+
+
+/* This returns the index of the given gint with the given array of gints.
+ If the value is not found it outputs a warning and returns -1.
+ This function is intended to be used for finding the index when using
+ properties which are choices. */
+gint glade_util_int_array_index (const gint array[],
+ gint array_size,
+ gint value);
+
+/* This returns the index of the given string with the given array of strings.
+ If the value is not found it outputs a warning and returns -1.
+ This function is intended to be used for finding the index when using
+ properties which are choices. */
+gint glade_util_string_array_index (const gchar *array[],
+ gint array_size,
+ const gchar *value);
+
+/* This returns TRUE if the two strings are equivalent. Note that NULL is
+ considered equivalent to the empty string. */
+gboolean glade_util_strings_equivalent (const gchar *string1,
+ const gchar *string2);
+/* This returns a copy of the given string, or NULL if the string is NULL
+ or empty, i.e. "". */
+gchar* glade_util_copy_string (const gchar *string);
+/* Returns TRUE if string contains substring. Returns FALSE if substring is
+ not found or is NULL. */
+gboolean glade_util_strstr (const gchar *string,
+ const gchar *substring);
+
+gchar* glade_util_find_start_of_tag_name (const gchar * tag_name);
+
+gchar* glade_util_create_modifiers_string (guint8 modifier_flags);
+
+/* parse a string in the form of "GTK_ANCHOR_NE|GTK_ANCHOR_SW" */
+guint glade_util_flags_from_string (GType type, const char *string);
+gchar* glade_util_string_from_flags (GType type, guint flags);
+
+const char *glade_string_from_enum (GType type, gint value);
+
+gint glade_enum_from_string (GType type, const char *string);
+
+
+/* This creates a GtkPixmap widget, using a colormap and xpm data from an
+ '#include'd pixmap file. */
+GtkWidget* glade_util_create_pixmap_using_colormap (GdkColormap *colormap,
+ gchar **xpm_data);
+
+/* This returns TRUE if the widget is a toplevel project component,
+ i.e. a window, dialog or popup menu. */
+gboolean glade_util_is_component (GtkWidget *widget);
+
+/* This returns the toplevel widget containing the given widget. It is similar
+ to gtk_widget_get_toplevel() but is also walks up menus. */
+GtkWidget* glade_util_get_toplevel (GtkWidget *widget);
+
+/* This returns the closest ancestor of the given widget which is a GbWidget.*/
+GtkWidget* glade_util_get_parent (GtkWidget *widget);
+
+/* This tries to find a named widget in a component. It returns the widget or
+ NULL if it wasn't found. */
+GtkWidget* glade_util_find_widget (GtkWidget *widget, gchar *name);
+
+
+/* This is used when setting up keyboard accelerators resulting from underlined
+ keys in labels. It returns the mnemonic widget to use. */
+GtkWidget* glade_util_find_default_accelerator_target (GtkWidget *label);
+
+/* Returns the index of a widget in a box. Note that the box packing
+ property means that widgets may not be displayed in this order. */
+gint glade_util_get_box_pos (GtkBox *box,
+ GtkWidget *widget);
+
+/* Returns the structure corresponding to the given widget in a table. */
+GtkTableChild* glade_util_find_table_child (GtkTable *table,
+ GtkWidget *widget);
+GtkBoxChild* glade_util_find_box_child (GtkBox *box,
+ GtkWidget *widget);
+GtkFixedChild* glade_util_find_fixed_child (GtkFixed *fixed,
+ GtkWidget *widget);
+#if GLADE_SUPPORTS_GTK_PACKER
+GtkPackerChild* glade_util_find_packer_child (GtkPacker *packer,
+ GtkWidget *widget);
+#endif
+
+/* This returns the GtkLabel's text, including the underline characters.
+ It is needed since GtkLabel doesn't provide the opposite function to
+ gtk_label_parse_uline(). The returned string should be freed after use. */
+gchar* glade_util_get_label_text (GtkWidget *label);
+
+/* These close the given window, so that if it is shown again it appears in
+ the same place. */
+gint glade_util_close_window_on_delete (GtkWidget *widget,
+ GdkEvent *event,
+ gpointer data);
+gint glade_util_close_window (GtkWidget *widget);
+
+
+
+/*
+ * File Utility Functions.
+ */
+
+/* Returns TRUE if the given file exists. filename must be UTF-8. */
+gboolean glade_util_file_exists (const gchar *filename);
+
+/* Returns the last modification time of the given file, or 0 if it doesn't
+ exist, or -1 on error. filename must be UTF-8. */
+GladeError* glade_util_file_last_mod_time (const gchar *filename,
+ time_t *last_mod_time);
+
+/* This copies a file from src to dest, and returns a GladeError if an error
+ occurs. src & dest must be UTF-8. */
+GladeError* glade_util_copy_file (const gchar *src,
+ const gchar *dest);
+
+/* Creates a directory if it doesn't already exist. */
+GladeError* glade_util_ensure_directory_exists (const gchar *directory);
+
+/*
+ * Filename Utility Functions.
+ */
+
+/* Adds a filename onto a directory to make a complete pathname.
+ The directory may or may not end in '/'. file must be a simple filename.
+ Free the returned string when no longer needed. */
+gchar* glade_util_make_path (const gchar *dir,
+ const gchar *file);
+
+/* This turns a relative pathname into an absolute one based on the given
+ base directory (which MUST be absolute).
+ e.g. "/home/damon" + "../dave/test" -> "/home/dave/test"
+ The returned path should be freed when no longer needed. */
+gchar* glade_util_make_absolute_path (const gchar *dir,
+ const gchar *file);
+
+/* This turns an absolute pathname into an relative one based on the given
+ base directory. Both arguments must be absolute paths, and should be in
+ canonical form, i.e. not containing '..', '.' or multiple '/'s together.
+ The returned value may or may not end with a '/', depending on the
+ arguments. The returned path should be freed when no longer needed. */
+gchar* glade_util_make_relative_path (const gchar *base_dir,
+ const gchar *file);
+
+/* Returns TRUE if file is in dir. Both paths must be absolute. file can
+ be a directory, and both can end in '/' or not. Note that we assume
+ that both are in proper form, i.e. there are no instances of '//', '.',
+ or '..' in either. */
+gboolean glade_util_directory_contains_file (const gchar *dir,
+ const gchar *file);
+
+/* Returns TRUE if the 2 directories are equivalent. Both must be absolute
+ paths, and may or may not end in '/'. */
+gboolean glade_util_directories_equivalent (const gchar *dir1,
+ const gchar *dir2);
+
+
+/* This is similar to GLib's dirname, but it makes sure the dirname ends with
+ a G_DIR_SEPARATOR. */
+gchar* glade_util_dirname (const gchar *file_name);
+
+/* This returns the parent directory of the given directory, which may or may
+ not end in a G_DIR_SEPARATOR. The returned string should be freed. */
+gchar* glade_util_parent_directory (const gchar *dir);
+
+
+/* This searches the $HOME/Projects directory to find the default directory to
+ use for the next project, e.g. $HOME/Projects/project1. The returned
+ directory should be freed when no longer needed. */
+GladeError* glade_util_get_next_free_project_directory (gchar **project_directory_return,
+ gint *project_num_return);
+
+
+/* Sets the TZ environment variable to the given value, e.g. "UTC", returning
+ the old setting.
+ NOTE: You must call glade_util_reset_timezone() some time later to restore
+ the original TZ. Pass glade_util_reset_timezone() the string that
+ glade_util_set_timezone() returns. */
+gchar* glade_util_set_timezone (const gchar *tz);
+void glade_util_reset_timezone (gchar *tz);
+
+
+gboolean glade_util_check_is_stock_id (const gchar *stock_id);
+
+/* This is a GCompareFunc for comparing the labels of 2 stock items, ignoring
+ any '_' characters. It isn't particularly efficient. */
+gint glade_util_compare_stock_labels (gconstpointer a,
+ gconstpointer b);
+
+
+/* FIXME: These are pinched from gtkcombo.c. Get rid of them. */
+/* GtkListItem *glade_util_gtk_combo_find (GtkCombo *combo);*/
+/*gchar *glade_util_gtk_combo_func (GtkListItem *listitem);*/
+gpointer glade_util_gtk_combo_find (GtkCombo *combo);
+gchar *glade_util_gtk_combo_func (gpointer listitem);
+
+/* Returns TRUE if we need to support a 'Border Width' property for a widget.*/
+gboolean glade_util_uses_border_width (GtkWidget *widget);
+
+/* Converts a filename from UTF-8 to on-disk encoding, and sets it in a
+ GtkFileSelection. */
+void glade_util_set_file_selection_filename(GtkWidget *filesel,
+ const gchar *filename_utf8);
+/* Gets the selected file in a GtkFileSelection, converts it to UTF-8 and
+ returns it. Note that the returned string must be freed. */
+gchar* glade_util_get_file_selection_filename(GtkWidget *filesel);
+
+/* Like fopen but takes a UTF-8 filename and converts to on-disk encoding. */
+FILE* glade_util_fopen (const gchar *filename_utf8,
+ const gchar *mode);
+
+/* Gets a list of file names from a text/uri-list */
+GList *glade_util_uri_list_parse (const gchar *uri_list);
+
+/* Gets the extra translation properties stored inside the widget data. */
+void glade_util_get_translation_properties (GtkWidget *widget,
+ const gchar *property_name,
+ gboolean *translatable,
+ gchar **comments,
+ gboolean *context);
+
+/* Sets the extra translation properties stored inside the widget data. */
+void glade_util_set_translation_properties (GtkWidget *widget,
+ const gchar *property_name,
+ gboolean translatable,
+ const gchar *comments,
+ gboolean context);
+
+/* Copies the extra translation properties stored inside the widget data. */
+void glade_util_copy_translation_properties(GtkWidget *from_widget,
+ const gchar *from_property_name,
+ GtkWidget *to_widget,
+ const gchar *to_property_name);
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* GLADE_UTILS_H */