2 Analyze is a script to access the plugins which analyze a gcode file.
6 from __future__ import absolute_import
8 from fabmetheus_utilities import archive
9 from fabmetheus_utilities import settings
10 from skeinforge_application.skeinforge_utilities import skeinforge_polyfile
11 from skeinforge_application.skeinforge_utilities import skeinforge_profile
16 __author__ = 'Enrique Perez (perez_enrique@yahoo.com)'
17 __date__ = '$Date: 2008/21/04 $'
18 __license__ = 'GNU Affero General Public License http://www.gnu.org/licenses/agpl.html'
21 def getNewRepository():
23 return AnalyzeRepository()
25 def getPluginFileNames():
26 "Get analyze plugin fileNames."
27 return archive.getPluginFileNamesFromDirectoryPath( getPluginsDirectoryPath() )
29 def getPluginsDirectoryPath():
30 "Get the plugins directory path."
31 return archive.getAnalyzePluginsDirectoryPath()
33 def writeOutput(fileName, fileNamePenultimate, fileNameSuffix, filePenultimateWritten, gcodeText=''):
34 "Analyze a gcode file."
35 gcodeText = archive.getTextIfEmpty(fileName, gcodeText)
36 pluginFileNames = getPluginFileNames()
38 for pluginFileName in pluginFileNames:
39 analyzePluginsDirectoryPath = getPluginsDirectoryPath()
40 pluginModule = archive.getModuleWithDirectoryPath( analyzePluginsDirectoryPath, pluginFileName )
41 if pluginModule != None:
43 newWindow = pluginModule.writeOutput(fileName, fileNamePenultimate, fileNameSuffix,
44 filePenultimateWritten, gcodeText )
48 print('Warning, the tool %s could not analyze the output.' % pluginFileName )
49 print('Exception traceback in writeOutput in skeinforge_analyze:')
50 traceback.print_exc(file=sys.stdout)
54 class AnalyzeRepository(object):
55 "A class to handle the analyze settings."
57 "Set the default settings, execute title & settings fileName."
58 skeinforge_profile.addListsToCraftTypeRepository('skeinforge_application.skeinforge_utilities.skeinforge_analyze.html', self)
59 self.fileNameInput = settings.FileNameInput().getFromFileName( [ ('Gcode text files', '*.gcode') ], 'Open File for Analyze', self, '')
60 importantFileNames = ['skeiniso', 'skeinlayer', 'statistic']
61 settings.getRadioPluginsAddPluginFrame( getPluginsDirectoryPath(), importantFileNames, getPluginFileNames(), self )
62 self.executeTitle = 'Analyze'
65 "Analyze button has been clicked."
66 fileNames = skeinforge_polyfile.getFileOrDirectoryTypesUnmodifiedGcode( self.fileNameInput.value, [], self.fileNameInput.wasCancelled )
67 for fileName in fileNames:
68 writeOutput( fileName, fileName )
72 "Write analyze output."
73 fileName = ' '.join(sys.argv[1 :])
74 settings.startMainLoopFromWindow(writeOutput(fileName, fileName))
77 if __name__ == "__main__":