diff options
Diffstat (limited to 'Master/texmf-dist/asymptote/GUI/xasyOptionsDialog.py')
-rwxr-xr-x | Master/texmf-dist/asymptote/GUI/xasyOptionsDialog.py | 234 |
1 files changed, 0 insertions, 234 deletions
diff --git a/Master/texmf-dist/asymptote/GUI/xasyOptionsDialog.py b/Master/texmf-dist/asymptote/GUI/xasyOptionsDialog.py deleted file mode 100755 index 271070ea457..00000000000 --- a/Master/texmf-dist/asymptote/GUI/xasyOptionsDialog.py +++ /dev/null @@ -1,234 +0,0 @@ -#!/usr/bin/env python -########################################################################### -# -# xasyOptionsDialog implements a dialog window to allow users to edit -# their preferences and specify program options -# -# -# Author: Orest Shardt -# Created: June 29, 2007 -# -########################################################################### - -import os -import sys -import xasyOptions -import xasyColorPicker - -if sys.version_info >= (3, 0): - from tkinter import * - from tkinter import simpledialog, messagebox, filedialog -else: - # python2 - from Tkinter import * - import tkSimpleDialog as simpledialog - import tkMessageBox as messagebox - import tkFileDialog as filedialog - # import tkColorChooser as colorchooser - -class xasyOptionsDlg(simpledialog.Dialog): - """A dialog to interact with users about their preferred settings""" - def __init__(self,master=None): - simpledialog.Dialog.__init__(self,master,"xasy Options") - - def body(self,master): - optFrame = Frame(master) - optFrame.grid(row=0,column=0,sticky=N+S+E+W) - - asyGrp = LabelFrame(optFrame,text="Asymptote",padx=5,pady=5) - asyGrp.grid(row=0,column=0,sticky=E+W) - asyGrp.rowconfigure(0,weight=1) - asyGrp.rowconfigure(1,weight=1) - asyGrp.columnconfigure(0,weight=1) - asyGrp.columnconfigure(0,weight=2) - Label(asyGrp,text="Command").grid(row=0,column=0,sticky=W) - self.ap = Entry(asyGrp) - self.ap.insert(END,xasyOptions.options['asyPath']) - self.ap.grid(row=0,column=1,sticky=E+W) - Button(asyGrp,text="...",command=self.findAsyPath).grid(row=0,column=2,sticky=E+W) - self.showDebug = BooleanVar() - self.showDebug.set(xasyOptions.options['showDebug']) - self.sd = Checkbutton(asyGrp,text="Show debugging info in console",var=self.showDebug) - self.sd.grid(row=1,column=0,columnspan=2,sticky=W) - - editGrp = LabelFrame(optFrame,text="External Editor",padx=5,pady=5) - editGrp.grid(row=1,column=0,sticky=E+W) - editGrp.rowconfigure(0,weight=1) - editGrp.rowconfigure(1,weight=1) - editGrp.columnconfigure(0,weight=1) - editGrp.columnconfigure(0,weight=2) - Label(editGrp,text="Program").grid(row=0,column=0,sticky=W) - self.ee = Entry(editGrp) - self.ee.insert(END,xasyOptions.options['externalEditor']) - self.ee.grid(row=0,column=1,sticky=E+W) - Button(editGrp,text="...",command=self.findEEPath).grid(row=0,column=2,sticky=E+W) - - penGrp = LabelFrame(optFrame,text="Default Pen",padx=5,pady=5) - penGrp.grid(row=2,column=0,sticky=E+W) - penGrp.rowconfigure(0,weight=1) - penGrp.rowconfigure(1,weight=1) - penGrp.rowconfigure(2,weight=1) - penGrp.columnconfigure(1,weight=1) - Label(penGrp,text="Color").grid(row=0,column=0,sticky=E) - self.pc = xasyOptions.options['defPenColor'] - Button(penGrp,text="Change",command=self.changePenColor).grid(row=0,column=1,sticky=W) - Label(penGrp,text="Width").grid(row=1,column=0,sticky=E) - self.pw = Entry(penGrp) - self.pw.insert(END,str(xasyOptions.options['defPenWidth'])) - self.pw.grid(row=1,column=1,sticky=E+W) - Label(penGrp,text="Options").grid(row=2,column=0,sticky=E) - self.po = Entry(penGrp) - self.po.insert(END,xasyOptions.options['defPenOptions']) - self.po.grid(row=2,column=1,sticky=E+W) - - dispGrp = LabelFrame(optFrame,text="Display Options",padx=5,pady=5) - dispGrp.grid(row=3,column=0,sticky=E+W) - dispGrp.rowconfigure(0,weight=1) - dispGrp.rowconfigure(1,weight=1) - dispGrp.rowconfigure(2,weight=1) - dispGrp.rowconfigure(3,weight=1) - dispGrp.columnconfigure(0,weight=1) - dispGrp.columnconfigure(1,weight=1) - dispGrp.columnconfigure(2,weight=1) - self.showAxes = BooleanVar() - self.showAxes.set(xasyOptions.options['showAxes']) - self.sa = Checkbutton(dispGrp,text="Show Axes",var=self.showAxes) - self.sa.grid(row=0,column=0,sticky=W) - self.ac = xasyOptions.options['axesColor'] - Button(dispGrp,text="Color...",command=self.changeAxesColor).grid(row=1,column=0) - Label(dispGrp,text="x").grid(row=0,column=1,padx=5,sticky=E) - self.axs = Entry(dispGrp,width=6) - self.axs.insert(END,xasyOptions.options['axisX']) - self.axs.grid(row=0,column=2,sticky=W+E) - Label(dispGrp,text="y").grid(row=1,column=1,padx=5,sticky=E) - self.ays = Entry(dispGrp,width=6) - self.ays.insert(END,xasyOptions.options['axisY']) - self.ays.grid(row=1,column=2,sticky=W+E) - - self.showGrid = BooleanVar() - self.showGrid.set(xasyOptions.options['showGrid']) - self.sg = Checkbutton(dispGrp,text="Show Grid",var=self.showGrid) - self.sg.grid(row=4,column=0,sticky=W) - self.gc = xasyOptions.options['gridColor'] - Button(dispGrp,text="Color...",command=self.changeGridColor).grid(row=3,column=0) - Label(dispGrp,text="x").grid(row=2,column=1,padx=5,sticky=E) - self.gxs = Entry(dispGrp,width=6) - self.gxs.insert(END,xasyOptions.options['gridX']) - self.gxs.grid(row=2,column=2,sticky=W+E) - Label(dispGrp,text="y").grid(row=3,column=1,padx=5,sticky=E) - self.gys = Entry(dispGrp,width=6) - self.gys.insert(END,xasyOptions.options['gridY']) - self.gys.grid(row=3,column=2,sticky=W+E) - - def findEEPath(self): - if sys.platform[:3] == 'win': #for windows, wince, win32, etc - file=filedialog.askopenfile(filetypes=[("Programs","*.exe"),("All files","*")],title="Choose External Editor",parent=self) - else: - file=filedialog.askopenfile(filetypes=[("All files","*")],title="Choose External Editor",parent=self) - if file != None: - name = os.path.abspath(file.name) - file.close() - self.ee.delete(0,END) - self.ee.insert(END,name) - self.validate() - - def findAsyPath(self): - if sys.platform[:3] == 'win': #for windows, wince, win32, etc - file=filedialog.askopenfile(filetypes=[("Programs","*.exe"),("All files","*")],title="Find Asymptote Executable",parent=self) - else: - file=filedialog.askopenfile(filetypes=[("All files","*")],title="Find Asymptote Executable",parent=self) - if file != None: - name = os.path.abspath(file.name) - file.close() - self.ap.delete(0,END) - self.ap.insert(END,name) - self.validate() - - def getAColor(self,color): - result = xasyColorPicker.xasyColorDlg(self).getColor(xasyColorPicker.makeRGBfromTkColor(color)) - return xasyColorPicker.RGB255hex(xasyColorPicker.RGBreal255(result)) - - def changeAxesColor(self): - self.ac = self.getAColor(self.ac) - - def changeGridColor(self): - self.gc = self.getAColor(self.gc) - - def changePenColor(self): - self.pc = self.getAColor(self.pc) - - def apply(self): - xasyOptions.options['externalEditor'] = self.ee.get() - xasyOptions.options['asyPath'] = self.ap.get() - xasyOptions.options['showDebug'] = bool(self.showDebug.get()) - - xasyOptions.options['defPenColor'] = self.pc - xasyOptions.options['defPenWidth'] = float(self.pw.get()) - xasyOptions.options['defPenOptions'] = self.po.get() - - xasyOptions.options['showAxes'] = bool(self.showAxes.get()) - xasyOptions.options['axesColor'] = self.ac - xasyOptions.options['tickColor'] = self.ac - xasyOptions.options['axisX'] = int(self.axs.get()) - xasyOptions.options['axisY'] = int(self.ays.get()) - xasyOptions.options['showGrid'] = bool(self.showGrid.get()) - xasyOptions.options['gridColor'] = self.gc - xasyOptions.options['gridX'] = int(self.gxs.get()) - xasyOptions.options['gridY'] = int(self.gys.get()) - xasyOptions.save() - - def validateAColor(self,color): - hexdigits = '0123456789abcdef' - if len(self.pc) != 7 or self.pc[0] != '#' or sum([1 for a in self.pc[1:] if a in hexdigits]) != 6: - return False - else: - return True - - def validate(self): - """Validate the data entered into the dialog""" - #validate the color - hexdigits = '0123456789abcdef' - if not self.validateAColor(self.pc): - messagebox.showerror("xasy Options","Invalid pen color.\r\n"+self.pc,parent=self) - return False - #validate the width - try: - test = float(self.pw.get()) - except: - messagebox.showerror("xasy Options","Pen width must be a number.",parent=self) - return False - - #validate the options - #nothing to do - - #validate the axis spacing - try: - test = int(self.axs.get()) - test = int(self.ays.get()) - except: - messagebox.showerror("xasy Options","Axes' x- and y-spacing must be numbers.",parent=self) - return False - - #validate the grid spacing - try: - test = int(self.gxs.get()) - test = int(self.gys.get()) - except: - messagebox.showerror("xasy Options","Grid's x- and y-spacing must be numbers.",parent=self) - return False - - if not self.validateAColor(self.ac): - messagebox.showerror("xasy Options","Invalid axis color.\r\n"+self.ac,parent=self) - return False - - if not self.validateAColor(self.gc): - messagebox.showerror("xasy Options","Invalid grid color.\r\n"+self.gc,parent=self) - return False - - return True - -if __name__ == '__main__': - root = Tk() - xasyOptions.load() - d = xasyOptionsDlg(root) - print (d.result) |