예제 #1
0
 def __setUpInputOutputLayout(self) -> QFormLayout:
     # Add input and output boxes
     self._inputComboBox = QComboBox(self.editor)
     self._inputComboBox.setModel(self.operation.workbench)
     self._outputNameBox = TextOptionWidget(parent=self.editor)
     self._outputNameBox.widget.textChanged.connect(
         self._validateOutputName)
     self._inputComboBox.currentTextChanged.connect(self._changeInputFrame)
     ioLayout = QFormLayout()
     ioLayout.addRow('Input data:', self._inputComboBox)
     ioLayout.addRow('Output name:', self._outputNameBox)
     completer = QCompleter(self._outputNameBox)
     completer.setModel(self.operation.workbench)
     completer.setFilterMode(Qt.MatchContains)
     completer.setModelSorting(QCompleter.CaseInsensitivelySortedModel)
     completer.setCompletionMode(QCompleter.UnfilteredPopupCompletion)
     self._outputNameBox.widget.setCompleter(completer)
     if self.selectedFrame:
         if self.selectedFrame == self._inputComboBox.currentText():
             # Manually trigger the slot to change input
             self._changeInputFrame(self.selectedFrame)
         else:
             # Set the frame (will trigger _changeInputFrame)
             self._inputComboBox.setCurrentText(self.selectedFrame)
     else:
         # Default to whatever input name is set
         self._changeInputFrame(self._inputComboBox.currentText())
     return ioLayout
예제 #2
0
    def __init__(self, lookup_names: List[str], on_entered: CallbackType) -> None:
        widget = QLineEdit("")
        completer = QCompleter(lookup_names)
        completer.setCaseSensitivity(Qt.CaseInsensitive)
        completer.setFilterMode(Qt.MatchFlag.MatchContains)
        completer.setMaxVisibleItems(50)
        widget.setCompleter(completer)

        super().__init__("Название рецепта:", widget)

        self._on_recipe_name_entered = on_entered
        self._connect_slots()
예제 #3
0
    def __init__(self, lookup_names: List,
                 on_item_added: CallbackType) -> None:
        super().__init__()

        recipe_search_label = QLabel("Блюдо:")

        recipe_search_line_edit = QLineEdit("")
        completer = QCompleter(lookup_names)
        completer.setCaseSensitivity(Qt.CaseInsensitive)
        completer.setFilterMode(Qt.MatchFlag.MatchContains)
        completer.setMaxVisibleItems(50)
        recipe_search_line_edit.setCompleter(completer)

        serves_amount_label = QLabel("Порций:")

        serves_amount_line_edit = QLineEdit(str(self.DEFAULT_SERVES_AMOUNT))
        serves_amount_line_edit.setFixedWidth(30)
        serves_amount_line_edit.setValidator(QIntValidator())
        serves_amount_line_edit.setMaxLength(2)

        add_push_button = QPushButton("+")

        # Widget layout
        layout = QHBoxLayout()
        layout.addWidget(recipe_search_label)
        layout.addWidget(recipe_search_line_edit)
        layout.addWidget(serves_amount_label)
        layout.addWidget(serves_amount_line_edit)
        layout.addWidget(add_push_button)
        layout.addStretch()

        self.setLayout(layout)

        # Init self data
        self._on_item_added = on_item_added
        self._recipe_search_line_edit = recipe_search_line_edit
        self._serves_amount_line_edit = serves_amount_line_edit
        self._add_push_button = add_push_button

        # Connect slots
        self._connect_slots()