
5 changed files with 245 additions and 0 deletions
Binary file not shown.
Binary file not shown.
@ -0,0 +1,82 @@ |
|||
# -*- coding: utf-8 -*- |
|||
|
|||
# Form implementation generated from reading ui file 'settings.ui' |
|||
# |
|||
# Created by: PyQt5 UI code generator 5.15.0 |
|||
# |
|||
# WARNING: Any manual changes made to this file will be lost when pyuic5 is |
|||
# run again. Do not edit this file unless you know what you are doing. |
|||
|
|||
|
|||
from PyQt5 import QtCore, QtGui, QtWidgets |
|||
|
|||
|
|||
class Ui_Dialog(object): |
|||
def setupUi(self, Dialog): |
|||
Dialog.setObjectName("Dialog") |
|||
Dialog.resize(626, 387) |
|||
self.verticalLayout = QtWidgets.QVBoxLayout(Dialog) |
|||
self.verticalLayout.setObjectName("verticalLayout") |
|||
self.SettingsTab = QtWidgets.QTabWidget(Dialog) |
|||
self.SettingsTab.setTabPosition(QtWidgets.QTabWidget.North) |
|||
self.SettingsTab.setTabShape(QtWidgets.QTabWidget.Rounded) |
|||
self.SettingsTab.setObjectName("SettingsTab") |
|||
self.tab_2 = QtWidgets.QWidget() |
|||
self.tab_2.setObjectName("tab_2") |
|||
self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.tab_2) |
|||
self.verticalLayout_3.setObjectName("verticalLayout_3") |
|||
self.label_help_launcher_whitelist = QtWidgets.QLabel(self.tab_2) |
|||
self.label_help_launcher_whitelist.setWordWrap(True) |
|||
self.label_help_launcher_whitelist.setObjectName("label_help_launcher_whitelist") |
|||
self.verticalLayout_3.addWidget(self.label_help_launcher_whitelist) |
|||
self.launcherWhitelistPlainTextEdit = QtWidgets.QPlainTextEdit(self.tab_2) |
|||
self.launcherWhitelistPlainTextEdit.setObjectName("launcherWhitelistPlainTextEdit") |
|||
self.verticalLayout_3.addWidget(self.launcherWhitelistPlainTextEdit) |
|||
self.label_help_launcher_blacklist = QtWidgets.QLabel(self.tab_2) |
|||
self.label_help_launcher_blacklist.setWordWrap(True) |
|||
self.label_help_launcher_blacklist.setObjectName("label_help_launcher_blacklist") |
|||
self.verticalLayout_3.addWidget(self.label_help_launcher_blacklist) |
|||
self.launcherBlacklistPlainTextEdit = QtWidgets.QPlainTextEdit(self.tab_2) |
|||
self.launcherBlacklistPlainTextEdit.setObjectName("launcherBlacklistPlainTextEdit") |
|||
self.verticalLayout_3.addWidget(self.launcherBlacklistPlainTextEdit) |
|||
self.SettingsTab.addTab(self.tab_2, "") |
|||
self.tab = QtWidgets.QWidget() |
|||
self.tab.setObjectName("tab") |
|||
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.tab) |
|||
self.verticalLayout_2.setObjectName("verticalLayout_2") |
|||
self.label_help_programstart = QtWidgets.QLabel(self.tab) |
|||
self.label_help_programstart.setWordWrap(True) |
|||
self.label_help_programstart.setObjectName("label_help_programstart") |
|||
self.verticalLayout_2.addWidget(self.label_help_programstart) |
|||
self.label_help_path_rules = QtWidgets.QLabel(self.tab) |
|||
self.label_help_path_rules.setWordWrap(True) |
|||
self.label_help_path_rules.setObjectName("label_help_path_rules") |
|||
self.verticalLayout_2.addWidget(self.label_help_path_rules) |
|||
self.programPathsPlainTextEdit = QtWidgets.QPlainTextEdit(self.tab) |
|||
self.programPathsPlainTextEdit.setObjectName("programPathsPlainTextEdit") |
|||
self.verticalLayout_2.addWidget(self.programPathsPlainTextEdit) |
|||
self.SettingsTab.addTab(self.tab, "") |
|||
self.verticalLayout.addWidget(self.SettingsTab) |
|||
self.buttonBox = QtWidgets.QDialogButtonBox(Dialog) |
|||
self.buttonBox.setOrientation(QtCore.Qt.Horizontal) |
|||
self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok) |
|||
self.buttonBox.setObjectName("buttonBox") |
|||
self.verticalLayout.addWidget(self.buttonBox) |
|||
self.buttonBox.raise_() |
|||
self.SettingsTab.raise_() |
|||
|
|||
self.retranslateUi(Dialog) |
|||
self.SettingsTab.setCurrentIndex(0) |
|||
self.buttonBox.accepted.connect(Dialog.accept) |
|||
self.buttonBox.rejected.connect(Dialog.reject) |
|||
QtCore.QMetaObject.connectSlotsByName(Dialog) |
|||
|
|||
def retranslateUi(self, Dialog): |
|||
_translate = QtCore.QCoreApplication.translate |
|||
Dialog.setWindowTitle(_translate("Dialog", "Settings")) |
|||
self.label_help_launcher_whitelist.setText(_translate("Dialog", "Whitelist - Add executable names (not paths) to the program launcher. One executable per line.")) |
|||
self.label_help_launcher_blacklist.setText(_translate("Dialog", "Blacklist - Exclude executable names (not paths) from the program launcher. One executable per line.")) |
|||
self.SettingsTab.setTabText(self.SettingsTab.indexOf(self.tab_2), _translate("Dialog", "Launcher")) |
|||
self.label_help_programstart.setText(_translate("Dialog", "For advanced users only! Add executable paths to the environment, just for Argodejo and NSM. Changes need a program restart afterwards. If you want your programs in the application launcher use the launcher tab.")) |
|||
self.label_help_path_rules.setText(_translate("Dialog", "Add one absolute path to a directory (e.g. /home/user/audio-bin) per line. No wildcards. Trailing slashes/ don\'t matter.")) |
|||
self.SettingsTab.setTabText(self.SettingsTab.indexOf(self.tab), _translate("Dialog", "$PATH")) |
@ -0,0 +1,69 @@ |
|||
#! /usr/bin/env python3 |
|||
# -*- coding: utf-8 -*- |
|||
|
|||
from settings import SettingsDialog |
|||
|
|||
import sys |
|||
from PyQt5 import QtWidgets, QtGui, QtCore |
|||
|
|||
qtApp = QtWidgets.QApplication(sys.argv) |
|||
scene = QtWidgets.QGraphicsScene() |
|||
|
|||
view = QtWidgets.QGraphicsView() |
|||
view.scaleFactor = 1 |
|||
view.setDragMode(QtWidgets.QGraphicsView.ScrollHandDrag) |
|||
view.setScene(scene) |
|||
|
|||
def _wheelEvent(ev): |
|||
modifiers = QtWidgets.QApplication.keyboardModifiers() |
|||
if modifiers == QtCore.Qt.ControlModifier: |
|||
ev.accept() |
|||
if ev.angleDelta().y() > 0: |
|||
view.scaleFactor += 0.25 |
|||
else: |
|||
if view.scaleFactor >= 0.5: |
|||
view.scaleFactor -= 0.25 |
|||
view.resetTransform() |
|||
view.scale(view.scaleFactor, view.scaleFactor) |
|||
view.viewport().update() |
|||
|
|||
def _pressEvent(ev): |
|||
ev.accept() |
|||
widget = SettingsDialog(mainWindow=view) #blocks until closed |
|||
if widget.success: |
|||
print ("success") |
|||
|
|||
view.wheelEvent = _wheelEvent |
|||
|
|||
view.mousePressEvent = _pressEvent |
|||
|
|||
|
|||
gridSize = 20 |
|||
cosmeticPen = QtGui.QPen() |
|||
cosmeticPen.setCosmetic(True) |
|||
|
|||
def _drawBackground(painter:QtGui.QPainter, rect:QtCore.QRectF): |
|||
"""Draw a grid that always fits at least the visible rect""" |
|||
painter.setPen(cosmeticPen) |
|||
|
|||
r = rect.toRect() # int version |
|||
xcount = r.width() // gridSize |
|||
ycount = r.height() // gridSize |
|||
|
|||
|
|||
#draw vertical |
|||
for x in range(xcount): |
|||
painter.drawLine(x*gridSize, r.top(), x*gridSize, r.bottom()) #x1, y1, x2, y2 |
|||
|
|||
#draw horizontal |
|||
for y in range(ycount): |
|||
painter.drawLine(r.left(), y*gridSize, r.right(), y*gridSize) #x1, y1, x2, y2 |
|||
|
|||
scene.drawBackground = _drawBackground |
|||
scene.addEllipse(-5,-5,10,10) #automatically at 0,0 |
|||
scene.setSceneRect(0,0,1000,1000) |
|||
|
|||
print("Press mouse button to open dialog") |
|||
|
|||
view.show() |
|||
sys.exit(qtApp.exec_()) |
@ -0,0 +1,94 @@ |
|||
#! /usr/bin/env python3 |
|||
# -*- coding: utf-8 -*- |
|||
|
|||
import logging; logger = logging.getLogger(__name__); logger.info("import") |
|||
|
|||
#Standard Library |
|||
import pathlib |
|||
import os |
|||
|
|||
#Third Party |
|||
from PyQt5 import QtCore, QtWidgets |
|||
|
|||
#QtGui |
|||
from designer.settings import Ui_Dialog |
|||
|
|||
class SettingsDialog(QtWidgets.QDialog): |
|||
|
|||
def __init__(self, mainWindow): |
|||
super().__init__() |
|||
self.ui = Ui_Dialog() |
|||
self.ui.setupUi(self) |
|||
self.mainWindow = mainWindow |
|||
|
|||
self.success = False |
|||
|
|||
logger.info("Init settings dialog") |
|||
|
|||
settings = QtCore.QSettings("LaborejoSoftwareSuite", "bug01") |
|||
if settings.contains("launcherBlacklistPlainTextEdit"): |
|||
self.ui.launcherBlacklistPlainTextEdit.setPlainText(settings.value("launcherBlacklistPlainTextEdit", type=str)) |
|||
else: |
|||
self.ui.launcherBlacklistPlainTextEdit.setPlainText("") |
|||
|
|||
if settings.contains("launcherWhitelistPlainTextEdit"): |
|||
self.ui.launcherWhitelistPlainTextEdit.setPlainText(settings.value("launcherWhitelistPlainTextEdit", type=str)) |
|||
else: |
|||
self.ui.launcherWhitelistPlainTextEdit.setPlainText("") |
|||
|
|||
if settings.contains("programPathsPlainTextEdit"): |
|||
self.ui.programPathsPlainTextEdit.setPlainText(settings.value("programPathsPlainTextEdit", type=str)) |
|||
else: |
|||
self.ui.programPathsPlainTextEdit.setPlainText("") |
|||
|
|||
#self.ui.name.textEdited.connect(self.check) #not called when text is changed programatically |
|||
|
|||
self.ui.buttonBox.accepted.connect(self.process) |
|||
self.ui.buttonBox.rejected.connect(self.reject) |
|||
|
|||
self.setWindowFlag(QtCore.Qt.Popup, True) |
|||
self.setModal(True) |
|||
self.setFocus(True) |
|||
logger.info("Show settings dialog") |
|||
self.exec_() |
|||
|
|||
@staticmethod |
|||
def loadFromSettingsAndSendToEngine(): |
|||
"""Called on program start and in self.process, which has a bit overhead because |
|||
it is saving to file and then reloading from file (qsettings)""" |
|||
settings = QtCore.QSettings("LaborejoSoftwareSuite", "bug01") |
|||
if settings.contains("launcherBlacklistPlainTextEdit"): |
|||
bl = settings.value("launcherBlacklistPlainTextEdit", type=str) |
|||
else: |
|||
bl = None |
|||
|
|||
if settings.contains("launcherWhitelistPlainTextEdit"): |
|||
wl = settings.value("launcherWhitelistPlainTextEdit", type=str) |
|||
else: |
|||
wl = None |
|||
|
|||
if settings.contains("programPathsPlainTextEdit"): |
|||
pth = settings.value("programPathsPlainTextEdit", type=str) |
|||
else: |
|||
pth = None |
|||
|
|||
blacklist = bl.split("\n") if bl else [] |
|||
whitelist = wl.split("\n") if wl else [] |
|||
|
|||
|
|||
#Depends on SettingsDialog: More executable paths for the engine. We do this in mainwindow because it has access to the qsettings safe file and is started before engine, program-database or nsmd. |
|||
additionalExecutablePaths = pth.split("\n") if pth else [] |
|||
if additionalExecutablePaths: |
|||
os.environ["PATH"] = os.pathsep.join(additionalExecutablePaths) + os.pathsep + os.environ["PATH"] |
|||
|
|||
def process(self): |
|||
settings = QtCore.QSettings("LaborejoSoftwareSuite", "bug01") |
|||
|
|||
settings.setValue("launcherBlacklistPlainTextEdit", self.ui.launcherBlacklistPlainTextEdit.toPlainText()) |
|||
settings.setValue("launcherWhitelistPlainTextEdit", self.ui.launcherWhitelistPlainTextEdit.toPlainText()) |
|||
settings.setValue("programPathsPlainTextEdit", self.ui.programPathsPlainTextEdit.toPlainText()) |
|||
|
|||
SettingsDialog.loadFromSettingsAndSendToEngine() |
|||
|
|||
self.success = True |
|||
self.done(True) |
Loading…
Reference in new issue