gibt es eine möglichkeit über das ende der delete-range routine benachrichtigt zu werden?
habe nämlich das problem, dass sie mehrmal durchgeführt wird, wenn ich nicht editierbaren text in der selection habe und somit mit textbuffer.connect_after('delete-range', self.delete-range_cb) zum teil die routine störe.
benachrichtigung bei ende von delete-range(textbuffer)?
Der Callback bekommt ja einen Start- und End-Iter übergeben, den könnte man überprüfen, ob der mit dem Ende der Selektion übereinstimmt (TextBuffer haben eine `get_selection_bounds()`-Methode, TextIter eine `compare()`-Methode). Allerdings funktioniert das dann nicht mit `connect_after`, weil die Selektion zu dem Zeitpunkt dann schon nicht mehr existiert.
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
das mit den start- und endmarks wird nicht funktionieren, da ich durch den nicht-editierbaren text auch nach durchlauf der delete-range-routine noch den nicht löschbaren text markiert habe.
hat die routine evtl. einen "laufende" mark, die anzeigt, bis wohin der löschvorgang schon fortgeschritten ist?
ich hatte es auch schon mit einer routine versucht, die überprüft, ob der noch markierte text komplett uneditierbar ist: das führte allerdings zu problemen, wenn am ende der ursprünglichen markierung nicht-editierbarer text war, denn dann hat meine routine angezeigt, dass eigentlich nichts mehr zu löschen war (alles uneditierbarer text) und denoch wurde die die default-löschroutine ein weiteres mal durchlaufen und das nachdem ich im textbuffer etwas geändert hatte und somit textiter ungültig geworden sind.
edit: ich gehe davon aus, dass mein problem ist, dass wenn meine selection mit nicht editierbarem text endet, zum schluss noch eine kontroll-routine durchläuft, die überprüft, ob das (letzte) textstück löschbar ist. da es nicht löschbar ist wird False zurückgegeben und delete-range wird nicht weiter ausgelöst.
da die von mir erdachte kontrolle vor dieser kontrolle abläuft, wird deren iter ungültig und ich bekomme probleme. hat jemand eine idee, welches signal ich da blockieren oder verbinden müsste?
hat die routine evtl. einen "laufende" mark, die anzeigt, bis wohin der löschvorgang schon fortgeschritten ist?
ich hatte es auch schon mit einer routine versucht, die überprüft, ob der noch markierte text komplett uneditierbar ist: das führte allerdings zu problemen, wenn am ende der ursprünglichen markierung nicht-editierbarer text war, denn dann hat meine routine angezeigt, dass eigentlich nichts mehr zu löschen war (alles uneditierbarer text) und denoch wurde die die default-löschroutine ein weiteres mal durchlaufen und das nachdem ich im textbuffer etwas geändert hatte und somit textiter ungültig geworden sind.
edit: ich gehe davon aus, dass mein problem ist, dass wenn meine selection mit nicht editierbarem text endet, zum schluss noch eine kontroll-routine durchläuft, die überprüft, ob das (letzte) textstück löschbar ist. da es nicht löschbar ist wird False zurückgegeben und delete-range wird nicht weiter ausgelöst.
da die von mir erdachte kontrolle vor dieser kontrolle abläuft, wird deren iter ungültig und ich bekomme probleme. hat jemand eine idee, welches signal ich da blockieren oder verbinden müsste?