Commit Graph

194 Commits

Author SHA1 Message Date
Isaiah Odhner
6b46d99627 Clarify messaging about the backup feature 2023-05-06 16:41:43 -04:00
Isaiah Odhner
ce4fabd923 Add --backup-folder option 2023-05-05 21:51:25 -04:00
Isaiah Odhner
d12942700a Tweak auto-save backup file name 2023-05-05 21:50:42 -04:00
Isaiah Odhner
3cdc308b95 Optionally singularize a word 2023-05-05 20:03:15 -04:00
Isaiah Odhner
40496c312f Clarify filename argument 2023-05-05 19:59:10 -04:00
Isaiah Odhner
2af9f4fd53 Auto-save to ~ files 2023-05-05 19:59:10 -04:00
Isaiah Odhner
ec718cac81 Make submenu positioning more reliable 2023-05-04 16:03:12 -04:00
Isaiah Odhner
f5e071f069 Fix menus cut off when viewport height is small
This fix works for the top level menus, and but it's unreliable for
submenus, just as submenus opening at all is unreliable.
2023-05-04 15:40:54 -04:00
Isaiah Odhner
6e9fa34cbb Note a defect 2023-05-04 15:26:36 -04:00
Isaiah Odhner
1656c64ea2 Make --recode-samples handle exceptions, in an insanely complicated way 2023-05-04 13:40:08 -04:00
Isaiah Odhner
426354e986 Add notes to development section of readme 2023-05-03 20:20:49 -04:00
Isaiah Odhner
799ec9944a Fix color values being rounded when loading an ANSI file 2023-05-03 13:49:52 -04:00
Isaiah Odhner
1cdad17fe9 Set a fixed width when updating CLI help on readme
By default it uses the terminal width, which caused the help text to change spuriously.
2023-05-03 11:39:00 -04:00
Isaiah Odhner
eaa64c992e Add --recode-samples for testing 2023-05-03 11:37:40 -04:00
Isaiah Odhner
3ac9ad0ff8 Update readme in regard to progress on Set As Wallpaper 2023-05-02 01:00:22 -04:00
Isaiah Odhner
f630026811 Note about linting 2023-05-01 14:47:30 -04:00
Isaiah Odhner
2a35778cbd Add file drop support 2023-05-01 12:31:21 -04:00
Isaiah Odhner
1a7b6561bd Simplify usage line in help 2023-05-01 10:51:33 -04:00
Isaiah Odhner
29376af66c Make Help > Help Topics show full command-line help, at least 2023-05-01 10:39:21 -04:00
Isaiah Odhner
549c70a2d1 Add --version flag to CLI 2023-04-29 17:55:59 -04:00
Isaiah Odhner
4d1f57ee6b Update file formats list 2023-04-29 17:29:06 -04:00
Isaiah Odhner
ceb79bc5aa Add to known issues list 2023-04-29 17:18:41 -04:00
Isaiah Odhner
2cf3bc2a7d Clarify known issues 2023-04-29 17:11:47 -04:00
Isaiah Odhner
66222b2384 Use an included sample ANSI file for cat example command 2023-04-29 16:53:38 -04:00
Isaiah Odhner
16d52dcad1 Fix a missing word 2023-04-29 16:52:03 -04:00
Isaiah Odhner
5abad1fcb2 Update paths 2023-04-29 13:43:24 -04:00
Isaiah Odhner
1f5457d992 Fix crash with Polygon tool(s), dragging from outside to inside canvas
When clicking outside the canvas and dragging and releasing over it,
several tools exhibited issues, which this commit fixes.

- Free-Form Select, Polygon: crash with IndexError
- Select: useless selection created
- Magnifier, Pick Color: returned to last tool before use
2023-04-29 12:43:34 -04:00
Isaiah Odhner
67015ae1ca Add a known crash-causing issue 2023-04-28 20:46:38 -04:00
Isaiah Odhner
44d800d9b3 Note an issue with color values changing 2023-04-28 14:14:21 -04:00
Isaiah Odhner
1c9fb0ca1b Delete/backspace ranges of text 2023-04-26 17:54:00 -04:00
Isaiah Odhner
0754db7218 Fix IndexError when pressing Ctrl+A followed by Delete in a textbox 2023-04-26 17:08:32 -04:00
Isaiah Odhner
c1375d81ed Make Select All select text within the textbox, if applicable 2023-04-26 17:04:24 -04:00
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
5fe0178d36 Note new dependencies in installation instructions 2023-04-26 12:52:27 -04:00
Isaiah Odhner
ed5e399a58 Don't delete the whole textbox when pressing Delete 2023-04-26 11:19:16 -04:00
Isaiah Odhner
6d6ef25da4 Cancel active tool by pressing both mouse buttons 2023-04-26 01:30:36 -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
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
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