Source code for vasp_step.tk_vasp

# -*- coding: utf-8 -*-

"""The graphical part of a VASP step"""

import pprint  # noqa: F401
import tkinter as tk  # noqa: F401

import vasp_step  # noqa: F401
import seamm
from seamm_util import ureg, Q_, units_class  # noqa: F401


[docs] class TkVASP(seamm.TkNode): """ The graphical part of a VASP step in a flowchart. Attributes ---------- tk_flowchart : TkFlowchart = None The flowchart that we belong to. node : Node = None The corresponding node of the non-graphical flowchart canvas: tkCanvas = None The Tk Canvas to draw on dialog : Dialog The Pmw dialog object x : int = None The x-coordinate of the center of the picture of the node y : int = None The y-coordinate of the center of the picture of the node w : int = 200 The width in pixels of the picture of the node h : int = 50 The height in pixels of the picture of the node self[widget] : dict A dictionary of tk widgets built using the information contained in VASP_parameters.py See Also -------- VASP, TkVASP, VASPParameters, """ def __init__( self, tk_flowchart=None, node=None, namespace="org.molssi.seamm.vasp.tk", canvas=None, x=None, y=None, w=200, h=50, ): """ Initialize a graphical node. Parameters ---------- tk_flowchart: Tk_Flowchart The graphical flowchart that we are in. node: Node The non-graphical node for this step. namespace: str The stevedore namespace for finding sub-nodes. canvas: Canvas The Tk canvas to draw on. x: float The x position of the nodes center on the canvas. y: float The y position of the nodes cetner on the canvas. w: float The nodes graphical width, in pixels. h: float The nodes graphical height, in pixels. Returns ------- None """ self.namespace = namespace self.dialog = None super().__init__( tk_flowchart=tk_flowchart, node=node, canvas=canvas, x=x, y=y, w=w, h=h, ) self.create_dialog()
[docs] def create_dialog(self): """ Create the dialog. A set of widgets will be chosen by default based on what is specified in the VASP_parameters module. Parameters ---------- None Returns ------- None See Also -------- TkVASP.reset_dialog """ frame = super().create_dialog(title="VASP") # make it large! screen_w = self.dialog.winfo_screenwidth() screen_h = self.dialog.winfo_screenheight() w = int(0.9 * screen_w) h = int(0.8 * screen_h) x = int(0.05 * screen_w / 2) y = int(0.1 * screen_h / 2) self.dialog.geometry(f"{w}x{h}+{x}+{y}") self.tk_subflowchart = seamm.TkFlowchart( master=frame, flowchart=self.node.subflowchart, namespace=self.namespace ) self.tk_subflowchart.draw()
[docs] def right_click(self, event): """ Handles the right click event on the node. Parameters ---------- event : Tk Event Returns ------- None See Also -------- TkVASP.edit """ super().right_click(event) self.popup_menu.add_command(label="Edit..", command=self.edit) self.popup_menu.tk_popup(event.x_root, event.y_root, 0)