diff --git a/gradint-build/mac/start-gradint.app/espeak-OSX.zip b/gradint-build/mac/start-gradint.app/espeak-OSX.zip index 165f255cdf2a63cdf7de58647f235103f2d55a2b..5db422bcf1f8bd3c2a652941af6c442baa9fd9a7 100644 Binary files a/gradint-build/mac/start-gradint.app/espeak-OSX.zip and b/gradint-build/mac/start-gradint.app/espeak-OSX.zip differ diff --git a/gradint-build/src/frontend.py b/gradint-build/src/frontend.py index 7595006fc0aeaf14de3d3b5930fef22742dcbe59..a18f18539031dfba4b4e6e5db4b8e17f9caa06d0 100644 --- a/gradint-build/src/frontend.py +++ b/gradint-build/src/frontend.py @@ -262,25 +262,28 @@ def make_output_row(parent): if not hasattr(app,"scriptVariant"): app.scriptVariant = Tkinter.StringVar(app) count = 0 for variant in GUI_translations["@variants-"+firstLanguage]: - Tkinter.Radiobutton(row, text=u" "+variant+u" ", variable=app.scriptVariant, value=str(count), indicatoron=0).pack({"side":"left"}) + Tkinter.Radiobutton(row, text=u" "+variant+u" ", variable=app.scriptVariant, value=str(count), indicatoron=forceRadio).pack({"side":"left"}) count += 1 app.scriptVariant.set(str(scriptVariants.get(firstLanguage,0))) if not gotSox: return row # can't do any file output without sox - if not hasattr(app,"outputTo"): app.outputTo = Tkinter.StringVar(app) # NB app not parent (as parent is no longer app) + if not hasattr(app,"outputTo"): + app.outputTo = Tkinter.StringVar(app) # NB app not parent (as parent is no longer app) + app.outputTo.set("0") # not "" or get tri-state boxes on OS X 10.6 if not row: row = Tkinter.Frame(parent) row.pack(fill=Tkinter.X,expand=1) rightrow = addRightRow(row) # to show beginners this row probably isn't the most important thing despite being in a convenient place, we'll right-align def addFiletypeButton(fileType): - t = Tkinter.Radiobutton(rightrow, text=" "+fileType.upper()+" ", variable=app.outputTo, value=fileType, indicatoron=0) + ftu = fileType.upper() + t = Tkinter.Radiobutton(rightrow, text=" "+ftu+" ", variable=app.outputTo, value=fileType, indicatoron=forceRadio) bindUpDown(t,True) - addStatus(t,"Select this to save a lesson or\na phrase to a%s %s file" % (cond(fileType[0] in "AEFHILMNORSX","n",""),fileType)) + addStatus(t,"Select this to save a lesson or\na phrase to a%s %s file" % (cond(ftu[0] in "AEFHILMNORSX","n",""),ftu)) t.pack({"side":"left"}) if winsound or mingw32: got_windows_encoder = fileExists(programFiles+"\\Windows Media Components\\Encoder\\WMCmd.vbs") elif cygwin: got_windows_encoder = fileExists(programFiles+"/Windows Media Components/Encoder/WMCmd.vbs") else: got_windows_encoder = 0 Tkinter.Label(rightrow,text=localise("To")+":").pack({"side":"left"}) - t=Tkinter.Radiobutton(rightrow, text=" "+localise("Speaker")+" ", variable=app.outputTo, value="", indicatoron=0) + t=Tkinter.Radiobutton(rightrow, text=" "+localise("Speaker")+" ", variable=app.outputTo, value="0", indicatoron=forceRadio) # (must be value="0" not value="" for OS X 10.6 otherwise the other buttons become tri-state) addStatus(t,"Select this to send all sounds to\nthe speaker, not to files on disk") bindUpDown(t,True) t.pack({"side":"left"}) @@ -513,12 +516,14 @@ def startTk(): else: v=0 if not v==scriptVariants.get(firstLanguage,0): self.setVariant(v) if hasattr(self,"outputTo"): + outTo = self.outputTo.get() + if outTo=="0": outTo="" if hasattr(self,"TestTextButton"): - if self.outputTo.get(): self.TestTextButton["text"]=localise("To")+" "+self.outputTo.get().upper() + if outTo: self.TestTextButton["text"]=localise("To")+" "+outTo.upper() else: self.TestTextButton["text"]=localise("Speak") # used to be called "Test" instead of "Speak", but some people didn't understand that THEY'RE doing the testing (not the computer) if hasattr(self,"MakeLessonButton"): - if self.outputTo.get(): self.MakeLessonButton["text"]=localise("Make")+" "+self.outputTo.get().upper() + if outTo: self.MakeLessonButton["text"]=localise("Make")+" "+outTo.upper() else: self.MakeLessonButton["text"]=localise("Start lesson") # less confusing for beginners than "Make lesson", if someone else has set up the words if hasattr(self,"BriefIntButton"): if emergency_lessonHold_to < time.time(): t=localise("Brief interrupt") @@ -1496,7 +1501,7 @@ def transliterates_differently(text,lang): gui_output_counter = 1 def gui_outputTo_start(): - if hasattr(app,"outputTo") and app.outputTo.get(): + if hasattr(app,"outputTo") and app.outputTo.get() and not app.outputTo.get()=="0": global outputFile ; outputFile=None try: os.mkdir(gui_output_directory) except: pass diff --git a/gradint-build/src/users.py b/gradint-build/src/users.py index bc6523d6a529854309207aea967ec7f7577aadcd..86d83afe695ec5eec7bbbb62fa8b087bdb608b35 100644 --- a/gradint-build/src/users.py +++ b/gradint-build/src/users.py @@ -14,6 +14,8 @@ settingsFile = "settings"+dottxt user0 = (samplesDirectory,vocabFile,progressFile,progressFileBackup,pickledProgressFile,settingsFile) +forceRadio = cond(macsound and sys.version_info >= (2,6),1,0) # OS X 10.6 doesn't display indicatoron=0 very well + def addUserToFname(fname,userNo): if not userNo or not fname: return fname elif os.sep in fname: return fname+"-user"+str(userNo) @@ -89,9 +91,10 @@ def updateUserRow(fromMainMenu=0): r=Tkinter.Radiobutton(row, text=names[i], variable=app.userNo, value=str(i), takefocus=0) r.grid(row=i+1,column=0,sticky="w") r["command"]=lambda i=i,*args: select_userNumber(i) - r2=Tkinter.Radiobutton(row, text="Select", variable=app.userNo, value=str(i), indicatoron=0) ; bindUpDown(r2,True) - r2.grid(row=i+1,column=1,sticky="e") - r2["command"]=lambda i=i,*args: select_userNumber(i) + if not forceRadio: + r2=Tkinter.Radiobutton(row, text="Select", variable=app.userNo, value=str(i), indicatoron=0) ; bindUpDown(r2,True) + r2.grid(row=i+1,column=1,sticky="e") + r2["command"]=lambda i=i,*args: select_userNumber(i) addButton(row,"Rename",lambda e=None,i=i,r=r,row=row:renameUser(i,r,row),"nopack").grid(row=i+1,column=2,sticky="e") addButton(row,"Delete",lambda e=None,i=i:deleteUser(i),"nopack").grid(row=i+1,column=3,sticky="e") else: diff --git a/gradint-build/windows/espeak-windows.7z b/gradint-build/windows/espeak-windows.7z index 1942f46d4a33d7b2763c73ddd81265989fc0c95a..a1529ac660776630535fd4846393080b709c9a2c 100644 Binary files a/gradint-build/windows/espeak-windows.7z and b/gradint-build/windows/espeak-windows.7z differ