def unit_up(self, event): self.canvas.yview_scroll(-1, "unit") return "break" def unit_down(self, event): self.canvas.yview_scroll(1, "unit") return "break" def zoom_height(self, event): zoomheight.zoom_height(self.master) return "break" def _tree_widget(parent): # htest # top = Toplevel(parent) x, y = map(int, parent.geometry().split('+')[1:]) top.geometry("+%d+%d" % (x + 50, y + 175)) sc = ScrolledCanvas(top, bg="white", highlightthickness=0, takefocus=1) sc.frame.pack(expand=1, fill="both", side=LEFT) item = FileTreeItem(ICONDIR) node = TreeNode(sc.canvas, None, item) node.expand() if __name__ == '__main__': from unittest import main main('edit.edit_test.test_tree', verbosity=2, exit=False) from edit.edit_test.htest import run run(_tree_widget)
def _multistatus_bar(parent): # htest # from tkinter import Toplevel, Frame, Text, Button top = Toplevel(parent) x, y = map(int, parent.geometry().split('+')[1:]) top.geometry("+%d+%d" %(x, y + 175)) top.title("Test multistatus bar") frame = Frame(top) text = Text(frame, height=5, width=40) text.pack() msb = MultiStatusBar(frame) msb.set_label("one", "hello") msb.set_label("two", "world") msb.pack(side='bottom', fill='x') def change(): msb.set_label("one", "foo") msb.set_label("two", "bar") button = Button(top, text="Update status", command=change) button.pack(side='bottom') frame.pack() if __name__ == '__main__': from unittest import main main('edit.edit_test.test_statusbar', verbosity=2, exit=False) from edit.edit_test.htest import run run(_multistatus_bar)
t = type(object) if t in dispatch: c = dispatch[t] else: c = ObjectTreeItem return c(labeltext, object, setfunction) def _object_browser(parent): # htest # import sys from tkinter import Toplevel top = Toplevel(parent) top.title("Test debug object browser") x, y = map(int, parent.geometry().split('+')[1:]) top.geometry("+%d+%d" % (x + 100, y + 175)) top.configure(bd=0, bg="yellow") top.focus_set() sc = ScrolledCanvas(top, bg="white", highlightthickness=0, takefocus=1) sc.frame.pack(expand=1, fill="both") item = make_objecttreeitem("sys", sys) node = TreeNode(sc.canvas, None, item) node.update() if __name__ == '__main__': from unittest import main main('edit.edit_test.test_debugobj', verbosity=2, exit=False) from edit.edit_test.htest import run run(_object_browser)
x, y = map(int, parent.geometry().split('+')[1:]) box.geometry("+%d+%d" % (x, y + 175)) text = tk.Text(box) p = Percolator(text) pin = p.insertfilter pout = p.removefilter t1 = Tracer("t1") t2 = Tracer("t2") def toggle1(): (pin if var1.get() else pout)(t1) def toggle2(): (pin if var2.get() else pout)(t2) text.pack() var1 = tk.IntVar(parent) cb1 = tk.Checkbutton(box, text="Tracer1", command=toggle1, variable=var1) cb1.pack() var2 = tk.IntVar(parent) cb2 = tk.Checkbutton(box, text="Tracer2", command=toggle2, variable=var2) cb2.pack() if __name__ == "__main__": from unittest import main main('edit.edit_test.test_percolator', verbosity=2, exit=False) from edit.edit_test.htest import run run(_percolator)
"elif False: print(0)\n" "else: float(None)\n" "if iF + If + IF: 'keyword matching must respect case'\n" "if'': x or'' # valid string-keyword no-space combinations\n" "async def f(): await g()\n" "# All valid prefixes for unicode and byte strings should be colored.\n" "'x', '''x''', \"x\", \"\"\"x\"\"\"\n" "r'x', u'x', R'x', U'x', f'x', F'x'\n" "fr'x', Fr'x', fR'x', FR'x', rf'x', rF'x', Rf'x', RF'x'\n" "b'x',B'x', br'x',Br'x',bR'x',BR'x', rb'x', rB'x',Rb'x',RB'x'\n" "# Invalid combinations of legal characters should be half colored.\n" "ur'x', ru'x', uf'x', fu'x', UR'x', ufr'x', rfu'x', xf'x', fx'x'\n" ) text = Text(top, background="white") text.pack(expand=1, fill="both") text.insert("insert", source) text.focus_set() color_config(text) p = Percolator(text) d = ColorDelegator() p.insertfilter(d) if __name__ == "__main__": from unittest import main main('edit.edit_test.test_colorizer', verbosity=2, exit=False) from edit.edit_test.htest import run run(_color_delegator)
b = self.make_button("close", self.close) b.lower() class _searchbase(SearchDialogBase): # htest # "Create auto-opening dialog with no text connection." def __init__(self, parent): import re from edit import searchengine self.root = parent self.engine = searchengine.get(parent) self.create_widgets() print(parent.geometry()) width, height, x, y = list( map(int, re.split('[x+]', parent.geometry()))) self.top.geometry("+%d+%d" % (x + 40, y + 175)) def default_command(self, dummy): pass if __name__ == '__main__': from unittest import main main('edit.edit_test.test_searchbase', verbosity=2, exit=False) from edit.edit_test.htest import run run(_searchbase)
self.showerror(title=title, parent=self, message=msg) elif keys in key_sequences: msg = 'This key combination is already in use.' self.showerror(title=title, parent=self, message=msg) else: return True return False def bind_ok(self, keys): "Return True if Tcl accepts the new keys else show message." try: binding = self.bind(keys, lambda: None) except TclError as err: self.showerror( title=self.keyerror_title, parent=self, message=(f'The entered key sequence is not accepted.\n\n' f'Error: {err}')) return False else: self.unbind(keys, binding) return True if __name__ == '__main__': from unittest import main main('edit.edit_test.test_config_key', verbosity=2, exit=False) from edit.edit_test.htest import run run(GetKeysDialog)
def _undo_delegator(parent): # htest # from tkinter import Toplevel, Text, Button from edit.percolator import Percolator undowin = Toplevel(parent) undowin.title("Test UndoDelegator") x, y = map(int, parent.geometry().split('+')[1:]) undowin.geometry("+%d+%d" % (x, y + 175)) text = Text(undowin, height=10) text.pack() text.focus_set() p = Percolator(text) d = UndoDelegator() p.insertfilter(d) undo = Button(undowin, text="Undo", command=lambda: d.undo_event(None)) undo.pack(side='left') redo = Button(undowin, text="Redo", command=lambda: d.redo_event(None)) redo.pack(side='left') dump = Button(undowin, text="Dump", command=lambda: d.dump_event(None)) dump.pack(side='left') if __name__ == "__main__": from unittest import main main('edit.edit_test.test_undo', verbosity=2, exit=False) from edit.edit_test.htest import run run(_undo_delegator)
command=_setit(self.variable, item, self.command)) if value: self.variable.set(value) def _dyn_option_menu(parent): # htest # from tkinter import Toplevel # + StringVar, Button top = Toplevel(parent) top.title("Tets dynamic option menu") x, y = map(int, parent.geometry().split('+')[1:]) top.geometry("200x100+%d+%d" % (x + 250, y + 175)) top.focus_set() var = StringVar(top) var.set("Old option set") #Set the default value dyn = DynOptionMenu(top, var, "old1", "old2", "old3", "old4") dyn.pack() def update(): dyn.SetMenu(["new1", "new2", "new3", "new4"], value="new option set") button = Button(top, text="Change option set", command=update) button.pack() if __name__ == '__main__': from edit.edit_test.htest import run run(_dyn_option_menu)
from tkinter.ttk import Frame, Button top = Toplevel(parent) top.title("Test SearchDialog") x, y = map(int, parent.geometry().split('+')[1:]) top.geometry("+%d+%d" % (x, y + 175)) frame = Frame(top) frame.pack() text = Text(frame, inactiveselectbackground='gray') text.pack() text.insert("insert", "This is a sample string.\n" * 5) def show_find(): text.tag_add('sel', '1.0', 'end') _setup(text).open(text) text.tag_remove('sel', '1.0', 'end') button = Button(frame, text="Search (selection ignored)", command=show_find) button.pack() if __name__ == '__main__': from unittest import main main('edit.edit_test.test_search', verbosity=2, exit=False) from edit.edit_test.htest import run run(_search_dialog)
def _stack_viewer(parent): # htest # from edit.pyshell import PyShellFileList top = tk.Toplevel(parent) top.title("Test StackViewer") x, y = map(int, parent.geometry().split('+')[1:]) top.geometry("+%d+%d" % (x + 50, y + 175)) flist = PyShellFileList(top) try: # to obtain a traceback object intentional_name_error except NameError: exc_type, exc_value, exc_tb = sys.exc_info() # inject stack trace to sys sys.last_type = exc_type sys.last_value = exc_value sys.last_traceback = exc_tb StackBrowser(top, flist=flist, top=top, tb=exc_tb) # restore sys to original state del sys.last_type del sys.last_value del sys.last_traceback if __name__ == '__main__': from unittest import main main('edit.edit_test.test_stackviewer', verbosity=2, exit=False) from edit.edit_test.htest import run run(_stack_viewer)
text.pack() def bindseq(seq, n=[0]): def handler(event): print(seq) text.bind("<<handler%d>>" % n[0], handler) text.event_add("<<handler%d>>" % n[0], seq) n[0] += 1 bindseq("<Key>") bindseq("<Control-Key>") bindseq("<Alt-Key-a>") bindseq("<Control-Key-a>") bindseq("<Alt-Control-Key-a>") bindseq("<Key-b>") bindseq("<Control-Button-1>") bindseq("<Button-2>") bindseq("<Alt-Button-1>") bindseq("<FocusOut>") bindseq("<Enter>") bindseq("<Leave>") if __name__ == "__main__": from unittest import main main('edit.edit_test.test_mainmenu', verbosity=2, exit=False) from edit.edit_test.htest import run run(_multi_call)
title, text, _utest=self._utest) def display_file_text(self, title, filename, encoding=None): """Create textview for filename. The filename needs to be in the current directory. The path is sent to a text viewer with self as the parent, title as the title of the popup, and the file encoding. """ fn = os.path.join(os.path.abspath(os.path.dirname(__file__)), filename) self._current_textview = textview.view_file(self, title, fn, encoding, _utest=self._utest) def ok(self, event=None): "Dismiss help_about dialog." self.grab_release() self.destroy() if __name__ == '__main__': from unittest import main main('edit.edit_test.test_help_about', verbosity=2, exit=False) from edit.edit_test.htest import run run(AboutDialog)
def __call__(self, *args): return self.tk_call(self.orig_and_operation + args) def _widget_redirector(parent): # htest # from tkinter import Toplevel, Text top = Toplevel(parent) top.title("Test WidgetRedirector") x, y = map(int, parent.geometry().split('+')[1:]) top.geometry("+%d+%d" % (x, y + 175)) text = Text(top) text.pack() text.focus_set() redir = WidgetRedirector(text) def my_insert(*args): print("insert", args) original_insert(*args) original_insert = redir.register("insert", my_insert) if __name__ == "__main__": from unittest import main main('edit.edit_test.test_redirector', verbosity=2, exit=False) from edit.edit_test.htest import run run(_widget_redirector)
top.title("Test call-tips") x, y = map(int, parent.geometry().split('+')[1:]) top.geometry("250x100+%d+%d" % (x + 175, y + 150)) text = Text(top) text.pack(side=LEFT, fill=BOTH, expand=1) text.insert("insert", "string.split") top.update() calltip = CalltipWindow(text) def calltip_show(event): calltip.showtip("(s='Hello world')", "insert", "end") def calltip_hide(event): calltip.hidetip() text.event_add("<<calltip-show>>", "(") text.event_add("<<calltip-hide>>", ")") text.bind("<<calltip-show>>", calltip_show) text.bind("<<calltip-hide>>", calltip_hide) text.focus_set() if __name__ == '__main__': from unittest import main main('edit.edit_test.test_calltip_w', verbosity=2, exit=False) from edit.edit_test.htest import run run(_calltip_window)
modules = {} suffixes = importlib.machinery.EXTENSION_SUFFIXES[:] suffixes += importlib.machinery.SOURCE_SUFFIXES suffixes += importlib.machinery.BYTECODE_SUFFIXES sorted = [] for suff in suffixes: i = -len(suff) for name in allnames[:]: normed_name = os.path.normcase(name) if normed_name[i:] == suff: mod_name = name[:i] if mod_name not in modules: modules[mod_name] = None sorted.append((normed_name, name)) allnames.remove(name) sorted.sort() return sorted def _path_browser(parent): # htest # PathBrowser(parent, _htest=True) parent.mainloop() if __name__ == "__main__": from unittest import main main('edit.edit_test.test_pathbrowser', verbosity=2, exit=False) from edit.edit_test.htest import run run(_path_browser)
path = self.path.get().strip() if not path: #no path specified self.showerror('no help file path specified.', self.path_error) return None elif not path.startswith(('www.', 'http')): if path[:5] == 'file:': path = path[5:] if not os.path.exists(path): self.showerror('help file path does not exist.', self.path_error) return None if platform == 'darwin': # for Mac Safari path = "file://" + path return path def entry_ok(self): "Return apparently valid (name, path) or None" self.entry_error['text'] = '' self.path_error['text'] = '' name = self.item_ok() path = self.path_ok() return None if name is None or path is None else (name, path) if __name__ == '__main__': from unittest import main main('edit.edit_test.test_query', verbosity=2, exit=False) from edit.edit_test.htest import run run(Query, HelpSource)
return [ChildBrowserTreeItem(obj) for obj in transform_children(self.obj.children)] def OnDoubleClick(self): "Open module with file_open and position to lineno." try: edit = file_open(self.obj.file) edit.gotoline(self.obj.lineno) except (OSError, AttributeError): pass def _module_browser(parent): # htest # if len(sys.argv) > 1: # If pass file on command line. file = sys.argv[1] else: file = __file__ # Add nested objects for htest. class Nested_in_func(TreeNode): def nested_in_class(): pass def closure(): class Nested_in_closure: pass ModuleBrowser(parent, file, _htest=True) if __name__ == "__main__": if len(sys.argv) == 1: # If pass file on command line, unittest fails. from unittest import main main('edit.edit_test.test_browser', verbosity=2, exit=False) from edit.edit_test.htest import run run(_module_browser)
def undo_block_start(): pass def undo_block_stop(): pass frame = Frame(top) frame.pack() text = Text(frame, inactiveselectbackground='gray') text.undo_block_start = undo_block_start text.undo_block_stop = undo_block_stop text.pack() text.insert("insert", "This is a sample sTring\nPlus MORE.") text.focus_set() def show_replace(): text.tag_add(SEL, "1.0", END) replace(text) text.tag_remove(SEL, "1.0", END) button = Button(frame, text="Replace", command=show_replace) button.pack() if __name__ == '__main__': from unittest import main main('edit.edit_test.test_replace', verbosity=2, exit=False) from edit.edit_test.htest import run run(_replace_dialog)
label = Label(self.tipwindow, text=self.text, justify=LEFT, background="#ffffe0", relief=SOLID, borderwidth=1) label.pack() def _tooltip(parent): # htest # top = Toplevel(parent) top.title("Test tooltip") x, y = map(int, parent.geometry().split('+')[1:]) top.geometry("+%d+%d" % (x, y + 150)) label = Label(top, text="Place your mouse over buttons") label.pack() button1 = Button(top, text="Button 1 -- 1/2 second hover delay") button1.pack() Hovertip(button1, "This is tooltip text for button1.", hover_delay=500) button2 = Button(top, text="Button 2 -- no hover delay") button2.pack() Hovertip(button2, "This is tooltip\ntext for button2.", hover_delay=None) if __name__ == '__main__': from unittest import main main('edit.edit_test.test_tooltip', verbosity=2, exit=False) from edit.edit_test.htest import run run(_tooltip)
Return error message if file cannot be read. Otherwise calls view_text with contents of the file. """ try: with open(filename, 'r', encoding=encoding) as file: contents = file.read() except OSError: showerror(title='File Load Error', message=f'Unable to load file {filename!r} .', parent=parent) except UnicodeDecodeError as err: showerror(title='Unicode Decode Error', message=str(err), parent=parent) else: return view_text(parent, title, contents, modal, wrap=wrap, _utest=_utest) return None if __name__ == '__main__': from unittest import main main('edit.edit_test.test_textview', verbosity=2, exit=False) from edit.edit_test.htest import run run(ViewWindow)