schrodinger.ui.qt.file_selector module

Module containing FileSelector. The widget’s file selection can be obtained by mapping the widget to a param or alternatively by connecting a slot to the fileSelectionChanged signal.

Mapping this widget to a param will depend on whether or not support_multiple_files is True. E.g. with support_multiple_files = False:

class WidgetModel(parameters.CompoundParam):
    input_file: str

class Widget(mappers.MapperMixin, basewidgets.BaseWidget):
    def initSetUp(self):
        super().initSetUp()
        self.file_selector = file_selector.FileSelector(self)

    def defineMappings(self):
        M = self.model_class
        return [(self.file_selector, M.input_file)]

Alternatively, with support_multiple_files = True, use:

class WidgetModel(parameters.CompoundParam):
    input_files: List[str]

class Widget(mappers.MapperMixin, basewidgets.BaseWidget):
    def initSetUp(self):
        super().initSetUp()
        self.file_selector = file_selector.FileSelector(self)

    def defineMappings(self):
        M = self.model_class
        return [(self.file_selector, M.input_files)]

To use without mapping, hook up the fileSelectionChanged signal to a slot that calls FileSelector.getFilePath() or getFilePaths() depending on which is needed.

class schrodinger.ui.qt.file_selector.FileSelector(parent: Optional[PyQt6.QtWidgets.QWidget] = None, filter_str: str = 'All Files (*)', support_multiple_files: bool = False, initial_dir: Optional[str] = None, file_dialog_title: Optional[str] = None, id: Optional[str] = None)

Bases: schrodinger.models.mappers.TargetMixin, schrodinger.ui.qt.basewidgets.BaseWidget

Widget for showing an entry field and a browse button to let the user specify a single file or optionally multiple files.

Variables

fileSelectionChanged (QtCore.pyqtSignal) – Signal emitted when the file selection changes.

fileSelectionChanged

A pyqtSignal emitted by instances of the class.

__init__(parent: Optional[PyQt6.QtWidgets.QWidget] = None, filter_str: str = 'All Files (*)', support_multiple_files: bool = False, initial_dir: Optional[str] = None, file_dialog_title: Optional[str] = None, id: Optional[str] = None)
Parameters
  • parent – Parent widget.

  • filter_str – The filter to apply to the file dialog that will open upon clicking “Browse”. Must be a valid QFileDialog filter. E.g. Image Files (*.png *.jpeg);;Text Files (*.txt)

  • support_multiple_files – Whether or not to allow the user to select multiple files at once from the file dialog.

  • initial_dir – Initial directory. Default is CWD.

  • file_dialog_title – File dialog title, if it’s empty then “Select Input File / Select Input File(S) is used depending on support_multiple_files param

  • id – An identifier to remember the recently browsed directories and show the last browsed directory. Set None (default) to not remember any history.

initSetUp()

Creates widget from ui and stores it ui_widget.

Suggested subclass use: create and initialize subwidgets, and connect signals.

initLayOut()

Create a vertical layout for the widget (widget_layout) and populate it with two vertical sub-layouts: main_layout and bottom_layout.

If the user has specified the ui data member, insert the resultant ui_widget into main_layout.

If the widget already has a layout defined, this method will produce a warning (but not a traceback). main_layout and bottom_layout will be inserted into the existing widget layout, which will not be the same as widget_layout. It is therefore recommended that this mixin is used only with widgets that do not already have a layout.

Suggested subclass use: create, initialize, and populate layouts.

setFileLabelText(text: str)
getFilePath() str

Return the currently selected file path. Allows access to target

Raises

RuntimeError – If this method is called when supporting multiple files.

setFilePath(file_path: str) None

Set the currently selected file path.

Parameters

file_path – The file path to set onto this object.

Raises

RuntimeError – If this method is called when supporting multiple files

getFilePaths() Union[list, str]

Return the currently selected file paths.

Raises

RuntimeError – If this method is called when not supporting multiple files.

setFilePaths(file_paths: List[str]) str

Set the currently selected file paths.

Parameters

file_paths – The file paths to set onto this object.

Raises

RuntimeError – If this method is called when not supporting multiple files

targetGetValue() Union[str, list]

If multiple files supported, split the file paths entered into the line edit by “,”. Otherwise, return the line edit text.

targetSetValue(value: Union[str, list])

Set the line edit text based for a valid value and emit two signals: targetValueChanged for when this widget mapped to a param, and fileSelectionChanged for when it is not.

Parameters

value – The path(s) to set to the line edit. May be single path as a string or multliple paths in a list.

class schrodinger.ui.qt.file_selector.SlimFileSelector(parent: Optional[PyQt6.QtWidgets.QWidget] = None, filter_str: str = 'All Files (*)', support_multiple_files: bool = False, initial_dir: Optional[str] = None, file_dialog_title: Optional[str] = None, id: Optional[str] = None)

Bases: schrodinger.ui.qt.file_selector.FileSelector

A file selector variant that has no label or entry field, and is made up of a single widget: a “Browse…” button. Panels that use this widget are expected to display the loaded file in a separate UI.

initLayOut()

Create a vertical layout for the widget (widget_layout) and populate it with two vertical sub-layouts: main_layout and bottom_layout.

If the user has specified the ui data member, insert the resultant ui_widget into main_layout.

If the widget already has a layout defined, this method will produce a warning (but not a traceback). main_layout and bottom_layout will be inserted into the existing widget layout, which will not be the same as widget_layout. It is therefore recommended that this mixin is used only with widgets that do not already have a layout.

Suggested subclass use: create, initialize, and populate layouts.