@@ -258,20 +258,21 @@ def populate_unreal_versions(self, unreal_versions, current_version):
258
258
:param unreal_versions: A list of :class:`SoftwareVersion` instances.
259
259
:param current_version: An Unreal version number, as a string.
260
260
"""
261
+ # See if we can match with just a major.minor
262
+ short_current_version = _short_version (current_version )
261
263
for i , unreal_version in enumerate (unreal_versions ):
262
264
self .unreal_engine_versions_widget .addItem (
263
265
unreal_version .display_name ,
264
266
userData = unreal_version ,
265
267
)
266
- if unreal_version .version == current_version :
268
+ short_version = _short_version (unreal_version .version )
269
+ if short_version == short_current_version :
267
270
self .unreal_engine_versions_widget .setCurrentIndex (
268
271
i ,
269
272
)
270
273
sel = self .unreal_engine_versions_widget .currentIndex ()
271
274
if sel != - 1 :
272
- self .unreal_engine_widget .combo_box .lineEdit ().setText (
273
- self .unreal_engine_versions_widget .itemData (sel ).path
274
- )
275
+ self ._current_unreal_version_changed (sel )
275
276
276
277
def set_unreal_project_path_template (self , project_path_template ):
277
278
"""
@@ -566,6 +567,18 @@ def set_ui_settings(self, widget, settings):
566
567
# We do not allow editing multiple items
567
568
raise NotImplementedError
568
569
cur_settings = settings [0 ]
570
+
571
+ # Set the paths first, they can be changed when matching UE versions below.
572
+ widget .unreal_setup_widget .unreal_engine_widget .set_path (
573
+ cur_settings ["Unreal Engine Path" ]
574
+ )
575
+ widget .unreal_setup_widget .set_unreal_project_path_template (
576
+ cur_settings ["Unreal Project Path Template" ]
577
+ )
578
+ widget .unreal_setup_widget .unreal_project_widget .set_path (
579
+ cur_settings ["Unreal Project Path" ]
580
+ )
581
+
569
582
try :
570
583
unreal_versions = self .get_unreal_versions ()
571
584
widget .unreal_setup_widget .populate_unreal_versions (
@@ -577,15 +590,6 @@ def set_ui_settings(self, widget, settings):
577
590
"Unable to retrieve existing Unreal versions from an installed TK Unreal Engine"
578
591
)
579
592
580
- widget .unreal_setup_widget .unreal_engine_widget .set_path (
581
- cur_settings ["Unreal Engine Path" ]
582
- )
583
- widget .unreal_setup_widget .set_unreal_project_path_template (
584
- cur_settings ["Unreal Project Path Template" ]
585
- )
586
- widget .unreal_setup_widget .unreal_project_widget .set_path (
587
- cur_settings ["Unreal Project Path" ]
588
- )
589
593
widget .unreal_turntable_map_widget .setText (cur_settings ["Turntable Map Path" ])
590
594
widget .unreal_sequence_widget .setText (cur_settings ["Sequence Path" ])
591
595
widget .unreal_turntable_asset_widget .setText (cur_settings ["Turntable Assets Path" ])
@@ -840,6 +844,8 @@ def get_unreal_exec_property(self, settings, item):
840
844
# Validate the Unreal executable and project, stash in properties
841
845
unreal_exec_path = settings ["Unreal Engine Path" ].value
842
846
unreal_engine_version = settings ["Unreal Engine Version" ].value
847
+ # See if we can match with just a major.minor
848
+ short_engine_version = _short_version (unreal_engine_version )
843
849
if not unreal_exec_path :
844
850
# The path was not explicitely set, either from settings or the UI,
845
851
# compute one from detected Unreal versions and the default version
@@ -853,9 +859,10 @@ def get_unreal_exec_property(self, settings, item):
853
859
unreal_exec_path = None
854
860
855
861
for unreal_version in unreal_versions :
856
- if unreal_version .version == unreal_engine_version :
862
+ short_version = _short_version (unreal_version .version )
863
+ if short_version == short_engine_version :
857
864
self .logger .info (
858
- "Found matching Unreal version %s for %s" % (unreal_version , unreal_engine_version )
865
+ "Found matching Unreal version %s for %s" % (unreal_version , short_engine_version )
859
866
)
860
867
unreal_exec_path = unreal_version .path
861
868
break
@@ -1580,6 +1587,20 @@ def _copy_work_to_publish(self, settings, item):
1580
1587
"""
1581
1588
pass
1582
1589
1590
+ def _short_version (version ):
1591
+ """
1592
+ Return a short major.minor version for the given version.
1593
+
1594
+ Return the given version if a major and minor can't be extracted.
1595
+
1596
+ :param str version: A version, as string, e.g. 5.0.2.
1597
+ :returns: A string.
1598
+ """
1599
+ parts = version .split ("." , 2 )
1600
+ if len (parts ) > 2 :
1601
+ return "." .join (parts [:2 ])
1602
+ return version
1603
+
1583
1604
1584
1605
def _session_path ():
1585
1606
"""
0 commit comments