2008年2月21日 星期四

Gtk TextView筆記事項

英文文件連結

閱讀筆記:

character的計算是offsets
bytes的計算是indexes

上面兩者如果搞混,在ascii的運作下是沒問題,但是當一個字要用multiple bytes來記的話,就會出現trouble。

text可以用一些tags,標示一個range內的文字的描述。如bold,粗體字。
tags除了表現在文字的呈現上,也可以定義mouse的行為,如lock可以把一段文字鎖起來。

GtkTextTag的物件就是拿來處理tags的物件。

每個GtkTextTag的物件會存在GtkTextTagTable。
每個TextView都會關連一個GtkTextTagTable,而一個GtkTextTagTable可以跟好幾個GtkTextView有關連。

Tags可以有名字,如"bold"是拿來讓字變粗體。但也可以是匿名的(方便產生tags on-the-fly)。

GtkTextIter,一個iterator代表一個位於兩個char的位址值(在text buffer中)。
iterator的值在edit之後,會變化。如insert或是delete字元之後。
GtkTextIter的設計是stack的結構。

To preserve a position, the GtkTextMark object is ideal.

就像tags,mark也可以有名字和匿名。GtkTextBuffer裏內建了兩個mark。分別是"insert"和"selection_bound"。
如果textbuffer中沒有字元被選取的話,兩個的位址會是一樣的。

TextBuffer中至少會存在一行,或是沒有資料。
每行的結尾會有一個line separator(如\n或是\r\n)。
最後一行的結尾是沒有line separator的符號。


文件後面是程式碼的範例…


實作心得筆記:
1. GtkTextView的重繪我不知道怎麼做,所以new了一個TextBuffer,之後把新的buffer跟TextView結合,
那顯示的東西就會自動更新了…

2. 應該是第一次用這東西,和很久沒寫程式了…感覺很笨拙…很難用,想要什麼功能要查半天。
就只是為了拿出一筆資料,卻要找需要的function找半天…大概是為了保護裏面的資料,所以在存取上面還蠻麻煩的。
可能用習慣的人就比較沒差了吧…

3. 開始有些想學windows其它的GUI。gtk是很好用,但是總覺得他的畫面有點醜啊…不知道有沒有介面看起來比較好看的。

沒有留言: