Mercurial > pidgin.yaz
comparison src/gtkimhtml.c @ 8420:c25c697525b7
[gaim-migrate @ 9150]
Phase II. If anyone finds anything problematic here that can't be attributed
to GtkIMHtml itself, please let me know (I'll probably tell you it can be
attributed to GtkIMHtml itself ;)).
Love, Sean.
committer: Tailor Script <tailor@pidgin.im>
author | Sean Egan <seanegan@gmail.com> |
---|---|
date | Wed, 10 Mar 2004 06:10:00 +0000 |
parents | 4a5b36510665 |
children | 2e18099ded93 |
comparison
equal
deleted
inserted
replaced
8419:5c6124e9a3a7 | 8420:c25c697525b7 |
---|---|
82 | 82 |
83 enum { | 83 enum { |
84 DRAG_URL | 84 DRAG_URL |
85 }; | 85 }; |
86 | 86 |
87 enum { | |
88 URL_CLICKED, | |
89 BUTTONS_UPDATE, | |
90 TOGGLE_FORMAT, | |
91 LAST_SIGNAL | |
92 }; | |
93 static guint signals [LAST_SIGNAL] = { 0 }; | |
94 | |
87 GtkTargetEntry selection_targets[] = { | 95 GtkTargetEntry selection_targets[] = { |
88 { "text/html", 0, TARGET_HTML }, | 96 { "text/html", 0, TARGET_HTML }, |
89 { "UTF8_STRING", 0, TARGET_UTF8_STRING }, | 97 { "UTF8_STRING", 0, TARGET_UTF8_STRING }, |
90 { "COMPOUND_TEXT", 0, TARGET_COMPOUND_TEXT }, | 98 { "COMPOUND_TEXT", 0, TARGET_COMPOUND_TEXT }, |
91 { "STRING", 0, TARGET_STRING }, | 99 { "STRING", 0, TARGET_STRING }, |
358 | 366 |
359 gboolean gtk_key_pressed_cb(GtkIMHtml *imhtml, GdkEventKey *event, gpointer data) | 367 gboolean gtk_key_pressed_cb(GtkIMHtml *imhtml, GdkEventKey *event, gpointer data) |
360 { | 368 { |
361 char buf[7]; | 369 char buf[7]; |
362 buf[0] = '\0'; | 370 buf[0] = '\0'; |
371 GObject *object; | |
363 | 372 |
364 if (event->state & GDK_CONTROL_MASK) | 373 if (event->state & GDK_CONTROL_MASK) |
365 switch (event->keyval) { | 374 switch (event->keyval) { |
366 case 'a': | 375 case 'a': |
367 return TRUE; | 376 return TRUE; |
375 return TRUE; | 384 return TRUE; |
376 break; | 385 break; |
377 | 386 |
378 case 'b': /* ctrl-b is GDK_Left, which moves backwards. */ | 387 case 'b': /* ctrl-b is GDK_Left, which moves backwards. */ |
379 case 'B': | 388 case 'B': |
380 gtk_imhtml_toggle_bold(imhtml); | 389 if (imhtml->format_functions & GTK_IMHTML_BOLD) { |
390 gtk_imhtml_toggle_bold(imhtml); | |
391 object = g_object_ref(G_OBJECT(imhtml)); | |
392 g_signal_emit(object, signals[TOGGLE_FORMAT], 0, GTK_IMHTML_BOLD); | |
393 g_object_unref(object); | |
394 } | |
381 return TRUE; | 395 return TRUE; |
382 break; | 396 break; |
383 | 397 |
384 case 'f': | 398 case 'f': |
385 case 'F': | 399 case 'F': |
390 return TRUE; | 404 return TRUE; |
391 break; | 405 break; |
392 | 406 |
393 case 'i': | 407 case 'i': |
394 case 'I': | 408 case 'I': |
395 /*set_toggle(gtkconv->toolbar.italic, | 409 if (imhtml->format_functions & GTK_IMHTML_ITALIC) |
396 !gtk_toggle_button_get_active( | 410 gtk_imhtml_toggle_italic(imhtml); |
397 GTK_TOGGLE_BUTTON(gtkconv->toolbar.italic)));*/ | |
398 gtk_imhtml_toggle_italic(imhtml); | |
399 return TRUE; | 411 return TRUE; |
400 break; | 412 break; |
401 | 413 |
402 case 'u': /* ctrl-u is GDK_Clear, which clears the line. */ | 414 case 'u': /* ctrl-u is GDK_Clear, which clears the line. */ |
403 case 'U': | 415 case 'U': |
404 /*set_toggle(gtkconv->toolbar.underline, | 416 if (imhtml->format_functions & GTK_IMHTML_UNDERLINE) |
405 !gtk_toggle_button_get_active( | 417 gtk_imhtml_toggle_underline(imhtml); |
406 GTK_TOGGLE_BUTTON(gtkconv->toolbar.underline)));*/ | |
407 gtk_imhtml_toggle_underline(imhtml); | |
408 return TRUE; | 418 return TRUE; |
409 break; | 419 break; |
410 | 420 |
411 case '-': | 421 case '-': |
412 /*set_toggle(gtkconv->toolbar.smaller_size, | 422 if (imhtml->format_functions & GTK_IMHTML_SHRINK) |
413 !gtk_toggle_button_get_active( | 423 gtk_imhtml_font_shrink(imhtml); |
414 GTK_TOGGLE_BUTTON(gtkconv->toolbar.smaller_size)));*/ | |
415 gtk_imhtml_font_shrink(imhtml); | |
416 return TRUE; | 424 return TRUE; |
417 break; | 425 break; |
418 | 426 |
419 case '=': | 427 case '=': |
420 case '+': | 428 case '+': |
421 /*set_toggle(gtkconv->toolbar.larger_size, | 429 if (imhtml->format_functions & GTK_IMHTML_GROW) |
422 !gtk_toggle_button_get_active( | 430 gtk_imhtml_font_grow(imhtml); |
423 GTK_TOGGLE_BUTTON(gtkconv->toolbar.larger_size)));*/ | |
424 gtk_imhtml_font_grow(imhtml); | |
425 return TRUE; | 431 return TRUE; |
426 break; | 432 break; |
427 | 433 |
428 case '1': strcpy(buf, ":-)"); break; | 434 case '1': strcpy(buf, ":-)"); break; |
429 case '2': strcpy(buf, ":-("); break; | 435 case '2': strcpy(buf, ":-("); break; |
564 #endif | 570 #endif |
565 | 571 |
566 | 572 |
567 static GtkTextViewClass *parent_class = NULL; | 573 static GtkTextViewClass *parent_class = NULL; |
568 | 574 |
569 /* GtkIMHtml has one signal--URL_CLICKED */ | |
570 enum { | |
571 URL_CLICKED, | |
572 LAST_SIGNAL | |
573 }; | |
574 static guint signals [LAST_SIGNAL] = { 0 }; | |
575 | |
576 static void | 575 static void |
577 gtk_imhtml_finalize (GObject *object) | 576 gtk_imhtml_finalize (GObject *object) |
578 { | 577 { |
579 GtkIMHtml *imhtml = GTK_IMHTML(object); | 578 GtkIMHtml *imhtml = GTK_IMHTML(object); |
580 GList *scalables; | 579 GList *scalables; |
614 NULL, | 613 NULL, |
615 0, | 614 0, |
616 g_cclosure_marshal_VOID__POINTER, | 615 g_cclosure_marshal_VOID__POINTER, |
617 G_TYPE_NONE, 1, | 616 G_TYPE_NONE, 1, |
618 G_TYPE_POINTER); | 617 G_TYPE_POINTER); |
618 signals[BUTTONS_UPDATE] = g_signal_new("format_functions_update", | |
619 G_TYPE_FROM_CLASS(gobject_class), | |
620 G_SIGNAL_RUN_FIRST, | |
621 G_STRUCT_OFFSET(GtkIMHtmlClass, buttons_update), | |
622 NULL, | |
623 0, | |
624 g_cclosure_marshal_VOID__POINTER, | |
625 G_TYPE_NONE, 1, | |
626 G_TYPE_INT); | |
627 signals[TOGGLE_FORMAT] = g_signal_new("format_function_toggle", | |
628 G_TYPE_FROM_CLASS(gobject_class), | |
629 G_SIGNAL_RUN_FIRST, | |
630 G_STRUCT_OFFSET(GtkIMHtmlClass, toggle_format), | |
631 NULL, | |
632 0, | |
633 g_cclosure_marshal_VOID__POINTER, | |
634 G_TYPE_NONE, 1, | |
635 G_TYPE_INT); | |
619 gobject_class->finalize = gtk_imhtml_finalize; | 636 gobject_class->finalize = gtk_imhtml_finalize; |
620 } | 637 } |
621 | 638 |
622 static void gtk_imhtml_init (GtkIMHtml *imhtml) | 639 static void gtk_imhtml_init (GtkIMHtml *imhtml) |
623 { | 640 { |
688 imhtml->format_spans = NULL; | 705 imhtml->format_spans = NULL; |
689 | 706 |
690 imhtml->scalables = NULL; | 707 imhtml->scalables = NULL; |
691 | 708 |
692 gtk_imhtml_set_editable(imhtml, FALSE); | 709 gtk_imhtml_set_editable(imhtml, FALSE); |
693 | |
694 } | 710 } |
695 | 711 |
696 GtkWidget *gtk_imhtml_new(void *a, void *b) | 712 GtkWidget *gtk_imhtml_new(void *a, void *b) |
697 { | 713 { |
698 return GTK_WIDGET(g_object_new(gtk_imhtml_get_type(), NULL)); | 714 return GTK_WIDGET(g_object_new(gtk_imhtml_get_type(), NULL)); |
1371 | 1387 |
1372 GSList *fonts = NULL; | 1388 GSList *fonts = NULL; |
1373 GtkIMHtmlScalable *scalable = NULL; | 1389 GtkIMHtmlScalable *scalable = NULL; |
1374 int y, height; | 1390 int y, height; |
1375 | 1391 |
1392 printf("Appending: %s\n", text); | |
1376 | 1393 |
1377 g_return_val_if_fail (imhtml != NULL, NULL); | 1394 g_return_val_if_fail (imhtml != NULL, NULL); |
1378 g_return_val_if_fail (GTK_IS_IMHTML (imhtml), NULL); | 1395 g_return_val_if_fail (GTK_IS_IMHTML (imhtml), NULL); |
1379 g_return_val_if_fail (text != NULL, NULL); | 1396 g_return_val_if_fail (text != NULL, NULL); |
1380 c = text; | 1397 c = text; |
2460 * We need a visible caret for accessibility, so mouseless | 2477 * We need a visible caret for accessibility, so mouseless |
2461 * people can highlight stuff. | 2478 * people can highlight stuff. |
2462 */ | 2479 */ |
2463 /* gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(imhtml), editable); */ | 2480 /* gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(imhtml), editable); */ |
2464 imhtml->editable = editable; | 2481 imhtml->editable = editable; |
2482 imhtml->format_functions = !editable ? 0 : -1; | |
2483 } | |
2484 | |
2485 void gtk_imhtml_set_format_functions(GtkIMHtml *imhtml, GtkIMHtmlButtons buttons) | |
2486 { | |
2487 GObject *object = g_object_ref(G_OBJECT(imhtml)); | |
2488 g_signal_emit(object, signals[BUTTONS_UPDATE], 0, buttons); | |
2489 imhtml->format_functions = buttons; | |
2490 g_object_unref(object); | |
2465 } | 2491 } |
2466 | 2492 |
2467 gboolean gtk_imhtml_get_editable(GtkIMHtml *imhtml) | 2493 gboolean gtk_imhtml_get_editable(GtkIMHtml *imhtml) |
2468 { | 2494 { |
2469 return imhtml->editable; | 2495 return imhtml->editable; |