コード例 #1
0
class LightPublisher:
    def __init__(self):
        self.project = Project()

    def go(self):
        sequence_list = self.project.list_sequences()

        self.item_gui = sfl.SelectFromList(
            l=sequence_list, parent=hou.ui.mainQtWindow(), title="Select a sequence to publish to")
        self.item_gui.submitted.connect(self.publish)


    def publish(self, value):
        self.name = value[0]
        sequence = self.project.get_sequence(self.name)
        if not sequence:
            sequence = self.project.create_sequence(self.name)
        if not sequence:
            qd.error("Bro, Stephanie really fumbled this one. No such sequence exists.")
            return
        self.element = sequence.get_element(Asset.LIGHTS)

        selection = hou.selectedNodes()
        if len(selection) != 1:
            qd.error(
                'Please select a single Houdini Digital Asset node to publish.')
            return
        if not selection[0].type().definition():
            qd.error(
                'Please select a Houdini Digital Asset node to publish.')
            return

        hda = selection[0]
        definition = hda.type().definition()
        definition.updateFromNode(hda)

        self.nodeName = "sequence_" + self.name + "_lights"
        menuName = "Sequence " + self.name + " Lights"
        self.savePath = os.path.join(self.element._filepath, self.nodeName + "_main.hda")

        definition.copyToHDAFile(self.savePath, new_name=self.nodeName, new_menu_name=menuName)

        publishes = self.element.list_publishes()
        publishes_string_list = ""
        for publish in publishes:
            label = publish[0] + " " + publish[1] + " " + publish[2] + "\n"
            publishes_string_list += label
        
        self.input = qd.HoudiniInput(
            parent=hou.qt.mainWindow(), title="Comment ", info=publishes_string_list)
        self.input.submitted.connect(self.comment_results)


    def comment_results(self, value):
        comment = str(value)
        username = Environment().get_user().get_username()

        self.element.update_app_ext(".hda")
        self.element.publish(username, self.savePath, comment, self.nodeName)
コード例 #2
0
class FXPublisher:
    def __init__(self):
        self.project = Project()

    def go(self):
        sequence_list = self.project.list_sequences()

        self.item_gui = sfl.SelectFromList(
            l=sequence_list, parent=hou.ui.mainQtWindow(), title="Select a sequence to publish to")
        self.item_gui.submitted.connect(self.publish)


    def publish(self, value):
        self.name = value[0]
        self.sequence = self.project.get_sequence(self.name)
        if not self.sequence:
            self.sequence = self.project.create_sequence(self.name)
        if not self.sequence:
            qd.error("Bro, Stephanie really fumbled this one. No such sequence exists.")
            return

        selection = hou.selectedNodes()
        if len(selection) != 1:
            qd.error(
                'Please select a single Houdini Digital Asset node to publish.')
            return
        if not selection[0].type().definition():
            qd.error(
                'Please select a Houdini Digital Asset node to publish.')
            return

        hda = selection[0]
        self.definition = hda.type().definition()
        fxName = self.definition.nodeTypeName()

        dept = os.path.join(Asset.HDA, fxName)
        deptPath = os.path.join(self.sequence._filepath, dept)

        self.element = self.sequence.create_element(deptPath, Element.DEFAULT_NAME)
        if not self.element:
            self.element = self.sequence.get_element(dept)
        if not self.element:
            qd.error("Well that effect can't exist for some reason. Blame Stephanie.")


        self.definition.updateFromNode(hda)
        self.tempPath = os.path.join(self.element._filepath, "temp.hda")
        self.definition.save(self.tempPath)

        publishes = self.element.list_publishes()
        publishes_string_list = ""
        for publish in publishes:
            label = publish[0] + " " + publish[1] + " " + publish[2] + "\n"
            publishes_string_list += label
        
        self.input = qd.HoudiniInput(
            parent=hou.qt.mainWindow(), title="Comment ", info=publishes_string_list)
        self.input.submitted.connect(self.comment_results)


    def comment_results(self, value):
        comment = str(value)
        username = Environment().get_user().get_username()

        self.element.update_app_ext(".hda")
        self.element.publish(username, self.tempPath, comment, self.definition.nodeTypeName())