Revision: 23115
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23115
Author:   theeth
Date:     2009-09-10 22:41:18 +0200 (Thu, 10 Sep 2009)

Log Message:
-----------
operator to fetch frames from a job in the list, decorator for rna registration

Modified Paths:
--------------
    branches/blender2.5/blender/release/io/netrender/client.py
    branches/blender2.5/blender/release/io/netrender/operators.py
    branches/blender2.5/blender/release/io/netrender/ui.py
    branches/blender2.5/blender/release/io/netrender/utils.py

Modified: branches/blender2.5/blender/release/io/netrender/client.py
===================================================================
--- branches/blender2.5/blender/release/io/netrender/client.py  2009-09-10 
20:31:15 UTC (rev 23114)
+++ branches/blender2.5/blender/release/io/netrender/client.py  2009-09-10 
20:41:18 UTC (rev 23115)
@@ -120,9 +120,10 @@
        
        return job_id
 
-def clientRequestResult(conn, scene, job_id):
-       conn.request("GET", "render", headers={"job-id": job_id, 
"job-frame":str(scene.current_frame)})
+def requestResult(conn, job_id, frame):
+       conn.request("GET", "render", headers={"job-id": job_id, 
"job-frame":str(frame)})
 
+...@rnatype
 class NetworkRenderEngine(bpy.types.RenderEngine):
        __idname__ = 'NET_RENDER'
        __label__ = "Network Render"
@@ -164,17 +165,17 @@
                        
                        self.update_stats("", "Network render waiting for 
results")
                        
-                       clientRequestResult(conn, scene, job_id)
+                       requestResult(conn, job_id, scene.current_frame)
                        response = conn.getresponse()
                        
                        if response.status == http.client.NO_CONTENT:
                                netsettings.job_id = clientSendJob(conn, scene)
-                               clientRequestResult(conn, scene, job_id)
+                               requestResult(conn, job_id, scene.current_frame)
                        
                        while response.status == http.client.ACCEPTED and not 
self.test_break():
                                print("waiting")
                                time.sleep(1)
-                               clientRequestResult(conn, scene, job_id)
+                               requestResult(conn, job_id, scene.current_frame)
                                response = conn.getresponse()
        
                        if response.status != http.client.OK:
@@ -200,5 +201,3 @@
                        
                        conn.close()
 
-bpy.types.register(NetworkRenderEngine)
-

Modified: branches/blender2.5/blender/release/io/netrender/operators.py
===================================================================
--- branches/blender2.5/blender/release/io/netrender/operators.py       
2009-09-10 20:31:15 UTC (rev 23114)
+++ branches/blender2.5/blender/release/io/netrender/operators.py       
2009-09-10 20:41:18 UTC (rev 23115)
@@ -6,6 +6,7 @@
 import netrender.client as client
 import netrender.model
 
+...@rnaoperator
 class RENDER_OT_netclientsend(bpy.types.Operator):
        '''
        Operator documentation text, will be used for the operator tooltip and 
python docs.
@@ -35,6 +36,7 @@
        def invoke(self, context, event):
                return self.execute(context)
 
+...@rnaoperator
 class RENDER_OT_netclientstatus(bpy.types.Operator):
        '''Operator documentation text, will be used for the operator tooltip 
and python docs.'''
        __idname__ = "render.netclientstatus"
@@ -79,6 +81,7 @@
        def invoke(self, context, event):
                return self.execute(context)
 
+...@rnaoperator
 class RENDER_OT_netclientblacklistslave(bpy.types.Operator):
        '''Operator documentation text, will be used for the operator tooltip 
and python docs.'''
        __idname__ = "render.netclientblacklistslave"
@@ -113,6 +116,7 @@
        def invoke(self, context, event):
                return self.execute(context)
 
+...@rnaoperator
 class RENDER_OT_netclientwhitelistslave(bpy.types.Operator):
        '''Operator documentation text, will be used for the operator tooltip 
and python docs.'''
        __idname__ = "render.netclientwhitelistslave"
@@ -148,6 +152,7 @@
                return self.execute(context)
 
 
+...@rnaoperator
 class RENDER_OT_netclientslaves(bpy.types.Operator):
        '''Operator documentation text, will be used for the operator tooltip 
and python docs.'''
        __idname__ = "render.netclientslaves"
@@ -197,6 +202,7 @@
        def invoke(self, context, event):
                return self.execute(context)
 
+...@rnaoperator
 class RENDER_OT_netclientcancel(bpy.types.Operator):
        '''Operator documentation text, will be used for the operator tooltip 
and python docs.'''
        __idname__ = "render.netclientcancel"
@@ -228,9 +234,52 @@
        def invoke(self, context, event):
                return self.execute(context)
        
-bpy.ops.add(RENDER_OT_netclientsend)
-bpy.ops.add(RENDER_OT_netclientstatus)
-bpy.ops.add(RENDER_OT_netclientslaves)
-bpy.ops.add(RENDER_OT_netclientblacklistslave)
-bpy.ops.add(RENDER_OT_netclientwhitelistslave)
-bpy.ops.add(RENDER_OT_netclientcancel)
\ No newline at end of file
+...@rnaoperator
+class netclientdownload(bpy.types.Operator):
+       '''Operator documentation text, will be used for the operator tooltip 
and python docs.'''
+       __idname__ = "render.netclientdownload"
+       __label__ = "Net Render Client Download"
+       
+       # List of operator properties, the attributes will be assigned
+       # to the class instance from the operator settings before calling.
+       
+       __props__ = []
+       
+       def poll(self, context):
+               netsettings = context.scene.network_render
+               return netsettings.active_job_index >= 0 and 
len(netsettings.jobs) > 0
+               
+       def execute(self, context):
+               netsettings = context.scene.network_render
+               rd = context.scene.render_data
+               
+               conn = clientConnection(context.scene)
+               
+               if conn:
+                       job = 
bpy.data.netrender_jobs[netsettings.active_job_index]
+                       
+                       for frame in job.frames:
+                               client.requestResult(conn, job.id, frame.number)
+                               response = conn.getresponse()
+               
+                               if response.status != http.client.OK:
+                                       print("missing", frame.number)
+                                       continue
+                               
+                               print("got back", frame.number)
+                               
+                               f = open(netsettings.path + "%06d" % 
frame.number + ".exr", "wb")
+                               buf = response.read(1024)
+                               
+                               while buf:
+                                       f.write(buf)
+                                       buf = response.read(1024)
+                               
+                               f.close()
+                       
+                       conn.close()
+               
+               return ('FINISHED',)
+       
+       def invoke(self, context, event):
+               return self.execute(context)
\ No newline at end of file

Modified: branches/blender2.5/blender/release/io/netrender/ui.py
===================================================================
--- branches/blender2.5/blender/release/io/netrender/ui.py      2009-09-10 
20:31:15 UTC (rev 23114)
+++ branches/blender2.5/blender/release/io/netrender/ui.py      2009-09-10 
20:41:18 UTC (rev 23115)
@@ -28,6 +28,7 @@
                return (rd.use_game_engine==False) and (rd.engine in 
self.COMPAT_ENGINES)
 
 # Setting panel, use in the scene for now.
+...@rnatype
 class SCENE_PT_network_settings(RenderButtonsPanel):
        __label__ = "Network Settings"
        COMPAT_ENGINES = set(['NET_RENDER'])
@@ -57,8 +58,8 @@
                        col.itemR(scene.network_render, "priority")
                        col.itemR(scene.network_render, "job_name")
                        col.itemO("render.netclientsend", text="send job to 
server")
-bpy.types.register(SCENE_PT_network_settings)
 
+...@rnatype
 class SCENE_PT_network_slaves(RenderButtonsPanel):
        __label__ = "Slaves Status"
        COMPAT_ENGINES = set(['NET_RENDER'])
@@ -96,8 +97,7 @@
                        layout.itemL(text="Seen: " + 
time.ctime(slave.last_seen))
                        layout.itemL(text="Stats: " + slave.stats)
 
-bpy.types.register(SCENE_PT_network_slaves)
-
+...@rnatype
 class SCENE_PT_network_slaves_blacklist(RenderButtonsPanel):
        __label__ = "Slaves Blacklist"
        COMPAT_ENGINES = set(['NET_RENDER'])
@@ -133,9 +133,8 @@
                        layout.itemL(text="Address: " + slave.address[0])
                        layout.itemL(text="Seen: " + slave.last_seen)
                        layout.itemL(text="Stats: " + time.ctime(slave.stats))
-                       
-bpy.types.register(SCENE_PT_network_slaves_blacklist)
 
+...@rnatype
 class SCENE_PT_network_jobs(RenderButtonsPanel):
        __label__ = "Jobs"
        COMPAT_ENGINES = set(['NET_RENDER'])
@@ -158,6 +157,7 @@
                subcol = col.column(align=True)
                subcol.itemO("render.netclientstatus", 
icon="ICON_FILE_REFRESH", text="")
                subcol.itemO("render.netclientcancel", icon="ICON_ZOOMOUT", 
text="")
+               subcol.itemO("render.netclientdownload", 
icon='ICON_RENDER_ANIMATION', text="")
 
                if len(bpy.data.netrender_jobs) == 0 and len(netsettings.jobs) 
> 0:
                        while(len(netsettings.jobs) > 0):
@@ -172,22 +172,19 @@
                        layout.itemL(text="Length: %04i" % len(job))
                        layout.itemL(text="Done: %04i" % job.results[DONE])
                        layout.itemL(text="Error: %04i" % job.results[ERROR])
-                       
-bpy.types.register(SCENE_PT_network_jobs)
 
+...@rnatype
 class NetRenderSettings(bpy.types.IDPropertyGroup):
        pass
 
+...@rnatype
 class NetRenderSlave(bpy.types.IDPropertyGroup):
        pass
 
+...@rnatype
 class NetRenderJob(bpy.types.IDPropertyGroup):
        pass
 
-bpy.types.register(NetRenderSettings)
-bpy.types.register(NetRenderSlave)
-bpy.types.register(NetRenderJob)
-
 bpy.types.Scene.PointerProperty(attr="network_render", type=NetRenderSettings, 
name="Network Render", description="Network Render Settings")
 
 NetRenderSettings.StringProperty( attr="server_address",

Modified: branches/blender2.5/blender/release/io/netrender/utils.py
===================================================================
--- branches/blender2.5/blender/release/io/netrender/utils.py   2009-09-10 
20:31:15 UTC (rev 23114)
+++ branches/blender2.5/blender/release/io/netrender/utils.py   2009-09-10 
20:41:18 UTC (rev 23115)
@@ -13,6 +13,14 @@
 DONE = 2
 ERROR = 3
 
+def rnaType(rna_type):
+       bpy.types.register(rna_type)
+       return rna_type
+
+def rnaOperator(rna_op):
+       bpy.ops.add(rna_op)
+       return rna_op
+
 def clientConnection(scene):
                netrender = scene.network_render
                


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to