def _initSample(self, varname=None, outside=USER_DEFINED):
        if self._sample==None:
            self._sample = Sample()
            theNet().add(self._sample)
#            connect( Import2DModule.geoConnectionPoint(self), ConnectionPoint(self._sample, 'GridIn') )
            connect( ParentClass2D.geoConnectionPoint(self), ConnectionPoint(self._sample, 'GridIn') )

            self._showgrid = ShowGrid()
            theNet().add(self._showgrid)
            connect( ConnectionPoint(self._sample, 'GridOut'), ConnectionPoint(self._showgrid, 'meshIn') )

            sample = self._sample
            if not ParentClass2D.executeOct(self) and not ParentClass2D.executeData(self, varname):
                saveExecute(sample)


        # reconnect Sample
#        print "RECONNECTING 2D SAMPLE"
        theNet().disconnectAllFromModulePort(self._sample, 'GridIn')
        connect( ParentClass2D.geoConnectionPoint(self), ConnectionPoint(self._sample, 'GridIn') )
    def _initSample( self, varname, outside ):
        if not (varname,outside) in self._sample:
            self._sample[(varname,outside)] = Sample()
            theNet().add(self._sample[(varname,outside)])
            self._bbox[(varname,USER_DEFINED)] = Box()
            self._bbox[(varname,MAX_FLT)] = Box()

#            connect( Import3DModule.geoConnectionPoint(self), ConnectionPoint(self._sample[(varname,outside)], 'GridIn') )
#            connect( Import3DModule.dataConnectionPoint(self, varname), ConnectionPoint(self._sample[(varname,outside)], 'DataIn') )
            connect( ParentClass3D.geoConnectionPoint(self), ConnectionPoint(self._sample[(varname,outside)], 'GridIn') )
            connect( ParentClass3D.dataConnectionPoint(self, varname), ConnectionPoint(self._sample[(varname,outside)], 'DataIn') )

            sample = self._sample[(varname,outside)]
            sample.set_outside(outside)
            if not ParentClass3D.executeOct(self) and not ParentClass3D.executeData(self, varname):
                saveExecute(sample)

        # reconnect Sample
#        print "RECONNECTING 3D SAMPLE"
        theNet().disconnectAllFromModulePort(self._sample[(varname,outside)], 'GridIn')
        theNet().disconnectAllFromModulePort(self._sample[(varname,outside)], 'DataIn')
        connect( ParentClass3D.geoConnectionPoint(self), ConnectionPoint(self._sample[(varname,outside)], 'GridIn') )
        connect( ParentClass3D.dataConnectionPoint(self, varname), ConnectionPoint(self._sample[(varname,outside)], 'DataIn') )
class ImportSample2DModule(ParentClass2D):
    def __init__(self, partcase):
#        Import2DModule.__init__(self, partcase)
        ParentClass2D.__init__(self, partcase)
        self._sample = None
        self._showgrid = None

    def _initSample(self, varname=None, outside=USER_DEFINED):
        if self._sample==None:
            self._sample = Sample()
            theNet().add(self._sample)
#            connect( Import2DModule.geoConnectionPoint(self), ConnectionPoint(self._sample, 'GridIn') )
            connect( ParentClass2D.geoConnectionPoint(self), ConnectionPoint(self._sample, 'GridIn') )

            self._showgrid = ShowGrid()
            theNet().add(self._showgrid)
            connect( ConnectionPoint(self._sample, 'GridOut'), ConnectionPoint(self._showgrid, 'meshIn') )

            sample = self._sample
            if not ParentClass2D.executeOct(self) and not ParentClass2D.executeData(self, varname):
                saveExecute(sample)


        # reconnect Sample
#        print "RECONNECTING 2D SAMPLE"
        theNet().disconnectAllFromModulePort(self._sample, 'GridIn')
        connect( ParentClass2D.geoConnectionPoint(self), ConnectionPoint(self._sample, 'GridIn') )


    def _updateSample( self, dim, varname=None, bbox=None, outside=USER_DEFINED ):
    #def _updateSample( self, dim ):
        self._initSample(varname, outside)
        #update dimension
        self._sample.set_isize(1)
        self._sample.set_user_defined_isize(dim)
        self._sample.set_jsize(1)
        self._sample.set_user_defined_jsize(dim)
        self._sample.set_ksize(1)
        self._sample.set_user_defined_ksize(dim)

    def geoSampleConnectionPoint(self, varname=None, outside=USER_DEFINED):
        if not covise.coConfigIsOn("vr-prepare.UseSamplingModules", False):
            return

        self._initSample(varname, outside)
        return ConnectionPoint(self._showgrid, 'points')

    def dataSampleConnectionPoint(self, varname=None, outside=USER_DEFINED):
        if not covise.coConfigIsOn("vr-prepare.UseSamplingModules", False):
            return

        self._initSample(varname, outside)
        return ConnectionPoint(self._sample, 'DataOut')

    def executeSampleGeo( self, dim ):
        if not covise.coConfigIsOn("vr-prepare.UseSamplingModules", False):
            return

        self._updateSample( dim )
#        if not Import2DModule.executeGeo(self):
        if not ParentClass2D.executeGeo(self):
            saveExecute(self._sample)

    def executeSampleData(self, varname, bbox=None, outside=USER_DEFINED):
        if not covise.coConfigIsOn("vr-prepare.UseSamplingModules", False):
            return

        self._updateSample(2, varname, bbox, outside)
        sample = self._sample

        saveExecute(sample)

    def delete(self):
        if hasattr(self, "_sample"):
            if self._sample: theNet().remove(self._sample)
        ParentClass2D.delete(self)