1 /* logjam - a GTK client for LiveJournal.
2 * Copyright (C) 2005 Evan Martin <evan@livejournal.com>
4 #ifndef __LOGJAM_UTIL_GTK_H__
5 #define __LOGJAM_UTIL_GTK_H__
12 #define STACK(type, var) type actual_##var = {0}, *var = &actual_##var
13 #define UNREF_AND_NULL(x) if (x) { g_object_unref(G_OBJECT(x)); x = NULL; }
23 extern gchar
*gettext_translate_func (const gchar
*path
, gpointer data
);
25 extern GtkWidget
*jam_table_new (int rows
, int cols
);
26 extern GtkWidget
*jam_table_label (GtkTable
*table
, int row
, const char *text
);
27 extern void jam_table_content (GtkTable
*table
, int row
, GtkWidget
*content
);
28 extern void jam_table_label_content (GtkTable
*table
, int row
, const char *text
, GtkWidget
*content
);
29 extern void jam_table_label_content_mne (GtkTable
*table
, int row
, const char *text
, GtkWidget
*content
, GtkWidget
*mne
);
30 extern void jam_table_fillrow (GtkTable
*table
, int row
, GtkWidget
*content
);
31 extern void jam_spin_button_set (GtkSpinButton
*w
, gboolean numeric
, gdouble range_low
, gdouble range_high
, gdouble increment_single
, gdouble increment_page
, gint digits
);
33 /* if width or height <= 0, then we make up a reasonable size. */
34 extern void jam_win_set_size (GtkWindow
*win
, int width
, int height
);
36 extern GtkWidget
*jam_dialog_set_contents (GtkDialog
*dlg
, GtkWidget
*contents
);
38 extern GtkWidget
*jam_dialog_buttonbox_new (void);
39 extern void jam_dialog_buttonbox_add (GtkWidget
*box
, GtkWidget
*button
);
40 extern GtkWidget
*jam_dialog_buttonbox_button_with_label (GtkWidget
*box
, const char *label
);
41 extern GtkWidget
*jam_dialog_buttonbox_button_from_stock (GtkWidget
*box
, const char *id
);
42 extern void jam_dialog_set_contents_buttonbox (GtkWidget
*dlg
, GtkWidget
*contents
, GtkWidget
*buttonbox
);
44 extern int jam_confirm (GtkWindow
*parent
, const char *title
, const char *msg
);
45 extern void jam_message (GtkWindow
*parent
, MessageType type
, gboolean forgettable
, const char *title
, const char *message
, ...) __attribute__((format(printf
,5,6)));
46 extern void jam_messagebox (GtkWindow
*parent
, const char *title
, const char *message
);
47 extern void jam_warning (GtkWindow
*parent
, const char *msg
, ...) __attribute__((format(printf
,2,3)));
50 gdk_color_parse() does exactly this:
51 void hex_to_gdkcolor(const char *buf, GdkColor *c);
53 extern void gdkcolor_to_hex (GdkColor
*color
, char *buf
);
55 /* wrap this widget in a scrollarea */
56 extern GtkWidget
*scroll_wrap (GtkWidget
*w
);
58 /* tie a geometry struct to a window */
59 extern void geometry_tie (GtkWidget
*win
, GeometryType g
);
60 extern void geometry_tie_full (GeometryType g
, GtkWindow
*win
, GtkPaned
*paned
);
62 extern gint
text_sort_func (GtkTreeModel
*model
, GtkTreeIter
*a
, GtkTreeIter
*b
, gpointer data
);
64 extern void jam_widget_set_visible (GtkWidget
*w
, gboolean visible
);
65 extern void jam_widget_set_font (GtkWidget
*w
, const gchar
*font_name
);
67 /* produces an hbox that has a label and a widget, with optional
68 * sizegroup, expansion setting, and mnemonic widget. */
69 extern GtkWidget
*labelled_box_new_all (const char *caption
, GtkWidget
*w
, gboolean expand
, GtkSizeGroup
*sg
, GtkWidget
*mne
);
70 #define labelled_box_new_sg(c, w, sg) labelled_box_new_all(c, w, TRUE, sg, NULL)
71 #define labelled_box_new_expand(c, w, e) labelled_box_new_all(c, w, e, NULL, NULL)
72 #define labelled_box_new(c, w) labelled_box_new_all(c, w, TRUE, NULL, NULL)
74 /* like gtk_label_new, but appropriate for a form. */
75 extern GtkWidget
*jam_form_label_new (const char *text
);
82 GtkWidget
*add
, *edit
, *remove
;
86 extern void jam_reorderable_make (JamReorderable
*jr
);
88 extern gchar
*jam_clipboard_wait_for_text_timeout (GtkClipboard
*clipboard
, gint timeout
);