def delete(self): "Delete the selection of a listbox setting." self.profileListboxSetting.setToDisplay() self.profileListboxSetting.listSetting.setValueToFolders() if self.profileListboxSetting.value not in self.profileListboxSetting.listSetting.value: return lastSelectionIndex = 0 currentSelectionTuple = self.profileListboxSetting.listbox.curselection() if len(currentSelectionTuple) > 0: lastSelectionIndex = int(currentSelectionTuple[0]) else: print('No profile is selected, so no profile will be deleted.') return craftTypeName = self.profileListboxSetting.listSetting.craftTypeName settings.deleteDirectory(archive.getProfilesPath(craftTypeName), self.profileListboxSetting.value) settings.deleteDirectory(settings.getProfilesDirectoryInAboveDirectory(craftTypeName), self.profileListboxSetting.value) self.profileListboxSetting.listSetting.setValueToFolders() if len(self.profileListboxSetting.listSetting.value) < 1: defaultSettingsDirectory = archive.getProfilesPath(os.path.join(craftTypeName, self.profileListboxSetting.defaultValue)) archive.makeDirectory(defaultSettingsDirectory) self.profileListboxSetting.listSetting.setValueToFolders() lastSelectionIndex = min(lastSelectionIndex, len(self.profileListboxSetting.listSetting.value) - 1) self.profileListboxSetting.value = self.profileListboxSetting.listSetting.value[lastSelectionIndex] self.profileListboxSetting.setStateToValue() self.no()
def delete(self): "Delete the selection of a listbox setting." self.profileListboxSetting.setToDisplay() self.profileListboxSetting.listSetting.setValueToFolders() if self.profileListboxSetting.value not in self.profileListboxSetting.listSetting.value: return lastSelectionIndex = 0 currentSelectionTuple = self.profileListboxSetting.listbox.curselection( ) if len(currentSelectionTuple) > 0: lastSelectionIndex = int(currentSelectionTuple[0]) else: print('No profile is selected, so no profile will be deleted.') return craftTypeName = self.profileListboxSetting.listSetting.craftTypeName settings.deleteDirectory(archive.getProfilesPath(craftTypeName), self.profileListboxSetting.value) settings.deleteDirectory( settings.getProfilesDirectoryInAboveDirectory(craftTypeName), self.profileListboxSetting.value) self.profileListboxSetting.listSetting.setValueToFolders() if len(self.profileListboxSetting.listSetting.value) < 1: defaultSettingsDirectory = archive.getProfilesPath( os.path.join(craftTypeName, self.profileListboxSetting.defaultValue)) archive.makeDirectory(defaultSettingsDirectory) self.profileListboxSetting.listSetting.setValueToFolders() lastSelectionIndex = min( lastSelectionIndex, len(self.profileListboxSetting.listSetting.value) - 1) self.profileListboxSetting.value = self.profileListboxSetting.listSetting.value[ lastSelectionIndex] self.profileListboxSetting.setStateToValue() self.no()
def getSelectedFolder(self): "Get the selected folder." settingProfileSubfolder = settings.getSubfolderWithBasename( self.value, archive.getProfilesPath( self.listSetting.craftTypeName ) ) if settingProfileSubfolder != None: return settingProfileSubfolder toolProfileSubfolder = settings.getSubfolderWithBasename( self.value, settings.getProfilesDirectoryInAboveDirectory( self.listSetting.craftTypeName ) ) return toolProfileSubfolder
def addListsSetCraftProfile(craftSequence, defaultProfile, repository, fileNameHelp): "Set the craft profile repository." settings.addListsToRepository(fileNameHelp, repository) repository.craftSequenceLabel = settings.LabelDisplay().getFromName( 'Craft Sequence: ', repository) craftToolStrings = [] for craftTool in craftSequence[:-1]: craftToolStrings.append( settings.getEachWordCapitalized(craftTool) + '->') craftToolStrings.append(settings.getEachWordCapitalized(craftSequence[-1])) for craftToolStringIndex in xrange(0, len(craftToolStrings), 5): craftLine = ' '.join( craftToolStrings[craftToolStringIndex:craftToolStringIndex + 5]) settings.LabelDisplay().getFromName(craftLine, repository) settings.LabelDisplay().getFromName('', repository) repository.profileList = ProfileList().getFromName('Profile List:', repository) repository.profileListbox = ProfileListboxSetting().getFromListSetting( repository.profileList, 'Profile Selection:', repository, defaultProfile) repository.addListboxSelection = AddProfile( ).getFromProfileListboxSettingRepository(repository.profileListbox, repository) repository.deleteListboxSelection = DeleteProfile( ).getFromProfileListboxSettingRepository(repository.profileListbox, repository) directoryName = archive.getProfilesPath() archive.makeDirectory(directoryName) repository.windowPosition.value = '0+400'
def addListsSetCraftProfile(craftSequence, defaultProfile, repository, fileNameHelp): "Set the craft profile repository." settings.addListsToRepository(fileNameHelp, repository) repository.craftSequenceLabel = settings.LabelDisplay().getFromName("Craft Sequence: ", repository) craftToolStrings = [] for craftTool in craftSequence[:-1]: craftToolStrings.append(settings.getEachWordCapitalized(craftTool) + "->") craftToolStrings.append(settings.getEachWordCapitalized(craftSequence[-1])) for craftToolStringIndex in xrange(0, len(craftToolStrings), 5): craftLine = " ".join(craftToolStrings[craftToolStringIndex : craftToolStringIndex + 5]) settings.LabelDisplay().getFromName(craftLine, repository) settings.LabelDisplay().getFromName("", repository) repository.profileList = ProfileList().getFromName("Profile List:", repository) repository.profileListbox = ProfileListboxSetting().getFromListSetting( repository.profileList, "Profile Selection:", repository, defaultProfile ) repository.addListboxSelection = AddProfile().getFromProfileListboxSettingRepository( repository.profileListbox, repository ) repository.deleteListboxSelection = DeleteProfile().getFromProfileListboxSettingRepository( repository.profileListbox, repository ) directoryName = archive.getProfilesPath() archive.makeDirectory(directoryName) repository.windowPosition.value = "0+400"
def getSelectedFolder(self): "Get the selected folder." settingProfileSubfolder = settings.getSubfolderWithBasename( self.value, archive.getProfilesPath( self.listSetting.craftTypeName ) ) if settingProfileSubfolder is not None: return settingProfileSubfolder toolProfileSubfolder = settings.getSubfolderWithBasename( self.value, settings.getProfilesDirectoryInAboveDirectory( self.listSetting.craftTypeName ) ) return toolProfileSubfolder
def setValueToFolders(self): "Set the value to the folders in the profiles directories." self.value = settings.getFolders( archive.getProfilesPath( self.craftTypeName ) ) defaultFolders = settings.getFolders( settings.getProfilesDirectoryInAboveDirectory( self.craftTypeName ) ) for defaultFolder in defaultFolders: if defaultFolder not in self.value: self.value.append( defaultFolder ) self.value.sort()
def __init__(self): "Set the default entities, execute title & repository fileName." settings.addListsToRepository('skeinforge_application.skeinforge_utilities.skeinforge_profile.html', '', self ) importantFileNames = ['extrusion'] self.craftRadios = settings.getRadioPluginsAddPluginFrame( getPluginsDirectoryPath(), importantFileNames, getPluginFileNames(), self ) ProfilePluginRadioButtonsSaveListener().getFromRadioPlugins( self.craftRadios, self ) for craftRadio in self.craftRadios: craftRadio.updateFunction = self.updateRelay directoryName = archive.getProfilesPath() gcodec.makeDirectory(directoryName) self.windowPosition.value = '0+200'
def __init__(self): "Set the default entities, execute title & repository fileName." settings.addListsToRepository('skeinforge_application.skeinforge_utilities.skeinforge_profile.html', self) importantFileNames = ['extrusion'] self.craftRadios = settings.getRadioPluginsAddPluginFrame( getPluginsDirectoryPath(), importantFileNames, getPluginFileNames(), self ) ProfilePluginRadioButtonsSaveListener().getFromRadioPlugins( self.craftRadios, self ) for craftRadio in self.craftRadios: craftRadio.updateFunction = self.updateRelay directoryName = archive.getProfilesPath() archive.makeDirectory(directoryName) self.windowPosition.value = '0+200'
def addSelection(self): "Add the selection of a listbox setting." entryText = self.entry.get() if entryText == '': print('To add to the profiles, enter the material name.') return self.profileListboxSetting.listSetting.setValueToFolders() if entryText in self.profileListboxSetting.listSetting.value: print('There is already a profile by the name of %s, so no profile will be added.' % entryText ) return self.entry.delete( 0, settings.Tkinter.END ) craftTypeProfileDirectory = archive.getProfilesPath( self.profileListboxSetting.listSetting.craftTypeName ) destinationDirectory = os.path.join( craftTypeProfileDirectory, entryText ) shutil.copytree( self.profileListboxSetting.getSelectedFolder(), destinationDirectory ) self.profileListboxSetting.listSetting.setValueToFolders() self.profileListboxSetting.value = entryText self.profileListboxSetting.setStateToValue()
def writeOutput(fileName, shouldAnalyze=True): 'Export a gcode linear move file.' if fileName == '': return None repository = ExportRepository() settings.getReadRepository(repository) startTime = time.time() print('File ' + archive.getSummarizedFileName(fileName) + ' is being chain exported.') fileNameSuffix = fileName[:fileName.rfind('.')] if repository.addExportSuffix.value: fileNameSuffix += '_export' if (repository.profileFileExtension.value == True): profileName = skeinforge_profile.getProfileName( skeinforge_profile.getCraftTypeName()) if profileName: fileNameSuffix += '.' + string.replace(profileName, ' ', '_') if (repository.descriptiveExtension.value == True): fileNameSuffix += descriptiveExtension() if (repository.timestampExtension.value == True): fileNameSuffix += '.' + strftime("%Y%m%d_%H%M%S") if (repository.archiveProfile.value == True): profileName = skeinforge_profile.getProfileName( skeinforge_profile.getCraftTypeName()) if profileName: profileZipFileName = fileNameSuffix + '.zip' zipper( archive.getProfilesPath( skeinforge_profile.getProfileDirectory()), profileName + '/', profileZipFileName) print('Profile archived to ' + profileZipFileName) if (repository.exportProfileAsCsv.value == True): csvExportFilename = fileNameSuffix + '.csv' archive.writeFileText(csvExportFilename, Condenser().readSettings()) fileNameSuffix += '.' + repository.fileExtension.value gcodeText = gcodec.getGcodeFileText(fileName, '') procedures = skeinforge_craft.getProcedures('export', gcodeText) gcodeText = skeinforge_craft.getChainTextFromProcedures( fileName, procedures[:-1], gcodeText) if gcodeText == '': return None if repository.savePenultimateGcode.value: penultimateFileName = fileName[:fileName. rfind('.')] + '_penultimate.gcode' archive.writeFileText(penultimateFileName, gcodeText) print('The penultimate file is saved as ' + archive.getSummarizedFileName(penultimateFileName)) exportGcode = getCraftedTextFromText(gcodeText, repository) window = None if shouldAnalyze: window = skeinforge_analyze.writeOutput(fileName, fileNameSuffix, gcodeText) replaceableExportGcode = None selectedPluginModule = getSelectedPluginModule(repository.exportPlugins) if selectedPluginModule == None: replaceableExportGcode = exportGcode else: if selectedPluginModule.globalIsReplaceable: replaceableExportGcode = selectedPluginModule.getOutput( exportGcode) else: selectedPluginModule.writeOutput(fileNameSuffix, exportGcode) if replaceableExportGcode != None: replaceableExportGcode = getReplaceableExportGcode( repository.nameOfReplaceFile.value, replaceableExportGcode) archive.writeFileText(fileNameSuffix, replaceableExportGcode) print('The exported file is saved as ' + archive.getSummarizedFileName(fileNameSuffix)) if repository.alsoSendOutputTo.value != '': if replaceableExportGcode == None: replaceableExportGcode = selectedPluginModule.getOutput( exportGcode) sendOutputTo(replaceableExportGcode, repository.alsoSendOutputTo.value) print('It took %s to export the file.' % euclidean.getDurationString(time.time() - startTime)) return window
def writeOutput(fileName, shouldAnalyze=True): """Export a gcode linear move file.""" if fileName == '': return None repository = ExportRepository() settings.getReadRepository(repository) startTime = time.time() print('File ' + archive.getSummarizedFileName(fileName) + ' is being chain exported.') fileNameSuffix = fileName[: fileName.rfind('.')] if repository.addExportSuffix.value: fileNameSuffix += '_export' if repository.profileFileExtension.value: profileName = skeinforge_profile.getProfileName(skeinforge_profile.getCraftTypeName()) if profileName: fileNameSuffix += '.' + string.replace(profileName, ' ', '_') if repository.descriptiveExtension.value: fileNameSuffix += descriptiveExtension() if repository.timestampExtension.value: fileNameSuffix += '.'+strftime("%Y%m%d_%H%M%S") if repository.archiveProfile.value: profileName = skeinforge_profile.getProfileName(skeinforge_profile.getCraftTypeName()) if profileName: profileZipFileName = fileNameSuffix + '.zip' zipper(archive.getProfilesPath(skeinforge_profile.getProfileDirectory()), profileName+'/', profileZipFileName) print('Profile archived to ' + profileZipFileName) if repository.exportProfileAsCsv.value: csvExportFilename = fileNameSuffix + '.csv' archive.writeFileText(csvExportFilename, Condenser().readSettings()) fileNameSuffix += '.' + repository.fileExtension.value gcodeText = gcodec.getGcodeFileText(fileName, '') procedures = skeinforge_craft.getProcedures('export', gcodeText) gcodeText = skeinforge_craft.getChainTextFromProcedures(fileName, procedures[ : - 1 ], gcodeText) if gcodeText == '': return None fileNamePenultimate = fileName[: fileName.rfind('.')] + '_penultimate.gcode' filePenultimateWritten = False if repository.savePenultimateGcode.value: archive.writeFileText(fileNamePenultimate, gcodeText) filePenultimateWritten = True print('The penultimate file is saved as ' + archive.getSummarizedFileName(fileNamePenultimate)) exportGcode = getCraftedTextFromText(gcodeText, repository) window = None if shouldAnalyze: window = skeinforge_analyze.writeOutput(fileName, fileNamePenultimate, fileNameSuffix, filePenultimateWritten, gcodeText) replaceableExportGcode = None selectedPluginModule = getSelectedPluginModule(repository.exportPlugins) if selectedPluginModule is None: replaceableExportGcode = exportGcode else: if selectedPluginModule.globalIsReplaceable: replaceableExportGcode = selectedPluginModule.getOutput(exportGcode) else: selectedPluginModule.writeOutput(fileNameSuffix, exportGcode) if replaceableExportGcode is not None: replaceableExportGcode = getReplaceableExportGcode(repository.nameOfReplaceFile.value, replaceableExportGcode) archive.writeFileText( fileNameSuffix, replaceableExportGcode ) print('The exported file is saved as ' + archive.getSummarizedFileName(fileNameSuffix)) if repository.alsoSendOutputTo.value != '': if replaceableExportGcode is None: replaceableExportGcode = selectedPluginModule.getOutput(exportGcode) sendOutputTo(replaceableExportGcode, repository.alsoSendOutputTo.value) print('It took %s to export the file.' % euclidean.getDurationString(time.time() - startTime)) return window