parent
708c5a7347
commit
0a54efdd0c
@ -816,12 +816,6 @@ inbound_005 (server * serv, char *word[])
|
||||
fe_set_channel (serv->server_session);
|
||||
}
|
||||
|
||||
/* use /NICKSERV */
|
||||
if (g_ascii_strcasecmp (word[w] + 8, "UniBG") == 0)
|
||||
serv->nickservtype = 3;
|
||||
else if (g_ascii_strcasecmp (word[w] + 8, "QuakeNet") == 0)
|
||||
serv->nickservtype = 4;
|
||||
|
||||
} else if (strncmp (word[w], "CASEMAPPING=", 12) == 0)
|
||||
{
|
||||
if (strcmp (word[w] + 12, "ascii") == 0) /* bahamut */
|
||||
|
@ -1877,7 +1877,6 @@ server_set_defaults (server *serv)
|
||||
serv->nick_modes = strdup ("ohv");
|
||||
|
||||
serv->nickcount = 1;
|
||||
serv->nickservtype = 0;
|
||||
serv->end_of_motd = FALSE;
|
||||
serv->is_away = FALSE;
|
||||
serv->supports_watch = FALSE;
|
||||
|
@ -625,6 +625,15 @@ servlist_connect (session *sess, ircnet *net, gboolean join)
|
||||
}
|
||||
}
|
||||
|
||||
if (net->nstype >= 1) /* once again, make sure gtk_combo_box_get_active() is not bugging us, just in case */
|
||||
{
|
||||
serv->nickservtype = net->nstype - 1; /* ircnet->nstype starts at 1, server->nickservtype starts at 0! */
|
||||
}
|
||||
else
|
||||
{
|
||||
serv->nickservtype = 1; /* use /NickServ by default */
|
||||
}
|
||||
|
||||
serv->password[0] = 0;
|
||||
serv->sasluser[0] = 0;
|
||||
serv->saslpassword[0] = 0;
|
||||
@ -1128,6 +1137,9 @@ servlist_load (void)
|
||||
case 'B':
|
||||
net->nickserv = strdup (buf + 2);
|
||||
break;
|
||||
case 'T':
|
||||
net->nstype = atoi (buf + 2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (buf[0] == 'N')
|
||||
@ -1241,6 +1253,20 @@ servlist_save (void)
|
||||
fprintf (fp, "J=%s\n", net->autojoin);
|
||||
if (net->nickserv)
|
||||
fprintf (fp, "B=%s\n", net->nickserv);
|
||||
if (net->nstype)
|
||||
{
|
||||
if (net->nstype == -1) /* gtk_combo_box_get_active() returns -1 for invalid indices */
|
||||
{
|
||||
net->nstype = 0; /* avoid further crashes for the current session */
|
||||
buf = g_strdup_printf (_("Warning: invalid NickServ type. Falling back to default type for network %s."), net->name);
|
||||
fe_message (buf, FE_MSG_WARN);
|
||||
g_free (buf);
|
||||
}
|
||||
else /* the selection was fine, save it */
|
||||
{
|
||||
fprintf (fp, "T=%d\n", net->nstype);
|
||||
}
|
||||
}
|
||||
if (net->encoding && g_ascii_strcasecmp (net->encoding, "System") &&
|
||||
g_ascii_strcasecmp (net->encoding, "System default"))
|
||||
{
|
||||
|
@ -37,6 +37,7 @@ typedef struct ircnet
|
||||
char *autojoin;
|
||||
char *command;
|
||||
char *nickserv;
|
||||
int nstype;
|
||||
char *comment;
|
||||
char *encoding;
|
||||
GSList *servlist;
|
||||
|
@ -103,6 +103,24 @@ static const char *pages[]=
|
||||
NULL
|
||||
};
|
||||
|
||||
static const char *nstypes[]=
|
||||
{
|
||||
/* This list is the same as in irc_nickserv(), except starting at 1, because
|
||||
/* the 1st row is not used. We can't use index 0 coz then "if (nstype)" would
|
||||
* not be evaluated, it would give the same result as NULL (i.e. unset) nstype.
|
||||
* For unset nstype we have a "Default" entry in place of this placeholder, so
|
||||
* indices will be correct anyway.
|
||||
*/
|
||||
"PLACEHOLDER", /* nstype = 0 */
|
||||
"/msg NickServ", /* nstype = 1, nickservtype = 0 */
|
||||
"/NickServ", /* nstype = 2, nickservtype = 1 */
|
||||
"/NS", /* ... */
|
||||
"/msg NS",
|
||||
"/auth",
|
||||
NULL
|
||||
/* This also means that we need to shift these values for irc_nickserv()! */
|
||||
};
|
||||
|
||||
static void
|
||||
servlist_select_and_show (GtkTreeView *treeview, GtkTreeIter *iter,
|
||||
GtkListStore *store)
|
||||
@ -1309,6 +1327,21 @@ servlist_combo_cb (GtkEntry *entry, gpointer userdata)
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
servlist_nscombo_cb (GtkEntry *entry, gpointer userdata)
|
||||
{
|
||||
if (!selected_net)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!ignore_changed)
|
||||
{
|
||||
selected_net->nstype = gtk_combo_box_get_active (GTK_COMBO_BOX (entry));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static GtkWidget *
|
||||
servlist_create_charsetcombo (void)
|
||||
{
|
||||
@ -1329,6 +1362,28 @@ servlist_create_charsetcombo (void)
|
||||
return cb;
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
servlist_create_nstypecombo (void)
|
||||
{
|
||||
GtkWidget *cb;
|
||||
int i;
|
||||
|
||||
cb = gtk_combo_box_entry_new_text ();
|
||||
gtk_combo_box_append_text (GTK_COMBO_BOX (cb), "Default");
|
||||
|
||||
i = 1; /* start with the 2nd row, leave the placeholder 0th element alone */
|
||||
|
||||
while (nstypes[i])
|
||||
{
|
||||
gtk_combo_box_append_text (GTK_COMBO_BOX (cb), (char *)nstypes[i]);
|
||||
i++;
|
||||
}
|
||||
|
||||
g_signal_connect (G_OBJECT (GTK_BIN (cb)), "changed", G_CALLBACK (servlist_nscombo_cb), NULL);
|
||||
|
||||
return cb;
|
||||
}
|
||||
|
||||
static void
|
||||
no_servlist (GtkWidget * igad, gpointer serv)
|
||||
{
|
||||
@ -1374,7 +1429,9 @@ servlist_open_edit (GtkWidget *parent, ircnet *net)
|
||||
GtkWidget *label16;
|
||||
GtkWidget *label21;
|
||||
GtkWidget *label34;
|
||||
GtkWidget *label_nstype;
|
||||
GtkWidget *comboboxentry_charset;
|
||||
GtkWidget *comboboxentry_nstypes;
|
||||
GtkWidget *hbox1;
|
||||
GtkWidget *scrolledwindow2;
|
||||
GtkWidget *treeview_servers;
|
||||
@ -1482,26 +1539,42 @@ servlist_open_edit (GtkWidget *parent, ircnet *net)
|
||||
_("Extra command to execute after connecting. If you need more than one, set this to LOAD -e <filename>, where <filename> is a text-file full of commands to execute."));
|
||||
|
||||
edit_entry_nickserv =
|
||||
servlist_create_entry (table3, _("Nickserv password:"), 17,
|
||||
servlist_create_entry (table3, _("NickServ password:"), 17,
|
||||
net->nickserv, 0,
|
||||
_("If your nickname requires a password, enter it here. Not all IRC networks support this."));
|
||||
gtk_entry_set_visibility (GTK_ENTRY (edit_entry_nickserv), FALSE);
|
||||
|
||||
label_nstype = gtk_label_new (_("NickServ type:"));
|
||||
gtk_widget_show (label_nstype);
|
||||
gtk_table_attach (GTK_TABLE (table3), label_nstype, 1, 2, 18, 19,
|
||||
(GtkAttachOptions) (GTK_FILL),
|
||||
(GtkAttachOptions) (0), 0, 0);
|
||||
gtk_misc_set_alignment (GTK_MISC (label_nstype), 0, 0.5);
|
||||
|
||||
comboboxentry_nstypes = servlist_create_nstypecombo ();
|
||||
ignore_changed = TRUE;
|
||||
gtk_entry_set_text (GTK_ENTRY (GTK_BIN (comboboxentry_nstypes)->child), net->nstype ? nstypes[net->nstype] : "Default");
|
||||
ignore_changed = FALSE;
|
||||
gtk_widget_show (comboboxentry_nstypes);
|
||||
gtk_table_attach (GTK_TABLE (table3), comboboxentry_nstypes, 2, 3, 18, 19,
|
||||
(GtkAttachOptions) (GTK_FILL),
|
||||
(GtkAttachOptions) (GTK_FILL), 0, 0);
|
||||
|
||||
edit_entry_pass =
|
||||
servlist_create_entry (table3, _("Server password:"), 18,
|
||||
servlist_create_entry (table3, _("Server password:"), 20,
|
||||
net->pass, 0,
|
||||
_("Password for the server, if in doubt, leave blank."));
|
||||
gtk_entry_set_visibility (GTK_ENTRY (edit_entry_pass), FALSE);
|
||||
|
||||
edit_entry_saslpass =
|
||||
servlist_create_entry (table3, _("SASL password:"), 19,
|
||||
servlist_create_entry (table3, _("SASL password:"), 21,
|
||||
net->saslpass, 0,
|
||||
_("Password for SASL authentication, if in doubt, leave blank."));
|
||||
gtk_entry_set_visibility (GTK_ENTRY (edit_entry_saslpass), FALSE);
|
||||
|
||||
label34 = gtk_label_new (_("Character set:"));
|
||||
gtk_widget_show (label34);
|
||||
gtk_table_attach (GTK_TABLE (table3), label34, 1, 2, 20, 21,
|
||||
gtk_table_attach (GTK_TABLE (table3), label34, 1, 2, 22, 23,
|
||||
(GtkAttachOptions) (GTK_FILL),
|
||||
(GtkAttachOptions) (0), 0, 0);
|
||||
gtk_misc_set_alignment (GTK_MISC (label34), 0, 0.5);
|
||||
@ -1511,7 +1584,7 @@ servlist_open_edit (GtkWidget *parent, ircnet *net)
|
||||
gtk_entry_set_text (GTK_ENTRY (GTK_BIN (comboboxentry_charset)->child), net->encoding ? net->encoding : "System default");
|
||||
ignore_changed = FALSE;
|
||||
gtk_widget_show (comboboxentry_charset);
|
||||
gtk_table_attach (GTK_TABLE (table3), comboboxentry_charset, 2, 3, 20, 21,
|
||||
gtk_table_attach (GTK_TABLE (table3), comboboxentry_charset, 2, 3, 22, 23,
|
||||
(GtkAttachOptions) (GTK_FILL),
|
||||
(GtkAttachOptions) (GTK_FILL), 0, 0);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user