| 1543 gtk_widget_show_all(ret); |
1544 gtk_widget_show_all(ret); |
| 1544 |
1545 |
| 1545 return ret; |
1546 return ret; |
| 1546 } |
1547 } |
| 1547 |
1548 |
| |
1549 static GtkWidget * |
| |
1550 protocol_page() { |
| |
1551 GtkWidget *ret; |
| |
1552 |
| |
1553 ret = gtk_label_new(NULL); |
| |
1554 gtk_widget_show(ret); |
| |
1555 |
| |
1556 return ret; |
| |
1557 } |
| |
1558 |
| |
1559 static gboolean |
| |
1560 protocol_pref_entry_cb(GtkWidget *entry, GdkEventFocus *event, gpointer data) { |
| |
1561 char *pref = data; |
| |
1562 |
| |
1563 gaim_prefs_set_string(pref, gtk_entry_get_text(GTK_ENTRY(entry))); |
| |
1564 |
| |
1565 return FALSE; |
| |
1566 } |
| |
1567 |
| |
1568 static GtkWidget * |
| |
1569 protocol_pref_page(GaimPluginProtocolInfo *prpl_info) { |
| |
1570 GtkWidget *ret, *parent, *frame, *hbox, *label, *misc; |
| |
1571 GtkSizeGroup *sg; |
| |
1572 GList *pp = NULL; |
| |
1573 |
| |
1574 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); |
| |
1575 |
| |
1576 ret = gtk_vbox_new(FALSE, 18); |
| |
1577 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); |
| |
1578 gtk_widget_show(ret); |
| |
1579 |
| |
1580 parent = ret; |
| |
1581 |
| |
1582 for(pp = prpl_info->protocol_prefs; pp != NULL; pp = pp->next) { |
| |
1583 struct proto_pref *pref = pp->data; |
| |
1584 |
| |
1585 if(pref->key != NULL) { |
| |
1586 switch(gaim_prefs_get_type(pref->key)) { |
| |
1587 case GAIM_PREF_BOOLEAN: |
| |
1588 misc = gaim_gtk_prefs_checkbox(pref->label, |
| |
1589 pref->key, |
| |
1590 parent); |
| |
1591 break; |
| |
1592 case GAIM_PREF_INT: |
| |
1593 misc = gaim_gtk_prefs_labeled_spin_button(parent, |
| |
1594 pref->label, |
| |
1595 pref->key, |
| |
1596 pref->min, |
| |
1597 pref->max, |
| |
1598 sg); |
| |
1599 break; |
| |
1600 case GAIM_PREF_STRING: |
| |
1601 hbox = gtk_hbox_new(FALSE, 6); |
| |
1602 gtk_widget_show(hbox); |
| |
1603 gtk_box_pack_start(GTK_BOX(parent), hbox, FALSE, FALSE, 0); |
| |
1604 |
| |
1605 label = gtk_label_new_with_mnemonic(pref->label); |
| |
1606 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); |
| |
1607 gtk_size_group_add_widget(sg, label); |
| |
1608 gtk_widget_show(label); |
| |
1609 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
| |
1610 |
| |
1611 misc = gtk_entry_new(); |
| |
1612 gtk_entry_set_text(GTK_ENTRY(misc), |
| |
1613 gaim_prefs_get_string(pref->key)); |
| |
1614 g_signal_connect(G_OBJECT(misc), "focus-out-event", |
| |
1615 G_CALLBACK(protocol_pref_entry_cb), |
| |
1616 (gpointer)pref->key); |
| |
1617 gtk_label_set_mnemonic_widget(GTK_LABEL(label), misc); |
| |
1618 gtk_widget_show(misc); |
| |
1619 gtk_box_pack_start(GTK_BOX(hbox), misc, FALSE, FALSE, 0); |
| |
1620 |
| |
1621 break; |
| |
1622 case GAIM_PREF_NONE: /* XXX No use for this, if you want a |
| |
1623 frame, set key to NULL */ |
| |
1624 case GAIM_PREF_STRING_LIST: /*XXX No one should need this */ |
| |
1625 default: |
| |
1626 break; |
| |
1627 } |
| |
1628 } else { |
| |
1629 frame = gaim_gtk_make_frame(ret, pref->label); |
| |
1630 gtk_widget_show(frame); |
| |
1631 |
| |
1632 parent = frame; |
| |
1633 } |
| |
1634 } |
| |
1635 |
| |
1636 return ret; |
| |
1637 } |
| |
1638 |
| 1548 static GtkWidget *plugin_description=NULL, *plugin_details=NULL; |
1639 static GtkWidget *plugin_description=NULL, *plugin_details=NULL; |
| 1549 |
1640 |
| 1550 static void prefs_plugin_sel (GtkTreeSelection *sel, GtkTreeModel *model) |
1641 static void prefs_plugin_sel (GtkTreeSelection *sel, GtkTreeModel *model) |
| 1551 { |
1642 { |
| 1552 gchar *buf, *pname, *perr, *pdesc, *pauth, *pweb; |
1643 gchar *buf, *pname, *perr, *pdesc, *pauth, *pweb; |
| 2289 prefs_notebook_add_page(_("Sounds"), NULL, sound_page(), &p, NULL, notebook_page++); |
2380 prefs_notebook_add_page(_("Sounds"), NULL, sound_page(), &p, NULL, notebook_page++); |
| 2290 prefs_notebook_add_page(_("Sound Events"), NULL, sound_events_page(), &c, &p, notebook_page++); |
2381 prefs_notebook_add_page(_("Sound Events"), NULL, sound_events_page(), &c, &p, notebook_page++); |
| 2291 prefs_notebook_add_page(_("Away / Idle"), NULL, away_page(), &p, NULL, notebook_page++); |
2382 prefs_notebook_add_page(_("Away / Idle"), NULL, away_page(), &p, NULL, notebook_page++); |
| 2292 prefs_notebook_add_page(_("Away Messages"), NULL, away_message_page(), &c, &p, notebook_page++); |
2383 prefs_notebook_add_page(_("Away Messages"), NULL, away_message_page(), &c, &p, notebook_page++); |
| 2293 |
2384 |
| |
2385 prefs_notebook_add_page(_("Protocols"), NULL, protocol_page(), &p, NULL, notebook_page++); |
| |
2386 for (l = gaim_plugins_get_protocols(); l != NULL; l = l->next) { |
| |
2387 plug = l->data; |
| |
2388 |
| |
2389 if (GAIM_IS_PROTOCOL_PLUGIN(plug)) { |
| |
2390 GaimPluginProtocolInfo *prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(plug); |
| |
2391 |
| |
2392 if (prpl_info->protocol_prefs != NULL) { |
| |
2393 prefs_notebook_add_page(_(plug->info->name), NULL, |
| |
2394 protocol_pref_page(prpl_info), &c, |
| |
2395 &p, notebook_page++); |
| |
2396 } |
| |
2397 } |
| |
2398 } |
| |
2399 |
| 2294 if (gaim_plugins_enabled()) { |
2400 if (gaim_plugins_enabled()) { |
| 2295 prefs_notebook_add_page(_("Plugins"), NULL, plugin_page(), &plugin_iter, NULL, notebook_page++); |
2401 prefs_notebook_add_page(_("Plugins"), NULL, plugin_page(), &plugin_iter, NULL, notebook_page++); |
| 2296 |
2402 |
| 2297 for (l = gaim_plugins_get_loaded(); l != NULL; l = l->next) { |
2403 for (l = gaim_plugins_get_loaded(); l != NULL; l = l->next) { |
| 2298 plug = l->data; |
2404 plug = l->data; |