MTGProxyPrinter

Timeline
Login

Timeline

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

386 check-ins using file build_MTGProxyPrinter_packages.sh version b45e0413dc

2024-10-28
14:05
Tests: Set a default timeout of 10s per test. Bump required pytest version to 6.0, which is the first version allowing configuration via pyproject.toml. Leaf check-in: 5a030918a1 user: thomas tags: trunk
13:57
Refactor test_page_config_widget.py: Use a pytest fixture to create PageLayoutSettings instances containing the default settings. check-in: 9abf9cb4e7 user: thomas tags: trunk
12:32
Fix resource warning at application start. Explicitly keep a reference to the open crash log file. check-in: b61b175b8b user: thomas tags: trunk
2024-10-26
11:17
Fix application settings migration code. Add unit tests for all settings file versions verifying that the migration code does not crash. check-in: e75d027f1f user: thomas tags: trunk
11:04
Fix settings migrations from really old versions. Closed-Leaf check-in: 18d5d2f33d user: thomas tags: fix_settings_migration
2024-10-19
09:00
Add changelog entry. check-in: f443f6bce3 user: thomas tags: fix_settings_migration
08:56
Fix crash in settings migration code when upgrading from 0.26.1 or older. check-in: 04001301b0 user: thomas tags: fix_settings_migration
08:46
Add test cases for the settings migration code, verifying that the code does not crash check-in: 75957cb012 user: thomas tags: fix_settings_migration
2024-10-18
15:54
Tests: Simplified asserts in test_document.py check-in: c9928b0eb7 user: thomas tags: trunk
2024-10-09
13:08
Clarify the scope of the default card language option in the settings. Add a note about card language of imported deck lists. check-in: cf0e6f4403 user: thomas tags: trunk
2024-10-03
14:45
Implement asynchronous card database migrations with progress reporting. Implements [f460c3e0caf7b1dd] check-in: 40729f514a user: thomas tags: trunk
14:39
Add changelog entry Closed-Leaf check-in: cd08a846d6 user: thomas tags: async_migrations
14:30
Fix remaining database migration tests check-in: a5bf722e78 user: thomas tags: async_migrations
14:24
Code cleanup and more logging in the database migration code. check-in: a5de4eb6ee user: thomas tags: async_migrations
14:10
DatabaseMigrationRunner: Remove the database dumping code in run(), which was present to debug disappearing data during migrations. check-in: 1ac37e8ac9 user: thomas tags: async_migrations
14:08
Further improved @with_database_write_lock() by no longer assigning the application to a variable, which avoids a type hinting warning. check-in: 01e75d1d25 user: thomas tags: async_migrations
14:05
Improve the should_run attribute detection and logging output in the @with_database_write_lock decorator. check-in: 6317d7efd2 user: thomas tags: async_migrations
13:58
Application: Re-introduce the removed should_run attribute, which is used by the @with_database_write_lock decorator. The attribute is read before starting a task that was unblocked waiting on the database, and prevents starting long-running tasks during the application exit sequence. check-in: 12793dc4c7 user: thomas tags: async_migrations
13:47
Partial fix for the database migration tests. check-in: dcb11ec4b7 user: thomas tags: async_migrations
13:47
MigrationScriptRunner: Move the migration script parameter from run() to __init__(). The first is incompatible with pytest, which wraps QRunnable.run(), making it impossible to pass the parameter in test code. check-in: 8d98eb776c user: thomas tags: async_migrations
2024-10-01
15:54
Deck list downloaders for CubeCobra and Manabox.app now accepts the "http://www." prefix. check-in: e6312ee8a9 user: thomas tags: trunk
2024-09-26
08:16
Fix migration scripts running PRAGMA statements. Some scripts require turning off foreign key constraints, and that cannot happen within a transaction. The migration script runner now commits any transaction before running a PRAGMA statement, and starts a new transaction afterwards. check-in: da3236dd3f user: thomas tags: async_migrations
2024-09-25
08:04
DatabaseMigrationRunner: Release the runner instance when leaving run() check-in: 149fc9c088 user: thomas tags: async_migrations
2024-09-22
18:07
The Archidekt deck list downloader now accepts URLs starting with "https://www." check-in: 9deba291b1 user: thomas tags: trunk
16:42
Moved carddb_migrations.py out of the model package into the main package. check-in: 3a37939ad5 user: thomas tags: async_migrations
16:16
Implement asynchronous database migrations with progress reporting. Refactor handling of asynchronous application startup tasks. Run these sequentially by chaining them via the task end signal as a trigger to run the next. Run the three database-hitting tasks by first running the version migration, then the settings synchronisation, then the CLI argument handling. check-in: d27e4c90d2 user: thomas tags: async_migrations
2024-09-19
08:25
Extract the inner signal container class from the PrintingFilterUpdater class, and move it to runner.py check-in: 4733b68ea4 user: thomas tags: async_migrations
2024-09-18
08:02
Written class DatabaseMigrationRunner, derived from Runnable check-in: 8c70f69beb user: thomas tags: async_migrations
2024-09-17
10:29
Introduce dataclass container holding migration scripts. This simplifies the API a lot. Finish migrating the remaining migration scripts to the new data container. check-in: d1a7b7ee37 user: thomas tags: async_migrations
08:32
WIP: Started to transform the card database migration scripts into a declarative format, that can be loaded and processed by a to-be-written database migration worker. check-in: 1a52aa9938 user: thomas tags: async_migrations
2024-09-16
09:07
MainWindow: Fix a broken call to tr(), which was still using an f-string and wasn't picked up by lupdate. check-in: cd7aee3234 user: thomas tags: trunk
08:51
Packaging: Remove the MTGProxyPrinter.egg-info directory that is automatically generated during Python wheel file generation. check-in: 5f6cffb549 user: thomas tags: trunk
2024-09-15
18:34
Merge fork. check-in: af2df11c92 user: thomas tags: trunk
2024-09-14
12:50
Release v0.29.1 check-in: 3ab2cec226 user: thomas tags: trunk, release, v0.29.1
12:47
Fix broken PDF export option check-in: d750582d74 user: thomas tags: trunk
2024-09-13
12:29
Release v0.29.0 check-in: abdc6017f0 user: thomas tags: trunk, release, v0.29.0
12:19
tests/ui/test_page_config_container.py: Fixed bad import check-in: 0f75057af0 user: thomas tags: trunk
12:01
PageConfigWidget: Use partial() instead of lambdas to emit the page_layout_changed signal check-in: f5c1d9ddb9 user: thomas tags: trunk
11:56
Tests: Verify PageConfigWidget does emit the page_layout_changed signal when widget values are changed. Add a test timeout of 100ms for each test check-in: 7b64dd2c97 user: thomas tags: trunk
11:21
Tests: Add unit tests for PageConfigContainer, verifying that the page layout signal connection to the preview area works as intended. check-in: 4ce68c77ad user: thomas tags: trunk
09:57
Tests: Fix changelog-reading tests running on non-UTF-8 systems by specifying the file encoding. check-in: 6575ec1870 user: thomas tags: trunk
2024-09-11
07:35
PageConfigContainer & PageConfigWidget: Cleaned up code. Introduce some local variables to clean up calls and segment the code for better readability. PageConfigWidget: Use the existing helper methods to get all settings widgets per type, instead of hard-coding that in a second location. check-in: 470afc693c user: thomas tags: trunk
2024-09-10
17:54
Reduce build-time dependency on PySide6 to PySide6_Essentials. The Addons aren't required for the lupdate binary used from the package. check-in: 11de92d6eb user: thomas tags: trunk
15:07
Fixed rendering of a changelog entry. check-in: 39366e767c user: thomas tags: trunk
15:02
test_tappedout_csv_parser.py: Fixed broken test test_local_header_conforms_to_current_scryfall_return_data(). check-in: 5803f30c7b user: thomas tags: trunk
14:55
AboutDialog.ui: Remove the HTML text of the about text. Update translations from Crowdin. check-in: 51d47a3bad user: thomas tags: trunk
14:50
Update translations from Crowdin check-in: b4d3961960 user: thomas tags: trunk
14:48
Add an application icon, kindly provided by [https://www.reddit.com/user/islanders2013/]. check-in: 78953c0491 user: thomas tags: trunk
14:35
Add a small, "clean" icon version for use with window decorations. Closed-Leaf check-in: 6fff8ebccc user: thomas tags: app_icon
14:12
Set the icon in the cx_Freeze bundle. This causes the icon to show up on the Windows start menu and task bar. check-in: 5fef131b02 user: thomas tags: app_icon
12:30
Merge with trunk check-in: d372cefcda user: thomas tags: app_icon
12:26
Fix issue [723e7ac33028e403]. The deck import wizard now prefers cards to tokens when the name is ambiguous with cards that create token copies of themselves. check-in: 7f0517b848 user: thomas tags: trunk
12:16
Tests: Fix _validate_saved_document_settings() in test_document.py check-in: bd6bb0a239 user: thomas tags: trunk
12:09
Unify multiple definitions of a close_to_() matcher. check-in: 87f2628134 user: thomas tags: trunk
12:01
Tests: Fix test_renderer_zoom_action_triggers_zoom(). check-in: f148d86b59 user: thomas tags: trunk
10:01
Add an application icon contributed by [https://www.reddit.com/user/islanders2013/]. check-in: 56b39ec2e2 user: thomas tags: app_icon
2024-09-09
19:28
PageRenderer: Moved the generation of the keyboard shortcut texts used for the help tooltip into _setup_zoom_action(), which further de-duplicates the code. check-in: 08bdbd7ac3 user: thomas tags: trunk
19:23
PageRenderer: Refactor QAction creation for zoom actions, by encapsulating the logic in a method. Use partial() instead of lambdas. Fixed usage of some Qt enum constants used directly from the Ui element class. Add a missing tr() call for the tooltip displaying the available keyboard shortcuts. check-in: 93efc31fef user: thomas tags: trunk
16:56
test_page_layout_settings.py: Move test data into a parametrized variable, and add a variant testing with the full "millimeter" suffix instead of just "mm". check-in: 2b35da6c81 user: thomas tags: trunk
16:48
Fix broken document saving. check-in: aeaf525f12 user: thomas tags: trunk
16:39
WIP file extension registration for Windows cx_Freeze bundles. Leaf check-in: bc8c838602 user: thomas tags: bundle_improvements
08:30
PrintPreviewDialog: Reset the minimum size in the showEvent() event handler. The delayed reset via timer was unreliable. check-in: a751355872 user: thomas tags: trunk
08:11
Increase the initial size of the print preview dialog, by a request from Reddit. check-in: 317e503711 user: thomas tags: trunk
2024-09-08
21:16
Dependencies: Fixed bug in the development dependencies: Use PySide6 for Python 3.12+, and not PySide2. This brings the development and packaging requirements in line. check-in: 75a51a3a86 user: thomas tags: trunk
21:09
Dependencies: Lower bound for pint is 0.22, due to the use of QuantityT and UnitT. Add a work-around for 0.21, which is required on Python 3.8. check-in: 3ad77b3c3d user: thomas tags: trunk
20:43
Add tests for the version strings in the changelog. One test verifies that the version in the top-most changelog entry matches the one in metadata.py. The other test verifies that the version string in the header matches the HTML name of the section header. check-in: 01e58ba24e user: thomas tags: trunk
13:04
Fix a wrong word in a translation. check-in: 1fc16dc218 user: thomas tags: trunk
12:58
Replace HTML in a What's This? help with Markdown, and format it as HTML during runtime. This reduces the word count by 400 and eases the translation work. check-in: 22d21e3f88 user: thomas tags: trunk
12:57
Update translations from Crowdin Closed-Leaf check-in: e4fd4fc2f9 user: thomas tags: markdown_tooltips
12:29
Replace the HTML tooltip in the SelectDeckParserPage with the equivalent Markdown-formatted plaintext. Use a QTextEdit to convert it to HTML for formatting purposes. Also delete a duplicate tooltip. Reduces the word-count determined by Crowdin by ~400 words. This also makes it significantly easier to translate, as the markdown is much more human readable. check-in: 892e31c7d2 user: thomas tags: markdown_tooltips
2024-09-07
18:31
PageConfigWidget: Use functools.partial instead of lambda expressions to emit the page_layout_changed signal. Also rename variables to avoid shadowing names from an outer scope. Leaf check-in: b7fa230546 user: thomas tags: enum_based_paper_size
2024-09-06
23:55
Merge with trunk check-in: aac4f4c172 user: thomas tags: enum_based_paper_size
2024-09-05
18:24
Fix a Qt enum misuse. Use QEvent.Type instead of the aliases in the base class. check-in: c5470f2c88 user: thomas tags: trunk
18:06
Add a missing tr() call. check-in: 2750f49593 user: thomas tags: trunk
15:26
Update translations from Crowdin check-in: 2780ad2e7e user: thomas tags: trunk
15:24
PageConfigContainer.ui: Remove window title and geometry information. check-in: 59482a242d user: thomas tags: trunk
15:10
Add a live preview to the page layout settings UI. Implements [69cc651d32bfcd5f]. It re-uses existing components, and shows the preview using black-bordered solid gray placeholder images. check-in: 9af3bac22b user: thomas tags: trunk
15:02
PageConfigPreviewArea: Give the placeholder cards a name, as the card name is logged when changing the card count. This improves readability of the log file. Also log the initial numbers of regular, and oversized cards. Closed-Leaf check-in: ce3a462c21 user: thomas tags: page_layout_preview
15:00
PageConfigWidget: Initialize the internal page layout from the application settings. This avoids a brief period with an invalid page layout. check-in: b4173e21d9 user: thomas tags: page_layout_preview
07:09
PageConfigPreviewArea: Pre-populate the preview pages with half the maximum card count fitting on them. check-in: 2e08fa5a4c user: thomas tags: page_layout_preview
07:06
PageConfigPreviewArea: Set UI layout top, bottom and right margins to zero, so that it aligns with the PageConfigWidget, and is no longer visibly smaller. The containing widget already has those margins. check-in: 3f005625a1 user: thomas tags: page_layout_preview
2024-09-04
16:08
DocumentSettingsDialog: Hide the button to hide/show the preview area. For this dialog, the preview area should always be visible. check-in: 4624d1e4f0 user: thomas tags: page_layout_preview
16:05
Add a button to the PageConfigWidget that hides the preview area. Refactored the size-adaption logic in the settings to work with the page config preview hiding button, as that affects the minimum window width. check-in: 33174faf08 user: thomas tags: page_layout_preview
08:41
Remove the now unused default_document_layout_settings_page.ui UI file. check-in: 20a200f2bc user: thomas tags: page_layout_preview
08:40
Introduce the page layout preview functionality in the application settings window. check-in: 95f017926b user: thomas tags: page_layout_preview
08:38
Fix settings migration to not fail on migrated settings files. check-in: 07eec78c64 user: thomas tags: page_layout_preview
2024-09-02
14:56
PageConfigPreviewArea: Move numerical constants into an enum class. check-in: f6a1df52f5 user: thomas tags: page_layout_preview
2024-09-01
16:37
Implemented drawing preview cards. check-in: cfe07ca676 user: thomas tags: page_layout_preview
14:55
The preview document now has two pages, one for regular, and one for oversized cards. That makes switching between card sizes for preview purposes easier. check-in: 822e20ed96 user: thomas tags: page_layout_preview
2024-08-31
17:00
Fix a typo in a PageConfigPreviewArea Ui variable. Add stub slots for the ui element change signals. check-in: b92a67a30d user: thomas tags: page_layout_preview
16:44
PageConfigPreviewArea: Select "Regular" card size by default. check-in: 6230f874bd user: thomas tags: page_layout_preview
16:42
PageConfigContainer: Connect the page_layout_changed signal with the preview area's on_page_layout_changed slot. check-in: 075ed5377e user: thomas tags: page_layout_preview
16:32
Add changelog entry. check-in: 5d9cbfccdc user: thomas tags: page_layout_preview
16:08
PageConfigWidget: Emit the page_layout_changed signal when loading a layout from settings or from other instances. check-in: a641127881 user: thomas tags: page_layout_preview
16:05
DocumentSettingsDialog: Fixed the installed EventFilter to not crash when hovering over the Restore or Reset button check-in: 1fb8d21998 user: thomas tags: page_layout_preview
16:03
Update the preview area whenever values in the PageLayoutSettings are updated. check-in: 5db86ed654 user: thomas tags: page_layout_preview
16:02
PageConfigWidget: Introduce Qt signal page_layout_changed, which is emitted whenever the interanl PageLayoutSettings instance is altered. check-in: ade0bcb0dd user: thomas tags: page_layout_preview
15:06
Update the DocumentSettingsDialog to show a preview area. The new PageConfigContainer wraps the old PageConfigWidget, and the new PageConfigPreviewArea. It uses a separate Document instance, and the already existing PageRenderer to implement the rendering. check-in: 1afe2e3b71 user: thomas tags: page_layout_preview
09:58
Renamed two settings sections: "images" to "cards", and "application" to "update-checks". The new names better reflect the actual section contents. check-in: 4fdaab1d30 user: thomas tags: trunk
09:25
Improve application exit behavior while waiting on a broken network socket. quit() now properly hides the main window, so that the waiting on the socket timeout can occur in the background, without a user-visible, hanging window. check-in: 3b4b6d9088 user: thomas tags: trunk
2024-08-30
15:28
Merge with trunk. check-in: acb8044504 user: thomas tags: enum_based_paper_size
15:27
Completed merge with trunk. Closed-Leaf check-in: 2e9590e93f user: thomas tags: WIP
2024-08-29
18:03
Merged in l10n support. check-in: a780b366ce user: thomas tags: WIP
18:01
Merged up to just before l10n support. check-in: bb19752fd8 user: thomas tags: WIP
17:51
Merge with trunk, Round 1. Merged in decimal document settings support. check-in: 5be445c009 user: thomas tags: WIP
17:11
Adjust tests in test_page_config_widget.py. Also add test cases for previously untested boolean settings. check-in: eec2f2c378 user: thomas tags: enum_based_paper_size
16:56
Adjust test_resources.py::test_all_resource_files_are_listed_in_resources_qrc(). Ignore compiled translation files. check-in: f45acdfa47 user: thomas tags: enum_based_paper_size
16:54
Adjusted tests in test_page_layout_settings.py. check-in: c9464d944c user: thomas tags: enum_based_paper_size
2024-08-28
16:04
DocumentLoader: Ensure that _migrate_paper_size_settings() passes when presented with an empty DocumentSettings table. check-in: 129c5e40bf user: thomas tags: enum_based_paper_size
15:18
Fix broken import caused by PyCharm check-in: 10afc4b917 user: thomas tags: enum_based_paper_size
15:17
DocumentLoader: Actually properly migrate the save file from paper sizes. The migration script parses the paper size in the document, and replaces them with enum values, if it detects a pre-defined paper size. check-in: 4c37e9bb09 user: thomas tags: enum_based_paper_size
12:45
Adjusted test test_valid_page_layout_settings_load_correctly(). Reduced test case count from ~43000 to 328. Instead of building a cross product of each setting, instead set them individually while leaving other settings as defaults. The new approach increases the expressiveness, as the four margin values and three boolean settings are now tested individually. check-in: 9e1a77d140 user: thomas tags: enum_based_paper_size
2024-08-26
20:23
Refactor internals to be fully unit-aware. Lengths in document settings are now unit-aware and carry a length unit as pint Quantities. The PageLayoutSettings, and the configuration file now support setting values with length units. For now, the save file format continues to contain plain floating point numbers. This will be refactored with the next large save-file rewrite. Also, the only allowed length unit is millimeter. Once the save file is unit-aware, additional length units like inches can be allowed and supported via UI. check-in: aad0870a27 user: thomas tags: trunk
17:29
Add test for PageLayoutSettings.to_save_file_data(), validating that all keys are present, and that values only contain acceptable types. Closed-Leaf check-in: 16413f5b7a user: thomas tags: embrace_pint
15:22
PageLayoutSettings: Add helper method converting instances into a format suitable for storage in document save files. check-in: 11c4de2254 user: thomas tags: embrace_pint
15:16
Adjust tests for MainWindow. check-in: 90e225d47a user: thomas tags: embrace_pint
15:11
Adjusted tests for PageLayoutSettings. check-in: edbd2f991b user: thomas tags: embrace_pint
14:58
Adjusted the remaining failing DocumentLoader tests. check-in: 5ff84f024f user: thomas tags: embrace_pint
07:37
PageConfigWidget: Ensure the local PageLayoutSettings and the value spinboxes are in sync when loading from another PageLayoutSettings instance. Also adapt tests for use of pint. check-in: 6da9c35785 user: thomas tags: embrace_pint
2024-08-25
16:38
Adjusted a few PageConfigWidget tests. check-in: 156678c018 user: thomas tags: embrace_pint
15:40
test_page_config_widget.py: Add missing tests for boolean settings check boxes. check-in: 199e3a7061 user: thomas tags: embrace_pint
15:33
Adapt tests in tests/ui/test_page_scene.py check-in: 8ccabe9d49 user: thomas tags: embrace_pint
15:26
Fixed issue in the save file validation: The document settings are updated from the save file. So it can contain pint.Quantity instances for keys not present in the save file. The type checker now allows for Quantity instances to cover these cases. check-in: f707f21f7a user: thomas tags: embrace_pint
15:09
Fix tests in tests/test_document.py. check-in: a28eafa77e user: thomas tags: embrace_pint
14:42
Fixed type errors where Quantity instances were re-written as plain floats or where code did not handle Quantity instances yet. check-in: 1b90bb52aa user: thomas tags: embrace_pint
13:52
Fix errors caused by a seemingly bad merge in [4953098a17f77467]. check-in: 225628075b user: thomas tags: embrace_pint
13:49
More in-depth defense against invalid document dimension settings. Only allow millimeter as length units, and convert values in other length units to millimeter. In the future, further length units like inches can be allowed by simply adding them to the ALLOWED_LENGTH_UNITS set. Non-length units or invalid expressions trigger a default value restoration. check-in: cde6331fae user: thomas tags: embrace_pint
2024-08-23
15:34
Merge with trunk. Also replace all usages of pint.Quantity in type annotations with the pint.facets.plain.registry.QuantityT, which is the abstract type that carries the API. This enhances the type hinter's ability to auto-complete the conversion methods. check-in: 4953098a17 user: thomas tags: embrace_pint
14:58
SettingsWindow: Rename HoverEventFilter to HighlightDifferingSettingsHoverEventFilter. check-in: 011ca71441 user: thomas tags: trunk
10:39
Add missing translation support for the cache cleanup wizard. check-in: c6f3a42038 user: thomas tags: trunk
10:38
Update translations from Crowdin. Closed-Leaf check-in: 02927ba380 user: thomas tags: l10n
2024-08-22
15:03
Reduce diff size with the port_PySide6 branch. Delete duplicates in about_dialog.ui. check-in: 6fb56e6a8b user: thomas tags: trunk
14:31
Minor adjustments for the cache cleanup wizard column widths. Also use enum.auto() for enum constants, and introduce a local variable for a constant that is used multiple times. check-in: 4e5a1c4e5a user: thomas tags: l10n
07:42
Implement localization support for the CacheCleanupWizard. This was somehow forgotten in the previous l10n branch check-in: 3fd282aec6 user: thomas tags: l10n
2024-08-21
07:39
Application: Use the QLibraryInfo.LibraryLocation enum proper. check-in: fec8be4b1a user: thomas tags: trunk
07:33
Fix reported style issues check-in: cc66fe5d13 user: thomas tags: trunk
2024-08-19
18:46
Merge with trunk check-in: 2d5ac15bcd user: thomas tags: embrace_pint
17:12
Localization support. Supports formatting strings for plural forms via Qt's translation framework. Includes translations into US English and German. Implements [e73efc5badc8c217]. check-in: a2f843e87a user: thomas tags: trunk
16:59
Dialogs: Add a comment. Closed-Leaf check-in: 18db52e041 user: thomas tags: l10n
15:17
Work around issues with pylupdate5, which does not detect strings, if parameters are passed via object attribute access. Update translations with those affected strings from Crowdin. check-in: 3cfa25ee9f user: thomas tags: l10n
14:07
Update translations from Crowdin. check-in: ffc0e5ce0b user: thomas tags: l10n
14:07
Adjusted file type strings in dialogs check-in: 55364cc95c user: thomas tags: l10n
12:28
Simplify the context parameter of translate()-calls in DocumentAction classes. check-in: 615bc2a601 user: thomas tags: l10n
11:06
Merge with trunk. check-in: 984d726a07 user: thomas tags: l10n
11:06
Limit cx_Freeze to version 7.1 for now. 7.2 seems to break the compiled resources module somehow. check-in: 863c8e44c5 user: thomas tags: trunk
11:05
Fallback to PySide6 for lrelease on Windows with newest Python3, as PySide2 is unavailable there. check-in: 1d685e1367 user: thomas tags: l10n
2024-08-16
11:05
tox.ini: Fix weird issues with Python3.8, which started rejecting Path instances in shutil. check-in: 456c47032c user: thomas tags: l10n
2024-08-15
15:48
Update translations from Crowdin. check-in: bd75ae0595 user: thomas tags: l10n
15:47
Reworked some document action tooltip generation. Move formatting page ranges into the base class. check-in: f831a030f3 user: thomas tags: l10n
15:24
Load- and SaveAsDialog: De-duplicate setting the default file suffix by pulling the call into the base class. check-in: c8d73093a4 user: thomas tags: l10n
15:21
SaveLoadDialog: Replace f-String with normal string literal inside a tr() call. The f-string is undetected by lupdate. check-in: b46b9b2755 user: thomas tags: l10n
07:57
ActionLoadDocument: Fix exception raised in tooltip formatting code. One of the string parameters was not provided by format(). check-in: effe46d4d8 user: thomas tags: l10n
07:56
ActionAddCard: Fix off-by-one error in the tooltip formatting code. It did not properly translate from zero-based page indices to human-readabe page numbers for newly added pages. check-in: 05e8c642bb user: thomas tags: l10n
2024-08-14
14:47
Implement localisation support for ActionImportDeckList, ActionLoadDocument, ActionMoveCards, ActionNewDocument, ActionNewPage, and ActionDeletePage. check-in: 86ba17f60f user: thomas tags: l10n
14:23
Implement localisation for ActionNewPage, ActionDeletePage, ActionReplaceCard and ActionShuffleDocument check-in: 3cb7a61796 user: thomas tags: l10n
14:22
Remove en-GB locale, as the project starts to hit the Crowdin free tier word limit. check-in: 2008ecb8cf user: thomas tags: l10n
13:56
Implement localisation support for ActionCompactDocument and ActionEditDocumentSettings. check-in: ea248dea6b user: thomas tags: l10n
13:55
DocumentAction: Assign QCoreApplication.translate to the action base class, without the requirement to import QCoreApplication in each module. check-in: a4cbe51279 user: thomas tags: l10n
11:33
Update translations from Crowdin. check-in: 1b4c8d029a user: thomas tags: l10n
11:32
Marked the DeckImportWizard window title for translation. Fixed tab stop order of the first wizard page. check-in: 3bce7870b9 user: thomas tags: l10n
09:03
Fixed multiple typos and grammar issues in UI texts. check-in: 09d3267a61 user: thomas tags: l10n
08:40
DeckImportWizard: Fixed a plural form in _update_accept_button_on_oversized_card_count_changed() check-in: 035f27febb user: thomas tags: l10n
08:36
Merge with trunk. check-in: b2f18be941 user: thomas tags: l10n
08:12
scripts/compile_ui_files.py: Improve error handling: Log the offending file name, if compilation fails due to errors in the input file. check-in: e61781bb35 user: thomas tags: trunk
2024-08-13
18:51
tox.ini: Disable building cx_Freeze bundles on Linux for now when packaging. The tests for it are still run, but the packaging part is skipped, since they aren't distributed anyways. This significantly speeds up the packaging step. check-in: 941f438589 user: thomas tags: trunk
18:34
Add translations from Crowdin. check-in: 1d789c808e user: thomas tags: l10n
18:23
MainWindow: Fixed a bad substitution in a UI string. check-in: 3ae62bb37b user: thomas tags: l10n
17:54
Fix a typo in a UI string. check-in: 0f66722951 user: thomas tags: l10n
17:44
Add a few translation notes check-in: e378f8672d user: thomas tags: l10n
17:43
Renamed the source file for translations to mtgproxyprinter_sources.ts. The en-US file is no longer considered the source, which allows translating it via crowdin, enabling plural forms. check-in: b4c9309ae0 user: thomas tags: l10n
16:39
PageConfigWidget: Implement localisation of the resulting page capacity text. check-in: 2922e60ecb user: thomas tags: l10n
16:10
AboutDialog: Fixed fallback path to ThirdPartyLicenses.md check-in: 9164c2f418 user: thomas tags: l10n
16:04
Properly load qtbase localization based on [https://doc.qt.io/qtforpython-6/tutorials/basictutorial/translations.html] check-in: 25b5333660 user: thomas tags: l10n
16:03
scripts/update_translations.py: Fix get_lrelease() to allow it to pass the test. check-in: 3d8e6d27f9 user: thomas tags: l10n
14:57
Fix a missing whitespace in a logging message check-in: 3b59cfaf46 user: Thomas tags: l10n
14:53
scripts/update_translations.py: Only try to compile existing translation files. check-in: 0440bb5a18 user: thomas tags: l10n
14:48
Fix test_all_resource_files_are_listed_in_resources_qrc. It should skip .ts files, as those are not meant to be included in the compiled archive. Only compiled translations (suffix .qm) should be tested. check-in: 21cc3a812b user: Thomas tags: l10n
14:46
Fix running the unit tests, which now have a dependency on lrelease, so add PySide2 as a dependency for the "dev" extra. Unconditionally compile translations whenever running the unit tests check-in: d973151ae9 user: Thomas tags: l10n
14:24
WIP packaging for Windows. Add PySide2 as a packaging dependency, as PyQt5 does not provide the required lrelease binary. If lrelease is not on the $PATH, try to pry the binary path from the venv. check-in: 4aa5f62a4f user: Thomas tags: l10n
13:13
Add changelog entry. Fixed wording in another entry. check-in: 42650c702e user: thomas tags: trunk
13:04
CardDB migrations: Always run ANALYZE after running at least one migration script. check-in: 59d6b5e071 user: thomas tags: trunk
13:01
CardDatabase: Add another index to CardFace, aiding name translation. Bump schema version to 33. check-in: d7ef33826d user: thomas tags: trunk
12:49
Improve type inference. check-in: 3ee623fabe user: thomas tags: trunk
2024-08-12
12:54
Tests: Add test verifying that the document save file user_version flag matches the version in the file name. Also remove leading zeros in the SQL file. check-in: 28dd5d9aae user: thomas tags: embrace_pint
12:36
Ignore PNG files in the checkout. check-in: e3be1c3009 user: thomas tags: embrace_pint
2024-08-11
15:03
DocumentLoader: Do not store Quantity as text in the database within migration scripts. For consistency, older save versions must contain numbers. Quantity storage as text will be enabled in save version 7. check-in: 5930c2013a user: thomas tags: embrace_pint
14:48
Register a converter function for pint.Quantity to str for sqlite3, enabling the code to directly INSERT Quantity instances check-in: 1dd02ec4f2 user: thomas tags: embrace_pint
14:22
Started fixing tests check-in: 9228ac755c user: thomas tags: embrace_pint
14:18
Document/DocumentLoader: Convert pint.Quantity to float when writing to document save files. check-in: 4df8cda083 user: thomas tags: embrace_pint
13:43
Fix ConfigParser and SectionProxy type hints. Consistently use the custom subclasses from units_and_sizes module, instead of the default classes from the standard library. This enables proper type hinting support for the get_quantity() method. check-in: ff3195186a user: thomas tags: embrace_pint
13:23
ConfigParser: Annotate that parser[section] returns a SectionProxy that has the get_quantity() method. check-in: e5f1ce95b3 user: thomas tags: embrace_pint
2024-08-10
20:59
PrintCountUpdater: Move the write lock acquisition to the inner method. Extend the docstring describing the class. Also remove all attributes holding references to the class in the print dialog classes. The runner managing it's own instance tracking is sufficient. check-in: 8cf86ac4f0 user: thomas tags: trunk
20:33
PrintCountUpdater: Store print data in __init__, which stores the data synchronously from the main thread. Fixes race condition [bf93c2d3f5906085]. Also improve type hinting, and only store references to the required data, instead of the whole document instance. check-in: b905e53b5f user: thomas tags: trunk
17:24
Implement downloading Scryfall searches as CSV from the Scryfall API. Integrate into the deck list import wizard, adding a text field for Scryfall searches that can be directly imported as deck lists. Implements [d6085a9f5c42470a]. check-in: 3ac672ea94 user: thomas tags: trunk
17:23
ScryfallCSVDownloader: Enable downloading "extras", like tokens, planes, etc. Closed-Leaf check-in: 0a24e6d490 user: thomas tags: import_from_scryfall_api_search
17:20
Add changelog entry. Limit the Scryfall search query length to 900 characters. The API has a hard limit of 1000 characters, so stay below that. check-in: c53374c308 user: thomas tags: import_from_scryfall_api_search
17:13
ScryfallCSVDownloader: Enable multi-lingual support when fetching from the card search API. check-in: 0798c91285 user: thomas tags: import_from_scryfall_api_search
17:09
MeteredSeekableHTTPFile: Fail fast with HTTP status codes 403 and 404. The latter lets the Scryfall search downloader fail gracefully on queries returning zero cards. check-in: 9209237d4d user: thomas tags: import_from_scryfall_api_search
17:05
Implement downloading the entered Scryfall query when pressing the download query button. Amended MeteredSeekableHTTPFile to explicitly handle HTTP 400 Bad Request errors, and not re-try the connection on those. Instead fail fast, and propagate the exception to the calling code. check-in: 45ed90ef6a user: thomas tags: import_from_scryfall_api_search
16:45
DeckImportWizard: Implemented showing the current Scryfall search on the Scryfall website. check-in: 152c4882e8 user: thomas tags: import_from_scryfall_api_search
16:40
LoadListPage: Add a text field for Scryfall queries and a "view" and "download" button. The view button should show the query on the Scryfall website, the "download" button should donwload the query result as a deck list. Enable/Disable the view search and download search result buttons based on the entered Scryfall query. Only enable the buttons, if the text field has content. check-in: bf7362126f user: thomas tags: import_from_scryfall_api_search
16:02
Add changelog entry. check-in: 330d01fafe user: thomas tags: import_from_scryfall_api_search
15:55
Implemented downloading Scryfall search API links. The URL validator now accepts links to the search API that contain a non-empty query parameter (q=), and enforces CSV output. check-in: 5a42879f9c user: thomas tags: import_from_scryfall_api_search
15:33
ScryfallCSVParser: Hardened the parser against insufficient data when selecting a printing. If neither a card name nor both set code and collector number are available, skip the input lines. check-in: efcc761055 user: thomas tags: import_from_scryfall_api_search
15:21
ScryfallCSVParser: Adjusted parsing logic to work with API search results. check-in: f4ea673954 user: thomas tags: import_from_scryfall_api_search
15:07
ScryfallCSVParser: Add test cases for the new API search. check-in: 7337fefd6c user: thomas tags: import_from_scryfall_api_search
15:00
Add test case verifying that the sample data for the tappedout CSV parser is consistent with the actual live API results. check-in: 91311da813 user: thomas tags: import_from_scryfall_api_search
2024-08-08
21:15
PageConfigWidget: Fix updating the PageLayoutSettings when the UI updates. The raw floats from the QDoubleSpinBox instances have to get (un-) boxed in pint.Quantity, instead of directly set as is. check-in: 7f27d442c8 user: thomas tags: embrace_pint
09:25
Implement localization support for the document compacting action. check-in: 220ddf8845 user: thomas tags: l10n
08:06
Merge with trunk. check-in: 17b2a898a0 user: thomas tags: l10n
08:02
Fix translation of deck list file types. The previous approach was unsuitable, because the translations were requested from a static context without parser class instances, but the implementation required having class instances. It now translates via QCoreApplication.translate(). check-in: ba2a3833bd user: thomas tags: l10n
2024-08-07
21:03
Port loading document settings to use pint. Port PageLayoutSettings attributes to pint.Quantity. Port the PageScene to use pint.Quantity as parameters, where it previously took distances as raw float values. check-in: 6b82fda160 user: thomas tags: embrace_pint
19:32
Add custom ConfigParser and SectionProxy subclasses that implement get_quantity(), parsing INI config values to pint.Quantity. Use that to store document settings with units in the configuration file. check-in: 0aaf08f84d user: thomas tags: embrace_pint
17:55
units_and_sizes: Create the unit registry via a setup method. Register a conversion context for length ⇔ pixel conversions. The latter allows conversion without the need of an external function. check-in: 285cd70c39 user: thomas tags: embrace_pint
17:48
Allow floating point values for numerical document settings. Also clamp these values to the [0, 10000] range. Implements [25c5698daf89fc54] and [34f7de80cb8b803e] check-in: 8d9398b3cf user: thomas tags: trunk
17:46
DocumentSettings: Clamp all values to the [0, 10000] range, both when reading from the settings file and from loaded documents. This handles range violations more gracefully than resetting to defaults (settings file) or refusing to load (saved documents). Closed-Leaf check-in: bf1a830afd user: thomas tags: decimal_spacings
15:39
Remove rounding of decimal document settings to the nearest 1/12th. It wasn't playing nice with the UI. check-in: bae3d2bfc0 user: thomas tags: decimal_spacings
2024-08-04
18:38
DocumentLoader: Handle floats in loaded document settings. Also cap all values to 10000, to prevent DoS attacks via excessively large paper sizes. check-in: d1b1104d77 user: thomas tags: decimal_spacings
17:24
Replace the PageConfigWidget QSpinBox instances with QDoubleSpinBox instances. Update the PageLayoutSettings annotation type to float. Replace all related settings.getint() with .getfloat(). Automatically round decimal settings to the nearest permissible value. That behavior is quite strict and has to be tuned, because it is annoying right now. check-in: cd82a5590e user: thomas tags: decimal_spacings
16:35
Settings: Numerical document settings are now stored as floating point numbers that get rounded to nearest multiple of 1/12, which is 1px at 300 DPI. Add unit tests validating the rounding logic. check-in: 2f207555c2 user: thomas tags: decimal_spacings
15:24
Implement method round_to_nearest_multiple(value, multiple), which will be used to round fractional spacing values to values corresponding to full pixels. check-in: c71c27eb18 user: thomas tags: decimal_spacings
09:29
Fix accidental breakage in tests/test_settings.py introduced in [d5146895a0fa2850]. Somehow, a random keypress sneaked in unnoticed. check-in: 8149ef9703 user: thomas tags: l10n
2024-08-03
17:39
scripts/update_translations.py: Port to PyQt5 / pylupdate5. check-in: f9fe7a06a3 user: thomas tags: l10n
15:53
resources.qrc: List all localization files in alphabetical order. Incomplete entries are commented out. check-in: c25445758a user: thomas tags: l10n
15:40
scripts/update_translations.py: Add "clean" action that deletes compiled translation files. check-in: 82c4d422d1 user: thomas tags: l10n
2024-08-02
13:44
Reworded some UI text regarding print guessing, which is replaced with "print selection". Add a few input method hint flags to text fields, where appropriate. check-in: a59215f0b1 user: thomas tags: l10n
12:45
Application: Rework translation loading. The logging now logs both system locale and configured locale. check-in: c326f93a97 user: thomas tags: l10n
12:44
tox.ini: Add language compilation to the build steps. check-in: 51d5d1ddec user: thomas tags: l10n
11:42
Implemented loading the language based on the language set in the settings. check-in: 2ba27b64f0 user: thomas tags: l10n
11:33
Add setting and UI to select the application language. check-in: d5146895a0 user: thomas tags: l10n
11:31
scripts/update_translations.py: Create directory mtg_proxy_printer/resources/translations, if it does not exist. This allows pyside6-lupdate to run on a fresh checkout. check-in: 89dbc53f4b user: thomas tags: l10n
11:08
Add changelog entry. check-in: 001042ee20 user: thomas tags: l10n
2024-07-29
14:59
MainWindow: Fix typo in a tooltip. check-in: 65eac412d6 user: thomas tags: l10n
14:39
Implemented localization for progress bar texts. check-in: 977170348f user: thomas tags: l10n
13:36
Fix tr() calls for plural forms. lupdate does not support the keyword argument form, so it must be called as tr("%n", "disambiguation", count). check-in: aee2cb14d9 user: thomas tags: l10n
11:54
Dialogs: Fix RuntimeError by replacing localized string parameters to __init__ with setting them after parent __init__() returned. self.tr() only works after the Qt base class __init__() returned. check-in: 730e6124d3 user: thomas tags: l10n
2024-07-28
14:06
CentralWidget: Add localization support for the context menu actions. check-in: a40c14450c user: thomas tags: l10n
2024-07-24
12:59
Implemented localization support for the deck list parser file type displays. check-in: 544af09a92 user: thomas tags: l10n
07:42
Document: Implement localization support. check-in: 4a82236013 user: thomas tags: l10n
07:14
CardListModel: Implement localization support. check-in: d23b21f7cf user: thomas tags: l10n
2024-07-23
15:02
Replaced all f-strings within tr() calls with regular strings, and call format() outside of tr(). That makes the formatted strings translatable. check-in: ba5b2f3bad user: thomas tags: l10n
07:34
Ui string fixes. check-in: 2050ad6dff user: thomas tags: trunk
07:33
Additional UI string fixes. check-in: 9aa5a808c1 user: thomas tags: l10n
2024-07-22
12:06
Pick Ui string improvements from the l10n branch check-in: 44dfb78320 user: thomas tags: trunk
12:03
Fix UI string issues. Unset window titles for non-window widgets in UI files. check-in: 3c17ced1fc user: thomas tags: l10n
2024-07-15
15:24
Fixed a typo in a main window tooltip. check-in: 958939e0a3 user: thomas tags: trunk
14:44
Wrapped more UI strings in tr() calls. check-in: 324fdb1daa user: thomas tags: l10n
13:31
Merge with trunk check-in: e44653f0dd user: thomas tags: l10n
12:41
Merge with trunk. check-in: 8ab1ddc092 user: thomas tags: enum_based_paper_size
12:23
Merge branch v0.28.x into trunk check-in: 285bc9866c user: thomas tags: trunk
2024-07-07
13:02
Release v0.28.3 Closed-Leaf check-in: 04fa7b3ad7 user: thomas tags: release, v0.28.x, v0.28.3
12:44
Prepare Release v0.28.3 check-in: 72075ca415 user: thomas tags: v0.28.x
2024-06-25
08:28
Changelog: Removed duplicate section header. check-in: 088007bd1c user: thomas tags: v0.28.x
08:23
Fix garbage in the changelog, caused by a bad merge. check-in: c5b6450e59 user: thomas tags: trunk
08:21
Pick fix from trunk check-in: 0608b3a6ae user: thomas tags: v0.28.x
08:20
CardDatabase.get_available_sets_for_card(): Round-trip the input set, if the result is empty. check-in: 2f047aba17 user: thomas tags: trunk
08:06
Pick bug fixes from trunk check-in: eea41bb512 user: thomas tags: v0.28.x
08:05
Pick bugfix from the v0.28.x branch, fixing the MTGTop8 URL re to accept the optional www. subdomain. check-in: 0835442b0a user: thomas tags: trunk
2024-06-24
18:01
Add changelog entry. check-in: f06eec9479 user: thomas tags: v0.28.x
17:55
Fix MTGTop8Downloader rejecting valid links pointing to the "www" subdomain. www.mtgtop8.com is valid, too. check-in: 42c2c3d1b9 user: thomas tags: v0.28.x
2024-05-23
07:42
Encapsulate page size and orientation data in a new class PageSizeManager, located in units_and_sizes.py. This will allow hooking into Qt signals to update the acceptable page sizes based on configured margins. check-in: 4d6d717e71 user: thomas tags: enum_based_paper_size
2024-05-21
13:05
Merge with trunk. check-in: 3b115f5a02 user: thomas tags: enum_based_paper_size
13:05
Fix failing document tests. check-in: 4b34ab15ed user: thomas tags: enum_based_paper_size
12:22
Fix inclusion of ijson backends. Leaf check-in: 441de2ce03 user: thomas tags: cx_Freeze_via_pyproject_toml
12:12
Move cx_Freeze config to pyproject.toml, and delete setup_cx_freeze.py. This requires cx_Freeze version 7.0.0 check-in: 4cac67dec7 user: thomas tags: cx_Freeze_via_pyproject_toml
11:57
Tests: Remove a compatibility workaround with PyHamcrest 1.x, which is no longer supported. check-in: b3b3b31a01 user: thomas tags: trunk
2024-05-18
11:43
AddCardWidget: Honor any card name filter when switching the selected language. Fixes [0ead0455412fe659] check-in: 7c05a95a15 user: thomas tags: trunk
11:29
Improve print switching. Fixes [549fa41374aa99fa] and [91a01402742ea685]. check-in: 1709ec68e3 user: thomas tags: trunk
2024-05-17
14:06
Changelog: Re-worded an entry. Closed-Leaf check-in: 82c2a9cdd8 user: thomas tags: fix_print_switching
13:10
Fix crash when switching the card language, if all printings in the source language are hidden by card filters. check-in: a0b4fefcfa user: thomas tags: fix_print_switching
11:27
Properly round-trip data of hidden printings in get_available_sets_for_card() and get_available_sets_for_card() check-in: e9b25b7721 user: thomas tags: fix_print_switching
2024-05-16
08:30
WIP attempt at designing a query that round-trips the data of hidden printings, in case those are present in the document. check-in: aeab82e433 user: thomas tags: fix_print_switching
07:37
tests: Add helper update_database_printing_filters(), which implements updating the printing filters of the given card database to provided values. check-in: 08ca847ca6 user: thomas tags: fix_print_switching
2024-05-15
15:48
Add changelog entry. check-in: 50ae206700 user: thomas tags: fix_print_switching
14:57
Sort the returned set codes by release date. check-in: 2b89f47729 user: thomas tags: fix_print_switching
14:56
Fix another typo in test data. check-in: 25d5bedbbe user: thomas tags: fix_print_switching
14:54
Fix an error in test data. A JSON sample was loaded twice, instead of loading two distinct samples. check-in: d5199f7860 user: thomas tags: fix_print_switching
14:51
Properly handle card language, and de-duplicate results. check-in: 486c5a2d26 user: thomas tags: fix_print_switching
14:42
CardDatabase: Add WIP methods get_available_sets_for_card() and get_available_collector_numbers_for_card_in_set(). First returns the sets the given card is available in, the second returns the collector numbers the printing is available in within it's own set. check-in: 0a2f54fabd user: thomas tags: fix_print_switching
13:57
Add three JSON samples for Spirit tokens, that will be used in test cases. check-in: 3cc40b4577 user: thomas tags: fix_print_switching
2024-05-14
12:04
CardDatabase: Improve docstring for find_related_cards, updating it to the new semantics. check-in: 655d6af3bb user: thomas tags: trunk
2024-05-09
15:49
Add new card filter for Art Series cards. check-in: a0a2162a5a user: thomas tags: trunk
15:07
Improve the related card search: The search now finds token cards created by Dungeons. check-in: 4336a63d4e user: thomas tags: trunk
14:03
Removed instance tracking of MeteredSeekableHTTPFile instances. check-in: d99a0d7769 user: thomas tags: trunk
11:19
Use a dict to store instances in the Runner base class. check-in: 5cea0b88aa user: thomas tags: trunk
09:32
Add a few comments to the card info downloader. check-in: 310d05bbfd user: thomas tags: trunk
07:39
Merge bugfix from v0.28.x branch check-in: c3064fb3be user: thomas tags: trunk
2024-05-07
17:23
Release version 0.28.2 check-in: 651a2ce3c0 user: thomas tags: release, v0.28.x, v0.28.2
15:59
Implement fully automatic basic land removal in the deck import setting, and a settings option to enable/disable this. Implements [b2f3c8206d645eb6]. check-in: 138dc9d107 user: thomas tags: trunk
13:18
settings: validation and migration functions updated to use a different parameter name that does not shadow the settings object from module scope. check-in: 99cc4706b8 user: thomas tags: trunk
13:08
Add a label showing the last database update to the About dialog. Implements [380e741c5de8624d]. check-in: 6ebf65c941 user: thomas tags: trunk
2024-05-06
11:49
Release version 0.28.1 check-in: d8bad16b5c user: thomas tags: trunk, release, v0.28.1
11:21
tests/test_document.py: Replace use of TemporaryDirectory context manager with the tmp_path PyTest fixture. This mitigates permission denied errors in the test suite on Win10. check-in: ac7cdaf56f user: thomas tags: trunk
10:53
tests/ui/test_page_scene.py: Remove all unused qtbot fixture uses. check-in: 176a3efad3 user: thomas tags: trunk
10:41
Actually use the ijson use_float API parameter to enable use of faster float() numbers. It seems to have been dropped previously, somehow. check-in: 3067d19708 user: thomas tags: trunk
07:39
scripts/compile_ui_files.py: Fix DeprecationWarning. check-in: 40a840ba4f user: thomas tags: trunk
07:24
Rework requirements compilation script. Leaf check-in: fbdc5d77ec user: thomas tags: recompile_requirements
06:31
Move compilation of requirements*.txt files into a dedicated script for reusability. check-in: f60659ea00 user: thomas tags: recompile_requirements
06:06
Also install the packaging tools into the development virtual environments. check-in: 29c29d008a user: thomas tags: trunk
06:04
create_development_environment.sh: Use the venv module to create the virtual environment, instead of virtualenv. check-in: 2736ca37f0 user: thomas tags: trunk
2024-05-05
19:21
Fix [3d7336c562aa18f7]. Downloading images via the MissingImagesManager properly emits the document dataChanged signals, causing the PageScene to update as intended. check-in: f80a76e87f user: thomas tags: trunk
18:47
Improve wording in the changelog. check-in: add7ebd38b user: thomas tags: trunk
18:00
Add changelog entry. check-in: e28d339eb5 user: thomas tags: trunk
17:57
Implement fix for [ad0d4560d70f7d04], including unit tests. check-in: 8e9d7275b6 user: thomas tags: trunk
17:54
Implement fix for [ad0d4560d70f7d04], including unit tests for card bleeds with two images. Closed-Leaf check-in: fa94deabdb user: thomas tags: fix_card_bleed
16:39
Tests: Add test case verifying that the CardItem origin point is equal to the origin of the contained card pixmap item. Also a few cleanups in another test. check-in: 221ea7ec8c user: thomas tags: fix_card_bleed
16:05
Tests: Add test_card_bleed_with_single_card test case verifying the card bleed rendering with a single card on the page. check-in: 53c6e3a340 user: thomas tags: fix_card_bleed
12:18
Add tests for sharp corner rendering. check-in: 4cfb5c524b user: thomas tags: fix_card_bleed
2024-05-02
12:59
Implement crude "round corners" for generated pixmaps. check-in: 6ddb0532bb user: thomas tags: fix_card_bleed
12:42
Tests: Replace boolean oversized parameter in create_card_with_pixmap() helper with a size parameter taking in a CardSize instance. check-in: 6f9be8556d user: thomas tags: fix_card_bleed
2024-05-01
14:28
Tests: Simplify and unify action application in tests/ui/test_page_scene.py. Always use document.apply(action). Also stop using the wait_signal() context manager, since action application is fully synchronous. check-in: 2746000e7a user: thomas tags: trunk
14:11
pyproject.toml: Add Python 3.12 to the supported versions classifier list. check-in: 37e46c7abd user: thomas tags: trunk
14:05
Dependencies: Require ijson 3.2.1 when running on Python 3.12. Also preemptively exclude "ijson.benchmark" from built packages, which will be included in future ijson versions. check-in: c6e1b9ab9f user: thomas tags: trunk
13:53
Dependencies: Bump minimum required version of PyHamcrest to 2.0.0. Tests already required it, so running the application only on 2.0 or later is reasonable. check-in: 8ad0978325 user: thomas tags: trunk
13:50
Add dependency on typing_extensions, when running under Python 3.10 or older. It was previously a transitive dependency of pint. Use typing_extensions for Self and NotRequired, instead of hacking something together. check-in: f578ec5ec9 user: thomas tags: trunk
2024-04-27
13:01
Fix a typo in a variable name check-in: 7774985a79 user: thomas tags: trunk
2024-04-26
13:39
test_page_scene: Refactor create_card_with_pixmap() helper. Remove the document parameter. Make the pixmap color configurable, defaulting to transparent. Use the CardSize enum to determine the image size, instead of hard-coding the dimensions in pixels for oversized cards. check-in: b4e0cecc45 user: thomas tags: trunk
2024-04-23
07:04
Merge fork check-in: 1057bac760 user: thomas tags: enum_based_paper_size
2024-04-22
09:11
WIP test loading various page layout settings from a save file. check-in: 7e45dc12dc user: thomas tags: enum_based_paper_size
2024-04-21
18:58
Sync with trunk check-in: dcacf3ca39 user: thomas tags: enum_based_paper_size
18:40
Mostly whitespace changes to reduce the diff between trunk and the port_pyside6 branch check-in: b925736397 user: thomas tags: trunk
18:29
Use the proper Qt enums in HoverEventFilter.eventFilter() check-in: 5c09339851 user: thomas tags: trunk
18:28
Pull Ui compiler improvements and class name / ui class name alignment improvements from branch [port_pyside6]. check-in: 55b69bba3a user: thomas tags: trunk
18:19
Merge fork. check-in: 9e133072a2 user: thomas tags: enum_based_paper_size
11:47
test_document_loader.py: Further reduced boilerplate code. All tests now use helper functions _load_from_memory_database_expecting_success() or _load_from_memory_database_expecting_failure() to load data from an in-memory database. check-in: 0fa534983b user: thomas tags: enum_based_paper_size
11:19
test_document_loader: Decompose a complex test into 3 separate tests. Refactor common code into re-usable functions to reduce boilerplate code. One test is still WIP. check-in: 6d155b36ad user: thomas tags: enum_based_paper_size
11:16
test_document_loader: Reduce verbosity in test parameter generation. check-in: 256b338409 user: thomas tags: enum_based_paper_size
2024-04-19
13:23
Use the correct PageSizeId for "Custom" paper sizes, instead of using -1. check-in: ada8ebbc94 user: thomas tags: enum_based_paper_size
13:22
settings: Attempt at reading the default paper size from the default printer, instead of hard-coding it to A4. check-in: c42ccb2ecf user: thomas tags: enum_based_paper_size
13:21
units_and_sizes.py: Extract the test if a page size is acceptable into a re-usable function. check-in: 4ed219c92d user: thomas tags: enum_based_paper_size
12:47
units_and_sizes.py: Fix style warnings check-in: fcee8f673f user: thomas tags: enum_based_paper_size
10:15
Use localized paper size names when displaying them to the user in the PageConfigWidget check-in: d3e883b2cd user: thomas tags: enum_based_paper_size
10:08
Revert last change. The reverted code used potentially localized names as entries in the configuration file/save file, making both non-portable. check-in: 683811de76 user: thomas tags: enum_based_paper_size
2024-04-18
18:05
Add changelog entry. check-in: be31f5895f user: thomas tags: enum_based_paper_size
15:56
Use the paper size names obtained from QPageSize.name() as the string-representation of paper sizes. check-in: 3702a96bb0 user: thomas tags: enum_based_paper_size
15:44
Move page size and orientation enum dicts from settings.py to units_and_sizes.py. check-in: 7278a372ee user: thomas tags: enum_based_paper_size
10:22
PageConfigWidget: Implemented saving the page orientation to application settings, and highlighting the ui element when changed. check-in: dbf1d06107 user: thomas tags: enum_based_paper_size
10:17
PageConfigWidget: Populate the orientation combo box, and implement loading the current state from the application or document settings. check-in: 0d66526b29 user: thomas tags: enum_based_paper_size
2024-04-17
21:33
Settings: Add key paper-orientation to the documents setting. It stores if the document is in Portrait or Landscape mode. PageLayoutSettings: Add property page_orientation. Handle portrait/landscape handling in the page_height/page_width properties. check-in: a85dcd97a6 user: thomas tags: enum_based_paper_size
20:57
DEFAULT_SETTINGS: Lookup the A4 paper size from the PageSizeReverse dict, instead of hard-coding the string value. check-in: ef86234f90 user: thomas tags: enum_based_paper_size
20:51
settings: Refactor enum-reading code: Split logic for reading arbitrary enums inside PyQt classes from the post-processing code needed for the QPageSizeId enum. check-in: a6b5f1e0e1 user: thomas tags: enum_based_paper_size
19:56
settings: Remove paper sizes that cannot fit a single oversized card. check-in: d4f31b50d2 user: thomas tags: enum_based_paper_size
19:41
PageConfigWidget: Actually update the paper_size property in _on_paper_size_changed() check-in: 2af4de2732 user: thomas tags: enum_based_paper_size
19:30
PageLayoutSettings: Use the static QPageSize.size() in the page_height and page_width properties. check-in: a5cfaea8af user: thomas tags: enum_based_paper_size
19:29
PageLayoutSettings.to_page_size(): Add two logging lines. check-in: 4d083dbd11 user: thomas tags: enum_based_paper_size
19:22
Actually validate and update the paper size setting when changed by the combo box in the settings UI. check-in: 849dec4ec2 user: thomas tags: enum_based_paper_size
2024-04-11
14:41
PageLayoutSettings.to_page_layout(): Implement two code paths. One for predefined paper sizes and one for custom paper sizes. check-in: 925a1cf0e5 user: thomas tags: enum_based_paper_size
14:39
settings: The PageSize lookup dicts now use QPageSize.PageSizeId, instead of QPrinter.PageSize. Both are semantically the same, but the type system requires the first. check-in: a9273cb70d user: thomas tags: enum_based_paper_size
14:38
PageConfigWidget: Rename the custom page size widgets in the Ui class by adding the "custom_" prefix. check-in: 78b661a353 user: thomas tags: enum_based_paper_size
14:04
PageLayoutSettings now returns the paper dimensions for non-custom paper sizes by querying the Qt QPageSize class. check-in: 6331013c55 user: thomas tags: enum_based_paper_size
13:56
Update the verification logic when loading settings from a document to check the custom page dimension fields for valid values. check-in: 895a845bc5 user: thomas tags: enum_based_paper_size
13:54
PageLayoutSettings: Rename page_height to custom_page_height and page_width to custom_page_width. Add properties page_height and page_width with setters, delegating to the custom values. check-in: e18dae2cdd user: thomas tags: enum_based_paper_size
13:38
Add paper_size attribute to the PageLayoutSettings class. check-in: 9fa3c4bc86 user: thomas tags: enum_based_paper_size
13:28
settings.py now uses the TypeVar from units_and_sizes.py check-in: ee79d80a1d user: thomas tags: enum_based_paper_size
13:27
Add a generic type variable to units_and_sizes.py check-in: e84a0f8702 user: thomas tags: enum_based_paper_size
13:09
Settings: Add "paper-size" to the default document settings. Move the QPrinter.PageSize enum parsing into settings.py. Setting "paper-size" defaults to "A4". If not "Custom", it will take precedence over the paper-height-mm and paper-width-mm settings. Validation checks, if the value is one of the known constants. check-in: dd67b7958f user: thomas tags: enum_based_paper_size
09:49
Add a drop-down to the PageConfigWidget, listing all known, common paper sizes. The paper size table is filled by iterating over QPrinter. See [https://stackoverflow.com/questions/39676200] check-in: 040ac4fab7 user: thomas tags: enum_based_paper_size
09:01
Remove two debug logging lines in the PageConfigWidget. check-in: 19b91df610 user: thomas tags: trunk
2024-04-10
18:44
Improvements to the compilation scripts. Improve module docstrings, and type annotations. check-in: 924cf956c2 user: thomas tags: trunk
2024-04-09
21:24
Reorder imports in scripts/compile_resources.py and use from-imports for pathlib.Path check-in: 455fdc9f68 user: thomas tags: trunk
21:08
Add a landscape bug workaround to the PDF and printer settings. If enabled, PDF exports / direct prints of landscape documents are rotated by 90° internally. check-in: f00db60353 user: thomas tags: trunk
21:06
Add changelog entry. Closed-Leaf check-in: 5302908350 user: thomas tags: landscape_workaround
20:42
Reword the PDF landscape workaround tooltip in the settings window. check-in: 985a3a2b73 user: thomas tags: landscape_workaround
20:13
Implemented rotating direct printouts when landscape workaround in the printer settings is enabled. check-in: cb96d6c46f user: thomas tags: landscape_workaround
18:13
Add landscape workaround setting to the printer settings. Add checkbox for toggling this to the printer settings UI. check-in: 5ca45a7a17 user: thomas tags: landscape_workaround
18:05
Add a checkbox toggle to the PDF settings to change the landscape workaround for PDF exports. check-in: 9c515bfde3 user: thomas tags: landscape_workaround
17:44
Add boolean setting "landscape-compatibility-workaround" to the pdf-export settings section. If set to True and the document is in landscape format, the PDF export is rotated 90°. check-in: c89cdae748 user: thomas tags: landscape_workaround
17:36
Merge with trunk. check-in: ad8f614d2b user: thomas tags: landscape_workaround
17:25
Refactor settings: Move PDF-export related settings into their own config section named "pdf-export". check-in: cf5b51e82d user: thomas tags: trunk
16:50
hasgetter.py: Improve type hinting, according to [https://github.com/hamcrest/PyHamcrest/pull/209]. check-in: 13edcea509 user: thomas tags: trunk
2024-04-01
13:51
Use Path.with_name()/Path.with_stem() where appropriate. check-in: 7686c43c12 user: thomas tags: trunk
2024-03-31
19:53
Dependencies: Fix dependency specification on pint: Use pint < 0.22 on Python 3.8. Do not compare the platform, so that Windows builds using newer Python can also use newer pint versions. check-in: 45d635eec1 user: thomas tags: trunk
18:52
MANIFEST.in: Fix path to doc/ThirdPartyLicenses.md check-in: f6bf63b29d user: thomas tags: trunk
2024-03-29
19:57
WIP port to typed-config. Still incomplete! Leaf check-in: b85ca6947c user: thomas tags: typed_config
2024-03-28
17:41
Dependencies: Bump typed-config to >= 1.4, which adds boolean_cast to typedconfig.casts, implementing support for boolean configuration values. check-in: 1183f78180 user: thomas tags: typed_config
12:16
Rename settings objects: The legacy settings and default settings are now named with suffix _old/_OLD. The new typed config took the previous names. check-in: 1588f467fb user: thomas tags: typed_config
11:49
settings.migrate_settings() now returns a boolean. Returns True, if at least one migration script performed a transformative action, False otherwise. check-in: 98f8413c7a user: thomas tags: typed_config
11:22
Add a copy of the application settings using typed-config. check-in: 7bf03fd3f8 user: thomas tags: typed_config
09:08
Add dependency "typed-config" [https://pypi.org/project/typed-config/]. check-in: eee92673d5 user: thomas tags: typed_config
00:24
Update the build system and cleaned up the repository root a bit. check-in: c3d963bc18 user: thomas tags: trunk
00:22
tox.ini: Use the same one-liner also on Linux. With this, drop the dependency on external commands move (Windows) and mv (Linux). Closed-Leaf check-in: 846094c302 user: thomas tags: refactor_build_system
00:16
tox.ini: Windows move command seems to not work, so use a Python one-liner instead. check-in: b29dcbe5d7 user: thomas tags: refactor_build_system
2024-03-27
23:45
Fix moving the resources directory on Windows. check-in: 85553db8ba user: thomas tags: refactor_build_system
23:45
Move ThirdPartyLicenses.md into the doc directory. check-in: bba9f64356 user: thomas tags: refactor_build_system
23:29
tox.ini: Move the raw resources out of tree after compiling them. Move them back into place in teardown code. With this, the unit tests running under the "compiled" factor do not have access to the raw resource/UI files, mimicking the state inside a frozen application bundle. check-in: 0a0c68be84 user: thomas tags: refactor_build_system
22:57
The packaging scripts now only use the native Python 3 version to package, and not any additional versions that may be around. check-in: 882e6bf7d5 user: thomas tags: refactor_build_system