core-extra/daemon/core/gui/dialogs/dialog.py

44 lines
1.3 KiB
Python
Raw Normal View History

import tkinter as tk
from tkinter import ttk
2020-01-15 20:59:54 +00:00
from typing import TYPE_CHECKING
2019-12-19 17:30:21 +00:00
from core.gui.images import ImageEnum, Images
from core.gui.themes import DIALOG_PAD
2019-11-12 20:47:29 +00:00
2020-01-13 23:31:41 +00:00
if TYPE_CHECKING:
from core.gui.app import Application
class Dialog(tk.Toplevel):
2020-01-13 23:31:41 +00:00
def __init__(
2020-01-15 20:59:54 +00:00
self, master: tk.Widget, app: "Application", title: str, modal: bool = False
2020-01-13 23:31:41 +00:00
):
super().__init__(master)
self.withdraw()
self.app = app
self.modal = modal
self.title(title)
self.protocol("WM_DELETE_WINDOW", self.destroy)
image = Images.get(ImageEnum.CORE, 16)
self.tk.call("wm", "iconphoto", self._w, image)
self.columnconfigure(0, weight=1)
self.rowconfigure(0, weight=1)
self.top = ttk.Frame(self, padding=DIALOG_PAD)
self.top.grid(sticky="nsew")
def show(self):
self.transient(self.master)
self.focus_force()
self.update()
self.deiconify()
if self.modal:
self.wait_visibility()
self.grab_set()
self.wait_window()
2020-01-15 20:59:54 +00:00
def draw_spacer(self, row: int = None):
frame = ttk.Frame(self.top)
frame.grid(row=row, sticky="nsew")
frame.rowconfigure(0, weight=1)
self.top.rowconfigure(frame.grid_info()["row"], weight=1)