diff --git a/README.md b/README.md index df63262..cb1c23d 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,13 @@ I just like this FFX game design idea and I want to test some python tools I hav No clear roadmap, just 2D graphics fun -# Roadmap ideas +# Progress + +If you want an idea and the latest render + +![latest render of the program](./screenshot.png) + +## Roadmap ideas - [ ] seeded RNG - [ ] pattern: classic circles, line to connect far away patterns diff --git a/grid/ui/items.py b/grid/ui/items.py index 4d1ea83..eabd73d 100644 --- a/grid/ui/items.py +++ b/grid/ui/items.py @@ -1,3 +1,5 @@ +import logging + from PySide6.QtCore import QRectF, Qt from PySide6.QtGui import QBrush, QPainter, QPen from PySide6.QtWidgets import ( @@ -28,10 +30,8 @@ class SphereGraphicsItem(QGraphicsEllipseItem): ) self.x_pos = x_pos - self.SPHERE_WIDTH / 2 self.y_pos = y_pos - self.SPHERE_WIDTH / 2 - print(f"sphere at {self.x_pos}:{self.y_pos}") + logging.debug(f"sphere at {self.x_pos}:{self.y_pos}") - # self.setPos(self.x_pos - self.SPHERE_WIDTH/2, self.y_pos - self.SPHERE_WIDTH/2) - # super().moveBy(x_pos - center.x(), y_pos - center.y()) brush = QBrush(Qt.GlobalColor.darkBlue) self.setBrush(brush) pen = QPen(Qt.GlobalColor.blue) @@ -74,8 +74,13 @@ class ArcGraphicsItem(QGraphicsItem): self.angle_end = angle_end self.draw_angle_start = int(angle_start / 16) self.draw_angle_end = int(angle_end * 16) - print( - f"arc from {self.x_pos}:{self.y_pos} of {self.width} {self.angle_start}° {self.angle_end}°" + logging.debug( + "arc from %s:%s of %s from %s° to %s°", + self.x_pos, + self.y_pos, + self.width, + self.angle_start, + self.angle_end, ) def paint( @@ -107,7 +112,7 @@ class LineGraphicsItem(QGraphicsItem): parent: QGraphicsItem | None = ..., ) -> None: super().__init__(parent) - print(f"line from {begin_x}:{begin_y} to {end_x}:{end_y}") + logging.debug(f"line from {begin_x}:{begin_y} to {end_x}:{end_y}") self.begin_x = begin_x self.begin_y = begin_y self.end_x = end_x diff --git a/grid/ui/light.py b/grid/ui/light.py deleted file mode 100644 index a057c82..0000000 --- a/grid/ui/light.py +++ /dev/null @@ -1,115 +0,0 @@ -# Copyright (C) 2010 velociraptor Genjix -# Copyright (C) 2022 The Qt Company Ltd. -# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -import sys - -from PySide6.QtCore import QTimer, Qt, Property, Slot -from PySide6.QtGui import QPainter, QPalette -from PySide6.QtWidgets import QApplication, QVBoxLayout, QWidget -from PySide6.QtStateMachine import QFinalState, QState, QStateMachine - - -class LightWidget(QWidget): - def __init__(self, color): - super().__init__() - self.color = color - self._on_val = False - - def is_on(self): - return self._on_val - - def set_on(self, on): - if self._on_val == on: - return - self._on_val = on - self.update() - - @Slot() - def turn_off(self): - self.set_on(False) - - @Slot() - def turn_on(self): - self.set_on(True) - - def paintEvent(self, e): - if not self._on_val: - return - with QPainter(self) as painter: - painter.setRenderHint(QPainter.Antialiasing) - painter.setBrush(self.color) - painter.drawEllipse(0, 0, self.width(), self.height()) - - on = Property(bool, is_on, set_on) - - -class TrafficLightWidget(QWidget): - def __init__(self): - super().__init__() - vbox = QVBoxLayout(self) - self._red_light = LightWidget(Qt.red) - vbox.addWidget(self._red_light) - self._yellow_light = LightWidget(Qt.yellow) - vbox.addWidget(self._yellow_light) - self._green_light = LightWidget(Qt.green) - vbox.addWidget(self._green_light) - pal = QPalette() - pal.setColor(QPalette.Window, Qt.black) - self.setPalette(pal) - self.setAutoFillBackground(True) - - -def create_light_state(light, duration, parent=None): - light_state = QState(parent) - timer = QTimer(light_state) - timer.setInterval(duration) - timer.setSingleShot(True) - timing = QState(light_state) - timing.entered.connect(light.turn_on) - timing.entered.connect(timer.start) - timing.exited.connect(light.turn_off) - done = QFinalState(light_state) - timing.addTransition(timer.timeout, done) - light_state.setInitialState(timing) - return light_state - - -class TrafficLight(QWidget): - def __init__(self): - super().__init__() - vbox = QVBoxLayout(self) - widget = TrafficLightWidget() - vbox.addWidget(widget) - vbox.setContentsMargins(0, 0, 0, 0) - - machine = QStateMachine(self) - red_going_yellow = create_light_state(widget._red_light, 1000) - red_going_yellow.setObjectName("redGoingYellow") - yellow_going_green = create_light_state(widget._red_light, 1000) - yellow_going_green.setObjectName("yellowGoingGreen") - red_going_yellow.addTransition(red_going_yellow.finished, yellow_going_green) - green_going_yellow = create_light_state(widget._yellow_light, 3000) - green_going_yellow.setObjectName("greenGoingYellow") - yellow_going_green.addTransition( - yellow_going_green.finished, green_going_yellow - ) - yellow_going_red = create_light_state(widget._green_light, 1000) - yellow_going_red.setObjectName("yellowGoingRed") - green_going_yellow.addTransition(green_going_yellow.finished, yellow_going_red) - yellow_going_red.addTransition(yellow_going_red.finished, red_going_yellow) - - machine.addState(red_going_yellow) - machine.addState(yellow_going_green) - machine.addState(green_going_yellow) - machine.addState(yellow_going_red) - machine.setInitialState(red_going_yellow) - machine.start() - - -if __name__ == "__main__": - app = QApplication(sys.argv) - widget = TrafficLight() - widget.resize(110, 300) - widget.show() - sys.exit(app.exec()) diff --git a/grid/ui/window.py b/grid/ui/window.py index 6f5c7d5..2edfa64 100644 --- a/grid/ui/window.py +++ b/grid/ui/window.py @@ -1,3 +1,4 @@ +import logging import sys from PySide6.QtGui import QPainter @@ -33,6 +34,10 @@ class Window(QWidget): self.show() +logging.basicConfig( + level=logging.DEBUG, + format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", +) app = QApplication(sys.argv) w = Window() app.exec() diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000..d467bfc Binary files /dev/null and b/screenshot.png differ