RobWorld.ViewProviderRobWorldProxy Class Reference

Proxy class for Gui.ViewProviderDocumentObject RobWorld.ViewObject. More...

Public Member Functions

def __init__ (self, vp)
 Initialization method for ViewProviderRobWorldProxy. More...
 
def attach (self, vp)
 Method called by FreeCAD after initialization to attach Coin3D constructs. More...
 
def updateData (self, fp, prop)
 Method called after DocumentObjectGroupPython RobWorld was changed. More...
 
def onChanged (self, vp, prop)
 Method called after RobWorld.ViewObject was changed. More...
 
def claimChildren (self)
 Method called by FreeCAD to retrieve assigned children. More...
 
def canDropObject (self, obj)
 Method called by FreeCAD to ask if an object obj can be dropped into a Group. More...
 
def getIcon (self)
 Method called by FreeCAD to supply an icon for the Tree View. More...
 
def __getstate__ (self)
 Necessary method to avoid errors when trying to save unserializable objects. More...
 
def __setstate__ (self, state)
 Necessary method to avoid errors when trying to restore unserializable objects. More...
 
def setProperties (self, vp)
 Method to hide unused properties. More...
 
def doubleClicked (self, vp)
 Method called by FreeCAD when RobWorld is double-clicked in the Tree View. More...
 
def setupContextMenu (self, vp, menu)
 Method called by the FreeCAD to customize a context menu for a RobWorld. More...
 
def makeLabels (self)
 Method which makes Coin3D labels to be displayed in the FreeCAD View. More...
 
def makeFrame (self, frame_labels)
 Method which makes a Coin3D frame to show a current pose in a RobWorld. More...
 

Public Attributes

 tf_object2world
 A SoTransform transformation from object to world frame. More...
 
 font
 A SoFontStyle font for axes labels. More...
 
 frame
 A SoSeparator with a coordinate frame made from 3 RGB arrows. More...
 
 visualisations
 A SoSwitch with all visualisations (frame & rotation axis). More...
 
 label_texts
 A list of SoText2s labels denoting all axes and an origin. More...
 
 label_translations
 A list of SoTranslations moving labels. More...
 
 labels
 A list of SoSwitches containing colored translated labels. More...
 
 frame_shaft
 A SoLineSet shaft for frame axes. More...
 
 frame_arrowhead_translation
 A SoTranslation moving frame arrowheads. More...
 
 frame_arrowhead_cone
 A SoCone arrowhead cone for frame axes. More...
 
 frame_arrowhead
 A SoSwitch translated cone for frame axes. More...
 
 frame_color_x
 A SoPackedColor red color for an X axis. More...
 
 frame_color_y
 A SoPackedColor green color for an Y axis. More...
 
 frame_color_z
 A SoPackedColor blue color for an Z axis. More...
 
 frame_drawstyle
 A SoDrawStyle controlling frame axes shaft line width. More...
 

Static Public Attributes

 panel = None
 A RobWorldPanel if one is active or None. More...
 
 fp = None
 A RobWorld object. More...
 

Detailed Description

Proxy class for Gui.ViewProviderDocumentObject RobWorld.ViewObject.

A ViewProviderRobWorldProxy instance provides a RobWorld's icon, and displays frame.

To connect this Proxy object to a Gui.ViewProviderDocumentObject RobWorld.ViewObject do:

a = FreeCAD.ActiveDocument.addObject("App::DocumentObjectGroupPython",
"RobWorld")
ViewProviderRobWorldProxy(a.ViewObject)

Definition at line 277 of file RobWorld.py.

Constructor & Destructor Documentation

◆ __init__()

def RobWorld.ViewProviderRobWorldProxy.__init__ (   self,
  vp 
)

Initialization method for ViewProviderRobWorldProxy.

A class instance is created and made a Proxy for a generic Gui.ViewProviderDocumentObject RobWorld.ViewObject. During initialization number of properties are specified and preset.

Parameters
vpA barebone Gui.ViewProviderDocumentObject RobWorld.ViewObject.

Definition at line 344 of file RobWorld.py.

344  def __init__(self, vp):
345  self.setProperties(vp)
346  vp.Proxy = self
347 

Member Function Documentation

◆ __getstate__()

def RobWorld.ViewProviderRobWorldProxy.__getstate__ (   self)

Necessary method to avoid errors when trying to save unserializable objects.

This method is used by JSON to serialize unserializable objects during autosave. Without this an Error would rise when JSON would try to do that itself.

We need this for unserializable fp attribute, but we don't serialize it, because it's enough to reset it when object is restored.

Returns
None, because we don't serialize anything.

Definition at line 575 of file RobWorld.py.

575  def __getstate__(self):
576  return None
577 

◆ __setstate__()

def RobWorld.ViewProviderRobWorldProxy.__setstate__ (   self,
  state 
)

Necessary method to avoid errors when trying to restore unserializable objects.

This method is used during a document restoration. We need this for unserializable fp attribute, but we do not restore it, because it's enough to reset it.

Definition at line 585 of file RobWorld.py.

585  def __setstate__(self, state):
586  pass
587 

◆ attach()

def RobWorld.ViewProviderRobWorldProxy.attach (   self,
  vp 
)

Method called by FreeCAD after initialization to attach Coin3D constructs.

A coordinate frame made of RGB arrows corresponding to X, Y and Z axes. This frame shows current pose in a RobWorld. This method adds RobWorld as the fp attribute.

Parameters
vpA RobWorld.ViewObject after initialization.

Definition at line 358 of file RobWorld.py.

358  def attach(self, vp):
359  # prepare transformation to keep pose corresponding to placement
360  self.tf_object2world = coin.SoTransform()
361 
362  labels = self.makeLabels()
363  self.font = coin.SoFontStyle()
364 
365  frame = self.makeFrame(labels[:3])
366  frame.insertChild(self.tf_object2world, 0)
367  frame.insertChild(self.font, 1)
368  self.frame = coin.SoSwitch()
369  self.frame.addChild(frame)
370 
371  self.visualisations = coin.SoSwitch()
372  self.visualisations.addChild(self.frame)
373  self.visualisations.whichChild.setValue(coin.SO_SWITCH_ALL)
374  vp.RootNode.addChild(self.visualisations)
375 
376  vp.Object.Proxy.setProperties(vp.Object)
377  self.setProperties(vp)
378  self.fp = vp.Object
379 

◆ canDropObject()

def RobWorld.ViewProviderRobWorldProxy.canDropObject (   self,
  obj 
)

Method called by FreeCAD to ask if an object obj can be dropped into a Group.

Only FreeCAD objects of a RobRotation and RobTranslation type are allowed to drop inside a RobWorld group.

Parameters
objA FreeCAD object hovering above a RobWorld item in the Tree View.

Definition at line 544 of file RobWorld.py.

544  def canDropObject(self, obj):
545  if hasattr(obj, "Proxy") and \
546  (obj.Proxy.__class__.__name__ == "RobRotationProxy" or
547  obj.Proxy.__class__.__name__ == "RobTranslationProxy"):
548  return True
549  return False
550 

◆ claimChildren()

def RobWorld.ViewProviderRobWorldProxy.claimChildren (   self)

Method called by FreeCAD to retrieve assigned children.

When a property of a RobWorld is touched the RobWorld and the FreeCAD ActiveDocument are notified. The FreeCAD ActiveDocument then emits a signal to inform all its observers e.g. the FreeCADGui ActiveDocument. The FreeCADGui document then emits a new signal to inform e.g. the tree view. The tree view then invokes claimChildren().

Definition at line 530 of file RobWorld.py.

530  def claimChildren(self):
531  if hasattr(self, "fp") and self.fp:
532  return self.fp.Group
533  return []
534 

◆ doubleClicked()

def RobWorld.ViewProviderRobWorldProxy.doubleClicked (   self,
  vp 
)

Method called by FreeCAD when RobWorld is double-clicked in the Tree View.

The default behavior is blocked, because it does not make sense in given context.

Parameters
vpA Gui.ViewProviderDocumentObject RobWorld.ViewObject.
Returns
True confirmation that this method was implemented.

Definition at line 612 of file RobWorld.py.

612  def doubleClicked(self, vp):
613  return True
614 

◆ getIcon()

def RobWorld.ViewProviderRobWorldProxy.getIcon (   self)

Method called by FreeCAD to supply an icon for the Tree View.

A full path to an icon is supplied for the FreeCADGui.

Returns
A str path to an icon.

Definition at line 559 of file RobWorld.py.

559  def getIcon(self):
560  return path.join(PATH_TO_ICONS, "RobWorld.png")
561 

◆ makeFrame()

def RobWorld.ViewProviderRobWorldProxy.makeFrame (   self,
  frame_labels 
)

Method which makes a Coin3D frame to show a current pose in a RobWorld.

A frame is made from 3 red, green and blue arrows representing X, Y and Z. Arrows are each constructed from a shaft and an arrowhead. Their dimensions and other attributes are unassigned as they are extracted from appropriate RobWorld properties.

Returns
A SoSeparator with the frame shown in the FreeCAD View.

Definition at line 676 of file RobWorld.py.

676  def makeFrame(self, frame_labels):
677  # make a generic shaft from 0 in Y direction
678  shaft_vertices = coin.SoVertexProperty()
679  shaft_vertices.vertex.setNum(2)
680  shaft_vertices.vertex.set1Value(0, 0, 0, 0)
681  self.frame_shaft = coin.SoLineSet()
682  self.frame_shaft.vertexProperty.setValue(shaft_vertices)
683  self.frame_shaft.numVertices.setNum(1)
684  self.frame_shaft.numVertices.setValue(2)
685 
686  # make a generic conic arrowhead oriented in Y axis direction and
687  # move it at the end of the shaft
688  self.frame_arrowhead_translation = coin.SoTranslation()
689  self.frame_arrowhead_cone = coin.SoCone()
690  self.frame_arrowhead = coin.SoSwitch()
691  self.frame_arrowhead.addChild(self.frame_arrowhead_translation)
692  self.frame_arrowhead.addChild(self.frame_arrowhead_cone)
693 
694  # make rotations to rotate prepared shaft and arrowhead for Y axis
695  # direction also to X and Z
696  rot_y2x = coin.SoRotation()
697  rot_y2x.rotation.setValue(coin.SbRotation(coin.SbVec3f(0, 1, 0),
698  coin.SbVec3f(1, 0, 0)))
699  rot_y2z = coin.SoRotation()
700  rot_y2z.rotation.setValue(coin.SbRotation(coin.SbVec3f(0, 1, 0),
701  coin.SbVec3f(0, 0, 1)))
702 
703  # prepare colors for X,Y,Z which will correspond to R,G,B as customary
704  self.frame_color_x = coin.SoPackedColor()
705  self.frame_color_y = coin.SoPackedColor()
706  self.frame_color_z = coin.SoPackedColor()
707 
708  # make complete colored and rotated arrows
709  x_arrow = coin.SoSeparator()
710  x_arrow.addChild(rot_y2x)
711  x_arrow.addChild(self.frame_color_x)
712  x_arrow.addChild(self.frame_shaft)
713  x_arrow.addChild(self.frame_arrowhead)
714  x_arrow.addChild(frame_labels[0])
715  y_arrow = coin.SoSeparator()
716  y_arrow.addChild(self.frame_color_y)
717  y_arrow.addChild(self.frame_shaft)
718  y_arrow.addChild(self.frame_arrowhead)
719  y_arrow.addChild(frame_labels[1])
720  z_arrow = coin.SoSeparator()
721  z_arrow.addChild(rot_y2z)
722  z_arrow.addChild(self.frame_color_z)
723  z_arrow.addChild(self.frame_shaft)
724  z_arrow.addChild(self.frame_arrowhead)
725  z_arrow.addChild(frame_labels[2])
726 
727  # prepare draw style to control shaft width
728  self.frame_drawstyle = coin.SoDrawStyle()
729 
730  # make complete frame and it to shaded display mode
731  separated_frame = coin.SoSeparator()
732  separated_frame.addChild(self.frame_drawstyle)
733  separated_frame.addChild(x_arrow)
734  separated_frame.addChild(y_arrow)
735  separated_frame.addChild(z_arrow)
736 
737  return separated_frame
738 
739 

◆ makeLabels()

def RobWorld.ViewProviderRobWorldProxy.makeLabels (   self)

Method which makes Coin3D labels to be displayed in the FreeCAD View.

Frame labels for axes X, Y and Z are made. The labels have the same color as the axes.

Returns
A SoSwitch with colored text label to be shown in the FreeCAD View.

Definition at line 638 of file RobWorld.py.

638  def makeLabels(self):
639  label_strings = ["X", "Y", "Z"]
640  colors = [0xFF0000FF, 0x00FF00FF, 0x0000FFFF]
641  self.label_texts = []
642  self.label_translations = []
643  # frame translation
644  self.label_translations.append(coin.SoTranslation())
645  # axis translation
646  self.label_translations.append(coin.SoTranslation())
647  self.labels = []
648  for i in range(3):
649  label_group = coin.SoSeparator()
650  label_group.addChild(self.label_translations[0])
651  frame_axis_color = coin.SoPackedColor()
652  frame_axis_color.orderedRGBA.setValue(colors[i])
653  label_group.addChild(frame_axis_color)
654  self.label_texts.append(coin.SoText2())
655  self.label_texts[i].string.setValues(
656  0, 3, ["", label_strings[i], ""])
657  self.label_texts[i].justification.setValue(
658  self.label_texts[i].CENTER)
659  self.label_texts[i].spacing.setValue(0.45)
660  label_group.addChild(self.label_texts[i])
661  self.labels.append(coin.SoSwitch())
662  self.labels[i].addChild(label_group)
663  return self.labels
664 

◆ onChanged()

def RobWorld.ViewProviderRobWorldProxy.onChanged (   self,
  vp,
  prop 
)

Method called after RobWorld.ViewObject was changed.

If visibility changed, an appropriate Coin3D construct hides the frame showing current pose.

Parameters
vpA RobWorld.ViewObject.
propA str name of a changed property.

Definition at line 514 of file RobWorld.py.

514  def onChanged(self, vp, prop):
515  if prop == "Visibility":
516  if vp.Visibility:
517  self.visualisations.whichChild.setValue(coin.SO_SWITCH_ALL)
518  else:
519  self.visualisations.whichChild.setValue(coin.SO_SWITCH_NONE)
520 

◆ setProperties()

def RobWorld.ViewProviderRobWorldProxy.setProperties (   self,
  vp 
)

Method to hide unused properties.

Property Display Mode is set to be invisible as they are unused.

Parameters
vpA Gui.ViewProviderDocumentObject RobWorld.ViewObject.

Definition at line 596 of file RobWorld.py.

596  def setProperties(self, vp):
597  # hide unnecessary view properties
598  vp.setEditorMode("DisplayMode", 2)
599 

◆ setupContextMenu()

def RobWorld.ViewProviderRobWorldProxy.setupContextMenu (   self,
  vp,
  menu 
)

Method called by the FreeCAD to customize a context menu for a RobWorld.

The Transform and Set colors... items are removed from the context menu shown upon right click on DocumentObjectGroupPython RobWorld in the Tree View.

Parameters
vpA right-clicked Gui.ViewProviderDocumentObject RobWorld.ViewObject.
menuA Qt's QMenu to be edited.

Definition at line 626 of file RobWorld.py.

626  def setupContextMenu(self, vp, menu):
627  menu.clear()
628 

◆ updateData()

def RobWorld.ViewProviderRobWorldProxy.updateData (   self,
  fp,
  prop 
)

Method called after DocumentObjectGroupPython RobWorld was changed.

This method is used to update Coin3D constructs, if associated properties changed e.g. if the FrameArrowheadRadius changes, all Coin3D cones representing frame arrowheads will change their radius accordingly.

Parameters
fpA DocumentObjectGroupPython RobWorld object.
propA str name of a changed property.

Definition at line 391 of file RobWorld.py.

391  def updateData(self, fp, prop):
392  # Placement changes
393  if prop == "Placement" and hasattr(fp, "Placement"):
394  trans = fp.Placement.Base
395  rot = fp.Placement.Rotation
396  self.tf_object2world.translation.setValue((trans.x, trans.y,
397  trans.z))
398  self.tf_object2world.rotation.setValue(rot.Q)
399 
400  # Frame changes
401  elif prop == "ShowFrame" and hasattr(fp, "ShowFrame"):
402  if fp.ShowFrame:
403  self.frame.whichChild.setValue(coin.SO_SWITCH_ALL)
404  else:
405  self.frame.whichChild.setValue(coin.SO_SWITCH_NONE)
406 
407  elif prop == "FrameTransparency" and hasattr(fp, "FrameTransparency"):
408  self.frame_color_x.orderedRGBA.\
409  setValue(0xff0000ff - (0xff*fp.FrameTransparency)//100)
410  self.frame_color_y.orderedRGBA.\
411  setValue(0x00ff00ff - (0xff*fp.FrameTransparency)//100)
412  self.frame_color_z.orderedRGBA.\
413  setValue(0x0000ffff - (0xff*fp.FrameTransparency)//100)
414 
415  elif prop == "ShaftLength" and hasattr(fp, "ShaftLength"):
416  self.frame_shaft.vertexProperty.getValue().vertex.\
417  set1Value(1, 0, fp.ShaftLength, 0)
418  if hasattr(fp, "FrameArrowheadLength"):
419  self.frame_arrowhead_translation.translation.setValue(
420  0, fp.ShaftLength + fp.FrameArrowheadLength/2, 0)
421  if not fp.ShowFrameArrowheads and hasattr(fp, "DistanceToAxis"):
422  self.label_translations[0].translation.setValue(
423  0, fp.ShaftLength + fp.DistanceToAxis, 0)
424 
425  elif prop == "FrameArrowheadLength" and \
426  hasattr(fp, "FrameArrowheadLength"):
427  self.frame_arrowhead_cone.height.setValue(fp.FrameArrowheadLength)
428  if hasattr(fp, "ShaftLength"):
429  self.frame_arrowhead_translation.translation.setValue(
430  0, fp.ShaftLength + fp.FrameArrowheadLength/2, 0)
431  if fp.ShowFrameArrowheads and hasattr(fp, "DistanceToAxis"):
432  self.label_translations[0].translation.setValue(
433  0, fp.FrameArrowheadLength/2 + fp.DistanceToAxis, 0)
434 
435  elif prop == "ShaftWidth" and hasattr(fp, "ShaftWidth"):
436  self.frame_drawstyle.lineWidth.setValue(fp.ShaftWidth)
437 
438  elif prop == "FrameArrowheadRadius" and \
439  hasattr(fp, "FrameArrowheadRadius"):
440  self.frame_arrowhead_cone.bottomRadius.setValue(
441  fp.FrameArrowheadRadius)
442 
443  elif prop == "ShowFrameArrowheads" and \
444  hasattr(fp, "ShowFrameArrowheads"):
445  if fp.ShowFrameArrowheads:
446  self.frame_arrowhead.whichChild.setValue(coin.SO_SWITCH_ALL)
447  if hasattr(fp, "FrameArrowheadLength") and \
448  hasattr(fp, "DistanceToAxis"):
449  self.label_translations[0].translation.setValue(
450  0, fp.FrameArrowheadLength/2 + fp.DistanceToAxis, 0)
451  else:
452  self.frame_arrowhead.whichChild.setValue(coin.SO_SWITCH_NONE)
453  if hasattr(fp, "ShaftLength") and \
454  hasattr(fp, "DistanceToAxis"):
455  self.label_translations[0].translation.setValue(
456  0, fp.ShaftLength + fp.DistanceToAxis, 0)
457 
458  elif prop == "ShowFrameLabels" and hasattr(fp, "ShowFrameLabels"):
459  for label in self.labels[:3]:
460  if fp.ShowFrameLabels:
461  label.whichChild.setValue(coin.SO_SWITCH_ALL)
462  else:
463  label.whichChild.setValue(coin.SO_SWITCH_NONE)
464 
465  # Changes to the labels
466  elif prop == "Subscription" and hasattr(fp, "Subscription"):
467  for l in self.label_texts:
468  l.string.setValues(2, 1, [fp.Subscription])
469 
470  elif prop == "Superscription" and hasattr(fp, "Superscription"):
471  for l in self.label_texts:
472  l.string.setValues(0, 1, [fp.Superscription])
473 
474  elif prop == "FontFamily" and hasattr(fp, "FontFamily"):
475  if fp.FontFamily == "SERIF":
476  self.font.family.setValue(self.font.SERIF)
477  if fp.FontFamily == "SANS":
478  self.font.family.setValue(self.font.SANS)
479  if fp.FontFamily == "TYPEWRITER":
480  self.font.family.setValue(self.font.TYPEWRITER)
481 
482  elif prop == "FontStyle" and hasattr(fp, "FontStyle"):
483  if fp.FontStyle == "NONE":
484  self.font.style.setValue(self.font.NONE)
485  if fp.FontStyle == "BOLD":
486  self.font.style.setValue(self.font.BOLD)
487  if fp.FontStyle == "ITALIC":
488  self.font.style.setValue(self.font.ITALIC)
489  if fp.FontStyle == "BOLD ITALIC":
490  self.font.style.setValue(self.font.BOLD | self.font.ITALIC)
491 
492  elif prop == "FontSize" and hasattr(fp, "FontSize"):
493  self.font.size.setValue(fp.FontSize)
494 
495  elif prop == "DistanceToAxis" and hasattr(fp, "DistanceToAxis") and \
496  hasattr(fp, "ShowFrameArrowheads"):
497  if fp.ShowFrameArrowheads and hasattr(fp, "FrameArrowheadLength"):
498  self.label_translations[0].translation.setValue(
499  0, fp.FrameArrowheadLength/2 + fp.DistanceToAxis, 0)
500  elif hasattr(fp, "ShaftLength"):
501  self.label_translations[0].translation.setValue(
502  0, fp.ShaftLength + fp.DistanceToAxis, 0)
503 

Member Data Documentation

◆ font

RobWorld.ViewProviderRobWorldProxy.font

A SoFontStyle font for axes labels.

Definition at line 363 of file RobWorld.py.

◆ fp

RobWorld.ViewProviderRobWorldProxy.fp = None
static

A RobWorld object.

Definition at line 331 of file RobWorld.py.

◆ frame

RobWorld.ViewProviderRobWorldProxy.frame

A SoSeparator with a coordinate frame made from 3 RGB arrows.

Definition at line 368 of file RobWorld.py.

◆ frame_arrowhead

RobWorld.ViewProviderRobWorldProxy.frame_arrowhead

A SoSwitch translated cone for frame axes.

Definition at line 690 of file RobWorld.py.

◆ frame_arrowhead_cone

RobWorld.ViewProviderRobWorldProxy.frame_arrowhead_cone

A SoCone arrowhead cone for frame axes.

Definition at line 689 of file RobWorld.py.

◆ frame_arrowhead_translation

RobWorld.ViewProviderRobWorldProxy.frame_arrowhead_translation

A SoTranslation moving frame arrowheads.

Definition at line 688 of file RobWorld.py.

◆ frame_color_x

RobWorld.ViewProviderRobWorldProxy.frame_color_x

A SoPackedColor red color for an X axis.

Definition at line 704 of file RobWorld.py.

◆ frame_color_y

RobWorld.ViewProviderRobWorldProxy.frame_color_y

A SoPackedColor green color for an Y axis.

Definition at line 705 of file RobWorld.py.

◆ frame_color_z

RobWorld.ViewProviderRobWorldProxy.frame_color_z

A SoPackedColor blue color for an Z axis.

Definition at line 706 of file RobWorld.py.

◆ frame_drawstyle

RobWorld.ViewProviderRobWorldProxy.frame_drawstyle

A SoDrawStyle controlling frame axes shaft line width.

Definition at line 728 of file RobWorld.py.

◆ frame_shaft

RobWorld.ViewProviderRobWorldProxy.frame_shaft

A SoLineSet shaft for frame axes.

Definition at line 681 of file RobWorld.py.

◆ label_texts

RobWorld.ViewProviderRobWorldProxy.label_texts

A list of SoText2s labels denoting all axes and an origin.

Definition at line 641 of file RobWorld.py.

◆ label_translations

RobWorld.ViewProviderRobWorldProxy.label_translations

A list of SoTranslations moving labels.

Definition at line 642 of file RobWorld.py.

◆ labels

RobWorld.ViewProviderRobWorldProxy.labels

A list of SoSwitches containing colored translated labels.

Definition at line 647 of file RobWorld.py.

◆ panel

RobWorld.ViewProviderRobWorldProxy.panel = None
static

A RobWorldPanel if one is active or None.

Definition at line 330 of file RobWorld.py.

◆ tf_object2world

RobWorld.ViewProviderRobWorldProxy.tf_object2world

A SoTransform transformation from object to world frame.

Definition at line 360 of file RobWorld.py.

◆ visualisations

RobWorld.ViewProviderRobWorldProxy.visualisations

A SoSwitch with all visualisations (frame & rotation axis).

Definition at line 371 of file RobWorld.py.


The documentation for this class was generated from the following file: