Commit Graph

105 Commits

Author SHA1 Message Date
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
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
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
277a879b5c Finalize Polygon/Curve when switching tools 2023-04-25 15:42:36 -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
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
2af323bab2 Note Playscii license/language compatibility 2023-04-25 13:16:24 -04:00
Isaiah Odhner
bbe3f01725 Add to known issues 2023-04-25 01:16:46 -04:00
Isaiah Odhner
7bf41a6ac4 Add tips section to readme 2023-04-24 23:43:38 -04:00
Isaiah Odhner
61227597f8 Fix flood fill infinite loop when color under cursor matches fill color 2023-04-24 22:18:48 -04:00
Isaiah Odhner
8eb4d78646 Update readme 2023-04-24 16:46:32 -04:00
Isaiah Odhner
031a0a3e72 Implement Select All 2023-04-23 01:24:43 -04:00
Isaiah Odhner
74dceee2f3 Implement Free-Form Select tool 2023-04-22 23:03:09 -04:00
Isaiah Odhner
6b01b604fe Set up pyright type checker 2023-04-22 02:27:43 -04:00
Isaiah Odhner
45fb2eb521 Implement polygon tool 2023-04-22 01:07:20 -04:00
Isaiah Odhner
4d86f783be Implement Curve tool 2023-04-21 23:16:58 -04:00
Isaiah Odhner
cc0bdf0973 Implement Text tool 2023-04-21 22:12:16 -04:00
Isaiah Odhner
61d3db4714 Fix undo/redo handling for the Select tool 2023-04-21 16:34:38 -04:00
Isaiah Odhner
68d069fa8d Implement View > Zoom > Large Size / Normal Size 2023-04-21 01:40:26 -04:00
Isaiah Odhner
9120d49546 Implement the magnifier tool 2023-04-19 19:44:57 -04:00
Isaiah Odhner
3c2ff7b3d8 Note textual console devtool (and slowness) 2023-04-19 14:27:12 -04:00
Isaiah Odhner
140ff15ff1 Restart the app on changes 2023-04-19 14:27:12 -04:00
Isaiah Odhner
34aa35ec8b Update dependencies
I'm new to python package management, so I don't really know when these
packages got updated, but I'm updating this file with this command:

    python3 -m pipreqs.pipreqs --ignore .history --force
2023-04-19 02:42:54 -04:00
Isaiah Odhner
c5f7c9f387 Rename "Rectangular Select" to "Select" to match MS Paint and for localization 2023-04-18 18:55:45 -04:00
Isaiah Odhner
11817904bb Not just several — twenty six, to be precise 2023-04-18 04:11:50 -04:00
Isaiah Odhner
b2645337bd Update readme 2023-04-18 03:47:02 -04:00
Isaiah Odhner
87f8faf956 Use choices option for expressing --theme 2023-04-18 01:06:45 -04:00
Isaiah Odhner
a948d7d945 Note parallelogram candidates for eraser icon 2023-04-17 01:57:27 -04:00
Isaiah Odhner
5c289e05a8 Add dev helper to inspect layout 2023-04-17 01:21:19 -04:00
Isaiah Odhner
a02431d19e Add --theme option to CLI 2023-04-16 20:34:56 -04:00
Isaiah Odhner
650584d4b2 Add usage section to readme 2023-04-16 19:38:53 -04:00
Isaiah Odhner
59c289eaee Update development section 2023-04-16 19:23:00 -04:00
Isaiah Odhner
c2e86d5eae Implement Save As dialog 2023-04-15 00:57:43 -04:00
Isaiah Odhner
66d2f79e0c Tweak readme 2023-04-14 21:32:02 -04:00
Isaiah Odhner
ba646f7cdb Add textual screenshot to readme
This took a lot of trial and error to get this working.
- First I had to figure out how to copy the terminal output as HTML.
  I had to configure keybindings for Select All and Copy As HTML in
  the Ubuntu terminal.
- GitHub doesn't support line-height in markdown, so I came up with
  using an SVG with <foreignObject> to contain the screenshot HTML.
- GitHub doesn't support inline SVG, so I had to use <img>, that's fine.
  An external file is cleaner anyways.
- I spent a long time trying to fix the seams between rows of text.
  `line-height: <font-size>` is not `line-height: 1`!
  I think I tried `line-height: 1` first, but it wasn't working for some
  reason so I tried a bajillion things, having mentally discounted it,
  before circling back to it and trying it again and it actually worked.
- I spent a long time futzing about with SVG viewports and units.
- The text was staggered due to some of the Unicode characters, so I
  developed a script to fix that up. I managed to achieve a nice
  development cycle for this, but only near the end of developing it.
  Most of the time while working on it I was copying and pasting
  the updated code into the console after hitting up up enter to
  re-run grapheme-splitter's JS.
  The next commit will apply this script.
- All in all, getting this screenshot working took basically all day!
  Compare that to my first day of progress on this project, having
  never used the Textual framework before, and also having not used
  Python for a while. In summary, coding is a land of contrasts.
- VS Code's markdown rendering isn't working with the ch/lh units.
2023-04-14 19:15:45 -04:00
Isaiah Odhner
fda94c31f8 Implement brush previews 2023-04-13 23:07:46 -04:00
Isaiah Odhner
44fe270463 Note some alternate selection tool icons using Braille
These are pretty good candidates, paired together.
For the Free-Form Select icon (⢼⠮), I'm specifically imitating the
asymmetrical star shape from MS Paint.
2023-04-13 23:07:46 -04:00
Isaiah Odhner
611e7f10c9 Implement Pick Color tool 2023-04-13 18:54:51 -04:00
Isaiah Odhner
b805d9a488 Implement eraser and airbrush tools 2023-04-13 18:48:24 -04:00
Isaiah Odhner
ef41cb53e7 Add features section to readme 2023-04-13 10:06:39 -04:00
Isaiah Odhner
155df6a998 Collect more symbols 2023-04-13 10:02:31 -04:00
Isaiah Odhner
50c3278264 Use tool names from MS Paint, consistently 2023-04-13 00:35:49 -04:00
Isaiah Odhner
5b1c16ddc3 Use wide A character for text tool icon, centering it 2023-04-13 00:32:03 -04:00
Isaiah Odhner
30cddbbde5 Save and load ANSI files 2023-04-11 21:18:11 -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
78e326377d Add to prior art (See Also) section 2023-04-10 18:44:31 -04:00
Isaiah Odhner
f79ebcd7d0 Fix missing URLs 2023-04-10 18:31:41 -04:00
Isaiah Odhner
787dc676db Initial commit 2023-04-10 16:51:39 -04:00