68 lines
1.7 KiB
Python
68 lines
1.7 KiB
Python
import os
|
|
import FreeCADGui as Gui
|
|
from pivy import coin
|
|
|
|
from .. import settings
|
|
|
|
class BaseViewProvider:
|
|
ICON = None
|
|
TYPE = None
|
|
EXTENSIONS = []
|
|
|
|
save_keys = []
|
|
|
|
def __init__(self, viewprovider):
|
|
self.viewprovider = viewprovider
|
|
self.feature = viewprovider.Object.Proxy.feature
|
|
|
|
self.icon = ''
|
|
|
|
if self.ICON:
|
|
self.icon = os.path.join(settings.ICONPATH, self.ICON)
|
|
|
|
viewprovider.Proxy = self
|
|
|
|
self.setup_extensions()
|
|
|
|
def setup_extensions(self):
|
|
if hasattr(self, 'EXTENSIONS'):
|
|
for ext in self.EXTENSIONS:
|
|
self.feature.addExtension(ext)
|
|
|
|
def attach(self, vobj):
|
|
self.standard = coin.SoGroup()
|
|
vobj.addDisplayMode(self.standard, "Standard")
|
|
|
|
def doubleClicked(self, vobj):
|
|
Gui.activateWorkbench("KiConnect")
|
|
Gui.Selection.clearSelection()
|
|
|
|
def getIcon(self):
|
|
return self.icon
|
|
|
|
def getDisplayModes(self,obj):
|
|
'''Return a list of display modes.'''
|
|
return [ 'Standard' ]
|
|
|
|
def getDefaultDisplayMode(self):
|
|
'''Return the name of the default display mode. It must be defined in getDisplayModes.'''
|
|
return 'Standard'
|
|
|
|
def dumps(self):
|
|
data = [ getattr(self, 'icon') ]
|
|
|
|
if len(self.save_keys) > 0:
|
|
for key in self.save_keys:
|
|
try:
|
|
data.append(getattr(self, key))
|
|
except Exception as e:
|
|
#XXX logging
|
|
print(e)
|
|
|
|
return tuple(data)
|
|
|
|
def loads(self, state):
|
|
self.icon = state[0]
|
|
|
|
for idx, key in enumerate(self.save_keys):
|
|
setattr(self, key, state[idx + 1])
|