Commit Graph

218 Commits

Author SHA1 Message Date
Isaiah Odhner
2d3f05ff12 Rename "Redo" to "Repeat" to match MS Paint and for localization 2023-04-18 03:48:47 -04:00
Isaiah Odhner
b2645337bd Update readme 2023-04-18 03:47:02 -04:00
Isaiah Odhner
a9fd9d090c Enable localization! 2023-04-18 03:31:47 -04:00
Isaiah Odhner
5e994fbc91 Move command line argument parsing to the top
This will make it possible to load localization data for a language
defined by a command-line argument, throughout the program.

Unfortunately this separates the usage of the arguments from their
definitions by a wide margin, making it harder to edit, especially
with AI autocomplete. For now. I could refactor things, either move
the bulk of this file to separate files, or define a configure_app
function up top to use down below.
2023-04-18 03:31:47 -04:00
Isaiah Odhner
8971122581 Wrap strings in _() function for localization 2023-04-18 03:31:47 -04:00
Isaiah Odhner
973f67240d WIP: i18n
Giving up on the python translation of the RC file parsing and pre-processing for now, in favor of simply parsing the JS files already generated, which is a much simpler task.
2023-04-18 03:31:47 -04:00
Isaiah Odhner
baf804f2b1 Fix: use title argument in warning_message_box 2023-04-18 03:08:58 -04:00
Isaiah Odhner
b4468d3a76 Update some comments about ANSI I/O 2023-04-18 02:55:11 -04:00
Isaiah Odhner
df1ddcc318 Don't escape Unicode characters so much... 2023-04-18 02:32:47 -04:00
Isaiah Odhner
b480d5a0b2 Add leniency like JS has... 2023-04-18 02:23:35 -04:00
Isaiah Odhner
160beeb6ce Disable code for updating index.html 2023-04-18 02:23:03 -04:00
Isaiah Odhner
2e4d6e9c16 Fix several errors in JS->Python translation 2023-04-18 02:17:53 -04:00
Isaiah Odhner
c05bf1200d Fix SyntaxError: f-string expression part cannot include a backslash
and one about the quotes
2023-04-18 01:52:54 -04:00
Isaiah Odhner
7192a0a0b5 Add some, but not many, of the comments omitted during translation to Python 2023-04-18 01:19:20 -04:00
Isaiah Odhner
87f8faf956 Use choices option for expressing --theme 2023-04-18 01:06:45 -04:00
Isaiah Odhner
6a943389be Convert localization JavaScript code to Python using ChatGPT 2023-04-18 00:37:48 -04:00
Isaiah Odhner
2a42de257f Accept spellings from localization JavaScript code 2023-04-18 00:37:19 -04:00
Isaiah Odhner
0da0708607 Ignore spelling in old copied shell scripts 2023-04-18 00:30:34 -04:00
Isaiah Odhner
d9bafabf16 Exclude localization data from spell checking 2023-04-18 00:30:05 -04:00
Isaiah Odhner
ab690e8f5c Add localization folder from JS Paint
This folder was last updated at this commit:
4a9163fb6d
2023-04-18 00:30:05 -04:00
Isaiah Odhner
6fbcbf9ec3 Refactor ync flag to button_types argument, to support OK-only dialogs 2023-04-17 23:32:20 -04:00
Isaiah Odhner
d950295df7 Simply close the Open dialog if you select the open file 2023-04-17 23:09:13 -04:00
Isaiah Odhner
8ec24a8fdc Prompt to save changes when unloading a document
- Confirm discarding changes for Open, New, or Exit, including for
  exit via Ctrl+C which was previously handled by a built-in binding.
- Await Save As dialog closing, including when Save triggers Save As.
  This is my first time using asynchronous features in Python,
  (as far as I remember,) so it's a bit messy.
- Make DialogWindow callback also for Cancel, which means all
  DialogWindow usage sites care what button is selected.
- Send RequestClose event for Esc key.
2023-04-17 23:09:13 -04:00
Isaiah Odhner
7497a7dd5b Tweak overwrite dialog layout
- Reduce height, to fit to content
- Reduce button width, to avoid clipping
2023-04-17 03:12:30 -04:00
Isaiah Odhner
0125374bba Ctrl+MMB to colorize without adding borders to inspect layout without modifying it 2023-04-17 03:12:30 -04:00
Isaiah Odhner
4ee5efe85c Make a filled Unicode warning icon with a border 2023-04-17 03:12:30 -04:00
Isaiah Odhner
a948d7d945 Note parallelogram candidates for eraser icon 2023-04-17 01:57:27 -04:00
Isaiah Odhner
22a251276b Use Unicode for warning icon text art 2023-04-17 01:45:20 -04:00
Isaiah Odhner
5c289e05a8 Add dev helper to inspect layout 2023-04-17 01:21:19 -04:00
Isaiah Odhner
357b68d624 Show file name only, not full path, in Header 2023-04-16 21:12:44 -04:00
Isaiah Odhner
728b4c53b9 Fix Open/Save As dialog starting location when file opened with relative path
The directory tree wasn't expanded because it was searching for e.g.
LICENSE.txt at the root of the filesystem (or perhaps AS the root?)
2023-04-16 21:12:03 -04:00
Isaiah Odhner
4ef6c07826 Add Header to show the current file name 2023-04-16 21:05:55 -04:00
Isaiah Odhner
a69851d1bf Let menu buttons vary in width 2023-04-16 20:35:09 -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
8929ed14b6 Clear screen during development to avoid seeing fixed errors 2023-04-16 18:54:49 -04:00
Isaiah Odhner
fea4259876 Remove vertical padding and bottom border from tool box 2023-04-16 18:43:08 -04:00
Isaiah Odhner
ea1e6751a9 VS Code: Add personal workspace containing this project and textual
Maybe I should ignore this file since it's unlikely to work on other computers...
2023-04-16 18:34:29 -04:00
Isaiah Odhner
bd6ac3dd5f VS Code: Use textual run for "Open A File in App" launch task 2023-04-16 16:04:06 -04:00
Isaiah Odhner
cb6b4403a3 Handle passing arguments via textual run
It took a while to figure out this magic.

`textual run --help` says:

>  If you are running a file and want to pass command line arguments, wrap the
>  filename and arguments in quotes:
>
>      textual run "foo.py arg --option"

But it doesn't describe how to handle those arguments.
2023-04-16 16:01:24 -04:00
Isaiah Odhner
3f23a13fe1 Fix mouse coordinates for brush preview when scrolled
Don't hackily offset mouse coordinates when mouse not down
2023-04-16 15:22:38 -04:00
Isaiah Odhner
23ca2b7113 Refactor tool button CSS class handling, and remove unused tool_button class 2023-04-16 02:08:07 -04:00
Isaiah Odhner
eeaee41747 Submit dialogs with enter, unless a button has focus 2023-04-16 02:03:28 -04:00
Isaiah Odhner
79ef514eb2 Make sure not to save the document with a brush preview 2023-04-16 00:50:12 -04:00
Isaiah Odhner
35e93210c8 Close dialogs with Escape key 2023-04-16 00:16:15 -04:00
Isaiah Odhner
7aab466964 Add Cancel button to Open dialog 2023-04-16 00:11:59 -04:00
Isaiah Odhner
d4becd2da0 Refactor dumb button handling using new class DialogWindow 2023-04-16 00:11:59 -04:00
Isaiah Odhner
accc2fe85b Fix AttributeError for "parent_menu.focus" for menu bar (top level menu) 2023-04-15 23:50:45 -04:00
Isaiah Odhner
ddd89d367b Hide brush preview when you stop hovering over the canvas 2023-04-15 23:45:44 -04:00