static void message_send_cb(GtkWidget *widget, gpointer p) { GtkTextIter start, end; PurplePluginProtocolInfo *prpl_info = NULL; PurpleConnection *gc; GtkTextBuffer *buffer; char *text; gc = console->gc; if (gc) prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl); buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(console->entry)); gtk_text_buffer_get_start_iter(buffer, &start); gtk_text_buffer_get_end_iter(buffer, &end); text = gtk_imhtml_get_text(GTK_IMHTML(console->entry), &start, &end); if (prpl_info && prpl_info->send_raw != NULL) prpl_info->send_raw(gc, text, strlen(text)); g_free(text); gtk_imhtml_clear(GTK_IMHTML(console->entry)); }
static void log_select_cb(GtkTreeSelection *sel, PidginLogViewer *viewer) { GtkTreeIter iter; GValue val; GtkTreeModel *model = GTK_TREE_MODEL(viewer->treestore); PurpleLog *log = NULL; PurpleLogReadFlags flags; char *read = NULL; if (!gtk_tree_selection_get_selected(sel, &model, &iter)) return; val.g_type = 0; gtk_tree_model_get_value (model, &iter, 1, &val); log = g_value_get_pointer(&val); g_value_unset(&val); if (log == NULL) return; pidgin_set_cursor(viewer->window, GDK_WATCH); if (log->type != PURPLE_LOG_SYSTEM) { char *title; if (log->type == PURPLE_LOG_CHAT) title = g_strdup_printf(_("<span size='larger' weight='bold'>Conversation in %s on %s</span>"), log->name, log_get_date(log)); else title = g_strdup_printf(_("<span size='larger' weight='bold'>Conversation with %s on %s</span>"), log->name, log_get_date(log)); gtk_label_set_markup(GTK_LABEL(viewer->label), title); g_free(title); } read = purple_log_read(log, &flags); viewer->flags = flags; gtk_imhtml_clear(GTK_IMHTML(viewer->imhtml)); gtk_imhtml_set_protocol_name(GTK_IMHTML(viewer->imhtml), purple_account_get_protocol_name(log->account)); purple_signal_emit(pidgin_log_get_handle(), "log-displaying", viewer, log); gtk_imhtml_append_text(GTK_IMHTML(viewer->imhtml), read, GTK_IMHTML_NO_COMMENTS | GTK_IMHTML_NO_TITLE | GTK_IMHTML_NO_SCROLL | ((flags & PURPLE_LOG_READ_NO_NEWLINE) ? GTK_IMHTML_NO_NEWLINE : 0)); g_free(read); if (viewer->search != NULL) { gtk_imhtml_search_clear(GTK_IMHTML(viewer->imhtml)); g_idle_add(search_find_cb, viewer); } pidgin_clear_cursor(viewer->window); }
void ap_widget_prefs_updated (struct widget *w) { gchar *output; if (dialog_box_preview == NULL) return; if (w != dialog_box_widget) return; // TODO: Investigate how laggy this is, possibly add a timeout output = w->component->generate (w); g_static_mutex_lock (&preview_mutex); gtk_imhtml_clear (GTK_IMHTML(dialog_box_preview)); gtk_imhtml_append_text (GTK_IMHTML(dialog_box_preview), output, GTK_IMHTML_NO_SCROLL); g_static_mutex_unlock (&preview_mutex); free (output); }
static void search_cb(GtkWidget *button, PidginLogViewer *lv) { const char *search_term = gtk_entry_get_text(GTK_ENTRY(lv->entry)); GList *logs; if (!(*search_term)) { /* reset the tree */ gtk_tree_store_clear(lv->treestore); populate_log_tree(lv); g_free(lv->search); lv->search = NULL; gtk_imhtml_search_clear(GTK_IMHTML(lv->imhtml)); select_first_log(lv); return; } if (lv->search != NULL && !strcmp(lv->search, search_term)) { /* Searching for the same term acts as "Find Next" */ gtk_imhtml_search_find(GTK_IMHTML(lv->imhtml), lv->search); return; } pidgin_set_cursor(lv->window, GDK_WATCH); g_free(lv->search); lv->search = g_strdup(search_term); gtk_tree_store_clear(lv->treestore); gtk_imhtml_clear(GTK_IMHTML(lv->imhtml)); for (logs = lv->logs; logs != NULL; logs = logs->next) { char *read = purple_log_read((PurpleLog*)logs->data, NULL); if (read && *read && purple_strcasestr(read, search_term)) { GtkTreeIter iter; PurpleLog *log = logs->data; gtk_tree_store_append (lv->treestore, &iter, NULL); gtk_tree_store_set(lv->treestore, &iter, 0, log_get_date(log), 1, log, -1); } g_free(read); } select_first_log(lv); pidgin_clear_cursor(lv->window); }
static void dropdown_changed_cb(GtkComboBox *widget, gpointer nul) { PurpleAccount *account; if (!console) return; account = purple_accounts_find(gtk_combo_box_get_active_text(GTK_COMBO_BOX(console->dropdown)), "prpl-jabber"); if (!account || !account->gc) return; console->gc = account->gc; gtk_imhtml_clear(GTK_IMHTML(console->imhtml)); }
/*--------------------------------------------------------------------------* * Displayed message stuff * *--------------------------------------------------------------------------*/ static void display_diff_msg (GtkTreeSelection *select, gpointer data) { GtkTreeModel *model; GtkTreeIter iter; const gchar *string; GtkWidget *imhtml = (GtkWidget *) data; if (gtk_tree_selection_get_selected (select, &model, &iter)) { gtk_tree_model_get (model, &iter, 3, &string, -1); gtk_imhtml_clear (GTK_IMHTML(imhtml)); if (string != NULL) { gtk_imhtml_append_text (GTK_IMHTML(imhtml), string, GTK_IMHTML_NO_SCROLL); gtk_imhtml_append_text (GTK_IMHTML(imhtml), "<BR>", GTK_IMHTML_NO_SCROLL); } } }
static void * pidgin_notify_userinfo(PurpleConnection *gc, const char *who, PurpleNotifyUserInfo *user_info) { char *info; void *ui_handle; char *key = userinfo_hash(purple_connection_get_account(gc), who); PidginUserInfo *pinfo = NULL; if (!userinfo) { userinfo = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); } info = purple_notify_user_info_get_text_with_newline(user_info, "<br />"); pinfo = g_hash_table_lookup(userinfo, key); if (pinfo != NULL) { GtkIMHtml *imhtml = g_object_get_data(G_OBJECT(pinfo->window), "info-widget"); char *linked_text = purple_markup_linkify(info); gtk_imhtml_clear(imhtml); gtk_imhtml_append_text(imhtml, linked_text, notify_imhtml_options()); g_free(linked_text); g_free(key); ui_handle = pinfo->window; pinfo->count++; } else { char *primary = g_strdup_printf(_("Info for %s"), who); ui_handle = pidgin_notify_formatted(_("Buddy Information"), primary, NULL, info); g_signal_handlers_disconnect_by_func(G_OBJECT(ui_handle), G_CALLBACK(formatted_close_cb), NULL); g_signal_connect(G_OBJECT(ui_handle), "destroy", G_CALLBACK(remove_userinfo), key); g_free(primary); pinfo = g_new0(PidginUserInfo, 1); pinfo->window = ui_handle; pinfo->count = 1; g_hash_table_insert(userinfo, key, pinfo); } g_free(info); return ui_handle; }
/* handle empty collection */ void empty_collection(WindowStruct *curr) { gtk_imhtml_clear(GTK_IMHTML(curr->imhtml)); gtk_imhtml_append_text(GTK_IMHTML(curr->imhtml), "<b><font color='#cc0000'>Empty collection!</font></b><br>", 0); }
static void clear_cb(GtkWidget *w, DebugWindow *win) { gtk_imhtml_clear(GTK_IMHTML(win->text)); }