@@ -314,10 +314,10 @@ def getProfileName(self, profile_path):
314
314
if profile_path == path :
315
315
return profile
316
316
317
- def updateProgressBar (self , title_message , start_frame , end_frame , current_frame ):
317
+ def updateProgressBar (self , title_message , start_frame , end_frame , current_frame , progress_format ):
318
318
"""Update progress bar during exporting"""
319
319
if end_frame - start_frame > 0 :
320
- percentage_string = "%4.1f%% " % (( current_frame - start_frame ) / ( end_frame - start_frame ) * 100 )
320
+ percentage_string = progress_format % (( current_frame - start_frame ) / ( end_frame - start_frame ) * 100 )
321
321
else :
322
322
percentage_string = "100%"
323
323
self .progressExportVideo .setValue (current_frame )
@@ -905,11 +905,21 @@ def accept(self):
905
905
start_time_export = time .time ()
906
906
start_frame_export = video_settings .get ("start_frame" )
907
907
end_frame_export = video_settings .get ("end_frame" )
908
+ last_exported_time = time .time ()
909
+ # Precision of the progress bar
910
+ progress_format = "%4.1f%% "
908
911
# Write each frame in the selected range
909
912
for frame in range (video_settings .get ("start_frame" ), video_settings .get ("end_frame" ) + 1 ):
910
913
# Update progress bar (emit signal to main window)
911
- if (frame % progressstep ) == 0 :
912
- end_time_export = time .time ()
914
+ end_time_export = time .time ()
915
+ if ((frame % progressstep ) == 0 ) or ((end_time_export - last_exported_time ) > 1 ):
916
+ if (end_time_export - last_exported_time ) > 5 :
917
+ progress_format = "%4.4f%% "
918
+ elif (end_time_export - last_exported_time ) > 1 :
919
+ progress_format = "%4.2f%% "
920
+ else :
921
+ progress_format = "%4.1f%% "
922
+ last_exported_time = time .time ()
913
923
if ((( frame - start_frame_export ) != 0 ) & (( end_time_export - start_time_export ) != 0 )):
914
924
seconds_left = round (( start_time_export - end_time_export )* ( frame - end_frame_export )/ ( frame - start_frame_export ))
915
925
fps_encode = ((frame - start_frame_export )/ (end_time_export - start_time_export ))
@@ -923,7 +933,7 @@ def accept(self):
923
933
'fps' : fps_encode }
924
934
925
935
# Emit frame exported
926
- get_app ().window .ExportFrame .emit (title_message , video_settings .get ("start_frame" ), video_settings .get ("end_frame" ), frame )
936
+ get_app ().window .ExportFrame .emit (title_message , video_settings .get ("start_frame" ), video_settings .get ("end_frame" ), frame , progress_format )
927
937
928
938
# Process events (to show the progress bar moving)
929
939
QCoreApplication .processEvents ()
@@ -947,7 +957,7 @@ def accept(self):
947
957
'fps' : fps_encode }
948
958
949
959
get_app ().window .ExportFrame .emit (title_message , video_settings .get ("start_frame" ),
950
- video_settings .get ("end_frame" ), frame )
960
+ video_settings .get ("end_frame" ), frame , progress_format )
951
961
952
962
except Exception as e :
953
963
# TODO: Find a better way to catch the error. This is the only way I have found that
@@ -1019,7 +1029,7 @@ def accept(self):
1019
1029
'fps' : fps_encode }
1020
1030
1021
1031
get_app ().window .ExportFrame .emit (title_message , video_settings .get ("start_frame" ),
1022
- video_settings .get ("end_frame" ), frame )
1032
+ video_settings .get ("end_frame" ), frame , progress_format )
1023
1033
1024
1034
# Make progress bar green (to indicate we are done)
1025
1035
from PyQt5 .QtGui import QPalette
0 commit comments