2 Analyze is a script to access the plugins which analyze a gcode file.
6 from __future__ import absolute_import
7 #Init has to be imported first because it has code to workaround the python bug where relative imports don't work if the module is imported as a main module.
10 from fabmetheus_utilities import archive
11 from fabmetheus_utilities import gcodec
12 from fabmetheus_utilities import settings
13 from skeinforge_application.skeinforge_utilities import skeinforge_polyfile
14 from skeinforge_application.skeinforge_utilities import skeinforge_profile
20 __author__ = 'Enrique Perez (perez_enrique@yahoo.com)'
21 __date__ = '$Date: 2008/21/04 $'
22 __license__ = 'GNU Affero General Public License http://www.gnu.org/licenses/agpl.html'
25 def getNewRepository():
27 return AnalyzeRepository()
29 def getPluginFileNames():
30 "Get analyze plugin fileNames."
31 return archive.getPluginFileNamesFromDirectoryPath( getPluginsDirectoryPath() )
33 def getPluginsDirectoryPath():
34 "Get the plugins directory path."
35 return archive.getAnalyzePluginsDirectoryPath()
37 def writeOutput(fileName, fileNamePenultimate, fileNameSuffix, filePenultimateWritten, gcodeText=''):
38 "Analyze a gcode file."
39 gcodeText = archive.getTextIfEmpty(fileName, gcodeText)
40 pluginFileNames = getPluginFileNames()
42 for pluginFileName in pluginFileNames:
43 analyzePluginsDirectoryPath = getPluginsDirectoryPath()
44 pluginModule = archive.getModuleWithDirectoryPath( analyzePluginsDirectoryPath, pluginFileName )
45 if pluginModule != None:
47 newWindow = pluginModule.writeOutput(fileName, fileNamePenultimate, fileNameSuffix,
48 filePenultimateWritten, gcodeText )
52 print('Warning, the tool %s could not analyze the output.' % pluginFileName )
53 print('Exception traceback in writeOutput in skeinforge_analyze:')
54 traceback.print_exc(file=sys.stdout)
58 class AnalyzeRepository:
59 "A class to handle the analyze settings."
61 "Set the default settings, execute title & settings fileName."
62 skeinforge_profile.addListsToCraftTypeRepository('skeinforge_application.skeinforge_utilities.skeinforge_analyze.html', self)
63 self.fileNameInput = settings.FileNameInput().getFromFileName( [ ('Gcode text files', '*.gcode') ], 'Open File for Analyze', self, '')
64 importantFileNames = ['skeiniso', 'skeinlayer', 'statistic']
65 settings.getRadioPluginsAddPluginFrame( getPluginsDirectoryPath(), importantFileNames, getPluginFileNames(), self )
66 self.executeTitle = 'Analyze'
69 "Analyze button has been clicked."
70 fileNames = skeinforge_polyfile.getFileOrDirectoryTypesUnmodifiedGcode( self.fileNameInput.value, [], self.fileNameInput.wasCancelled )
71 for fileName in fileNames:
72 writeOutput( fileName, fileName )
76 "Write analyze output."
77 fileName = ' '.join(sys.argv[1 :])
78 settings.startMainLoopFromWindow(writeOutput(fileName, fileName))
81 if __name__ == "__main__":