@@ -2989,6 +2989,50 @@ def _save_movie(self, filename, time_dilation=4., tmin=None, tmax=None,
2989
2989
kwargs ['bitrate' ] = bitrate
2990
2990
imageio .mimwrite (filename , images , ** kwargs )
2991
2991
2992
+ def _save_movie_tv (self , filename , time_dilation = 4. , tmin = None , tmax = None ,
2993
+ framerate = 24 , interpolation = None , codec = None ,
2994
+ bitrate = None , callback = None , time_viewer = False ,
2995
+ ** kwargs ):
2996
+ def frame_callback (frame , n_frames ):
2997
+ if frame == n_frames :
2998
+ # On the ImageIO step
2999
+ self .status_msg .set_value (
3000
+ "Saving with ImageIO: %s"
3001
+ % filename
3002
+ )
3003
+ self .status_msg .show ()
3004
+ self .status_progress .hide ()
3005
+ self ._renderer ._status_bar_update ()
3006
+ else :
3007
+ self .status_msg .set_value (
3008
+ "Rendering images (frame %d / %d) ..."
3009
+ % (frame + 1 , n_frames )
3010
+ )
3011
+ self .status_msg .show ()
3012
+ self .status_progress .show ()
3013
+ self .status_progress .set_range ([0 , n_frames - 1 ])
3014
+ self .status_progress .set_value (frame )
3015
+ self .status_progress .update ()
3016
+ self .status_msg .update ()
3017
+ self ._renderer ._status_bar_update ()
3018
+
3019
+ # set cursor to busy
3020
+ default_cursor = self ._renderer ._window_get_cursor ()
3021
+ self ._renderer ._window_set_cursor (
3022
+ self ._renderer ._window_new_cursor ("WaitCursor" ))
3023
+
3024
+ try :
3025
+ self ._save_movie (
3026
+ filename = filename ,
3027
+ time_dilation = (1. / self .playback_speed ),
3028
+ callback = frame_callback ,
3029
+ ** kwargs
3030
+ )
3031
+ except (Exception , KeyboardInterrupt ):
3032
+ warn ('Movie saving aborted:\n ' + traceback .format_exc ())
3033
+ finally :
3034
+ self ._renderer ._window_set_cursor (default_cursor )
3035
+
2992
3036
@fill_doc
2993
3037
def save_movie (self , filename , time_dilation = 4. , tmin = None , tmax = None ,
2994
3038
framerate = 24 , interpolation = None , codec = None ,
@@ -3042,73 +3086,10 @@ def save_movie(self, filename, time_dilation=4., tmin=None, tmax=None,
3042
3086
dialog : object
3043
3087
The opened dialog is returned for testing purpose only.
3044
3088
"""
3045
- if self .time_viewer :
3046
- if filename is None :
3047
- try :
3048
- from pyvista .plotting .qt_plotting import FileDialog
3049
- except ImportError :
3050
- from pyvistaqt .plotting import FileDialog
3051
- self .status_msg .set_value ("Choose movie path ..." )
3052
- self .status_msg .show ()
3053
- self .status_progress .set_value (0 )
3054
-
3055
- def _post_setup (unused ):
3056
- del unused
3057
- self .status_msg .hide ()
3058
- self .status_progress .hide ()
3059
-
3060
- dialog = FileDialog (
3061
- self .plotter .app_window ,
3062
- callback = partial (self ._save_movie , ** kwargs )
3063
- )
3064
- dialog .setDirectory (os .getcwd ())
3065
- dialog .finished .connect (_post_setup )
3066
- return dialog
3067
- else :
3068
- def frame_callback (frame , n_frames ):
3069
- if frame == n_frames :
3070
- # On the ImageIO step
3071
- self .status_msg .set_value (
3072
- "Saving with ImageIO: %s"
3073
- % filename
3074
- )
3075
- self .status_msg .show ()
3076
- self .status_progress .hide ()
3077
- self ._renderer ._status_bar_update ()
3078
- else :
3079
- self .status_msg .set_value (
3080
- "Rendering images (frame %d / %d) ..."
3081
- % (frame + 1 , n_frames )
3082
- )
3083
- self .status_msg .show ()
3084
- self .status_progress .show ()
3085
- self .status_progress .forward (
3086
- "setRange" , 0 , n_frames - 1 )
3087
- self .status_progress .set_value (frame )
3088
- self .status_progress .update ()
3089
- self .status_msg .update ()
3090
- self ._renderer ._status_bar_update ()
3091
-
3092
- # set cursor to busy
3093
- default_cursor = self ._renderer ._window_get_cursor ()
3094
- self ._renderer ._window_set_cursor (
3095
- self ._renderer ._window_new_cursor ("WaitCursor" ))
3096
-
3097
- try :
3098
- self ._save_movie (
3099
- filename = filename ,
3100
- time_dilation = (1. / self .playback_speed ),
3101
- callback = frame_callback ,
3102
- ** kwargs
3103
- )
3104
- except (Exception , KeyboardInterrupt ):
3105
- warn ('Movie saving aborted:\n ' + traceback .format_exc ())
3106
- finally :
3107
- self ._renderer ._window_set_cursor (default_cursor )
3108
- else :
3109
- self ._save_movie (filename , time_dilation , tmin , tmax ,
3110
- framerate , interpolation , codec ,
3111
- bitrate , callback , time_viewer , ** kwargs )
3089
+ func = self ._save_movie_tv if self .time_viewer else self ._save_movie
3090
+ func (filename , time_dilation , tmin , tmax ,
3091
+ framerate , interpolation , codec ,
3092
+ bitrate , callback , time_viewer , ** kwargs )
3112
3093
3113
3094
def _make_movie_frames (self , time_dilation , tmin , tmax , framerate ,
3114
3095
interpolation , callback , time_viewer ):
0 commit comments