00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 from Koo.Common import Shortcuts
00030
00031 from Koo.Fields.TranslationDialog import *
00032 from Koo.Fields.AbstractFieldWidget import *
00033 from PyQt4.QtCore import *
00034 from PyQt4.QtGui import *
00035
00036 class TextBoxFieldWidget(AbstractFieldWidget):
00037 def __init__(self, parent, model, attrs={}):
00038 AbstractFieldWidget.__init__(self, parent, model, attrs)
00039 self.uiText = QTextEdit( self )
00040 self.uiText.setSizePolicy( QSizePolicy.Preferred, QSizePolicy.Expanding )
00041 self.uiText.setTabChangesFocus( True )
00042 self.uiText.setAcceptRichText( False )
00043 self.installPopupMenu( self.uiText )
00044 layout = QHBoxLayout( self )
00045 layout.setContentsMargins( 0, 0, 0, 0 )
00046 layout.addWidget( self.uiText )
00047 if attrs.get('translate', False):
00048 pushTranslate = QToolButton( self )
00049 pushTranslate.setIcon( QIcon( ':/images/locale.png' ) )
00050 pushTranslate.setFocusPolicy( Qt.NoFocus )
00051 layout.addWidget( pushTranslate )
00052 self.connect( pushTranslate, SIGNAL('clicked()'), self.translate )
00053
00054 self.scTranslate = QShortcut( self.uiText )
00055 self.scTranslate.setKey( Shortcuts.SearchInField )
00056 self.scTranslate.setContext( Qt.WidgetShortcut )
00057 self.connect( self.scTranslate, SIGNAL('activated()'), self.translate )
00058
00059 def translate(self):
00060 if not self.record.id:
00061 QMessageBox.information( self, _('Translation dialog'), _('You must save the resource before adding translations'))
00062 return
00063 dialog = TranslationDialog( self.record.id, self.record.group.resource, self.attrs['name'], unicode(self.uiText.toPlainText()), TranslationDialog.TextEdit, self )
00064 if dialog.exec_() == QDialog.Accepted:
00065 self.uiText.setPlainText( dialog.result )
00066
00067 def setReadOnly(self, value):
00068 AbstractFieldWidget.setReadOnly(self, value)
00069 self.uiText.setReadOnly( value )
00070
00071 def colorWidget(self):
00072 return self.uiText
00073
00074 def storeValue(self):
00075 self.record.setValue(self.name, unicode( self.uiText.document().toPlainText() ) or False )
00076
00077 def clear(self):
00078 self.uiText.clear()
00079
00080 def showValue(self):
00081 vScroll = self.uiText.verticalScrollBar().value()
00082 hScroll = self.uiText.horizontalScrollBar().value()
00083 position = self.uiText.textCursor().position()
00084 value = self.record.value(self.name)
00085 if not value:
00086 self.uiText.clear()
00087 else:
00088 self.uiText.setPlainText( value )
00089 cursor = self.uiText.textCursor()
00090 cursor.setPosition( position )
00091 self.uiText.setTextCursor( cursor )
00092 self.uiText.verticalScrollBar().setValue( vScroll )
00093 self.uiText.horizontalScrollBar().setValue( hScroll )
00094