Browse Source

first commit

master
Jaka Perovšek 1 week ago
parent
commit
19911b0a84
  1. 125
      arty.pyw
  2. BIN
      icon.png

125
arty.pyw

@ -0,0 +1,125 @@
import sys
import winput
from PySide2.QtCore import Qt
from PySide2.QtWidgets import QApplication, QMainWindow, QRadioButton, QGroupBox
from PySide2.QtWidgets import QVBoxLayout, QHBoxLayout, QWidget, QLabel, QSpinBox
from PySide2.QtWidgets import QAction
from PySide2.QtGui import QIcon
WM_MOUSEWHEEL = 0x020A # mouse wheel moved
class ArtyWidget(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.radio_type1 = QRadioButton("Type 1: MILRAD 622 - 978")
self.radio_type2 = QRadioButton("Type 2: MILRAD 800 - 1120")
gbox_layout = QVBoxLayout()
gbox_layout.addWidget(self.radio_type1)
gbox_layout.addWidget(self.radio_type2)
self.gbox = QGroupBox("Settings (Ctrl+H to hide the window bar)")
self.gbox.setLayout(gbox_layout)
self.target_range = QSpinBox()
self.target_range.setMinimum(100)
self.target_range.setMaximum(1600)
self.elevation = QSpinBox()
self.elevation.setReadOnly(True)
font = self.elevation.font()
font.setPointSize(14)
self.target_range.setFont(font)
self.elevation.setFont(font)
self.radio_type1.toggled.connect(self.toggle_type)
self.radio_type1.setChecked(True)
self.target_range.valueChanged.connect(self.update_elevation)
layout = QHBoxLayout()
layout.addWidget(QLabel("Range:"))
layout.addWidget(self.target_range)
layout.addWidget(QLabel("Elevation:"))
layout.addWidget(self.elevation)
main_layout = QVBoxLayout()
main_layout.addWidget(self.gbox)
main_layout.addLayout(layout)
self.setLayout(main_layout)
def toggle_type(self):
if self.radio_type1.isChecked():
self.elevation.setMinimum(622)
self.elevation.setMaximum(978)
else:
self.elevation.setMinimum(800)
self.elevation.setMaximum(1120)
self.update_elevation(self.target_range.value())
def update_elevation(self, value):
x0, x1 = 100, 1600
if self.radio_type1.isChecked():
y0, y1 = 978, 622
else:
y0, y1 = 1120, 800
elevation = round(self.interpolator(value, x0, x1, y0, y1))
self.elevation.setValue(elevation)
def interpolator(self, x, x0, x1, y0, y1):
return y0 + (y1 - y0) * (x - x0) / (x1 - x0)
def increment_range(self, mouse_event):
if mouse_event.action == WM_MOUSEWHEEL:
if not self.isActiveWindow():
current_range = self.target_range.value()
increment = mouse_event.additional_data
self.target_range.setValue(current_range + increment)
class ArtyGUI(QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.arty_widget = ArtyWidget(self)
self.setCentralWidget(self.arty_widget)
self.setWindowTitle("Arty")
self.setWindowIcon(QIcon("icon.png"))
self.setWindowFlag(Qt.WindowStaysOnTopHint)
self.resize(150, 20)
self.hideBarAction = QAction('&Hide Window Bar', self)
self.hideBarAction.setShortcut('Ctrl+H')
self.hideBarAction.triggered.connect(self.hide_bar)
self.addAction(self.hideBarAction)
self.quitAction = QAction('&Quit', self)
self.quitAction.setShortcut('Ctrl+Q')
self.quitAction.triggered.connect(qApp.quit)
self.addAction(self.quitAction)
self.arty_widget.target_range.setFocus()
def hide_bar(self):
self.setWindowFlag(Qt.FramelessWindowHint)
self.arty_widget.gbox.setTitle("Settings (Ctrl+Q to quit)")
self.show()
self.arty_widget.target_range.setFocus()
def wheelEvent(self, event):
self.arty_widget.target_range.event(event)
if __name__ == "__main__":
app = QApplication(sys.argv)
arty_gui = ArtyGUI()
arty_gui.show()
winput.hook_mouse(arty_gui.arty_widget.increment_range)
sys.exit(app.exec_())

BIN
icon.png

After

Width: 48  |  Height: 48  |  Size: 444 B

Loading…
Cancel
Save