Пример #1
0
from __future__ import annotations

import contextlib
from typing import Literal

from prettyqt import gui
from prettyqt.qt import QtGui
from prettyqt.utils import bidict

MOVE_MODE = bidict(move=QtGui.QTextCursor.MoveMode.MoveAnchor,
                   keep=QtGui.QTextCursor.MoveMode.KeepAnchor)

MoveModeStr = Literal["move", "keep"]

MOVE_OPERATION = bidict(
    no_move=QtGui.QTextCursor.MoveOperation.NoMove,
    start=QtGui.QTextCursor.MoveOperation.Start,
    start_of_line=QtGui.QTextCursor.MoveOperation.StartOfLine,
    start_of_block=QtGui.QTextCursor.MoveOperation.StartOfBlock,
    start_of_word=QtGui.QTextCursor.MoveOperation.StartOfWord,
    previous_block=QtGui.QTextCursor.MoveOperation.PreviousBlock,
    previous_char=QtGui.QTextCursor.MoveOperation.PreviousCharacter,
    previous_word=QtGui.QTextCursor.MoveOperation.PreviousWord,
    up=QtGui.QTextCursor.MoveOperation.Up,
    left=QtGui.QTextCursor.MoveOperation.Left,
    word_left=QtGui.QTextCursor.MoveOperation.WordLeft,
    end=QtGui.QTextCursor.MoveOperation.End,
    end_of_line=QtGui.QTextCursor.MoveOperation.EndOfLine,
    end_of_word=QtGui.QTextCursor.MoveOperation.EndOfWord,
    end_of_block=QtGui.QTextCursor.MoveOperation.EndOfBlock,
    next_block=QtGui.QTextCursor.MoveOperation.NextBlock,
Пример #2
0
from __future__ import annotations

from typing import Literal

from prettyqt import constants, gui, widgets
from prettyqt.qt import QtWidgets
from prettyqt.utils import InvalidParamError, bidict

SHAPE_MODE = bidict(
    mask=QtWidgets.QGraphicsPixmapItem.ShapeMode.MaskShape,
    bounding_rect=QtWidgets.QGraphicsPixmapItem.ShapeMode.BoundingRectShape,
    heuristic_mask=QtWidgets.QGraphicsPixmapItem.ShapeMode.HeuristicMaskShape,
)

ShapeModeStr = Literal["mask", "bounding_rect", "heuristic_mask"]

QtWidgets.QGraphicsPixmapItem.__bases__ = (widgets.GraphicsItem, )


class GraphicsPixmapItem(QtWidgets.QGraphicsPixmapItem):
    def serialize_fields(self):
        return dict(
            offset=self.offset(),
            pixmap=self.get_pixmap(),
            shape_mode=self.get_shape_mode(),
            transformation_mode=self.get_transformation_mode(),
        )

    def set_transformation_mode(self, mode: constants.TransformationModeStr):
        """Set transformation mode.
Пример #3
0
from __future__ import annotations

from typing import Literal

from prettyqt import widgets
from prettyqt.qt import QtWidgets
from prettyqt.utils import InvalidParamError, bidict

MODE = bidict(
    hex=QtWidgets.QLCDNumber.Mode.Hex,
    decimal=QtWidgets.QLCDNumber.Mode.Dec,
    octal=QtWidgets.QLCDNumber.Mode.Oct,
    binary=QtWidgets.QLCDNumber.Mode.Bin,
)

ModeStr = Literal["hex", "decimal", "octal", "binary"]

SEGMENT_STYLE = bidict(
    outline=QtWidgets.QLCDNumber.SegmentStyle.Outline,
    filled=QtWidgets.QLCDNumber.SegmentStyle.Filled,
    flat=QtWidgets.QLCDNumber.SegmentStyle.Flat,
)

SegmentStyleStr = Literal["outline", "filled", "flat"]

QtWidgets.QLCDNumber.__bases__ = (widgets.Frame, )


class LCDNumber(QtWidgets.QLCDNumber):
    def serialize_fields(self):
        return dict(
Пример #4
0
from __future__ import annotations

from typing import Literal

from prettyqt import core
from prettyqt.qt import QtCore
from prettyqt.utils import InvalidParamError, bidict

DELETION_POLICY = bidict(
    keep=QtCore.QAbstractAnimation.DeletionPolicy.KeepWhenStopped,
    delete=QtCore.QAbstractAnimation.DeletionPolicy.DeleteWhenStopped,
)

DeletionPolicyStr = Literal["keep", "delete"]

DIRECTION = bidict(
    forward=QtCore.QAbstractAnimation.Direction.Forward,
    backward=QtCore.QAbstractAnimation.Direction.Backward,
)

DirectionStr = Literal["forward", "backward"]

STATE = bidict(
    stopped=QtCore.QAbstractAnimation.State.Stopped,
    paused=QtCore.QAbstractAnimation.State.Paused,
    running=QtCore.QAbstractAnimation.State.Running,
)

StateStr = Literal["stopped", "paused", "running"]

QtCore.QAbstractAnimation.__bases__ = (core.Object, )
Пример #5
0
# -*- coding: utf-8 -*-
"""
@author: Philipp Temminghoff
"""

from qtpy import QtWidgets, QtCore

from prettyqt import widgets, core
from prettyqt.utils import bidict


SCROLL_HINTS = bidict(ensure_visible=QtWidgets.QAbstractItemView.EnsureVisible,
                      position_at_top=QtWidgets.QAbstractItemView.PositionAtTop,
                      position_at_bottom=QtWidgets.QAbstractItemView.PositionAtBottom,
                      position_at_center=QtWidgets.QAbstractItemView.PositionAtCenter)


QtWidgets.QListWidget.__bases__ = (widgets.ListView,)


class NoData(object):
    pass


class ListWidget(QtWidgets.QListWidget):

    value_changed = core.Signal(object)

    def __init__(self, parent=None, selection_mode="single"):
        super().__init__(parent)
        self.itemSelectionChanged.connect(self.on_index_change)
Пример #6
0
from prettyqt.qt import QtGui
from prettyqt.utils import InvalidParamError, bidict, mappers, types

mod = QtGui.QImageIOHandler

IMAGE_OPTION = bidict(
    size=mod.ImageOption.Size,
    clip_rect=mod.ImageOption.ClipRect,
    scaled_size=mod.ImageOption.ScaledSize,
    scaled_clip_rect=mod.ImageOption.ScaledClipRect,
    description=mod.ImageOption.Description,
    compression_ratio=mod.ImageOption.CompressionRatio,
    gamma=mod.ImageOption.Gamma,
    quality=mod.ImageOption.Quality,
    name=mod.ImageOption.Name,
    subtype=mod.ImageOption.SubType,
    incremental_reading=mod.ImageOption.IncrementalReading,
    endianness=mod.ImageOption.Endianness,
    animation=mod.ImageOption.Animation,
    background_color=mod.ImageOption.BackgroundColor,
    # image_format=mod.ImageOption.ImageFormat,
    supported_sub_types=mod.ImageOption.SupportedSubTypes,
    optimized_write=mod.ImageOption.OptimizedWrite,
    progressive_scan_write=mod.ImageOption.ProgressiveScanWrite,
    image_transformation=mod.ImageOption.ImageTransformation,
)

ImageOptionStr = Literal["size", "clip_rect", "scaled_size",
                         "scaled_clip_rect", "description",
                         "compression_ratio", "gamma", "quality", "name",
                         "subtype", "incremental_reading", "endianness",
Пример #7
0
# -*- coding: utf-8 -*-
"""
@author: Philipp Temminghoff
"""

import pathlib
from typing import List, Optional

from qtpy import QtWidgets

from prettyqt import core, widgets
from prettyqt.utils import bidict


MODES = bidict(existing_file=QtWidgets.QFileDialog.ExistingFile,
               existing_files=QtWidgets.QFileDialog.ExistingFiles,
               any_file=QtWidgets.QFileDialog.AnyFile,
               directory=QtWidgets.QFileDialog.Directory)

LABELS = bidict(look_in=QtWidgets.QFileDialog.LookIn,
                filename=QtWidgets.QFileDialog.FileName,
                filetype=QtWidgets.QFileDialog.FileType,
                accept=QtWidgets.QFileDialog.Accept,
                reject=QtWidgets.QFileDialog.Reject)

ACCEPT_MODES = bidict(save=QtWidgets.QFileDialog.AcceptSave,
                      open=QtWidgets.QFileDialog.AcceptOpen)

VIEW_MODES = bidict(detail=QtWidgets.QFileDialog.Detail,
                    list=QtWidgets.QFileDialog.List)

FILTERS = bidict(dirs=core.Dir.Dirs,
Пример #8
0
from __future__ import annotations

from typing import Literal

from prettyqt import constants, core, widgets
from prettyqt.qt import QtCore, QtWidgets
from prettyqt.utils import InvalidParamError, bidict

SIZE_CONSTRAINT = bidict(
    default=QtWidgets.QLayout.SizeConstraint.SetDefaultConstraint,
    fixed=QtWidgets.QLayout.SizeConstraint.SetFixedSize,
    minimum=QtWidgets.QLayout.SizeConstraint.SetMinimumSize,
    maximum=QtWidgets.QLayout.SizeConstraint.SetMaximumSize,
    min_and_max=QtWidgets.QLayout.SizeConstraint.SetMinAndMaxSize,
    none=QtWidgets.QLayout.SizeConstraint.SetNoConstraint,
)

SizeConstraintStr = Literal["default", "fixed", "minimum", "maximum",
                            "min_and_max", "none"]

QtWidgets.QLayout.__bases__ = (core.Object, widgets.LayoutItem)


class Layout(QtWidgets.QLayout):
    def __getitem__(
            self,
            index: str | int) -> QtWidgets.QWidget | QtWidgets.QLayout | None:
        if isinstance(index, int):
            item = self.itemAt(index)
            widget = item.widget()
            if widget is None:
Пример #9
0
from __future__ import annotations

from typing import Literal

from prettyqt import constants, gui, widgets
from prettyqt.qt import QtCharts
from prettyqt.utils import InvalidParamError, bidict

MARKER_SHAPES = bidict(
    default=QtCharts.QLegend.MarkerShape.MarkerShapeDefault,
    rectangle=QtCharts.QLegend.MarkerShape.MarkerShapeRectangle,
    circle=QtCharts.QLegend.MarkerShape.MarkerShapeCircle,
    from_series=QtCharts.QLegend.MarkerShape.MarkerShapeFromSeries,
)

MarkerShapeStr = Literal["default", "rectangle", "circle", "from_series"]

QtCharts.QLegend.__bases__ = (widgets.GraphicsWidget, )


class Legend:
    def __init__(self, item: QtCharts.QLegend):
        self.item = item

    def __getattr__(self, val):
        return getattr(self.item, val)

    def serialize_fields(self):
        return dict(
            alignment=self.get_alignment(),
            background_visible=self.isBackgroundVisible(),
Пример #10
0
# -*- coding: utf-8 -*-
"""
@author: Philipp Temminghoff
"""

from qtpy import QtWidgets, QtCore

from prettyqt import widgets, core
from prettyqt.utils import bidict

MODES = bidict(maximum=QtWidgets.QLayout.SetMaximumSize,
               fixed=QtWidgets.QLayout.SetFixedSize)

ALIGNMENTS = bidict(left=QtCore.Qt.AlignLeft,
                    right=QtCore.Qt.AlignRight,
                    top=QtCore.Qt.AlignTop,
                    bottom=QtCore.Qt.AlignBottom)

QtWidgets.QLayout.__bases__ = (core.Object, QtWidgets.QLayoutItem)


class Layout(QtWidgets.QLayout):
    def __repr__(self):
        return f"{self.__class__.__name__}: {len(self)} children"

    def set_margin(self, margin: int):
        self.setContentsMargins(margin, margin, margin, margin)

    def set_size_mode(self, mode: str):
        """set the size mode of the layout
Пример #11
0
from __future__ import annotations

from typing import Literal

from prettyqt import constants, core, widgets
from prettyqt.qt import QtCore, QtWidgets
from prettyqt.utils import InvalidParamError, bidict, types


INPUT = bidict(
    press=QtWidgets.QScroller.Input.InputPress,
    move=QtWidgets.QScroller.Input.InputMove,
    release=QtWidgets.QScroller.Input.InputRelease,
)

InputStr = Literal["press", "move", "release"]

SCROLLER_GESTURE_TYPE = bidict(
    touch=QtWidgets.QScroller.ScrollerGestureType.TouchGesture,
    left_mouse_button=QtWidgets.QScroller.ScrollerGestureType.LeftMouseButtonGesture,
    middle_mouse_button=QtWidgets.QScroller.ScrollerGestureType.MiddleMouseButtonGesture,
    right_mouse_button=QtWidgets.QScroller.ScrollerGestureType.RightMouseButtonGesture,
)

ScrollGestureTypeStr = Literal[
    "touch", "left_mouse_button", "middle_mouse_button", "right_mouse_button"
]

STATE = bidict(
    inactive=QtWidgets.QScroller.State.Inactive,
    pressed=QtWidgets.QScroller.State.Pressed,
Пример #12
0
from __future__ import annotations

import os
import pathlib
from typing import Any, Literal

from prettyqt.qt import QtCore
from prettyqt.utils import bidict, types

COMPONENT_FORMATTING_OPTIONS = bidict(
    pretty_decoded=QtCore.QUrl.ComponentFormattingOption.PrettyDecoded,
    encode_spaces=QtCore.QUrl.ComponentFormattingOption.EncodeSpaces,
    encode_unicode=QtCore.QUrl.ComponentFormattingOption.EncodeUnicode,
    encode_delimiters=QtCore.QUrl.ComponentFormattingOption.EncodeDelimiters,
    encode_reserved=QtCore.QUrl.ComponentFormattingOption.EncodeReserved,
    decode_reserved=QtCore.QUrl.ComponentFormattingOption.DecodeReserved,
    fully_encoded=QtCore.QUrl.ComponentFormattingOption.FullyEncoded,
    fully_decoded=QtCore.QUrl.ComponentFormattingOption.FullyDecoded,
)

ComponentFormattingStr = Literal["pretty_decoded", "encode_spaces",
                                 "encode_unicode", "encode_delimiters",
                                 "encode_reserved", "decode_reserved",
                                 "fully_encoded", "fully_decoded", ]

PARSING_MODES = bidict(
    tolerant=QtCore.QUrl.ParsingMode.TolerantMode,
    strict=QtCore.QUrl.ParsingMode.StrictMode,
    decoded=QtCore.QUrl.ParsingMode.DecodedMode,
)
Пример #13
0
from __future__ import annotations

from typing import Literal

from prettyqt import gui
from prettyqt.qt import QtCore, QtGui
from prettyqt.utils import InvalidParamError, bidict, types

IMAGE_WRITER_ERROR = bidict(
    device=QtGui.QImageWriter.ImageWriterError.DeviceError,
    unsupported_format=QtGui.QImageWriter.ImageWriterError.
    UnsupportedFormatError,
    invalid_image=QtGui.QImageWriter.ImageWriterError.InvalidImageError,
    unknown=QtGui.QImageWriter.ImageWriterError.UnknownError,
)

ImageWriterErrorStr = Literal["device", "unsupported_format", "invalid_image",
                              "unknown"]


class ImageWriter(QtGui.QImageWriter):
    def __setitem__(self, key: str, val: str):
        self.setText(key, val)

    def get_error(self) -> ImageWriterErrorStr:
        """Return error type.

        Returns:
            error type
        """
        return IMAGE_WRITER_ERROR.inverse[self.error()]
Пример #14
0
from __future__ import annotations

import datetime
from typing import Literal

from prettyqt import widgets
from prettyqt.qt import QtCore, QtWidgets
from prettyqt.utils import InvalidParamError, bidict, types

SELECTION_MODE = bidict(
    none=QtWidgets.QCalendarWidget.SelectionMode.NoSelection,
    single=QtWidgets.QCalendarWidget.SelectionMode.SingleSelection,
)

SelectionModeStr = Literal["none", "single"]

VERTICAL_HEADER_FORMAT = bidict(
    none=QtWidgets.QCalendarWidget.VerticalHeaderFormat.NoVerticalHeader,
    week_numbers=QtWidgets.QCalendarWidget.VerticalHeaderFormat.ISOWeekNumbers,
)

VerticalHeaderFormatStr = Literal["none", "week_numbers"]

HORIZONTAL_HEADER_FORMAT = bidict(
    single_letter=QtWidgets.QCalendarWidget.HorizontalHeaderFormat.
    SingleLetterDayNames,
    short=QtWidgets.QCalendarWidget.HorizontalHeaderFormat.ShortDayNames,
    long=QtWidgets.QCalendarWidget.HorizontalHeaderFormat.LongDayNames,
    none=QtWidgets.QCalendarWidget.HorizontalHeaderFormat.NoHorizontalHeader,
)
Пример #15
0
from prettyqt.qt import QtWidgets
from prettyqt.utils import bidict

mod = QtWidgets.QTreeWidgetItemIterator

ITERATOR_FLAGS = bidict(
    all=mod.IteratorFlag.All,
    hidden=mod.IteratorFlag.Hidden,
    not_hidden=mod.IteratorFlag.NotHidden,
    selected=mod.IteratorFlag.Selected,
    unselected=mod.IteratorFlag.Unselected,
    selectable=mod.IteratorFlag.Selectable,
    not_selectable=mod.IteratorFlag.NotSelectable,
    drag_enabled=mod.IteratorFlag.DragEnabled,
    drag_disabled=mod.IteratorFlag.DragDisabled,
    drop_enabled=mod.IteratorFlag.DropEnabled,
    drop_disabled=mod.IteratorFlag.DropDisabled,
    has_children=mod.IteratorFlag.HasChildren,
    no_children=mod.IteratorFlag.NoChildren,
    checked=mod.IteratorFlag.Checked,
    not_checked=mod.IteratorFlag.NotChecked,
    enabled=mod.IteratorFlag.Enabled,
    disabled=mod.IteratorFlag.Disabled,
    editable=mod.IteratorFlag.Editable,
    not_editable=mod.IteratorFlag.NotEditable,
    user_flag=mod.IteratorFlag.UserFlag,
)


class TreeWidgetItemIterator(QtWidgets.QTreeWidgetItemIterator):
    def __init__(
        self,
Пример #16
0
# -*- coding: utf-8 -*-
"""
@author: Philipp Temminghoff
"""

from qtpy import QtWidgets, QtCore

from prettyqt import widgets, core
from prettyqt.utils import bidict

TICK_POSITIONS = bidict(none=QtWidgets.QSlider.NoTicks,
                        both_sides=QtWidgets.QSlider.TicksBothSides,
                        above=QtWidgets.QSlider.TicksAbove,
                        below=QtWidgets.QSlider.TicksBelow)

ORIENTATIONS = bidict(horizontal=QtCore.Qt.Horizontal,
                      vertical=QtCore.Qt.Vertical)


QtWidgets.QSlider.__bases__ = (widgets.AbstractSlider,)


class Slider(QtWidgets.QSlider):

    value_changed = core.Signal(int)

    def __init__(self, orientation="horizontal", parent=None):
        super().__init__(ORIENTATIONS[orientation], parent)
        self.valueChanged.connect(self.on_value_change)

    def __getstate__(self):
Пример #17
0
# -*- coding: utf-8 -*-
"""
@author: Philipp Temminghoff
"""

from qtpy import QtWidgets, QtCore

from prettyqt import widgets
from prettyqt.utils import bidict

TEXT_DIRECTIONS = bidict(top_to_bottom=QtWidgets.QProgressBar.TopToBottom,
                         bottom_to_top=QtWidgets.QProgressBar.BottomToTop)

ALIGNMENTS = bidict(left=QtCore.Qt.AlignLeft,
                    right=QtCore.Qt.AlignRight,
                    top=QtCore.Qt.AlignTop,
                    bottom=QtCore.Qt.AlignBottom)


QtWidgets.QProgressBar.__bases__ = (widgets.Widget,)


class ProgressBar(QtWidgets.QProgressBar):
    """Progress dialog

    wrapper for QtWidgets.QProgressBar
    """

    def __init__(self, text_visible=True, parent=None):
        super().__init__(parent=parent)
        self.setTextVisible(text_visible)
Пример #18
0
from __future__ import annotations

from typing import Literal

from prettyqt import core
from prettyqt.qt import QtPositioning
from prettyqt.utils import bidict

QtPositioning.QGeoAreaMonitorSource.__bases__ = (core.Object, )

mod = QtPositioning.QGeoAreaMonitorSource

ERRORS = bidict(
    access_error=mod.Error.AccessError,
    insufficient_pos_info=mod.Error.InsufficientPositionInfo,
    none=mod.Error.NoError,
    unknown_source=mod.Error.UnknownSourceError,
)

ErrorStr = Literal["access_error", "insufficient_pos_info", "none",
                   "unknown_source"]

AREA_MONITOR_FEATURES = bidict(
    persistent_area=mod.AreaMonitorFeature.PersistentAreaMonitorFeature,
    any_area=mod.AreaMonitorFeature.AnyAreaMonitorFeature,
)

AreaMonitorFeatureStr = Literal["persistent_area", "any_area"]


class GeoAreaMonitorSource(QtPositioning.QGeoAreaMonitorSource):
Пример #19
0
# -*- coding: utf-8 -*-
"""
@author: Philipp Temminghoff
"""

from qtpy import QtWidgets

from prettyqt.utils import bidict

SIZE_POLICIES = bidict(
    fixed=QtWidgets.QSizePolicy.Fixed,
    minimum=QtWidgets.QSizePolicy.Minimum,
    maximum=QtWidgets.QSizePolicy.Maximum,
    preferred=QtWidgets.QSizePolicy.Preferred,
    expanding=QtWidgets.QSizePolicy.Expanding,
    minimum_expanding=QtWidgets.QSizePolicy.MinimumExpanding,
    ignored=QtWidgets.QSizePolicy.Ignored)

CONTROL_TYPES = bidict(default=QtWidgets.QSizePolicy.DefaultType,
                       buttonbox=QtWidgets.QSizePolicy.ButtonBox,
                       checkbox=QtWidgets.QSizePolicy.CheckBox,
                       combobox=QtWidgets.QSizePolicy.ComboBox,
                       frame=QtWidgets.QSizePolicy.Frame,
                       groupbox=QtWidgets.QSizePolicy.GroupBox,
                       label=QtWidgets.QSizePolicy.Label,
                       line=QtWidgets.QSizePolicy.Line,
                       lineedit=QtWidgets.QSizePolicy.LineEdit,
                       pushbutton=QtWidgets.QSizePolicy.PushButton,
                       radiobutton=QtWidgets.QSizePolicy.RadioButton,
                       slider=QtWidgets.QSizePolicy.Slider,
                       spinbox=QtWidgets.QSizePolicy.SpinBox,
Пример #20
0
from __future__ import annotations

import sys
import traceback
from typing import Literal

from prettyqt import core, gui, iconprovider, widgets
from prettyqt.qt import QtCore, QtWidgets
from prettyqt.utils import InvalidParamError, bidict, types


ICONS = bidict(
    none=QtWidgets.QMessageBox.Icon.NoIcon,
    information=QtWidgets.QMessageBox.Icon.Information,
    warning=QtWidgets.QMessageBox.Icon.Warning,
    critical=QtWidgets.QMessageBox.Icon.Critical,
    question=QtWidgets.QMessageBox.Icon.Question,
)

IconStr = Literal["none", "information", "warning", "critical", "question"]

BUTTONS = bidict(
    none=QtWidgets.QMessageBox.StandardButton.NoButton,
    cancel=QtWidgets.QMessageBox.StandardButton.Cancel,
    ok=QtWidgets.QMessageBox.StandardButton.Ok,
    save=QtWidgets.QMessageBox.StandardButton.Save,
    open=QtWidgets.QMessageBox.StandardButton.Open,
    close=QtWidgets.QMessageBox.StandardButton.Close,
    discard=QtWidgets.QMessageBox.StandardButton.Discard,
    apply=QtWidgets.QMessageBox.StandardButton.Apply,
    reset=QtWidgets.QMessageBox.StandardButton.Reset,
Пример #21
0
from __future__ import annotations

from prettyqt.qt import QtQml
from prettyqt.utils import bidict

mod = QtQml.QQmlImageProviderBase

FLAGS = bidict(
    force_async_image_loading=mod.Flag.ForceAsynchronousImageLoading, )

IMAGE_TYPE = bidict(
    image=mod.ImageType.Image,
    pixmap=mod.ImageType.Pixmap,
    texture=mod.ImageType.Texture,
    image_response=mod.ImageType.ImageResponse,
)


class QmlImageProviderBase(QtQml.QQmlImageProviderBase):
    pass
Пример #22
0
from __future__ import annotations

from typing import Literal

import prettyqt
from prettyqt import constants, gui
from prettyqt.qt import QtGui
from prettyqt.utils import InvalidParamError, bidict, mappers

FORMAT_TYPE = bidict(
    invalid=QtGui.QTextFormat.FormatType.InvalidFormat,
    block=QtGui.QTextFormat.FormatType.BlockFormat,
    char=QtGui.QTextFormat.FormatType.CharFormat,
    list=QtGui.QTextFormat.FormatType.ListFormat,
    frame=QtGui.QTextFormat.FormatType.FrameFormat,
    user=QtGui.QTextFormat.FormatType.UserFormat,
)

FormatTypeStr = Literal["invalid", "block", "char", "list", "frame", "user"]

OBJECT_TYPE = bidict(
    none=QtGui.QTextFormat.ObjectTypes.NoObject,
    image=QtGui.QTextFormat.ObjectTypes.ImageObject,
    table=QtGui.QTextFormat.ObjectTypes.TableObject,
    table_cell=QtGui.QTextFormat.ObjectTypes.TableCellObject,
    user=QtGui.QTextFormat.ObjectTypes.UserObject,
)

ObjectTypeStr = Literal["none", "image", "table", "table_cell", "user"]

PAGE_BREAK_FLAG = mappers.FlagMap(
Пример #23
0
from __future__ import annotations

from typing import Literal

from prettyqt import gui
from prettyqt.qt import QtGui
from prettyqt.utils import InvalidParamError, bidict

POSITIONS = bidict(
    in_flow=QtGui.QTextFrameFormat.Position.InFlow,
    flow_left=QtGui.QTextFrameFormat.Position.FloatLeft,
    flow_right=QtGui.QTextFrameFormat.Position.FloatRight,
)

PositionStr = Literal["in_flow", "flow_right", "flow_left"]

BORDER_STYLES = bidict(
    none=QtGui.QTextFrameFormat.BorderStyle.BorderStyle_None,
    dotted=QtGui.QTextFrameFormat.BorderStyle.BorderStyle_Dotted,
    dashed=QtGui.QTextFrameFormat.BorderStyle.BorderStyle_Dashed,
    solid=QtGui.QTextFrameFormat.BorderStyle.BorderStyle_Solid,
    double=QtGui.QTextFrameFormat.BorderStyle.BorderStyle_Double,
    dot_dash=QtGui.QTextFrameFormat.BorderStyle.BorderStyle_DotDash,
    dot_dot_dash=QtGui.QTextFrameFormat.BorderStyle.BorderStyle_DotDotDash,
    groove=QtGui.QTextFrameFormat.BorderStyle.BorderStyle_Groove,
    ridge=QtGui.QTextFrameFormat.BorderStyle.BorderStyle_Ridge,
    inset=QtGui.QTextFrameFormat.BorderStyle.BorderStyle_Inset,
    outset=QtGui.QTextFrameFormat.BorderStyle.BorderStyle_Outset,
)

BorderStyleStr = Literal["none", "dotted", "dashed", "solid", "double",
Пример #24
0
from __future__ import annotations

from typing import Literal

from prettyqt.qt import QtGui
from prettyqt.utils import bidict

WORD_WRAP_MODE = bidict(
    none=QtGui.QTextOption.WrapMode.NoWrap,
    word=QtGui.QTextOption.WrapMode.WordWrap,
    manual=QtGui.QTextOption.WrapMode.ManualWrap,
    anywhere=QtGui.QTextOption.WrapMode.WrapAnywhere,
    boundary_or_anywhere=QtGui.QTextOption.WrapMode.
    WrapAtWordBoundaryOrAnywhere,
)

WordWrapModeStr = Literal["none", "word", "manual", "anywhere",
                          "boundary_or_anywhere"]

TAB_TYPE = bidict(
    left=QtGui.QTextOption.TabType.LeftTab,
    right=QtGui.QTextOption.TabType.RightTab,
    center=QtGui.QTextOption.TabType.CenterTab,
    delimiter=QtGui.QTextOption.TabType.DelimiterTab,
)

TabTypeStr = Literal["left", "right", "center", "delimiter"]

FLAG = bidict(
    include_trailing_whitespaces=QtGui.QTextOption.Flag.IncludeTrailingSpaces,
    show_tabs_and_spaces=QtGui.QTextOption.Flag.ShowTabsAndSpaces,
Пример #25
0
Item = QtWebEngineCore.QWebEngineDownloadRequest

DOWNLOAD_INTERRUPT_REASONS = bidict(
    none=Item.DownloadInterruptReason.NoReason,
    file_failed=Item.DownloadInterruptReason.FileFailed,
    file_access_denied=Item.DownloadInterruptReason.FileAccessDenied,
    file_no_space=Item.DownloadInterruptReason.FileNoSpace,
    filename_too_long=Item.DownloadInterruptReason.FileNameTooLong,
    file_too_large=Item.DownloadInterruptReason.FileTooLarge,
    file_virus_infected=Item.DownloadInterruptReason.FileVirusInfected,
    file_transient_error=Item.DownloadInterruptReason.FileTransientError,
    file_blocked=Item.DownloadInterruptReason.FileBlocked,
    file_security_check_failed=Item.DownloadInterruptReason.
    FileSecurityCheckFailed,
    file_too_short=Item.DownloadInterruptReason.FileTooShort,
    file_hash_mismatch=Item.DownloadInterruptReason.FileHashMismatch,
    network_fialed=Item.DownloadInterruptReason.NetworkFailed,
    network_timeout=Item.DownloadInterruptReason.NetworkTimeout,
    network_disconnected=Item.DownloadInterruptReason.NetworkDisconnected,
    network_server_down=Item.DownloadInterruptReason.NetworkServerDown,
    network_invalid_request=Item.DownloadInterruptReason.NetworkInvalidRequest,
    server_failed=Item.DownloadInterruptReason.ServerFailed,
    server_bad_content=Item.DownloadInterruptReason.ServerBadContent,
    server_unauthorized=Item.DownloadInterruptReason.ServerUnauthorized,
    server_cert_problem=Item.DownloadInterruptReason.ServerCertProblem,
    server_forbidden=Item.DownloadInterruptReason.ServerForbidden,
    server_unreachable=Item.DownloadInterruptReason.ServerUnreachable,
    user_canceled=Item.DownloadInterruptReason.UserCanceled,
)

DownloadInterruptReasonStr = Literal["none", "file_failed",
Пример #26
0
from __future__ import annotations

from prettyqt import positioning
from prettyqt.qt import QtCore, QtPositioning
from prettyqt.utils import bidict

QNmeaPositionInfoSource = QtPositioning.QNmeaPositionInfoSource

UPDATE_MODES = bidict(
    real_time=QtPositioning.QNmeaPositionInfoSource.UpdateMode.RealTimeMode,
    simulation=QtPositioning.QNmeaPositionInfoSource.UpdateMode.SimulationMode,
)

QtPositioning.QNmeaPositionInfoSource.__bases__ = (
    positioning.GeoPositionInfoSource, )


class NmeaPositionInfoSource(QtPositioning.QNmeaPositionInfoSource):
    def __init__(
        self,
        update_mode: QtPositioning.QNmeaPositionInfoSource.UpdateMode | str,
        parent: QtCore.QObject,
    ):
        if isinstance(update_mode,
                      QtPositioning.QNmeaPositionInfoSource.UpdateMode):
            mode = update_mode
        else:
            mode = UPDATE_MODES[update_mode]
        super().__init__(mode, parent)

    def __repr__(self):
Пример #27
0
from __future__ import annotations

from typing import Literal

from prettyqt import widgets
from prettyqt.qt import QtWidgets
from prettyqt.utils import bidict

SWIPE_DIRECTION = bidict(
    none=QtWidgets.QSwipeGesture.SwipeDirection.NoDirection,
    left=QtWidgets.QSwipeGesture.SwipeDirection.Left,
    right=QtWidgets.QSwipeGesture.SwipeDirection.Right,
    up=QtWidgets.QSwipeGesture.SwipeDirection.Up,
    down=QtWidgets.QSwipeGesture.SwipeDirection.Down,
)

HorizontalDirectionStr = Literal["none", "left", "right"]
VerticalDirectionStr = Literal["none", "up", "down"]

QtWidgets.QSwipeGesture.__bases__ = (widgets.Gesture, )


class SwipeGesture(QtWidgets.QSwipeGesture):
    def get_horizontal_direction(self) -> HorizontalDirectionStr:
        """Return horizontal direction of the gesture.

        Returns:
            horizontal direction
        """
        return SWIPE_DIRECTION.inverse[self.horizontalDirection()]
Пример #28
0
from __future__ import annotations

from typing import Literal

from prettyqt import core
from prettyqt.qt import QtGui
from prettyqt.utils import InvalidParamError, bidict

NAMED_COLOR_SPACE = bidict(
    srgb=QtGui.QColorSpace.NamedColorSpace.SRgb,
    srgb_linear=QtGui.QColorSpace.NamedColorSpace.SRgbLinear,
    adobe_rgb=QtGui.QColorSpace.NamedColorSpace.AdobeRgb,
    display_p3=QtGui.QColorSpace.NamedColorSpace.DisplayP3,
    pro_photo_rgb=QtGui.QColorSpace.NamedColorSpace.ProPhotoRgb,
)

NamedColorSpaceStr = Literal["srgb", "srgb_linear", "adobe_rgb", "display_p3",
                             "pro_photo_rgb"]

PRIMARIES = bidict(
    custom=QtGui.QColorSpace.Primaries.Custom,
    srgb=QtGui.QColorSpace.Primaries.SRgb,
    adobe_rgb=QtGui.QColorSpace.Primaries.AdobeRgb,
    dci_p3_d65=QtGui.QColorSpace.Primaries.DciP3D65,
    pro_photo_rgb=QtGui.QColorSpace.Primaries.ProPhotoRgb,
)

PrimariesStr = Literal["custom", "srgb", "adobe_rgb", "dci_p3_d65",
                       "pro_photo_rgb"]

TRANSFER_FUNCTION = bidict(
Пример #29
0
from __future__ import annotations

import os
import pathlib
from typing import Iterator, Sequence

from prettyqt import constants, core
from prettyqt.qt import QtCore, QtWidgets
from prettyqt.utils import InvalidParamError, bidict, types


if core.VersionNumber.get_qt_version() >= (5, 14, 0):
    OPTIONS = bidict(
        dont_watch_changes=QtWidgets.QFileSystemModel.Option.DontWatchForChanges,
        dont_resolve_symlinks=QtWidgets.QFileSystemModel.Option.DontResolveSymlinks,
        no_custom_icons=QtWidgets.QFileSystemModel.Option.DontUseCustomDirectoryIcons,
    )

QtWidgets.QFileSystemModel.__bases__ = (core.AbstractItemModel,)


class FileSystemModel(QtWidgets.QFileSystemModel):
    """Class to populate a filesystem treeview."""

    DATA_ROLE = constants.USER_ROLE + 33  # type: ignore
    content_type = "files"

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.setReadOnly(False)
Пример #30
0
from __future__ import annotations

from typing import Literal

from prettyqt import core
from prettyqt.qt import QtCore
from prettyqt.utils import bidict

TYPE = bidict(
    read=QtCore.QSocketNotifier.Type.Read,
    write=QtCore.QSocketNotifier.Type.Write,
    exception=QtCore.QSocketNotifier.Type.Exception,
)

TypeStr = Literal["read", "write", "exception"]

QtCore.QSocketNotifier.__bases__ = (core.Object, )


class SocketNotifier(QtCore.QSocketNotifier):
    # def __repr__(self):
    #     return f"{type(self).__name__}({self.socket()}, {self.type()})"

    def get_type(self) -> TypeStr:
        """Return socket event type.

        Returns:
            socket event type
        """
        return TYPE.inverse[self.type()]