Ejemplo n.º 1
0
static PurpleCmdRet
irssi_window_cmd(PurpleConversation *conv, const gchar *sub_cmd,
				 gchar **error)
{
	PidginConversation *gtkconv;
	PidginWindow *win;
	gint cur;

	gtkconv = PIDGIN_CONVERSATION(conv);
	win = gtkconv->win;
	cur = gtk_notebook_get_current_page(GTK_NOTEBOOK(win->notebook));

	/* if the sub_cmd is a number, or starts with one, assume the user wants
	 * to switch to a specific numbered tab */
	if(g_ascii_isdigit(*sub_cmd)) {
		gint tab = atoi(sub_cmd) - 1; /* index starts at zero */

		if(tab < 0) {
			*error = g_strdup(_("Invalid window specified."));

			return PURPLE_CMD_RET_FAILED;
		}

		if(tab < pidgin_conv_window_get_gtkconv_count(win))
			gtk_notebook_set_current_page(GTK_NOTEBOOK(win->notebook), tab);

		return PURPLE_CMD_RET_OK;
	}

	if(!g_ascii_strcasecmp(sub_cmd, "close")) {
		g_timeout_add(50, (GSourceFunc)irssi_window_close_cb, conv);

		return PURPLE_CMD_RET_OK;
	} else if(!g_ascii_strcasecmp(sub_cmd, "next") ||
			  !g_ascii_strcasecmp(sub_cmd, "right"))
	{
		if(!pidgin_conv_window_get_gtkconv_at_index(win, cur + 1)) {
			/* wrap around... */
			gtk_notebook_set_current_page(GTK_NOTEBOOK(win->notebook), 0);
		} else {
			/* move normally */
			gtk_notebook_set_current_page(GTK_NOTEBOOK(win->notebook),
										  cur + 1);
		}

		return PURPLE_CMD_RET_OK;
	} else if(!g_ascii_strcasecmp(sub_cmd, "previous") ||
			  !g_ascii_strcasecmp(sub_cmd, "prev") ||
			  !g_ascii_strcasecmp(sub_cmd, "left"))
	{
		if(!pidgin_conv_window_get_gtkconv_at_index(win, cur - 1)) {
			/* wrap around... */
			gtk_notebook_set_current_page(GTK_NOTEBOOK(win->notebook), -1);
		} else {
			gtk_notebook_set_current_page(GTK_NOTEBOOK(win->notebook),
										  cur - 1);
		}

		return PURPLE_CMD_RET_OK;
	} else {
		*error = g_strdup(_("Invalid argument!"));

		return PURPLE_CMD_RET_FAILED;
	}

	*error = g_strdup(_("Unknown Error!"));
	return PURPLE_CMD_RET_FAILED;
}
Ejemplo n.º 2
0
static const char* get_tab_title(int i, PidginWindow* win) {
	PidginConversation *cpc = pidgin_conv_window_get_gtkconv_at_index(win, i);
	const char* current_label = gtk_label_get_text(GTK_LABEL(cpc->tab_label));

	return current_label;
}