Server.ViewProviderServerProxy Class Reference

Proxy class for a Gui.ViewProviderDocumentObject Server.ViewObject. More...

Inheritance diagram for Server.ViewProviderServerProxy:

Public Member Functions

def __init__ (self, vp)
 Initialization method for ViewProviderServerProxy. More...
 
def onDelete (self, vp, subelements)
 Method called when FeaturePython Server is about to be deleted. More...
 
def doubleClicked (self, vp)
 Method called when FeaturePython Server 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 Server. More...
 
def getIcon (self)
 Method used to get a path to an icon which will appear in the tree view. More...
 
def setProperties (self, vp)
 Method to hide properties and select appropriate icon to show it the Tree View. More...
 

Detailed Description

Proxy class for a Gui.ViewProviderDocumentObject Server.ViewObject.

A ViewProviderServerProxy instance changes a FeaturePython Server's icon in the Tree view to show if Server is Running or not. It also closes/starts ServerProxy's cmd_server if the FeaturePython is double-clicked, deleted or chosen to be connected/disconnected through its context view. The context view is also provided by this class.

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

a = FreeCAD.ActiveDocument.addObject("Part::FeaturePython", "Server")
ViewProviderServerProxy(a.ViewObject)

Definition at line 236 of file Server.py.

Constructor & Destructor Documentation

◆ __init__()

def Server.ViewProviderServerProxy.__init__ (   self,
  vp 
)

Initialization method for ViewProviderServerProxy.

A class instance is created and made a Proxy for a generic Gui.ViewProviderDocumentObject Server.ViewObject. This method selects appropriate icon for FeaturePython Server and hides unnecessary unused View properties.

Parameters
vpA barebone Gui.ViewProviderDocumentObject Server.ViewObject.

Definition at line 257 of file Server.py.

257  def __init__(self, vp):
258  self.setProperties(vp)
259  vp.Proxy = self
260 

Member Function Documentation

◆ doubleClicked()

def Server.ViewProviderServerProxy.doubleClicked (   self,
  vp 
)

Method called when FeaturePython Server is double-clicked in the Tree View.

This methods tries to start ServerProxy's cmd_server if it wasn't running and closes it in the opposite case. It shows warning dialogs if something failed. If action is successful, then the icon in the Tree View is changed (You may need to recompute the document to see the change).

Parameters
vpA double-clicked Gui.ViewProviderDocumentObject Server.ViewObject.
Returns
True to specify that it was implemented and executed.

Definition at line 295 of file Server.py.

295  def doubleClicked(self, vp):
296  if not vp.Object.Running:
297  vp.Object.Proxy.cmd_server = com.startServer(vp.Object.Address,
298  vp.Object.Port)
299  if isinstance(vp.Object.Proxy.cmd_server, int):
300  if vp.Object.Proxy.cmd_server == \
301  com.SERVER_ERROR_INVALID_ADDRESS:
302  QMessageBox.warning(None, 'Error while starting server',
303  "The address was not in supported "
304  + "format.")
305  elif vp.Object.Proxy.cmd_server == \
306  com.SERVER_ERROR_PORT_OCCUPIED:
307  QMessageBox.warning(None, 'Error while starting server',
308  "The port requested is already "
309  + "occupied.")
310  else:
311  vp.Object.setEditorMode("Address", 1)
312  vp.Object.setEditorMode("Port", 1)
313  vp.Object.Running = True
314  self._icon = path.join(PATH_TO_ICONS, "ServerRunning.png")
315  elif vp.Object.Running:
316  vp.Object.Proxy.cmd_server.close()
317  vp.Object.setEditorMode("Address", 0)
318  vp.Object.setEditorMode("Port", 0)
319  vp.Object.Running = False
320  self._icon = path.join(PATH_TO_ICONS, "Server.png")
321  return True
322 

◆ getIcon()

def Server.ViewProviderServerProxy.getIcon (   self)

Method used to get a path to an icon which will appear in the tree view.

Returns
A path to the icon stored in _icon.

Definition at line 351 of file Server.py.

351  def getIcon(self):
352  return self._icon
353 

◆ onDelete()

def Server.ViewProviderServerProxy.onDelete (   self,
  vp,
  subelements 
)

Method called when FeaturePython Server is about to be deleted.

This method is used to close ServerProxy's cmd_server as not to leave a Port occupied.

Parameters
vpA Gui.ViewProviderDocumentObject Server.ViewObject being closed.
subelementsAn unused argument from C++ binding.
Returns
True to specify that it was implemented and executed.

Definition at line 274 of file Server.py.

274  def onDelete(self, vp, subelements):
275  if vp.Object.Running:
276  FreeCAD.Console.PrintMessage("Deleting server safely.\n")
277  vp.Object.Proxy.cmd_server.close()
278  return True
279 

◆ setProperties()

def Server.ViewProviderServerProxy.setProperties (   self,
  vp 
)

Method to hide properties and select appropriate icon to show it the Tree View.

This method is called during initialization or document restoration. All unused unnecessary view properties are hidden and icon is chosen in accordance with ServerProxy's Running state.

Parameters
vpA Gui.ViewProviderDocumentObject Server.ViewObject.

Definition at line 364 of file Server.py.

364  def setProperties(self, vp):
365  vp.setEditorMode("AngularDeflection", 2)
366  vp.setEditorMode("BoundingBox", 2)
367  vp.setEditorMode("Deviation", 2)
368  vp.setEditorMode("DisplayMode", 2)
369  vp.setEditorMode("DrawStyle", 2)
370  vp.setEditorMode("Lighting", 2)
371  vp.setEditorMode("LineColor", 2)
372  vp.setEditorMode("LineWidth", 2)
373  vp.setEditorMode("PointColor", 2)
374  vp.setEditorMode("PointSize", 2)
375  vp.setEditorMode("Selectable", 2)
376  vp.setEditorMode("SelectionStyle", 2)
377  vp.setEditorMode("ShapeColor", 2)
378  vp.setEditorMode("Transparency", 2)
379  vp.setEditorMode("Visibility", 2)
380 
381  if vp.Object.Running:
382  self._icon = path.join(PATH_TO_ICONS, "ServerRunning.png")
383  else:
384  self._icon = path.join(PATH_TO_ICONS, "Server.png")
385 
386 

◆ setupContextMenu()

def Server.ViewProviderServerProxy.setupContextMenu (   self,
  vp,
  menu 
)

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

The Transform and Set colors... items are removed from the context menu shown upon right click on FeaturePython Server in the Tree View. The option to Disconnect Server, or Connect Server is added instead.

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

Definition at line 334 of file Server.py.

334  def setupContextMenu(self, vp, menu):
335  menu.clear()
336  if vp.Object.Running:
337  action = menu.addAction("Disconnect Server")
338  action.triggered.connect(lambda f=self.doubleClicked,
339  arg=vp: f(arg))
340  else:
341  action = menu.addAction("Connect Server")
342  action.triggered.connect(lambda f=self.doubleClicked,
343  arg=vp: f(arg))
344 

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