Manoj tr wrote:
hai I have a problem with textview. I want to replace the characters in a gtktextview after checking some condition. ie when i press "A" the displayed character will be H. But in the case of textview i enter the all code to rplace the character, but it will print both characters "AH" ie the actual one and the mapped one. I place the code bellow. any replay will very thankful to you. I want to build an editor in regional language. I think some problem in iteration. It will not correctly initialize.[skip]
With Regards Manoj
#########################################
#include <gtk/gtk.h>
First of all you have to connect key_press_event handler with option before = TRUE, ie your function must be called before any inner GTK handlers.gboolean on_textview1_key_press_event (GtkWidget *widget, GdkEventKey *event, gpointer user_data) {
int Pos,SelPos; gchar *fchar; Buf = gtk_text_view_get_buffer( GTK_TEXT_VIEW( widget)) ; MarkCur = gtk_text_buffer_get_insert(Buf); gtk_text_buffer_get_iter_at_mark ( Buf, &IterCur,MarkCur ) ; gtk_text_buffer_get_iter_at_offset(Buf,&IterEnd,-1); switch (event->keyval) { case 65: // 'A'
Then you have 2 options here:
1. do text insertion into textview yourself, then return TRUE to stop event processing.
2. just replace event->keyval and return FALSE to let GTK do it's job.
gtk_text_buffer_insert( Buf,&IterCur,"H",-1); // gtk_text_buffer_insert( Buf,&IterCur,"m",-1); gtk_text_buffer_get_iter_at_offset(Buf,&IterEnd,gtk_text_iter_get_offset(&IterCur)-1); //gtk_text_buffer_delete(Buf,&IterCur,&IterEnd); break; } return FALSE; }
_______________________________________________ gtk-list@xxxxxxxxx http://mail.gnome.org/mailman/listinfo/gtk-list