Commit Graph

37 Commits

Author SHA1 Message Date
Isaiah Odhner
93eac0fc0e Actually, replace NUL only when selected 2023-04-26 15:48:21 -04:00
Isaiah Odhner
22cba20c35 Replace NUL in loop instead of in the string literal 2023-04-26 15:47:03 -04:00
Isaiah Odhner
da3136a2d2 Fix code page 437 string
It had an extra "▀", and skipped the null at the start (which I'm
replacing with a space so it doesn't mess up the screen when inserting.)
2023-04-26 15:36:16 -04:00
Isaiah Odhner
0c52788843 Fix some type checker errors 2023-04-26 13:35:52 -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
e62064a307 Fix a type checker error 2023-04-24 20:52:49 -04:00
Isaiah Odhner
1c7f7015cb Fix unlocalized buttons 2023-04-24 20:28:57 -04:00
Isaiah Odhner
86fe09cc6e Use a DataTable instead of a grid of buttons for Choose Character dialog
Improve performance, compactness, and keyboard navigation
2023-04-24 20:26:47 -04:00
Isaiah Odhner
91883d06cd Tweak warning icon, with a rounder exclamation mark, and smaller overall
I'm not sure I like this better.
2023-04-24 16:31:57 -04:00
Isaiah Odhner
a4f6b0fe35 Improve warning icon 2023-04-24 16:06:16 -04:00
Isaiah Odhner
a07606fc70 Navigate buttons with left/right or up/down in message boxes 2023-04-23 15:43:45 -04:00
Isaiah Odhner
60ff2c27f8 Fix Cancel buttons in Edit Colors and Choose Character dialogs 2023-04-23 14:50:56 -04:00
Isaiah Odhner
9f6a8fd559 Trap focus within window when cycling with Tab / Shift+Tab
Too easy!
2023-04-23 02:09:40 -04:00
Isaiah Odhner
5d778c1879 Annotate **kwargs as Any 2023-04-22 21:44:05 -04:00
Isaiah Odhner
9f06373cb7 Add a bunch more type checking hints/assertions 2023-04-22 20:51:51 -04:00
Isaiah Odhner
2e839b2564 Clean up unused imports 2023-04-22 17:49:15 -04:00
Isaiah Odhner
065c5be2cb Appease the type checker by using maps of buttons 2023-04-22 13:46:02 -04:00
Isaiah Odhner
77295bd622 Int, innit? Init int 2023-04-22 13:11:23 -04:00
Isaiah Odhner
1b56d78f70 Start type checking code 2023-04-22 02:31:58 -04:00
Isaiah Odhner
5ed2180d7e Fix releasing window drag 2023-04-20 21:39:38 -04:00
Isaiah Odhner
15af8f6403 Fix warning icon visibility after the first display
It gets set to `display = False` when unmounting, I think.
2023-04-20 21:01:33 -04:00
Isaiah Odhner
48f0303a54 Refactor create_warning_message_box into MessageBox 2023-04-20 21:01:14 -04:00
Isaiah Odhner
093a314d60 Move bits of warning_message_box that need App back into App 2023-04-20 18:09:49 -04:00
Isaiah Odhner
37ff810616 Move warning_message_box implementation to windows.py 2023-04-20 18:02:07 -04:00
Isaiah Odhner
9ab748f255 Use Python class names for window CSS 2023-04-20 17:47:20 -04:00
Isaiah Odhner
5e72708fd8 Rename Python class for character selector dialog for consistency
If I want it to be less verbose, I should rename the super-class
from "DialogWindow" to just "Dialog".
2023-04-20 17:42:17 -04:00
Isaiah Odhner
e39fd52381 Rename CSS class for character selector dialog for consistency 2023-04-20 17:40:15 -04:00
Isaiah Odhner
4bca563358 Remove timer for setting focus
Interestingly, this moves the filename input's cursor to the start,
whereas it was positioned at the end when using the timer.
Unfortunately the Input control doesn't support selection,
which is what I would really want as the behavior.
2023-04-20 12:43:14 -04:00
Isaiah Odhner
8a51bd325c Focus default control within window after opening 2023-04-20 12:31:23 -04:00
Isaiah Odhner
b955aaf361 Input or pick character to draw with 2023-04-20 01:21:06 -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
eeaee41747 Submit dialogs with enter, unless a button has focus 2023-04-16 02:03:28 -04:00
Isaiah Odhner
35e93210c8 Close dialogs with Escape key 2023-04-16 00:16:15 -04:00
Isaiah Odhner
d4becd2da0 Refactor dumb button handling using new class DialogWindow 2023-04-16 00:11:59 -04:00
Isaiah Odhner
73d8f04329 Enable dragging windows by their title bars 2023-04-15 22:18:45 -04:00
Isaiah Odhner
e988bf787f Move window layout fix to Window 2023-04-15 22:04:15 -04:00
Isaiah Odhner
c2e86d5eae Implement Save As dialog 2023-04-15 00:57:43 -04:00