17db96d56Sopenharmony_ci# base class for tk common dialogues 27db96d56Sopenharmony_ci# 37db96d56Sopenharmony_ci# this module provides a base class for accessing the common 47db96d56Sopenharmony_ci# dialogues available in Tk 4.2 and newer. use filedialog, 57db96d56Sopenharmony_ci# colorchooser, and messagebox to access the individual 67db96d56Sopenharmony_ci# dialogs. 77db96d56Sopenharmony_ci# 87db96d56Sopenharmony_ci# written by Fredrik Lundh, May 1997 97db96d56Sopenharmony_ci# 107db96d56Sopenharmony_ci 117db96d56Sopenharmony_ci__all__ = ["Dialog"] 127db96d56Sopenharmony_ci 137db96d56Sopenharmony_cifrom tkinter import Frame, _get_temp_root, _destroy_temp_root 147db96d56Sopenharmony_ci 157db96d56Sopenharmony_ci 167db96d56Sopenharmony_ciclass Dialog: 177db96d56Sopenharmony_ci 187db96d56Sopenharmony_ci command = None 197db96d56Sopenharmony_ci 207db96d56Sopenharmony_ci def __init__(self, master=None, **options): 217db96d56Sopenharmony_ci if master is None: 227db96d56Sopenharmony_ci master = options.get('parent') 237db96d56Sopenharmony_ci self.master = master 247db96d56Sopenharmony_ci self.options = options 257db96d56Sopenharmony_ci 267db96d56Sopenharmony_ci def _fixoptions(self): 277db96d56Sopenharmony_ci pass # hook 287db96d56Sopenharmony_ci 297db96d56Sopenharmony_ci def _fixresult(self, widget, result): 307db96d56Sopenharmony_ci return result # hook 317db96d56Sopenharmony_ci 327db96d56Sopenharmony_ci def show(self, **options): 337db96d56Sopenharmony_ci 347db96d56Sopenharmony_ci # update instance options 357db96d56Sopenharmony_ci for k, v in options.items(): 367db96d56Sopenharmony_ci self.options[k] = v 377db96d56Sopenharmony_ci 387db96d56Sopenharmony_ci self._fixoptions() 397db96d56Sopenharmony_ci 407db96d56Sopenharmony_ci master = self.master 417db96d56Sopenharmony_ci if master is None: 427db96d56Sopenharmony_ci master = _get_temp_root() 437db96d56Sopenharmony_ci try: 447db96d56Sopenharmony_ci self._test_callback(master) # The function below is replaced for some tests. 457db96d56Sopenharmony_ci s = master.tk.call(self.command, *master._options(self.options)) 467db96d56Sopenharmony_ci s = self._fixresult(master, s) 477db96d56Sopenharmony_ci finally: 487db96d56Sopenharmony_ci _destroy_temp_root(master) 497db96d56Sopenharmony_ci 507db96d56Sopenharmony_ci return s 517db96d56Sopenharmony_ci 527db96d56Sopenharmony_ci def _test_callback(self, master): 537db96d56Sopenharmony_ci pass 54