comparison src/dialogs.c @ 4119:a6825994ab3a

[gaim-migrate @ 4336] gtk1.2 code is a bad thing. 2 patches from javabsp. committer: Tailor Script <tailor@pidgin.im>
author Luke Schierer <lschiere@pidgin.im>
date Mon, 23 Dec 2002 18:27:27 +0000
parents 02b415cbba3a
children 26a18ba4d79f
comparison
equal deleted inserted replaced
4118:02b415cbba3a 4119:a6825994ab3a
260 char *name; 260 char *name;
261 GtkWidget *bbox; 261 GtkWidget *bbox;
262 GtkWidget *window; 262 GtkWidget *window;
263 GtkWidget *layout; 263 GtkWidget *layout;
264 }; 264 };
265
266 /* Wrapper to get all the text from a GtkTextView */
267 gchar* gtk_text_view_get_text(GtkTextView *text, gboolean include_hidden_chars)
268 {
269 GtkTextBuffer *buffer;
270 GtkTextIter start, end;
271
272 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text));
273 gtk_text_buffer_get_start_iter(buffer, &start);
274 gtk_text_buffer_get_end_iter(buffer, &end);
275
276 return gtk_text_buffer_get_text(buffer, &start, &end, include_hidden_chars);
277 }
265 278
266 /*------------------------------------------------------------------------*/ 279 /*------------------------------------------------------------------------*/
267 /* Destroys */ 280 /* Destroys */
268 /*------------------------------------------------------------------------*/ 281 /*------------------------------------------------------------------------*/
269 282
1894 void do_save_info(GtkWidget *widget, struct set_info_dlg *b) 1907 void do_save_info(GtkWidget *widget, struct set_info_dlg *b)
1895 { 1908 {
1896 gchar *junk; 1909 gchar *junk;
1897 struct gaim_connection *gc; 1910 struct gaim_connection *gc;
1898 1911
1899 junk = gtk_editable_get_chars(GTK_EDITABLE(b->text), 0, -1); 1912 junk = gtk_text_view_get_text(GTK_TEXT_VIEW(b->text), FALSE);
1900 1913
1901 if (b->user) { 1914 if (b->user) {
1902 strncpy_withhtml(b->user->user_info, junk, sizeof b->user->user_info); 1915 strncpy_withhtml(b->user->user_info, junk, sizeof b->user->user_info);
1903 gc = b->user->gc; 1916 gc = b->user->gc;
1904 1917
2215 void show_set_info(struct gaim_connection *gc) 2228 void show_set_info(struct gaim_connection *gc)
2216 { 2229 {
2217 GtkWidget *buttons; 2230 GtkWidget *buttons;
2218 GtkWidget *label; 2231 GtkWidget *label;
2219 GtkWidget *vbox; 2232 GtkWidget *vbox;
2233 GtkTextBuffer *buffer;
2234 GtkWidget *frame;
2220 gchar *buf; 2235 gchar *buf;
2221 struct aim_user *tmp; 2236 struct aim_user *tmp;
2222 2237
2223 struct set_info_dlg *b = g_new0(struct set_info_dlg, 1); 2238 struct set_info_dlg *b = g_new0(struct set_info_dlg, 1);
2224 tmp = gc->user; 2239 tmp = gc->user;
2240 g_snprintf(buf, 256, "Changing info for %s:", tmp->username); 2255 g_snprintf(buf, 256, "Changing info for %s:", tmp->username);
2241 label = gtk_label_new(buf); 2256 label = gtk_label_new(buf);
2242 g_free(buf); 2257 g_free(buf);
2243 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 5); 2258 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 5);
2244 gtk_widget_show(label); 2259 gtk_widget_show(label);
2245 2260
2246 b->text = gtk_text_new(NULL, NULL); 2261 frame = gtk_frame_new(NULL);
2247 gtk_text_set_word_wrap(GTK_TEXT(b->text), TRUE); 2262 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN);
2248 gtk_text_set_editable(GTK_TEXT(b->text), TRUE); 2263 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0);
2249 gtk_widget_set_usize(b->text, 300, 200); 2264 gtk_widget_show(frame);
2265
2266 b->text = gtk_text_view_new();
2267 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(b->text), GTK_WRAP_WORD);
2268 gtk_widget_set_size_request(b->text, 300, 200);
2250 buf = g_malloc(strlen(tmp->user_info) + 1); 2269 buf = g_malloc(strlen(tmp->user_info) + 1);
2251 strncpy_nohtml(buf, tmp->user_info, strlen(tmp->user_info) + 1); 2270 strncpy_nohtml(buf, tmp->user_info, strlen(tmp->user_info) + 1);
2252 gtk_text_insert(GTK_TEXT(b->text), NULL, NULL, NULL, buf, -1); 2271 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(b->text));
2272 gtk_text_buffer_set_text(buffer, buf, -1);
2253 g_free(buf); 2273 g_free(buf);
2254 gtk_box_pack_start(GTK_BOX(vbox), b->text, TRUE, TRUE, 0); 2274 gtk_container_add(GTK_CONTAINER(frame), b->text);
2255 gtk_widget_show(b->text); 2275 gtk_widget_show(b->text);
2256 gtk_window_set_focus(GTK_WINDOW(b->window), b->text); 2276 gtk_window_set_focus(GTK_WINDOW(b->window), b->text);
2257 2277
2258 buttons = gtk_hbox_new(FALSE, 5); 2278 buttons = gtk_hbox_new(FALSE, 5);
2259 gtk_box_pack_start(GTK_BOX(vbox), buttons, FALSE, FALSE, 0); 2279 gtk_box_pack_start(GTK_BOX(vbox), buttons, FALSE, FALSE, 0);
3355 /*------------------------------------------------------------------------*/ 3375 /*------------------------------------------------------------------------*/
3356 3376
3357 static struct away_message *save_away_message(struct create_away *ca) 3377 static struct away_message *save_away_message(struct create_away *ca)
3358 { 3378 {
3359 struct away_message *am; 3379 struct away_message *am;
3360 guint text_len;
3361 gchar *away_message; 3380 gchar *away_message;
3362 3381
3363 if (!ca->mess) 3382 if (!ca->mess)
3364 am = g_new0(struct away_message, 1); 3383 am = g_new0(struct away_message, 1);
3365 else { 3384 else {
3366 am = ca->mess; 3385 am = ca->mess;
3367 } 3386 }
3368 3387
3388
3369 g_snprintf(am->name, sizeof(am->name), "%s", gtk_entry_get_text(GTK_ENTRY(ca->entry))); 3389 g_snprintf(am->name, sizeof(am->name), "%s", gtk_entry_get_text(GTK_ENTRY(ca->entry)));
3370 text_len = gtk_text_get_length(GTK_TEXT(ca->text)); 3390 away_message = gtk_text_view_get_text(GTK_TEXT_VIEW(ca->text), FALSE);
3371 away_message = gtk_editable_get_chars(GTK_EDITABLE(ca->text), 0, text_len);
3372 3391
3373 g_snprintf(am->message, sizeof(am->message), "%s", away_message); 3392 g_snprintf(am->message, sizeof(am->message), "%s", away_message);
3374 g_free(away_message); 3393 g_free(away_message);
3375 3394
3376 if (!ca->mess) { 3395 if (!ca->mess) {
3393 _("Please give the message a title, or choose \"Make Away\" to use " 3412 _("Please give the message a title, or choose \"Make Away\" to use "
3394 "without saving."), GAIM_ERROR); 3413 "without saving."), GAIM_ERROR);
3395 return 0; 3414 return 0;
3396 } 3415 }
3397 3416
3398 if ((gtk_text_get_length(GTK_TEXT(ca->text)) == 0) && (type <= 1)) { 3417 if (!gtk_text_view_get_text(GTK_TEXT_VIEW(ca->text), FALSE) && (type <= 1)) {
3399 /* We shouldn't allow a blank message */ 3418 /* We shouldn't allow a blank message */
3400 do_error_dialog(_("You cannot create an empty away message"), NULL, GAIM_ERROR); 3419 do_error_dialog(_("You cannot create an empty away message"), NULL, GAIM_ERROR);
3401 return 0; 3420 return 0;
3402 } 3421 }
3403 3422
3415 } 3434 }
3416 3435
3417 void use_away_mess(GtkWidget *widget, struct create_away *ca) 3436 void use_away_mess(GtkWidget *widget, struct create_away *ca)
3418 { 3437 {
3419 static struct away_message am; 3438 static struct away_message am;
3420 guint text_len;
3421 gchar *away_message; 3439 gchar *away_message;
3422 3440
3423 if (!check_away_mess(ca, 0)) 3441 if (!check_away_mess(ca, 0))
3424 return; 3442 return;
3425 3443
3426 g_snprintf(am.name, sizeof(am.name), "%s", gtk_entry_get_text(GTK_ENTRY(ca->entry))); 3444 g_snprintf(am.name, sizeof(am.name), "%s", gtk_entry_get_text(GTK_ENTRY(ca->entry)));
3427 text_len = gtk_text_get_length(GTK_TEXT(ca->text)); 3445 away_message = gtk_text_view_get_text(GTK_TEXT_VIEW(ca->text), FALSE);
3428 if (text_len < 0)
3429 return;
3430 away_message = gtk_editable_get_chars(GTK_EDITABLE(ca->text), 0, text_len);
3431 3446
3432 g_snprintf(am.message, sizeof(am.message), "%s", away_message); 3447 g_snprintf(am.message, sizeof(am.message), "%s", away_message);
3433 g_free(away_message); 3448 g_free(away_message);
3434 3449
3435 do_away_message(NULL, &am); 3450 do_away_message(NULL, &am);
3456 GtkWidget *sw; 3471 GtkWidget *sw;
3457 GtkWidget *label; 3472 GtkWidget *label;
3458 GtkWidget *frame; 3473 GtkWidget *frame;
3459 GtkWidget *fbox; 3474 GtkWidget *fbox;
3460 GtkWidget *button; 3475 GtkWidget *button;
3476 GtkTextBuffer *buffer;
3461 3477
3462 struct create_away *ca = g_new0(struct create_away, 1); 3478 struct create_away *ca = g_new0(struct create_away, 1);
3463 3479
3464 /* Set up window */ 3480 /* Set up window */
3465 GAIM_DIALOG(ca->window); 3481 GAIM_DIALOG(ca->window);
3495 ca->entry = gtk_entry_new(); 3511 ca->entry = gtk_entry_new();
3496 gtk_box_pack_start(GTK_BOX(titlebox), ca->entry, TRUE, TRUE, 0); 3512 gtk_box_pack_start(GTK_BOX(titlebox), ca->entry, TRUE, TRUE, 0);
3497 gtk_widget_grab_focus(ca->entry); 3513 gtk_widget_grab_focus(ca->entry);
3498 gtk_widget_show(ca->entry); 3514 gtk_widget_show(ca->entry);
3499 3515
3500 sw = gtk_scrolled_window_new(NULL, NULL); 3516 frame = gtk_frame_new(NULL);
3501 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), 3517 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN);
3502 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); 3518 gtk_box_pack_start(GTK_BOX(fbox), frame, TRUE, TRUE, 0);
3503 gtk_box_pack_start(GTK_BOX(fbox), sw, TRUE, TRUE, 0); 3519 gtk_widget_show(frame);
3504 gtk_widget_show(sw); 3520
3505 3521 ca->text = gtk_text_view_new();
3506 ca->text = gtk_text_new(NULL, NULL); 3522 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(ca->text), GTK_WRAP_WORD);
3507 gtk_text_set_word_wrap(GTK_TEXT(ca->text), TRUE); 3523
3508 gtk_text_set_editable(GTK_TEXT(ca->text), TRUE); 3524 gtk_container_add(GTK_CONTAINER(frame), ca->text);
3509 gtk_container_add(GTK_CONTAINER(sw), ca->text);
3510 gtk_widget_show(ca->text); 3525 gtk_widget_show(ca->text);
3511 3526
3512 3527
3513 if (dummy) { 3528 if (dummy) {
3514 struct away_message *amt; 3529 struct away_message *amt;
3515 GtkTreeIter iter; 3530 GtkTreeIter iter;
3516 int pos = 0; 3531 int pos = 0;
3517 GtkListStore *ls = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(dummy))); 3532 GtkListStore *ls = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(dummy)));
3518 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(dummy)); 3533 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(dummy));
3519 GValue val = { 0, }; 3534 GValue val = { 0, };
3535 GtkTextIter start;
3536 GtkTextBuffer *buffer;
3520 3537
3521 if (! gtk_tree_selection_get_selected (sel, (GtkTreeModel**)&ls, &iter)) 3538 if (! gtk_tree_selection_get_selected (sel, (GtkTreeModel**)&ls, &iter))
3522 return; 3539 return;
3523 gtk_tree_model_get_value (GTK_TREE_MODEL(ls), &iter, 1, &val); 3540 gtk_tree_model_get_value (GTK_TREE_MODEL(ls), &iter, 1, &val);
3524 amt = g_value_get_pointer (&val); 3541 amt = g_value_get_pointer (&val);
3525 gtk_entry_set_text(GTK_ENTRY(ca->entry), amt->name); 3542 gtk_entry_set_text(GTK_ENTRY(ca->entry), amt->name);
3526 gtk_editable_insert_text(GTK_EDITABLE(ca->text), amt->message, 3543 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ca->text));
3527 strlen(amt->message), &pos); 3544 gtk_text_buffer_get_iter_at_offset(buffer, &start, pos);
3545 gtk_text_buffer_insert(buffer, &start, amt->message, strlen(amt->message));
3546
3528 ca->mess = amt; 3547 ca->mess = amt;
3529 } 3548 }
3530 3549
3531 hbox = gtk_hbox_new(FALSE, 5); 3550 hbox = gtk_hbox_new(FALSE, 5);
3532 gtk_box_pack_start(GTK_BOX(tbox), hbox, FALSE, FALSE, 0); 3551 gtk_box_pack_start(GTK_BOX(tbox), hbox, FALSE, FALSE, 0);