problem in gtktextview
- From: "Manoj tr" <trmanoj linuxmail org>
- To: "gtk" <gtk-app-devel-list gnome org>, "gtklist" <gtk-list gnome org>
- Cc:
- Subject: problem in gtktextview
- Date: Fri, 14 May 2004 17:41:12 +0600
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.
With Regards
Manoj
#########################################
#include <gtk/gtk.h>
PangoFontDescription *font_kar;
GtkTextView *textview1;
GtkTextBuffer *Buf;
GtkTextIter IterCur, IterSel, IterEnd;
GtkTextMark *MarkCur, *MarkSel;
static gboolean delete_event( GtkWidget *widget,
GdkEvent *event,
gpointer data )
{
gtk_main_quit (); return FALSE;
}
gboolean
on_textview1_realize (GtkWidget *widget,
GdkEventKey *event,
gpointer user_data)
{
font_kar = pango_font_description_from_string("Sans 16");
textview1=GTK_TEXT_VIEW(widget);
gtk_widget_modify_font(GTK_WIDGET(textview1),font_kar);
Buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW(textview1)) ;
gtk_widget_grab_focus(GTK_WIDGET(textview1));
MarkCur = gtk_text_buffer_get_mark ( Buf, "insert" ) ;
gtk_text_buffer_get_iter_at_mark ( Buf, &IterCur, MarkCur ) ;
}
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'
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;
}
int main( int argc,
char *argv[] )
{
gtk_init (&argc, &argv);
GtkWidget *window1;
GtkWidget *scrolledwindow1;
GtkWidget *textview1;
window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_widget_set_name (window1, "window1");
gtk_window_set_title (GTK_WINDOW (window1), ("window1"));
scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
gtk_widget_set_name (scrolledwindow1, "scrolledwindow1");
gtk_widget_show (scrolledwindow1);
gtk_container_add (GTK_CONTAINER (window1), scrolledwindow1);
textview1 = gtk_text_view_new ();
gtk_widget_set_name (textview1, "textview1");
gtk_widget_show (textview1);
gtk_container_add (GTK_CONTAINER (scrolledwindow1), textview1);
gtk_widget_set_size_request (textview1, 300, 400);
g_signal_connect ((gpointer) textview1, "realize",
G_CALLBACK (on_textview1_realize),
NULL);
g_signal_connect ((gpointer) textview1, "key_press_event",
G_CALLBACK (on_textview1_key_press_event),
NULL);
g_signal_connect ((gpointer) window1, "delete_event",
G_CALLBACK (delete_event),
NULL);
/* Rest in gtk_main and wait for the fun to begin! */
gtk_widget_show (window1);
gtk_main ();
return 0;
}
--
______________________________________________
Check out the latest SMS services @ http://www.linuxmail.org
This allows you to send and receive SMS through your mailbox.
Powered by Outblaze
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]