2010-07-17 4 views
2

그래서 저는 PyGTK에 서식있는 텍스트 편집기를 작성하려고하고 있습니다. 원래 구루트 (Gourmet)의 구식 타사 스크립트 인 InteractivePangoBuffer를 사용하여이 작업을 수행했습니다. 제대로 작동하는 동안, 때때로 사용하기에는 실망스럽게 만들었던 버그가 여전히 많이 있었기 때문에 텍스트 태그를 사용하기로 결정했습니다. 나는 그들을 표시하고 일반적으로 괜찮은 일을하고 있지만, 이제는 저장할 때 파일로 내보내는 방법을 알아 내려고 노력하고 있습니다. 나는 다른 솔루션들도 보지 못했지만 다른 사람들도 내가 가진 것과 같은 문제를 안고 있음을 보았다. 필자는 실제로 사용 된 텍스트 태그가있는 텍스트의 각 부분의 시작과 끝 위치를 실제로 얻는 것에 가깝게 오는 (내장되거나 그렇지 않은) 함수를 발견하지 못했습니다.gtk.TextTags를 파일에 저장 하시겠습니까?

이론적으로는 gtk.TextBuffer.get_iter_at_offset(), gtk.TextIter.get_offset(), gtk.TextIter.begins_tag() 및 gtk.TextIter()를 사용하여 텍스트를 걷는 방식으로 아이디어를 제안했습니다. .ends_tag()는 각 문자를 검사하여 태그 시작 또는 종료 여부를 확인하고 해당하는 경우 적절한 코드를 넣습니다. 이것은 대단히 비효율적이며 느릴 것입니다. 특히 더 큰 문서에서는 더욱 그렇습니다. 그래서 더 좋은 해결책이 있는지 궁금합니다.

답변

0

아마도 gtk.TextIter.forward_to_tag_toggle()을 사용할 수 있습니다. 나는. 가지고있는 모든 태그를 반복하고, 각 태그마다 토글 된 위치의 버퍼를 스캔합니다.

+0

고마워, 그게 나를 위해 해냈어! 내가 그것을 놓쳤다라고 생각할 수 없다! 오히려 효율적으로 작업을 저장했습니다. 누구든지 내가 한 일을 보려한다면 여기를보세요. http://pastebin.com/A3SpdV4z – Smartboy

관련 문제