@@ -147,7 +147,7 @@ class DMX_OT_Fixture_Profiles(Operator):
147147
148148 def execute (self , context ):
149149 context .add_edit_panel .profile = self .profile
150- context .add_edit_panel .name = self .short_name
150+ context .add_edit_panel .user_fixture_name = self .short_name
151151 return {"FINISHED" }
152152
153153
@@ -177,7 +177,7 @@ def onProfile(self, context):
177177 update = onProfile ,
178178 )
179179
180- name : StringProperty (name = _ ("Name" ), default = "Fixture" )
180+ user_fixture_name : StringProperty (name = _ ("Name" ), default = "Fixture" )
181181
182182 dmx_breaks : CollectionProperty (name = "DMX Break" , type = DMX_Break )
183183
@@ -268,10 +268,10 @@ def draw(self, context):
268268 if self .units == 1 :
269269 self .advanced_edit = True
270270 if self .advanced_edit :
271- col .prop (self , "name " )
271+ col .prop (self , "user_fixture_name " )
272272 else :
273- if self .name != "*" :
274- col .label (text = f"{ self .name } " )
273+ if self .user_fixture_name != "*" :
274+ col .label (text = f"{ self .user_fixture_name } " )
275275
276276 col .context_pointer_set ("add_edit_panel" , self )
277277 text_profile = _ ("GDTF Profile" )
@@ -378,11 +378,11 @@ def execute(self, context):
378378 bpy .context .scene .cursor .location = (0.0 , 0.0 , 0.0 )
379379 bpy .context .scene .cursor .rotation_euler = (0.0 , 0.0 , 0.0 )
380380
381- if self .name in bpy .data .collections :
382- self .report (
383- {"ERROR" }, _ ("Fixture named {} already exists" ).format (self .name )
384- )
385- return {"CANCELLED" }
381+ # if self.name in bpy.data.collections:
382+ # self.report(
383+ # {"ERROR"}, _("Fixture named {} already exists").format(self.name)
384+ # )
385+ # return {"CANCELLED"}
386386 if not len (self .profile ):
387387 self .report ({"ERROR" }, _ ("No GDTF Profile selected." ))
388388 return {"CANCELLED" }
@@ -392,8 +392,8 @@ def execute(self, context):
392392 dmx_breaks = self .dmx_breaks
393393 fixture_id = self .fixture_id
394394 for i in range (self .units ):
395- DMX_Log .log .debug (f"Adding fixture { self .name } " )
396- new_name = generate_fixture_name (self .name , i + 1 )
395+ DMX_Log .log .debug (f"Adding fixture { self .user_fixture_name } " )
396+ new_name = generate_fixture_name (self .profile , i + 1 )
397397 dmx .addFixture (
398398 new_name ,
399399 self .profile ,
@@ -403,6 +403,7 @@ def execute(self, context):
403403 self .display_beams ,
404404 self .add_target ,
405405 fixture_id = fixture_id ,
406+ user_fixture_name = self .user_fixture_name ,
406407 )
407408 fixture = dmx .fixtures [- 1 ]
408409 DMX_Log .log .debug (f"Added fixture { fixture } " )
@@ -427,7 +428,7 @@ def execute(self, context):
427428 def invoke (self , context , event ):
428429 # fixtures_len = len(context.scene.dmx.fixtures)
429430 # self.name = generate_fixture_name("Fixture", fixtures_len + 1)
430- self .name = "Fixture"
431+ self .user_fixture_name = "Fixture Name "
431432 self .units = 1
432433 DMX_Fixture_AddEdit .profile_list_items = []
433434 wm = context .window_manager
@@ -454,15 +455,15 @@ def execute(self, context):
454455 # Single fixture
455456 if len (selected ) == 1 :
456457 fixture = selected [0 ]
457- if self .name != fixture .name and self .name in bpy .data .collections :
458- self .report (
459- {"ERROR" }, _ ("Fixture named {} already exists" ).format (self .name )
460- )
461- return {"CANCELLED" }
458+ # if self.name != fixture.name and self.name in bpy.data.collections:
459+ # self.report(
460+ # {"ERROR"}, _("Fixture named {} already exists").format(self.name)
461+ # )
462+ # return {"CANCELLED"}
462463
463464 if self .advanced_edit :
464465 fixture .build (
465- self .name ,
466+ fixture .name ,
466467 self .profile ,
467468 self .mode ,
468469 self .dmx_breaks ,
@@ -471,6 +472,7 @@ def execute(self, context):
471472 self .add_target ,
472473 uuid = fixture .uuid ,
473474 fixture_id = fixture .fixture_id ,
475+ user_fixture_name = self .user_fixture_name ,
474476 )
475477 context .window_manager .dmx .pause_render = False
476478 else :
@@ -504,21 +506,26 @@ def execute(self, context):
504506 else :
505507 dmx_breaks = self .dmx_breaks
506508 fixture_id = self .fixture_id
509+ # for i, fixture in enumerate(selected):
510+ # name = generate_fixture_name(self.name, i + 1)
511+ # if name != fixture.name and name in bpy.data.collections:
512+ # self.report(
513+ # {"ERROR"},
514+ # _("Fixture named {} already exists".format(self.name)),
515+ # )
516+ # return {"CANCELLED"}
507517 for i , fixture in enumerate (selected ):
508- name = generate_fixture_name (self .name , i + 1 )
509- if name != fixture .name and name in bpy .data .collections :
510- self .report (
511- {"ERROR" },
512- _ ("Fixture named {} already exists" .format (self .name )),
513- )
514- return {"CANCELLED" }
515- for i , fixture in enumerate (selected ):
516- name = (
517- generate_fixture_name (self .name , i + 1 )
518- if (self .name != "*" )
519- else fixture .name
520- )
518+ # name = (
519+ # generate_fixture_name(self.name, i + 1)
520+ # if (self.name != "*")
521+ # else fixture.name
522+ # )
521523 # fixture_id = f"{self.fixture_id}{i+1}" if (self.name != '*') else fixture.name
524+ if self .user_fixture_name == "*" :
525+ new_fixture_name = fixture .user_fixture_name
526+ else :
527+ new_fixture_name = self .user_fixture_name
528+
522529 profile = self .profile if (self .profile != "" ) else fixture .profile
523530 mode = self .mode if (self .mode != "" ) else fixture .mode
524531 if not self .modify_address :
@@ -536,7 +543,7 @@ def execute(self, context):
536543 _fixture_id = fixture .fixture_id
537544 if self .advanced_edit :
538545 fixture .build (
539- name ,
546+ fixture . name ,
540547 profile ,
541548 mode ,
542549 dmx_breaks ,
@@ -545,6 +552,7 @@ def execute(self, context):
545552 self .add_target ,
546553 uuid = fixture .uuid ,
547554 fixture_id = _fixture_id ,
555+ user_fixture_name = new_fixture_name ,
548556 )
549557 if self .modify_address :
550558 for fixture_break , edit_break in zip (
@@ -581,8 +589,8 @@ def invoke(self, context, event):
581589 # Single fixture edit
582590 if len (selected ) == 1 :
583591 fixture = selected [0 ]
584- self .name = fixture .name
585592 self .profile = fixture .profile
593+ self .user_fixture_name = fixture .user_fixture_name
586594 self .dmx_breaks .clear ()
587595 for dmx_break in fixture .dmx_breaks :
588596 new_break = self .dmx_breaks .add ()
@@ -609,7 +617,7 @@ def invoke(self, context, event):
609617 self .use_target = fixture .use_target
610618 # Multiple fixtures edit
611619 else :
612- self .name = "*"
620+ self .user_fixture_name = "*"
613621 self .profile = ""
614622 self .dmx_breaks .clear ()
615623 for selected_dmx_break in selected [0 ].dmx_breaks :
@@ -946,7 +954,7 @@ def filter_items(self, context, data, propname):
946954 flt_neworder = []
947955
948956 flt_flags = helper_funcs .filter_items_by_name (
949- self .filter_name , self .bitflag_filter_item , vgroups , "name "
957+ self .filter_name , self .bitflag_filter_item , vgroups , "user_fixture_name "
950958 )
951959 if not flt_flags :
952960 flt_flags = [self .bitflag_filter_item ] * len (vgroups )
@@ -965,7 +973,7 @@ def filter_items(self, context, data, propname):
965973 ]
966974 flt_neworder = helper_funcs .sort_items_helper (_sort , lambda e : e [1 ], False )
967975 elif sorting_order == "NAME" :
968- flt_neworder = helper_funcs .sort_items_by_name (vgroups , "name " )
976+ flt_neworder = helper_funcs .sort_items_by_name (vgroups , "user_fixture_name " )
969977 elif sorting_order == "FIXTURE_ID" :
970978 _sort = [
971979 (idx , self .str_to_digit (vgroups [vg .name ].fixture_id ))
@@ -989,15 +997,22 @@ def draw_item(
989997 dmx = scene .dmx
990998
991999 has_ies = len (item .ies_data ) > 0
992- item_dmx_break = item .dmx_breaks [0 ] # just get the first breake for now
1000+ item_dmx_break = item .dmx_breaks [0 ] # just get the first break for now
9931001 col = layout .column ()
9941002 col .context_pointer_set ("fixture" , item )
995- col .operator (
996- "dmx.fixture_item" ,
997- text = f"{ item .name } { ' 📈' if has_ies else '' } { '*' if item .dmx_cache_dirty else '' } " ,
998- depress = item .is_selected (),
999- icon = "LOCKED" if item .ignore_movement_dmx else "OUTLINER_DATA_LIGHT" ,
1000- )
1003+
1004+ if dmx .fixture_properties_editable :
1005+ col = layout .column ()
1006+ col .label (text = f"{ item .gdtf_long_name } " )
1007+ col = layout .column ()
1008+ col .prop (item , "user_fixture_name" , text = "" )
1009+ else :
1010+ col .operator (
1011+ "dmx.fixture_item" ,
1012+ text = f"{ item .user_fixture_name } { ' 📈' if has_ies else '' } { '🖊' if item .dmx_cache_dirty else '' } " ,
1013+ depress = item .is_selected (),
1014+ icon = "LOCKED" if item .ignore_movement_dmx else "OUTLINER_DATA_LIGHT" ,
1015+ )
10011016 col .ui_units_x = 6
10021017
10031018 if dmx .column_fixture_id :
@@ -1050,7 +1065,7 @@ def draw_item(
10501065 ] # just get the first break for now
10511066 if overlapping :
10521067 break
1053- if fixture .name == item .name :
1068+ if fixture .name == item .name : # TODO user_fixture_name
10541069 continue
10551070 if fixture_dmx_break .universe == item_dmx_break .universe :
10561071 channels = set (
0 commit comments