Skip to content

Commit

Permalink
Make setting universes more understandable
Browse files Browse the repository at this point in the history
  • Loading branch information
vanous committed Dec 28, 2023
1 parent 5685905 commit 5820e07
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 20 deletions.
31 changes: 20 additions & 11 deletions __init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -270,16 +270,25 @@ def prepare_empty_buffer(self, context):
# Clear the buffer on change of every protocol
DMX_Data.prepare_empty_buffer()

selected_live_dmx_source : EnumProperty(
name = "DMX Source",
description="The network protocol for which to show live DMX values",
default = "BLENDERDMX",
items = network_options_list,
update = prepare_empty_buffer,
)
selected_live_dmx_universe: IntProperty(
min = 0,
update = prepare_empty_buffer,

def get_dmx_universes(self, context):
#print(self, context)
data = []
for universe in self.universes:
data.append((str(universe.id), universe.name, str(universe.input), "", universe.id))
return data

def get_selected_live_dmx_universe(self):
for universe in self.universes:
selected_universe = universe
if self.selected_live_dmx == str(universe.id):
break
return selected_universe

selected_live_dmx: EnumProperty(
name = "Universe",
description="",
items = get_dmx_universes
)

dmx_values: CollectionProperty(
Expand Down Expand Up @@ -1319,7 +1328,7 @@ def updatePreviewVolume(self):

def addUniverse(self):
id = len(self.universes)
DMX_Universe.add(self, id, "DMX %d"%id)
DMX_Universe.add(self, id, "Universe %d"%id)

def removeUniverse(self, i):
DMX_Universe.remove(self, i)
Expand Down
6 changes: 3 additions & 3 deletions data.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,10 +95,9 @@ def set(universe, addr, val):
if addr > 511:
return


if DMX_Data._dmx is not None:
dmx = DMX_Data._dmx
if dmx.selected_live_dmx_source == "BLENDERDMX":
if dmx.get_selected_live_dmx_universe().input == "BLENDERDMX":
dmx = bpy.context.scene.dmx
dmx.dmx_values[addr-1].channel=val
DMX_Data._universes[universe][addr-1] = val
Expand Down Expand Up @@ -132,7 +131,8 @@ def set_universe(universe, data, source):

if DMX_Data._dmx is not None:
dmx = DMX_Data._dmx
if dmx.selected_live_dmx_source == source and dmx.selected_live_dmx_universe == universe:
selected_live_dmx_universe = dmx.get_selected_live_dmx_universe()
if selected_live_dmx_universe.input == source and selected_live_dmx_universe.id == universe:
if DMX_Data._last_updated is None or (time.time() - DMX_Data._last_updated > 0.8 and changed):
# We limit update by time, too fast updates were troubling Blender's UI
for idx, val in enumerate(data):
Expand Down
8 changes: 7 additions & 1 deletion fixture.py
Original file line number Diff line number Diff line change
Expand Up @@ -123,12 +123,18 @@ class DMX_Fixture(PropertyGroup):
type = DMX_Fixture_Channel
)

def ensure_universe_exists(self, context):
dmx = bpy.context.scene.dmx
dmx.ensureUniverseExists(self.universe)

universe : IntProperty(
name = "Fixture > Universe",
description="Fixture DMX Universe",
default = 0,
min = 0,
max = 511)
max = 511,
update = ensure_universe_exists
)

address : IntProperty(
name = "Fixture > Address",
Expand Down
39 changes: 35 additions & 4 deletions panels/dmx.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,8 +129,13 @@ def draw_item(self, context, layout, data, item, icon, active_data, active_propn
ob = data
icon = "FILE_VOLUME"
if self.layout_type in {'DEFAULT', 'COMPACT'}:
layout.prop(item, "name", text="", emboss=False, icon=icon)
layout.label(text=item.input)
col = layout.column()
col.label(text=f"{item.id}", icon=icon)
col.ui_units_x = 2
col = layout.column()
col.prop(item, "name", text="", emboss=False)
col = layout.column()
col.label(text=item.input)
elif self.layout_type in {'GRID'}:
layout.alignment = 'CENTER'
layout.label(text=str(item.id), icon=icon)
Expand Down Expand Up @@ -267,13 +272,21 @@ class DMX_PT_DMX_ArtNet(Panel):
def draw(self, context):
layout = self.layout
dmx = context.scene.dmx

artnet_universes = []
for universe in dmx.universes:
if universe.input == "ARTNET":
artnet_universes.append(universe)

row = layout.row()
row.prop(dmx, "artnet_ipaddr", text="IPv4")
row.enabled = not dmx.artnet_enabled

row = layout.row()
row.prop(dmx, "artnet_enabled")
row.enabled = len(artnet_universes)>0
row = layout.row()
row.label(text=f"Art-Net set for {len(artnet_universes)} universe(s)")
layout.label(text='Status: ' + layout.enum_item_name(dmx, 'artnet_status', dmx.artnet_status))

class DMX_PT_DMX_sACN(Panel):
Expand All @@ -290,8 +303,18 @@ def draw(self, context):
layout = self.layout
dmx = context.scene.dmx

sacn_universes = []
for index, universe in enumerate(dmx.universes):
if index == 0: # invalid for sACN
continue
if universe.input == "sACN":
sacn_universes.append(universe)

row = layout.row()
row.prop(dmx, "sacn_enabled")
row.enabled = len(sacn_universes)>0
row = layout.row()
row.label(text=f"sACN set for {len(sacn_universes)} universe(s)")
layout.label(text='Status: ' + dmx.sacn_status)

class DMX_UL_LiveDMX_items(UIList):
Expand All @@ -316,10 +339,18 @@ class DMX_PT_DMX_LiveDMX(Panel):
def draw(self, context):
layout = self.layout
dmx = context.scene.dmx
selected_universe = dmx.get_selected_live_dmx_universe()

row = layout.row()
row.prop(dmx, "selected_live_dmx_source", text="Source")
row.prop(dmx, "selected_live_dmx_universe", text="Universe")
row.prop(dmx, "selected_live_dmx", text="Source")
row = layout.row()
col = row.column()
col.label(text=f"{selected_universe.id}")
col.ui_units_x = 2
col = row.column()
row.label(text=f"{selected_universe.name}")
col = row.column()
row.label(text=f"{selected_universe.input}")
layout.template_list("DMX_UL_LiveDMX_items", "", dmx, "dmx_values", dmx, "dmx_value_index", type='GRID')

# Panel #
Expand Down
2 changes: 1 addition & 1 deletion universe.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ class DMX_Universe(PropertyGroup):
name: StringProperty (
name = "Name",
description = "Name of the universe",
default = "DMX 0"
default = "Universe 0"
)

input: EnumProperty (
Expand Down

0 comments on commit 5820e07

Please sign in to comment.