def forwardDeclartions(): "Force some functions to be dynamic" mockRepository = settings.Repository() settings.addListsToRepository(None, None, mockRepository) settings.cancelRepository(mockRepository) settings.getDisplayedDialogFromConstructor(mockRepository) settings.getProfileBaseName(mockRepository) settings.getReadRepository(mockRepository) settings.readSettingsFromText(mockRepository, '') settings.saveRepository(mockRepository) settings.startMainLoopFromConstructor(mockRepository) settings.writeSettings(mockRepository) settings.writeSettingsPrintMessage(mockRepository) settings.StringSetting().getFromValue('', mockRepository, '') settings.StringSetting().getFromValueOnly('', mockRepository, '') settings.StringSetting().getFromValueOnlyAddToRepository('', mockRepository, '') settings.FileNameInput().getFromFileName([('','')], '', mockRepository, '') settings.GridVertical(0, 0).setExecutablesRepository(mockRepository) settings.HelpPage().setToNameRepository('', mockRepository) settings.HelpPage().getFromNameAfterWWW('', '', mockRepository) settings.HelpPage().getFromNameAfterHTTP('', '', mockRepository) settings.HelpPage().getFromNameSubName('', mockRepository, '') settings.HelpPageRepository.__init__(settings.HelpPageRepository(), mockRepository) settings.LabelDisplay().getFromName('', mockRepository) settings.LabelSeparator().getFromRepository(mockRepository) settings.MenuButtonDisplay().getFromName('', mockRepository) settings.Radio().getFromRadio(None, '', mockRepository, False) settings.WindowPosition().getFromValue(mockRepository, '') settings.RepositoryDialog(mockRepository, None).addButtons(mockRepository, None) settings.RepositoryDialog.__init__(RepositoryDialog(), mockRepository, None) gcodec.Plugins.add(settings.Plugin()) Tkinter.Button.__init__(None, {})
def addMouseToolsBind(self): 'Add the mouse tool and bind button one clicked, button one released and motion.' self.xScrollbar.config( command = self.relayXview ) self.yScrollbar.config( command = self.relayYview ) self.canvas['xscrollcommand'] = self.xScrollbar.set self.canvas['yscrollcommand'] = self.yScrollbar.set settings.CloseListener( self, self.destroyAllDialogWindows ).listenToWidget( self.canvas ) self.canvasScreenCenter = 0.5 * complex( float( self.canvasWidth ) / float( self.screenSize.real ), float( self.canvasHeight ) / float( self.screenSize.imag ) ) self.addPhotoImage('stop.ppm', self.gridPosition ) self.gridPosition.increment() self.addLayer( getGridHorizontalFrame( self.gridPosition ) ) self.gridPosition.increment() self.addLine( getGridHorizontalFrame( self.gridPosition ) ) self.gridPosition.increment() self.addScale( getGridHorizontalFrame( self.gridPosition ) ) self.gridPosition = settings.GridVertical( self.gridPosition.columnStart + 1, self.gridPosition.row ) self.gridPosition.master = self.root for name in self.repository.frameList.value: entity = self.getEntityFromName( name ) if entity != None: self.gridPosition.incrementGivenNumberOfColumns(3) entity.addToDialog( getGridHorizontalFrame( self.gridPosition ) ) for menuRadio in self.repository.mouseMode.menuRadios: menuRadio.mouseTool = menuRadio.getNewMouseToolFunction().getReset(self) self.mouseTool = menuRadio.mouseTool self.createMouseModeTool() self.canvas.bind('<Button-1>', self.button1) self.canvas.bind('<ButtonRelease-1>', self.buttonRelease1) self.canvas.bind('<Configure>', self.setInsetToCanvas) self.canvas.bind('<KeyPress-Down>', self.keyPressDown) self.canvas.bind('<KeyPress-Left>', self.keyPressLeft) self.canvas.bind('<KeyPress-Right>', self.keyPressRight) self.canvas.bind('<KeyPress-Up>', self.keyPressUp) self.canvas.bind('<Motion>', self.motion) self.canvas.bind('<Return>', self.keyPressReturn) self.canvas.bind('<Shift-ButtonRelease-1>', self.shiftButtonRelease1) self.canvas.bind('<Shift-Motion>', self.shiftMotion) self.layerEntry.bind('<Destroy>', self.cancelTimer) self.root.grid_columnconfigure(44, weight = 1) self.root.grid_rowconfigure(44, weight = 1) self.resetPeriodicButtonsText() self.repository.animationLineQuickening.setUpdateFunction( self.repository.setToDisplaySave ) self.repository.animationSlideShowRate.setUpdateFunction( self.repository.setToDisplaySave ) self.repository.screenHorizontalInset.setUpdateFunction( self.redisplayWindowUpdate ) self.repository.screenVerticalInset.setUpdateFunction( self.redisplayWindowUpdate ) rankZeroSeperation = self.getRulingSeparationWidthPixels( 0 ) zoom = self.rulingTargetSeparation / rankZeroSeperation self.rank = euclidean.getRank( zoom ) rankTop = self.rank + 1 seperationBottom = self.getRulingSeparationWidthPixels( self.rank ) seperationTop = self.getRulingSeparationWidthPixels( rankTop ) bottomDifference = getGeometricDifference( self.rulingTargetSeparation, seperationBottom ) topDifference = getGeometricDifference( self.rulingTargetSeparation, seperationTop ) if topDifference < bottomDifference: self.rank = rankTop self.rulingSeparationWidthMillimeters = euclidean.getIncrementFromRank( self.rank ) self.canvas.focus_set()
def addCanvasMenuRootScrollSkein(self, repository, skein, suffix, title): 'Add the canvas, menu bar, scroll bar, skein panes, tableau repository, root and skein.' self.imagesDirectoryPath = archive.getFabmetheusUtilitiesPath('images') self.movementTextID = None self.mouseInstantButtons = [] self.photoImages = {} self.repository = repository self.root = settings.Tkinter.Tk() self.gridPosition = settings.GridVertical(0, 1) self.gridPosition.master = self.root self.highlightThickness = 3 self.root.title(os.path.basename(skein.fileName) + ' - ' + title) self.rulingExtent = 24 self.rulingTargetSeparation = 150.0 self.screenSize = skein.screenSize self.skein = skein self.skeinPanes = skein.skeinPanes self.suffix = suffix self.timerID = None repository.animationSlideShowRate.value = max(repository.animationSlideShowRate.value, 0.01) repository.animationSlideShowRate.value = min(repository.animationSlideShowRate.value, 85.0) repository.drawArrows.setUpdateFunction(self.setWindowToDisplaySaveUpdate) repository.goAroundExtruderOffTravel.setUpdateFunction(self.setWindowToDisplaySavePhoenixUpdate) repository.layerExtraSpan.setUpdateFunction(self.setWindowToDisplaySaveUpdate) repository.showGcode.setUpdateFunction(self.setWindowToDisplaySaveUpdate) repository.widthOfSelectionThread.setUpdateFunction(self.setWindowToDisplaySaveUpdate) repository.widthOfTravelThread.setUpdateFunction(self.setWindowToDisplaySaveUpdate) repository.window = self for menuRadio in repository.mouseMode.menuRadios: fileName = menuRadio.name.lower() fileName = fileName.replace(' ', '_') + '.ppm' menuRadio.mouseButton = self.getPhotoButtonGridIncrement(menuRadio.invoke, fileName, self.gridPosition) self.gridPosition = settings.GridHorizontal(2, 99) self.gridPosition.master = self.root self.gcodeStringVar = settings.Tkinter.StringVar(self.root) self.gcodeLabel = settings.Tkinter.Label(self.root, anchor = settings.Tkinter.W, textvariable = self.gcodeStringVar) self.gcodeLabel.grid(row = 0, column = 5, columnspan = 93, sticky = settings.Tkinter.W) from fabmetheus_utilities.hidden_scrollbar import HiddenScrollbar self.xScrollbar = HiddenScrollbar(self.root, orient = settings.Tkinter.HORIZONTAL) self.xScrollbar.grid(row = 98, column = 2, columnspan = 96, sticky = settings.Tkinter.E + settings.Tkinter.W) self.yScrollbar = HiddenScrollbar(self.root) self.yScrollbar.grid(row = 2, rowspan = 96, column = 99, sticky = settings.Tkinter.N + settings.Tkinter.S) self.canvasHeight = self.root.winfo_screenheight() - repository.screenVerticalInset.value self.canvasWidth = self.root.winfo_screenwidth() - repository.screenHorizontalInset.value scrollRegionBoundingBox = (0, 0, int(skein.screenSize.real), int(skein.screenSize.imag)) self.canvas = settings.Tkinter.Canvas(self.root, highlightthickness = self.highlightThickness, width = self.canvasWidth, height = self.canvasHeight, scrollregion = scrollRegionBoundingBox) self.canvas.grid(row = 2, rowspan = 96, column = 2, columnspan = 96, sticky = settings.Tkinter.E + settings.Tkinter.W + settings.Tkinter.N + settings.Tkinter.S) self.fileHelpMenuBar = settings.FileHelpMenuBar(self.root) self.exportMenu = settings.Tkinter.Menu(self.fileHelpMenuBar.fileMenu, tearoff = 0) self.fileHelpMenuBar.fileMenu.add_cascade(label = 'Export', menu = self.exportMenu, underline = 0) exportCanvasPluginsFolderPath = archive.getAbsoluteFolderPath(os.path.dirname(__file__), 'export_canvas_plugins') exportCanvasPluginFileNames = archive.getPluginFileNamesFromDirectoryPath(exportCanvasPluginsFolderPath) for exportCanvasPluginFileName in exportCanvasPluginFileNames: ExportCanvasDialog().addPluginToMenu(self.canvas, skein.fileName, self.exportMenu, exportCanvasPluginFileName, suffix) self.fileHelpMenuBar.fileMenu.add_separator() self.fileHelpMenuBar.completeMenu(self.close, repository, self.save, self)