core-extra/coretk/coretk/app.py
2019-10-24 16:50:24 -07:00

117 lines
3.7 KiB
Python

import logging
import tkinter as tk
import coretk.images as images
from coretk.coregrpc import CoreGrpc
from coretk.coremenubar import CoreMenubar
from coretk.coretoolbar import CoreToolbar
from coretk.graph import CanvasGraph
from coretk.images import ImageEnum, Images
from coretk.menuaction import MenuAction
class Application(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.load_images()
self.setup_app()
self.menubar = None
self.core_menu = None
self.canvas = None
self.core_editbar = None
self.core_grpc = None
self.create_menu()
self.create_widgets()
self.draw_canvas()
self.start_grpc()
# self.try_make_table()
def load_images(self):
"""
Load core images
:return:
"""
images.load_core_images(Images)
def setup_app(self):
self.master.title("CORE")
self.master.geometry("1000x800")
image = Images.get(ImageEnum.CORE.value)
self.master.tk.call("wm", "iconphoto", self.master._w, image)
self.pack(fill=tk.BOTH, expand=True)
def create_menu(self):
self.master.option_add("*tearOff", tk.FALSE)
self.menubar = tk.Menu(self.master)
self.core_menu = CoreMenubar(self, self.master, self.menubar)
self.core_menu.create_core_menubar()
self.master.config(menu=self.menubar)
def create_widgets(self):
edit_frame = tk.Frame(self)
edit_frame.pack(side=tk.LEFT, fill=tk.Y, ipadx=2, ipady=2)
self.core_editbar = CoreToolbar(self.master, edit_frame, self.menubar)
self.core_editbar.create_toolbar()
def draw_canvas(self):
self.canvas = CanvasGraph(
master=self,
grpc=self.core_grpc,
background="#cccccc",
scrollregion=(0, 0, 1200, 1000),
)
self.canvas.pack(fill=tk.BOTH, expand=True)
self.core_editbar.update_canvas(self.canvas)
scroll_x = tk.Scrollbar(
self.canvas, orient=tk.HORIZONTAL, command=self.canvas.xview
)
scroll_x.pack(side=tk.BOTTOM, fill=tk.X)
scroll_y = tk.Scrollbar(self.canvas, command=self.canvas.yview)
scroll_y.pack(side=tk.RIGHT, fill=tk.Y)
self.canvas.configure(xscrollcommand=scroll_x.set)
self.canvas.configure(yscrollcommand=scroll_y.set)
status_bar = tk.Frame(self)
status_bar.pack(side=tk.BOTTOM, fill=tk.X)
b = tk.Button(status_bar, text="Button 1")
b.pack(side=tk.LEFT, padx=1)
b = tk.Button(status_bar, text="Button 2")
b.pack(side=tk.LEFT, padx=1)
b = tk.Button(status_bar, text="Button 3")
b.pack(side=tk.LEFT, padx=1)
def start_grpc(self):
"""
Conect client to grpc, query sessions and prompt use to choose an existing session if there exist any
:return: nothing
"""
self.master.update()
self.core_grpc = CoreGrpc(self)
self.core_grpc.set_up()
self.canvas.core_grpc = self.core_grpc
self.canvas.grpc_manager.core_grpc = self.core_grpc
self.canvas.grpc_manager.update_preexisting_ids()
self.canvas.draw_existing_component()
def on_closing(self):
menu_action = MenuAction(self, self.master)
menu_action.on_quit()
# self.quit()
def try_make_table(self):
f = tk.Frame(self.master)
for i in range(3):
e = tk.Entry(f)
e.grid(row=0, column=1, stick="nsew")
f.pack(side=tk.TOP)
if __name__ == "__main__":
logging.basicConfig(level=logging.DEBUG)
app = Application()
app.master.protocol("WM_DELETE_WINDOW", app.on_closing)
app.mainloop()