mirror of
https://github.com/TagStudioDev/TagStudio.git
synced 2026-02-01 07:39:10 +00:00
refactor: fix various missing and broken type hints (#901)
* fix type hints * text_wrapper.py type fix and minor improvements * fields.py fixes
This commit is contained in:
committed by
GitHub
parent
1939f118f1
commit
46996d50e5
@@ -35,7 +35,7 @@ def theme_fg_overlay(image: Image.Image, use_alpha: bool = True) -> Image.Image:
|
||||
return _apply_overlay(image, im)
|
||||
|
||||
|
||||
def gradient_overlay(image: Image.Image, gradient=list[str]) -> Image.Image:
|
||||
def gradient_overlay(image: Image.Image, gradient: list[str]) -> Image.Image:
|
||||
"""Overlay a color gradient onto an image.
|
||||
|
||||
Args:
|
||||
|
||||
@@ -49,8 +49,8 @@ def four_corner_gradient(
|
||||
|
||||
|
||||
def linear_gradient(
|
||||
size=tuple[int, int],
|
||||
colors=list[str],
|
||||
size: tuple[int, int],
|
||||
colors: list[str],
|
||||
interpolation: Image.Resampling = Image.Resampling.BICUBIC,
|
||||
) -> Image.Image:
|
||||
seed: Image.Image = Image.new(mode="RGBA", size=(len(colors), 1), color="#000000")
|
||||
|
||||
@@ -6,11 +6,11 @@
|
||||
from PIL import Image, ImageDraw, ImageFont
|
||||
|
||||
|
||||
def wrap_line( # type: ignore
|
||||
def wrap_line(
|
||||
text: str,
|
||||
font: ImageFont.ImageFont,
|
||||
width: int = 256,
|
||||
draw: ImageDraw.ImageDraw = None,
|
||||
draw: ImageDraw.ImageDraw | None = None,
|
||||
) -> int:
|
||||
"""Take in a single text line and return the index it should be broken up at.
|
||||
|
||||
@@ -27,15 +27,14 @@ def wrap_line( # type: ignore
|
||||
):
|
||||
if draw.textlength(text[:i], font=font) < width:
|
||||
return i
|
||||
else:
|
||||
return -1
|
||||
return -1
|
||||
|
||||
|
||||
def wrap_full_text(
|
||||
text: str,
|
||||
font: ImageFont.ImageFont,
|
||||
width: int = 256,
|
||||
draw: ImageDraw.ImageDraw = None,
|
||||
draw: ImageDraw.ImageDraw | None = None,
|
||||
) -> str:
|
||||
"""Break up a string to fit the canvas given a kerning value, font size, etc."""
|
||||
lines = []
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
import math
|
||||
from pathlib import Path
|
||||
from typing import Callable
|
||||
from typing import Callable, override
|
||||
from warnings import catch_warnings
|
||||
|
||||
import structlog
|
||||
@@ -54,9 +54,9 @@ class FieldContainer(QWidget):
|
||||
self.setObjectName("fieldContainer")
|
||||
self.title: str = title
|
||||
self.inline: bool = inline
|
||||
self.copy_callback: Callable = None
|
||||
self.edit_callback: Callable = None
|
||||
self.remove_callback: Callable = None
|
||||
self.copy_callback: Callable[[], None] | None = None
|
||||
self.edit_callback: Callable[[], None] | None = None
|
||||
self.remove_callback: Callable[[], None] | None = None
|
||||
button_size = 24
|
||||
|
||||
self.root_layout = QVBoxLayout(self)
|
||||
@@ -129,7 +129,7 @@ class FieldContainer(QWidget):
|
||||
self.set_title(title)
|
||||
self.setStyleSheet(FieldContainer.container_style)
|
||||
|
||||
def set_copy_callback(self, callback: Callable | None = None):
|
||||
def set_copy_callback(self, callback: Callable[[], None] | None = None) -> None:
|
||||
with catch_warnings(record=True):
|
||||
self.copy_button.clicked.disconnect()
|
||||
|
||||
@@ -137,7 +137,7 @@ class FieldContainer(QWidget):
|
||||
if callback:
|
||||
self.copy_button.clicked.connect(callback)
|
||||
|
||||
def set_edit_callback(self, callback: Callable | None = None):
|
||||
def set_edit_callback(self, callback: Callable[[], None] | None = None) -> None:
|
||||
with catch_warnings(record=True):
|
||||
self.edit_button.clicked.disconnect()
|
||||
|
||||
@@ -145,7 +145,7 @@ class FieldContainer(QWidget):
|
||||
if callback:
|
||||
self.edit_button.clicked.connect(callback)
|
||||
|
||||
def set_remove_callback(self, callback: Callable | None = None):
|
||||
def set_remove_callback(self, callback: Callable[[], None] | None = None) -> None:
|
||||
with catch_warnings(record=True):
|
||||
self.remove_button.clicked.disconnect()
|
||||
|
||||
@@ -153,7 +153,7 @@ class FieldContainer(QWidget):
|
||||
if callback:
|
||||
self.remove_button.clicked.connect(callback)
|
||||
|
||||
def set_inner_widget(self, widget: "FieldWidget"):
|
||||
def set_inner_widget(self, widget: "FieldWidget") -> None:
|
||||
if self.field_layout.itemAt(0):
|
||||
old: QWidget = self.field_layout.itemAt(0).widget()
|
||||
self.field_layout.removeWidget(old)
|
||||
@@ -161,19 +161,20 @@ class FieldContainer(QWidget):
|
||||
|
||||
self.field_layout.addWidget(widget)
|
||||
|
||||
def get_inner_widget(self):
|
||||
def get_inner_widget(self) -> QWidget | None:
|
||||
if self.field_layout.itemAt(0):
|
||||
return self.field_layout.itemAt(0).widget()
|
||||
return None
|
||||
|
||||
def set_title(self, title: str):
|
||||
def set_title(self, title: str) -> None:
|
||||
self.title = self.title = f"<h4>{title}</h4>"
|
||||
self.title_widget.setText(self.title)
|
||||
|
||||
def set_inline(self, inline: bool):
|
||||
def set_inline(self, inline: bool) -> None:
|
||||
self.inline = inline
|
||||
|
||||
def enterEvent(self, event: QEnterEvent) -> None: # noqa: N802
|
||||
@override
|
||||
def enterEvent(self, event: QEnterEvent) -> None:
|
||||
# NOTE: You could pass the hover event to the FieldWidget if needed.
|
||||
if self.copy_callback:
|
||||
self.copy_button.setHidden(False)
|
||||
@@ -183,7 +184,8 @@ class FieldContainer(QWidget):
|
||||
self.remove_button.setHidden(False)
|
||||
return super().enterEvent(event)
|
||||
|
||||
def leaveEvent(self, event: QEvent) -> None: # noqa: N802
|
||||
@override
|
||||
def leaveEvent(self, event: QEvent) -> None:
|
||||
if self.copy_callback:
|
||||
self.copy_button.setHidden(True)
|
||||
if self.edit_callback:
|
||||
@@ -192,12 +194,13 @@ class FieldContainer(QWidget):
|
||||
self.remove_button.setHidden(True)
|
||||
return super().leaveEvent(event)
|
||||
|
||||
def resizeEvent(self, event: QResizeEvent) -> None: # noqa: N802
|
||||
@override
|
||||
def resizeEvent(self, event: QResizeEvent) -> None:
|
||||
self.title_widget.setFixedWidth(int(event.size().width() // 1.5))
|
||||
return super().resizeEvent(event)
|
||||
|
||||
|
||||
class FieldWidget(QWidget):
|
||||
def __init__(self, title) -> None:
|
||||
def __init__(self, title: str) -> None:
|
||||
super().__init__()
|
||||
self.title = title
|
||||
self.title: str = title
|
||||
|
||||
Reference in New Issue
Block a user