コード例 #1
0
    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)