Mercurial > pidgin
comparison src/prefs.c @ 4359:5fb47ec9bfe4
[gaim-migrate @ 4625]
Wow, okay, where to begin with this one ;)
I rewrote the whole conversation backend. It is now core/UI split. Here's
how it works..
Every conversation is represented by a gaim_conversation structure. This
branches out into gaim_im and gaim_chat structures. Every conversation
lives in (well, normally, but it doesn't have to) a gaim_window structure.
This is a _CORE_ representation of a window. There can be multiple
gaim_window structures around.
The gaim_window and gaim_conversation structures have UI-specific operation
structures associated with them. At the moment, the only UI is GTK+, and
this will be for some time. Don't start thinking you can write a QT UI now.
It's just not going to happen.
Everything that is done on a conversation is done through the core API.
This API does core processing and then calls the UI operations for the
rendering and anything else.
Now, what does this give the user?
- Multiple windows.
- Multiple tabs per window.
- Draggable tabs.
- Send As menu is moved to the menubar.
- Menubar for chats.
- Some very cool stuff in the future, like replacing, say, IRC chat windows
with an X-Chat interface, or whatever.
- Later on, customizable window/conversation positioning.
For developers:
- Fully documented API
- Core/UI split
- Variable checking and mostly sane handling of incorrect variables.
- Logical structure to conversations, both core and UI.
- Some very cool stuff in the future, like replacing, say, IRC chat windows
with an X-Chat interface, or whatever.
- Later on, customizable window/conversation positioning.
- Oh yeah, and the beginning of a stock icon system.
Now, there are things that aren't there yet. You will see tabs even if you
have them turned off. This will be fixed in time. Also, the preferences
will change to work with the new structure. I'm starting school in 2 days,
so it may not be done immediately, but hopefully in the next week.
Enjoy!
committer: Tailor Script <tailor@pidgin.im>
author | Christian Hammond <chipx86@chipx86.com> |
---|---|
date | Mon, 20 Jan 2003 09:10:23 +0000 |
parents | 78bc4c8e4b2e |
children | 0ffdb9b6a5e9 |
comparison
equal
deleted
inserted
replaced
4358:2b8abf7f9cc1 | 4359:5fb47ec9bfe4 |
---|---|
432 gtk_size_group_add_widget(sg, button); | 432 gtk_size_group_add_widget(sg, button); |
433 select = gtk_button_new_from_stock(GTK_STOCK_SELECT_FONT); | 433 select = gtk_button_new_from_stock(GTK_STOCK_SELECT_FONT); |
434 | 434 |
435 if (!(font_options & OPT_FONT_FACE)) | 435 if (!(font_options & OPT_FONT_FACE)) |
436 gtk_widget_set_sensitive(GTK_WIDGET(select), FALSE); | 436 gtk_widget_set_sensitive(GTK_WIDGET(select), FALSE); |
437 g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(toggle_sensitive), select); | 437 g_signal_connect(GTK_OBJECT(button), "clicked", |
438 g_signal_connect(GTK_OBJECT(select), "clicked", G_CALLBACK(show_font_dialog), NULL); | 438 G_CALLBACK(gaim_gtk_toggle_sensitive), select); |
439 g_signal_connect(GTK_OBJECT(select), "clicked", | |
440 G_CALLBACK(show_font_dialog), NULL); | |
439 gtk_box_pack_start(GTK_BOX(hbox), select, FALSE, FALSE, 0); | 441 gtk_box_pack_start(GTK_BOX(hbox), select, FALSE, FALSE, 0); |
440 | 442 |
441 hbox = gtk_hbox_new(FALSE, 5); | 443 hbox = gtk_hbox_new(FALSE, 5); |
442 gtk_container_add(GTK_CONTAINER(vbox), hbox); | 444 gtk_container_add(GTK_CONTAINER(vbox), hbox); |
443 button = gaim_button(_("Use custom si_ze"), &font_options, OPT_FONT_SIZE, hbox); | 445 button = gaim_button(_("Use custom si_ze"), &font_options, OPT_FONT_SIZE, hbox); |
444 gtk_size_group_add_widget(sg, button); | 446 gtk_size_group_add_widget(sg, button); |
445 select = gaim_labeled_spin_button(hbox, NULL, &fontsize, 1, 7, NULL); | 447 select = gaim_labeled_spin_button(hbox, NULL, &fontsize, 1, 7, NULL); |
446 if (!(font_options & OPT_FONT_SIZE)) | 448 if (!(font_options & OPT_FONT_SIZE)) |
447 gtk_widget_set_sensitive(GTK_WIDGET(select), FALSE); | 449 gtk_widget_set_sensitive(GTK_WIDGET(select), FALSE); |
448 g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(toggle_sensitive), select); | 450 g_signal_connect(GTK_OBJECT(button), "clicked", |
451 G_CALLBACK(gaim_gtk_toggle_sensitive), select); | |
449 | 452 |
450 vbox = make_frame(ret, _("Color")); | 453 vbox = make_frame(ret, _("Color")); |
451 hbox = gtk_hbox_new(FALSE, 5); | 454 hbox = gtk_hbox_new(FALSE, 5); |
452 gtk_container_add(GTK_CONTAINER(vbox), hbox); | 455 gtk_container_add(GTK_CONTAINER(vbox), hbox); |
453 | 456 |
461 g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(update_color), | 464 g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(update_color), |
462 pref_fg_picture); | 465 pref_fg_picture); |
463 | 466 |
464 if (!(font_options & OPT_FONT_FGCOL)) | 467 if (!(font_options & OPT_FONT_FGCOL)) |
465 gtk_widget_set_sensitive(GTK_WIDGET(select), FALSE); | 468 gtk_widget_set_sensitive(GTK_WIDGET(select), FALSE); |
466 g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(toggle_sensitive), select); | 469 g_signal_connect(GTK_OBJECT(button), "clicked", |
470 G_CALLBACK(gaim_gtk_toggle_sensitive), select); | |
467 g_signal_connect(GTK_OBJECT(select), "clicked", G_CALLBACK(show_fgcolor_dialog), NULL); | 471 g_signal_connect(GTK_OBJECT(select), "clicked", G_CALLBACK(show_fgcolor_dialog), NULL); |
468 hbox = gtk_hbox_new(FALSE, 5); | 472 hbox = gtk_hbox_new(FALSE, 5); |
469 gtk_container_add(GTK_CONTAINER(vbox), hbox); | 473 gtk_container_add(GTK_CONTAINER(vbox), hbox); |
470 | 474 |
471 button = gaim_button(_("Bac_kground color"), &font_options, OPT_FONT_BGCOL, hbox); | 475 button = gaim_button(_("Bac_kground color"), &font_options, OPT_FONT_BGCOL, hbox); |
477 pref_bg_picture); | 481 pref_bg_picture); |
478 | 482 |
479 if (!(font_options & OPT_FONT_BGCOL)) | 483 if (!(font_options & OPT_FONT_BGCOL)) |
480 gtk_widget_set_sensitive(GTK_WIDGET(select), FALSE); | 484 gtk_widget_set_sensitive(GTK_WIDGET(select), FALSE); |
481 g_signal_connect(GTK_OBJECT(select), "clicked", G_CALLBACK(show_bgcolor_dialog), NULL); | 485 g_signal_connect(GTK_OBJECT(select), "clicked", G_CALLBACK(show_bgcolor_dialog), NULL); |
482 g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(toggle_sensitive), select); | 486 g_signal_connect(GTK_OBJECT(button), "clicked", |
487 G_CALLBACK(gaim_gtk_toggle_sensitive), select); | |
483 | 488 |
484 gtk_widget_show_all(ret); | 489 gtk_widget_show_all(ret); |
485 return ret; | 490 return ret; |
486 } | 491 } |
487 | 492 |
985 vbox = make_frame (ret, _("Auto-away")); | 990 vbox = make_frame (ret, _("Auto-away")); |
986 button = gaim_button(_("Set away _when idle"), &away_options, OPT_AWAY_AUTO, vbox); | 991 button = gaim_button(_("Set away _when idle"), &away_options, OPT_AWAY_AUTO, vbox); |
987 select = gaim_labeled_spin_button(vbox, _("_Minutes before setting away:"), &auto_away, 1, 24 * 60, sg); | 992 select = gaim_labeled_spin_button(vbox, _("_Minutes before setting away:"), &auto_away, 1, 24 * 60, sg); |
988 if (!(away_options & OPT_AWAY_AUTO)) | 993 if (!(away_options & OPT_AWAY_AUTO)) |
989 gtk_widget_set_sensitive(GTK_WIDGET(select), FALSE); | 994 gtk_widget_set_sensitive(GTK_WIDGET(select), FALSE); |
990 g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(toggle_sensitive), select); | 995 g_signal_connect(GTK_OBJECT(button), "clicked", |
996 G_CALLBACK(gaim_gtk_toggle_sensitive), select); | |
991 | 997 |
992 label = gtk_label_new_with_mnemonic(_("Away m_essage:")); | 998 label = gtk_label_new_with_mnemonic(_("Away m_essage:")); |
993 gtk_size_group_add_widget(sg, label); | 999 gtk_size_group_add_widget(sg, label); |
994 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | 1000 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); |
995 hbox = gtk_hbox_new(FALSE, 0); | 1001 hbox = gtk_hbox_new(FALSE, 0); |
997 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | 1003 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
998 prefs_away_menu = gtk_option_menu_new(); | 1004 prefs_away_menu = gtk_option_menu_new(); |
999 gtk_label_set_mnemonic_widget(GTK_LABEL(label), prefs_away_menu); | 1005 gtk_label_set_mnemonic_widget(GTK_LABEL(label), prefs_away_menu); |
1000 if (!(away_options & OPT_AWAY_AUTO)) | 1006 if (!(away_options & OPT_AWAY_AUTO)) |
1001 gtk_widget_set_sensitive(GTK_WIDGET(prefs_away_menu), FALSE); | 1007 gtk_widget_set_sensitive(GTK_WIDGET(prefs_away_menu), FALSE); |
1002 g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(toggle_sensitive), prefs_away_menu); | 1008 g_signal_connect(GTK_OBJECT(button), "clicked", |
1009 G_CALLBACK(gaim_gtk_toggle_sensitive), prefs_away_menu); | |
1003 default_away_menu_init(prefs_away_menu); | 1010 default_away_menu_init(prefs_away_menu); |
1004 gtk_widget_show(prefs_away_menu); | 1011 gtk_widget_show(prefs_away_menu); |
1005 gtk_box_pack_start(GTK_BOX(hbox), prefs_away_menu, FALSE, FALSE, 0); | 1012 gtk_box_pack_start(GTK_BOX(hbox), prefs_away_menu, FALSE, FALSE, 0); |
1006 | 1013 |
1007 gtk_widget_show_all(ret); | 1014 gtk_widget_show_all(ret); |
1858 if (option == OPT_MISC_DEBUG) | 1865 if (option == OPT_MISC_DEBUG) |
1859 show_debug(); | 1866 show_debug(); |
1860 else if(option == OPT_MISC_USE_SERVER_ALIAS) { | 1867 else if(option == OPT_MISC_USE_SERVER_ALIAS) { |
1861 redo_buddy_list(); | 1868 redo_buddy_list(); |
1862 build_edit_tree(); | 1869 build_edit_tree(); |
1863 set_convo_titles(); | 1870 gaim_conversation_foreach(gaim_conversation_autoset_title); |
1864 } | 1871 } |
1865 } | 1872 } |
1866 | 1873 |
1867 static void set_logging_option(GtkWidget *w, int option) | 1874 static void set_logging_option(GtkWidget *w, int option) |
1868 { | 1875 { |
1902 static void set_convo_option(GtkWidget *w, int option) | 1909 static void set_convo_option(GtkWidget *w, int option) |
1903 { | 1910 { |
1904 convo_options ^= option; | 1911 convo_options ^= option; |
1905 | 1912 |
1906 if (option == OPT_CONVO_SHOW_SMILEY) | 1913 if (option == OPT_CONVO_SHOW_SMILEY) |
1907 toggle_smileys(); | 1914 gaim_gtkconv_toggle_smileys(); |
1908 | 1915 |
1909 if (option == OPT_CONVO_SHOW_TIME) | 1916 if (option == OPT_CONVO_SHOW_TIME) |
1910 toggle_timestamps(); | 1917 gaim_gtkconv_toggle_timestamps(); |
1911 | 1918 |
1912 if (option == OPT_CONVO_CHECK_SPELLING) | 1919 if (option == OPT_CONVO_CHECK_SPELLING) |
1913 toggle_spellchk(); | 1920 gaim_gtkconv_toggle_spellchk(); |
1914 } | 1921 } |
1915 | 1922 |
1916 static void set_im_option(GtkWidget *w, int option) | 1923 static void set_im_option(GtkWidget *w, int option) |
1917 { | 1924 { |
1918 im_options ^= option; | 1925 im_options ^= option; |
1919 | 1926 |
1927 #if 0 | |
1920 if (option == OPT_IM_ONE_WINDOW) | 1928 if (option == OPT_IM_ONE_WINDOW) |
1921 im_tabize(); | 1929 im_tabize(); |
1930 #endif | |
1922 | 1931 |
1923 if (option == OPT_IM_HIDE_ICONS) | 1932 if (option == OPT_IM_HIDE_ICONS) |
1924 set_hide_icons(); | 1933 gaim_gtkconv_hide_buddy_icons(); |
1925 | 1934 |
1926 if (option == OPT_IM_ALIAS_TAB) { | 1935 if (option == OPT_IM_ALIAS_TAB) |
1927 set_convo_titles(); | 1936 gaim_conversation_foreach(gaim_conversation_autoset_title); |
1928 } | |
1929 | 1937 |
1930 if (option == OPT_IM_NO_ANIMATION) | 1938 if (option == OPT_IM_NO_ANIMATION) |
1931 set_anim(); | 1939 gaim_gtkconv_set_anim(); |
1932 } | 1940 } |
1933 | 1941 |
1934 static void set_chat_option(GtkWidget *w, int option) | 1942 static void set_chat_option(GtkWidget *w, int option) |
1935 { | 1943 { |
1936 chat_options ^= option; | 1944 chat_options ^= option; |
1937 | 1945 |
1946 #if 0 | |
1938 if (option == OPT_CHAT_ONE_WINDOW) | 1947 if (option == OPT_CHAT_ONE_WINDOW) |
1939 chat_tabize(); | 1948 chat_tabize(); |
1949 #endif | |
1940 } | 1950 } |
1941 | 1951 |
1942 void set_sound_option(GtkWidget *w, int option) | 1952 void set_sound_option(GtkWidget *w, int option) |
1943 { | 1953 { |
1944 sound_options ^= option; | 1954 sound_options ^= option; |
1946 | 1956 |
1947 static void set_font_option(GtkWidget *w, int option) | 1957 static void set_font_option(GtkWidget *w, int option) |
1948 { | 1958 { |
1949 font_options ^= option; | 1959 font_options ^= option; |
1950 | 1960 |
1951 update_font_buttons(); | 1961 gaim_gtkconv_update_font_buttons(); |
1952 } | 1962 } |
1953 | 1963 |
1954 static void set_away_option(GtkWidget *w, int option) | 1964 static void set_away_option(GtkWidget *w, int option) |
1955 { | 1965 { |
1956 away_options ^= option; | 1966 away_options ^= option; |
2176 gtk_widget_set_sensitive(sndcmd, TRUE); | 2186 gtk_widget_set_sensitive(sndcmd, TRUE); |
2177 else | 2187 else |
2178 gtk_widget_set_sensitive(sndcmd, FALSE); | 2188 gtk_widget_set_sensitive(sndcmd, FALSE); |
2179 } else if (option == (int*)&im_options) { | 2189 } else if (option == (int*)&im_options) { |
2180 if (clear == (OPT_IM_SIDE_TAB | OPT_IM_BR_TAB)) | 2190 if (clear == (OPT_IM_SIDE_TAB | OPT_IM_BR_TAB)) |
2181 update_im_tabs(); | 2191 gaim_gtkconv_update_tabs(); |
2192 /* CONV XXX update_im_tabs(); */ | |
2182 else if (clear == (OPT_IM_BUTTON_TEXT | OPT_IM_BUTTON_XPM)) | 2193 else if (clear == (OPT_IM_BUTTON_TEXT | OPT_IM_BUTTON_XPM)) |
2183 update_im_button_pix(); | 2194 gaim_gtkconv_update_im_button_style(); |
2184 } else if (option == (int*)&chat_options) { | 2195 } else if (option == (int*)&chat_options) { |
2185 if (clear == (OPT_CHAT_SIDE_TAB | OPT_CHAT_BR_TAB)) | 2196 if (clear == (OPT_CHAT_SIDE_TAB | OPT_CHAT_BR_TAB)) |
2186 update_chat_tabs(); | 2197 gaim_gtkconv_update_tabs(); |
2198 /* CONV XXX update_chat_tabs(); */ | |
2187 else if (clear == (OPT_CHAT_BUTTON_TEXT | OPT_CHAT_BUTTON_XPM)) | 2199 else if (clear == (OPT_CHAT_BUTTON_TEXT | OPT_CHAT_BUTTON_XPM)) |
2188 update_chat_button_pix(); | 2200 gaim_gtkconv_update_chat_button_style(); |
2189 } else if (option == (int*)&blist_options) { | 2201 } else if (option == (int*)&blist_options) { |
2190 set_blist_tab(); | 2202 set_blist_tab(); |
2191 } | 2203 } |
2192 } | 2204 } |
2193 | 2205 |