gtkutils.h
Go to the documentation of this file.
1 
6 /* pidgin
7  *
8  * Pidgin is the legal property of its developers, whose names are too numerous
9  * to list here. Please refer to the COPYRIGHT file distributed with this
10  * source distribution.
11  *
12  * This program is free software; you can redistribute it and/or modify
13  * it under the terms of the GNU General Public License as published by
14  * the Free Software Foundation; either version 2 of the License, or
15  * (at your option) any later version.
16  *
17  * This program is distributed in the hope that it will be useful,
18  * but WITHOUT ANY WARRANTY; without even the implied warranty of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20  * GNU General Public License for more details.
21  *
22  * You should have received a copy of the GNU General Public License
23  * along with this program; if not, write to the Free Software
24  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
25  */
26 #ifndef _PIDGINUTILS_H_
27 #define _PIDGINUTILS_H_
28 
29 #include "gtkconv.h"
30 #include "pidgin.h"
31 #include "prpl.h"
32 #include "util.h"
33 
34 
35 
36 
37 
38 typedef enum
39 {
40  PIDGIN_BUTTON_HORIZONTAL,
41  PIDGIN_BUTTON_VERTICAL
42 
43 } PidginButtonOrientation;
44 
45 typedef enum
46 {
47  PIDGIN_BUTTON_NONE = 0,
48  PIDGIN_BUTTON_TEXT,
49  PIDGIN_BUTTON_IMAGE,
50  PIDGIN_BUTTON_TEXT_IMAGE
51 
52 } PidginButtonStyle;
53 
54 typedef enum
55 {
56  PIDGIN_PRPL_ICON_SMALL,
57  PIDGIN_PRPL_ICON_MEDIUM,
58  PIDGIN_PRPL_ICON_LARGE
59 } PidginPrplIconSize;
60 
61 #ifndef _WIN32
62 typedef enum
63 {
64  PIDGIN_BROWSER_DEFAULT = 0,
65  PIDGIN_BROWSER_CURRENT,
66  PIDGIN_BROWSER_NEW_WINDOW,
67  PIDGIN_BROWSER_NEW_TAB
68 
69 } PidginBrowserPlace;
70 #endif /* _WIN32 */
71 
72 typedef struct {
73  gboolean is_buddy;
74  union {
75  PurpleBuddy *buddy;
76  PurpleLogSet *logged_buddy;
77  } entry;
79 
80 typedef gboolean (*PidginFilterBuddyCompletionEntryFunc) (const PidginBuddyCompletionEntry *completion_entry, gpointer user_data);
81 
82 
89 void pidgin_setup_imhtml(GtkWidget *imhtml);
90 
109 GtkWidget *pidgin_create_imhtml(gboolean editable, GtkWidget **imhtml_ret, GtkWidget **toolbar_ret, GtkWidget **sw_ret);
110 
119 GtkWidget *pidgin_create_small_button(GtkWidget *image);
120 
131 GtkWidget *pidgin_create_window(const char *title, guint border_width, const char *role, gboolean resizable);
132 
143 GtkWidget *pidgin_create_dialog(const char *title, guint border_width, const char *role, gboolean resizable);
144 
154 GtkWidget *pidgin_dialog_get_vbox_with_properties(GtkDialog *dialog, gboolean homogeneous, gint spacing);
155 
163 GtkWidget *pidgin_dialog_get_vbox(GtkDialog *dialog);
164 
176 GtkWidget *pidgin_dialog_add_button(GtkDialog *dialog, const char *label,
177  GCallback callback, gpointer callbackdata);
178 
186 GtkWidget *pidgin_dialog_get_action_area(GtkDialog *dialog);
187 
194 void pidgin_toggle_sensitive(GtkWidget *widget, GtkWidget *to_toggle);
195 
204 void pidgin_set_sensitive_if_input(GtkWidget *entry, GtkWidget *dialog);
205 
212 void pidgin_toggle_sensitive_array(GtkWidget *w, GPtrArray *data);
213 
220 void pidgin_toggle_showhide(GtkWidget *widget, GtkWidget *to_toggle);
221 
229 GtkWidget *pidgin_separator(GtkWidget *menu);
230 
239 GtkWidget *pidgin_new_item(GtkWidget *menu, const char *str);
240 
252 GtkWidget *pidgin_new_check_item(GtkWidget *menu, const char *str,
253  GCallback cb, gpointer data, gboolean checked);
254 
270 GtkWidget *pidgin_new_item_from_stock(GtkWidget *menu, const char *str,
271  const char *icon, GCallback cb,
272  gpointer data, guint accel_key,
273  guint accel_mods, char *mod);
274 
284 GtkWidget *pidgin_pixbuf_button_from_stock(const char *text, const char *icon,
285  PidginButtonOrientation style);
286 
294 GtkWidget *pidgin_pixbuf_toolbar_button_from_stock(const char *stock);
295 
304 GtkWidget *pidgin_make_frame(GtkWidget *parent, const char *title);
305 
315 GtkWidget *pidgin_protocol_option_menu_new(const char *id,
316  GCallback cb,
317  gpointer user_data);
318 
326 const char *pidgin_protocol_option_menu_get_selected(GtkWidget *optmenu);
327 
341 GtkWidget *pidgin_account_option_menu_new(PurpleAccount *default_account,
342  gboolean show_all, GCallback cb,
343  PurpleFilterAccountFunc filter_func, gpointer user_data);
344 
353 
361 void pidgin_account_option_menu_set_selected(GtkWidget *optmenu, PurpleAccount *account);
362 
374 void pidgin_setup_screenname_autocomplete_with_filter(GtkWidget *entry, GtkWidget *optmenu, PidginFilterBuddyCompletionEntryFunc filter_func, gpointer user_data);
375 
384 gboolean pidgin_screenname_autocomplete_default_filter(const PidginBuddyCompletionEntry *completion_entry, gpointer all_accounts);
385 
402 void pidgin_setup_screenname_autocomplete(GtkWidget *entry, GtkWidget *optmenu, gboolean all);
403 
417 gboolean pidgin_check_if_dir(const char *path, GtkFileSelection *filesel);
418 
427 void pidgin_setup_gtkspell(GtkTextView *textview);
428 
432 void pidgin_save_accels_cb(GtkAccelGroup *accel_group, guint arg1,
433  GdkModifierType arg2, GClosure *arg3,
434  gpointer data);
435 
439 gboolean pidgin_save_accels(gpointer data);
440 
444 void pidgin_load_accels(void);
445 
454 void pidgin_retrieve_user_info(PurpleConnection *conn, const char *name);
455 
465 void pidgin_retrieve_user_info_in_chat(PurpleConnection *conn, const char *name, int chatid);
466 
483 gboolean pidgin_parse_x_im_contact(const char *msg, gboolean all_accounts,
484  PurpleAccount **ret_account,
485  char **ret_protocol, char **ret_username,
486  char **ret_alias);
487 
495 void pidgin_set_accessible_label(GtkWidget *w, GtkWidget *l);
496 
505 void pidgin_set_accessible_relations(GtkWidget *w, GtkWidget *l);
506 
521 void pidgin_menu_position_func_helper(GtkMenu *menu, gint *x, gint *y,
522  gboolean *push_in, gpointer data);
523 
540  gint *x,
541  gint *y,
542  gboolean *push_in,
543  gpointer user_data);
544 
552 void pidgin_dnd_file_manage(GtkSelectionData *sd, PurpleAccount *account, const char *who);
553 
557 void pidgin_buddy_icon_get_scale_size(GdkPixbuf *buf, PurpleBuddyIconSpec *spec, PurpleIconScaleRules rules, int *width, int *height);
558 
573 GdkPixbuf *pidgin_create_prpl_icon(PurpleAccount *account, PidginPrplIconSize size);
574 
583 GdkPixbuf * pidgin_create_status_icon(PurpleStatusPrimitive primitive, GtkWidget *w, const char *size);
584 
595 
605 const char *pidgin_stock_id_from_presence(PurplePresence *presence);
606 
616 GtkWidget *pidgin_append_menu_action(GtkWidget *menu, PurpleMenuAction *act,
617  gpointer gobject);
618 
630 void pidgin_set_cursor(GtkWidget *widget, GdkCursorType cursor_type);
631 
641 void pidgin_clear_cursor(GtkWidget *widget);
642 
651 GtkWidget *pidgin_buddy_icon_chooser_new(GtkWindow *parent, void(*callback)(const char*,gpointer), gpointer data);
652 
662 gpointer pidgin_convert_buddy_icon(PurplePlugin *plugin, const char *path, size_t *len);
663 
664 #if !(defined PIDGIN_DISABLE_DEPRECATED) || (defined _PIDGIN_GTKUTILS_C_)
665 
674 void pidgin_set_custom_buddy_icon(PurpleAccount *account, const char *who, const char *filename);
675 #endif
676 
684 char *pidgin_make_pretty_arrows(const char *str);
685 
689 typedef void (*PidginUtilMiniDialogCallback)(gpointer user_data, GtkButton *);
690 
716 GtkWidget *pidgin_make_mini_dialog(PurpleConnection *handle,
717  const char* stock_id, const char *primary, const char *secondary,
718  void *user_data, ...) G_GNUC_NULL_TERMINATED;
719 
725  GdkPixbuf *custom_icon,
726  const char *primary,
727  const char *secondary,
728  void *user_data,
729  ...) G_GNUC_NULL_TERMINATED;
730 
739 gboolean pidgin_tree_view_search_equal_func(GtkTreeModel *model, gint column,
740  const gchar *key, GtkTreeIter *iter, gpointer data);
741 
749 void pidgin_set_urgent(GtkWindow *window, gboolean urgent);
750 
758 gboolean pidgin_gdk_pixbuf_is_opaque(GdkPixbuf *pixbuf);
759 
765 void pidgin_gdk_pixbuf_make_round(GdkPixbuf *pixbuf);
766 
774 const char *pidgin_get_dim_grey_string(GtkWidget *widget);
775 
787 GtkWidget *pidgin_text_combo_box_entry_new(const char *default_item, GList *items);
788 
798 const char *pidgin_text_combo_box_entry_get_text(GtkWidget *widget);
799 
808 void pidgin_text_combo_box_entry_set_text(GtkWidget *widget, const char *text);
809 
819 gboolean pidgin_auto_parent_window(GtkWidget *window);
820 
834 GtkWidget *pidgin_add_widget_to_vbox(GtkBox *vbox, const char *widget_label, GtkSizeGroup *sg, GtkWidget *widget, gboolean expand, GtkWidget **p_label);
835 
847 GdkPixbuf *pidgin_pixbuf_from_data(const guchar *buf, gsize count);
848 
860 GdkPixbufAnimation *pidgin_pixbuf_anim_from_data(const guchar *buf, gsize count);
861 
872 
896 GdkPixbuf *pidgin_pixbuf_new_from_file(const char *filename);
897 
923 GdkPixbuf *pidgin_pixbuf_new_from_file_at_size(const char *filename, int width, int height);
924 
951 GdkPixbuf *pidgin_pixbuf_new_from_file_at_scale(const char *filename, int width, int height, gboolean preserve_aspect_ratio);
952 
964 GtkWidget *pidgin_make_scrollable(GtkWidget *child, GtkPolicyType hscrollbar_policy, GtkPolicyType vscrollbar_policy, GtkShadowType shadow_type, int width, int height);
965 
971 void pidgin_utils_init(void);
972 
978 void pidgin_utils_uninit(void);
979 
980 #endif /* _PIDGINUTILS_H_ */
981