'''
Created on Jan 7, 2018

@author: aditya

This program demonstrates use of Toplevel windows in TKINTER
'''

import tkinter as tk
from tkinter import ttk

class TopLevelApp:
    def __init__(self, master):
        self.master = master
        master.title('Master')
        self.pop_btn = ttk.Button(master, text = 'Show Pop-up', command = self.getPop)
        self.pop_btn.pack()
        self.master.config(padx = 100, pady=50)
        
    def getPop(self):
        self.window  = tk.Toplevel(self.master)
        self.window.title('Popped')
        self.window.grab_set()
        ttk.Button(self.window, text = 'Hide Master', command = self.hideMaster).pack()
        ttk.Button(self.window, text = 'Normalize Master window', command = self.getMaster).pack()
        self.window.config(padx = 100, pady=50)
        ttk.Button(self.window, text = 'Create pop-up', command = self.getPopup).pack()
        ttk.Button(self.window, text = 'Iconify(Minimize)', command = self.iconifywindow).pack()
        
    def iconifywindow(self):
        self.window.iconify()
        
    def getPopup(self):
        self.window2  = tk.Toplevel(self.window)
        self.window2.title('Popped Up')
        self.window2.config(padx = 25, pady=25)
        self.window2.maxsize(640, 480)
        self.window2.minsize(300, 400)
        self.window2.geometry('640x480+60+60')
        self.window2.grab_set()
        ttk.Button(self.window2, text = 'Minimize', command = self.minimizePopUp).pack()
        ttk.Button(self.window2, text = 'Maximize', command = self.maximizePopUp).pack()
        ttk.Button(self.window2, text = 'Normalize', command = self.normalizePopUp).pack()
        ttk.Button(self.window2, text = 'Resize Window - TRUE', command = self.makeResizeTrue).pack()
        ttk.Button(self.window2, text = 'Resize Window - FALSE', command = self.makeResizeFalse).pack()
        ttk.Button(self.window2, text = 'Close', command = self.closewindow).pack()
    
    def makeResizeTrue(self):
        self.window2.resizable(True, True)
    
    def makeResizeFalse(self):
        self.window2.resizable(False, False)
        
    def getMaster(self):
        self.master.state('normal')
        self.window.grab_set()
        
    def hideMaster(self):
        self.master.state('withdrawn')
        
    def minimizePopUp(self):
        self.window2.state('iconic')
    
    def maximizePopUp(self):
        self.window2.state('zoomed')
        
    def normalizePopUp(self):
        self.window2.state('normal')
        
    def closewindow(self):
        self.window2.destroy()
        
def launchTopLevelApp():
    root = tk.Tk()
    TopLevelApp(root)
    tk.mainloop()
    
if __name__=='__main__':
    launchTopLevelApp()