@@ -1233,8 +1233,6 @@ def mouseDragEvent(self, event, axis=None):
12331233 description = description ,
12341234 values = (self ._drag_start ,
12351235 drag_stop ))
1236- self .mne .plt .addItem (self ._drag_region )
1237- self .mne .plt .addItem (self ._drag_region .label_item )
12381236 elif event .isFinish ():
12391237 drag_stop = self .mapSceneToView (event .scenePos ()).x ()
12401238 self ._drag_region .setRegion ((self ._drag_start , drag_stop ))
@@ -1368,15 +1366,18 @@ def _q_font(point_size, bold=False):
13681366class EventLine (InfiniteLine ):
13691367 """Displays Events inside Trace-Plot"""
13701368
1371- def __init__ (self , pos , label , color ):
1369+ def __init__ (self , mne , pos , label , color ):
13721370 super ().__init__ (pos , pen = color , movable = False ,
13731371 label = str (label ), labelOpts = {'position' : 0.98 ,
13741372 'color' : color ,
13751373 'anchors' : [(0 , 0.5 ),
13761374 (0 , 0.5 )]})
1375+ self .mne = mne
13771376 self .label .setFont (_q_font (10 , bold = True ))
13781377 self .setZValue (0 )
13791378
1379+ self .mne .plt .addItem (self )
1380+
13801381
13811382class Crosshair (InfiniteLine ):
13821383 """Continously updating marker inside the Trace-Plot."""
@@ -1991,6 +1992,9 @@ def __init__(self, mne, description, values):
19911992
19921993 self .update_color ()
19931994
1995+ self .mne .plt .addItem (self )
1996+ self .mne .plt .addItem (self .label_item )
1997+
19941998 def _region_changed (self ):
19951999 self .regionChangeFinished .emit (self )
19962000 self .old_onset = self .getRegion ()[0 ]
@@ -2869,11 +2873,8 @@ def _hidpi_mkPen(*args, **kwargs):
28692873 self .mne .event_nums ):
28702874 color = self .mne .event_color_dict [ev_id ]
28712875 label = self .mne .event_id_rev .get (ev_id , ev_id )
2872- event_line = EventLine (ev_time , label , color )
2876+ event_line = EventLine (self . mne , ev_time , label , color )
28732877 self .mne .event_lines .append (event_line )
2874-
2875- if 0 < ev_time < self .mne .duration :
2876- self .mne .plt .addItem (event_line )
28772878 else :
28782879 self .mne .events_visible = False
28792880
@@ -3607,13 +3608,6 @@ def _xrange_changed(self, _, xrange):
36073608
36083609 self ._redraw (update_data = True )
36093610
3610- # Update annotations
3611- if not self .mne .is_epochs :
3612- self ._update_annotations_xrange (xrange )
3613-
3614- # Update Events
3615- self ._update_events_xrange (xrange )
3616-
36173611 # Update Time-Bar
36183612 self .mne .ax_hscroll .update_value (xrange [0 ])
36193613
@@ -3623,47 +3617,6 @@ def _xrange_changed(self, _, xrange):
36233617 # Update Scalebars
36243618 self ._update_scalebar_x_positions ()
36253619
3626- def _update_events_xrange (self , xrange ):
3627- """Add or remove event-lines depending on view-range.
3628-
3629- This has proven to be more performant (and scalable)
3630- than adding all event-lines to plt(the Scene)
3631- and letting pyqtgraph/Qt handle it.
3632- """
3633- if self .mne .events_visible :
3634- for ev_line in self .mne .event_lines :
3635- if xrange [0 ] < ev_line .pos ().x () < xrange [1 ]:
3636- if ev_line not in self .mne .plt .items :
3637- self .mne .plt .addItem (ev_line )
3638- else :
3639- if ev_line in self .mne .plt .items :
3640- self .mne .plt .removeItem (ev_line )
3641-
3642- def _update_annotations_xrange (self , xrange ):
3643- """Add or remove annotation-regions depending on view-range.
3644-
3645- This has proven to be more performant (and scalable)
3646- than adding all annotations to plt(the Scene)
3647- and letting pyqtgraph/Qt handle it.
3648- """
3649- if self .mne .annotations_visible :
3650- for region in self .mne .regions :
3651- if self .mne .visible_annotations [region .description ]:
3652- rmin , rmax = region .getRegion ()
3653- xmin , xmax = xrange
3654- comparisons = [rmin < xmin ,
3655- rmin < xmax ,
3656- rmax < xmin ,
3657- rmax < xmax ]
3658- if all (comparisons ) or not any (comparisons ):
3659- if region in self .mne .plt .items :
3660- self .mne .plt .removeItem (region )
3661- self .mne .plt .removeItem (region .label_item )
3662- else :
3663- if region not in self .mne .plt .items :
3664- self .mne .plt .addItem (region )
3665- self .mne .plt .addItem (region .label_item )
3666-
36673620 def _yrange_changed (self , _ , yrange ):
36683621 if not self .mne .butterfly :
36693622 if not self .mne .fig_selection :
@@ -3973,17 +3926,14 @@ def _add_region(self, plot_onset, duration, description, region=None):
39733926 if not region :
39743927 region = AnnotRegion (self .mne , description = description ,
39753928 values = (plot_onset , plot_onset + duration ))
3976- if (any ([self .mne .t_start < v < self .mne .t_start + self .mne .duration
3977- for v in [plot_onset , plot_onset + duration ]]) and
3978- region not in self .mne .plt .items ):
3979- self .mne .plt .addItem (region )
3980- self .mne .plt .addItem (region .label_item )
3929+ # Add region to list and plot
3930+ self .mne .regions .append (region )
3931+
3932+ # Connect signals of region
39813933 region .regionChangeFinished .connect (self ._region_changed )
39823934 region .gotSelected .connect (self ._region_selected )
39833935 region .removeRequested .connect (self ._remove_region )
39843936 self .mne .viewbox .sigYRangeChanged .connect (region .update_label_pos )
3985- self .mne .regions .append (region )
3986-
39873937 region .update_label_pos ()
39883938
39893939 def _remove_region (self , region , from_annot = True ):
@@ -4108,17 +4058,6 @@ def _set_annotations_visible(self, visible):
41084058 self .mne .visible_annotations [descr ] = visible
41094059 self ._update_regions_visible ()
41104060
4111- # Update Plot
4112- if visible :
4113- self ._update_annotations_xrange ((self .mne .t_start ,
4114- self .mne .t_start +
4115- self .mne .duration ))
4116- else :
4117- for region in [r for r in self .mne .regions
4118- if r in self .mne .plt .items ]:
4119- self .mne .plt .removeItem (region )
4120- self .mne .plt .removeItem (region .label_item )
4121-
41224061 def _toggle_annotations (self ):
41234062 self .mne .annotations_visible = not self .mne .annotations_visible
41244063 self ._set_annotations_visible (self .mne .annotations_visible )
@@ -4231,15 +4170,6 @@ def _set_events_visible(self, visible):
42314170 for event_line in self .mne .event_lines :
42324171 event_line .setVisible (visible )
42334172
4234- # Update Plot
4235- if visible :
4236- self ._update_events_xrange ((self .mne .t_start ,
4237- self .mne .t_start +
4238- self .mne .duration ))
4239- else :
4240- for event_line in [evl for evl in self .mne .event_lines
4241- if evl in self .mne .plt .items ]:
4242- self .mne .plt .removeItem (event_line )
42434173 self .mne .overview_bar .update_events ()
42444174
42454175 def _toggle_events (self ):
0 commit comments