| 109 static void |
109 static void |
| 110 gaim_gtk_status_selector_init(GaimGtkStatusSelector *selector) |
110 gaim_gtk_status_selector_init(GaimGtkStatusSelector *selector) |
| 111 { |
111 { |
| 112 GtkWidget *combo; |
112 GtkWidget *combo; |
| 113 GtkWidget *entry; |
113 GtkWidget *entry; |
| 114 GtkWidget *sw; |
114 GtkWidget *toolbar; |
| |
115 GtkWidget *frame; |
| 115 #if GTK_CHECK_VERSION(2,4,0) |
116 #if GTK_CHECK_VERSION(2,4,0) |
| 116 GtkCellRenderer *renderer; |
117 GtkCellRenderer *renderer; |
| 117 #endif |
118 #endif |
| 118 |
119 |
| 119 selector->priv = g_new0(GaimGtkStatusSelectorPrivate, 1); |
120 selector->priv = g_new0(GaimGtkStatusSelectorPrivate, 1); |
| 148 #endif /* GTK < 2.4.0 */ |
149 #endif /* GTK < 2.4.0 */ |
| 149 |
150 |
| 150 gtk_widget_show(combo); |
151 gtk_widget_show(combo); |
| 151 gtk_box_pack_start(GTK_BOX(selector), combo, FALSE, FALSE, 0); |
152 gtk_box_pack_start(GTK_BOX(selector), combo, FALSE, FALSE, 0); |
| 152 |
153 |
| 153 selector->priv->sw = sw = gtk_scrolled_window_new(NULL, NULL); |
154 frame = gaim_gtk_create_imhtml(TRUE, &entry, &toolbar); |
| 154 gtk_box_pack_start(GTK_BOX(selector), sw, TRUE, TRUE, 0); |
155 selector->priv->entry = entry; |
| 155 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), |
156 selector->priv->frame = frame; |
| 156 GTK_SHADOW_IN); |
157 gtk_widget_set_name(entry, "gaim_gtkstatusselector_imhtml"); |
| 157 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), |
158 gtk_box_pack_start(GTK_BOX(selector), frame, TRUE, TRUE, 0); |
| 158 GTK_POLICY_NEVER, |
159 gtk_widget_hide(toolbar); |
| 159 GTK_POLICY_AUTOMATIC); |
|
| 160 |
|
| 161 selector->priv->entry = entry = gtk_imhtml_new(NULL, NULL); |
|
| 162 gtk_widget_show(entry); |
|
| 163 gtk_container_add(GTK_CONTAINER(sw), entry); |
|
| 164 gtk_widget_set_name(entry, "gaim_gtk_status_selector_imhtml"); |
|
| 165 gtk_imhtml_set_editable(GTK_IMHTML(entry), TRUE); |
|
| 166 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(entry), GTK_WRAP_WORD_CHAR); |
|
| 167 |
|
| 168 if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck")) |
|
| 169 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(entry)); |
|
| 170 |
160 |
| 171 gaim_signal_connect(gaim_connections_get_handle(), "signed-on", |
161 gaim_signal_connect(gaim_connections_get_handle(), "signed-on", |
| 172 selector, GAIM_CALLBACK(signed_on_off_cb), |
162 selector, GAIM_CALLBACK(signed_on_off_cb), |
| 173 selector); |
163 selector); |
| 174 gaim_signal_connect(gaim_connections_get_handle(), "signed-off", |
164 gaim_signal_connect(gaim_connections_get_handle(), "signed-off", |
| 227 gtk_tree_model_get(GTK_TREE_MODEL(selector->priv->model), &iter, |
217 gtk_tree_model_get(GTK_TREE_MODEL(selector->priv->model), &iter, |
| 228 COLUMN_NAME, &text, |
218 COLUMN_NAME, &text, |
| 229 COLUMN_STATUS_TYPE_ID, &status_type_id, |
219 COLUMN_STATUS_TYPE_ID, &status_type_id, |
| 230 -1); |
220 -1); |
| 231 |
221 |
| 232 if (!strcmp(text, _("New status"))) |
222 if (status_type_id == NULL) |
| |
223 { |
| |
224 if (!strcmp(text, _("New Status"))) |
| |
225 { |
| |
226 /* TODO */ |
| |
227 } |
| |
228 } |
| |
229 else if (!strcmp(status_type_id, "available")) |
| 233 { |
230 { |
| 234 /* TODO */ |
231 /* TODO */ |
| 235 } |
232 } |
| 236 else |
233 else if (!strcmp(status_type_id, "away")) |
| 237 { |
234 { |
| 238 const char *message = ""; |
235 const char *message = ""; |
| 239 GtkTextBuffer *buffer; |
236 GtkTextBuffer *buffer; |
| 240 gboolean allow_message = FALSE; |
237 gboolean allow_message = FALSE; |
| 241 |
238 |
| 403 add_item(selector, "available", _("Available"), |
400 add_item(selector, "available", _("Available"), |
| 404 load_icon("online.png")); |
401 load_icon("online.png")); |
| 405 add_item(selector, "away", _("Away"), load_icon("away.png")); |
402 add_item(selector, "away", _("Away"), load_icon("away.png")); |
| 406 } |
403 } |
| 407 |
404 |
| |
405 /* TODO: Add saved statuses here? */ |
| |
406 |
| 408 add_item(selector, NULL, _("New Status"), |
407 add_item(selector, NULL, _("New Status"), |
| 409 gtk_widget_render_icon(GTK_WIDGET(selector), GTK_STOCK_NEW, |
408 gtk_widget_render_icon(GTK_WIDGET(selector), GTK_STOCK_NEW, |
| 410 GTK_ICON_SIZE_MENU, NULL)); |
409 GTK_ICON_SIZE_MENU, NULL)); |
| 411 } |
410 } |
| 412 |
411 |