Skip to content

Commit d5dcd5c

Browse files
committed
Change phase diagram background and add version info
1 parent 2c36d12 commit d5dcd5c

14 files changed

+734
-24
lines changed

build instructions.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
./venv/Scripts/pyside6-uic.exe -o ./qt_ui/neostim_settings_widget_ui.py ./designer/neostimsettingswidget.ui
2020
./venv/Scripts/pyside6-uic.exe -o ./qt_ui/simfile_conversion_dialog_ui.py ./designer/simfileconversiondialog.ui
2121
./venv/Scripts/pyside6-uic.exe -o ./qt_ui/focstim_flash_dialog_ui.py ./designer/focstimflashdialog.ui
22+
./venv/Scripts/pyside6-uic.exe -o ./qt_ui/about_dialog_ui.py ./designer/aboutdialog.ui
2223

2324
./venv/Scripts/pyside6-uic.exe -o ./qt_ui/device_wizard/type_select_ui.py ./designer/device_wizard/type_select.ui
2425
./venv/Scripts/pyside6-uic.exe -o ./qt_ui/device_wizard/waveform_select_ui.py ./designer/device_wizard/waveform_select.ui
@@ -37,5 +38,6 @@
3738

3839
git clone
3940
setup venv with pycharm
41+
Modify the version number in version.py
4042
./venv/Scripts/pip.exe install pyinstaller
41-
./venv/Scripts/pyinstaller.exe --clean --onefile --paths "." --add-data "resources/phase diagram bg.svg;resources/" --add-data "resources/favicon.png;resources/" --icon resources/favicon.ico --distpath dist-onefile restim.py
43+
./venv/Scripts/pyinstaller.exe --clean --onefile --paths "." --add-data "resources/favicon.png;resources/" --icon resources/favicon.ico --distpath dist-onefile restim.py

designer/aboutdialog.ui

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ui version="4.0">
3+
<class>AboutDialog</class>
4+
<widget class="QDialog" name="AboutDialog">
5+
<property name="geometry">
6+
<rect>
7+
<x>0</x>
8+
<y>0</y>
9+
<width>352</width>
10+
<height>160</height>
11+
</rect>
12+
</property>
13+
<property name="windowTitle">
14+
<string>Dialog</string>
15+
</property>
16+
<layout class="QVBoxLayout" name="verticalLayout">
17+
<item>
18+
<widget class="QLabel" name="label">
19+
<property name="text">
20+
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:18pt; font-weight:700;&quot;&gt;Restim&lt;/span&gt;&lt;/p&gt;&lt;p&gt;version: &amp;lt;insert version here&amp;gt;&lt;/p&gt;&lt;p&gt;homepage: &lt;a href=&quot;https://github.com/diglet48/restim&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#334327;&quot;&gt;https://github.com/diglet48/restim&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
21+
</property>
22+
</widget>
23+
</item>
24+
</layout>
25+
</widget>
26+
<resources/>
27+
<connections/>
28+
</ui>

designer/mainwindow.ui

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,8 +319,15 @@
319319
<addaction name="separator"/>
320320
<addaction name="actionFirmware_updater"/>
321321
</widget>
322+
<widget class="QMenu" name="menuHelp">
323+
<property name="title">
324+
<string>Help</string>
325+
</property>
326+
<addaction name="actionAbout"/>
327+
</widget>
322328
<addaction name="menuSetup"/>
323329
<addaction name="menuTools"/>
330+
<addaction name="menuHelp"/>
324331
</widget>
325332
<widget class="QToolBar" name="toolBar">
326333
<property name="windowTitle">
@@ -450,6 +457,11 @@
450457
<string>Firmware updater</string>
451458
</property>
452459
</action>
460+
<action name="actionAbout">
461+
<property name="text">
462+
<string>About</string>
463+
</property>
464+
</action>
453465
</widget>
454466
<customwidgets>
455467
<customwidget>

qt_ui/about_dialog.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import logging
2+
from PySide6.QtWidgets import QDialog
3+
4+
from qt_ui.about_dialog_ui import Ui_AboutDialog
5+
from version import VERSION
6+
7+
logger = logging.getLogger('restim.bake_audio')
8+
9+
class AboutDialog(QDialog, Ui_AboutDialog):
10+
def __init__(self, parent):
11+
super().__init__(parent)
12+
13+
self.setupUi(self)
14+
15+
self.label.setText(
16+
f"""
17+
<html>
18+
<head/>
19+
<body>
20+
<p><span style=" font-size:18pt; font-weight:700;">
21+
Restim
22+
</span>
23+
</p>
24+
<p>
25+
version: {VERSION}
26+
</p>
27+
<p>
28+
homepage: <a href="https://github.com/diglet48/restim">
29+
<span style=" text-decoration: underline; color:#334327;">
30+
https://github.com/diglet48/restim</span>
31+
</a>
32+
</p>
33+
</body>
34+
</html>
35+
"""
36+
)

qt_ui/about_dialog_ui.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# -*- coding: utf-8 -*-
2+
3+
################################################################################
4+
## Form generated from reading UI file 'aboutdialog.ui'
5+
##
6+
## Created by: Qt User Interface Compiler version 6.9.0
7+
##
8+
## WARNING! All changes made in this file will be lost when recompiling UI file!
9+
################################################################################
10+
11+
from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
12+
QMetaObject, QObject, QPoint, QRect,
13+
QSize, QTime, QUrl, Qt)
14+
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
15+
QFont, QFontDatabase, QGradient, QIcon,
16+
QImage, QKeySequence, QLinearGradient, QPainter,
17+
QPalette, QPixmap, QRadialGradient, QTransform)
18+
from PySide6.QtWidgets import (QApplication, QDialog, QLabel, QSizePolicy,
19+
QVBoxLayout, QWidget)
20+
21+
class Ui_AboutDialog(object):
22+
def setupUi(self, AboutDialog):
23+
if not AboutDialog.objectName():
24+
AboutDialog.setObjectName(u"AboutDialog")
25+
AboutDialog.resize(352, 160)
26+
self.verticalLayout = QVBoxLayout(AboutDialog)
27+
self.verticalLayout.setObjectName(u"verticalLayout")
28+
self.label = QLabel(AboutDialog)
29+
self.label.setObjectName(u"label")
30+
31+
self.verticalLayout.addWidget(self.label)
32+
33+
34+
self.retranslateUi(AboutDialog)
35+
36+
QMetaObject.connectSlotsByName(AboutDialog)
37+
# setupUi
38+
39+
def retranslateUi(self, AboutDialog):
40+
AboutDialog.setWindowTitle(QCoreApplication.translate("AboutDialog", u"Dialog", None))
41+
self.label.setText(QCoreApplication.translate("AboutDialog", u"<html><head/><body><p><span style=\" font-size:18pt; font-weight:700;\">Restim</span></p><p>version: &lt;insert version here&gt;</p><p>homepage: <a href=\"https://github.com/diglet48/restim\"><span style=\" text-decoration: underline; color:#334327;\">https://github.com/diglet48/restim</span></a></p></body></html>", None))
42+
# retranslateUi
43+

qt_ui/main_window_ui.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,8 @@ def setupUi(self, MainWindow):
8686
self.actionFunscript_decomposition.setObjectName(u"actionFunscript_decomposition")
8787
self.actionFirmware_updater = QAction(MainWindow)
8888
self.actionFirmware_updater.setObjectName(u"actionFirmware_updater")
89+
self.actionAbout = QAction(MainWindow)
90+
self.actionAbout.setObjectName(u"actionAbout")
8991
self.centralwidget = QWidget(MainWindow)
9092
self.centralwidget.setObjectName(u"centralwidget")
9193
self.horizontalLayout = QHBoxLayout(self.centralwidget)
@@ -241,6 +243,8 @@ def setupUi(self, MainWindow):
241243
self.menuSetup.setObjectName(u"menuSetup")
242244
self.menuTools = QMenu(self.menuBar)
243245
self.menuTools.setObjectName(u"menuTools")
246+
self.menuHelp = QMenu(self.menuBar)
247+
self.menuHelp.setObjectName(u"menuHelp")
244248
MainWindow.setMenuBar(self.menuBar)
245249
self.toolBar = QToolBar(MainWindow)
246250
self.toolBar.setObjectName(u"toolBar")
@@ -251,13 +255,15 @@ def setupUi(self, MainWindow):
251255

252256
self.menuBar.addAction(self.menuSetup.menuAction())
253257
self.menuBar.addAction(self.menuTools.menuAction())
258+
self.menuBar.addAction(self.menuHelp.menuAction())
254259
self.menuSetup.addAction(self.actionDevice_selection_wizard)
255260
self.menuSetup.addAction(self.actionPreferences)
256261
self.menuTools.addAction(self.actionFunscript_conversion)
257262
self.menuTools.addAction(self.actionSimfile_conversion)
258263
self.menuTools.addAction(self.actionFunscript_decomposition)
259264
self.menuTools.addSeparator()
260265
self.menuTools.addAction(self.actionFirmware_updater)
266+
self.menuHelp.addAction(self.actionAbout)
261267
self.toolBar.addAction(self.actionControl)
262268
self.toolBar.addAction(self.actionMedia)
263269
self.toolBar.addAction(self.actionStart)
@@ -297,6 +303,7 @@ def retranslateUi(self, MainWindow):
297303
self.actionSimfile_conversion.setText(QCoreApplication.translate("MainWindow", u"Simfile conversion", None))
298304
self.actionFunscript_decomposition.setText(QCoreApplication.translate("MainWindow", u"Funscript decomposition", None))
299305
self.actionFirmware_updater.setText(QCoreApplication.translate("MainWindow", u"Firmware updater", None))
306+
self.actionAbout.setText(QCoreApplication.translate("MainWindow", u"About", None))
300307
self.groupBox_volume.setTitle(QCoreApplication.translate("MainWindow", u"volume", None))
301308
self.groupBox_pattern.setTitle(QCoreApplication.translate("MainWindow", u"Pattern generator", None))
302309
self.comboBox_patternSelect.setItemText(0, QCoreApplication.translate("MainWindow", u"Mouse", None))
@@ -316,6 +323,7 @@ def retranslateUi(self, MainWindow):
316323
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_details), QCoreApplication.translate("MainWindow", u"Details", None))
317324
self.menuSetup.setTitle(QCoreApplication.translate("MainWindow", u"Setup", None))
318325
self.menuTools.setTitle(QCoreApplication.translate("MainWindow", u"Tools", None))
326+
self.menuHelp.setTitle(QCoreApplication.translate("MainWindow", u"Help", None))
319327
self.toolBar.setWindowTitle(QCoreApplication.translate("MainWindow", u"toolBar", None))
320328
# retranslateUi
321329

qt_ui/mainwindow.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import qt_ui.focstim_flash_dialog
2525
import qt_ui.funscript_decomposition_dialog
2626
import qt_ui.preferences_dialog
27+
import qt_ui.about_dialog
2728
import qt_ui.settings
2829
import net.serialproxy
2930
import net.buttplug_wsdm_client
@@ -195,6 +196,9 @@ def __init__(self, parent=None):
195196
self.settings_dialog = qt_ui.preferences_dialog.PreferencesDialog()
196197
self.actionPreferences.triggered.connect(self.open_preferences_dialog)
197198

199+
self.about_dialog = qt_ui.about_dialog.AboutDialog(self)
200+
self.actionAbout.triggered.connect(self.open_about_dialog)
201+
198202
self.iconMedia = IconWithConnectionStatus(self.actionMedia.icon(), self.toolBar.widgetForAction(self.actionMedia))
199203
self.actionMedia.setIcon(QIcon(self.iconMedia))
200204
# self.iconDevice = IconWithConnectionStatus(self.actionDevice.icon(), self.toolBar.widgetForAction(self.actionDevice))
@@ -402,6 +406,13 @@ def set_visible(widget, state):
402406
self.stackedWidget_visual.indexOf(self.page_fourphase)
403407
)
404408

409+
if config.device_type == DeviceType.AUDIO_THREE_PHASE:
410+
self.graphicsView_threephase.set_background(stereo=True)
411+
self.tab_threephase.phase_widget_calibration.set_background(stereo=True)
412+
else:
413+
self.graphicsView_threephase.set_background(foc=True)
414+
self.tab_threephase.phase_widget_calibration.set_background(foc=True)
415+
405416
self.refresh_pattern_combobox()
406417

407418
def pattern_selection_changed(self, index):
@@ -526,6 +537,10 @@ def open_preferences_dialog(self):
526537
self.settings_dialog.exec()
527538
self.reload_settings()
528539

540+
def open_about_dialog(self):
541+
self.signal_stop(PlayState.STOPPED)
542+
self.about_dialog.exec()
543+
529544
def open_write_audio_dialog(self):
530545
device = DeviceConfiguration.from_settings()
531546
kit = FunscriptKitModel.load_from_settings()

qt_ui/resources.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,4 @@ def resource_path(relative_path):
77
base_path = getattr(sys, '_MEIPASS', os.path.join(os.path.dirname(os.path.abspath(__file__)), os.path.pardir))
88
return os.path.join(base_path, relative_path)
99

10-
11-
phase_diagram_bg = resource_path("resources/phase diagram bg.svg")
1210
favicon = resource_path("resources/favicon.png")

qt_ui/widgets/threephase_widget.py

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,9 @@ def __init__(self, parent):
3939

4040
scene = QtWidgets.QGraphicsScene()
4141
self.setScene(scene)
42-
svg = QtSvgWidgets.QGraphicsSvgItem(resources.phase_diagram_bg)
43-
scene.addItem(svg)
44-
svg.setPos(-svg.boundingRect().width()/2.0, -svg.boundingRect().height()/2.0)
45-
self.svg = svg
4642
self.scene = scene
43+
self.background_svg = None
44+
self.set_background(stereo=True)
4745
self.setBackgroundBrush(Qt.white)
4846

4947
self.setMouseTracking(True)
@@ -70,7 +68,7 @@ def mouseMoveEvent(self, event: QMouseEvent):
7068
def mouse_event_screen_pos(self, mouse_x, mouse_y, buttons: QtCore.Qt.MouseButtons):
7169
view_pos = QPoint(mouse_x, mouse_y)
7270
scene_pos = self.mapToScene(view_pos)
73-
item_pos = self.svg.mapToItem(self.svg, scene_pos)
71+
item_pos = self.background_svg.mapToItem(self.background_svg, scene_pos)
7472
a, b = item_pos_to_ab(item_pos.x(), item_pos.y())
7573
return self.mouse_event(a, b, buttons)
7674

@@ -80,6 +78,20 @@ def mouse_event(self, alpha, beta, buttons: QtCore.Qt.MouseButtons):
8078
# do stuff
8179
pass
8280

81+
def set_background(self, stereo=False, foc=False):
82+
if self.background_svg:
83+
self.scene.removeItem(self.background_svg)
84+
85+
if stereo:
86+
self.background_svg = QtSvgWidgets.QGraphicsSvgItem(":/restim/phase diagram stereostim.svg")
87+
else:
88+
self.background_svg = QtSvgWidgets.QGraphicsSvgItem(":/restim/phase diagram foc.svg")
89+
90+
self.scene.addItem(self.background_svg)
91+
self.background_svg.setPos(
92+
-self.background_svg.boundingRect().width()/2.0,
93+
-self.background_svg.boundingRect().height()/2.0)
94+
self.background_svg.setZValue(-1)
8395

8496

8597
class ThreephaseWidgetAlphaBeta(ThreephaseWidgetBase):

0 commit comments

Comments
 (0)