mirror of
https://github.com/1j01/textual-paint.git
synced 2025-01-03 12:22:23 +03:00
Fix some mypy errors (and a couple pyright errors)
This commit is contained in:
parent
dd4fea1e78
commit
16f4bc0a88
@ -57,7 +57,7 @@ class ColorGrid(Container):
|
|||||||
self.color_grid = color_grid
|
self.color_grid = color_grid
|
||||||
self.index = index
|
self.index = index
|
||||||
|
|
||||||
color_list = var(list[str], init=False)
|
color_list: var[list[str]] = var(list[str], init=False)
|
||||||
"""The list of colors to display. NOT TO BE CONFUSED WITH `colors` defined by `Widget`."""
|
"""The list of colors to display. NOT TO BE CONFUSED WITH `colors` defined by `Widget`."""
|
||||||
|
|
||||||
def __init__(self, color_list: list[str], selected_color: str, **kwargs: Any) -> None:
|
def __init__(self, color_list: list[str], selected_color: str, **kwargs: Any) -> None:
|
||||||
@ -337,9 +337,9 @@ class EditColorsDialogWindow(DialogWindow):
|
|||||||
def __init__(self, *children: Widget, title: str = _("Edit Colors"), selected_color: str|None, handle_selected_color: Callable[[str], None], **kwargs: Any) -> None:
|
def __init__(self, *children: Widget, title: str = _("Edit Colors"), selected_color: str|None, handle_selected_color: Callable[[str], None], **kwargs: Any) -> None:
|
||||||
"""Initialize the Edit Colors dialog."""
|
"""Initialize the Edit Colors dialog."""
|
||||||
super().__init__(handle_button=self.handle_button, *children, title=title, **kwargs)
|
super().__init__(handle_button=self.handle_button, *children, title=title, **kwargs)
|
||||||
self.hue_degrees = 0
|
self.hue_degrees = 0.0
|
||||||
self.sat_percent = 0
|
self.sat_percent = 0.0
|
||||||
self.lum_percent = 0
|
self.lum_percent = 0.0
|
||||||
# self._initial_color = selected_color
|
# self._initial_color = selected_color
|
||||||
if selected_color:
|
if selected_color:
|
||||||
self._current_color = selected_color
|
self._current_color = selected_color
|
||||||
|
@ -92,7 +92,7 @@ def get(base_language_str: str, *interpolations: str) -> str:
|
|||||||
|
|
||||||
return base_language_str
|
return base_language_str
|
||||||
|
|
||||||
def interpolate(text: str, interpolations: tuple[str]):
|
def interpolate(text: str, interpolations: tuple[str, ...]):
|
||||||
for i in range(len(interpolations)):
|
for i in range(len(interpolations)):
|
||||||
text = text.replace(f"%{i + 1}", interpolations[i])
|
text = text.replace(f"%{i + 1}", interpolations[i])
|
||||||
return text
|
return text
|
||||||
|
@ -1303,8 +1303,8 @@ class AnsiArtDocument:
|
|||||||
if ansi_el is not None:
|
if ansi_el is not None:
|
||||||
if ansi_el.text is None:
|
if ansi_el.text is None:
|
||||||
return AnsiArtDocument(1, 1, default_bg, default_fg)
|
return AnsiArtDocument(1, 1, default_bg, default_fg)
|
||||||
text = base64.b64decode(ansi_el.text).decode("utf-8")
|
ansi_text = base64.b64decode(ansi_el.text).decode("utf-8")
|
||||||
return AnsiArtDocument.from_ansi(text, default_bg, default_fg)
|
return AnsiArtDocument.from_ansi(ansi_text, default_bg, default_fg)
|
||||||
|
|
||||||
def add_debug_marker(x: float, y: float, color: str) -> None:
|
def add_debug_marker(x: float, y: float, color: str) -> None:
|
||||||
"""Adds a circle to the SVG at the given position, for debugging."""
|
"""Adds a circle to the SVG at the given position, for debugging."""
|
||||||
@ -1779,7 +1779,7 @@ def is_inside_polygon(x: int, y: int, points: list[Offset]) -> bool:
|
|||||||
if y > min(p1y, p2y):
|
if y > min(p1y, p2y):
|
||||||
if y <= max(p1y, p2y):
|
if y <= max(p1y, p2y):
|
||||||
if x <= max(p1x, p2x):
|
if x <= max(p1x, p2x):
|
||||||
x_intersection = x # Avoid "possibly unbound" type checker error
|
x_intersection: float = x # Avoid "possibly unbound" type checker error
|
||||||
# I don't know if this is right; should it flip `inside` in this case?
|
# I don't know if this is right; should it flip `inside` in this case?
|
||||||
# Is this an actual case that can occur, where p1y == p2y AND p1x != p2x?
|
# Is this an actual case that can occur, where p1y == p2y AND p1x != p2x?
|
||||||
if p1y != p2y:
|
if p1y != p2y:
|
||||||
@ -1939,7 +1939,7 @@ def flood_fill(document: AnsiArtDocument, x: int, y: int, fill_ch: str, fill_fg:
|
|||||||
# Simple translation of the "final, combined-scan-and-fill span filler"
|
# Simple translation of the "final, combined-scan-and-fill span filler"
|
||||||
# pseudo-code from https://en.wikipedia.org/wiki/Flood_fill
|
# pseudo-code from https://en.wikipedia.org/wiki/Flood_fill
|
||||||
if not inside(x, y):
|
if not inside(x, y):
|
||||||
return
|
return None
|
||||||
stack: list[tuple[int, int, int, int]] = [(x, x, y, 1), (x, x, y - 1, -1)]
|
stack: list[tuple[int, int, int, int]] = [(x, x, y, 1), (x, x, y - 1, -1)]
|
||||||
while stack:
|
while stack:
|
||||||
x1, x2, y, dy = stack.pop()
|
x1, x2, y, dy = stack.pop()
|
||||||
@ -2595,7 +2595,7 @@ class PaintApp(App[None]):
|
|||||||
points[1].x, points[1].y,
|
points[1].x, points[1].y,
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
gen = points
|
gen = iter(points)
|
||||||
affected_region = Region()
|
affected_region = Region()
|
||||||
for x, y in gen:
|
for x, y in gen:
|
||||||
affected_region = affected_region.union(self.stamp_brush(x, y, affected_region))
|
affected_region = affected_region.union(self.stamp_brush(x, y, affected_region))
|
||||||
@ -4845,6 +4845,7 @@ Columns: {len(palette) // 2}
|
|||||||
# (The new action is allowed to shrink the region compared to the old one)
|
# (The new action is allowed to shrink the region compared to the old one)
|
||||||
if affected_region:
|
if affected_region:
|
||||||
if replace_action:
|
if replace_action:
|
||||||
|
assert old_action is not None, "old_action should have been set if replace_action is True"
|
||||||
affected_region = affected_region.union(old_action.region)
|
affected_region = affected_region.union(old_action.region)
|
||||||
self.canvas.refresh_scaled_region(affected_region)
|
self.canvas.refresh_scaled_region(affected_region)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user