from lnx.logicnode.lnx_nodes import *

class LoadUrlNode(LnxLogicTreeNode):
    """Load the given URL in a new or existing tab (works only for web browsers).

    @input URL: use a complete url or partial for a subpage.
    @input New: open a new window or redirect existing one.
    @input Use values: W,H,L,T: open a new window using Width, Height, Left and Top values.
    @input Width: width for New window.
    @input Height: height for New window.
    @input Left: distance from left for New window position.
    @input Top: distance from top for New window position.

    @output True: for New returns true if the window is opened.
    @output False: for New returns false if the window is not opened (popup blocked).
    """
    bl_idname = 'LNLoadUrlNode'
    bl_label = 'Load URL'
    lnx_version = 2

    def lnx_init(self, context):
        self.add_input('LnxNodeSocketAction', 'In')
        self.add_input('LnxStringSocket', 'URL')
        self.add_input('LnxBoolSocket', 'New Window', default_value=True)
        self.add_input('LnxBoolSocket', 'Use values: W,H,L,T', default_value=False)
        self.add_input('LnxIntSocket', 'Width', default_value= 500)
        self.add_input('LnxIntSocket', 'Height', default_value= 500)
        self.add_input('LnxIntSocket', 'Left')
        self.add_input('LnxIntSocket', 'Top')
 
        self.add_output('LnxNodeSocketAction', 'True')
        self.add_output('LnxNodeSocketAction', 'False')

    def get_replacement_node(self, node_tree: bpy.types.NodeTree):
        if self.lnx_version not in (0, 1):
            raise LookupError()

        return NodeReplacement.Identity(self)