Frage zu GtkTextView



  • Hi!

    ich werd aus der dokumentation nicht so richtig schlau und da wollte ich 2 fragen in sachen GTKTextView und GTKBuffer an euch stellen:

    1.) ist es moeglich die position des cursors herauszufinden also wo der cursor gerade steht(egal als iterator oder als koordinaten(zeile, buchstabe))

    2.) kann man waenn mann z.b jetzt einen text in das textfeld eingibt ein tag setzen? d.h immer waenn was zum text dazukommt soll das genau diesen tag bekommen bis das ich den tag aendere

    ich hoffe ihr koennt mir da helfen!

    danke!

    mfg --linuxuser--



  • --linuxuser-- schrieb:

    Hi!

    ich werd aus der dokumentation nicht so richtig schlau und da wollte ich 2 fragen in sachen GTKTextView und GTKBuffer an euch stellen:

    1.) ist es moeglich die position des cursors herauszufinden also wo der cursor gerade steht(egal als iterator oder als koordinaten(zeile, buchstabe))

    ja, mit gtk_text_iter_get_line (Zeile) und gtk_text_iter_get_line_offset (Spalte) kriegt man ne exakte Position eines GtkTextIter.
    D.h. um an die Position des Cursors zu kommen, kannst du erst gtk_text_buffer_get_insert aufrufen, um an das "Mark" zu kommen. Dann mit dem Mark gtk_text_buffer_get_iter_at_mark aufrufen, um den GtkTextIter zu kriegen.
    Alles klar? 😃

    GtkTextBuffer *buffer = ....;
    GtkTextMark mark* = gtk_text_buffer_get_insert(buffer);
    GtkTextIter iter* = gtk_text_buffer_get_iter_at_mark(mark);
    
    gint zeile = gtk_text_iter_get_line(iter);
    gint spalte = gtk_text_iter_get_line_offset(iter);
    

    Man kann auch ein TextMark an der Stelle, wo der Cursor momentan ist, setzen. Nur hat das den Nachteil, dass sich das TextMark "nach links schiebt", wenn man z.B. Backspace drückt. D.h. die ursprüngliche Position ist verloren.

    2.) kann man waenn mann z.b jetzt einen text in das textfeld eingibt ein tag setzen? d.h immer waenn was zum text dazukommt soll das genau diesen tag bekommen bis das ich den tag aendere

    Ich verstehe die Frage nicht, bitte umformulieren oder ein Beispiel bringen.

    Aber falls es draufhinausläuft, dass z.B. Text, der gerade getippt wird, sofort grün werden soll, dann ja. Einfach ein Tag erstellen, welches den Text grün macht und auf den gerade getippten Text anwenden (das event kann man ja abfangen).

    MfG

    GPC



  • danke genau das hab ich gebraucht!!! du hast mir sehr geholfen

    zu frage 2 das mit dem abfangen hab ich eh schon implementiert hab mir gedacht es gibt vl eine elegantere variante aber dann hab ich eh das eh schon.


Anmelden zum Antworten