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 from Koo import Rpc
00031 from PyQt4.QtGui import *
00032 from PyQt4.QtCore import *
00033 from PyQt4.uic import *
00034 from Koo.Plugins import Plugins
00035 from Koo.Screen.Screen import *
00036 from Koo.Dialogs import FormWidget
00037
00038
00039 def createScreenshots(model, id, ids, context):
00040 if not ids:
00041 return
00042
00043
00044 screenshot_ids = Rpc.session.execute('/object', 'execute', 'ir.documentation.screenshot', 'search', [('paragraph_id','in',ids),('user_id','=',Rpc.session.uid)])
00045 Rpc.session.execute('/object', 'execute', 'ir.documentation.screenshot', 'unlink', screenshot_ids)
00046
00047
00048 view_ids = Rpc.session.execute('/object', 'execute', 'ir.documentation.view', 'search', [('paragraph_id','in',ids)])
00049 views = Rpc.session.execute('/object', 'execute', 'ir.documentation.view', 'read', view_ids, ['paragraph_id','reference','view_id','field'], context)
00050
00051 for view in views:
00052 if not view['view_id']:
00053 continue
00054
00055 reference = view['reference']
00056 paragraph_id = view['paragraph_id'][0]
00057 view_id = view['view_id'][0]
00058 field = view['field']
00059
00060 record = Rpc.session.execute('/object', 'execute', 'ir.ui.view', 'read', [view_id], ['model','type'], context)[0]
00061
00062 widget = FormWidget.FormWidget( record['model'], view_type=[ record['type'] ], view_ids=[view_id], context=context )
00063 if field:
00064 widget.screen.currentView().ensureFieldVisible( field )
00065 widget.setFixedSize( 800, 600 )
00066 widget.ensurePolished()
00067 widget.show()
00068 pixmap = QPixmap.grabWidget( widget )
00069 widget.hide()
00070
00071 Rpc.session.execute('/object', 'execute', 'ir.documentation.screenshot', 'create', {
00072 'paragraph_id': paragraph_id,
00073 'view_id': view_id,
00074 'user_id': Rpc.session.uid,
00075 'reference': reference,
00076 'field': field,
00077 'image': base64.encodestring( pixmapToData( pixmap ) )
00078 }, context)
00079
00080 def pixmapToData(pixmap):
00081 if pixmap.isNull():
00082 return False
00083 bytes = QByteArray()
00084 buffer = QBuffer(bytes);
00085 buffer.open(QIODevice.WriteOnly);
00086 pixmap.save(buffer, "PNG")
00087 return str(bytes)
00088
00089 Plugins.register( 'screendocs', 'ir.documentation.paragraph', _('Create Screenshots'), createScreenshots)