public boolean visualConfigure(Frame parent) { // First check for Python. boolean hasPython = PythonUtils.interactiveCheckVersion( parent, "Generating gcode", new PythonUtils.Version(2, 5, 0), new PythonUtils.Version(3, 0, 0)); if (!hasPython) { return false; } boolean hasTkInter = PythonUtils.interactiveCheckTkInter(parent, "Generating gcode"); if (!hasTkInter) { return false; } ConfigurationDialog cd = new ConfigurationDialog(parent); double x = parent.getBounds().getCenterX(); double y = parent.getBounds().getCenterY(); cd.pack(); x -= cd.getWidth() / 2.0; y -= cd.getHeight() / 2.0; cd.setLocation((int) x, (int) y); cd.setVisible(true); return configSuccess; }