mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-09 13:52:23 +00:00
Implement remove pre / pos / all listeners (#1498)
Remove listeners, passing callback method. Will not handle file pre_load cleanup / post_load setup here to prevent any blender's dependancy.
This commit is contained in:
@@ -36,3 +36,24 @@ def add_pre_listener(usecase_path, ifc_file, callback):
|
|||||||
def add_post_listener(usecase_path, ifc_file, callback):
|
def add_post_listener(usecase_path, ifc_file, callback):
|
||||||
ifc_key = registered_ifcs.setdefault(ifc_file, ifcopenshell.guid.new())
|
ifc_key = registered_ifcs.setdefault(ifc_file, ifcopenshell.guid.new())
|
||||||
post_listeners.setdefault(".".join([ifc_key, usecase_path]), set()).add(callback)
|
post_listeners.setdefault(".".join([ifc_key, usecase_path]), set()).add(callback)
|
||||||
|
|
||||||
|
def remove_pre_listener(callback):
|
||||||
|
for ifc_key, callbacks in pre_listeners.items():
|
||||||
|
for fun in callbacks:
|
||||||
|
if fun == callback:
|
||||||
|
pre_listeners[ifc_key].remove(callback)
|
||||||
|
return
|
||||||
|
|
||||||
|
def remove_post_listener(callback):
|
||||||
|
for ifc_key, callbacks in post_listeners.items():
|
||||||
|
for fun in callbacks:
|
||||||
|
if fun == callback:
|
||||||
|
post_listeners[ifc_key].remove(callback)
|
||||||
|
return
|
||||||
|
|
||||||
|
def remove_all_listeners():
|
||||||
|
registered_ifcs.clear()
|
||||||
|
pre_listeners.clear()
|
||||||
|
post_listeners.clear()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user