def on_frontend_event(event):
    global TALLY_STATUS

    if event in (obs.OBS_FRONTEND_EVENT_SCENE_CHANGED,
                 obs.OBS_FRONTEND_EVENT_PREVIEW_SCENE_CHANGED):
        # Check the status of the tally sources
        program_source = obs.obs_frontend_get_current_scene()
        preview_source = obs.obs_frontend_get_current_preview_scene()
        program_scene = obs.obs_scene_from_source(program_source)
        preview_scene = obs.obs_scene_from_source(preview_source)
        try:
            for source_name in TALLY_STATUS.keys():
                color = "000000"
                source = obs.obs_scene_find_source(preview_scene, source_name)
                if source:
                    color = "00ff00"
                source = obs.obs_scene_find_source(program_scene, source_name)
                if source:
                    color = "ff0000"
                if TALLY_STATUS[source_name] != color:
                    CLIENT.publish("cmnd/%s/COLOR" % source_name, color)
                    TALLY_STATUS[source_name] = color
        finally:
            obs.obs_source_release(program_source)
            obs.obs_source_release(preview_source)
def startCountClick(props, prop):
    global itemSource
    global xCoord
    global yCoord
    global Debug_Mode
    global jsonItemData
    global imagePath
    global imageName
    global widthCount
    global heightCount

    if (obs.obs_frontend_preview_program_mode_active()):
        sceneSource = obs.obs_frontend_get_current_preview_scene()
    else:
        sceneSource = obs.obs_frontend_get_current_scene()
    sceneWidth = obs.obs_source_get_width(sceneSource)
    sceneHeight = obs.obs_source_get_height(sceneSource)

    xWidth = math.ceil(sceneWidth / widthCount)
    yHeight = math.ceil(sceneHeight / heightCount)
    blankImage = np.zeros(shape=[yHeight, xWidth, 4], dtype=np.uint8)
    cv2.rectangle(blankImage, (0, 0), (xWidth, yHeight), (169, 169, 169, 255),
                  2)

    if (os.path.isfile(imagePath + imageName)):
        os.remove(imagePath + imageName)

    cv2.imwrite(imagePath + imageName, blankImage)
    if Debug_Mode:
        print("startCount")
        print(imagePath + imageName)

    gridWidth = 0
    gridHeight = 0
    scene = obs.obs_scene_from_source(sceneSource)
    itemData = obs.obs_data_create_from_json(jsonItemData)
    itemSource = obs.obs_load_source(itemData)

    vec2 = obs.vec2()
    position = 0
    if itemSource != None:
        item = obs.obs_scene_find_source(scene, "OBSWindowGridItem")
        while item != None:
            obs.obs_sceneitem_remove(item)
            item = obs.obs_scene_find_source(scene, "OBSWindowGridItem")

        vec2.y = 0
        while gridHeight < sceneHeight:
            gridWidth = 0
            vec2.x = 0
            while gridWidth < sceneWidth:
                newItem = obs.obs_scene_add(scene, itemSource)
                obs.obs_sceneitem_set_pos(newItem, vec2)
                obs.obs_sceneitem_set_locked(newItem, True)
                obs.obs_sceneitem_set_order_position(newItem, position)
                position += 1
                vec2.x += xWidth
                gridWidth += xWidth
            vec2.y += yHeight
            gridHeight += yHeight
Beispiel #3
0
def nextScene():
    scenes = obs.obs_frontend_get_scenes()
    if len(scenes) > 1:
        c_scene = obs.obs_frontend_get_current_preview_scene()
        if c_scene != None:
            i = scenes.index(c_scene) + 1
            if i < len(scenes):
                return scenes[i]
    return scenes[0]
Beispiel #4
0
def transition(idx=-1):
    trans = None
    if idx >= 0:
        set_transition(idx)
    trans = obs.obs_frontend_get_current_transition()
    mode = obs.OBS_TRANSITION_MODE_AUTO
    duration = 0
    p_scene = obs.obs_frontend_get_current_preview_scene()
    obs.obs_transition_start(trans, mode, duration, p_scene)
    obs.obs_frontend_set_current_scene(p_scene)
def deleteGridClick(props, prop):
    if (obs.obs_frontend_preview_program_mode_active()):
        sceneSource = obs.obs_frontend_get_current_preview_scene()
    else:
        sceneSource = obs.obs_frontend_get_current_scene()
    scene = obs.obs_scene_from_source(sceneSource)
    item = obs.obs_scene_find_source(scene, "OBSWindowGridItem")
    while item:
        obs.obs_sceneitem_remove(item)
        item = obs.obs_scene_find_source(scene, "OBSWindowGridItem")
Beispiel #6
0
def transition(num=-1):
    trans = None
    if num >= 0:
        setTransition(num)
    trans = obs.obs_frontend_get_current_transition()
    act = obs.obs_frontend_get_current_scene()
    mode = obs.OBS_TRANSITION_MODE_AUTO
    duration = 0
    dest = obs.obs_frontend_get_current_preview_scene()
    obs.obs_transition_start(trans, mode, duration, dest)
    obs.obs_frontend_set_current_scene(dest)
    obs.obs_frontend_set_current_preview_scene(act)
Beispiel #7
0
	def _on_press(pressed):
		if pressed: return
		global last_switched_scene

		scene = obs.obs_frontend_get_current_preview_scene()
		scene_id = obs.obs_source_get_name(scene)

		if scene_id == toggle_scene_id:
			obs.obs_source_release(scene)
			if last_switched_scene: set_current_scene(last_switched_scene)
		else:
			if last_switched_scene: obs.obs_source_release(last_switched_scene)
			last_switched_scene = scene
			set_current_scene(toggle_scene)
Beispiel #8
0
def handle_preview_change():
    global preview_items

    program_source = obs.obs_frontend_get_current_scene()
    program_name = obs.obs_source_get_name(program_source)
    obs.obs_source_release(program_source)

    preview_source = obs.obs_frontend_get_current_preview_scene()
    preview_name = obs.obs_source_get_name(preview_source)

    preview_items = get_item_names_by_scene(preview_source)
    if program_name != preview_name:
        set_lights_by_items(preview_items, preview_color, preview_brightness)

    obs.obs_source_release(preview_source)
    set_idle_lights()