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 import base64
00030 import os
00031 import tempfile
00032 
00033 from Koo.Fields.AbstractFieldWidget import *
00034 from PyQt4.QtCore import *
00035 from PyQt4.QtGui import *
00036 from PyQt4.uic import *
00037 
00038 from Koo.Common import Common
00039 
00040 (LinkFieldWidgetUi, LinkFieldWidgetBase) = loadUiType( Common.uiPath('link.ui') ) 
00041 
00042 class LinkFieldWidget(AbstractFieldWidget, LinkFieldWidgetUi):
00043         def __init__(self, parent, model, attrs={}):
00044                 AbstractFieldWidget.__init__(self, parent, model, attrs)
00045                 LinkFieldWidgetUi.__init__(self)
00046                 self.setupUi(self)
00047                 self.connect( self.pushOpen, SIGNAL('clicked()'), self.open )
00048                 self.installPopupMenu( self.uiText )
00049                 
00050         def setReadOnly(self, value):
00051                 AbstractFieldWidget.setReadOnly(self, value)
00052                 self.uiText.setReadOnly( value )
00053                 self.pushOpen.setEnabled( not value )
00054 
00055         def menuEntries(self):
00056                 pix = QPixmap()
00057                 if self.record.value(self.name):
00058                         enableApplication = True
00059                 else:
00060                         enableApplication = False
00061 
00062                 return [ (_('Open...'), self.openApplication, enableApplication) ]
00063 
00064         def openApplication(self):
00065                 fileName = self.record.value(self.name)
00066                 if not fileName:
00067                         return
00068                 Common.openFile( fileName )
00069 
00070         def open(self):
00071                 filename = QFileDialog.getOpenFileName(self, _('Select the file to link to'))
00072                 if filename.isNull():
00073                         return
00074                 self.record.setValue(self.name, unicode(filename) )
00075 
00076         def showValue(self):
00077                 value = self.record.value( self.name )
00078                 if value:
00079                         self.uiText.setText( value )
00080                 else:
00081                         self.clear()
00082 
00083         def clear(self):
00084                 self.uiText.clear()
00085 
00086         
00087         def storeValue(self):
00088                 pass
00089 
00090         def colorWidget(self):
00091                 return self.uiText
00092