MTGProxyPrinter

Timeline
Login

Timeline

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

50 most recent check-ins

2025-04-17
16:22
CardListModel: Do not overwrite the card image tooltip with an oversized warning tooltip, if the custom card is oversized Leaf check-in: d1a1c6f9e2 user: thomas tags: custom_card_import_dialog
16:14
Remove an unused function from ui/common.py check-in: e380b47cc6 user: thomas tags: custom_card_import_dialog
15:59
Cleaned up some imports and use from imports to shorten typing annotations. Renamed get_image_for_tooltip_display() to get_card_image_tooltip(). Refactored image scaling in get_card_image_tooltip() to use a better-suited overload that requires less parameters for the same effect check-in: b7c6e5cdd7 user: thomas tags: custom_card_import_dialog
2025-04-14
15:24
Implement a shared custom card registry in the CardDatabase class. check-in: 4b6b452415 user: thomas tags: custom_card_import_dialog
2025-04-13
16:12
DocumentLoader: Add a TODO check-in: 0c1b9f3264 user: thomas tags: custom_card_import_dialog
16:05
DocumentLoader: Close the save file db as soon as possible, or when validating data fails. This ensures that SQLite journal files don't stick around longer than needed and releases database locks early. The same document can now be loaded multiple times in a row without hitting a "database is locked" error. check-in: f8b3ef3ac8 user: thomas tags: custom_card_import_dialog
2025-04-12
17:55
Reworked handling custom cards. Introduced class CustomCard, holding custom cards. It keeps the original file in memory as a plains bytes sequence and loads it in the size determined by the card size attribute. This avoids re-encoding the file for saving purposes. The user file is kept untouched. check-in: af561c08a0 user: thomas tags: custom_card_import_dialog
16:40
DocumentLoader: Directly unpack a tuple, instead of assigning it first check-in: 21f7478ac1 user: thomas tags: custom_card_import_dialog
16:39
Fixed broken Card.image_file() property check-in: 05307855c7 user: thomas tags: custom_card_import_dialog
16:33
Rewritten ActionSaveDocument: Reworked saving custom card images, now storing the original, unaltered image file. check-in: f5bae255c5 user: thomas tags: custom_card_import_dialog
14:08
DocumentLoader: Remove remaining reference to CustomCardData.oversized column. Harden the type validator by checking that deserialized document dimensions are lengths. check-in: 68fc88155f user: thomas tags: custom_card_import_dialog
14:05
CustomCard: Declare as a dataclasses class check-in: f1b732290f user: thomas tags: custom_card_import_dialog
13:14
Implement class CustomCard, which will be used to hold custom cards. It stores the supplied image in a dedicated attribute, so that the pixmap used for rendering can be freely set to any supported size without having to do re-scaling passes that degrade quality over time. check-in: 7ac8f1cc7b user: thomas tags: custom_card_import_dialog
12:50
Moved Card, CheckCard, MTGSet and related type definitions from carddb.py into a dedicated module card.py check-in: f5c32b4505 user: thomas tags: custom_card_import_dialog
12:05
Save file format: Remove is_oversized column from CustomCardData. check-in: 813e0e7609 user: thomas tags: custom_card_import_dialog
08:32
CardDatabase: Refactored some parts of the code. Replaced "result=run_query(); return result" with "return run_query()" in multiple places. Extend a few comments Leaf check-in: a5bd928aff user: thomas tags: trunk
2025-04-11
21:49
CardDatabase: Introduce method _read_scalar_list_from_db(query, parameters) which runs the query and returns a list of scalar items. To be used for queries that return a result set with 1 column and multiple rows. Internally unpacks the 1-tuples returned by SQLite. check-in: 1f6477927e user: thomas tags: trunk
21:22
CardDatabase: Unify wording by replacing set_abbr with set_code check-in: 8577578460 user: thomas tags: trunk
20:47
PageScene.on_data_changed(): Do not re-draw custom cards when editing their properties. check-in: d91380b4a3 user: thomas tags: custom_card_import_dialog
13:48
Optimized updating the page overview when renaming custom cards. check-in: de3fad2611 user: thomas tags: custom_card_import_dialog
13:40
Update the full page overview when renaming custom cards. This keeps the page overview in sync. check-in: c4f53f3c9b user: thomas tags: custom_card_import_dialog
13:10
Moved to_list_of_ranges() from card_actions.py to natsort.py to make it available outside of the document controller modules. Properly signal data changes for all copies when editing custom cards. The page display still needs further fixes check-in: d45ecff50a user: thomas tags: custom_card_import_dialog
2025-04-10
11:55
Replace the fancy multi selection behavior of the page content table with the default behavior of needing Ctrl to select multiple. check-in: 8c09f16da0 user: thomas tags: custom_card_import_dialog
11:46
Renamed ComboBoxItemDelegate to CollectorNumberEditorDelegate and handle collector number editing for custom cards. Removed subclasses DocumentComboBoxItemDelegate and CardListComboBoxItemDelegate. Removed outdated tests. check-in: 1ba1688f46 user: thomas tags: custom_card_import_dialog
11:24
Removed dead code from ComboBoxItemDelegate. Functionality of the removed parts is provided by other, dedicated delegate classes. check-in: c2f4c57455 user: thomas tags: custom_card_import_dialog
2025-04-09
18:12
Add Card.is_custom_card property. It defines in one place how a custom card is identified, by having an empty oracle_id field. Avoids littering the code-base with "not card.oracle_id" statements. check-in: d11b61da21 user: thomas tags: custom_card_import_dialog
11:44
LanguageEditorDelegate: Improve variable naming check-in: 134d0c5865 user: thomas tags: custom_card_import_dialog
11:32
Extract index to Document instance resolution into a function. This is used by multiple item delegates to access the base Document instance from a given QModelIndex. Add additional docstrings. check-in: b39ed360ee user: thomas tags: custom_card_import_dialog
2025-04-08
21:50
Add LanguageEditorDelegate class, implementing language selector for official cards and a language editor for custom cards. check-in: f5ebfa43dd user: thomas tags: custom_card_import_dialog
21:28
Reworked how item delegates are stored. Since they are not accessed after creation and only kept as attributes to prevent the garbage collector from collecting them, put all into a tuple. check-in: 5fbda4453a user: thomas tags: custom_card_import_dialog
13:52
Extract editing custom cards into a dedicated document action ActionEditCustomCard. This makes it possible to undo/redo edits to custom cards. check-in: 74ed86293b user: thomas tags: custom_card_import_dialog
13:34
Move PageColumns enum to document_page.py. This de-couples the enum from Document, and allows importing it for use in document actions. check-in: e32d2314cd user: thomas tags: custom_card_import_dialog
13:31
Fix bad import in a test module check-in: 33e82fd3d0 user: thomas tags: custom_card_import_dialog
2025-04-07
13:53
Document: Update the parent page when changing a custom card name. check-in: a3961bbbd9 user: thomas tags: custom_card_import_dialog
13:45
CustomCardImportDialog: Removed the unused QLabel. Reworded the "Add cards" button to "Load images", and switched the icon to an "import" icon. Moved the Ok button to the bottom. This reduces confusion, as the top "add" button did not accept the dialog previously. check-in: 90b1f2d5de user: thomas tags: custom_card_import_dialog
13:02
Document: Implement editing custom cards. check-in: b706dfef58 user: thomas tags: custom_card_import_dialog
12:21
Add two tests for the CustomCardSetEditor. check-in: 81e8c2b4f6 user: thomas tags: custom_card_import_dialog
10:47
Add unit tests for BoundedCopiesSpinboxDelegate check-in: 89e5ef1d59 user: thomas tags: custom_card_import_dialog
09:51
Disable pytest timeouts check-in: 0e1776beb5 user: thomas tags: custom_card_import_dialog
09:04
Ensure compatibility with the deck list import wizard. Both use the CardListModel and CardListTableView. So internally distinguish between custom cards and official cards in the SetEditorDelegate and use the appropriate editor for each kind of card. check-in: dc1289e21e user: thomas tags: custom_card_import_dialog
08:16
Implement writing the set for DFC check cards check-in: 906da3a391 user: thomas tags: custom_card_import_dialog
08:13
Implement a code editor for MTG sets. Set it as the item delegate for the Set column in the CardListTableView. Fix data() for retrieving the set in EditRole. Implement writing the set to the Card instance check-in: 2da89391a0 user: thomas tags: custom_card_import_dialog
07:43
Add requirements*.txt to the ignore glob check-in: 697cd395bd user: thomas tags: custom_card_import_dialog
2025-04-06
22:27
CustomCardImportDialog: The "Remove selected" button now removes only the selected cards, instead of everything. Dialog buttons are now disabled, if clicking them would do nothing. So the "Delete selected" button is only active, if cards are selected. The Ok button is only active if the table is non-empty. check-in: 317df9d635 user: thomas tags: custom_card_import_dialog
18:02
Add changelog entry check-in: fc938eff47 user: thomas tags: custom_card_import_dialog
17:45
Set the dialog window size to 900x500. check-in: d8bb73a742 user: thomas tags: custom_card_import_dialog
17:44
CustomCardImportDialog: Add spinbox to specify the target copy count when clicking the set copies button. check-in: 5e5ef08041 user: thomas tags: custom_card_import_dialog
17:31
Implemented setting all copy values to 1 and clearing the custom card table when clicking the delete button check-in: cd2a7d62f7 user: thomas tags: custom_card_import_dialog
17:29
MainWindow: Unify handling of dialogs and wizards. check-in: 88be39f16f user: thomas tags: custom_card_import_dialog
11:34
Implemented opening the custom card import wizard from an action in the main window check-in: 03c67497e2 user: thomas tags: custom_card_import_dialog