Procházet zdrojové kódy

Add cache management allowing users to prevent storing of files

Andrej Studen před 7 roky
rodič
revize
f4fb2bee13

+ 8 - 1
labkeySlicerPythonExtension/labkeySlicerPythonExtension.py

@@ -113,6 +113,11 @@ class labkeySlicerPythonExtensionWidget(ScriptedLoadableModuleWidget):
 
     fileDialogFormLayout.addRow("File type :",self.fileTypeSelector)
 
+    self.keepCachedFileCheckBox=qt.QCheckBox("keep cached file")
+    self.keepCachedFileCheckBox.toolTip="Toggle local storage of labkey files"
+    self.keepCachedFileCheckBox.setChecked(True)
+    fileDialogFormLayout.addRow("Manage cache :",self.keepCachedFileCheckBox)
+
     loadFileButton=qt.QPushButton("Load file")
     loadFileButton.toolTip="Load file"
     loadFileButton.clicked.connect(self.onLoadFileButtonClicked)
@@ -259,8 +264,10 @@ class labkeySlicerPythonExtensionWidget(ScriptedLoadableModuleWidget):
         self.selectedFile.setText(self.currentRemoteDir)
 
   def onLoadFileButtonClicked(self):
+      properties={}
+      properties['keepCachedFile']=self.keepCachedFileCheckBox.isChecked()
       self.network.loadNodeFromFile(self.selectedFile.text,
-            self.fileTypeSelector.currentText)
+            self.fileTypeSelector.currentText, properties)
 
 #
 # labkeySlicerPythonExtensionLogic

+ 7 - 0
labkeySlicerPythonExtension/slicerNetwork.py

@@ -86,6 +86,13 @@ class labkeyURIHandler(slicer.vtkURIHandler):
         #this is the only relevant part - file must be downloaded to cache
         localPath=self.GetFile(filename)
         slicer.util.loadNodeFromFile(localPath,filetype,properties,returnNode)
+        #remove retrieved file
+        try:
+            if not(properties['keepCachedFile']) :
+                os.remove(localPath)
+        except:
+            pass
+        
 
     def loadVolume(self,filename, properties={}, returnNode=False):
         filetype = 'VolumeFile'