          # Bind control click for reverse painting
          self._canvas.bind("<Control-ButtonPress-1>", self._control_click)
          self._mask_type = self._set_tk_mask_change_callback()
          self._mouse_location = [
              self._canvas.create_oval(0, 0, 0, 0, outline="black", state="hidden"), False]
  
      @property
      def _opacity(self):
          """ float: The mask opacity setting from the control panel from 0.0 - 1.0. """
          annotation = self.__class__.__name__
 
</s> remove 
 </s> add         self._add_control(ControlPanelOption("Cursor Shape",
                                             str,
                                             group="Display",
                                             choices=["Circle", "Rectangle"],
                                             default="Circle",
                                             is_radio=True,
                                             helptext=_("Select a shape for masking cursor.")))
            self._get_cursor_shape(), False]
          # Bind control click for reverse painting
          self._canvas.bind("<Control-ButtonPress-1>", self._control_click)
          self._mask_type = self._set_tk_mask_change_callback()
          self._mouse_location = [
            self._get_cursor_shape(), False]
  
      @property
      def _opacity(self):
          """ float: The mask opacity setting from the control panel from 0.0 - 1.0. """
          annotation = self.__class__.__name__
keep keep keep keep replace keep keep keep keep keep
 feat: add support for rectangle cursor shape for masking (#1189)

* feat: add support for rectangle cursor shape for masking
* formatting update
* fix bug with initial rectangular point

Co-authored-by: markus <markus@helmes.com> 
tools/manual/frameviewer/editor/mask.py