progress.*: cosmetix
[k8lowj.git] / src / util-gtk.h
blob1670c651fc4103dc7eb6794580013e82e474dec8
1 /* logjam - a GTK client for LiveJournal.
2 * Copyright (C) 2005 Evan Martin <evan@livejournal.com>
3 */
4 #ifndef __LOGJAM_UTIL_GTK_H__
5 #define __LOGJAM_UTIL_GTK_H__
6 #ifdef HAVE_GTK
8 #include "gtk-all.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; }
14 typedef enum {
15 JAM_MSG_INFO,
16 JAM_MSG_WARNING,
17 JAM_MSG_ERROR
18 } MessageType;
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);
75 typedef struct {
76 GtkWidget *box;
77 GtkWidget *view;
78 GtkListStore *store;
79 GtkWidget *add, *edit, *remove;
80 } JamReorderable;
81 void jam_reorderable_make(JamReorderable * jr);
83 gchar *jam_clipboard_wait_for_text_timeout(GtkClipboard * clipboard, gint timeout);
86 #endif
87 #endif