netrender: split off job settings in their own panel. Add button to open up web interface in a browser.
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user