Skip to content

Commit 2c06460

Browse files
authored
Merge branch 'saschaludwig:master' into master
2 parents 3373f5d + 5fc2a32 commit 2c06460

File tree

11 files changed

+88
-31
lines changed

11 files changed

+88
-31
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
# Changelog
22
All notable changes to this project will be documented in this file.
33

4+
## [TBA]
5+
### Added
6+
- Show version, distribution and settings path in about dialog
7+
### Changed
8+
- fixed crash when UDP/HTTP ports are empty
9+
- update copyright strings
10+
411
## [0.9.6 beta2]
512
### Added
613
- options to change icons on all 4 timers

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#############################################################################
22
#
33
# OnAirScreen
4-
# Copyright (c) 2012-2023 Sascha Ludwig, astrastudio.de
4+
# Copyright (c) 2012-2024 Sascha Ludwig, astrastudio.de
55
# All rights reserved.
66
#
77
# You may use this file under the terms of the BSD license as follows:

clockplugin.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#############################################################################
44
#
55
# OnAirScreen Analog Clock QtDesigner Plugin
6-
# Copyright (c) 2012-2022 Sascha Ludwig, astrastudio.de
6+
# Copyright (c) 2012-2024 Sascha Ludwig, astrastudio.de
77
# All rights reserved.
88
#
99

clockwidget.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#############################################################################
44
#
55
# OnAirScreen Analog / Digital Clock implementation
6-
# Copyright (c) 2012-2023 Sascha Ludwig, astrastudio.de
6+
# Copyright (c) 2012-2024 Sascha Ludwig, astrastudio.de
77
# All rights reserved.
88
#
99
# start.py

settings.ui

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2521,7 +2521,7 @@ p, li { white-space: pre-wrap; }
25212521
<property name="bottomMargin">
25222522
<number>0</number>
25232523
</property>
2524-
<item row="4" column="0">
2524+
<item row="5" column="0">
25252525
<spacer name="verticalSpacer_3">
25262526
<property name="orientation">
25272527
<enum>Qt::Vertical</enum>
@@ -2534,7 +2534,7 @@ p, li { white-space: pre-wrap; }
25342534
</property>
25352535
</spacer>
25362536
</item>
2537-
<item row="2" column="0">
2537+
<item row="3" column="0">
25382538
<spacer name="verticalSpacer_2">
25392539
<property name="orientation">
25402540
<enum>Qt::Vertical</enum>
@@ -2567,14 +2567,17 @@ p, li { white-space: pre-wrap; }
25672567
<item row="1" column="0">
25682568
<widget class="QLabel" name="versionLabel">
25692569
<property name="text">
2570-
<string>Version ???</string>
2570+
<string>Version: ???</string>
25712571
</property>
25722572
<property name="alignment">
25732573
<set>Qt::AlignCenter</set>
25742574
</property>
2575+
<property name="textInteractionFlags">
2576+
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
2577+
</property>
25752578
</widget>
25762579
</item>
2577-
<item row="3" column="0">
2580+
<item row="4" column="0">
25782581
<widget class="QLabel" name="label_8">
25792582
<property name="text">
25802583
<string/>
@@ -2587,7 +2590,7 @@ p, li { white-space: pre-wrap; }
25872590
</property>
25882591
</widget>
25892592
</item>
2590-
<item row="10" column="0">
2593+
<item row="12" column="0">
25912594
<layout class="QHBoxLayout" name="horizontalLayout_4">
25922595
<item>
25932596
<layout class="QVBoxLayout" name="verticalLayout_12">
@@ -2764,7 +2767,7 @@ p, li { white-space: pre-wrap; }
27642767
<item>
27652768
<widget class="QLabel" name="label_7">
27662769
<property name="text">
2767-
<string>© 2012-2022 Sascha Ludwig</string>
2770+
<string>© 2012-2024 Sascha Ludwig</string>
27682771
</property>
27692772
<property name="alignment">
27702773
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
@@ -2775,7 +2778,7 @@ p, li { white-space: pre-wrap; }
27752778
</item>
27762779
</layout>
27772780
</item>
2778-
<item row="6" column="0">
2781+
<item row="8" column="0">
27792782
<widget class="QPushButton" name="ResetSettingsButton">
27802783
<property name="enabled">
27812784
<bool>false</bool>
@@ -2785,13 +2788,36 @@ p, li { white-space: pre-wrap; }
27852788
</property>
27862789
</widget>
27872790
</item>
2788-
<item row="5" column="0">
2791+
<item row="7" column="0">
27892792
<widget class="QCheckBox" name="enableResetButton">
27902793
<property name="text">
27912794
<string>Enable Reset all settings button</string>
27922795
</property>
27932796
</widget>
27942797
</item>
2798+
<item row="2" column="0">
2799+
<widget class="QLabel" name="distributionLabel">
2800+
<property name="text">
2801+
<string>Distribution: ???</string>
2802+
</property>
2803+
<property name="alignment">
2804+
<set>Qt::AlignCenter</set>
2805+
</property>
2806+
<property name="textInteractionFlags">
2807+
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
2808+
</property>
2809+
</widget>
2810+
</item>
2811+
<item row="6" column="0">
2812+
<widget class="QLabel" name="settingspathLabel">
2813+
<property name="text">
2814+
<string>Settings Path: ???</string>
2815+
</property>
2816+
<property name="textInteractionFlags">
2817+
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
2818+
</property>
2819+
</widget>
2820+
</item>
27952821
</layout>
27962822
</widget>
27972823
<widget class="QWidget" name="tab_license">
@@ -2817,7 +2843,7 @@ p, li { white-space: pre-wrap; }
28172843
<string>##################################################################
28182844
#
28192845
# OnAirScreen
2820-
# Copyright (c) 2012-2022 Sascha Ludwig, astrastudio.de
2846+
# Copyright (c) 2012-2024 Sascha Ludwig, astrastudio.de
28212847
# All rights reserved.
28222848
#
28232849
# You may use this file under the terms of the BSD license as follows:
@@ -4981,8 +5007,8 @@ Parts of analog clockwidget:
49815007
</connection>
49825008
</connections>
49835009
<buttongroups>
4984-
<buttongroup name="buttonGroup_clock_mode"/>
49855010
<buttongroup name="buttonGroup_logo_position"/>
49865011
<buttongroup name="buttonGroup_show_seconds"/>
5012+
<buttongroup name="buttonGroup_clock_mode"/>
49875013
</buttongroups>
49885014
</ui>

settings_functions.py

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#############################################################################
44
#
55
# OnAirScreen
6-
# Copyright (c) 2012-2023 Sascha Ludwig, astrastudio.de
6+
# Copyright (c) 2012-2024 Sascha Ludwig, astrastudio.de
77
# All rights reserved.
88
#
99
# settings_functions.py
@@ -80,6 +80,9 @@ def value(self, name, default=None):
8080
except KeyError:
8181
return QVariant(default)
8282

83+
def fileName(self):
84+
return "OAC Mode"
85+
8386

8487
class Settings(QWidget, Ui_Settings):
8588
sigConfigChanged = pyqtSignal(int, str)
@@ -94,6 +97,7 @@ class Settings(QWidget, Ui_Settings):
9497
sigCheckForUpdate = pyqtSignal()
9598

9699
def __init__(self, oacmode=False):
100+
self.settingsPath = None
97101
self.row = -1
98102
QWidget.__init__(self)
99103
Ui_Settings.__init__(self)
@@ -123,20 +127,26 @@ def __init__(self, oacmode=False):
123127
self.sigConfigFinished.emit()
124128

125129
# set version string
126-
self.versionLabel.setText("Version %s" % versionString)
130+
self.versionLabel.setText("Version: %s" % versionString)
131+
# set distribution string
132+
self.distributionLabel.setText("Distribution: %s" % distributionString)
133+
# set settings path
134+
self.settingspathLabel.setText("Settings Path: %s" % self.settingsPath )
127135
# set update check mode
128136
self.manual_update_check = False
129137
self.sigCheckForUpdate.connect(self.check_for_updates)
130138

131-
def showsettings(self):
139+
def show_settings(self):
140+
self.restoreSettingsFromConfig()
141+
self.sigConfigFinished.emit()
132142
self.show()
133143

134144
def closeEvent(self, event):
135145
# emit config finished signal
136146
self.sigConfigFinished.emit()
137147
self.sigConfigClosed.emit()
138148

139-
def exitOnAirScreen(self):
149+
def exit_on_air_screen(self):
140150
if not self.oacmode:
141151
# emit app close signal
142152
self.sigExitOAS.emit()
@@ -166,7 +176,7 @@ def resetSettings(self):
166176
def _connectSlots(self):
167177
self.ApplyButton.clicked.connect(self.applySettings)
168178
self.CloseButton.clicked.connect(self.closeSettings)
169-
self.ExitButton.clicked.connect(self.exitOnAirScreen)
179+
self.ExitButton.clicked.connect(self.exit_on_air_screen)
170180
self.RebootButton.clicked.connect(self.rebootHost)
171181
self.ShutdownButton.clicked.connect(self.shutdownHost)
172182
self.LEDInactiveBGColor.clicked.connect(self.setLEDInactiveBGColor)
@@ -246,6 +256,8 @@ def restoreSettingsFromConfig(self):
246256
settings = self.settings
247257
else:
248258
settings = QSettings(QSettings.UserScope, "astrastudio", "OnAirScreen")
259+
260+
self.settingsPath = settings.fileName()
249261

250262
# populate text clock languages
251263
self.textClockLanguage.clear()
@@ -349,8 +361,8 @@ def restoreSettingsFromConfig(self):
349361
settings.endGroup()
350362

351363
settings.beginGroup("Network")
352-
self.udpport.setText(settings.value('udpport', '3310'))
353-
self.httpport.setText(settings.value('httpport', '8010'))
364+
self.udpport.setText(str(settings.value('udpport', '3310')))
365+
self.httpport.setText(str(settings.value('httpport', '8010')))
354366
self.multicast_group.setText(settings.value('multicast_address', "239.194.0.1"))
355367
settings.endGroup()
356368

start.py

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#############################################################################
44
#
55
# OnAirScreen
6-
# Copyright (c) 2012-2023 Sascha Ludwig, astrastudio.de
6+
# Copyright (c) 2012-2024 Sascha Ludwig, astrastudio.de
77
# All rights reserved.
88
#
99
# start.py
@@ -48,7 +48,7 @@
4848
from PyQt5.QtCore import Qt, QSettings, QCoreApplication, QTimer, QDate, QLocale, QThread
4949
from PyQt5.QtGui import QCursor, QPalette, QKeySequence, QIcon, QPixmap, QFont
5050
from PyQt5.QtNetwork import QUdpSocket, QNetworkInterface, QHostAddress
51-
from PyQt5.QtWidgets import QApplication, QWidget, QShortcut, QDialog, QLineEdit, QVBoxLayout, QLabel
51+
from PyQt5.QtWidgets import QApplication, QWidget, QShortcut, QDialog, QLineEdit, QVBoxLayout, QLabel, QMessageBox
5252

5353
from mainscreen import Ui_MainScreen
5454
from settings_functions import Settings, versionString
@@ -189,10 +189,18 @@ def __init__(self):
189189
self.udpsock = QUdpSocket()
190190
settings = QSettings(QSettings.UserScope, "astrastudio", "OnAirScreen")
191191
settings.beginGroup("Network")
192-
port = int(settings.value('udpport', 3310))
192+
try:
193+
port = int(settings.value('udpport', "3310"))
194+
except ValueError:
195+
port = "3310"
196+
settings.setValue('udpport', "3310")
193197
multicast_address = settings.value('multicast_address', "239.194.0.1")
198+
if not QHostAddress(multicast_address).isMulticast():
199+
multicast_address = "239.194.0.1"
200+
settings.setValue('multicast_address', "239.194.0.1")
194201
settings.endGroup()
195-
self.udpsock.bind(QHostAddress.AnyIPv4, port, QUdpSocket.ShareAddress)
202+
203+
self.udpsock.bind(QHostAddress.AnyIPv4, int(port), QUdpSocket.ShareAddress)
196204
if QHostAddress(multicast_address).isMulticast():
197205
print(multicast_address, "is Multicast, joining multicast group")
198206
self.udpsock.joinMulticastGroup(QHostAddress(multicast_address))
@@ -285,7 +293,7 @@ def show_settings(self):
285293
global app
286294
# un-hide mouse cursor
287295
app.setOverrideCursor(QCursor(Qt.ArrowCursor))
288-
self.settings.showsettings()
296+
self.settings.show_settings()
289297

290298
def display_all_hostaddresses(self):
291299
v4addrs = list()
@@ -1448,7 +1456,11 @@ class HttpDaemon(QThread):
14481456
def run(self):
14491457
settings = QSettings(QSettings.UserScope, "astrastudio", "OnAirScreen")
14501458
settings.beginGroup("Network")
1451-
port = int(settings.value('httpport', 8010))
1459+
try:
1460+
port = int(settings.value('httpport', "8010"))
1461+
except ValueError:
1462+
port = 8010
1463+
settings.setValue("httpport", "8010")
14521464
settings.endGroup()
14531465

14541466
try:
@@ -1492,7 +1504,7 @@ def do_GET(self):
14921504

14931505
settings = QSettings(QSettings.UserScope, "astrastudio", "OnAirScreen")
14941506
settings.beginGroup("Network")
1495-
port = int(settings.value('udpport', 3310))
1507+
port = int(settings.value('udpport', "3310"))
14961508
settings.endGroup()
14971509

14981510
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#############################################################################
44
#
55
# OnAirScreen
6-
# Copyright (c) 2012-2023 Sascha Ludwig, astrastudio.de
6+
# Copyright (c) 2012-2024 Sascha Ludwig, astrastudio.de
77
# All rights reserved.
88
#
99
# utils.py

utils/keypress.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#
55
# OnAirScreen Keypress Tool
66
# tool to display keyboard keycodes
7-
# Copyright (c) 2012-2023 Sascha Ludwig, astrastudio.de
7+
# Copyright (c) 2012-2024 Sascha Ludwig, astrastudio.de
88
# All rights reserved.
99
#
1010
# keypress.py

utils/oas_send.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#############################################################################
44
#
55
# OnAirScreen
6-
# Copyright (c) 2012-2023 Sascha Ludwig, astrastudio.de
6+
# Copyright (c) 2012-2024 Sascha Ludwig, astrastudio.de
77
# All rights reserved.
88
#
99
# oas_send.py

0 commit comments

Comments
 (0)