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; }
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; }