static void update_roomlist(PurpleRoomlist *list) { if (froomlist.roomlist == list) return; if (froomlist.roomlist) purple_roomlist_unref(froomlist.roomlist); if ((froomlist.roomlist = list) != NULL) purple_roomlist_ref(list); }
static void list_button_cb(GtkButton *button, PidginRoomlistDialog *dialog) { PurpleConnection *gc; PidginRoomlist *rl; gc = purple_account_get_connection(dialog->account); if (!gc) return; if (dialog->roomlist != NULL) { rl = dialog->roomlist->ui_data; gtk_widget_destroy(rl->tree); purple_roomlist_unref(dialog->roomlist); } dialog->roomlist = purple_roomlist_get_list(gc); if (!dialog->roomlist) return; purple_roomlist_ref(dialog->roomlist); rl = dialog->roomlist->ui_data; rl->dialog = dialog; if (dialog->account_widget) gtk_widget_set_sensitive(dialog->account_widget, FALSE); gtk_container_add(GTK_CONTAINER(dialog->sw), rl->tree); /* some protocols (not bundled with libpurple) finish getting their * room list immediately */ if(purple_roomlist_get_in_progress(dialog->roomlist)) { gtk_widget_set_sensitive(dialog->stop_button, TRUE); gtk_widget_set_sensitive(dialog->list_button, FALSE); } else { gtk_widget_set_sensitive(dialog->stop_button, FALSE); gtk_widget_set_sensitive(dialog->list_button, TRUE); } gtk_widget_set_sensitive(dialog->add_button, FALSE); gtk_widget_set_sensitive(dialog->join_button, FALSE); }
void heliotrope_room_refresh_in_progress(PurpleRoomlist *list, gboolean in_progress) { PyGILState_STATE state = PyGILState_Ensure(); PyObject *py_list; PyObject *result; if (!in_progress && list) { // Room list reference is passed on to the UI. purple_roomlist_ref(list); } py_list = PyCObject_FromVoidPtr(list, NULL); result = PyObject_CallObject(heliotrope_room_refresh_in_progress_cb, Py_BuildValue("(Oi)", py_list, in_progress)); if (result == NULL) PyErr_Print(); Py_XDECREF(py_list); Py_XDECREF(result); PyGILState_Release(state); }