2009-12-11 4 views
2

GtkTextView에서 사용자의 굵게/기울임 꼴/글꼴/etc 태그를 저장하려고합니다. GtkTextBuffer.get_text()를 사용하면 태그가 반환되지 않습니다.GtkTextBuffer (예 : GtkTextView)의 예제/도움말이 필요합니다. serialize/deserialize

나는이 발견 한 가장 좋은 문서는 다음과 같습니다 그러나 http://www.pygtk.org/docs/pygtk/class-gtktextbuffer.html#method-gtktextbuffer--register-serialize-format

, 내가 함수 인수를 이해하지 않습니다. 태그가있는 텍스트 뷰를 저장 /로드하는 데 이러한 태그가 사용되는 방법에 대한 예제가 있으면 매우 유용 할 것입니다.

편집 : 나는 무엇을 성취하려고하는지 명확히하고 싶습니다. 기본적으로 textview의 텍스트 + 태그를 저장 /로드하려고합니다. 나는 그보다 더 복잡한 것을하고자하지 않습니다. 필자는 파일 형식으로 피클을 사용하고 있으므로 저장 방법이나 형식에 대한 도움말은 필요 없습니다. 사용자가 화면에서 본 내용을 잃어 버리지 않도록 데이터를 당기거나 밀어 넣는 방법이 필요합니다. 고맙습니다.

답변

1

GtkTextBuffer의 직렬화 작업을하지 않았습니다. 당신이 링크 된 문서를 읽고, 나는이 당신에게 GTK +의 내장에서 고유 시리얼을 제공

textbuffer.register_serialize_tagset() 

를 호출하여 기본 serializer를 시도 제안했다. 여기서 독점적이라는 것은 잘 알려진 형식으로 직렬화되지 않는다는 것을 의미합니다. 하지만 필요한 것은 텍스트 버퍼의 내용을 저장하고 다시로드 할 수있는 능력 뿐이라면 괜찮을 것입니다.

물론 작동 원리를 알아 내고 싶다면 물론 소스 코드를 GTK +에서 사용할 수 있습니다. 예를 들어 구현하려고 시도하는 것에 대해 권하고 싶습니다. 독립형 비 직렬 기 (de-serializer)입니다. 왜냐하면 GTK +가 포맷을 그대로 유지한다는 보장이 없기 때문입니다.

+0

이 정보를 제공해 주셔서 감사합니다. 나는 아직도 약간 혼란 스럽다. 이 함수를 한 번 호출할까요? 그런 다음 데이터를 가져 오기 위해 다른 것을 호출하고 데이터를 TextView에 다시 저장하려면 무엇을해야합니까? 예 : textview.register_serialize_target(), data = textview.get_serialized_data(), textview.set_serialized_data (data) – user129975

3

텍스트를 다른 텍스트 버퍼로 복사하기 때문에 태그를 저장해야하는 경우 gtk.TextBuffer.insert_range()을 사용할 수 있습니다.

태그가있는 텍스트를 다른 프로그램에서 읽을 수있는 형식으로 저장해야하는 경우 RTF와의 GTK 텍스트 버퍼 직렬화기를 사용하여 라이브러리를 작성했습니다. 그래도 파이썬 바인딩은 없습니다. 그러나 어떤 경우이든 코드는 serializer 기능을 사용하는 좋은 예입니다. 링크 : Osxcart

+0

주로 사용자 text + 태그를 저장 /로드하는 데 관심이 있습니다. pickle을 파일 형식으로 사용하고 있습니다. launchpad.net/kabikaboo를 참조하십시오. – user129975