MTGProxyPrinter

Timeline
Login

Timeline

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

50 most recent check-ins

2025-08-25
20:00
Implemented rendering cut helper lines above or below the cards. Leaf check-in: f16ad94b27 user: thomas tags: configurable_cut_markers
19:37
Merge with trunk check-in: 0956d2b3de user: thomas tags: configurable_cut_markers
19:24
Concurrent UI file compilation: Use asyncio to compile the Qt UI files concurrently. This reduces the wall time used significantly, as above 90% of the runtime was in the compiler call. Leaf check-in: 5a5a04c99d user: thomas tags: trunk
18:21
PageConfigWidget: Update the UI file. Add tooltips, fix Buddy relations, and fix display texts. Add a checkbox to enable drawing above cards. check-in: 26d0cfff4f user: thomas tags: configurable_cut_markers
18:04
PageConfigWidget: Set titles for the color picker dialogs. check-in: fe68dfba78 user: thomas tags: configurable_cut_markers
17:15
RenderLayers: Add layer for cut lines above cards. check-in: 57c0a73b1f user: thomas tags: configurable_cut_markers
17:13
PageScene: Refactor cut lines to use a QPen, instead of a QColor. Update the cut line color when the settings change. That makes the renderer use the currently selected cut line color. check-in: f1b8c616bc user: thomas tags: configurable_cut_markers
16:37
PageConfigWidget: Enable alpha channel selection via QColorDialog.getColor(). Set parent to the dialog, and check, if the returned value is valid before proceeding. check-in: 52d08764af user: thomas tags: configurable_cut_markers
16:27
PageConfigWidget: Do not emit page_layout_changed multiple times during loading from another PageLayoutSettings check-in: f9b9029a74 user: thomas tags: configurable_cut_markers
16:24
PageConfigWidget: Implement saving the cut marker color to the application settings. Implement loading the cut marker color from other PageLayoutSettings instances. check-in: 0ac008aa1a user: thomas tags: configurable_cut_markers
15:48
PageConfigWidget: Fix _on_cut_marker_color_opacity_changed() updating the wrong attribute. Fix load_from_page_layout() check-in: 2b82b4f955 user: thomas tags: configurable_cut_markers
15:24
CentralWidget: Restore all pages tab header of the Tabbed layout. check-in: 6154c28c19 user: thomas tags: trunk
15:08
Deck import wizard: Reclaim some horizontal space. Also remove all <hints> from signal/slot connections defined in .ui files. check-in: d95e9a83b7 user: thomas tags: trunk
11:38
WIP Untangle ImageDatabase and image download tasks. Push the AsyncTask creation into the widgets creating the ActionAddCard instances. This shall remove the cross dependency between the ImageDatabase and the image download tasks. Leaf check-in: c53ae04eda user: thomas tags: async_tasks_package
2025-08-24
20:26
Replaced deprecated typing aliases with their newer counterparts. check-in: 7857431744 user: thomas tags: async_tasks_package
19:44
Moved print_count_updater.py and printing_filter_updater.py into async_tasks check-in: 1376df5d25 user: thomas tags: async_tasks_package
19:35
Moved downloader_base.py, decklist_downloader.py and update_checker.py into the async_tasks package. check-in: 520f05b04c user: thomas tags: async_tasks_package
12:47
Moved card_info_downloader.py into the async_tasks package. check-in: 8a22070c4a user: thomas tags: async_tasks_package
12:39
Moved the ImageDownloadTask and subclasses from imagedb.py to the new mtg_proxy_printer/async_tasks/image_downloader.py check-in: 5c932e34ac user: thomas tags: async_tasks_package
12:21
Moved DocumentLoader from model to async_tasks package check-in: a6f4ef02f7 user: thomas tags: async_tasks_package
12:14
Introduce package mtg_proxy_printer.async_tasks, and move AsyncTask from runner.py into the renamed base.py check-in: a41828670e user: thomas tags: async_tasks_package
11:38
DocumentLoader: Improve type hinting Leaf check-in: 8ac981467e user: thomas tags: refactor_async_tasks
2025-08-23
20:47
Removed unused import check-in: fe0976ee80 user: thomas tags: refactor_async_tasks
20:32
ProgressBar: Remove two unused attributes check-in: 878ca73c9d user: thomas tags: refactor_async_tasks
20:23
Restore jitter-free behavior when batch tasks constantly spawn/hide sub-task progress bars. check-in: aab90894cc user: thomas tags: refactor_async_tasks
20:11
Hide the image download task progress bar when a deck list import task starts. check-in: 289654a210 user: thomas tags: refactor_async_tasks
09:08
Fix AsyncTask.__str__() by removing the duplicate method definition. ProgressBar: Use a lambda to fetch the current task description when deleting the task. check-in: 90bf85ecfb user: thomas tags: refactor_async_tasks
09:05
ActionAddCard: Add missing parameter to super().undo() call check-in: 5dc42bd9e5 user: thomas tags: refactor_async_tasks
08:55
AsyncTask: implement __str__(). Track the current running state and task for logging purposes. check-in: a52d4c780e user: thomas tags: refactor_async_tasks
2025-08-21
12:58
ActionMovePage: Fix double call of super()-implementations in apply() and undo(). check-in: 689bbf7967 user: thomas tags: refactor_async_tasks
12:52
Merge with trunk check-in: 6f6d3bcd54 user: thomas tags: refactor_async_tasks
12:47
Fix inconsistencies with the move page up/down buttons. Properly recreate the page index to row mapping in Document. This ensures that the selected page is properly updated. check-in: 62ecb2198e user: thomas tags: trunk
08:20
ImageDownloadTask: Rename get_image_synchronous() ot fetch_and_set_image(). Also make _remove_outdated_low_resolution_image() remove the parent directory, if it is empty. check-in: 2d5ae6dc47 user: thomas tags: refactor_async_tasks
2025-08-20
22:15
DocumentLoader: Use the new ImageDownloadTask class to fetch images during document loading. imagedb.py: Remove the new unused, old ImageDownloader. check-in: b2c257818f user: thomas tags: refactor_async_tasks
18:11
Fixed progress bar behavior. This looks like a success. check-in: 8f3f73b8c6 user: thomas tags: refactor_async_tasks
18:02
Distributed logic from ImageDownloader into the ImageDownloadTask class hierarchy. The batch tasks use the sub-tasks API of AsyncTask to create a download progress task. This should be flexible enough to easily extend to allow batch tasks to download images concurrently. check-in: 542949fa35 user: thomas tags: refactor_async_tasks
17:15
Remove dead code from ImageDatabase. This was a first draft for masking corners transparent, that wasn't removed when the code was moved to card.py. check-in: c3060a7452 user: thomas tags: refactor_async_tasks
2025-08-19
21:29
ImageDatabase: Rename ImageDbTask into ImageDownloadTask check-in: 16e03783bc user: thomas tags: refactor_async_tasks
12:48
Fix a SegmentationFault during document loading, caused by the ActionLoadDocument being collected by the Python garbage collector. Use a BlockingQueuedConnection to keep the DocumentLoader task alive until the document has safely received the ActionLoadDocument. This keeps the task's reference to the DocumentAction alive until a new reference is stored in the Document instance. check-in: e1c8266870 user: thomas tags: refactor_async_tasks
11:53
Fix double connection of ImageDatabase.request_run_async_task check-in: 89ac2f1096 user: thomas tags: refactor_async_tasks
11:18
Add tests for DocumentAction base class behavior. check-in: ca64cba42a user: thomas tags: refactor_async_tasks
11:07
DocumentAction: Update the _already_applied attribute in apply() and undo() check-in: 09f85fd0a3 user: thomas tags: refactor_async_tasks
11:04
DocumentAction: Unify code: Add parent:QObject parameter to all __init__() methods. All apply() and undo() now call the super implementation. Also raise IllegalStateError when trying to apply() or undo() twice in a row. check-in: 35c282f7ab user: thomas tags: refactor_async_tasks
06:23
MainWindow: Removed legacy signal loading_state_changed, which was previously controlling the UI locking. check-in: 8b045319ee user: thomas tags: refactor_async_tasks
2025-08-18
14:54
PNGRenderer: Use an internal QThreadPool, instead of using the global one. This allows setting the pool size to the desired number of threads, while avoiding the use of semaphores for load throttling. This also allows for easy waiting on the running compressor tasks, and thus keeps the task running until all compression threads finish. check-in: b28e2520a8 user: thomas tags: refactor_async_tasks
14:22
Implemented a counter-based UI lock mechanism for critical sections in async tasks. check-in: 7028160351 user: thomas tags: refactor_async_tasks
08:35
Tests: Adjust tests for MeteredSeekableHTTPFile, which no longer emits io_begin, if the UI hint is empty. check-in: c39f8f2e44 user: thomas tags: refactor_async_tasks
08:30
Tests: Fix CustomCard creation in tests/model/test_card_list.py. The custom cards now carry a valid PNG image of the correct size, instead of an empty bytes instance. check-in: e2dd970ec0 user: thomas tags: refactor_async_tasks
2025-08-17
20:26
MainWindow: Reimplement re-enabling the card data download on network errors. Adjust the main window tests that test this behavior for the new AsyncTask API. check-in: dc37d8d78b user: thomas tags: refactor_async_tasks
2025-08-16
13:27
Fixed bad bugs in code to allow the app to start again. Add the new document settings keys to the global application settings and validation. check-in: 51d2171220 user: thomas tags: configurable_cut_markers