Isaiah Odhner
b0554a6662
Change editing area background to work better with light mode
2023-04-12 15:32:16 -04:00
Isaiah Odhner
4fa7784651
Toggle dark mode with Ctrl+D
2023-04-12 15:32:16 -04:00
Isaiah Odhner
8369b4e303
Invisibly shrink #available_colors
...
I was trying out adding a background to it and noticed it was bigger than it needs to be.
2023-04-12 15:32:16 -04:00
Isaiah Odhner
5796c5c8b3
Give inset appearance to color wells / selected color
2023-04-12 15:31:52 -04:00
Isaiah Odhner
2e454333fb
Widen selected color display
2023-04-12 15:31:52 -04:00
Isaiah Odhner
083b169257
Add ellipse tool support
2023-04-11 22:30:46 -04:00
Isaiah Odhner
f31069e3b2
Add type hints for undos/redos lists
2023-04-11 22:30:46 -04:00
Isaiah Odhner
67d256883d
Refactor: don't store reference to the live document in Action
...
It feels in danger of accidental usage there, or preventing GC.
2023-04-11 21:45:00 -04:00
Isaiah Odhner
30cddbbde5
Save and load ANSI files
2023-04-11 21:18:11 -04:00
Isaiah Odhner
66bb55afd2
Create requirements.txt
2023-04-11 21:14:23 -04:00
Isaiah Odhner
3e84ae7e17
Disable region update debug
2023-04-11 15:20:31 -04:00
Isaiah Odhner
6d5430ad2e
Fix error due to action regions exceeding canvas bounds
2023-04-11 14:41:58 -04:00
Isaiah Odhner
0aaa9db839
Make region update debug a flag
2023-04-11 14:37:32 -04:00
Isaiah Odhner
15db3f4538
Store only sub-image for undo/redo
2023-04-11 14:31:50 -04:00
Isaiah Odhner
6d17f085f5
Debug: show regions when undoing/redoing (currently the whole canvas)
2023-04-11 13:49:03 -04:00
Isaiah Odhner
4fa7dda9a0
Clarify doc string for on_button_pressed
...
Disambiguate with on_key.
Alternately I could say "Called when a button widget is pressed."
2023-04-11 13:47:50 -04:00
Isaiah Odhner
e3e04c59a8
Implement redo
...
Ctrl+Shift+Z isn't working but Ctrl+Y and F4 are.
2023-04-11 13:40:31 -04:00
Isaiah Odhner
af6bfb4e45
Implement undo
2023-04-11 13:21:19 -04:00
Isaiah Odhner
4c2fc00e45
Select pencil when trying to draw with unimplemented tool
2023-04-11 12:30:47 -04:00
Isaiah Odhner
470e6e119e
Make brush tool draw with a diameter
2023-04-11 12:24:25 -04:00
Isaiah Odhner
1f3809999e
Remove some garbage unrelated symbols
...
I mean, let's be honest, most of these symbols are garbage candidates.
But these ones I accidentally left from trying to get ChatGPT to find
emoji for me.
More helpful were https://emojidb.org/ and http://shapecatcher.com/
2023-04-11 12:13:50 -04:00
Isaiah Odhner
3b3950cc0b
Sync symbols list with code comment
2023-04-11 12:09:08 -04:00
Isaiah Odhner
5340539133
Refactor bresenham_walk into a generator
2023-04-11 12:01:40 -04:00
Isaiah Odhner
a66df997bb
Toggle the color palette with Ctrl+W
...
Doesn't work in VS Code's terminal, but that's OK.
It works in Ubuntu's Terminal app.
2023-04-11 11:48:08 -04:00
Isaiah Odhner
4d2b667ecb
Toggle the tools box with Ctrl+T
2023-04-11 11:40:47 -04:00
Isaiah Odhner
ae73fab2f4
Widen color wells
...
It could go either way, but I guess 4 is more consistent proportionally.
2023-04-11 11:20:51 -04:00
Isaiah Odhner
d64a011bb8
Remove extraneous refresh on mount
2023-04-11 11:08:12 -04:00
Isaiah Odhner
ab76aacff3
Stop bubbling of canvas tool events
2023-04-11 11:02:09 -04:00
Isaiah Odhner
c7e27bc3cb
Cache canvas widget reference
2023-04-11 11:02:09 -04:00
Isaiah Odhner
ad111e5d6c
Refactor: extract tool handling from Canvas
...
I wanted to avoid duplicating tool-related state between PaintApp and
Canvas, and prepare for adding different tools with more state and which
will want to live in a separate file.
This makes it slower, when running with `textual run --dev paint.py`;
when running with `python3 paint.py`, it's fine.
When running in dev mode with `textual console` devtool connected, it's
extremely much slower. But if it was faster, you'd have more messages
to scroll through, ha. So it's a tradeoff.*
*Ideally you want it to be fast and for the logs to be compacted.
In the future, I could bypass the message system for performance, but
for now I think it's better to stay idiomatic.
2023-04-11 11:02:09 -04:00
Isaiah Odhner
338d438470
VS Code: disable CSS linting
...
It doesn't understand the syntax or supported properties of the Textual stylesheets.
2023-04-11 09:31:01 -04:00
Isaiah Odhner
cb37f50564
Fix mouse move event coordinates
2023-04-11 08:48:02 -04:00
Isaiah Odhner
e2c9b4b66c
Improve layout
2023-04-11 08:47:47 -04:00
Isaiah Odhner
7d1afed296
Define dimensions for Canvas widget
2023-04-11 08:46:57 -04:00
Isaiah Odhner
abd6468ce8
Refactor related image data into a class
2023-04-11 08:07:02 -04:00
Isaiah Odhner
e19cdff5e7
Exit with Ctrl+Q, in preparation for overriding Ctrl+C
2023-04-11 07:52:26 -04:00
Isaiah Odhner
3844667ff7
Hide characters, use only colors on canvas
2023-04-11 00:48:29 -04:00
Isaiah Odhner
32ac1bd92c
Make drawing responsive!
2023-04-11 00:46:07 -04:00
Isaiah Odhner
c3035d171f
Fix up the app layout scrollbar situation
...
- Remove scrollbar from root
- Fix extra height below color palette due to vertical layout giving even heights
- Add container around canvas to make canvas scrollable
2023-04-11 00:19:07 -04:00
Isaiah Odhner
ba0d80bc0d
Implement color selection
2023-04-10 23:56:53 -04:00
Isaiah Odhner
1811e1c41c
Add palette
2023-04-10 23:56:53 -04:00
Isaiah Odhner
7b44defde2
Add VS Code launch task
2023-04-10 23:14:22 -04:00
Isaiah Odhner
43b827720b
Use Bresenham's line algorithm
2023-04-10 22:24:22 -04:00
Isaiah Odhner
f6e9d6676e
Capture the mouse when drawing on the canvas
2023-04-10 22:16:50 -04:00
Isaiah Odhner
f4eb6eb1f0
Add bounds checks
2023-04-10 22:16:33 -04:00
Isaiah Odhner
61a25a85bf
Rename width/height properties
2023-04-10 22:07:25 -04:00
Isaiah Odhner
8168ef78a3
Fix timing of update_canvas on mouse down
2023-04-10 22:03:31 -04:00
Isaiah Odhner
42ae61c9ab
Add color support to the canvas, very inefficiently
2023-04-10 21:51:26 -04:00
Isaiah Odhner
ffca83c1c6
Support drawing, basically
2023-04-10 21:30:11 -04:00
Isaiah Odhner
69ca7eefdb
Add a Canvas widget
2023-04-10 21:25:31 -04:00