class BrowsePackageWidget(QtGui.QWidget, ContextViewMixin): """A widget for browsing rez packages. """ packageSelected = QtCore.Signal() def __init__(self, context_model=None, parent=None, lock_package=False, package_selectable_callback=None): super(BrowsePackageWidget, self).__init__(parent) ContextViewMixin.__init__(self, context_model) self.edit = PackageLineEdit(context_model, family_only=True) if lock_package: self.edit.hide() self.versions_table = PackageVersionsTable(context_model, callback=package_selectable_callback) self.package_tab = PackageTabWidget(versions_tab=False) splitter = ConfiguredSplitter(app.config, "layout/splitter/browse_package") splitter.setOrientation(QtCore.Qt.Vertical) splitter.addWidget(self.versions_table) splitter.addWidget(self.package_tab) if not splitter.apply_saved_layout(): splitter.setStretchFactor(0, 2) splitter.setStretchFactor(1, 1) layout = QtGui.QVBoxLayout() layout.addWidget(self.edit) layout.addWidget(splitter) self.setLayout(layout) self.edit.focusOutViaKeyPress.connect(self._set_package_name) self.versions_table.itemSelectionChanged.connect(self._set_package) def set_package_text(self, txt): try: req = Requirement(str(txt)) package_name = req.name version_range = req.range except: package_name = str(txt) version_range = None self.edit.setText(package_name) self._set_package_name(package_name) if version_range is not None: self.versions_table.select_version(version_range) def current_package(self): return self.versions_table.current_package() def _set_package_name(self, package_name): self.versions_table.set_package_name(package_name) self.versions_table.setFocus() def _set_package(self): package = self.versions_table.current_package() self.package_tab.set_package(package) self.packageSelected.emit()
def __init__(self, context_model=None, parent=None, lock_package=False, package_selectable_callback=None): super(BrowsePackageWidget, self).__init__(parent) ContextViewMixin.__init__(self, context_model) self.edit = PackageLineEdit(context_model, family_only=True) if lock_package: self.edit.hide() self.versions_table = PackageVersionsTable(context_model, callback=package_selectable_callback) self.package_tab = PackageTabWidget(versions_tab=False) splitter = ConfiguredSplitter(app.config, "layout/splitter/browse_package") splitter.setOrientation(QtCore.Qt.Vertical) splitter.addWidget(self.versions_table) splitter.addWidget(self.package_tab) if not splitter.apply_saved_layout(): splitter.setStretchFactor(0, 2) splitter.setStretchFactor(1, 1) layout = QtWidgets.QVBoxLayout() layout.addWidget(self.edit) layout.addWidget(splitter) self.setLayout(layout) self.edit.focusOutViaKeyPress.connect(self._set_package_name) self.versions_table.itemSelectionChanged.connect(self._set_package)
class BrowsePackageWidget(QtWidgets.QWidget, ContextViewMixin): """A widget for browsing rez packages. """ packageSelected = QtCore.Signal() def __init__(self, context_model=None, parent=None, lock_package=False, package_selectable_callback=None): super(BrowsePackageWidget, self).__init__(parent) ContextViewMixin.__init__(self, context_model) self.edit = PackageLineEdit(context_model, family_only=True) if lock_package: self.edit.hide() self.versions_table = PackageVersionsTable(context_model, callback=package_selectable_callback) self.package_tab = PackageTabWidget(versions_tab=False) splitter = ConfiguredSplitter(app.config, "layout/splitter/browse_package") splitter.setOrientation(QtCore.Qt.Vertical) splitter.addWidget(self.versions_table) splitter.addWidget(self.package_tab) if not splitter.apply_saved_layout(): splitter.setStretchFactor(0, 2) splitter.setStretchFactor(1, 1) layout = QtWidgets.QVBoxLayout() layout.addWidget(self.edit) layout.addWidget(splitter) self.setLayout(layout) self.edit.focusOutViaKeyPress.connect(self._set_package_name) self.versions_table.itemSelectionChanged.connect(self._set_package) def set_package_text(self, txt): try: req = Requirement(str(txt)) package_name = req.name version_range = req.range except: package_name = str(txt) version_range = None self.edit.setText(package_name) self._set_package_name(package_name) if version_range is not None: self.versions_table.select_version(version_range) def current_package(self): return self.versions_table.current_package() def _set_package_name(self, package_name): self.versions_table.set_package_name(package_name) self.versions_table.setFocus() def _set_package(self): package = self.versions_table.current_package() self.package_tab.set_package(package) self.packageSelected.emit()
def __init__(self, context_model=None, read_only=False, parent=None): super(PackageSelectWidget, self).__init__(parent) ContextViewMixin.__init__(self, context_model) self.edit = PackageLineEdit(self.context_model, read_only=read_only, parent=self) self.edit.setStyleSheet("QLineEdit { border : 0px;}") self.btn = IconButton("package", "browse packages") self.btn.hide() create_pane([(self.edit, 1), self.btn, 2], True, compact=True, compact_spacing=0, parent_widget=self) if read_only: self.edit.setReadOnly(True) update_font(self.edit, italic=True) else: self.edit.focusIn.connect(self._focusIn) self.edit.focusOut.connect(self._focusOut) self.edit.focusOutViaKeyPress.connect(self._focusOutViaKeyPress) self.edit.textChanged.connect(self._textChanged) self.btn.clicked.connect(self._browse_package)
def __init__(self, context_model=None, parent=None, lock_package=False, package_selectable_callback=None): super(BrowsePackageWidget, self).__init__(parent) ContextViewMixin.__init__(self, context_model) self.edit = PackageLineEdit(context_model, family_only=True) if lock_package: self.edit.hide() self.versions_table = PackageVersionsTable(context_model, callback=package_selectable_callback) self.package_tab = PackageTabWidget(versions_tab=False) splitter = ConfiguredSplitter(app.config, "layout/splitter/browse_package") splitter.setOrientation(QtCore.Qt.Vertical) splitter.addWidget(self.versions_table) splitter.addWidget(self.package_tab) if not splitter.apply_saved_layout(): splitter.setStretchFactor(0, 2) splitter.setStretchFactor(1, 1) layout = QtGui.QVBoxLayout() layout.addWidget(self.edit) layout.addWidget(splitter) self.setLayout(layout) self.edit.focusOutViaKeyPress.connect(self._set_package_name) self.versions_table.itemSelectionChanged.connect(self._set_package)
class PackageSelectWidget(QtGui.QWidget, ContextViewMixin): focusOutViaKeyPress = QtCore.Signal(str) focusOut = QtCore.Signal(str) textChanged = QtCore.Signal(str) def __init__(self, context_model=None, read_only=False, parent=None): super(PackageSelectWidget, self).__init__(parent) ContextViewMixin.__init__(self, context_model) self.edit = PackageLineEdit(self.context_model, read_only=read_only, parent=self) self.edit.setStyleSheet("QLineEdit { border : 0px;}") self.btn = IconButton("package", "browse packages") self.btn.hide() create_pane([(self.edit, 1), self.btn, 2], True, compact=True, compact_spacing=0, parent_widget=self) if read_only: self.edit.setReadOnly(True) update_font(self.edit, italic=True) else: self.edit.focusIn.connect(self._focusIn) self.edit.focusOut.connect(self._focusOut) self.edit.focusOutViaKeyPress.connect(self._focusOutViaKeyPress) self.edit.textChanged.connect(self._textChanged) self.btn.clicked.connect(self._browse_package) def text(self): return self.edit.text() def setText(self, txt): self.edit.setText(txt) def clone_into(self, other): self.edit.clone_into(other.edit) def setFocus(self): self.edit.setFocus() self.btn.show() def _focusIn(self): self.btn.show() def _focusOut(self, txt): self.btn.hide() self.focusOut.emit(txt) def _focusOutViaKeyPress(self, txt): self.btn.hide() self.focusOutViaKeyPress.emit(txt) def _textChanged(self, txt): self.textChanged.emit(txt) def _browse_package(self, button): self.btn.show() dlg = BrowsePackageDialog( context_model=self.context_model, package_text=self.text(), parent=self.parentWidget() ) dlg.exec_() if dlg.package: txt = dlg.package.qualified_name self.setText(txt) self.setFocus()
class PackageSelectWidget(QtWidgets.QWidget, ContextViewMixin): focusOutViaKeyPress = QtCore.Signal(str) focusOut = QtCore.Signal(str) textChanged = QtCore.Signal(str) def __init__(self, context_model=None, read_only=False, parent=None): super(PackageSelectWidget, self).__init__(parent) ContextViewMixin.__init__(self, context_model) self.edit = PackageLineEdit(self.context_model, read_only=read_only, parent=self) self.edit.setStyleSheet("QLineEdit { border : 0px;}") self.btn = IconButton("package", "browse packages") self.btn.hide() create_pane([(self.edit, 1), self.btn, 2], True, compact=True, compact_spacing=0, parent_widget=self) if read_only: self.edit.setReadOnly(True) update_font(self.edit, italic=True) else: self.edit.focusIn.connect(self._focusIn) self.edit.focusOut.connect(self._focusOut) self.edit.focusOutViaKeyPress.connect(self._focusOutViaKeyPress) self.edit.textChanged.connect(self._textChanged) self.btn.clicked.connect(self._browse_package) def text(self): return self.edit.text() def setText(self, txt): self.edit.setText(txt) def clone_into(self, other): self.edit.clone_into(other.edit) def setFocus(self): self.edit.setFocus() self.btn.show() def _focusIn(self): self.btn.show() def _focusOut(self, txt): self.btn.hide() self.focusOut.emit(txt) def _focusOutViaKeyPress(self, txt): self.btn.hide() self.focusOutViaKeyPress.emit(txt) def _textChanged(self, txt): self.textChanged.emit(txt) def _browse_package(self, button): self.btn.show() dlg = BrowsePackageDialog(context_model=self.context_model, package_text=self.text(), parent=self.parentWidget()) dlg.exec_() if dlg.package: txt = dlg.package.qualified_name self.setText(txt) self.setFocus()