mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-11-05 09:33:25 -08:00
* [Translations] Load Qt's own translations and build ours with the binary Three separate bugs kept translations from working. installNewTranslator() loaded the application translation into qtTranslator. QTranslator discards its previous contents on every load, so that wiped the qt_<lang>.qm loaded one line earlier and installed an empty translator instead. Qt's own strings were never translated on any platform. Give each file its own translator. QLibraryInfo::path(TranslationsPath) was the only directory searched for Qt's translations. A relocated Qt can report a path that does not exist: the KDE Flatpak runtime reports /usr/translations while its files live in /usr/share/qt6/translations. Probe the usual install layouts and only hand back the ones that exist. The .qm files were attached to the default build target only, so building the executable on its own left it without any translations and the language selector empty. Attach them to the target as well. Move the shared lookup into TranslationLoader so client and Oracle cannot drift again, and have it report a missing translation at debug level. An unset language is the default for English, which has no file to begin with, and warning about it only added noise to every fresh debug log. Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de> * [Tests] Define main() in translation_loader_test Without a GTest installation the fallback in tests/CMakeLists.txt links only gtest, not gtest_main, so the test has to bring its own main(). Every other test already does; only this one relied on the distribution package and failed to link on CI. Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de> * [Tests] Put the translation loader fixture next to the test executable A multi-config generator (MSBuild, Xcode) writes the executable to a per-config subdirectory while the .qm stays in the current binary directory, so applicationDirPath() never saw the fixture and ABuildTreeFindsTheTranslationsNextToTheExecutable failed on Windows. * [Translations] Depend on Qt's lrelease target and skip the loader test without lrelease Attaching the .qm custom commands to a second custom target races with Qt's own <Project>_lrelease target on MSBuild/Makefiles and is rejected by Xcode, so depend on Qt's target instead. Only build the translation loader test when Qt6::lrelease is available. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de> Co-authored-by: ZeldaZach <zahalpern+github@gmail.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
815 lines
41 KiB
CMake
815 lines
41 KiB
CMake
# CMakeLists for cockatrice directory
|
|
#
|
|
# provides the cockatrice binary
|
|
|
|
project(Cockatrice VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}")
|
|
|
|
set(cockatrice_SOURCES
|
|
${VERSION_STRING_CPP}
|
|
# sort by alphabetical order, so that there is no debate about where to add new sources to the list
|
|
src/client/network/connection_controller/remote_connection_controller.cpp
|
|
src/client/network/update/client/update_downloader.cpp
|
|
src/client/network/interfaces/deck_stats_interface.cpp
|
|
src/client/network/interfaces/tapped_out_interface.cpp
|
|
src/client/network/parsers/deck_link_to_api_transformer.cpp
|
|
src/client/network/update/client/client_update_checker.cpp
|
|
src/client/network/update/client/release_channel.cpp
|
|
src/client/network/update/card_spoiler/spoiler_background_updater.cpp
|
|
src/client/latency_graph_widget.cpp
|
|
src/client/latency_status_widget.cpp
|
|
src/client/lag_monitor.cpp
|
|
src/client/sound_engine.cpp
|
|
src/client/settings/cache_settings.cpp
|
|
src/client/settings/card_counter_settings.cpp
|
|
src/client/settings/shortcut_treeview.cpp
|
|
src/client/settings/shortcuts_settings.cpp
|
|
src/interface/deck_loader/card_node_function.cpp
|
|
src/interface/deck_loader/deck_file_format.cpp
|
|
src/interface/deck_loader/deck_loader.cpp
|
|
src/interface/deck_loader/loaded_deck.cpp
|
|
src/interface/widgets/dialogs/dlg_connect.cpp
|
|
src/interface/widgets/dialogs/dlg_convert_deck_to_cod_format.cpp
|
|
src/interface/widgets/dialogs/dlg_create_game.cpp
|
|
src/interface/widgets/dialogs/dlg_default_tags_editor.cpp
|
|
src/interface/widgets/dialogs/dlg_edit_avatar.cpp
|
|
src/interface/widgets/dialogs/dlg_edit_password.cpp
|
|
src/interface/widgets/dialogs/dlg_edit_tokens.cpp
|
|
src/interface/widgets/dialogs/dlg_edit_user.cpp
|
|
src/interface/widgets/dialogs/dlg_filter_games.cpp
|
|
src/interface/widgets/dialogs/dlg_forgot_password_challenge.cpp
|
|
src/interface/widgets/dialogs/dlg_forgot_password_request.cpp
|
|
src/interface/widgets/dialogs/dlg_forgot_password_reset.cpp
|
|
src/interface/widgets/dialogs/dlg_invite_to_game.cpp
|
|
src/interface/widgets/dialogs/dlg_load_deck.cpp
|
|
src/interface/widgets/dialogs/dlg_load_deck_from_clipboard.cpp
|
|
src/interface/widgets/dialogs/dlg_load_deck_from_website.cpp
|
|
src/interface/widgets/dialogs/dlg_load_remote_deck.cpp
|
|
src/interface/widgets/dialogs/dlg_local_game_options.cpp
|
|
src/interface/widgets/dialogs/dlg_login_prompt.cpp
|
|
src/interface/widgets/dialogs/dlg_manage_sets.cpp
|
|
src/interface/widgets/dialogs/dlg_my_reports.cpp
|
|
src/interface/widgets/dialogs/dlg_register.cpp
|
|
src/interface/widgets/dialogs/dlg_report_user.cpp
|
|
src/interface/widgets/dialogs/dlg_select_set_for_cards.cpp
|
|
src/interface/widgets/dialogs/dlg_share_deck.cpp
|
|
src/interface/widgets/dialogs/dlg_shared_decks_preview.cpp
|
|
src/interface/widgets/dialogs/dlg_settings.cpp
|
|
src/interface/widgets/dialogs/dlg_startup_card_check.cpp
|
|
src/interface/widgets/dialogs/dlg_tip_of_the_day.cpp
|
|
src/interface/widgets/dialogs/dlg_update.cpp
|
|
src/interface/widgets/dialogs/dlg_view_log.cpp
|
|
src/interface/widgets/dialogs/override_printing_warning.cpp
|
|
src/interface/widgets/dialogs/tip_of_the_day.cpp
|
|
src/interface/widgets/deck_share/deck_share_utils.cpp
|
|
src/interface/widgets/deck_share/shared_deck_preview_widget.cpp
|
|
src/interface/widgets/deck_share/share_bar_widget.cpp
|
|
src/filters/deck_filter_string.cpp
|
|
src/filters/filter_builder.cpp
|
|
src/filters/filter_tree_model.cpp
|
|
src/filters/syntax_help.cpp
|
|
src/game/abstract_game.cpp
|
|
src/game/arrow_registry.cpp
|
|
src/game_graphics/board/abstract_card_drag_item.cpp
|
|
src/game_graphics/board/abstract_card_item.cpp
|
|
src/game_graphics/board/abstract_counter.cpp
|
|
src/game/board/arrow_data.cpp
|
|
src/game_graphics/board/arrow_item.cpp
|
|
src/game_graphics/board/arrow_target.cpp
|
|
src/game_graphics/board/card_drag_item.cpp
|
|
src/game_graphics/board/card_item.cpp
|
|
src/game/board/card_list.cpp
|
|
src/game/board/card_state.cpp
|
|
src/game_graphics/board/counter_general.cpp
|
|
src/game/board/counter_state.cpp
|
|
src/game_graphics/board/translate_counter_name.cpp
|
|
src/game_graphics/deckview/deck_view.cpp
|
|
src/game_graphics/deckview/deck_view_container.cpp
|
|
src/game_graphics/deckview/tabbed_deck_view_container.cpp
|
|
src/game_graphics/dialogs/dlg_create_token.cpp
|
|
src/game_graphics/dialogs/dlg_move_top_cards_until.cpp
|
|
src/game_graphics/dialogs/dlg_roll_dice.cpp
|
|
src/game/game.cpp
|
|
src/game/game_event_handler.cpp
|
|
src/game/game_meta_info.cpp
|
|
src/game_graphics/game_scene.cpp
|
|
src/game/game_state.cpp
|
|
src/game_graphics/game_view.cpp
|
|
src/game_graphics/hand_counter.cpp
|
|
src/game_graphics/log/message_log_widget.cpp
|
|
src/game/phase.cpp
|
|
src/game_graphics/phases_toolbar.cpp
|
|
src/game_graphics/player/menu/card_menu.cpp
|
|
src/game_graphics/player/menu/custom_zone_menu.cpp
|
|
src/game_graphics/player/menu/grave_menu.cpp
|
|
src/game_graphics/player/menu/hand_menu.cpp
|
|
src/game_graphics/player/menu/library_menu.cpp
|
|
src/game_graphics/player/menu/move_menu.cpp
|
|
src/game_graphics/player/menu/player_menu.cpp
|
|
src/game_graphics/player/menu/pt_menu.cpp
|
|
src/game_graphics/player/menu/rfg_menu.cpp
|
|
src/game_graphics/player/menu/say_menu.cpp
|
|
src/game_graphics/player/menu/sideboard_menu.cpp
|
|
src/game_graphics/player/menu/tally_menu.cpp
|
|
src/game_graphics/player/menu/utility_menu.cpp
|
|
src/game_graphics/tally/stats_tally.cpp
|
|
src/game_graphics/tally/subtype_tally.cpp
|
|
src/game_graphics/tally/tally.cpp
|
|
src/game/player/player_actions.cpp
|
|
src/game_graphics/player/player_area.cpp
|
|
src/game_graphics/player/player_dialogs.cpp
|
|
src/game/player/player_event_handler.cpp
|
|
src/game_graphics/player/player_graphics_item.cpp
|
|
src/game/player/player_info.cpp
|
|
src/game_graphics/player/player_list_widget.cpp
|
|
src/game/player/player_logic.cpp
|
|
src/game/player/player_manager.cpp
|
|
src/game_graphics/player/player_target.cpp
|
|
src/game/replay.cpp
|
|
src/game/zones/card_zone_logic.cpp
|
|
src/game/zones/hand_zone_logic.cpp
|
|
src/game/zones/pile_zone_logic.cpp
|
|
src/game/zones/stack_zone_logic.cpp
|
|
src/game/zones/table_zone_logic.cpp
|
|
src/game/zones/view_zone_logic.cpp
|
|
src/game_graphics/zones/card_zone.cpp
|
|
src/game_graphics/zones/hand_zone.cpp
|
|
src/game_graphics/zones/pile_zone.cpp
|
|
src/game_graphics/zones/select_zone.cpp
|
|
src/game_graphics/zones/stack_zone.cpp
|
|
src/game_graphics/zones/table_zone.cpp
|
|
src/game_graphics/zones/view_zone.cpp
|
|
src/game_graphics/zones/view_zone_widget.cpp
|
|
src/game_graphics/board/abstract_graphics_item.cpp
|
|
src/interface/card_picture_loader/card_picture_loader.cpp
|
|
src/interface/card_picture_loader/card_picture_loader_local.cpp
|
|
src/interface/card_picture_loader/card_picture_loader_request_status_display_widget.cpp
|
|
src/interface/card_picture_loader/card_picture_loader_status_bar.cpp
|
|
src/interface/card_picture_loader/card_picture_loader_worker.cpp
|
|
src/interface/card_picture_loader/card_picture_loader_worker_work.cpp
|
|
src/interface/card_picture_loader/card_picture_to_load.cpp
|
|
src/interface/intents/intent.cpp
|
|
src/interface/intents/intent.h
|
|
src/interface/intents/intent_open_local_deck.cpp
|
|
src/interface/intents/intent_open_local_deck.h
|
|
src/interface/intents/intent_wait_for_database_load.cpp
|
|
src/interface/intents/intent_wait_for_database_load.h
|
|
src/interface/layouts/flow_layout.cpp
|
|
src/interface/layouts/overlap_layout.cpp
|
|
src/interface/widgets/utility/card_completer_delegate.cpp
|
|
src/interface/widgets/utility/card_completer_styler.cpp
|
|
src/interface/widgets/utility/completer_utils.cpp
|
|
src/interface/widgets/utility/line_edit_completer.cpp
|
|
src/interface/widgets/utility/reversed_completer_model.cpp
|
|
src/interface/pixel_map_generator.cpp
|
|
src/interface/theme_config.cpp
|
|
src/interface/theme_manager.cpp
|
|
src/interface/palette_editor/color_button.cpp
|
|
src/interface/palette_editor/palette_generator.cpp
|
|
src/interface/palette_editor/quick_setup_panel.cpp
|
|
src/interface/palette_editor/palette_grid_widget.cpp
|
|
src/interface/palette_editor/palette_editor_dialog.cpp
|
|
src/interface/widgets/cards/additional_info/color_identity_widget.cpp
|
|
src/interface/widgets/cards/additional_info/deck_color_identity.cpp
|
|
src/interface/widgets/cards/additional_info/mana_cost_widget.cpp
|
|
src/interface/widgets/cards/additional_info/mana_symbol_widget.cpp
|
|
src/interface/widgets/cards/art_crop_attribution.cpp
|
|
src/interface/widgets/cards/card_art_utils.cpp
|
|
src/interface/widgets/cards/card_group_display_widgets/card_group_display_widget.cpp
|
|
src/interface/widgets/cards/card_group_display_widgets/flat_card_group_display_widget.cpp
|
|
src/interface/widgets/cards/card_group_display_widgets/overlapped_card_group_display_widget.cpp
|
|
src/interface/widgets/cards/card_info_display_widget.cpp
|
|
src/interface/widgets/cards/card_info_frame_widget.cpp
|
|
src/interface/widgets/cards/card_info_picture_art_crop_widget.cpp
|
|
src/interface/widgets/cards/card_info_picture_enlarged_widget.cpp
|
|
src/interface/widgets/cards/card_info_picture_widget.cpp
|
|
src/interface/widgets/cards/card_info_picture_with_text_overlay_widget.cpp
|
|
src/interface/widgets/cards/card_info_text_widget.cpp
|
|
src/interface/widgets/cards/card_size_widget.cpp
|
|
src/interface/widgets/cards/deck_card_zone_display_widget.cpp
|
|
src/interface/widgets/cards/deck_preview_card_picture_widget.cpp
|
|
src/interface/widgets/deck_analytics/abstract_analytics_panel_widget.cpp
|
|
src/interface/widgets/deck_analytics/add_analytics_panel_dialog.cpp
|
|
src/interface/widgets/deck_analytics/analytics_panel_widget_factory.cpp
|
|
src/interface/widgets/deck_analytics/analytics_panel_widget_registrar.cpp
|
|
src/interface/widgets/deck_analytics/deck_analytics_widget.cpp
|
|
src/interface/widgets/deck_analytics/deck_list_statistics_analyzer.cpp
|
|
src/interface/widgets/deck_analytics/resizable_panel.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/draw_probability/draw_probability_config.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/draw_probability/draw_probability_config_dialog.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/draw_probability/draw_probability_widget.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/mana_base/mana_base_config.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/mana_base/mana_base_config_dialog.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/mana_base/mana_base_widget.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_config.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_config_dialog.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_widget.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/mana_devotion/mana_devotion_config.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/mana_devotion/mana_devotion_config_dialog.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/mana_devotion/mana_devotion_widget.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_config.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_config_dialog.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_widget.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_single_display_widget.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_total_widget.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_category_widget.cpp
|
|
src/interface/widgets/deck_editor/card_database_view.cpp
|
|
src/interface/widgets/deck_editor/deck_list_history_manager_widget.cpp
|
|
src/interface/widgets/deck_editor/deck_editor_card_database_dock_widget.cpp
|
|
src/interface/widgets/deck_editor/deck_editor_card_info_dock_widget.cpp
|
|
src/interface/widgets/deck_editor/deck_editor_database_display_widget.cpp
|
|
src/interface/widgets/deck_editor/deck_editor_deck_dock_widget.cpp
|
|
src/interface/widgets/deck_editor/deck_editor_filter_dock_widget.cpp
|
|
src/interface/widgets/deck_editor/deck_editor_printing_selector_dock_widget.cpp
|
|
src/interface/widgets/deck_editor/deck_list_style_proxy.cpp
|
|
src/interface/widgets/deck_editor/deck_state_manager.cpp
|
|
src/interface/widgets/deck_editor/deck_zone_dialog.cpp
|
|
src/interface/widgets/deck_editor/printing_disabled_info_widget.cpp
|
|
src/interface/widgets/general/background_sources.cpp
|
|
src/interface/widgets/general/display/background_plate_widget.cpp
|
|
src/interface/widgets/general/display/banner_widget.cpp
|
|
src/interface/widgets/general/display/dynamic_font_size_label.cpp
|
|
src/interface/widgets/general/display/dynamic_font_size_push_button.cpp
|
|
src/interface/widgets/general/display/labeled_input.cpp
|
|
src/interface/widgets/general/display/shadow_background_label.cpp
|
|
src/interface/widgets/general/display/charts/bars/bar_widget.cpp
|
|
src/interface/widgets/general/display/charts/bars/color_bar.cpp
|
|
src/interface/widgets/general/display/charts/bars/percent_bar_widget.cpp
|
|
src/interface/widgets/general/display/charts/bars/bar_chart_widget.cpp
|
|
src/interface/widgets/general/display/charts/bars/bar_chart_background_widget.cpp
|
|
src/interface/widgets/general/display/charts/bars/segmented_bar_widget.cpp
|
|
src/interface/widgets/general/display/charts/pies/color_pie.cpp
|
|
src/interface/widgets/general/home_styled_button.cpp
|
|
src/interface/widgets/general/home_tab_button_color.h
|
|
src/interface/widgets/general/home_widget.cpp
|
|
src/interface/widgets/general/layout_containers/flow_widget.cpp
|
|
src/interface/widgets/general/layout_containers/overlap_control_widget.cpp
|
|
src/interface/widgets/general/layout_containers/overlap_widget.cpp
|
|
src/interface/widgets/menus/deck_editor_menu.cpp
|
|
src/interface/widgets/printing_selector/all_zones_card_amount_widget.cpp
|
|
src/interface/widgets/printing_selector/card_amount_widget.cpp
|
|
src/interface/widgets/printing_selector/printing_selector.cpp
|
|
src/interface/widgets/printing_selector/printing_selector_card_display_widget.cpp
|
|
src/interface/widgets/printing_selector/printing_selector_card_overlay_widget.cpp
|
|
src/interface/widgets/printing_selector/printing_selector_placeholder_widget.cpp
|
|
src/interface/widgets/printing_selector/printing_selector_card_search_widget.cpp
|
|
src/interface/widgets/printing_selector/printing_selector_card_selection_widget.cpp
|
|
src/interface/widgets/printing_selector/printing_selector_card_sorting_widget.cpp
|
|
src/interface/widgets/printing_selector/set_name_and_collectors_number_display_widget.cpp
|
|
src/interface/widgets/playmat/playmat_collection_dialog.cpp
|
|
src/interface/widgets/playmat/playmat_collection_dialog.h
|
|
src/interface/widgets/playmat/playmat_preview_widget.cpp
|
|
src/interface/widgets/playmat/playmat_settings_dialog.cpp
|
|
src/interface/widgets/quick_settings/settings_button_widget.cpp
|
|
src/interface/widgets/quick_settings/settings_popup_widget.cpp
|
|
src/interface/widgets/replay/replay_manager.cpp
|
|
src/interface/widgets/replay/replay_quick_settings_widget.cpp
|
|
src/interface/widgets/replay/replay_timeline_widget.cpp
|
|
src/interface/widgets/replay/replay_widget.cpp
|
|
src/interface/widgets/server/chat_view/chat_view.cpp
|
|
src/interface/widgets/server/game_filter_configs.cpp
|
|
src/interface/widgets/server/game_link.cpp
|
|
src/interface/widgets/server/game_selector.cpp
|
|
src/interface/widgets/server/game_selector_quick_filter_toolbar.cpp
|
|
src/interface/widgets/server/games_model.cpp
|
|
src/interface/widgets/server/handle_public_servers.cpp
|
|
src/interface/widgets/server/remote/remote_decklist_tree_widget.cpp
|
|
src/interface/widgets/server/remote/remote_replay_list_tree_widget.cpp
|
|
src/interface/widgets/server/user/user_avatar_provider.cpp
|
|
src/interface/widgets/server/user/user_card_art_provider.cpp
|
|
src/interface/widgets/server/user/user_card_settings_dialog.cpp
|
|
src/interface/widgets/server/user/user_context_menu.cpp
|
|
src/interface/widgets/server/user/user_info_box.cpp
|
|
src/interface/widgets/server/user/user_info_connection.cpp
|
|
src/interface/widgets/server/user/user_list_dialog.cpp
|
|
src/interface/widgets/server/user/user_list_manager.cpp
|
|
src/interface/widgets/server/user/user_list_painter.cpp
|
|
src/interface/widgets/server/user/user_list_panel_widget.cpp
|
|
src/interface/widgets/server/user/user_list_widget.cpp
|
|
src/interface/widgets/settings_page/abstract_settings_page.cpp
|
|
src/interface/widgets/settings_page/appearance_settings_page.cpp
|
|
src/interface/widgets/settings_page/deck_editor_settings_page.cpp
|
|
src/interface/widgets/settings_page/general_settings_page.cpp
|
|
src/interface/widgets/settings_page/messages_settings_page.cpp
|
|
src/interface/widgets/settings_page/settings_search_delegate.cpp
|
|
src/interface/widgets/settings_page/settings_search_model.cpp
|
|
src/interface/widgets/settings_page/shortcut_settings_page.cpp
|
|
src/interface/widgets/settings_page/sound_settings_page.cpp
|
|
src/interface/widgets/settings_page/storage_settings_page.cpp
|
|
src/interface/widgets/settings_page/user_interface_settings_page.cpp
|
|
src/interface/widgets/utility/custom_line_edit.cpp
|
|
src/interface/widgets/utility/get_text_with_max.cpp
|
|
src/interface/widgets/utility/report_utils.cpp
|
|
src/interface/widgets/utility/report_utils.h
|
|
src/interface/widgets/utility/sequence_edit.cpp
|
|
src/interface/widgets/utility/visibility_change_listener.cpp
|
|
src/interface/widgets/utility/visibility_change_listener.h
|
|
src/interface/widgets/visual_database_display/visual_database_display_color_filter_widget.cpp
|
|
src/interface/widgets/visual_database_display/visual_database_display_filter_save_load_widget.cpp
|
|
src/interface/widgets/visual_database_display/visual_database_display_filter_toolbar_widget.cpp
|
|
src/interface/widgets/visual_database_display/visual_database_display_format_legality_filter_widget.cpp
|
|
src/interface/widgets/visual_database_display/visual_database_display_main_type_filter_widget.cpp
|
|
src/interface/widgets/visual_database_display/visual_database_display_name_filter_widget.cpp
|
|
src/interface/widgets/visual_database_display/visual_database_display_set_filter_widget.cpp
|
|
src/interface/widgets/visual_database_display/visual_database_display_sub_type_filter_widget.cpp
|
|
src/interface/widgets/visual_database_display/visual_database_display_widget.cpp
|
|
src/interface/widgets/visual_database_display/visual_database_filter_display_widget.cpp
|
|
src/interface/widgets/visual_deck_editor/visual_deck_display_options_widget.cpp
|
|
src/interface/widgets/visual_deck_editor/visual_deck_editor_placeholder_widget.cpp
|
|
src/interface/widgets/visual_deck_editor/visual_deck_editor_sample_hand_widget.cpp
|
|
src/interface/widgets/visual_deck_editor/visual_deck_editor_widget.cpp
|
|
src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_color_identity_filter_widget.cpp
|
|
src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.cpp
|
|
src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_addition_widget.cpp
|
|
src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_dialog.cpp
|
|
src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_display_widget.cpp
|
|
src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_item_widget.cpp
|
|
src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_widget.cpp
|
|
src/interface/widgets/visual_deck_storage/deck_preview/public_deck_preview_widget.cpp
|
|
src/interface/widgets/visual_deck_storage/remote_public_decks_model.cpp
|
|
src/interface/widgets/visual_deck_storage/visual_deck_storage_folder_display_widget.cpp
|
|
src/interface/widgets/visual_deck_storage/visual_deck_storage_model.cpp
|
|
src/interface/widgets/visual_deck_storage/visual_deck_storage_quick_settings_widget.cpp
|
|
src/interface/widgets/visual_deck_storage/visual_deck_storage_search_widget.cpp
|
|
src/interface/widgets/visual_deck_storage/visual_deck_storage_sort_filter_proxy_model.cpp
|
|
src/interface/widgets/visual_deck_storage/visual_deck_storage_sort_widget.cpp
|
|
src/interface/widgets/visual_deck_storage/visual_deck_storage_tag_filter_widget.cpp
|
|
src/interface/widgets/visual_deck_storage/visual_deck_storage_widget.cpp
|
|
src/interface/window_main.cpp
|
|
src/main.cpp
|
|
src/single_instance_manager.cpp
|
|
src/interface/widgets/tabs/abstract_tab_deck_editor.cpp
|
|
src/interface/widgets/tabs/api/archidekt/tab_archidekt.cpp
|
|
src/interface/widgets/tabs/api/archidekt/api_response/archidekt_deck_listing_api_response.cpp
|
|
src/interface/widgets/tabs/api/archidekt/api_response/archidekt_formats.h
|
|
src/interface/widgets/tabs/api/archidekt/api_response/card/archidekt_api_response_card.cpp
|
|
src/interface/widgets/tabs/api/archidekt/api_response/card/archidekt_api_response_card_entry.cpp
|
|
src/interface/widgets/tabs/api/archidekt/api_response/card/archidekt_api_response_edition.cpp
|
|
src/interface/widgets/tabs/api/archidekt/api_response/deck/archidekt_api_response_deck.cpp
|
|
src/interface/widgets/tabs/api/archidekt/api_response/deck/archidekt_api_response_deck_category.cpp
|
|
src/interface/widgets/tabs/api/archidekt/api_response/deck_listings/archidekt_api_response_deck_listing_container.cpp
|
|
src/interface/widgets/tabs/api/archidekt/api_response/deck_listings/archidekt_api_response_deck_owner.cpp
|
|
src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_display_widget.cpp
|
|
src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_entry_display_widget.cpp
|
|
src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_listings_display_widget.cpp
|
|
src/interface/widgets/tabs/api/archidekt/display/archidekt_deck_preview_image_display_widget.cpp
|
|
src/interface/widgets/tabs/api/commander_spellbook/api_response/card_in_deck_request.cpp
|
|
src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_deck_request.cpp
|
|
src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_card_result.cpp
|
|
src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_variant_result.cpp
|
|
src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_estimate_bracket_result.cpp
|
|
src/interface/widgets/tabs/api/commander_spellbook/commander_spellbook_bracket_explainer.cpp
|
|
src/interface/widgets/tabs/api/commander_spellbook/commander_spellbook_api_accessor.cpp
|
|
src/interface/widgets/tabs/api/edhrec/api_response/archidekt_links/edhrec_api_response_archidekt_links.cpp
|
|
src/interface/widgets/tabs/api/edhrec/api_response/average_deck/edhrec_average_deck_api_response.cpp
|
|
src/interface/widgets/tabs/api/edhrec/api_response/average_deck/edhrec_deck_api_response.cpp
|
|
src/interface/widgets/tabs/api/edhrec/api_response/card_prices/edhrec_api_response_card_prices.cpp
|
|
src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_container.cpp
|
|
src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_details.cpp
|
|
src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_list.cpp
|
|
src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_commander_api_response_commander_details.cpp
|
|
src/interface/widgets/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response.cpp
|
|
src/interface/widgets/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_average_deck_statistics.cpp
|
|
src/interface/widgets/tabs/api/edhrec/api_response/top_cards/edhrec_top_cards_api_response.cpp
|
|
src/interface/widgets/tabs/api/edhrec/api_response/top_commanders/edhrec_top_commanders_api_response.cpp
|
|
src/interface/widgets/tabs/api/edhrec/api_response/top_tags/edhrec_top_tags_api_response.cpp
|
|
src/interface/widgets/tabs/api/edhrec/display/card_prices/edhrec_api_response_card_prices_display_widget.cpp
|
|
src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_details_display_widget.cpp
|
|
src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_inclusion_display_widget.cpp
|
|
src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_list_display_widget.cpp
|
|
src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_synergy_display_widget.cpp
|
|
src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_api_response_commander_details_display_widget.cpp
|
|
src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_display_widget.cpp
|
|
src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_navigation_widget.cpp
|
|
src/interface/widgets/tabs/api/edhrec/display/top_cards/edhrec_top_cards_api_response_display_widget.cpp
|
|
src/interface/widgets/tabs/api/edhrec/display/top_commander/edhrec_top_commanders_api_response_display_widget.cpp
|
|
src/interface/widgets/tabs/api/edhrec/display/top_tags/edhrec_top_tags_api_response_display_widget.cpp
|
|
src/interface/widgets/tabs/api/edhrec/tab_edhrec.cpp
|
|
src/interface/widgets/tabs/api/edhrec/tab_edhrec_main.cpp
|
|
src/interface/widgets/tabs/tab.cpp
|
|
src/interface/widgets/tabs/tab_account.cpp
|
|
src/interface/widgets/tabs/tab_admin.cpp
|
|
src/interface/widgets/tabs/tab_card_art_rules.cpp
|
|
src/interface/widgets/tabs/tab_deck_editor.cpp
|
|
src/interface/widgets/tabs/tab_deck_storage.cpp
|
|
src/interface/widgets/tabs/tab_developer.cpp
|
|
src/interface/widgets/tabs/tab_game.cpp
|
|
src/interface/widgets/tabs/tab_home.cpp
|
|
src/interface/widgets/tabs/tab_logs.cpp
|
|
src/interface/widgets/tabs/tab_message.cpp
|
|
src/interface/widgets/tabs/tab_moderation.cpp
|
|
src/interface/widgets/tabs/tab_public_decks.cpp
|
|
src/interface/widgets/tabs/tab_report.cpp
|
|
src/interface/widgets/tabs/tab_replays.cpp
|
|
src/interface/widgets/tabs/tab_room.cpp
|
|
src/interface/widgets/tabs/tab_server.cpp
|
|
src/interface/widgets/tabs/tab_supervisor.cpp
|
|
src/interface/widgets/tabs/tab_visual_database_display.cpp
|
|
src/interface/widgets/tabs/visual_deck_editor/tab_deck_editor_visual.cpp
|
|
src/interface/widgets/tabs/visual_deck_editor/tab_deck_editor_visual_tab_widget.cpp
|
|
src/interface/widgets/tabs/visual_deck_storage/tab_deck_storage_visual.cpp
|
|
src/interface/key_signals.cpp
|
|
src/interface/logger.cpp
|
|
src/interface/widgets/tabs/api/commander_spellbook/commander_bracket_service.cpp
|
|
src/interface/widgets/tabs/api/commander_spellbook/commander_bracket_widget.cpp
|
|
src/interface/widgets/tabs/api/commander_spellbook/handle_commander_brackets.cpp
|
|
src/interface/widgets/onboarding/banner_shader_config.h
|
|
src/interface/widgets/onboarding/brand_colors.h
|
|
src/interface/widgets/onboarding/first_run_wizard.cpp
|
|
src/interface/widgets/onboarding/first_run_wizard.h
|
|
src/interface/widgets/onboarding/first_run_wizard_page.cpp
|
|
src/interface/widgets/onboarding/first_run_wizard_page.h
|
|
src/interface/widgets/onboarding/pages/account_setup_page.cpp
|
|
src/interface/widgets/onboarding/pages/account_setup_page.h
|
|
src/interface/widgets/onboarding/pages/card_database_setup_page.cpp
|
|
src/interface/widgets/onboarding/pages/card_database_setup_page.h
|
|
src/interface/widgets/onboarding/pages/finish_page.cpp
|
|
src/interface/widgets/onboarding/pages/finish_page.h
|
|
src/interface/widgets/onboarding/pages/preferences_setup_page.cpp
|
|
src/interface/widgets/onboarding/pages/preferences_setup_page.h
|
|
src/interface/widgets/onboarding/pages/theme_setup_page.cpp
|
|
src/interface/widgets/onboarding/pages/theme_setup_page.h
|
|
src/interface/widgets/onboarding/pages/welcome_page.cpp
|
|
src/interface/widgets/onboarding/pages/welcome_page.h
|
|
src/interface/widgets/onboarding/shader_banner_widget.cpp
|
|
src/interface/widgets/onboarding/shader_banner_widget.h
|
|
src/interface/widgets/onboarding/step_indicator_widget.cpp
|
|
src/interface/widgets/onboarding/step_indicator_widget.h
|
|
src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_bracket_navigation_widget.cpp
|
|
src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_bracket_navigation_widget.h
|
|
src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_budget_navigation_widget.cpp
|
|
src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_budget_navigation_widget.h
|
|
src/interface/widgets/utility/compact_push_button.cpp
|
|
src/interface/widgets/utility/compact_push_button.h
|
|
src/single_instance_manager.h
|
|
src/client/url_scheme_event_filter.h
|
|
src/interface/intents/intent_connect_to_server.cpp
|
|
src/interface/intents/intent_connect_to_server.h
|
|
src/interface/intents/intent_disconnect_from_server.cpp
|
|
src/interface/intents/intent_disconnect_from_server.h
|
|
src/interface/intents/intent_join_server_game.cpp
|
|
src/interface/intents/intent_join_server_game.h
|
|
src/interface/intents/intent_join_server_room.cpp
|
|
src/interface/intents/intent_join_server_room.h
|
|
src/interface/intents/intent_login.cpp
|
|
src/interface/intents/intent_login.h
|
|
src/interface/intents/intent_open_server_room_by_name.cpp
|
|
src/interface/intents/intent_open_server_room_by_name.h
|
|
src/interface/intents/intent_open_shared_deck.cpp
|
|
src/interface/intents/intent_open_shared_deck.h
|
|
src/interface/intents/url_parser.cpp
|
|
src/interface/intents/url_parser.h
|
|
src/interface/widgets/server/user/user_info_popup.cpp
|
|
src/interface/widgets/server/user/user_info_popup.h
|
|
)
|
|
|
|
add_subdirectory(sounds)
|
|
add_subdirectory(themes)
|
|
configure_file(
|
|
${CMAKE_SOURCE_DIR}/cockatrice/resources/config/qtlogging.ini ${CMAKE_BINARY_DIR}/cockatrice/qtlogging.ini COPYONLY
|
|
)
|
|
|
|
set(cockatrice_RESOURCES cockatrice.qrc)
|
|
|
|
if(UPDATE_TRANSLATIONS)
|
|
# Cockatrice main sources
|
|
file(GLOB_RECURSE translate_cockatrice_SRCS ${CMAKE_SOURCE_DIR}/cockatrice/src/*.cpp
|
|
${CMAKE_SOURCE_DIR}/cockatrice/src/*.h
|
|
)
|
|
|
|
# All libcockatrice_* libraries (recursively)
|
|
file(GLOB_RECURSE translate_lib_SRCS ${CMAKE_SOURCE_DIR}/libcockatrice_*/**/*.cpp
|
|
${CMAKE_SOURCE_DIR}/libcockatrice_*/**/*.h
|
|
)
|
|
|
|
# Combine all sources for translation
|
|
set(translate_SRCS ${translate_cockatrice_SRCS} ${translate_lib_SRCS})
|
|
|
|
set(cockatrice_TS "${CMAKE_CURRENT_SOURCE_DIR}/cockatrice_en@source.ts")
|
|
else()
|
|
file(GLOB cockatrice_TS "${CMAKE_CURRENT_SOURCE_DIR}/translations/*.ts")
|
|
endif()
|
|
|
|
if(WIN32)
|
|
set(cockatrice_SOURCES ${cockatrice_SOURCES} cockatrice.rc)
|
|
endif(WIN32)
|
|
|
|
if(APPLE)
|
|
set(MACOSX_BUNDLE_ICON_FILE appicon.icns)
|
|
set_source_files_properties(
|
|
${CMAKE_CURRENT_SOURCE_DIR}/resources/appicon.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources
|
|
)
|
|
set(cockatrice_SOURCES ${cockatrice_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/resources/appicon.icns)
|
|
endif(APPLE)
|
|
|
|
qt6_add_resources(cockatrice_RESOURCES_RCC ${cockatrice_RESOURCES})
|
|
|
|
# Declare path variables
|
|
set(ICONDIR
|
|
share/icons
|
|
CACHE STRING "icon dir"
|
|
)
|
|
set(DESKTOPDIR
|
|
share/applications
|
|
CACHE STRING "desktop file destination"
|
|
)
|
|
|
|
set(MIMEDIR
|
|
share/mime/packages
|
|
CACHE STRING "mime file destination"
|
|
)
|
|
|
|
set(COCKATRICE_MAC_QM_INSTALL_DIR "cockatrice.app/Contents/Resources/translations")
|
|
set(COCKATRICE_UNIX_QM_INSTALL_DIR "share/cockatrice/translations")
|
|
set(COCKATRICE_WIN32_QM_INSTALL_DIR "translations")
|
|
|
|
qt6_add_executable(
|
|
cockatrice
|
|
WIN32
|
|
MACOSX_BUNDLE
|
|
${cockatrice_SOURCES}
|
|
${cockatrice_RESOURCES_RCC}
|
|
${cockatrice_MOC_SRCS}
|
|
MANUAL_FINALIZATION
|
|
)
|
|
|
|
target_precompile_headers(cockatrice PRIVATE "${CMAKE_SOURCE_DIR}/cmake/pch/qtwidgets_pch.h")
|
|
|
|
qt6_add_shaders(
|
|
cockatrice
|
|
"onboarding_shaders"
|
|
PREFIX
|
|
"/onboarding/shaders"
|
|
BASE
|
|
"src/interface/widgets/onboarding/shaders"
|
|
FILES
|
|
src/interface/widgets/onboarding/shaders/brand_banner.frag
|
|
src/interface/widgets/onboarding/shaders/brand_plate.frag
|
|
)
|
|
|
|
qt6_add_resources(
|
|
cockatrice
|
|
"onboarding_qml"
|
|
PREFIX
|
|
"/onboarding/qml"
|
|
BASE
|
|
"src/interface/widgets/onboarding/qml"
|
|
FILES
|
|
src/interface/widgets/onboarding/qml/BrandBanner.qml
|
|
)
|
|
|
|
target_link_libraries(
|
|
cockatrice
|
|
PUBLIC libcockatrice_card
|
|
libcockatrice_deck_list
|
|
libcockatrice_filters
|
|
libcockatrice_utility
|
|
libcockatrice_network
|
|
libcockatrice_models
|
|
libcockatrice_rng
|
|
libcockatrice_settings
|
|
${COCKATRICE_QT_MODULES}
|
|
)
|
|
|
|
if(UNIX)
|
|
if(APPLE)
|
|
set(MACOSX_BUNDLE_INFO_STRING "${PROJECT_NAME}")
|
|
set(MACOSX_BUNDLE_GUI_IDENTIFIER "com.cockatrice.${PROJECT_NAME}")
|
|
set(MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJECT_NAME}-${PROJECT_VERSION}")
|
|
set(MACOSX_BUNDLE_BUNDLE_NAME "${PROJECT_NAME}")
|
|
set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION})
|
|
set(MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION})
|
|
|
|
set_target_properties(cockatrice PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/cmake/Info.plist)
|
|
|
|
install(TARGETS cockatrice BUNDLE DESTINATION ./)
|
|
else()
|
|
# Assume linux
|
|
install(TARGETS cockatrice RUNTIME DESTINATION bin/)
|
|
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/resources/cockatrice.png DESTINATION ${ICONDIR}/hicolor/48x48/apps)
|
|
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/resources/cockatrice.svg DESTINATION ${ICONDIR}/hicolor/scalable/apps)
|
|
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/cockatrice.desktop DESTINATION ${DESKTOPDIR})
|
|
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/cockatrice-cod.xml DESTINATION ${MIMEDIR})
|
|
|
|
# Refresh the freedesktop databases so the file associations and scheme
|
|
# handler register without requiring the user to run them manually. The
|
|
# tools may be missing on minimal systems; that is fine, packaging systems
|
|
# usually refresh these databases through their own triggers.
|
|
find_program(UPDATE_MIME_DATABASE update-mime-database)
|
|
if(UPDATE_MIME_DATABASE)
|
|
install(CODE "execute_process(COMMAND \"${UPDATE_MIME_DATABASE}\" \"${CMAKE_INSTALL_PREFIX}/share/mime\")")
|
|
endif()
|
|
|
|
find_program(UPDATE_DESKTOP_DATABASE update-desktop-database)
|
|
if(UPDATE_DESKTOP_DATABASE)
|
|
install(
|
|
CODE "execute_process(COMMAND \"${UPDATE_DESKTOP_DATABASE}\" \"${CMAKE_INSTALL_PREFIX}/share/applications\")"
|
|
)
|
|
endif()
|
|
endif()
|
|
elseif(WIN32)
|
|
install(TARGETS cockatrice RUNTIME DESTINATION ./)
|
|
endif()
|
|
|
|
if(APPLE)
|
|
# these needs to be relative to CMAKE_INSTALL_PREFIX
|
|
set(plugin_dest_dir cockatrice.app/Contents/Plugins)
|
|
set(qtconf_dest_dir cockatrice.app/Contents/Resources)
|
|
|
|
# Qt plugins: audio, iconengines, imageformats, multimedia, platforms, printsupport, styles, tls
|
|
install(
|
|
DIRECTORY "${QT_PLUGINS_DIR}/"
|
|
DESTINATION ${plugin_dest_dir}
|
|
COMPONENT Runtime
|
|
FILES_MATCHING
|
|
PATTERN "*.dSYM" EXCLUDE
|
|
PATTERN "*_debug.dylib" EXCLUDE
|
|
PATTERN "audio/*.dylib"
|
|
PATTERN "iconengines/*.dylib"
|
|
PATTERN "imageformats/*.dylib"
|
|
PATTERN "multimedia/*.dylib"
|
|
PATTERN "platforms/*.dylib"
|
|
PATTERN "printsupport/*.dylib"
|
|
PATTERN "styles/*.dylib"
|
|
PATTERN "tls/*.dylib"
|
|
)
|
|
|
|
install(
|
|
DIRECTORY "${CMAKE_BINARY_DIR}/cockatrice/"
|
|
DESTINATION ${qtconf_dest_dir}/
|
|
FILES_MATCHING
|
|
PATTERN "*.ini"
|
|
)
|
|
|
|
install(
|
|
CODE "
|
|
file(WRITE \"\${CMAKE_INSTALL_PREFIX}/${qtconf_dest_dir}/qt.conf\" \"[Paths]
|
|
Plugins = Plugins
|
|
Translations = Resources/translations
|
|
Data = Resources\")
|
|
"
|
|
COMPONENT Runtime
|
|
)
|
|
|
|
install(
|
|
CODE "
|
|
file(GLOB_RECURSE QTPLUGINS
|
|
\"\${CMAKE_INSTALL_PREFIX}/${plugin_dest_dir}/*.dylib\")
|
|
set(BU_CHMOD_BUNDLE_ITEMS ON)
|
|
include(BundleUtilities)
|
|
fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/cockatrice.app\" \"\${QTPLUGINS}\" \"${QT_LIBRARY_DIR}\")
|
|
"
|
|
COMPONENT Runtime
|
|
)
|
|
endif()
|
|
|
|
if(WIN32)
|
|
# these needs to be relative to CMAKE_INSTALL_PREFIX
|
|
set(plugin_dest_dir Plugins)
|
|
set(qtconf_dest_dir .)
|
|
|
|
install(
|
|
DIRECTORY "$<TARGET_FILE_DIR:cockatrice>/"
|
|
DESTINATION ./
|
|
FILES_MATCHING
|
|
PATTERN "*.dll"
|
|
PATTERN "*.pdb" EXCLUDE
|
|
PATTERN "*.dir*" EXCLUDE
|
|
PATTERN "*_autogen*" EXCLUDE
|
|
PATTERN "*.tlog*" EXCLUDE
|
|
PATTERN "CMakeFiles*" EXCLUDE
|
|
PATTERN "x64*" EXCLUDE
|
|
PATTERN ".qt*" EXCLUDE
|
|
PATTERN ".qsb*" EXCLUDE
|
|
PATTERN ".lupdate*" EXCLUDE
|
|
)
|
|
|
|
# fixup_bundle further down copies only the DLLs it can find in Cockatrice.exe's
|
|
# import table, and the glob above only sees DLLs that were already copied next
|
|
# to the executable. Qt6::Concurrent is linked but never imported - QtConcurrent::run
|
|
# and QFutureWatcher are header-only in Qt 6 - so neither step ships
|
|
# Qt6Concurrent.dll, even though required-qt-runtime.txt lists it and the
|
|
# Windows package check then fails on a package that is fine to run.
|
|
# Qt6::ShaderTools is skipped for the same reason.
|
|
#
|
|
# Install the runtime of every linked module explicitly. An unused DLL costs a
|
|
# few hundred kilobytes; a missing one is what stops the client starting after
|
|
# an update, and it stays invisible until then.
|
|
foreach(_qt_module IN LISTS COCKATRICE_QT_MODULES)
|
|
get_target_property(_qt_module_type ${_qt_module} TYPE)
|
|
if(_qt_module_type STREQUAL "SHARED_LIBRARY")
|
|
install(FILES "$<TARGET_FILE:${_qt_module}>" DESTINATION ./)
|
|
endif()
|
|
endforeach()
|
|
|
|
install(
|
|
DIRECTORY "${CMAKE_BINARY_DIR}/cockatrice/"
|
|
DESTINATION ./
|
|
FILES_MATCHING
|
|
PATTERN "*.ini"
|
|
PATTERN "CMakeFiles*" EXCLUDE
|
|
PATTERN "*.dir*" EXCLUDE
|
|
PATTERN "*_autogen*" EXCLUDE
|
|
PATTERN "*.tlog*" EXCLUDE
|
|
PATTERN "*.pdb" EXCLUDE
|
|
PATTERN "x64*" EXCLUDE
|
|
PATTERN ".qt*" EXCLUDE
|
|
PATTERN ".qsb*" EXCLUDE
|
|
PATTERN ".lupdate*" EXCLUDE
|
|
)
|
|
|
|
# Qt plugins: audio, iconengines, imageformats, multimedia, platforms, printsupport, styles, tls
|
|
install(
|
|
DIRECTORY "${QT_PLUGINS_DIR}/"
|
|
DESTINATION ${plugin_dest_dir}
|
|
COMPONENT Runtime
|
|
FILES_MATCHING
|
|
PATTERN "audio/qtaudio_wasapi.dll"
|
|
PATTERN "audio/qtaudio_windows.dll"
|
|
PATTERN "iconengines/qsvgicon.dll"
|
|
PATTERN "imageformats/*.dll"
|
|
PATTERN "mediaservice/dsengine.dll"
|
|
PATTERN "mediaservice/wmfengine.dll"
|
|
PATTERN "multimedia/*.dll"
|
|
PATTERN "platforms/qdirect2d.dll"
|
|
PATTERN "platforms/qminimal.dll"
|
|
PATTERN "platforms/qoffscreen.dll"
|
|
PATTERN "platforms/qwindows.dll"
|
|
PATTERN "printsupport/windowsprintersupport.dll"
|
|
PATTERN "styles/qcertonlybackend.dll"
|
|
PATTERN "styles/qopensslbackend.dll"
|
|
PATTERN "styles/qschannelbackend.dll"
|
|
PATTERN "styles/qwindowsvistastyle.dll"
|
|
PATTERN "styles/qwindows11style.dll"
|
|
PATTERN "styles/qmodernwindowsstyle.dll"
|
|
PATTERN "styles/qmodernwindowsstyled.dll"
|
|
PATTERN "tls/qcertonlybackend.dll"
|
|
PATTERN "tls/qopensslbackend.dll"
|
|
PATTERN "tls/qschannelbackend.dll"
|
|
)
|
|
|
|
# The Windows install has no Resources directory: the .qm files go to
|
|
# ${COCKATRICE_WIN32_QM_INSTALL_DIR} and main.cpp looks for them at
|
|
# applicationDirPath() + "/translations". The macOS bundle above keeps
|
|
# Resources/translations, which is correct for it.
|
|
install(
|
|
CODE "
|
|
file(WRITE \"\${CMAKE_INSTALL_PREFIX}/${qtconf_dest_dir}/qt.conf\" \"[Paths]
|
|
Plugins = Plugins
|
|
Translations = translations
|
|
Data = Resources\")
|
|
"
|
|
COMPONENT Runtime
|
|
)
|
|
|
|
install(
|
|
CODE "
|
|
file(GLOB_RECURSE QTPLUGINS
|
|
\"\${CMAKE_INSTALL_PREFIX}/${plugin_dest_dir}/*.dll\")
|
|
set(BU_CHMOD_BUNDLE_ITEMS ON)
|
|
include(BundleUtilities)
|
|
fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/Cockatrice.exe\" \"\${QTPLUGINS}\" \"${QT_LIBRARY_DIR}\")
|
|
"
|
|
COMPONENT Runtime
|
|
)
|
|
endif()
|
|
|
|
if(Qt6LinguistTools_FOUND)
|
|
#Qt6 Translations happen after the executable is built up
|
|
if(UPDATE_TRANSLATIONS)
|
|
qt6_add_translations(
|
|
cockatrice
|
|
TS_FILES
|
|
${cockatrice_TS}
|
|
SOURCES
|
|
${translate_SRCS}
|
|
QM_FILES_OUTPUT_VARIABLE
|
|
cockatrice_QM
|
|
)
|
|
else()
|
|
qt6_add_translations(cockatrice TS_FILES ${cockatrice_TS} QM_FILES_OUTPUT_VARIABLE cockatrice_QM)
|
|
endif()
|
|
|
|
if(UNIX)
|
|
if(APPLE)
|
|
install(FILES ${cockatrice_QM} DESTINATION ${COCKATRICE_MAC_QM_INSTALL_DIR})
|
|
else()
|
|
install(FILES ${cockatrice_QM} DESTINATION ${COCKATRICE_UNIX_QM_INSTALL_DIR})
|
|
endif()
|
|
elseif(WIN32)
|
|
install(FILES ${cockatrice_QM} DESTINATION ${COCKATRICE_WIN32_QM_INSTALL_DIR})
|
|
endif()
|
|
|
|
# Qt attaches the .qm files to the default build target only, so building the executable on its own
|
|
# (CLion, --target cockatrice) leaves it without any translations: nothing is translated and the
|
|
# language selector stays empty.
|
|
# Depend on Qt's own lrelease target instead of attaching the .qm custom commands to a second
|
|
# target: two independent targets owning the same outputs race on MSBuild/Makefiles and are an
|
|
# error on Xcode. Older Qt versions already add this dependency themselves.
|
|
foreach(_lrelease_target Cockatrice_lrelease cockatrice_lrelease)
|
|
if(TARGET ${_lrelease_target})
|
|
add_dependencies(cockatrice ${_lrelease_target})
|
|
endif()
|
|
endforeach()
|
|
endif()
|
|
|
|
qt6_finalize_target(cockatrice)
|