def __init__(self, parent=None): g.QWidget.__init__(self, parent) self._io = IO.EdittimeIO() self._layout = g.QVBoxLayout() layout = g.QHBoxLayout() openB = g.QPushButton("Open") saveB = g.QPushButton("Save") layout.addWidget(openB) layout.addWidget(saveB) self._layout.addLayout(layout) openB.clicked.connect(self.openFile) saveB.clicked.connect(self.saveFile) self._layout.addWidget(g.QLabel("<b>Global settings</b>")) layout = g.QHBoxLayout() layout.addWidget(g.QLabel("Calculation step")) self._step = g.QLineEdit() self._step.setValidator(DoubleValidator("0.010", 1e-8, 1e8, 8)) layout.addWidget(self._step) layout.addWidget(g.QLabel("Gravity constant")) self._g = g.QLineEdit() self._g.setValidator(DoubleValidator("1.0", -1e8, 1e8, 8)) layout.addWidget(self._g) layout.addWidget(g.QLabel("Initial time")) self._t = g.QLineEdit() self._t.setValidator(DoubleValidator("1", 1e-8, 1e8, 8)) layout.addWidget(self._t) self._layout.addLayout(layout) layout = g.QHBoxLayout() layout.addWidget(g.QLabel("Recursion depth")) self._r = g.QLineEdit() self._r.setValidator(IntValidator("0", 0, 1e5)) layout.addWidget(self._r) layout.addWidget(g.QLabel("Recursive coefficient")) self._o = g.QLineEdit() self._o.setValidator(DoubleValidator("0", 0, 2, 8)) layout.addWidget(self._o) layout.addWidget(g.QLabel("Thread count")) self._numt = g.QLineEdit() self._numt.setValidator(IntValidator("0", 0, 1e3)) layout.addWidget(self._numt) self._aplfx = g.QCheckBox("Fix applied") layout.addWidget(self._aplfx) self._layout.addLayout(layout) layout = g.QHBoxLayout() layout.addWidget(g.QLabel("Drawing scale")) self._scale = g.QLineEdit() self._scale.setValidator(DoubleValidator("10000", 1e-8, 1e8, 8)) layout.addWidget(self._scale) layout.addWidget(g.QLabel("Step per frame")) self._step_count = g.QLineEdit() self._step_count.setValidator(IntValidator("10", 1, 1e8)) layout.addWidget(self._step_count) layout.addWidget(g.QLabel("Frame interval")) self._interval = g.QLineEdit() self._interval.setValidator(IntValidator("20", 1, 1e8)) layout.addWidget(self._interval) self._layout.addLayout(layout) layout = g.QHBoxLayout() layout.addWidget(g.QLabel("Plane scale")) self._plane_scale = g.QLineEdit() self._plane_scale.setValidator(DoubleValidator("12000", 1e-8, 1e8, 8)) layout.addWidget(self._plane_scale) layout.addWidget(g.QLabel("Plane cell density")) self._cell_density = g.QLineEdit() self._cell_density.setValidator(IntValidator("20", 1, 1e8)) layout.addWidget(self._cell_density) button = g.QPushButton("Set plane color") self._plane_color = g.QColor() def setPlaneColor(): color = g.QColorDialog(self._plane_color, self) if color.exec_(): self._plane_color = color.selectedColor() button.clicked.connect(setPlaneColor) layout.addWidget(button) self._layout.addLayout(layout) layout = g.QHBoxLayout() layout.addWidget(g.QLabel("Trace buffer size")) self._trace_buffer_size = g.QLineEdit() self._trace_buffer_size.setValidator(IntValidator("1000", 0, 1e8)) layout.addWidget(self._trace_buffer_size) layout.addWidget(g.QLabel("Axis length")) self._axis_length = g.QLineEdit() self._axis_length.setValidator(IntValidator("20", 0, 1e8)) layout.addWidget(self._axis_length) button = g.QPushButton("Set Axis color") self._axis_color = g.QColor() def setAxisColor(): color = g.QColorDialog(self._axis_color, self) if color.exec_(): self._axis_color = color.selectedColor() button.clicked.connect(setAxisColor) layout.addWidget(button) self._layout.addLayout(layout) layout = g.QHBoxLayout() layout.addWidget(g.QLabel("Line width")) self._line_width = g.QLineEdit() self._line_width.setValidator(DoubleValidator("1", 1e-8, 1e8, 8)) layout.addWidget(self._line_width) layout.addWidget(g.QLabel("Line drawing interval")) self._line_drawing_interval = g.QLineEdit() self._line_drawing_interval.setValidator(IntValidator("5", 1, 1e8)) layout.addWidget(self._line_drawing_interval) self._show_shadow_line = g.QCheckBox("Show shadow line") layout.addWidget(self._show_shadow_line) self._layout.addLayout(layout) layout = g.QHBoxLayout() self._layout.addLayout(layout) self._treeWidget = g.QTreeWidget() self._treeWidget.setHeaderLabels(["ID", "Name", "Mass", "Radius"]) self._treeWidget.currentItemChanged.connect(self._select_handle) self._enable_lighting = g.QCheckBox("Lighting") layout.addWidget(self._enable_lighting) self._enable_multi_sampling = g.QCheckBox("Multi-sampling") layout.addWidget(self._enable_multi_sampling) layout.addWidget(g.QLabel("Smooth")) self._smooth = g.QComboBox() self._smooth.insertItems(0, ["Off", "Normal", "Best"]) layout.addWidget(self._smooth) layout.addWidget(g.QLabel("Default sphere style")) self._default_style = g.QComboBox() self._default_style.insertItems(0, ["Wired", "Solid"]) layout.addWidget(self._default_style) self._layout.addWidget(self._treeWidget) layout = g.QHBoxLayout() layout.addWidget(g.QLabel("Name (optional)")) self._name = g.QLineEdit() layout.addWidget(self._name) layout.addWidget(g.QLabel("Mass")) self._mass = g.QLineEdit() self._mass.setValidator(DoubleValidator("1", -1e8, 1e8, 8)) layout.addWidget(self._mass) layout.addWidget(g.QLabel("Radius")) self._radius = g.QLineEdit() self._radius.setValidator(DoubleValidator("1", 1e-8, 1e8, 8)) layout.addWidget(self._radius) self._layout.addLayout(layout) self._px = g.QLineEdit() self._py = g.QLineEdit() self._pz = g.QLineEdit() self._px.setValidator(DoubleValidator("0", -1e8, 1e8, 8)) self._py.setValidator(DoubleValidator("0", -1e8, 1e8, 8)) self._pz.setValidator(DoubleValidator("0", -1e8, 1e8, 8)) layout = g.QHBoxLayout() layout.addWidget(g.QLabel("X")) layout.addWidget(self._px) layout.addWidget(g.QLabel("Y")) layout.addWidget(self._py) layout.addWidget(g.QLabel("Z")) layout.addWidget(self._pz) self._layout.addLayout(layout) self._vx = g.QLineEdit() self._vy = g.QLineEdit() self._vz = g.QLineEdit() self._vx.setValidator(DoubleValidator("0", -1e8, 1e8, 8)) self._vy.setValidator(DoubleValidator("0", -1e8, 1e8, 8)) self._vz.setValidator(DoubleValidator("0", -1e8, 1e8, 8)) layout = g.QHBoxLayout() layout.addWidget(g.QLabel("Vx")) layout.addWidget(self._vx) layout.addWidget(g.QLabel("Vy")) layout.addWidget(self._vy) layout.addWidget(g.QLabel("Vz")) layout.addWidget(self._vz) self._layout.addLayout(layout) layout = g.QHBoxLayout() layout.addWidget(g.QLabel("Graphical settings:")) layout.addWidget(g.QLabel("Radius")) self._graphic_radius = g.QLineEdit() self._graphic_radius.setValidator(DoubleValidator("1", 1e-8, 1e8, 8)) layout.addWidget(self._graphic_radius) layout.addWidget(g.QLabel("Style")) self._style = g.QComboBox() self._style.insertItems(0, ["Wired", "Solid"]) layout.addWidget(self._style) button = g.QPushButton("Set graphic color") self._graphic_color = g.QColor(153, 204, 255) def setGraphicColor(): color = g.QColorDialog(self._graphic_color, self) if color.exec_(): self._graphic_color = color.selectedColor() button.clicked.connect(setGraphicColor) layout.addWidget(button) self._layout.addLayout(layout) layout = g.QHBoxLayout() updateB = g.QPushButton("Update") addB = g.QPushButton("Add") delB = g.QPushButton("Delete") layout.addWidget(updateB) layout.addWidget(addB) layout.addWidget(delB) self._layout.addLayout(layout) self.setWindowTitle("System Editor") self.setLayout(self._layout) self.resize(600, 600) self.setDefaults() self.dataUpdated.connect(self.updateDisplayedData) updateB.clicked.connect(self._update_handle) addB.clicked.connect(self._add_handle) delB.clicked.connect(self._del_handle)