feat: first+server list UI, ping/pswd unfonctional

This commit is contained in:
Fabian
2021-07-21 11:12:17 +02:00
parent 4846fbb589
commit ac615cd134
6 changed files with 371 additions and 118 deletions

View File

@ -20,6 +20,7 @@ import asyncio
import copy
import gzip
import logging
from multi_user.preferences import ServerPreset
import os
import queue
import random
@ -57,7 +58,7 @@ from replication.repository import Repository
from . import bl_types, environment, shared_data, timers, ui, utils
from .handlers import on_scene_update, sanitize_deps_graph
from .presence import SessionStatusWidget, renderer, view3d_find
from .presence import SessionStatusWidget, renderer, view3d_find, refresh_sidebar_view
from .timers import registry
background_execution_queue = Queue()
@ -928,20 +929,26 @@ class SessionPresetServerAdd(bpy.types.Operator):
bl_description = "add a server to the server preset list"
bl_options = {"REGISTER"}
target_server_name: bpy.props.StringProperty(default="None")
server_name: bpy.props.StringProperty(default="")
server_ip: bpy.props.StringProperty(default="127.0.0.1")
server_port: bpy.props.IntProperty(default=5555)
use_server_password: bpy.props.BoolProperty(default=False)
server_server_password: bpy.props.StringProperty(default="", subtype = "PASSWORD")
use_admin_password: bpy.props.BoolProperty(default=False)
server_admin_password: bpy.props.StringProperty(default="", subtype = "PASSWORD")
@classmethod
def poll(cls, context):
return True
def invoke(self, context, event):
settings = utils.get_preferences()
settings.server_name = ""
settings.ip = "127.0.0.1"
settings.port = 5555
settings.server_password = ""
settings.admin_password = ""
self.server_name = ""
self.server_ip = "127.0.0.1"
self.server_port = 5555
self.use_server_password = False
self.server_server_password = ""
self.use_admin_password = False
self.server_admin_password = ""
assert(context)
return context.window_manager.invoke_props_dialog(self)
@ -951,34 +958,45 @@ class SessionPresetServerAdd(bpy.types.Operator):
settings = utils.get_preferences()
row = layout.row()
row.prop(settings, "server_name", text="Server name")
row.prop(self, "server_name", text="Server name")
row = layout.row(align = True)
row.prop(settings, "ip", text="IP+port")
row.prop(settings, "port", text="")
row.prop(self, "server_ip", text="IP+port")
row.prop(self, "server_port", text="")
row = layout.row()
row.prop(settings, "server_password", text="Server password")
col = row.column()
col.prop(self, "use_server_password", text="Server password:")
col = row.column()
col.enabled = True if self.use_server_password else False
col.prop(self, "server_server_password", text="")
row = layout.row()
row.prop(settings, "admin_password", text="Admin password")
col = row.column()
col.prop(self, "use_admin_password", text="Admin password:")
col = row.column()
col.enabled = True if self.use_admin_password else False
col.prop(self, "server_admin_password", text="")
def execute(self, context):
assert(context)
settings = utils.get_preferences()
existing_preset = settings.server_preset.get(settings.server_name)
existing_preset = settings.get_server_preset(self.server_name)
new_server = existing_preset if existing_preset else settings.server_preset.add()
new_server.name = str(uuid4())
new_server.server_name = settings.server_name
new_server.server_ip = settings.ip
new_server.server_port = settings.port
new_server.server_server_password = settings.server_password
new_server.server_admin_password = settings.admin_password
new_server.server_name = self.server_name
new_server.server_ip = self.server_ip
new_server.server_port = self.server_port
new_server.use_server_password = self.use_server_password
new_server.server_server_password = self.server_server_password
new_server.use_admin_password = self.use_admin_password
new_server.server_admin_password = self.server_admin_password
refresh_sidebar_view()
if new_server == existing_preset :
self.report({'INFO'}, "Server '" + settings.server_name + "' override")
self.report({'INFO'}, "Server '" + self.server_name + "' override")
else :
self.report({'INFO'}, "New '" + settings.server_name + "' server preset")
self.report({'INFO'}, "New '" + self.server_name + "' server preset")
return {'FINISHED'}
@ -1020,9 +1038,17 @@ class SessionPresetServerEdit(bpy.types.Operator):
row.prop(settings, "ip", text="IP+port")
row.prop(settings, "port", text="")
row = layout.row()
row.prop(settings, "server_password", text="Server password")
col = row.column()
col.prop(settings, "use_server_password", text="Server password:")
col = row.column()
col.enabled = True if settings.use_server_password else False
col.prop(settings, "server_password", text="")
row = layout.row()
row.prop(settings, "admin_password", text="Admin password")
col = row.column()
col.prop(settings, "use_admin_password", text="Admin password:")
col = row.column()
col.enabled = True if settings.use_admin_password else False
col.prop(settings, "admin_password", text="")
def execute(self, context):
assert(context)
@ -1037,6 +1063,8 @@ class SessionPresetServerEdit(bpy.types.Operator):
server.server_server_password = settings.server_password
server.server_admin_password = settings.admin_password
refresh_sidebar_view()
self.report({'INFO'}, "Server '" + settings.server_name + "' override")
return {'FINISHED'}
@ -1064,6 +1092,37 @@ class SessionPresetServerRemove(bpy.types.Operator):
return {'FINISHED'}
class GetDoc(bpy.types.Operator):
"""Get the documentation of the addon"""
bl_idname = "doc.get"
bl_label = "Multi-user's doc"
bl_description = "Go to the doc of the addon"
@classmethod
def poll(cls, context):
return True
def execute(self, context):
assert(context)
bpy.ops.wm.url_open(url="https://multi-user.readthedocs.io/en/develop/index.html")
return {'FINISHED'}
class FirstLaunch(bpy.types.Operator):
"""First time lauching the addon"""
bl_idname = "firstlaunch.verify"
bl_label = "First launch"
bl_description = "First time lauching the addon"
@classmethod
def poll(cls, context):
return True
def execute(self, context):
assert(context)
settings = utils.get_preferences()
settings.is_first_launch = False
return {'FINISHED'}
def menu_func_import(self, context):
self.layout.operator(SessionLoadSaveOperator.bl_idname, text='Multi-user session snapshot (.db)')
@ -1090,6 +1149,8 @@ classes = (
SessionPresetServerAdd,
SessionPresetServerEdit,
SessionPresetServerRemove,
GetDoc,
FirstLaunch,
)