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, parent=None): super(TimestampWidget, self).__init__(parent) self.setFrameStyle(QtWidgets.QFrame.Panel | QtWidgets.QFrame.Sunken) self.context_model = context_model self.popup = None self.package_btn = IconButton("package", "select package release date") self.clock_btn = IconButton("clock", "select time in the past") self.checkbox = QtWidgets.QCheckBox("ignore packages released after:") pane = create_pane( [None, self.checkbox, self.package_btn, self.clock_btn], True, compact=True) self.edit = QtWidgets.QDateTimeEdit() self.edit.setCalendarPopup(True) self.edit.setDateTime(QtCore.QDateTime.currentDateTime()) create_pane([pane, self.edit], False, compact=True, parent_widget=self) self.checkbox.stateChanged.connect(self._stateChanged) self.package_btn.clicked.connect(self._selectPackage) self.clock_btn.clicked.connect(self._selectTime) self.refresh()
def __init__(self, context_model, parent=None): super(TimestampWidget, self).__init__(parent) self.setFrameStyle(QtGui.QFrame.Panel | QtGui.QFrame.Sunken) self.context_model = context_model self.popup = None self.package_btn = IconButton("package", "select package release date") self.clock_btn = IconButton("clock", "select time in the past") self.checkbox = QtGui.QCheckBox("ignore packages released after:") pane = create_pane([None, self.checkbox, self.package_btn, self.clock_btn], True, compact=True) self.edit = QtGui.QDateTimeEdit() self.edit.setCalendarPopup(True) self.edit.setDateTime(QtCore.QDateTime.currentDateTime()) create_pane([pane, self.edit], False, compact=True, parent_widget=self) self.checkbox.stateChanged.connect(self._stateChanged) self.package_btn.clicked.connect(self._selectPackage) self.clock_btn.clicked.connect(self._selectTime) self.refresh()
def __init__(self, context_model, variant_left=None, variant_right=None, parent=None): super(CompareCell, self).__init__(parent) self.context_model = context_model self.left_variant = variant_left self.right_variant = variant_right self.color = None self.side = None self.mode = None self.comparable = False package_paths = self.context_model.packages_path widget = None if self.left_variant and self.right_variant: self.side = "both" equal_versions = ( self.left_variant.version == self.right_variant.version) right_variant_visible = (self.right_variant.wrapped.location in package_paths) self.comparable = right_variant_visible and not equal_versions if self.comparable: # determine how far apart the variant versions are versions = sorted( [self.left_variant.version, self.right_variant.version]) range_ = VersionRange.as_span(*versions) it = iter_packages(name=self.left_variant.name, paths=package_paths, range_=range_) diff_num = sum(1 for x in it) - 1 unit = "version" if diff_num == 1 else "versions" icon_suffixes = {1: "_1", 2: "_2", 3: "_3"} icon_suffix = icon_suffixes.get(diff_num, "") if self.left_variant == self.right_variant: self.mode = "equal_to" self._set_color(0.7, 0.7, 0.7) widget = IconButton("equal_to", "packages are equal") elif self.left_variant.version == self.right_variant.version: # same version, but package is different. This can happen when # a local package is released which then hides a central package # of the same version self.mode = "equalish" self._set_color(1, 1, 0) widget = IconButton( "equalish", "packages versions are equal, but package is different") elif self.left_variant.version > self.right_variant.version: self.mode = "greater_than" self._set_color(0, 1, 0) if self.comparable: desc = "package is %d %s ahead" % (diff_num, unit) widget = IconButton("greater_than" + icon_suffix, desc) else: widget = IconButton("greater_than", "package is newer") else: self.mode = "less_than" self._set_color(1, 0, 0) if self.comparable: desc = "package is %d %s behind" % (diff_num, unit) widget = IconButton("less_than" + icon_suffix, desc) else: widget = IconButton("less_than", "package is older") elif self.right_variant: self.side = "right" self.mode = "missing" self._set_color(1, 0, 0) widget = IconButton("missing", "package is missing") elif self.left_variant: self.side = "left" self.mode = "new" self._set_color(0, 1, 0) widget = IconButton("new", "package is new") if widget: create_pane([None, widget, None], True, compact=True, parent_widget=self) widget.clicked.connect(self._clicked)
class TimestampWidget(QtWidgets.QFrame): timeChanged = QtCore.Signal(int) # epoch time def __init__(self, context_model, parent=None): super(TimestampWidget, self).__init__(parent) self.setFrameStyle(QtWidgets.QFrame.Panel | QtWidgets.QFrame.Sunken) self.context_model = context_model self.popup = None self.package_btn = IconButton("package", "select package release date") self.clock_btn = IconButton("clock", "select time in the past") self.checkbox = QtWidgets.QCheckBox("ignore packages released after:") pane = create_pane( [None, self.checkbox, self.package_btn, self.clock_btn], True, compact=True) self.edit = QtWidgets.QDateTimeEdit() self.edit.setCalendarPopup(True) self.edit.setDateTime(QtCore.QDateTime.currentDateTime()) create_pane([pane, self.edit], False, compact=True, parent_widget=self) self.checkbox.stateChanged.connect(self._stateChanged) self.package_btn.clicked.connect(self._selectPackage) self.clock_btn.clicked.connect(self._selectTime) self.refresh() def datetime(self): """Returns the selected datetime, or None if not set.""" if self.checkbox.isChecked(): return self.edit.dateTime() else: return None def set_time(self, epoch): dt = QtCore.QDateTime() dt.setTime_t(epoch) self.edit.setDateTime(dt) self.checkbox.setChecked(True) self.timeChanged.emit(epoch) def refresh(self): b = self.checkbox.isChecked() self.package_btn.setEnabled(b) self.clock_btn.setEnabled(b) self.edit.setEnabled(b) def _stateChanged(self, state): self.refresh() def _selectPackage(self): fn = lambda x: bool(x.timestamp) dlg = BrowsePackageDialog(context_model=self.context_model, parent=self.parentWidget(), package_selectable_callback=fn) dlg.exec_() if dlg.package: self.set_time(dlg.package.timestamp) def _selectTime(self): self.popup = TimeSelecterPopup(self.clock_btn, parent=self) self.popup.secondsClicked.connect(self._secondsClicked) self.popup.show() def _secondsClicked(self, seconds): now = int(time.time()) self.set_time(now - seconds)
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()
class TimestampWidget(QtGui.QFrame): timeChanged = QtCore.Signal(int) # epoch time def __init__(self, context_model, parent=None): super(TimestampWidget, self).__init__(parent) self.setFrameStyle(QtGui.QFrame.Panel | QtGui.QFrame.Sunken) self.context_model = context_model self.popup = None self.package_btn = IconButton("package", "select package release date") self.clock_btn = IconButton("clock", "select time in the past") self.checkbox = QtGui.QCheckBox("ignore packages released after:") pane = create_pane([None, self.checkbox, self.package_btn, self.clock_btn], True, compact=True) self.edit = QtGui.QDateTimeEdit() self.edit.setCalendarPopup(True) self.edit.setDateTime(QtCore.QDateTime.currentDateTime()) create_pane([pane, self.edit], False, compact=True, parent_widget=self) self.checkbox.stateChanged.connect(self._stateChanged) self.package_btn.clicked.connect(self._selectPackage) self.clock_btn.clicked.connect(self._selectTime) self.refresh() def datetime(self): """Returns the selected datetime, or None if not set.""" if self.checkbox.isChecked(): return self.edit.dateTime() else: return None def set_time(self, epoch): dt = QtCore.QDateTime() dt.setTime_t(epoch) self.edit.setDateTime(dt) self.checkbox.setChecked(True) self.timeChanged.emit(epoch) def refresh(self): b = self.checkbox.isChecked() self.package_btn.setEnabled(b) self.clock_btn.setEnabled(b) self.edit.setEnabled(b) def _stateChanged(self, state): self.refresh() def _selectPackage(self): fn = lambda x: bool(x.timestamp) dlg = BrowsePackageDialog(context_model=self.context_model, parent=self.parentWidget(), package_selectable_callback=fn) dlg.exec_() if dlg.package: self.set_time(dlg.package.timestamp) def _selectTime(self): self.popup = TimeSelecterPopup(self.clock_btn, parent=self) self.popup.secondsClicked.connect(self._secondsClicked) self.popup.show() def _secondsClicked(self, seconds): now = int(time.time()) self.set_time(now - seconds)