Difference between revisions of "IC Python API:File Path"

From Reallusion Wiki!
Jump to: navigation, search
m (User Interface)
m (File Dialog Request)
Line 37: Line 37:
  
 
=== File Dialog Request ===
 
=== File Dialog Request ===
 +
 +
[[File:Ic_python_api_file_path_02.png|frame]]
  
 
Next we'll need a definition for the file dialog procedure to populate the directory field and the contents text field.
 
Next we'll need a definition for the file dialog procedure to populate the directory field and the contents text field.

Revision as of 22:05, 17 June 2019

Main article: RL Python Samples.

Required Modules

Besides the rudimentary Reallusion Python API, we'll need to use Qtwidgets to build our user interface and shiboken2 to convert the dialog window to something Python can understand.

import RLPy
from PySide2 import QtWidgets
from PySide2.shiboken2 import wrapInstance

User Interface

Ic python api file path 01.png

We'll need to create a user interface with a line at the top that shows the directory location, a button for opening the file browse dialog, and a text input to display the contents of the file.

window = RLPy.RUi.CreateRDialog()
window.SetWindowTitle("Python Path & File")
dialog = wrapInstance(int(window.GetWindow()), QtWidgets.QDialog)
dialog.setFixedWidth(500)

layout = QtWidgets.QHBoxLayout()
dialog.layout().addLayout(layout)

pathText = QtWidgets.QPlainTextEdit(readOnly=True, maximumHeight=25)
contentText = QtWidgets.QPlainTextEdit(minimumHeight=250)
button = QtWidgets.QPushButton("....", minimumHeight=25, minimumWidth=25)

layout.addWidget(pathText)
layout.addWidget(button)
dialog.layout().addWidget(contentText)

File Dialog Request

Ic python api file path 02.png

Next we'll need a definition for the file dialog procedure to populate the directory field and the contents text field.

def open_file():
    file_dialog = QtWidgets.QFileDialog()
    file_dialog.setNameFilter("*.py")
    file_dialog.exec()

    if(len(file_dialog.selectedFiles()) > 0):
        pathText.setPlainText(file_dialog.selectedFiles()[0])
        f = open(file_dialog.selectedFiles()[0], "r")
        contentText.setPlainText(f.read())
        f.close()


button.clicked.connect(open_file)

window.Show()

Everything Put Together

You can copy and paste the following code into a PY file and load it into iClone via Script > Load Python.

import RLPy
from PySide2 import QtWidgets
from PySide2.shiboken2 import wrapInstance

window = RLPy.RUi.CreateRDialog()
window.SetWindowTitle("Python Path & File")
dialog = wrapInstance(int(window.GetWindow()), QtWidgets.QDialog)
dialog.setFixedWidth(500)

layout = QtWidgets.QHBoxLayout()
dialog.layout().addLayout(layout)

pathText = QtWidgets.QPlainTextEdit(readOnly=True, maximumHeight=25)
contentText = QtWidgets.QPlainTextEdit(minimumHeight=250)
button = QtWidgets.QPushButton("....", minimumHeight=25, minimumWidth=25)

layout.addWidget(pathText)
layout.addWidget(button)
dialog.layout().addWidget(contentText)


def open_file():
    file_dialog = QtWidgets.QFileDialog()
    file_dialog.setNameFilter("*.py")
    file_dialog.exec()

    if(len(file_dialog.selectedFiles()) > 0):
        pathText.setPlainText(file_dialog.selectedFiles()[0])
        f = open(file_dialog.selectedFiles()[0], "r")
        contentText.setPlainText(f.read())
        f.close()


button.clicked.connect(open_file)

window.Show()

APIs Used

You can research the following references for the APIs deployed in this code.