mirror of
				https://gitee.com/gfdgd-xi/deep-wine-runner
				synced 2025-11-04 15:32:23 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			115 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env python3
 | 
						||
import os
 | 
						||
import sys
 | 
						||
import traceback
 | 
						||
programPath = os.path.split(os.path.realpath(__file__))[0]  # 返回 string
 | 
						||
sys.path.append(f"{programPath}/..")
 | 
						||
 | 
						||
import os
 | 
						||
import sys
 | 
						||
import json
 | 
						||
try:
 | 
						||
    import dbus
 | 
						||
except:
 | 
						||
    os.system("python3 -m pip install --upgrade dbus-python --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple --break-system-packages")
 | 
						||
    os.system("python3 -m pip install --upgrade dbus-python --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple")
 | 
						||
    import dbus
 | 
						||
import threading
 | 
						||
from UI.KeyAddGui import *
 | 
						||
import PyQt5.QtWidgets as QtWidgets
 | 
						||
 | 
						||
keyListDebianMap = [[], ["shift"], ["ctrl"], ["alt"], ["ctrl", "alt"], ["ctrl", "shift"], ["alt", "shift"]]
 | 
						||
keyList = ["无快捷键", "shift", "ctrl", "alt", "ctrl+alt", "ctrl+shift", "alt+shift"]
 | 
						||
 | 
						||
class Check:
 | 
						||
    def VersionCheck():
 | 
						||
        try:
 | 
						||
            bus = dbus.SessionBus()
 | 
						||
            bus.get_object("com.deepin.daemon.Keybinding", "/com/deepin/daemon/Keybinding").List()
 | 
						||
            #int("a")
 | 
						||
            return True
 | 
						||
        except:
 | 
						||
            print("无法检测到 Deepin/UOS 快捷键服务")
 | 
						||
            return False
 | 
						||
    def CheckThreading():
 | 
						||
        if Check.VersionCheck():
 | 
						||
            ui.startServer.setDisabled(True)
 | 
						||
            ui.stopServer.setDisabled(True)
 | 
						||
            ui.setAutoStart.setDisabled(True)
 | 
						||
            ui.setUnautoStart.setDisabled(True)
 | 
						||
            ui.editButton.setDisabled(True)
 | 
						||
            ui.keyBoardList.setDisabled(True)
 | 
						||
            ui.delectButton.setDisabled(True)
 | 
						||
 | 
						||
def Clear():
 | 
						||
    #ui.keyBoardList.model().removeRows(0, ui.keyBoardList.model().rowCount())
 | 
						||
    
 | 
						||
    model = QtCore.QStringListModel(window)
 | 
						||
    try:
 | 
						||
        with open(f"{programPath}/list/KeyList.json", "r") as file:
 | 
						||
            lists = []
 | 
						||
            for i in json.loads(file.read()):
 | 
						||
                #lists.append(f"{i[0]}({'+'.join(i[0: -1])}),{i[-1]}")
 | 
						||
                choice = i
 | 
						||
                #ui.localKeyboardChoose.setCurrentIndex(keyListDebianMap.index(choice[:-2]))
 | 
						||
                newList = []
 | 
						||
                newList.append([keyListDebianMap.index(choice[:-2]), choice[-2]])
 | 
						||
                # 解析命令
 | 
						||
                command = choice[-1]
 | 
						||
                # 筛掉路径
 | 
						||
                command = command[command[1:].index("'") + 2:].strip()
 | 
						||
                # 筛出其中一个快捷键
 | 
						||
                newList.append([command[command.index(" ") - 1]])
 | 
						||
                command = command[command.index(" ") + 2:]
 | 
						||
                # 读 exe
 | 
						||
                newList.insert(0, command[:command.index("'")])
 | 
						||
                command = command[command.index("'") + 1: ].strip()
 | 
						||
                # 读最后的快捷键
 | 
						||
                newList[2].insert(0, int(command))
 | 
						||
                print(newList)
 | 
						||
                lists.append(f"{newList[0]}({'+'.join(keyListDebianMap[newList[1][0]])}+{newList[1][1]})=>({'+'.join(keyListDebianMap[newList[2][0]])}+{newList[2][1]})")
 | 
						||
            model.setStringList(lists)
 | 
						||
        ui.keyBoardList.setModel(model)
 | 
						||
    except:
 | 
						||
        traceback.print_exc()
 | 
						||
 | 
						||
class Click:
 | 
						||
    def AddButton():
 | 
						||
        os.system(f"'{programPath}/keyboard-add-gui.py'")
 | 
						||
        Clear()
 | 
						||
 | 
						||
    def EditButton():
 | 
						||
        os.system(f"'{programPath}/keyboard-add-gui.py' {ui.keyBoardList.currentIndex().row()}")
 | 
						||
        Clear()
 | 
						||
 | 
						||
    def DeleteButton():
 | 
						||
        try:
 | 
						||
            with open(f"{programPath}/list/KeyList.json", "r") as file:
 | 
						||
                lists = json.loads(file.read())
 | 
						||
            del lists[ui.keyBoardList.currentIndex().row()]
 | 
						||
            with open(f"{programPath}/list/KeyList.json", "w") as file:
 | 
						||
                file.write(json.dumps(lists))
 | 
						||
            Clear()
 | 
						||
        except:
 | 
						||
            traceback.print_exc()
 | 
						||
            QtWidgets.QMessageBox.critical(window, "错误", traceback.format_exc())
 | 
						||
    
 | 
						||
 | 
						||
if __name__ == "__main__":
 | 
						||
    app = QtWidgets.QApplication(sys.argv)
 | 
						||
    window = QtWidgets.QMainWindow()
 | 
						||
    ui = Ui_MainWindow()
 | 
						||
    ui.setupUi(window)
 | 
						||
    # 连接槽
 | 
						||
    ui.addButton.clicked.connect(Click.AddButton)
 | 
						||
    ui.editButton.clicked.connect(Click.EditButton)
 | 
						||
    ui.delectButton.clicked.connect(Click.DeleteButton)
 | 
						||
    ui.startServer.triggered.connect(lambda: threading.Thread(target=os.system, args=[f"nohup '{programPath}/key-get.py' &"]).start())
 | 
						||
    ui.stopServer.triggered.connect(lambda: threading.Thread(target=os.system, args=[f"'{programPath}/stop.sh'"]).start())
 | 
						||
    ui.setAutoStart.triggered.connect(lambda: threading.Thread(target=os.system, args=[f"pkexec '{programPath}/start-auto-server.sh'"]).start())
 | 
						||
    ui.setUnautoStart.triggered.connect(lambda: threading.Thread(target=os.system, args=[f"pkexec '{programPath}/stop-auto-server.sh'"]).start())
 | 
						||
    window.show()
 | 
						||
    threading.Thread(target=Check.CheckThreading).start()
 | 
						||
    Clear()
 | 
						||
    sys.exit(app.exec_())
 |