19 Temmuz 2011 Salı

Konsol Bölümlerini Kapatma

Bugün daha önce yaptığım konsol bölümlendirmelerini  kapatma işini tamamladım.Bu iş basit gibi gözüksede beni çok oyaladı , çünkü iç içe bir çok splitter yerleştirildiğinden kapatacağımız splitterın parentını alma ve bu parent üzerinden çeşitli kontroller yapılması gerekiyordu. Neyse ki bugün tamamlandı.

Bölümleri kapatma işini rekursif olarak yapmam gerektiğini biliyordum fakat bunu tek bir metotla halledemedim, çünkü nedenini bilmediğim bir şekilde shortcut içinde çağrılan fonksiyona parametre gönderildiği zaman shortcut düzgün çalışmadı. Bende bunu iki farklı fonksiyon tanımlayarak hallettim. Tanımladığım ilk fonksiyonda seçilen widgetın parentını alarak splittera ulaştım ve termwidget nesnesini deleteLater() metodunu kullanarak sildim. Sonrasında seçilen splitterı rekursif olarak çağıracağım fonksiyona parametre olarak gönderdim.


def yokedici(self):
        secilenWidget=self.focusWidget().parent()
        secilenSplitter=secilenWidget.parent()
        secilenWidget.deleteLater()
        self.rekursiveDelete(secilenSplitter)

 Rekursif fonksiyonun içinde öncelikle bu splitterın mainwindowa yerleştirilen ilk widget olup olmadığını kontrol ettim ve eğer bu splitter ilk splitter ise splitterı silmeden içine yeni bir termwidget nesnesi oluşturarak fonksiyondan çıktım. Fakat eğer splitter ilk splitter değilse gelen splitterın parentını aldım ve bu splitterı sildim.
Elde ettiğim parent splitterın içinde kaç tane splitter olduğu kontrolunu yaptıktan sonra eğer başka splitter yoksa parent splitterı rekursif fonksiyona parametre olarak gönderdim. Eğer parentın sileceğimiz splitterdan başka splitterı varsa parent splitter içindeki sonraki çocuk splittera fareyi odaklayarak  fonksiyondan çıktım.


parent=gelenSplitter.parent()
            gelenSplitter.deleteLater()
            if(parent.count()==1):
                self.rekursiveDelete(parent)
            print "splitter siliniyor"
            parent.focusPreviousChild()
Bu aşamada cink konsolu ile ilgili yapılacak sağ tıklama ve konsolun f12 ile açılması işleri kaldı. Bu işlerinde  kısa zamanda tamamlanacağını düşünüyorum.

Hiç yorum yok:

Yorum Gönder