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__
9 #include "conf.h" /* for the "geometry" struct */
11 #define STACK(type, var) type actual_##var = {0}, *var = &actual_##var
12 #define UNREF_AND_NULL(x) if (x) { g_object_unref(G_OBJECT(x)); x = NULL; }
20 gchar
*gettext_translate_func(const gchar
* path
, gpointer data
);
22 GtkWidget
*jam_table_new(int rows
, int cols
);
23 GtkWidget
*jam_table_label(GtkTable
* table
, int row
, const char *text
);
24 void jam_table_content(GtkTable
* table
, int row
, GtkWidget
* content
);
25 void jam_table_label_content(GtkTable
* table
, int row
, const char *text
, GtkWidget
* content
);
26 void jam_table_label_content_mne(GtkTable
* table
, int row
, const char *text
, GtkWidget
* content
, GtkWidget
* mne
);
27 void jam_table_fillrow(GtkTable
* table
, int row
, GtkWidget
* content
);
28 void jam_spin_button_set(GtkSpinButton
* w
, gboolean numeric
, gdouble range_low
, gdouble range_high
, gdouble increment_single
,
29 gdouble increment_page
, gint digits
);
31 /* if width or height <= 0, then we make up a reasonable size. */
32 void jam_win_set_size(GtkWindow
* win
, int width
, int height
);
34 GtkWidget
*jam_dialog_set_contents(GtkDialog
* dlg
, GtkWidget
* contents
);
36 GtkWidget
*jam_dialog_buttonbox_new(void);
37 void jam_dialog_buttonbox_add(GtkWidget
* box
, GtkWidget
* button
);
38 GtkWidget
*jam_dialog_buttonbox_button_with_label(GtkWidget
* box
, const char *label
);
39 GtkWidget
*jam_dialog_buttonbox_button_from_stock(GtkWidget
* box
, const char *id
);
40 void jam_dialog_set_contents_buttonbox(GtkWidget
* dlg
, GtkWidget
* contents
, GtkWidget
* buttonbox
);
42 int jam_confirm(GtkWindow
* parent
, const char *title
, const char *msg
);
43 void jam_message(GtkWindow
* parent
, MessageType type
, gboolean forgettable
, const char *title
, const char *message
, ...);
44 void jam_messagebox(GtkWindow
* parent
, const char *title
, const char *message
);
45 void jam_warning(GtkWindow
* parent
, const char *msg
, ...);
48 gdk_color_parse() does exactly this:
49 void hex_to_gdkcolor(const char *buf, GdkColor *c);
51 void gdkcolor_to_hex(GdkColor
* color
, char *buf
);
53 /* wrap this widget in a scrollarea */
54 GtkWidget
*scroll_wrap(GtkWidget
* w
);
56 /* tie a geometry struct to a window */
57 void geometry_tie(GtkWidget
* win
, GeometryType g
);
58 void geometry_tie_full(GeometryType g
, GtkWindow
* win
, GtkPaned
* paned
);
60 gint
text_sort_func(GtkTreeModel
* model
, GtkTreeIter
* a
, GtkTreeIter
* b
, gpointer data
);
62 void jam_widget_set_visible(GtkWidget
* w
, gboolean visible
);
63 void jam_widget_set_font(GtkWidget
* w
, const gchar
* font_name
);
65 /* produces an hbox that has a label and a widget, with optional
66 * sizegroup, expansion setting, and mnemonic widget. */
67 GtkWidget
*labelled_box_new_all(const char *caption
, GtkWidget
* w
, gboolean expand
, GtkSizeGroup
* sg
, GtkWidget
* mne
);
68 #define labelled_box_new_sg(c, w, sg) labelled_box_new_all(c, w, TRUE, sg, NULL)
69 #define labelled_box_new_expand(c, w, e) labelled_box_new_all(c, w, e, NULL, NULL)
70 #define labelled_box_new(c, w) labelled_box_new_all(c, w, TRUE, NULL, NULL)
72 /* like gtk_label_new, but appropriate for a form. */
73 GtkWidget
*jam_form_label_new(const char *text
);
79 GtkWidget
*add
, *edit
, *remove
;
81 void jam_reorderable_make(JamReorderable
* jr
);
83 gchar
*jam_clipboard_wait_for_text_timeout(GtkClipboard
* clipboard
, gint timeout
);