feat(app): tombol Donasi + GitHub (jendela & tray), label versi v1.1.0
docs: bagian Support dengan tautan donasi
This commit is contained in:
1 parent
42c8d94977
commit
657a8d10dc
2 files changed
+47
-3
No files matched your search
@@ -90,6 +90,7 @@ temperature source (Tctl vs Tccd).
|
||||
- **Plug and play**: the service waits for the device, streams while present and keeps
|
||||
waiting through unplug/replug; a udev rule grants access to the logged-in user
|
||||
- **Single instance**: launching the app again just raises the running window
|
||||
- **Donate / GitHub buttons** in the app (window and tray menu)
|
||||
- **AppImage build** script (`packaging/build_appimage.sh`, PySide6 bundled)
|
||||
|
||||
The GUI labels are in Indonesian.
|
||||
@@ -192,6 +193,15 @@ docs/ reverse-engineering.md — full analysis (Indonesian)
|
||||
assets/ previews and icon
|
||||
```
|
||||
|
||||
## Support
|
||||
|
||||
If this project is useful to you:
|
||||
|
||||
- ❤ **Donate:** <https://donasi.oxpoe.qzz.io/> (buttons for it and for this repository are
|
||||
in the app: window bottom row and the tray menu)
|
||||
- ⭐ Star the repo, or open an issue with your cooler model and what worked — reports from
|
||||
other IceBurg Digital revisions are the best way to widen hardware support.
|
||||
|
||||
## Credits
|
||||
|
||||
Reverse engineered and written by **oxpoe**, with the help of
|
||||
|
||||
+37
-3
@@ -18,19 +18,23 @@ import threading
|
||||
import time
|
||||
import traceback
|
||||
|
||||
from PySide6.QtCore import QPointF, QRectF, Qt, QThread, QTimer, Signal
|
||||
from PySide6.QtGui import (QAction, QColor, QConicalGradient, QFont, QIcon,
|
||||
QPainter, QPen, QPixmap)
|
||||
from PySide6.QtCore import QPointF, QRectF, Qt, QThread, QTimer, QUrl, Signal
|
||||
from PySide6.QtGui import (QAction, QColor, QConicalGradient, QDesktopServices, QFont,
|
||||
QIcon, QPainter, QPen, QPixmap)
|
||||
from PySide6.QtWidgets import (
|
||||
QApplication, QCheckBox, QComboBox, QFormLayout, QGroupBox, QHBoxLayout, QLabel,
|
||||
QMenu, QPlainTextEdit, QProgressBar, QPushButton, QSystemTrayIcon, QVBoxLayout, QWidget,
|
||||
)
|
||||
from PySide6.QtNetwork import QLocalServer, QLocalSocket
|
||||
|
||||
APP_VERSION = "1.1.0"
|
||||
HERE = os.path.dirname(os.path.abspath(__file__))
|
||||
sys.path.insert(0, HERE)
|
||||
import gamemax_report as gr # noqa: E402
|
||||
|
||||
DONATE_URL = "https://donasi.oxpoe.qzz.io/"
|
||||
GITHUB_URL = "https://github.com/oxpoe/Gamemax-linux-apps"
|
||||
|
||||
SERVICE = "gamemax-report.service"
|
||||
CONFIG_PATH = gr.CONFIG_PATH
|
||||
INSTALL_DIR = os.path.expanduser("~/.local/share/gamemax-report")
|
||||
@@ -69,6 +73,13 @@ def crash_log(text):
|
||||
pass
|
||||
|
||||
|
||||
def open_link(url, parent=None):
|
||||
"""Buka tautan di peramban; kalau gagal, tampilkan pesannya di log."""
|
||||
if not QDesktopServices.openUrl(QUrl(url)):
|
||||
if parent is not None:
|
||||
parent.log(f"tidak bisa membuka tautan: {url}")
|
||||
|
||||
|
||||
def systemctl(*args):
|
||||
return subprocess.run(["systemctl", "--user", *args], capture_output=True, text=True)
|
||||
|
||||
@@ -336,6 +347,22 @@ class Window(QWidget):
|
||||
form.addRow("", row)
|
||||
root.addWidget(settings)
|
||||
|
||||
# ---- tautan
|
||||
links = QHBoxLayout()
|
||||
donate = QPushButton("❤ Donasi")
|
||||
donate.setToolTip(DONATE_URL)
|
||||
donate.clicked.connect(lambda: open_link(DONATE_URL, self))
|
||||
github = QPushButton("GitHub")
|
||||
github.setToolTip(GITHUB_URL)
|
||||
github.clicked.connect(lambda: open_link(GITHUB_URL, self))
|
||||
links.addWidget(donate)
|
||||
links.addWidget(github)
|
||||
links.addStretch(1)
|
||||
self.version_label = QLabel(f"v{APP_VERSION}")
|
||||
self.version_label.setStyleSheet("color:#8a8f8a;")
|
||||
links.addWidget(self.version_label)
|
||||
root.addLayout(links)
|
||||
|
||||
# ---- detail + log
|
||||
self.detail = QPlainTextEdit()
|
||||
self.detail.setReadOnly(True)
|
||||
@@ -662,12 +689,19 @@ class Tray:
|
||||
toggle = QAction("Aktifkan / matikan", menu)
|
||||
toggle.triggered.connect(lambda: self.window.on_toggle())
|
||||
self.blank_action.triggered.connect(lambda checked: self.window.blank.setChecked(checked))
|
||||
donate_action = QAction("❤ Donasi", menu)
|
||||
donate_action.triggered.connect(lambda: open_link(DONATE_URL, self.window))
|
||||
github_action = QAction("GitHub", menu)
|
||||
github_action.triggered.connect(lambda: open_link(GITHUB_URL, self.window))
|
||||
quit_action = QAction("Keluar", menu)
|
||||
quit_action.triggered.connect(app.quit)
|
||||
menu.addAction(show)
|
||||
menu.addAction(toggle)
|
||||
menu.addAction(self.blank_action)
|
||||
menu.addSeparator()
|
||||
menu.addAction(donate_action)
|
||||
menu.addAction(github_action)
|
||||
menu.addSeparator()
|
||||
menu.addAction(quit_action)
|
||||
self.icon.setContextMenu(menu)
|
||||
self.icon.activated.connect(
|
||||
|
||||
Reference in new issue
Block a user