| 
									
										
										
										
											2009-11-01 15:21:20 +00:00
										 |  |  | # ##### BEGIN GPL LICENSE BLOCK ##### | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | #  This program is free software; you can redistribute it and/or | 
					
						
							|  |  |  | #  modify it under the terms of the GNU General Public License | 
					
						
							|  |  |  | #  as published by the Free Software Foundation; either version 2 | 
					
						
							|  |  |  | #  of the License, or (at your option) any later version. | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  | # | 
					
						
							| 
									
										
										
										
											2009-11-01 15:21:20 +00:00
										 |  |  | #  This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  | #  but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  | #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  | #  GNU General Public License for more details. | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  | # | 
					
						
							| 
									
										
										
										
											2009-11-01 15:21:20 +00:00
										 |  |  | #  You should have received a copy of the GNU General Public License | 
					
						
							|  |  |  | #  along with this program; if not, write to the Free Software Foundation, | 
					
						
							|  |  |  | #  Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # ##### END GPL LICENSE BLOCK ##### | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-29 17:25:22 +00:00
										 |  |  | import bpy | 
					
						
							|  |  |  | import sys, os | 
					
						
							|  |  |  | import http, http.client, http.server, urllib | 
					
						
							|  |  |  | import subprocess, shutil, time, hashlib | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-18 18:00:46 +00:00
										 |  |  | import netrender | 
					
						
							| 
									
										
										
										
											2009-08-29 17:25:22 +00:00
										 |  |  | import netrender.slave as slave | 
					
						
							|  |  |  | import netrender.master as master | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-08 01:18:06 +00:00
										 |  |  | from netrender.utils import * | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-29 17:25:22 +00:00
										 |  |  | VERSION = b"0.3" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | PATH_PREFIX = "/tmp/" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | QUEUED = 0 | 
					
						
							|  |  |  | DISPATCHED = 1 | 
					
						
							|  |  |  | DONE = 2 | 
					
						
							|  |  |  | ERROR = 3 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-04 21:05:52 +00:00
										 |  |  | def init_file(): | 
					
						
							|  |  |  |     if netrender.init_file != bpy.data.filename: | 
					
						
							|  |  |  |         netrender.init_file = bpy.data.filename | 
					
						
							|  |  |  |         netrender.init_data = True | 
					
						
							|  |  |  |         netrender.init_address = True | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def init_data(netsettings): | 
					
						
							|  |  |  |     init_file() | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     if netrender.init_data: | 
					
						
							|  |  |  |         netrender.init_data = False | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         netsettings.active_slave_index = 0 | 
					
						
							|  |  |  |         while(len(netsettings.slaves) > 0): | 
					
						
							|  |  |  |             netsettings.slaves.remove(0) | 
					
						
							|  |  |  |                  | 
					
						
							|  |  |  |         netsettings.active_blacklisted_slave_index = 0 | 
					
						
							|  |  |  |         while(len(netsettings.slaves_blacklist) > 0): | 
					
						
							|  |  |  |             netsettings.slaves_blacklist.remove(0) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         netsettings.active_job_index = 0 | 
					
						
							|  |  |  |         while(len(netsettings.jobs) > 0): | 
					
						
							|  |  |  |             netsettings.jobs.remove(0) | 
					
						
							|  |  |  |              | 
					
						
							|  |  |  | def verify_address(netsettings): | 
					
						
							|  |  |  |     init_file() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if netrender.init_address: | 
					
						
							|  |  |  |         netrender.init_address = False | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         try: | 
					
						
							|  |  |  |             conn = clientConnection(netsettings.server_address, netsettings.server_port, scan = False) | 
					
						
							|  |  |  |         except: | 
					
						
							|  |  |  |             conn = None | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         if conn: | 
					
						
							|  |  |  |             conn.close() | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             netsettings.server_address = "[default]" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-29 17:25:22 +00:00
										 |  |  | class RenderButtonsPanel(bpy.types.Panel): | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  |     bl_space_type = "PROPERTIES" | 
					
						
							|  |  |  |     bl_region_type = "WINDOW" | 
					
						
							|  |  |  |     bl_context = "render" | 
					
						
							|  |  |  |     # COMPAT_ENGINES must be defined in each subclass, external engines can add themselves here | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def poll(self, context): | 
					
						
							|  |  |  |         rd = context.scene.render_data | 
					
						
							|  |  |  |         return (rd.use_game_engine==False) and (rd.engine in self.COMPAT_ENGINES) | 
					
						
							| 
									
										
										
										
											2009-08-29 17:25:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Setting panel, use in the scene for now. | 
					
						
							| 
									
										
										
										
											2009-09-10 20:41:18 +00:00
										 |  |  | @rnaType | 
					
						
							| 
									
										
										
										
											2009-10-14 14:45:58 +00:00
										 |  |  | class RENDER_PT_network_settings(RenderButtonsPanel): | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  |     bl_label = "Network Settings" | 
					
						
							|  |  |  |     COMPAT_ENGINES = {'NET_RENDER'} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         layout = self.layout | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         scene = context.scene | 
					
						
							| 
									
										
										
										
											2010-01-04 21:05:52 +00:00
										 |  |  |         netsettings = scene.network_render | 
					
						
							| 
									
										
										
										
											2010-01-05 20:47:23 +00:00
										 |  |  |          | 
					
						
							|  |  |  |         verify_address(netsettings) | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-05 20:47:23 +00:00
										 |  |  |         layout.prop(netsettings, "mode", expand=True) | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-05 20:47:23 +00:00
										 |  |  |         if netsettings.mode in ("RENDER_MASTER", "RENDER_SLAVE"): | 
					
						
							|  |  |  |             layout.operator("render.netclientstart", icon='PLAY') | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-05 20:47:23 +00:00
										 |  |  |         layout.prop(netsettings, "path") | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         split = layout.split(percentage=0.7) | 
					
						
							|  |  |  |          | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  |         col = split.column() | 
					
						
							| 
									
										
										
										
											2010-01-05 20:47:23 +00:00
										 |  |  |         col.label(text="Server Adress:") | 
					
						
							|  |  |  |         col.prop(netsettings, "server_address", text="") | 
					
						
							| 
									
										
										
										
											2010-01-04 21:05:52 +00:00
										 |  |  |              | 
					
						
							| 
									
										
										
										
											2010-01-05 20:47:23 +00:00
										 |  |  |         col = split.column() | 
					
						
							|  |  |  |         col.label(text="Port:") | 
					
						
							|  |  |  |         col.prop(netsettings, "server_port", text="") | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-06 18:56:24 +00:00
										 |  |  |         if netsettings.mode != "RENDER_MASTER": | 
					
						
							| 
									
										
										
										
											2010-01-05 20:47:23 +00:00
										 |  |  |             layout.operator("render.netclientscan", icon='FILE_REFRESH', text="") | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-05 20:47:23 +00:00
										 |  |  |         layout.operator("render.netclientweb", icon='QUESTION') | 
					
						
							| 
									
										
										
										
											2009-12-28 22:49:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-06 18:56:24 +00:00
										 |  |  | @rnaType | 
					
						
							|  |  |  | class RENDER_PT_network_slave_settings(RenderButtonsPanel): | 
					
						
							|  |  |  |     bl_label = "Slave Settings" | 
					
						
							|  |  |  |     COMPAT_ENGINES = {'NET_RENDER'} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def poll(self, context): | 
					
						
							|  |  |  |         scene = context.scene | 
					
						
							|  |  |  |         return (super().poll(context) | 
					
						
							|  |  |  |                 and scene.network_render.mode == "RENDER_SLAVE") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         layout = self.layout | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         scene = context.scene | 
					
						
							| 
									
										
										
										
											2010-01-08 17:52:21 +00:00
										 |  |  |         rd = scene.render_data | 
					
						
							| 
									
										
										
										
											2010-01-06 18:56:24 +00:00
										 |  |  |         netsettings = scene.network_render | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         layout.prop(netsettings, "slave_clear") | 
					
						
							| 
									
										
										
										
											2010-01-09 18:21:27 +00:00
										 |  |  |         layout.prop(netsettings, "slave_thumb") | 
					
						
							| 
									
										
										
										
											2010-01-08 17:52:21 +00:00
										 |  |  |         layout.label(text="Threads:") | 
					
						
							|  |  |  |         layout.prop(rd, "threads_mode", expand=True) | 
					
						
							|  |  |  |         sub = layout.column() | 
					
						
							|  |  |  |         sub.enabled = rd.threads_mode == 'THREADS_FIXED' | 
					
						
							|  |  |  |         sub.prop(rd, "threads")         | 
					
						
							| 
									
										
										
										
											2010-01-06 18:56:24 +00:00
										 |  |  | @rnaType | 
					
						
							|  |  |  | class RENDER_PT_network_master_settings(RenderButtonsPanel): | 
					
						
							|  |  |  |     bl_label = "Master Settings" | 
					
						
							|  |  |  |     COMPAT_ENGINES = {'NET_RENDER'} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def poll(self, context): | 
					
						
							|  |  |  |         scene = context.scene | 
					
						
							|  |  |  |         return (super().poll(context) | 
					
						
							|  |  |  |                 and scene.network_render.mode == "RENDER_MASTER") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         layout = self.layout | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         scene = context.scene | 
					
						
							|  |  |  |         netsettings = scene.network_render | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         layout.prop(netsettings, "master_broadcast") | 
					
						
							|  |  |  |         layout.prop(netsettings, "master_clear") | 
					
						
							|  |  |  |          | 
					
						
							| 
									
										
										
										
											2009-09-26 19:50:59 +00:00
										 |  |  | @rnaType | 
					
						
							| 
									
										
										
										
											2009-10-14 14:45:58 +00:00
										 |  |  | class RENDER_PT_network_job(RenderButtonsPanel): | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  |     bl_label = "Job Settings" | 
					
						
							|  |  |  |     COMPAT_ENGINES = {'NET_RENDER'} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def poll(self, context): | 
					
						
							|  |  |  |         scene = context.scene | 
					
						
							|  |  |  |         return (super().poll(context) | 
					
						
							|  |  |  |                 and scene.network_render.mode == "RENDER_CLIENT") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         layout = self.layout | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         scene = context.scene | 
					
						
							| 
									
										
										
										
											2010-01-04 21:05:52 +00:00
										 |  |  |         netsettings = scene.network_render | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-04 21:05:52 +00:00
										 |  |  |         verify_address(netsettings) | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         if netsettings.server_address != "[default]": | 
					
						
							| 
									
										
										
										
											2010-01-05 20:47:23 +00:00
										 |  |  |             layout.operator("render.netclientanim", icon='RENDER_ANIMATION') | 
					
						
							|  |  |  |             layout.operator("render.netclientsend", icon='FILE_BLEND') | 
					
						
							| 
									
										
										
										
											2010-01-04 21:05:52 +00:00
										 |  |  |             if netsettings.job_id: | 
					
						
							| 
									
										
										
										
											2010-01-05 20:47:23 +00:00
										 |  |  |                 row = layout.row() | 
					
						
							|  |  |  |                 row.operator("screen.render", text="Get Image", icon='RENDER_STILL') | 
					
						
							|  |  |  |                 row.operator("screen.render", text="Get Animation", icon='RENDER_ANIMATION').animation = True | 
					
						
							|  |  |  |                  | 
					
						
							|  |  |  |         split = layout.split(percentage=0.3) | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         col = split.column() | 
					
						
							|  |  |  |         col.label(text="Name:") | 
					
						
							|  |  |  |         col.label(text="Category:") | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         col = split.column() | 
					
						
							|  |  |  |         col.prop(netsettings, "job_name", text="") | 
					
						
							|  |  |  |         col.prop(netsettings, "job_category", text="") | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         row = layout.row() | 
					
						
							| 
									
										
										
										
											2010-01-04 21:05:52 +00:00
										 |  |  |         row.prop(netsettings, "priority") | 
					
						
							|  |  |  |         row.prop(netsettings, "chunks") | 
					
						
							| 
									
										
										
										
											2009-08-29 17:25:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-10 20:41:18 +00:00
										 |  |  | @rnaType | 
					
						
							| 
									
										
										
										
											2009-10-14 14:45:58 +00:00
										 |  |  | class RENDER_PT_network_slaves(RenderButtonsPanel): | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  |     bl_label = "Slaves Status" | 
					
						
							|  |  |  |     COMPAT_ENGINES = {'NET_RENDER'} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def poll(self, context): | 
					
						
							|  |  |  |         scene = context.scene | 
					
						
							| 
									
										
										
										
											2010-01-04 21:05:52 +00:00
										 |  |  |         netsettings = scene.network_render | 
					
						
							|  |  |  |         verify_address(netsettings) | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  |         return (super().poll(context) | 
					
						
							| 
									
										
										
										
											2010-01-04 21:05:52 +00:00
										 |  |  |                 and netsettings.mode == "RENDER_CLIENT" | 
					
						
							|  |  |  |                 and netsettings.server_address != "[default]") | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         layout = self.layout | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         scene = context.scene | 
					
						
							|  |  |  |         netsettings = scene.network_render | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         row = layout.row() | 
					
						
							|  |  |  |         row.template_list(netsettings, "slaves", netsettings, "active_slave_index", rows=2) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         sub = row.column(align=True) | 
					
						
							|  |  |  |         sub.operator("render.netclientslaves", icon='FILE_REFRESH', text="") | 
					
						
							|  |  |  |         sub.operator("render.netclientblacklistslave", icon='ZOOMOUT', text="") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-04 21:05:52 +00:00
										 |  |  |         init_data(netsettings) | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if netsettings.active_slave_index >= 0 and len(netsettings.slaves) > 0: | 
					
						
							|  |  |  |             layout.separator() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             slave = netrender.slaves[netsettings.active_slave_index] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             layout.label(text="Name: " + slave.name) | 
					
						
							|  |  |  |             layout.label(text="Address: " + slave.address[0]) | 
					
						
							|  |  |  |             layout.label(text="Seen: " + time.ctime(slave.last_seen)) | 
					
						
							|  |  |  |             layout.label(text="Stats: " + slave.stats) | 
					
						
							| 
									
										
										
										
											2009-08-29 17:25:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-10 20:41:18 +00:00
										 |  |  | @rnaType | 
					
						
							| 
									
										
										
										
											2009-10-14 14:45:58 +00:00
										 |  |  | class RENDER_PT_network_slaves_blacklist(RenderButtonsPanel): | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  |     bl_label = "Slaves Blacklist" | 
					
						
							|  |  |  |     COMPAT_ENGINES = {'NET_RENDER'} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def poll(self, context): | 
					
						
							|  |  |  |         scene = context.scene | 
					
						
							| 
									
										
										
										
											2010-01-04 21:05:52 +00:00
										 |  |  |         netsettings = scene.network_render | 
					
						
							|  |  |  |         verify_address(netsettings) | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  |         return (super().poll(context) | 
					
						
							| 
									
										
										
										
											2010-01-04 21:05:52 +00:00
										 |  |  |                 and netsettings.mode == "RENDER_CLIENT" | 
					
						
							|  |  |  |                 and netsettings.server_address != "[default]") | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         layout = self.layout | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         scene = context.scene | 
					
						
							|  |  |  |         netsettings = scene.network_render | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         row = layout.row() | 
					
						
							|  |  |  |         row.template_list(netsettings, "slaves_blacklist", netsettings, "active_blacklisted_slave_index", rows=2) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         sub = row.column(align=True) | 
					
						
							|  |  |  |         sub.operator("render.netclientwhitelistslave", icon='ZOOMOUT', text="") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-04 21:05:52 +00:00
										 |  |  |         init_data(netsettings) | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if netsettings.active_blacklisted_slave_index >= 0 and len(netsettings.slaves_blacklist) > 0: | 
					
						
							|  |  |  |             layout.separator() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             slave = netrender.blacklist[netsettings.active_blacklisted_slave_index] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             layout.label(text="Name: " + slave.name) | 
					
						
							|  |  |  |             layout.label(text="Address: " + slave.address[0]) | 
					
						
							|  |  |  |             layout.label(text="Seen: " + time.ctime(slave.last_seen)) | 
					
						
							|  |  |  |             layout.label(text="Stats: " + slave.stats) | 
					
						
							| 
									
										
										
										
											2009-08-29 17:25:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-10 20:41:18 +00:00
										 |  |  | @rnaType | 
					
						
							| 
									
										
										
										
											2009-10-14 14:45:58 +00:00
										 |  |  | class RENDER_PT_network_jobs(RenderButtonsPanel): | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  |     bl_label = "Jobs" | 
					
						
							|  |  |  |     COMPAT_ENGINES = {'NET_RENDER'} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def poll(self, context): | 
					
						
							|  |  |  |         scene = context.scene | 
					
						
							| 
									
										
										
										
											2010-01-04 21:05:52 +00:00
										 |  |  |         netsettings = scene.network_render | 
					
						
							|  |  |  |         verify_address(netsettings) | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  |         return (super().poll(context) | 
					
						
							| 
									
										
										
										
											2010-01-04 21:05:52 +00:00
										 |  |  |                 and netsettings.mode == "RENDER_CLIENT" | 
					
						
							|  |  |  |                 and netsettings.server_address != "[default]") | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         layout = self.layout | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         scene = context.scene | 
					
						
							|  |  |  |         netsettings = scene.network_render | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         row = layout.row() | 
					
						
							|  |  |  |         row.template_list(netsettings, "jobs", netsettings, "active_job_index", rows=2) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         sub = row.column(align=True) | 
					
						
							|  |  |  |         sub.operator("render.netclientstatus", icon='FILE_REFRESH', text="") | 
					
						
							|  |  |  |         sub.operator("render.netclientcancel", icon='ZOOMOUT', text="") | 
					
						
							|  |  |  |         sub.operator("render.netclientcancelall", icon='PANEL_CLOSE', text="") | 
					
						
							|  |  |  |         sub.operator("render.netclientdownload", icon='RENDER_ANIMATION', text="") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-04 21:05:52 +00:00
										 |  |  |         init_data(netsettings) | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if netsettings.active_job_index >= 0 and len(netsettings.jobs) > 0: | 
					
						
							|  |  |  |             layout.separator() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             job = netrender.jobs[netsettings.active_job_index] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             layout.label(text="Name: %s" % job.name) | 
					
						
							|  |  |  |             layout.label(text="Length: %04i" % len(job)) | 
					
						
							|  |  |  |             layout.label(text="Done: %04i" % job.results[DONE]) | 
					
						
							|  |  |  |             layout.label(text="Error: %04i" % job.results[ERROR]) | 
					
						
							| 
									
										
										
										
											2009-08-29 17:25:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-10 20:41:18 +00:00
										 |  |  | @rnaType | 
					
						
							| 
									
										
										
										
											2009-08-29 17:25:22 +00:00
										 |  |  | class NetRenderSettings(bpy.types.IDPropertyGroup): | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  |     pass | 
					
						
							| 
									
										
										
										
											2009-08-29 17:25:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-10 20:41:18 +00:00
										 |  |  | @rnaType | 
					
						
							| 
									
										
										
										
											2009-08-29 17:25:22 +00:00
										 |  |  | class NetRenderSlave(bpy.types.IDPropertyGroup): | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  |     pass | 
					
						
							| 
									
										
										
										
											2009-08-29 17:25:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-10 20:41:18 +00:00
										 |  |  | @rnaType | 
					
						
							| 
									
										
										
										
											2009-08-29 17:25:22 +00:00
										 |  |  | class NetRenderJob(bpy.types.IDPropertyGroup): | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  |     pass | 
					
						
							| 
									
										
										
										
											2009-08-29 17:25:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | bpy.types.Scene.PointerProperty(attr="network_render", type=NetRenderSettings, name="Network Render", description="Network Render Settings") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | NetRenderSettings.StringProperty( attr="server_address", | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  |                 name="Server address", | 
					
						
							|  |  |  |                 description="IP or name of the master render server", | 
					
						
							|  |  |  |                 maxlen = 128, | 
					
						
							|  |  |  |                 default = "[default]") | 
					
						
							| 
									
										
										
										
											2009-08-29 17:25:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | NetRenderSettings.IntProperty( attr="server_port", | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  |                 name="Server port", | 
					
						
							|  |  |  |                 description="port of the master render server", | 
					
						
							|  |  |  |                 default = 8000, | 
					
						
							|  |  |  |                 min=1, | 
					
						
							|  |  |  |                 max=65535) | 
					
						
							| 
									
										
										
										
											2009-08-29 17:25:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-06 18:56:24 +00:00
										 |  |  | NetRenderSettings.BoolProperty( attr="master_broadcast", | 
					
						
							|  |  |  |                 name="Broadcast", | 
					
						
							|  |  |  |                 description="broadcast master server address on local network", | 
					
						
							|  |  |  |                 default = True) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | NetRenderSettings.BoolProperty( attr="slave_clear", | 
					
						
							|  |  |  |                 name="Clear on exit", | 
					
						
							|  |  |  |                 description="delete downloaded files on exit", | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  |                 default = True) | 
					
						
							| 
									
										
										
										
											2009-09-15 19:53:18 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-09 18:21:27 +00:00
										 |  |  | NetRenderSettings.BoolProperty( attr="slave_thumb", | 
					
						
							|  |  |  |                 name="Generate thumbnails", | 
					
						
							|  |  |  |                 description="Generate thumbnails on slaves instead of master", | 
					
						
							|  |  |  |                 default = False) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-06 18:56:24 +00:00
										 |  |  | NetRenderSettings.BoolProperty( attr="master_clear", | 
					
						
							|  |  |  |                 name="Clear on exit", | 
					
						
							|  |  |  |                 description="delete saved files on exit", | 
					
						
							|  |  |  |                 default = False) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-04 21:10:51 +00:00
										 |  |  | default_path = os.environ.get("TEMP") | 
					
						
							| 
									
										
										
										
											2009-10-06 21:28:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | if not default_path: | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  |     if os.name == 'nt': | 
					
						
							|  |  |  |         default_path = "c:/tmp/" | 
					
						
							|  |  |  |     else: | 
					
						
							|  |  |  |         default_path = "/tmp/" | 
					
						
							| 
									
										
										
										
											2009-10-06 21:28:45 +00:00
										 |  |  | elif not default_path.endswith(os.sep): | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  |     default_path += os.sep | 
					
						
							| 
									
										
										
										
											2009-10-06 21:28:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | NetRenderSettings.StringProperty( attr="path", | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  |                 name="Path", | 
					
						
							|  |  |  |                 description="Path for temporary files", | 
					
						
							|  |  |  |                 maxlen = 128, | 
					
						
							|  |  |  |                 default = default_path) | 
					
						
							| 
									
										
										
										
											2009-09-01 01:09:05 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-29 17:25:22 +00:00
										 |  |  | NetRenderSettings.StringProperty( attr="job_name", | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  |                 name="Job name", | 
					
						
							|  |  |  |                 description="Name of the job", | 
					
						
							|  |  |  |                 maxlen = 128, | 
					
						
							|  |  |  |                 default = "[default]") | 
					
						
							| 
									
										
										
										
											2009-08-29 17:25:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-10 18:56:21 +00:00
										 |  |  | NetRenderSettings.StringProperty( attr="job_category", | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  |                 name="Job category", | 
					
						
							|  |  |  |                 description="Category of the job", | 
					
						
							|  |  |  |                 maxlen = 128, | 
					
						
							|  |  |  |                 default = "") | 
					
						
							| 
									
										
										
										
											2009-12-10 18:56:21 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-29 17:25:22 +00:00
										 |  |  | NetRenderSettings.IntProperty( attr="chunks", | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  |                 name="Chunks", | 
					
						
							|  |  |  |                 description="Number of frame to dispatch to each slave in one chunk", | 
					
						
							|  |  |  |                 default = 5, | 
					
						
							|  |  |  |                 min=1, | 
					
						
							|  |  |  |                 max=65535) | 
					
						
							| 
									
										
										
										
											2009-08-29 17:25:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-01 01:09:05 +00:00
										 |  |  | NetRenderSettings.IntProperty( attr="priority", | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  |                 name="Priority", | 
					
						
							|  |  |  |                 description="Priority of the job", | 
					
						
							|  |  |  |                 default = 1, | 
					
						
							|  |  |  |                 min=1, | 
					
						
							|  |  |  |                 max=10) | 
					
						
							| 
									
										
										
										
											2009-09-01 01:09:05 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-29 17:25:22 +00:00
										 |  |  | NetRenderSettings.StringProperty( attr="job_id", | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  |                 name="Network job id", | 
					
						
							|  |  |  |                 description="id of the last sent render job", | 
					
						
							|  |  |  |                 maxlen = 64, | 
					
						
							|  |  |  |                 default = "") | 
					
						
							| 
									
										
										
										
											2009-08-29 17:25:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | NetRenderSettings.IntProperty( attr="active_slave_index", | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  |                 name="Index of the active slave", | 
					
						
							|  |  |  |                 description="", | 
					
						
							|  |  |  |                 default = -1, | 
					
						
							|  |  |  |                 min= -1, | 
					
						
							|  |  |  |                 max=65535) | 
					
						
							| 
									
										
										
										
											2009-08-29 17:25:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | NetRenderSettings.IntProperty( attr="active_blacklisted_slave_index", | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  |                 name="Index of the active slave", | 
					
						
							|  |  |  |                 description="", | 
					
						
							|  |  |  |                 default = -1, | 
					
						
							|  |  |  |                 min= -1, | 
					
						
							|  |  |  |                 max=65535) | 
					
						
							| 
									
										
										
										
											2009-08-29 17:25:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | NetRenderSettings.IntProperty( attr="active_job_index", | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  |                 name="Index of the active job", | 
					
						
							|  |  |  |                 description="", | 
					
						
							|  |  |  |                 default = -1, | 
					
						
							|  |  |  |                 min= -1, | 
					
						
							|  |  |  |                 max=65535) | 
					
						
							| 
									
										
										
										
											2009-08-29 17:25:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | NetRenderSettings.EnumProperty(attr="mode", | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  |                         items=( | 
					
						
							|  |  |  |                                         ("RENDER_CLIENT", "Client", "Act as render client"), | 
					
						
							|  |  |  |                                         ("RENDER_MASTER", "Master", "Act as render master"), | 
					
						
							|  |  |  |                                         ("RENDER_SLAVE", "Slave", "Act as render slave"), | 
					
						
							|  |  |  |                                     ), | 
					
						
							|  |  |  |                         name="Network mode", | 
					
						
							|  |  |  |                         description="Mode of operation of this instance", | 
					
						
							|  |  |  |                         default="RENDER_CLIENT") | 
					
						
							| 
									
										
										
										
											2009-08-29 17:25:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | NetRenderSettings.CollectionProperty(attr="slaves", type=NetRenderSlave, name="Slaves", description="") | 
					
						
							|  |  |  | NetRenderSettings.CollectionProperty(attr="slaves_blacklist", type=NetRenderSlave, name="Slaves Blacklist", description="") | 
					
						
							|  |  |  | NetRenderSettings.CollectionProperty(attr="jobs", type=NetRenderJob, name="Job List", description="") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | NetRenderSlave.StringProperty( attr="name", | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  |                 name="Name of the slave", | 
					
						
							|  |  |  |                 description="", | 
					
						
							|  |  |  |                 maxlen = 64, | 
					
						
							|  |  |  |                 default = "") | 
					
						
							| 
									
										
										
										
											2009-08-29 17:25:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | NetRenderJob.StringProperty( attr="name", | 
					
						
							| 
									
										
										
										
											2009-12-29 00:04:57 +00:00
										 |  |  |                 name="Name of the job", | 
					
						
							|  |  |  |                 description="", | 
					
						
							|  |  |  |                 maxlen = 128, | 
					
						
							|  |  |  |                 default = "") |