示例#1
0
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);
}
示例#2
0
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);
}
示例#3
0
文件: purple.c 项目: KimCM/Heliotrope
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);
}