netrender: split off job settings in their own panel. Add button to open up web interface in a browser.

This commit is contained in:
Martin Poirier
2009-09-26 19:50:59 +00:00
parent 128dba3329
commit 7af92d6eff
2 changed files with 64 additions and 14 deletions

View File

@@ -1,6 +1,7 @@
import bpy
import sys, os
import http, http.client, http.server, urllib, socket
import webbrowser
from netrender.utils import *
import netrender.client as client
@@ -369,13 +370,13 @@ class netclientscan(bpy.types.Operator):
def execute(self, context):
netsettings = context.scene.network_render
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
s.settimeout(30)
s.bind(('', 8000))
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
s.settimeout(30)
s.bind(('', 8000))
buf, address = s.recvfrom(64)
print("received:", buf)
@@ -389,3 +390,34 @@ class netclientscan(bpy.types.Operator):
def invoke(self, context, event):
return self.execute(context)
@rnaOperator
class netclientweb(bpy.types.Operator):
'''Operator documentation text, will be used for the operator tooltip and python docs.'''
__idname__ = "render.netclientweb"
__label__ = "Net Render Client Web"
# List of operator properties, the attributes will be assigned
# to the class instance from the operator settings before calling.
__props__ = []
def poll(self, context):
return True
def execute(self, context):
netsettings = context.scene.network_render
# open connection to make sure server exists
conn = clientConnection(context.scene)
if conn:
conn.close()
webbrowser.open("http://%s:%i" % (netsettings.server_address, netsettings.server_port))
return ('FINISHED',)
def invoke(self, context, event):
return self.execute(context)

View File

@@ -48,9 +48,6 @@ class SCENE_PT_network_settings(RenderButtonsPanel):
col = split.column()
if scene.network_render.mode == "RENDER_CLIENT":
col.itemO("render.netclientanim", icon='ICON_RENDER_ANIMATION', text="Animaton on network")
col.itemR(scene.network_render, "mode")
col.itemR(scene.network_render, "path")
col.itemR(scene.network_render, "server_address")
@@ -60,12 +57,33 @@ class SCENE_PT_network_settings(RenderButtonsPanel):
col.itemR(scene.network_render, "server_broadcast")
else:
col.itemO("render.netclientscan", icon="ICON_FILE_REFRESH", text="")
@rnaType
class SCENE_PT_network_job(RenderButtonsPanel):
__label__ = "Job Settings"
COMPAT_ENGINES = set(['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
rd = scene.render_data
if scene.network_render.mode == "RENDER_CLIENT":
col.itemO("render.netclientsend", text="send job to server")
col.itemR(scene.network_render, "job_name")
col.itemR(scene.network_render, "priority")
col.itemR(scene.network_render, "chunks")
layout.active = True
split = layout.split()
col = split.column()
col.itemO("render.netclientanim", icon='ICON_RENDER_ANIMATION', text="Animaton on network")
col.itemO("render.netclientsend", icon="ICON_FILE_BLEND", text="Send job")
col.itemO("render.netclientweb", icon="ICON_QUESTION", text="Open Master Monitor")
col.itemR(scene.network_render, "job_name")
col.itemR(scene.network_render, "priority")
col.itemR(scene.network_render, "chunks")
@rnaType
class SCENE_PT_network_slaves(RenderButtonsPanel):