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