def config(self,cnf=None,**kw): if cnf is None and len(kw)==0: dict={} for key in self.__optionAliases.keys(): dict[key] = [key,self.__optionAliases[key]] for key in self.__options.keys(): dict[key] = OptionHandler.config(self,key) if self.__baseClass is None: return dict else: return AUTOutil.cnfmerge((dict,self.__baseClass.config(self))) elif type(cnf) == types.StringType: cnf = self.__applyOptionAliases(cnf) if self.__options.has_key(cnf): return (cnf,cnf,cnf, self.__optionDefaults[cnf], self.__options[cnf]) else: if self.__baseClass is None: raise AUTORuntimeError("Option %s not found"%cnf) else: return self.__baseClass.config(self,cnf) else: dict = AUTOutil.cnfmerge((cnf,kw)) self.__parseOptions(dict) if not(self.__baseClass is None): self.__baseClass.config(self,dict)
def config(self,cnf=None,**kw): if type(cnf) == types.StringType or (cnf is None and len(kw) == 0): return self._configNoDraw(cnf) else: self._configNoDraw(AUTOutil.cnfmerge((cnf,kw))) self.clear() self.draw()
def __init__(self, parent=None, cnf={}, **kw): optionDefaults = {} # The kind of diagram (single solution vs. bifur diagram) optionDefaults["type"] = ("bifurcation", self.__optionCallback) # The X column optionDefaults["bifurcation_x"] = ([0], self.__optionCallback) optionDefaults["solution_x"] = (["t"], self.__optionCallback) # The Y column optionDefaults["bifurcation_y"] = ([1], self.__optionCallback) optionDefaults["solution_y"] = ([0], self.__optionCallback) # Sets of labels that the user is likely to want to use optionDefaults["label_defaults"] = (None, self.__optionCallback) # Sets of columns that the user is likely to want to use optionDefaults["bifurcation_column_defaults"] = (None, self.__optionCallback) optionDefaults["solution_column_defaults"] = (None, self.__optionCallback) # The index of the solution we wish to draw optionDefaults["index"] = ([0], self.__optionCallback) # The label of the solution we wish to draw optionDefaults["label"] = ([0], self.__optionCallback) # Already parsed data structures optionDefaults["bifurcation_diagram"] = (parseB.parseB(), self.__optionCallback) optionDefaults["solution"] = (parseS.parseS(), self.__optionCallback) optionDefaults["bifurcation_diagram_filename"] = ("", self.__optionCallback) optionDefaults["solution_filename"] = ("", self.__optionCallback) optionDefaults["runner"] = (None, self.__optionCallback) optionDefaults["mark_t"] = (None, self.__optionCallback) optionDefaults["bifurcation_symbol"] = ("B", self.__optionCallback) optionDefaults["limit_point_symbol"] = ("L", self.__optionCallback) optionDefaults["hopf_symbol"] = ("H", self.__optionCallback) optionDefaults["period_doubling_symbol"] = ("D", self.__optionCallback) optionDefaults["torus_symbol"] = ("T", self.__optionCallback) optionDefaults["user_point_symbol"] = ("U", self.__optionCallback) optionDefaults["error_symbol"] = ("X", self.__optionCallback) optionDefaults["use_labels"] = (1, self.__optionCallback) parser = ConfigParser.ConfigParser() parser.add_section("AUTO_plotter") if os.path.exists(os.path.expandvars("$AUTO_DIR/.autorc")): parser.read(os.path.expandvars("$AUTO_DIR/.autorc")) if os.path.exists(os.path.expandvars("$HOME/.autorc")): parser.read(os.path.expandvars("$HOME/.autorc")) if os.path.exists("./.autorc"): parser.read("./.autorc") for option in parser.options("AUTO_plotter"): optionDefaults[option] = (eval(parser.get("AUTO_plotter", option)), self.__optionCallback) self.__needsPlot = None apply(grapher.GUIGrapher.__init__, (self, parent)) dict = AUTOutil.cnfmerge((cnf, kw)) self.addOptions(optionDefaults) plotter.config(self, dict)
def config(self, cnf=None, **kw): if type(cnf) == types.StringType or (cnf is None and len(kw) == 0): return self._configNoDraw(cnf) else: self._configNoDraw(AUTOutil.cnfmerge((cnf, kw))) if self.__needsPlot: self._plotNoDraw() self.__needsPlot = None self.clear() self.computeXRange() self.computeYRange() self.draw() self.update()
def __init__(self,parent=None,cnf={},**kw): kw=AUTOutil.cnfmerge((cnf,kw)) apply(InteractiveGrapher.__init__,(self,parent),kw) self.bind("<ButtonPress-3>",self.popupMenuWrapper) self.menu=Tkinter.Menu() self.menu.add_radiobutton(label="print value",command=self.printValueBindings) # self.menu.add_radiobutton(label="print tag",command=self.printTagBindings) # self.menu.add_radiobutton(label="label point",command=self.labelPointBindings) self.menu.add_radiobutton(label="zoom",command=self.zoomBindings) self.menu.invoke('zoom') self.menu.add_command(label="Unzoom",command=self.unzoom) self.menu.add_command(label="Postscript",command=self.generatePostscript) self.menu.add_command(label="Configure...",command=self.__interactiveConfigureDialog) self.bind("<Configure>",self.drawWrapper)
def __init__(self,parent=None,cnf={},**kw): self.data = [] #Get the data from the arguements and then erase the #ones which are not used by canvas optionDefaults={} optionDefaults["minx"] = (0,None) optionDefaults["maxx"] = (0,None) optionDefaults["miny"] = (0,None) optionDefaults["maxy"] = (0,None) optionDefaults["left_margin"] = (80,None) optionDefaults["right_margin"] = (40,None) optionDefaults["top_margin"] = (40,None) optionDefaults["bottom_margin"] = (40,None) optionDefaults["decorations"] = (1,None) optionDefaults["xlabel"] = ("",None) optionDefaults["ylabel"] = ("",None) optionDefaults["xticks"] = (5,None) optionDefaults["yticks"] = (5,None) optionDefaults["grid"] = ("yes",None) optionDefaults["tick_label_template"] = ("%.2e",None) optionDefaults["tick_length"] = (0.2,None) optionDefaults["odd_tick_length"] = (0.4,None) optionDefaults["even_tick_length"] = (0.2,None) # background is handled by the Canvas widget optionDefaults["foreground"] = ("black",None) optionDefaults["color_list"] = ("black red green blue",None) optionDefaults["symbol_font"] = ("-misc-fixed-*-*-*-*-*-*-*-*-*-*-*-*",None) optionDefaults["symbol_color"] = ("red",None) optionDefaults["smart_label"] = (0,None) optionDefaults["line_width"] = (2,None) optionDefaults["realwidth"] = (1,None) optionDefaults["realheight"] = (1,None) optionAliases = {} optionAliases["fg"] = "foreground" # __parseOptions uses functions from the Canvas # widget, so we need to initialize it first apply(Tkinter.Canvas.__init__,(self,parent)) optionHandler.OptionHandler.__init__(self,Tkinter.Canvas) dict = AUTOutil.cnfmerge((cnf,kw)) self.addOptions(optionDefaults) self.addAliases(optionAliases) BasicGrapher.config(self,dict)
def __init__(self,parent=None,cnf={},**kw): optionDefaults={} optionDefaults["problem"] = ("auto_plotter3d",self.__optionCallback) # The kind of diagram (single solution vs. bifur diagram) optionDefaults["type"] = ("bifurcation",self.__optionCallback) # The X column optionDefaults["bifurcation_x"] = ([0],self.__optionCallback) optionDefaults["solution_x"] = (["t"],self.__optionCallback) # The Y column optionDefaults["bifurcation_y"] = ([1],self.__optionCallback) optionDefaults["solution_y"] = ([0],self.__optionCallback) # The Z column optionDefaults["bifurcation_z"] = ([1],self.__optionCallback) optionDefaults["solution_z"] = ([0],self.__optionCallback) # The Color column optionDefaults["bifurcation_color"] = ([1],self.__optionCallback) optionDefaults["solution_color"] = ([0],self.__optionCallback) # Sets of labels that the user is likely to want to use optionDefaults["label_defaults"] = (None,self.__optionCallback) # Sets of columns that the user is likely to want to use optionDefaults["bifurcation_column_defaults"] = (None,self.__optionCallback) optionDefaults["solution_column_defaults"] = (None,self.__optionCallback) # The index of the solution we wish to draw optionDefaults["index"] = ([0],self.__optionCallback) # The label of the solution we wish to draw optionDefaults["label"] = ([0],self.__optionCallback) # Already parsed data structures optionDefaults["bifurcation_diagram"] = (parseB.parseB(),self.__optionCallback) optionDefaults["solution"] = (parseS.parseS(),self.__optionCallback) optionDefaults["bifurcation_diagram_filename"] = ("",self.__optionCallback) optionDefaults["solution_filename"] = ("",self.__optionCallback) optionDefaults["runner"] = (None,self.__optionCallback) optionDefaults["mark_t"] = (None, self.__optionCallback) optionDefaults["mark_t_radius"] = (0.01, self.__optionCallback) optionDefaults["mark_t_color"] = ((1.0,1.0,1.0), self.__optionCallback) # Options for the GUI optionDefaults["bifurcation_x_scale"] = (1.0,None) optionDefaults["bifurcation_y_scale"] = (1.0,None) optionDefaults["bifurcation_z_scale"] = (1.0,None) optionDefaults["bifurcation_x_trans"] = (0.0,None) optionDefaults["bifurcation_y_trans"] = (0.0,None) optionDefaults["bifurcation_z_trans"] = (0.0,None) optionDefaults["solution_x_scale"] = (1.0,None) optionDefaults["solution_y_scale"] = (1.0,None) optionDefaults["solution_z_scale"] = (1.0,None) optionDefaults["solution_x_trans"] = (0.0,None) optionDefaults["solution_y_trans"] = (0.0,None) optionDefaults["solution_z_trans"] = (0.0,None) optionDefaults["line_width"] = (1.0,None) optionDefaults["cylinder"] = (0,None) optionDefaults["geom_comp"] = (7,None) optionDefaults["light_comp"] = (7,None) optionDefaults["write_points_on"] = (0,None) optionDefaults["grid_on"] = (0,None) optionDefaults["grid_lines"] = (6,None) optionDefaults["grid_1_start"] = (-1.0,None) optionDefaults["grid_2_start"] = (-1.0,None) optionDefaults["grid_1_end"] = (1.0,None) optionDefaults["grid_2_end"] = (1.0,None) optionDefaults["grid_width"] = (1.0,None) optionDefaults["grid_R"] = (1.0,None) optionDefaults["grid_G"] = (1.0,None) optionDefaults["grid_B"] = (1.0,None) optionDefaults["grid_cylinder"] = (0,None) optionDefaults["grid_direction"]= (["x","y","z"],None) optionDefaults["cube_on"] = (1,None) optionDefaults["cube_R"] = (1.0,None) optionDefaults["cube_G"] = (1.0,None) optionDefaults["cube_B"] = (1.0,None) optionDefaults["auto_center"]= (1,None) optionDefaults["auto_scale"]= (1,None) parser = ConfigParser.ConfigParser() parser.add_section("AUTO_plotter3D") if(os.path.exists(os.path.expandvars("$AUTO_DIR/.autorc"))): parser.read(os.path.expandvars("$AUTO_DIR/.autorc")) if(os.path.exists(os.path.expandvars("$HOME/.autorc"))): parser.read(os.path.expandvars("$HOME/.autorc")) if(os.path.exists("./.autorc")): parser.read("./.autorc") for option in parser.options("AUTO_plotter3D"): optionDefaults[option] = (eval(parser.get("AUTO_plotter3D",option)),self.__optionCallback) Tkinter.Frame.__init__(self,parent) optionHandler.OptionHandler.__init__(self) self.user_data = {} dict = AUTOutil.cnfmerge((cnf,kw)) self.addOptions(optionDefaults) plotter3D.config(self,dict)
def _configNoDraw(self,cnf=None,**kw): if type(cnf) == types.StringType or (cnf is None and len(kw) == 0): return optionHandler.OptionHandler.config(self,cnf) else: optionHandler.OptionHandler.config(self,AUTOutil.cnfmerge((cnf,kw)))
def _configNoDraw(self, cnf=None, **kw): if type(cnf) == types.StringType or (cnf is None and len(kw) == 0): return grapher.GUIGrapher._configNoDraw(self, cnf) else: grapher.GUIGrapher._configNoDraw(self, AUTOutil.cnfmerge((cnf, kw)))
def __init__(self,parent=None,cnf={},**kw): WindowPlotter.__init__(self,plotterDataViewer3D.plotter3D,parent,AUTOutil.cnfmerge((cnf,kw)))
def __init__(self,grapherClass,parent=None,cnf={},**kw): optiondefs = [] self.defineoptions(AUTOutil.cnfmerge((cnf,kw)),optiondefs) Pmw.MegaToplevel.__init__(self, parent) interior = self.interior() self.helpBalloon = self.createcomponent('helpBalloon', (), None, Pmw.Balloon, interior) self.menuBar = self.createcomponent('menuBar', (), None, Pmw.MenuBar,interior, hotkeys="true", hull_relief = 'raised', hull_borderwidth = 1, balloon=self.helpBalloon) self.menuBar.addmenu("File","File operations") self.menuBar.addmenu("Options","View and set options") self.menuBar.addmenu("Help","View help on the plotting widget",side="right") self.menuBar.pack(fill=Tkinter.X) self.grapher = self.createcomponent('grapher', (), None, grapherClass,interior) self.menuBar.addmenuitem("File", "command", "Save the plot as postscript...", label = "Save Postscript...", command = self.grapher.generatePostscript ) self.menuBar.addmenuitem("File", "command", "Destory the plot", label = "Quit", command = self.withdraw ) self.menuBar.addmenuitem("Options", "command", label="Options...", command=self._setOptionWindow ) topbox = Tkinter.Frame(interior,relief="raised",borderwidth=2) topbox.pack(side=Tkinter.BOTTOM) box = Tkinter.Frame(topbox) self.grapher.pack(expand=True,fill=Tkinter.BOTH) if self.grapher.cget("type") == "bifurcation": labelEntry = self.createcomponent('labelEntry', (), None, Pmw.OptionMenu,box, labelpos="w", label_text="Type", items=("'bifurcation'","'solution'")) else: labelEntry = self.createcomponent('labelEntry', (), None, Pmw.OptionMenu,box, labelpos="w", label_text="Type", items=("'solution'","'bifurcation'")) labelEntry.grid(row=0,column=0) labelEntry.configure(command = lambda value,obj=self:obj._modifyOption("type",value)) #FIXME: This being here is a bug. It needs to be part of the configure stuff, # otherwise you can't change solution files. labels = [] if not(self.grapher.cget("label_defaults") is None): for x in self.grapher.cget("label_defaults"): labels.append(str(x)) default_labels = self.grapher.cget("solution").getLabels() for i in range(len(default_labels)): labels.append("[%d]"%default_labels[i]) all = "[" for i in range(len(default_labels)): all = all + str(default_labels[i]) + "," all = all[:-1]+"]" labels.append(all) typeEntry = self.createcomponent('typeEntry', (), None, Pmw.ComboBox,box, labelpos="w", label_text="Label") typeEntry.grid(row=0,column=1) typeEntry.setentry(labels[0]) typeEntry.setlist(labels) typeEntry.configure(selectioncommand = lambda entry,obj=self:obj._modifyOption("label",entry)) box.grid(row=0) box = Tkinter.Frame(topbox) self._extraButtons(box) box.grid(row=1) # Let the appropriate things grow topbox.rowconfigure(1,weight=1) topbox.columnconfigure(0,weight=1) self.initialiseoptions(WindowPlotter)
def __init__(self,parent=None,cnf={},**kw): optionDefaults={} optionDefaults["problem"] = ("auto_plotter3d",self.__optionCallback) # The kind of diagram (single solution vs. bifur diagram) optionDefaults["type"] = ("bifurcation",self.__optionCallback) # The X column optionDefaults["bifurcation_x"] = ([0],self.__optionCallback) optionDefaults["solution_x"] = (["t"],self.__optionCallback) # The Y column optionDefaults["bifurcation_y"] = ([1],self.__optionCallback) optionDefaults["solution_y"] = ([0],self.__optionCallback) # The Z column optionDefaults["bifurcation_z"] = ([1],self.__optionCallback) optionDefaults["solution_z"] = ([0],self.__optionCallback) # The Color column optionDefaults["bifurcation_color"] = ([1],self.__optionCallback) optionDefaults["solution_color"] = ([0],self.__optionCallback) # Sets of labels that the user is likely to want to use optionDefaults["label_defaults"] = (None,self.__optionCallback) # Sets of columns that the user is likely to want to use optionDefaults["bifurcation_column_defaults"] = (None,self.__optionCallback) optionDefaults["solution_column_defaults"] = (None,self.__optionCallback) # The index of the solution we wish to draw optionDefaults["index"] = ([0],self.__optionCallback) # The label of the solution we wish to draw optionDefaults["label"] = ([0],self.__optionCallback) # Already parsed data structures optionDefaults["bifurcation_diagram"] = (parseB.parseB(),self.__optionCallback) optionDefaults["solution"] = (parseS.parseS(),self.__optionCallback) optionDefaults["bifurcation_diagram_filename"] = ("",self.__optionCallback) optionDefaults["solution_filename"] = ("",self.__optionCallback) optionDefaults["runner"] = (None,self.__optionCallback) optionDefaults["mark_t"] = (None, self.__optionCallback) optionDefaults["mark_t_radius"] = (0.01, self.__optionCallback) optionDefaults["mark_t_color"] = ((1.0,1.0,1.0), self.__optionCallback) optionDefaults["special_point"] = (None, self.__optionCallback) optionDefaults["special_point_radius"] = (0.005, self.__optionCallback) optionDefaults["special_point_colors"] = ([[0.0,0.0,1.0], #Blue for branch point [0.0,1.0,0.0], #Green for fold [1.0,1.0,0.0], #Yellow for hopf [0.0,1.0,1.0], #Cyan for Period Doubling [1.0,0.0,0.0], #Red for Torus [0.5,0.5,0.5], #Grey for user requested point [0.1,0.1,0.1]], #Dark grey for error self.__optionCallback) # Options for the GUI optionDefaults["bifurcation_x_scale"] = (1.0,None) optionDefaults["bifurcation_y_scale"] = (1.0,None) optionDefaults["bifurcation_z_scale"] = (1.0,None) optionDefaults["bifurcation_x_trans"] = (0.0,None) optionDefaults["bifurcation_y_trans"] = (0.0,None) optionDefaults["bifurcation_z_trans"] = (0.0,None) optionDefaults["solution_x_scale"] = (1.0,None) optionDefaults["solution_y_scale"] = (1.0,None) optionDefaults["solution_z_scale"] = (1.0,None) optionDefaults["solution_x_trans"] = (0.0,None) optionDefaults["solution_y_trans"] = (0.0,None) optionDefaults["solution_z_trans"] = (0.0,None) optionDefaults["line_width"] = (1.0,None) optionDefaults["cylinder"] = (0,None) optionDefaults["geom_comp"] = (7,None) optionDefaults["light_comp"] = (7,None) optionDefaults["write_points_on"] = (0,None) optionDefaults["grid_on"] = (0,None) optionDefaults["grid_lines"] = (6,None) optionDefaults["grid_1_start"] = (-1.0,None) optionDefaults["grid_2_start"] = (-1.0,None) optionDefaults["grid_1_end"] = (1.0,None) optionDefaults["grid_2_end"] = (1.0,None) optionDefaults["grid_width"] = (1.0,None) optionDefaults["grid_R"] = (1.0,None) optionDefaults["grid_G"] = (1.0,None) optionDefaults["grid_B"] = (1.0,None) optionDefaults["grid_cylinder"] = (0,None) optionDefaults["grid_direction"]= (["x","y","z"],None) optionDefaults["cube_on"] = (1,None) optionDefaults["cube_R"] = (1.0,None) optionDefaults["cube_G"] = (1.0,None) optionDefaults["cube_B"] = (1.0,None) optionDefaults["auto_center"]= (1,None) optionDefaults["auto_scale"]= (1,None) parser = ConfigParser.ConfigParser() parser.add_section("AUTO_plotter3D") if(os.path.exists(os.path.expandvars("$AUTO_DIR/.autorc"))): parser.read(os.path.expandvars("$AUTO_DIR/.autorc")) if(os.path.exists(os.path.expandvars("$HOME/.autorc"))): parser.read(os.path.expandvars("$HOME/.autorc")) if(os.path.exists("./.autorc")): parser.read("./.autorc") for option in parser.options("AUTO_plotter3D"): optionDefaults[option] = (eval(parser.get("AUTO_plotter3D",option)),self.__optionCallback) geom.Geometry.__init__(self,parent) optionHandler.OptionHandler.__init__(self,geom.Geometry) self.user_data = {} dict = AUTOutil.cnfmerge((cnf,kw)) self.addOptions(optionDefaults) self.set_problem(self.cget("problem")) plotter3D.config(self,dict) self.zoom_scale = 0.03 self.default_zoom = -10.0 self.bind('<Lock-ButtonPress-3>',self.zoom_mouse_down) self.bind('<Lock-Button3-Motion>',self.zoom_mouse_move) self.zoom(0.15) self.bind('<ButtonPress-3>',self.translate_mouse_down) self.bind('<Button3-Motion>',self.translate_mouse_move) self.bind('<Shift-ButtonPress-2>',self.zoom_mouse_down) self.bind('<Shift-Button2-Motion>',self.zoom_mouse_move) self.bind('<ButtonPress-2>',self.rotate_mouse_down) self.bind('<Button2-Motion>',self.rotate_mouse_move) self.bind('<ButtonRelease-2>',self.spin_mouse) self.tk_focusFollowsMouse() self.bind('<KeyPress-Up>',self.KeyEvent) self.bind('<KeyPress-Down>',self.KeyEvent) self.bind('<KeyPress-Left>',self.KeyEvent) self.bind('<KeyPress-Right>',self.KeyEvent) self.bind('<KeyPress-Next>',self.KeyEvent) self.bind('<KeyPress-Prior>',self.KeyEvent) self.bind('<Control-KeyPress-Up>',self.KeyEvent) self.bind('<Control-KeyPress-Down>',self.KeyEvent) self.bind('<Control-KeyPress-Left>',self.KeyEvent) self.bind('<Control-KeyPress-Right>',self.KeyEvent) self.bind('<Control-KeyPress-Next>',self.KeyEvent) self.bind('<Control-KeyPress-Prior>',self.KeyEvent)
def addAliases(self,dict,**kw): dict = AUTOutil.cnfmerge((dict,kw)) for key in dict.keys(): self.__optionAliases[key] = dict[key]
def addOptions(self,dict,**kw): dict = AUTOutil.cnfmerge((dict,kw)) for key in dict.keys(): self.__optionDefaults[key] = dict[key][0] self.__options[key] = dict[key][0] self.__optionCallbacks[key] = dict[key][1]
def __init__(self,parent=None,cnf={},**kw): kw=AUTOutil.cnfmerge((cnf,kw)) apply(LabeledGrapher.__init__,(self,parent),kw)
def __init__(self,parent=None,cnf={},**kw): kw=AUTOutil.cnfmerge((cnf,kw)) self.labels=[] apply(BasicGrapher.__init__,(self,parent),kw)