| 1872 |
1885 |
| 1873 /*------------------------------------------------------*/ |
1886 /*------------------------------------------------------*/ |
| 1874 /* Color Selection Dialog */ |
1887 /* Color Selection Dialog */ |
| 1875 /*------------------------------------------------------*/ |
1888 /*------------------------------------------------------*/ |
| 1876 |
1889 |
| 1877 void cancel_color(GtkWidget *widget, GtkWidget *color) |
1890 void cancel_color(GtkWidget *widget, struct conversation *c) |
| 1878 { |
1891 { |
| 1879 if (color) |
1892 if (c->palette && widget) |
| 1880 { |
1893 { |
| 1881 set_state_lock(1); |
1894 set_state_lock(1); |
| 1882 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(color), FALSE); |
1895 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(c->palette), FALSE); |
| 1883 set_state_lock(0); |
1896 set_state_lock(0); |
| 1884 } |
1897 } |
| 1885 destroy_dialog(NULL, colordialog); |
1898 dialogwindows = g_list_remove(dialogwindows, c->color_dialog); |
| 1886 } |
1899 gtk_widget_destroy(c->color_dialog); |
| 1887 |
1900 c->color_dialog = NULL; |
| 1888 |
1901 } |
| 1889 |
1902 |
| 1890 void do_color(GtkWidget *widget, GtkColorSelection *colorsel) |
1903 void do_color(GtkWidget *widget, GtkColorSelection *colorsel) |
| 1891 { |
1904 { |
| 1892 gdouble color[3]; |
1905 gdouble color[3]; |
| 1893 GdkColor text_color; |
1906 GdkColor text_color; |
| 1894 GtkWidget *entry; |
1907 struct conversation *c; |
| 1895 char *open_tag; |
1908 char *open_tag; |
| 1896 |
1909 |
| 1897 open_tag = g_malloc(30); |
1910 open_tag = g_malloc(30); |
| 1898 |
1911 |
| 1899 gtk_color_selection_get_color (colorsel, color); |
1912 gtk_color_selection_get_color (colorsel, color); |
| 1900 |
1913 |
| 1901 entry = gtk_object_get_user_data(GTK_OBJECT(colorsel)); |
1914 c = gtk_object_get_user_data(GTK_OBJECT(colorsel)); |
| 1902 |
1915 GTK_IS_EDITABLE(c->entry); |
| 1903 text_color.red = ((guint16)(color[0]*65535))>>8; |
1916 |
| 1904 text_color.green = ((guint16)(color[1]*65535))>>8; |
1917 text_color.red = ((guint16)(color[0]*65535))>>8; |
| 1905 text_color.blue = ((guint16)(color[2]*65535))>>8; |
1918 text_color.green = ((guint16)(color[1]*65535))>>8; |
| |
1919 text_color.blue = ((guint16)(color[2]*65535))>>8; |
| 1906 |
1920 |
| 1907 g_snprintf(open_tag, 23, "<FONT COLOR=\"#%02X%02X%02X\">", text_color.red, text_color.green, text_color.blue); |
1921 g_snprintf(open_tag, 23, "<FONT COLOR=\"#%02X%02X%02X\">", text_color.red, text_color.green, text_color.blue); |
| 1908 |
1922 surround(c->entry, open_tag, "</FONT>"); |
| 1909 surround(entry, open_tag, "</FONT>"); |
|
| 1910 sprintf(debug_buff,"#%02X%02X%02X\n", text_color.red, text_color.green, text_color.blue); |
1923 sprintf(debug_buff,"#%02X%02X%02X\n", text_color.red, text_color.green, text_color.blue); |
| 1911 debug_print(debug_buff); |
1924 debug_print(debug_buff); |
| 1912 g_free(open_tag); |
1925 g_free(open_tag); |
| 1913 cancel_color(NULL, NULL); |
1926 cancel_color(NULL, c); |
| 1914 } |
1927 } |
| 1915 |
1928 |
| 1916 |
1929 |
| 1917 void show_color_dialog(GtkWidget *entry, GtkWidget *color) |
1930 void show_color_dialog(struct conversation *c, GtkWidget *color) |
| 1918 { |
1931 { |
| 1919 GtkWidget *colorsel; |
1932 GtkWidget *colorsel; |
| 1920 |
1933 |
| 1921 if (!colordialog) { |
1934 if (!c->color_dialog) |
| 1922 |
1935 { |
| 1923 |
1936 c->color_dialog = gtk_color_selection_dialog_new("Select Text Color"); |
| 1924 colordialog = gtk_color_selection_dialog_new("Select Text Color"); |
1937 colorsel = GTK_COLOR_SELECTION_DIALOG(c->color_dialog)->colorsel; |
| 1925 colorsel = GTK_COLOR_SELECTION_DIALOG(colordialog)->colorsel; |
1938 |
| |
1939 gtk_object_set_user_data(GTK_OBJECT(colorsel), c); |
| 1926 |
1940 |
| 1927 /* XXX: Modality is evil, but we need it until we have |
1941 gtk_signal_connect(GTK_OBJECT(c->color_dialog), "delete_event", GTK_SIGNAL_FUNC(delete_event_dialog), c); |
| 1928 * per-conversation color dialogs */ |
1942 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(c->color_dialog)->ok_button), "clicked", GTK_SIGNAL_FUNC(do_color), colorsel); |
| 1929 |
1943 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(c->color_dialog)->cancel_button), "clicked", GTK_SIGNAL_FUNC(cancel_color), c); |
| 1930 gtk_window_set_modal(GTK_WINDOW(colordialog), TRUE); |
1944 |
| 1931 |
1945 gtk_widget_realize(c->color_dialog); |
| 1932 gtk_object_set_user_data(GTK_OBJECT(colorsel), entry); |
1946 aol_icon(c->color_dialog->window); |
| 1933 |
1947 } |
| 1934 gtk_signal_connect(GTK_OBJECT(colordialog), "delete_event", GTK_SIGNAL_FUNC(cancel_color), color); |
1948 |
| 1935 |
1949 gtk_widget_show(c->color_dialog); |
| 1936 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(colordialog)->ok_button), "clicked", GTK_SIGNAL_FUNC(do_color), colorsel); |
1950 gdk_window_raise(c->color_dialog->window); |
| 1937 |
|
| 1938 gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(colordialog)->cancel_button), "clicked", GTK_SIGNAL_FUNC(cancel_color), color); |
|
| 1939 gtk_widget_realize(colordialog); |
|
| 1940 aol_icon(colordialog->window); |
|
| 1941 |
|
| 1942 } |
|
| 1943 |
|
| 1944 gtk_widget_show(colordialog); |
|
| 1945 gdk_window_raise(colordialog->window); |
|
| 1946 } |
1951 } |
| 1947 |
1952 |
| 1948 /*------------------------------------------------------------------------*/ |
1953 /*------------------------------------------------------------------------*/ |
| 1949 /* Font Selection Dialog */ |
1954 /* Font Selection Dialog */ |
| 1950 /*------------------------------------------------------------------------*/ |
1955 /*------------------------------------------------------------------------*/ |
| 1951 |
1956 |
| 1952 void cancel_font(GtkWidget *widget, GtkWidget *window) |
1957 void cancel_font(GtkWidget *widget, struct conversation *c) |
| 1953 { |
1958 { |
| 1954 destroy_dialog(NULL, fontdialog); |
1959 if (c->font && widget) |
| |
1960 { |
| |
1961 set_state_lock(1); |
| |
1962 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(c->font), FALSE); |
| |
1963 set_state_lock(0); |
| |
1964 } |
| |
1965 dialogwindows = g_list_remove(dialogwindows, c->font_dialog); |
| |
1966 gtk_widget_destroy(c->font_dialog); |
| |
1967 c->font_dialog = NULL; |
| 1955 } |
1968 } |
| 1956 |
1969 |
| 1957 void apply_font(GtkWidget *widget, GtkFontSelection *fontsel) |
1970 void apply_font(GtkWidget *widget, GtkFontSelection *fontsel) |
| 1958 { |
1971 { |
| 1959 /* this could be expanded to include font size, weight, etc. |
1972 /* this could be expanded to include font size, weight, etc. |
| 2001 fontface[k] = '\0'; |
2014 fontface[k] = '\0'; |
| 2002 |
2015 |
| 2003 save_prefs(); |
2016 save_prefs(); |
| 2004 } |
2017 } |
| 2005 |
2018 |
| 2006 cancel_font(widget, NULL); |
2019 cancel_font(NULL, c); |
| 2007 } |
2020 } |
| 2008 |
2021 |
| 2009 void show_font_dialog(GtkWidget *widget, GtkWidget *font) |
2022 void show_font_dialog(struct conversation *c, GtkWidget *font) |
| 2010 { |
2023 { |
| 2011 GtkWidget *fontsel; |
2024 GtkWidget *fontsel; |
| 2012 |
2025 |
| 2013 fontdialog = gtk_font_selection_dialog_new("Select Font"); |
2026 if (!c->font_dialog) |
| 2014 fontsel = GTK_FONT_SELECTION_DIALOG(fontdialog)->fontsel; |
2027 { |
| 2015 |
2028 c->font_dialog = gtk_font_selection_dialog_new("Select Font"); |
| 2016 if (font) |
2029 fontsel = GTK_FONT_SELECTION_DIALOG(c->font_dialog)->fontsel; |
| 2017 gtk_object_set_user_data(GTK_OBJECT(fontsel), gtk_object_get_user_data(GTK_OBJECT(font))); |
2030 |
| 2018 else |
2031 if (font) |
| 2019 gtk_object_set_user_data(GTK_OBJECT(fontsel), NULL); |
2032 gtk_object_set_user_data(GTK_OBJECT(fontsel), c); |
| |
2033 else |
| |
2034 gtk_object_set_user_data(GTK_OBJECT(fontsel), NULL); |
| 2020 |
2035 |
| 2021 gtk_font_selection_dialog_set_font_name((GtkFontSelectionDialog *)fontdialog, DEFAULT_FONT_NAME); |
2036 gtk_font_selection_dialog_set_font_name((GtkFontSelectionDialog *)c->font_dialog, DEFAULT_FONT_NAME); |
| 2022 gtk_window_set_modal(GTK_WINDOW(fontdialog), TRUE); |
|
| 2023 gtk_signal_connect(GTK_OBJECT(fontdialog), "delete_event", GTK_SIGNAL_FUNC(cancel_font), font); |
|
| 2024 gtk_signal_connect(GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(fontdialog)->ok_button), "clicked", GTK_SIGNAL_FUNC(apply_font), fontsel); |
|
| 2025 gtk_signal_connect(GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(fontdialog)->cancel_button), "clicked", GTK_SIGNAL_FUNC(cancel_font), font); |
|
| 2026 |
|
| 2027 if (fontname) |
|
| 2028 gtk_font_selection_dialog_set_font_name((GtkFontSelectionDialog *)fontdialog, fontname); |
|
| 2029 else |
|
| 2030 gtk_font_selection_dialog_set_font_name((GtkFontSelectionDialog *)fontdialog, DEFAULT_FONT_NAME); |
|
| 2031 |
2037 |
| 2032 gtk_widget_realize(fontdialog); |
2038 gtk_signal_connect(GTK_OBJECT(c->font_dialog), "delete_event", GTK_SIGNAL_FUNC(delete_event_dialog), c); |
| 2033 |
2039 gtk_signal_connect(GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(c->font_dialog)->ok_button), "clicked", GTK_SIGNAL_FUNC(apply_font), fontsel); |
| 2034 aol_icon(fontdialog->window); |
2040 gtk_signal_connect(GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(c->font_dialog)->cancel_button), "clicked", GTK_SIGNAL_FUNC(cancel_font), c); |
| |
2041 |
| |
2042 if (fontname) |
| |
2043 gtk_font_selection_dialog_set_font_name((GtkFontSelectionDialog *)c->font_dialog, fontname); |
| |
2044 else |
| |
2045 gtk_font_selection_dialog_set_font_name((GtkFontSelectionDialog *)c->font_dialog, DEFAULT_FONT_NAME); |
| 2035 |
2046 |
| 2036 gtk_widget_show(fontdialog); |
2047 gtk_widget_realize(c->font_dialog); |
| 2037 gdk_window_raise(fontdialog->window); |
2048 |
| |
2049 aol_icon(c->font_dialog->window); |
| |
2050 } |
| |
2051 gtk_widget_show(c->font_dialog); |
| |
2052 gdk_window_raise(c->font_dialog->window); |
| 2038 } |
2053 } |
| 2039 |
2054 |
| 2040 /*------------------------------------------------------------------------*/ |
2055 /*------------------------------------------------------------------------*/ |
| 2041 /* The dialog for import/export */ |
2056 /* The dialog for import/export */ |
| 2042 /*------------------------------------------------------------------------*/ |
2057 /*------------------------------------------------------------------------*/ |