Commit Graph

484 Commits

Author SHA1 Message Date
Isaiah Odhner
1f171259bb Fix shifted/cutoff selection when melding with negative coordinates
Code intended to prevent errors was also creating an offset between
the source and target regions. The source region needs to be adjusted
to match the clipped target region.
2023-04-26 13:49:33 -04:00
Isaiah Odhner
0c52788843 Fix some type checker errors 2023-04-26 13:35:52 -04:00
Isaiah Odhner
3f3375c1fd Paste to top left of viewport (when scrolled right/down) 2023-04-26 13:13:42 -04:00
Isaiah Odhner
5bd6684ba7 Clean up commented out clipboard code 2023-04-26 13:03:53 -04:00
Isaiah Odhner
5fe0178d36 Note new dependencies in installation instructions 2023-04-26 12:52:27 -04:00
Isaiah Odhner
f114723be4 Make pasting undoable 2023-04-26 12:47:08 -04:00
Isaiah Odhner
55c280cdfb Don't use pyperclip.is_available() 2023-04-26 12:38:14 -04:00
Isaiah Odhner
8c936552b7 Don't delete selection if copy fails during cut 2023-04-26 12:32:12 -04:00
Isaiah Odhner
0c3cc45ddd Start implementing copy/paste with pyperclip 2023-04-26 12:28:42 -04:00
Isaiah Odhner
ed5e399a58 Don't delete the whole textbox when pressing Delete 2023-04-26 11:19:16 -04:00
Isaiah Odhner
fe8c05bdc0 Reorder expanding_directory_tree next to directory_tree_selected_path 2023-04-26 03:21:09 -04:00
Isaiah Odhner
c81d45756b Add docstrings to all PaintApp state, replacing comments 2023-04-26 03:19:23 -04:00
Isaiah Odhner
3849f57ed6 Add docstrings to all functions 2023-04-26 03:01:00 -04:00
Isaiah Odhner
a5518a5894 Remove redundant cancel_preview, handled by stop_action_in_progress 2023-04-26 02:38:27 -04:00
Isaiah Odhner
6d6ef25da4 Cancel active tool by pressing both mouse buttons 2023-04-26 01:30:36 -04:00
Isaiah Odhner
bf8c7fa1a6 Comment/typecheck new CharInput render_line code 2023-04-26 01:24:37 -04:00
Isaiah Odhner
818cf55c5e I drew some galaxies
just messin' around
2023-04-26 01:14:38 -04:00
Isaiah Odhner
63c9a3ea11 Cancel active tool with Escape 2023-04-26 00:38:50 -04:00
Isaiah Odhner
c6967c69f5 Show selected foreground color in the CharInput 2023-04-26 00:06:57 -04:00
Isaiah Odhner
d043d444e9 Hide selection border while dragging 2023-04-25 19:22:57 -04:00
Isaiah Odhner
15ffabbaac Use repr instead of str when formatting exceptions
This is a little better, but not great.
2023-04-25 19:03:50 -04:00
Isaiah Odhner
1ab1dfb037 Fix extraneous white cell at top left when loading ANSI files 2023-04-25 18:43:28 -04:00
Isaiah Odhner
ba7f8e6a0a Don't invert the inner textbox border, that's too visually confusing 2023-04-25 18:31:50 -04:00
Isaiah Odhner
5ba8cbdbb8 Fix assertion error when using Select or Text before any other tool
AssertionError: selection_drag_offset should only be set if there's a selection
2023-04-25 18:26:15 -04:00
Isaiah Odhner
aae99c3247 Add parenthesis in complex canvas rendering conditional 2023-04-25 18:19:54 -04:00
Isaiah Odhner
0e25b99d2b Update known issue with newly-known knowledge about the issue
There are known knowns, and unknown knowns, and also known unknowns,
and unknown unknowns, but this is a now-no-longer-known-unknown-now-known-known, y'know? (I don't not not not not not not know.)
2023-04-25 18:08:34 -04:00
Isaiah Odhner
66f4b77ff3 Further clarify comment about selection cutout vs melding regions 2023-04-25 17:36:52 -04:00
Isaiah Odhner
5141044ef0 Clarify/expound comment about selection cutout vs melding regions 2023-04-25 17:07:50 -04:00
Isaiah Odhner
91ce544569 Move selection box with arrow keys
Note: This doesn't cut out the selection if you haven't dragged it yet,
with the mouse. It should probably be equivalent to mouse dragging, but
this current behavior could be useful too.
2023-04-25 16:53:47 -04:00
Isaiah Odhner
155f73b319 Update Known Issues 2023-04-25 16:36:52 -04:00
Isaiah Odhner
d94482aa82 Discard textbox if you never typed anything into it 2023-04-25 16:25:47 -04:00
Isaiah Odhner
f33802af30 Make Text tool undoable 2023-04-25 16:14:29 -04:00
Isaiah Odhner
5faaccbd2a Make Clear Selection (Delete) undoable 2023-04-25 16:07:23 -04:00
Isaiah Odhner
65dbc4bfe6 Refactor conditional to early return 2023-04-25 15:54:34 -04:00
Isaiah Odhner
522004638e DRY meld_selection + action_clear_selection 2023-04-25 15:53:40 -04:00
Isaiah Odhner
b793a31108 Stop active tool when hitting Ctrl+A 2023-04-25 15:43:43 -04:00
Isaiah Odhner
277a879b5c Finalize Polygon/Curve when switching tools 2023-04-25 15:42:36 -04:00
Isaiah Odhner
0decdb06d7 DRY polygon/curve undo state creation 2023-04-25 15:41:24 -04:00
Isaiah Odhner
8472b37859 Keep Curve/Polygon preview when mouse leaves the canvas 2023-04-25 15:41:24 -04:00
Isaiah Odhner
8c932ea53f Fix dragging selection by top left corner
I recognized this as another Offset -> bool coercion issue.
2023-04-25 14:39:59 -04:00
Isaiah Odhner
bf2b5ec94e Fix dragging windows
This was broken in "Fix a type checker error" e62064a307 
where I just added `and self.offset_at_drag_start`.
The problem is that Offset defines __bool__ and are falsy when (0,0),
and the windows, despite starting out in the center, initially have an
offset of (0,0) FROM this center position.
2023-04-25 14:29:13 -04:00
Isaiah Odhner
769c7af339 Expand Known Issues 2023-04-25 14:10:59 -04:00
Isaiah Odhner
b46273cf9f Add a threshold to Color Eraser, comparing color components 2023-04-25 13:51:48 -04:00
Isaiah Odhner
7bbca533b2 Tweak dark clouds
I wanted to do more with this, but I actually ran into some problems
where it wouldn't replace a color. It might need a threshold.
2023-04-25 13:50:25 -04:00
Isaiah Odhner
d37291b9d3 Color Eraser test ahoy! 2023-04-25 13:41:02 -04:00
Isaiah Odhner
84af26c0a2 Implement Color Eraser feature 2023-04-25 13:27:54 -04:00
Isaiah Odhner
f67a5a0376 Make "Tips" part of "Usage" section 2023-04-25 13:16:24 -04:00
Isaiah Odhner
1c8a6493e9 Tweak ship: add helm and more rigging
This wheel is probably in the wrong place, but so is the rest.
2023-04-25 13:16:24 -04:00
Isaiah Odhner
9c5d2a5466 I really enjoyed drawing this ship
I have a bad habit of not actually using the software I create, but
whilst perhaps I should have gone to bed, this was a delight to create,
the childlike joy of picking blocks together to form an image, imagining
what I could do with different pieces, and putting silly smiley faces
in as the crew and making them all different colors.

I didn't look at any reference while drawing this, so... it doubtless
contains many inaccuracies.
But that's rather beside the point, isn't it?

Aside from just having fun with it, I observed that the Pick Color tool
is vastly more important than in a raster workflow, since it picks not
just a color, but two colors and a character! And I would really like
the Color Eraser feature. I would sometimes use the wrong blue to match
the sky and then have to Pick Color, change color, and replace the cell,
one by one, whereas the Color Eraser should take care of that.
It's a little awkward selecting colors with Ctrl click, with it
not showing the foreground color (Input doesn't seem to support it), and
with the cognitive dissonance between the background vs foreground
here vs in MS Paint. Other than that, it worked splendidly.
2023-04-25 13:16:24 -04:00
Isaiah Odhner
2af323bab2 Note Playscii license/language compatibility 2023-04-25 13:16:24 -04:00