TextView etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
TextView etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

22 Ağustos 2008 Cuma

Gtk - TextView

İlk yazıyı okuduysanız gtk.TextView objesini inceleyerek başlayabiliriz.

TextView widgetini oluşturmak için tek bir fonksiyon bulunur.
gtk.TextView(buffer=None)
Bir TextView yaratıldığında ona arkadaş TextBuffer ve TextTagTable aletleri de ön tanımlı olarak yaratılır. Eğer bu aletlerden halihazırda olanlar kullanılmak istenirse örneğin şu şekilde değiştirme işlemi yapılabilir.
textview.setbuffer(buffer)
TextView içinden TextBuffer nesnesi alınmak istenirse :
buffer = textview.get_buffer()
TextView nesnesinin salt okunur olmasını:
textview.set_editable(setting)
şeklinde sağlayabiliriz. Buradaki setting True ise kullanıcı metni düzenleyebilir ,False ise düzenleyemez. TextView'ın düzenlenebilir olup olmadığını :
is_editable = textview.get_editable()
şeklinde alabiliriz. TextView düzenlenemez halde olduğunda kullanıcıya kürsör göstermenin manası yoktur. O yüzden genelde bu modda iken:
textview.set_cursor_visible(False)
diyerek kürsörün gözükmesine engel olunur.
Gtk TextView daki metnin uzun satırlarının alt satıra geçirilmesi işlemini otomatik olarak yapabilmenizi sağlar. Bunun için sadece
textview.set_wrap_mode(wrap_mode)
kullanmanız yeterlidir. Burada bahsi geçen wrap_mode 3 değer alabilir bunlar :
  • gtk.WRAP_NONE
  • gtk.WRAP_CHAR
  • gtk.WRAP_WORD

değerleridir. İsimleri kendilerini açıkladığı için bunlar tek tek açıklama yapmıyorum.
TextView nesnelerindeki metni hizalamak, ve nasıl hizalandığı bilgisini almak için şu iki metod kullanılır.
textview.set_justification(justification)
justification = textview.get_justification()

Burada bahsi geçen justification 3 değer alabilir, bunlar :
  • gtk.JUSTIFY_LEFT
  • gtk.JUSTIFY_RIGHT
  • gtk.JUSTIFY_CENTER

Not : Eğer metnin otomatik satır bölme modu WRAP_NONE ise hizalama sadece JUSTIFY_LEFT olur.
TextView içindeki taglar öntanımlı hizalama ayarlarının üstüne yazarlar.

TextView ile ilgili diğer özellikler aşağıdaki gibi alınabilir ve ayarlanabilir.

textview.set_left_margin(left_margin)
left_margin = textview.get_left_margin()

textview.set_right_margin(right_margin)
right_margin = textview.get_right_margin()

textview.set_indent(indent)
indent = textview.get_indent()

textview.set_pixels_above_lines(pixels_above_line)
pixels_above_line = textview.get_pixels_above_lines()

textview.set_pixels_below_lines(pixels_below_line)
pixels_below_line = textview.get_pixels_below_lines()

textview.set_pixels_inside_wrap(pixels_inside_wrap)
pixels_inside_wrap = textview.get_pixels_inside_wrap()

textview.set_tabs(tabs)
tabs = textview.get_tabs()


Burada bahsi geçen left_margin, right_margin, indent, pixels_above_lines, pixels_below_lines ve pixels_inside_wrap parametreleri piksel cinsinden belirtilmişlerdir.

Örnek olarak pygtk-demo'içerisindeki TextView başlıklarına bakabilir , buradaki kodu inceleyebilirsiniz.

Kaynak : http://www.pygtk.org/pygtk2tutorial/sec-TextViews.html

Gtk - TextView nesnelerine genel bakış

TextView çok satırlı metin düzenleme işlemlerinde kullanılan bir alettir.

TextBuffer, TextView ile gösterilen metni barındıran taşıyıcıdır.

TextIters, TextBuffer içinde 2 karakter arasında kalan alanı içerir (rö? Sanırım text editörlerdeki seçim şeysi gibi). TextIter aletleri TextBuffer içindeki metin değiştirilene kadar geçerlidir. Bu alet TextBuffer aletleri ile baş edebilmek için kullanılan en önemli alettir.

TextMarks, TextBuffer değiştirildiğinde , içindeki pozisyonları korumak için kullanılır. Bir Mark TextIter gibi 2 karakter arasındaki alanı içerir. Fakat TextBuffer değiştiğinde kendini korur. TextMark'lar anonim yada isimlendirilerek kullanılabilirler. Her TextBuffer öntanımlı olarak isimleri insert ve selection_bound adında 2 adet TextMark'a sahip olarak yaratılır.

TextTags, TextBuffer içinde belli bir alan içerisindeki metin içerisinde değiştirilebilir özellikleri betimler.Her TextBuffer o buffer içinde geçerli tagları taşıyan TextTagTable'a sahiptir. Bı TextTagTable'lar genelliği sağlamak için TextBuffer'lar arasında paylaşılabilir.

Bundan sonraki yazılarda bu bahsi geçen nesneleri tek tek inceleyeceğiz.