def initView(self):
     self.textSelector.setFocus()
     self.textView = KuraTextCanvas(self)
     
     self.connect(self.textView,
                  PYSIGNAL("sigItemOpened"),
                  self.slotItemOpened)
class KuraTextListView(QSplitter):

    def __init__(self, parent, searchRec):
        QSplitter.__init__(self, parent)

        self.textSelector=kuraTextSelector(searchRec,
                                           self)
       
        self.setResizeMode(self.textSelector,
                           QSplitter.KeepSize)

        # listbox connections
        self.connect(self.textSelector,
                     PYSIGNAL("sigRecordSelected"), 
                     self.slotSelectText)
        
        self.connect(self.textSelector,
                     PYSIGNAL("sigFindRecord"), 
                     self.find)

        self.connect(self.textSelector,
                     PYSIGNAL("sigCreateNewItem"), 
                     self.slotNewText)
        
        self.connect(self.textSelector,
                     PYSIGNAL("sigItemDeleted"), 
                     self.slotDeleteText)

        self.initView()
        self.setSizes([guiConf.textselectorwidth])

    def initView(self):
        self.textSelector.setFocus()
        self.textView = KuraTextCanvas(self)
        
        self.connect(self.textView,
                     PYSIGNAL("sigItemOpened"),
                     self.slotItemOpened)

    def getCurrentQuery(self):
        record, lvi = self.textSelector.currentRecord()
        return record
                
    def slotSelectText(self, text, lvi):
        QApplication.setOverrideCursor(Qt.waitCursor)
        self.textView.setTextByNumber(text.getFieldValue("textnr"))
        self.textView.setFocus()
        QApplication.restoreOverrideCursor()
                                                                    
    def __openText(self, item, record):
        self.dlgOpen=dlgText(app=kuraapp.app,
                             parent=self,
                             title='Edit Text',
                             firstTabTitle="Text", record=record,
                             mode= UPDATE,
                             tableDef=kuraapp.app.tables["lng_text"])
        self.connect(self.dlgOpen,
                     PYSIGNAL("sigAcceptData"),
                     self.slotOpenTextAccept)
        self.dlgOpen.show()
        
    def slotOpenTextAccept(self):
        rec = self.dlgOpen.getMasterRecord()
        self.textView.setItemText(rec.title)
        self.textView.update()
 
    def __openStream(self, item, record):
        self.dlgOpen=dlgStream(kuraapp.app, self, 'Edit Stream', "Stream", 
                             record,UPDATE, kuraapp.app.tables["lng_stream"])
        self.connect(self.dlgOpen,
                     PYSIGNAL("sigAcceptData"),
                     self.slotOpenStreamAccept)
        self.dlgOpen.show()
        
    def slotOpenStreamAccept(self):
        rec=self.dlgOpen.getMasterRecord()
        self.textView.update()
        
    def __openElement(self, item, record):
        self.dlgOpen=dlgElement(kuraapp.app, self, 'Edit Element', "Element", 
                                record, UPDATE,
                                kuraapp.app.tables["lng_element"])
        self.connect(self.dlgOpen,
                     PYSIGNAL("sigAcceptData"),
                     self.slotOpenElementAccept)
        self.dlgOpen.show()

        
    def slotOpenElementAccept(self):
        rec = self.dlgOpen.getMasterRecord()
        self.textView.setItemText(rec.text)

    def __openTag(self, item, record, title):
        self.dlgOpen=dlgTag( parent=self
                             , title=title
                             , parentTableName=record.table
                             , record=record
                             )
        self.connect(self.dlgOpen,
                     PYSIGNAL("sigAcceptData"),
                     self.openTagAccept)
        self.dlgOpen.show()
        
    def openTagAccept(self):
        rec=self.dlgOpen.getMasterRecord()
        self.textView.setItemText(rec.getDescription())
        self.textView.update()
        
    def slotItemOpened(self, item):
        record = item.getRecord()
        if isinstance(record, lng_stream):        
             self.__openStream(item, record)
        elif isinstance(record, lng_text):
             self.__openText(item, record)
        elif isinstance(record, lng_element):
             self.__openElement(item, record)
        elif isinstance(record, lng_element_tag):
            self.__openTag(item, record, "Edit word tag " + record.tag)
        elif isinstance(record, lng_stream_tag):
            self.__openTag(item, record, "Edit sentence tag " + record.tag)
        elif isinstance(record, lng_text_tag):
            self.__openTag(item, record, "Edit text tag " + record.tag)

    def refresh(self, searchRec):
        self.setCursor(Qt.waitCursor)
        self.textSelector.refresh(searchRec)
        self.textView.clear()
        self.setCursor(Qt.arrowCursor)    
                
    def find(self):
        if guiConf.useDefaultForSearch == True:
            record=kuraapp.app.createDefaultObject("lng_text")
        else:
            record=kuraapp.app.createObject("lng_text", fields={})

        self.dlgSearch=guiTabDialog(kuraapp.app, self, "Find", "Text",
                                    record, SEARCH,
                                    kuraapp.app.tables["lng_text"],
                                    showChildren=False)
            
        self.connect(self.dlgSearch,
                     PYSIGNAL("sigAcceptData"),
                     self.slotFindAccept)
        self.dlgSearch.show()

    def slotFindAccept(self):
        self.refresh(self.dlgSearch.getMasterRecord() )
     
    def new(self):
        self.textView.clear()
        self.textSelector.slotNewItem()
    
    def slotNewText(self, defaultRec):
        self.dlgNew=dlgNewText(self)
        self.connect(self.dlgNew,
                     PYSIGNAL("sigAcceptData"),
                     self.slotNewTextAccept)
        self.dlgNew.show()
        
    def slotNewTextAccept(self):
        record=kuraapp.app.getObject("lng_text",
                                    textnr=self.dlgNew.recText.textnr)
        self.textSelector.slotAddItem(record)
    
    def open(self):
        try:        
            record, lvi=self.textSelector.currentRecord()
        except TypeError:
            # nothing selected
            return
            
        
        self.dlgOpen=dlgText(kuraapp.app, self, 'Edit Text', "Text", 
                             record, UPDATE, kuraapp.app.tables["lng_text"])
        self.connect(self.dlgOpen,
                     PYSIGNAL("sigAcceptData"),
                     self.slotOpenAccept)
        self.dlgOpen.show()
        
    def slotOpenAccept(self):
        rec, lvi=self.textSelector.currentRecord()
        rec = self.dlgOpen.getMasterRecord()
        self.textSelector.slotUpdateItem(rec, lvi)
        
    def delete(self):
        self.textSelector.slotDeleteItem()
        
    def slotDeleteText(self):
        try:
            self.textview.clear()
        except:
            pass

    def keyPressEvent(self, e):
        if e.key()==Qt.Key_F2:
            if guiConf.textSortCriterion=="filter":
                self.find()