From f05b832377223a7ac4836121dc045b64f4c5d41d Mon Sep 17 00:00:00 2001 From: Alex Hughes Date: Mon, 14 Mar 2022 15:01:35 -0700 Subject: [PATCH] Run QtPyConvert and 2to3 on repository This will abstract the Python Qt binding layer away and use mottosso/Qt.py instead. --- wacom-gui/help.py | 9 +- wacom-gui/hotkeys.py | 188 ++++++++++++++++++------------------- wacom-gui/kde_shortcut.py | 10 +- wacom-gui/keystroke.py | 56 +++++------ wacom-gui/options.py | 38 ++++---- wacom-gui/pad.py | 150 +++++++++++++++-------------- wacom-gui/pad_ui.py | 18 ++-- wacom-gui/pressure.py | 76 +++++++-------- wacom-gui/stylus.py | 172 +++++++++++++++++---------------- wacom-gui/stylus_ui.py | 56 +++++------ wacom-gui/touch.py | 10 +- wacom-gui/wacom-gui.py | 140 +++++++++++++-------------- wacom-gui/wacom_data.py | 43 +++++---- wacom-gui/wacom_menu.py | 86 ++++++++--------- wacom-gui/xfce_shortcut.py | 6 +- 15 files changed, 526 insertions(+), 532 deletions(-) diff --git a/wacom-gui/help.py b/wacom-gui/help.py index 59f9f1c..b5e8e91 100644 --- a/wacom-gui/help.py +++ b/wacom-gui/help.py @@ -1,12 +1,11 @@ #!/usr/bin/python -from PyQt4 import QtWebKit -from PyQt4 import QtCore, QtGui +from Qt import QtCore, QtWidgets import sys, os, re -class Help(QtGui.QWidget): +class Help(QtWidgets.QWidget): def __init__(self, parent=None): - QtGui.QWidget.__init__(self, parent) + QtWidgets.QWidget.__init__(self, parent) self.initUI() def initUI(self): @@ -15,6 +14,6 @@ def initUI(self): local_url = QtCore.QUrl.fromLocalFile(file_path) self.browser.load(local_url) - self.mainLayout = QtGui.QHBoxLayout() + self.mainLayout = QtWidgets.QHBoxLayout() self.mainLayout.addWidget(self.browser) self.setLayout(self.mainLayout) diff --git a/wacom-gui/hotkeys.py b/wacom-gui/hotkeys.py index 29a77e8..3366e01 100644 --- a/wacom-gui/hotkeys.py +++ b/wacom-gui/hotkeys.py @@ -1,8 +1,7 @@ #!/usr/bin/python # -*- coding: utf-8 -*- -from PyQt4.QtCore import * -from PyQt4.QtGui import * +from Qt import QtCore, QtGui, QtWidgets from functools import partial import json import os @@ -14,7 +13,7 @@ import keystroke -class Hotkey(QObject): +class Hotkey(QtCore.QObject): def __init__(self, devid, blabel, bid, cmd, parent=None): super(Hotkey, self).__init__(parent) self.devid = devid @@ -23,8 +22,8 @@ def __init__(self, devid, blabel, bid, cmd, parent=None): self.cwd = os.path.dirname(os.path.abspath(__file__)) if self.cwd == '/usr/local/bin': self.cwd = '/usr/local/wacom-gui' - self.btn = QPushButton() - self.btn.setFocusPolicy(Qt.NoFocus) + self.btn = QtWidgets.QPushButton() + self.btn.setFocusPolicy(QtCore.Qt.NoFocus) self.btn.setMaximumSize(90, 16) self.btn.setMinimumSize(90, 16) self.btn.setText(blabel) @@ -32,31 +31,31 @@ def __init__(self, devid, blabel, bid, cmd, parent=None): self.keymap_custom = {} self.keys_list = {} self.keys_custom_list = {} - self.menu = QMenu() - self.modifiers = QMenu("Modifier") - self.mouse = QMenu("Mouse Click") - self.scroll = QMenu("Pan/Scroll") - self.keypress = QMenu("Keypress") - self.custom = QMenu("Custom Keystrokes") + self.menu = QtWidgets.QMenu() + self.modifiers = QtWidgets.QMenu("Modifier") + self.mouse = QtWidgets.QMenu("Mouse Click") + self.scroll = QtWidgets.QMenu("Pan/Scroll") + self.keypress = QtWidgets.QMenu("Keypress") + self.custom = QtWidgets.QMenu("Custom Keystrokes") self.common = {} self.menu_init() self.btn.clicked.connect(self.load_menu) self.get_custom() - self.label = QLabel() - self.label.setFont(QFont('SansSerif', 8)) + self.label = QtWidgets.QLabel() + self.label.setFont(QtGui.QFont('SansSerif', 8)) self.label.setAutoFillBackground(True) self.label.setFixedHeight(14) self.set_value(self.cmd, '') def menu_init(self): - self.common = {"Letters": QMenu("Letters"), - "Numbers": QMenu("Numbers"), - "Special Characters": QMenu("Special Characters"), - "Control Keys": QMenu("Control Keys"), - "Function Keys": QMenu("Function Keys"), - "Keypad": QMenu("Keypad"), - "System Shortcuts": QMenu("System Shortcuts") + self.common = {"Letters": QtWidgets.QMenu("Letters"), + "Numbers": QtWidgets.QMenu("Numbers"), + "Special Characters": QtWidgets.QMenu("Special Characters"), + "Control Keys": QtWidgets.QMenu("Control Keys"), + "Function Keys": QtWidgets.QMenu("Function Keys"), + "Keypad": QtWidgets.QMenu("Keypad"), + "System Shortcuts": QtWidgets.QMenu("System Shortcuts") } self.menu.addAction("Disable", lambda: self.set_value(self.id, 'Disabled')) self.menu.addAction("Default", lambda: self.set_value(self.id, 'Default')) @@ -75,7 +74,7 @@ def menu_init(self): self.keymap = json.load(f) except Exception as e: print (e) - for key in self.keymap.keys(): + for key in list(self.keymap.keys()): if key == 'Modifiers': for cmd, label in sorted(self.keymap[key].items()): self.modifiers.addAction(label, partial(self.set_value, cmd, label)) @@ -120,10 +119,10 @@ def set_value(self, value, label): self.label.setStyleSheet("QLabel { background-color: rgba(255,0,0,120); }") elif self.label.text() == 'Default': self.label.setStyleSheet("QLabel { background-color: rgba(0,255,0,120); }") - elif self.cmd in self.keys_list.keys(): + elif self.cmd in list(self.keys_list.keys()): self.label.setText(self.keys_list[self.cmd]) self.label.setStyleSheet("QLabel { background-color: rgba(200,200,200,120); }") - elif value in self.keymap_custom.keys() and self.keymap_custom[value]['run'] != '': + elif value in list(self.keymap_custom.keys()) and self.keymap_custom[value]['run'] != '': self.label.setText(self.keys_custom_list[self.cmd]) self.label.setStyleSheet("QLabel { background-color: rgba(180,180,20,120); }") self.label.setToolTip("%s: %s" % (self.cmd, self.keymap_custom[value]['run'])) @@ -138,7 +137,7 @@ def get_custom(self): if os.path.exists(config): with open(config, 'r') as f: self.keymap_custom = json.load(f) - for cmd in self.keymap_custom.keys(): + for cmd in list(self.keymap_custom.keys()): if self.keymap_custom[cmd]['run'] == '': self.custom.addAction(self.keymap_custom[cmd]['label'], partial(self.set_value, cmd, @@ -156,8 +155,8 @@ def get_custom(self): if os.path.exists(config): with open(config, 'r') as f: user_custom = json.load(f) - for cmd in user_custom.keys(): - if cmd not in self.keymap_custom.keys(): + for cmd in list(user_custom.keys()): + if cmd not in list(self.keymap_custom.keys()): if user_custom[cmd]['run'] == '': self.custom.addAction(user_custom[cmd]['label'], partial(self.set_value, cmd, user_custom[cmd]['label'])) @@ -165,8 +164,8 @@ def get_custom(self): self.custom.addAction("* %s *" % user_custom[cmd]['label'], partial(self.set_value, cmd, user_custom[cmd]['label'])) self.keys_custom_list[cmd] = user_custom[cmd]['label'] - for key in self.keymap_custom.keys(): - if key in user_custom.keys(): + for key in list(self.keymap_custom.keys()): + if key in list(user_custom.keys()): del user_custom[key] self.keymap_custom.update(user_custom) except Exception as e: @@ -176,14 +175,14 @@ def load_menu(self): # need to reset custom keys if changed elsewhere self.custom.clear() self.get_custom() - self.menu.exec_(QCursor.pos()) + self.menu.exec_(QtGui.QCursor.pos()) def get_keystroke(self, runcmd): ok, cmdstring, label, run, dconf = KeystrokeGui.get_keystrokes(runcmd, self.cmd) if ok == 1: # update custom keystroke db self.set_value(cmdstring, label) - for key in self.keymap_custom.keys(): + for key in list(self.keymap_custom.keys()): if label == self.keymap_custom[key]['label'] or key == cmdstring: del self.keymap_custom[key] break @@ -203,7 +202,7 @@ def get_keystroke(self, runcmd): json.dump(self.keymap_custom, fout, sort_keys=True, indent=4, separators=(',', ": ")) def xsetcmd_gen(self, cmdstring): - strokes = filter(None, re.split('{|}| ', str(cmdstring))) + strokes = [_f for _f in re.split('{|}| ', str(cmdstring)) if _f] self.cmd = ' '.join(strokes) xsetcmd = '' button = False @@ -237,7 +236,7 @@ def is_toggle(self): else: return False -class KeystrokeGui(QDialog, keystroke.Ui_Dialog): +class KeystrokeGui(QtWidgets.QDialog, keystroke.Ui_Dialog): def __init__(self, cmd, parent=None): super(KeystrokeGui, self).__init__(parent) self.setupUi(self) @@ -250,28 +249,28 @@ def __init__(self, cmd, parent=None): self.dconf = None self.keys_list = {} self.keys_custom_list = {} - self.menu = QMenu() - self.modifiers = QMenu("Modifier") - self.mouse = QMenu("Mouse Click") - self.scroll = QMenu("Pan/Scroll") - self.keypress = QMenu("Keypress") - self.letter = QMenu("Letters") - self.num = QMenu("Numbers") - self.special = QMenu("Special Characters") - self.ctrl = QMenu("Control Keys") - self.fn = QMenu("Function Keys") - self.keypad = QMenu("Keypad") - self.custom = QMenu("Load") + self.menu = QtWidgets.QMenu() + self.modifiers = QtWidgets.QMenu("Modifier") + self.mouse = QtWidgets.QMenu("Mouse Click") + self.scroll = QtWidgets.QMenu("Pan/Scroll") + self.keypress = QtWidgets.QMenu("Keypress") + self.letter = QtWidgets.QMenu("Letters") + self.num = QtWidgets.QMenu("Numbers") + self.special = QtWidgets.QMenu("Special Characters") + self.ctrl = QtWidgets.QMenu("Control Keys") + self.fn = QtWidgets.QMenu("Function Keys") + self.keypad = QtWidgets.QMenu("Keypad") + self.custom = QtWidgets.QMenu("Load") self.common = {} self.menu_init() self.get_custom() - if cmd in self.keys_custom_list.keys(): + if cmd in list(self.keys_custom_list.keys()): self.populate_fields(cmd) self.keystroke.setMenu(self.menu) def populate_fields(self, cmd): cmdline = '' - strokes = filter(None, re.split('{|}| ', cmd)) + strokes = [_f for _f in re.split('{|}| ', cmd) if _f] button = False for stroke in strokes: if 'button' in stroke: @@ -306,13 +305,13 @@ def menu_init(self): self.menu.addMenu(self.mouse) self.menu.addMenu(self.scroll) self.menu.addMenu(self.keypress) - self.common = {"Letters": QMenu("Letters"), - "Numbers": QMenu("Numbers"), - "Special Characters": QMenu("Special Characters"), - "Control Keys": QMenu("Control Keys"), - "Function Keys": QMenu("Function Keys"), - "Keypad": QMenu("Keypad"), - "System Shortcuts": QMenu("System Shortcuts") + self.common = {"Letters": QtWidgets.QMenu("Letters"), + "Numbers": QtWidgets.QMenu("Numbers"), + "Special Characters": QtWidgets.QMenu("Special Characters"), + "Control Keys": QtWidgets.QMenu("Control Keys"), + "Function Keys": QtWidgets.QMenu("Function Keys"), + "Keypad": QtWidgets.QMenu("Keypad"), + "System Shortcuts": QtWidgets.QMenu("System Shortcuts") } # key keystrokes from file try: @@ -322,7 +321,7 @@ def menu_init(self): self.keymap = json.load(f) except Exception as e: print (e) - for key in self.keymap.keys(): + for key in list(self.keymap.keys()): if key == 'Modifiers': for cmd, label in sorted(self.keymap[key].items()): self.modifiers.addAction(label, partial(self.set_value, cmd)) @@ -353,7 +352,7 @@ def get_custom(self): if os.path.exists(config): with open(config, 'r') as f: self.keymap_custom = json.load(f) - for cmd in self.keymap_custom.keys(): + for cmd in list(self.keymap_custom.keys()): if self.keymap_custom[cmd]['run'] == '': self.custom.addAction(self.keymap_custom[cmd]['label'], partial(self.load_custom, cmd, @@ -371,8 +370,8 @@ def get_custom(self): if os.path.exists(config): with open(config, 'r') as f: user_custom = json.load(f) - for cmd in user_custom.keys(): - if cmd not in self.keymap_custom.keys(): + for cmd in list(user_custom.keys()): + if cmd not in list(self.keymap_custom.keys()): if user_custom[cmd]['run'] == '': self.custom.addAction(user_custom[cmd]['label'], partial(self.load_custom, cmd, @@ -396,7 +395,7 @@ def clear_input(self): self.runinput.setText("") def remove_one(self): - strokes = filter(None, re.split('{|}', str(self.keystrokeinput.text()))) + strokes = [_f for _f in re.split('{|}', str(self.keystrokeinput.text())) if _f] strokes.pop() newcmd = '' for stroke in strokes: @@ -404,20 +403,20 @@ def remove_one(self): self.keystrokeinput.setText(newcmd) def delete_hotkey(self): - strokes = ' '.join(filter(None, re.split('{|}', str(self.keystrokeinput.text())))) - if strokes in self.keymap_custom.keys(): + strokes = ' '.join([_f for _f in re.split('{|}', str(self.keystrokeinput.text())) if _f]) + if strokes in list(self.keymap_custom.keys()): if str(self.shortcutinput.text()) == self.keymap_custom[strokes]['label']: if self.keymap_custom[strokes]['protected'] == 1: - warning = QMessageBox(QMessageBox.Warning, "Protected Shortcut", + warning = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Warning, "Protected Shortcut", "This is a protected shortcut, it can not be removed.") warning.exec_() else: msg = 'Hotkey: %s' % self.keystrokeinput.text() if self.runinput.text().__len__() != 0: msg = "%s\nCommand: %s" % (msg, self.runinput.text()) - reply = QMessageBox.question(self, 'Delete Hotkey \'%s\'?' %self.shortcutinput.text(), msg, - QMessageBox.Yes, QMessageBox.No) - if reply == QMessageBox.Yes: + reply = QtWidgets.QMessageBox.question(self, 'Delete Hotkey \'%s\'?' %self.shortcutinput.text(), msg, + QtWidgets.QMessageBox.Yes, QtWidgets.QMessageBox.No) + if reply == QtWidgets.QMessageBox.Yes: del self.keymap_custom[strokes] config = os.path.expanduser("~/.wacom-gui") if not os.path.exists(config): @@ -435,7 +434,7 @@ def set_value(self, value): if 'button' in value: cmd = "{%s}" % value else: - strokes = filter(None, re.split('{|}| ', str(value))) + strokes = [_f for _f in re.split('{|}| ', str(value)) if _f] for stroke in strokes: cmd = "%s{%s}" % (cmd, stroke) self.keystrokeinput.setText("%s%s" % (blah, cmd)) @@ -468,32 +467,32 @@ def run_hotkey_edit(self): # mouse presses not allowed xbkbmap = '' if 'button' in self.keystrokeinput.text(): - warning = QMessageBox(QMessageBox.Warning, "Invalid Command", + warning = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Warning, "Invalid Command", "Mouse/Scroll clicks are not valid for keyboard shortcuts.") warning.exec_() return False - strokes = filter(None, re.split('{|}| ', str(self.keystrokeinput.text()))) + strokes = [_f for _f in re.split('{|}| ', str(self.keystrokeinput.text())) if _f] # check input for idx, val in enumerate(strokes): - if idx == 0 and val in self.keymap['Modifiers'].keys(): + if idx == 0 and val in list(self.keymap['Modifiers'].keys()): modifier = True if self.keymap['Modifiers'][val] == 'Hyper': xbkbmap = "" else: xbkbmap = "<%s>" % self.keymap['Modifiers'][val] - elif modifier and val in self.keymap['Modifiers'].keys(): + elif modifier and val in list(self.keymap['Modifiers'].keys()): if self.keymap['Modifiers'][val] == 'Hyper': xbkbmap = "%s" % xbkbmap else: xbkbmap = "%s<%s>" % (xbkbmap, self.keymap['Modifiers'][val]) - elif modifier and val in self.keys_list.keys(): + elif modifier and val in list(self.keys_list.keys()): if val == 'Caps_Lock': - warning = QMessageBox(QMessageBox.Warning, "Invalid Command", + warning = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Warning, "Invalid Command", "Caps Lock is not valid for a keyboard shortcuts.") warning.exec_() return False elif idx < strokes.__len__() -1: - warning = QMessageBox(QMessageBox.Warning, "Invalid Command", + warning = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Warning, "Invalid Command", "Only a single non-modifier character is allowed at the end of " "keyboard shortcuts.") warning.exec_() @@ -508,7 +507,7 @@ def run_hotkey_edit(self): idx = -1 found = False cfg = '/tmp/wc_%s.cfg' % ''.join(random.SystemRandom().choice(string.ascii_uppercase) for _ in range(6)) - for entry in custom.keys(): + for entry in list(custom.keys()): if int(entry.split('custom')[1]) > idx: idx = int(entry.split('custom')[1]) # name match @@ -561,53 +560,53 @@ def load_keyboard_shortcuts(self): def accept(self): # check if valid multi-key command - strokes = filter(None, re.split('{|}| ', str(self.keystrokeinput.text()))) + strokes = [_f for _f in re.split('{|}| ', str(self.keystrokeinput.text())) if _f] # invalid new shortcut if strokes.__len__() < 1: - warning = QMessageBox(QMessageBox.Warning, "Keystroke length too short", + warning = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Warning, "Keystroke length too short", "Please enter more than a single keystroke to make a shortcut.") warning.exec_() # system shortcut elif ' '.join(strokes) in self.keys_list: - warning = QMessageBox(QMessageBox.Warning, "System Keystroke Command", + warning = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Warning, "System Keystroke Command", "This command can not be changed.") warning.exec_() # no shortcut name entered elif self.shortcutinput.text().__len__() <= 1: - warning = QMessageBox(QMessageBox.Warning, "Shortcut Name Undefined", + warning = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Warning, "Shortcut Name Undefined", "Please provide a shortcut name before saving.") warning.exec_() # previously defined as shortcut - elif ' '.join(strokes) in self.keys_custom_list.keys(): + elif ' '.join(strokes) in list(self.keys_custom_list.keys()): if self.shortcutinput.text() != self.keys_custom_list[' '.join(strokes)]: if self.runinput.text() != '': self.dconf = self.run_hotkey_edit() if self.dconf != False: super(KeystrokeGui, self).accept() else: - warning = QMessageBox(QMessageBox.Warning, "Something happened...", + warning = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Warning, "Something happened...", "Not sure why this happened, but it didn't work.") warning.exec_() else: super(KeystrokeGui, self).accept() # shortcut name used for a different shortcut - elif self.shortcutinput.text() in self.keys_custom_list.values(): + elif self.shortcutinput.text() in list(self.keys_custom_list.values()): if self.runinput.text() != '': self.dconf = self.run_hotkey_edit() if self.dconf != False: super(KeystrokeGui, self).accept() else: - warning = QMessageBox(QMessageBox.Warning, "Something happened...", + warning = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Warning, "Something happened...", "Not sure why this happened, but it didn't work.") warning.exec_() else: super(KeystrokeGui, self).accept() # check characters used in shortcut name elif set("[`~!@#$%^&*=+\\|}{'\":;/?><.,]$").intersection(str(self.shortcutinput.text())): - warning = QMessageBox(QMessageBox.Warning, "Invalid Shortcut Name", + warning = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Warning, "Invalid Shortcut Name", "Please do not use special characters, except for _-()") warning.exec_() - elif str(self.shortcutinput.text()) not in self.keys_custom_list.values(): + elif str(self.shortcutinput.text()) not in list(self.keys_custom_list.values()): # check run if self.runinput.isHidden() == False: runcmd = str(self.runinput.text()) @@ -619,7 +618,7 @@ def accept(self): if self.dconf != False: super(KeystrokeGui, self).accept() else: - warning = QMessageBox(QMessageBox.Warning, "Invalid Command", + warning = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Warning, "Invalid Command", "Command path is invalid or is not executable.") warning.exec_() else: @@ -629,11 +628,11 @@ def accept(self): # "This shortcut name is already in use.") # warning.exec_() elif str(self.shortcutinput.text()) != self.keys_list[' '.join(strokes)]: - warning = QMessageBox(QMessageBox.Warning, "Keystroke Command Duplicate", + warning = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Warning, "Keystroke Command Duplicate", "This command already exists as \"%s\"" % self.keys_list[' '.join(strokes)]) warning.exec_() else: - warning = QMessageBox(QMessageBox.Warning, "Keystroke Command Exists", + warning = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Warning, "Keystroke Command Exists", "This command already exists as \"%s\"" % self.keys_list[' '.join(strokes)]) warning.exec_() @@ -649,18 +648,18 @@ def get_keystrokes(run, parent=None): result = dialog.exec_() if result == 1: cmd, label, run, dconf = dialog.get_cmd() - cmd = ' '.join(filter(None, re.split('{|}| ', str(cmd)))) - return QDialog.Accepted, cmd, label, run, dconf + cmd = ' '.join([_f for _f in re.split('{|}| ', str(cmd)) if _f]) + return QtWidgets.QDialog.Accepted, cmd, label, run, dconf else: - return QDialog.Rejected, None, None, None, None + return QtWidgets.QDialog.Rejected, None, None, None, None -class HotkeyWidget(QWidget): +class HotkeyWidget(QtWidgets.QWidget): def __init__(self, devid, blabel, bid, cmd): - QWidget.__init__(self, None) + QtWidgets.QWidget.__init__(self, None) self.button = Hotkey(devid, blabel, bid, cmd) - self.layout = QVBoxLayout(self) - self.layout.setAlignment(Qt.AlignLeft) + self.layout = QtWidgets.QVBoxLayout(self) + self.layout.setAlignment(QtCore.Qt.AlignLeft) self.layout.setMargin(0) self.layout.addWidget(self.button.btn) self.layout.addWidget(self.button.label) @@ -675,7 +674,8 @@ def is_toggle(self): if __name__ == '__main__': - app = QApplication([]) + app = QtWidgets.QApplication([]) window = HotkeyWidget(13, "Button A", "Button 1", 'lhyper z') window.show() app.exec_() + diff --git a/wacom-gui/kde_shortcut.py b/wacom-gui/kde_shortcut.py index c00f56c..33a60e0 100644 --- a/wacom-gui/kde_shortcut.py +++ b/wacom-gui/kde_shortcut.py @@ -150,8 +150,8 @@ from platform import python_version if python_version()[0] == '2': - import ConfigParser as configparser - from StringIO import StringIO + import configparser as configparser + from io import StringIO elif python_version()[0] == '3': import configparser from io import StringIO @@ -260,9 +260,9 @@ def clear(self): def read_dict(self, dictionary, source=''): self.clear() - for section, opts in dictionary.items(): + for section, opts in list(dictionary.items()): self.add_section(section) - for option, value in opts.items(): + for option, value in list(opts.items()): self.set(section, option, value) def write(self, fileobj): @@ -475,7 +475,7 @@ def _findShortcut(data, name = None, shortcut = None, uuid = None): False otherwise. """ data_pattern = re.compile('Data_\d+(_\d+)*$') - for section, kvdata in data.items(): + for section, kvdata in list(data.items()): if re.match(data_pattern, section): ident = section.split("_", 1)[1] shortcut_data = getShortcutData(data, ident) diff --git a/wacom-gui/keystroke.py b/wacom-gui/keystroke.py index 9e914f3..83419f0 100644 --- a/wacom-gui/keystroke.py +++ b/wacom-gui/keystroke.py @@ -7,73 +7,73 @@ # # WARNING! All changes made in this file will be lost! -from PyQt4 import QtCore, QtGui +from Qt import QtCore, QtCompat, QtWidgets try: - _fromUtf8 = QtCore.QString.fromUtf8 + _fromUtf8 = str except AttributeError: def _fromUtf8(s): return s try: - _encoding = QtGui.QApplication.UnicodeUTF8 + _encoding = QtWidgets.QApplication.UnicodeUTF8 def _translate(context, text, disambig): - return QtGui.QApplication.translate(context, text, disambig, _encoding) + return QtCompat.translate(context, text, disambig, _encoding) except AttributeError: def _translate(context, text, disambig): - return QtGui.QApplication.translate(context, text, disambig) + return QtCompat.translate(context, text, disambig) class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName(_fromUtf8("Dialog")) Dialog.resize(625, 139) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(Dialog.sizePolicy().hasHeightForWidth()) Dialog.setSizePolicy(sizePolicy) - self.formLayoutWidget = QtGui.QWidget(Dialog) + self.formLayoutWidget = QtWidgets.QWidget(Dialog) self.formLayoutWidget.setGeometry(QtCore.QRect(10, 10, 601, 121)) self.formLayoutWidget.setObjectName(_fromUtf8("formLayoutWidget")) - self.formLayout = QtGui.QFormLayout(self.formLayoutWidget) - self.formLayout.setFieldGrowthPolicy(QtGui.QFormLayout.AllNonFixedFieldsGrow) + self.formLayout = QtWidgets.QFormLayout(self.formLayoutWidget) + self.formLayout.setFieldGrowthPolicy(QtWidgets.QFormLayout.AllNonFixedFieldsGrow) self.formLayout.setMargin(0) self.formLayout.setObjectName(_fromUtf8("formLayout")) - self.keystrokesLabel = QtGui.QLabel(self.formLayoutWidget) + self.keystrokesLabel = QtWidgets.QLabel(self.formLayoutWidget) self.keystrokesLabel.setObjectName(_fromUtf8("keystrokesLabel")) - self.formLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.keystrokesLabel) - self.keystrokeinput = QtGui.QLineEdit(self.formLayoutWidget) + self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.keystrokesLabel) + self.keystrokeinput = QtWidgets.QLineEdit(self.formLayoutWidget) self.keystrokeinput.setReadOnly(True) self.keystrokeinput.setObjectName(_fromUtf8("keystrokeinput")) - self.formLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.keystrokeinput) - self.shortcutLabel = QtGui.QLabel(self.formLayoutWidget) + self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.keystrokeinput) + self.shortcutLabel = QtWidgets.QLabel(self.formLayoutWidget) self.shortcutLabel.setObjectName(_fromUtf8("shortcutLabel")) - self.formLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.shortcutLabel) - self.shortcutinput = QtGui.QLineEdit(self.formLayoutWidget) + self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.shortcutLabel) + self.shortcutinput = QtWidgets.QLineEdit(self.formLayoutWidget) self.shortcutinput.setObjectName(_fromUtf8("shortcutinput")) - self.formLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.shortcutinput) - self.runLabel = QtGui.QLabel(self.formLayoutWidget) + self.formLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.shortcutinput) + self.runLabel = QtWidgets.QLabel(self.formLayoutWidget) self.runLabel.setObjectName(_fromUtf8("runLabel")) - self.formLayout.setWidget(2, QtGui.QFormLayout.LabelRole, self.runLabel) - self.runinput = QtGui.QLineEdit(self.formLayoutWidget) + self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.runLabel) + self.runinput = QtWidgets.QLineEdit(self.formLayoutWidget) self.runinput.setObjectName(_fromUtf8("runinput")) - self.formLayout.setWidget(2, QtGui.QFormLayout.FieldRole, self.runinput) - self.horizontalLayout_2 = QtGui.QHBoxLayout() + self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.runinput) + self.horizontalLayout_2 = QtWidgets.QHBoxLayout() self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2")) - self.keystroke = QtGui.QPushButton(self.formLayoutWidget) + self.keystroke = QtWidgets.QPushButton(self.formLayoutWidget) self.keystroke.setMaximumSize(QtCore.QSize(100, 16777215)) self.keystroke.setObjectName(_fromUtf8("keystroke")) self.horizontalLayout_2.addWidget(self.keystroke) - self.buttonBox = QtGui.QDialogButtonBox(self.formLayoutWidget) + self.buttonBox = QtWidgets.QDialogButtonBox(self.formLayoutWidget) self.buttonBox.setOrientation(QtCore.Qt.Horizontal) - self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok) + self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok) self.buttonBox.setObjectName(_fromUtf8("buttonBox")) self.horizontalLayout_2.addWidget(self.buttonBox) - self.formLayout.setLayout(3, QtGui.QFormLayout.FieldRole, self.horizontalLayout_2) + self.formLayout.setLayout(3, QtWidgets.QFormLayout.FieldRole, self.horizontalLayout_2) self.retranslateUi(Dialog) - QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("accepted()")), Dialog.accept) - QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("rejected()")), Dialog.reject) + self.buttonBox.accepted.connect(Dialog.accept) + self.buttonBox.rejected.connect(Dialog.reject) QtCore.QMetaObject.connectSlotsByName(Dialog) def retranslateUi(self, Dialog): diff --git a/wacom-gui/options.py b/wacom-gui/options.py index c9f33e8..f4326e4 100644 --- a/wacom-gui/options.py +++ b/wacom-gui/options.py @@ -1,14 +1,14 @@ #!/usr/bin/python -from PyQt4 import QtCore, QtGui +from Qt import QtCore, QtWidgets import sys import os import re -class otherOptions(QtGui.QWidget): +class otherOptions(QtWidgets.QWidget): def __init__(self, deviceNames, parent=None): - QtGui.QWidget.__init__(self, parent) + QtWidgets.QWidget.__init__(self, parent) #self.tabletName = tabletName.replace('Pad', 'Pen') # use the detected device names self.tabletStylus = deviceNames['stylus'] @@ -25,7 +25,7 @@ def initUI(self): self.tabletActiveArea = "" self.orient = '' # layout code - self.mainLayout = QtGui.QHBoxLayout() + self.mainLayout = QtWidgets.QHBoxLayout() self.mainLayout.setAlignment(QtCore.Qt.AlignLeft) screens = self.screenOptions() if screens: @@ -36,21 +36,21 @@ def initUI(self): def screenOptions(self): - if QtGui.QDesktopWidget().numScreens() == 1: + if QtWidgets.QDesktopWidget().numScreens() == 1: self.screenFull = None return None - groupBox = QtGui.QGroupBox("Screen Area") + groupBox = QtWidgets.QGroupBox("Screen Area") groupBox.setAlignment(QtCore.Qt.AlignHCenter) groupBox.setFixedHeight(120) - self.screenGroup = QtGui.QButtonGroup(groupBox) + self.screenGroup = QtWidgets.QButtonGroup(groupBox) self.displays = [] - for x in range(0, QtGui.QDesktopWidget().numScreens()): - self.displays.append(QtGui.QRadioButton("Monitor %d" % x)) - self.screenFull = QtGui.QRadioButton("All Monitors") + for x in range(0, QtWidgets.QDesktopWidget().numScreens()): + self.displays.append(QtWidgets.QRadioButton("Monitor %d" % x)) + self.screenFull = QtWidgets.QRadioButton("All Monitors") for screen in self.displays: self.screenGroup.addButton(screen) self.screenGroup.addButton(self.screenFull) - screenLayout = QtGui.QVBoxLayout() + screenLayout = QtWidgets.QVBoxLayout() for screen in self.displays: screenLayout.addWidget(screen) screenLayout.addWidget(self.screenFull) @@ -61,15 +61,15 @@ def screenOptions(self): def flipOptions(self): - groupBox = QtGui.QGroupBox("Tablet Orientation") + groupBox = QtWidgets.QGroupBox("Tablet Orientation") groupBox.setAlignment(QtCore.Qt.AlignHCenter) groupBox.setFixedHeight(120) - self.tabletFlipGroup = QtGui.QButtonGroup(groupBox) - self.tabletRight = QtGui.QRadioButton("Right-Handed") - self.tabletLeft = QtGui.QRadioButton("Left-Handed") + self.tabletFlipGroup = QtWidgets.QButtonGroup(groupBox) + self.tabletRight = QtWidgets.QRadioButton("Right-Handed") + self.tabletLeft = QtWidgets.QRadioButton("Left-Handed") self.tabletFlipGroup.addButton(self.tabletRight) self.tabletFlipGroup.addButton(self.tabletLeft) - flipLayout = QtGui.QVBoxLayout() + flipLayout = QtWidgets.QVBoxLayout() flipLayout.addWidget(self.tabletRight) flipLayout.addWidget(self.tabletLeft) flipLayout.addStretch(1) @@ -141,12 +141,12 @@ def getTabletArea(self): self.screenFull.setChecked(1) # have to build array then compare... boo else: - for id in range(0, QtGui.QDesktopWidget().numScreens()): - screen = QtGui.QDesktopWidget().screenGeometry(id) + for id in range(0, QtWidgets.QDesktopWidget().numScreens()): + screen = QtWidgets.QDesktopWidget().screenGeometry(id) cmd = "xdpyinfo | grep dimensions | awk '{print $2}' | awk -Fx '{print $1, $2}'" totalResolution = os.popen(cmd).read() totalResolution = totalResolution.split() - display = [[0 for x in xrange(3)] for x in xrange(3)] + display = [[0 for x in range(3)] for x in range(3)] display[2][2] = 1.0 display[0][0] = float(screen.width()) / float(totalResolution[0]) # percent of screen height diff --git a/wacom-gui/pad.py b/wacom-gui/pad.py index df7f795..95a4d8e 100644 --- a/wacom-gui/pad.py +++ b/wacom-gui/pad.py @@ -4,9 +4,7 @@ #!/usr/bin/python # -*- coding: utf-8 -*- -from PyQt4.QtCore import * -from PyQt4.QtGui import * -from PyQt4.QtSvg import * +from Qt import QtCore, QtGui, QtSvg, QtWidgets from hotkeys import HotkeyWidget from stylus import WacomAttribSlider import pad_ui @@ -18,20 +16,20 @@ # 880, 560 -class Pad(QTabWidget, pad_ui.Ui_PadWidget): +class Pad(QtWidgets.QTabWidget, pad_ui.Ui_PadWidget): def __init__(self, parent = None): super(Pad, self).__init__(parent) self.setupUi(self) self.cwd = os.path.dirname(os.path.abspath(__file__)) if self.cwd == '/usr/local/bin': self.cwd = '/usr/local/wacom-gui' - self.keysLayout.setAlignment(Qt.AlignCenter) - self.reset = QPushButton("Set Defaults") + self.keysLayout.setAlignment(QtCore.Qt.AlignCenter) + self.reset = QtWidgets.QPushButton("Set Defaults") self.reset.setMinimumSize(90, 20) self.reset.setMaximumSize(90, 20) self.reset.clicked.connect(self.set_default) self.buttons = {'left': [], 'right': [], 'top': [], 'bottom': []} - self.setFocusPolicy(Qt.NoFocus) + self.setFocusPolicy(QtCore.Qt.NoFocus) desktop = os.environ["DESKTOP_SESSION"] if (desktop == "mate"): self.load_dconf() @@ -70,16 +68,16 @@ def load_dconf(self): if os.path.exists(os.path.expanduser("~/.wacom-gui/custom.json")): with open(os.path.expanduser("~/.wacom-gui/custom.json"), 'r') as f: custom = json.load(f) - for key in hotkeys.keys(): - if key in custom.keys(): + for key in list(hotkeys.keys()): + if key in list(custom.keys()): del custom[key] hotkeys.update(custom) os_custom = self._load_keyboard_shortcuts() - for key, data in hotkeys.items(): + for key, data in list(hotkeys.items()): if data['dconf'] != '': idx = -1 found = False - for entry in os_custom.keys(): + for entry in list(os_custom.keys()): if int(entry.split('custom')[1]) > idx: idx = int(entry.split('custom')[1]) # name match @@ -110,7 +108,7 @@ def load_dconf(self): f.close() os.popen("dconf load /org/mate/desktop/keybindings/ < %s" % config) except Exception as e: - print e + print(str(e)) # This doesn't actually 'load' kde, but merely replicates the logic of the # load_dconf (MATE) path in the KDE path. This code that ensures @@ -123,7 +121,7 @@ def load_kde(self): if not os.path.isdir(config): os.mkdir(config) except Exception as e: - print e + print(str(e)) def _load_keyboard_shortcuts(self): custom = {} @@ -147,19 +145,19 @@ def init_keys(self, dev_id, image, buttons, cmds): self.deleteItemsOfLayout(self.keysLayout.layout()) self.buttons = {'left': [], 'right': [], 'top': [], 'bottom': []} # TODO: Bottom, Right - top = QHBoxLayout() - top.setAlignment(Qt.AlignHCenter) - left = QVBoxLayout() - left.setAlignment(Qt.AlignVCenter) - right = QVBoxLayout() - right.setAlignment(Qt.AlignVCenter) - bottom = QVBoxLayout() - bottom.setAlignment(Qt.AlignVCenter) + top = QtWidgets.QHBoxLayout() + top.setAlignment(QtCore.Qt.AlignHCenter) + QtCore.left = QtWidgets.QVBoxLayout() + QtCore.left.setAlignment(QtCore.Qt.AlignVCenter) + QtCore.right = QtWidgets.QVBoxLayout() + QtCore.right.setAlignment(QtCore.Qt.AlignVCenter) + bottom = QtWidgets.QVBoxLayout() + bottom.setAlignment(QtCore.Qt.AlignVCenter) # add buttons but_loc = {} for bid in sorted(buttons.keys()): but_loc[bid] = buttons[bid]['pos'] - for bid, value in sorted(but_loc.iteritems(), key=lambda (k, v): (v, k)): + for bid, value in sorted(iter(list(but_loc.items())), key=lambda k_v: (k_v[1], k_v[0])): if cmds.__len__() == 0: keystroke = "Default" else: @@ -173,8 +171,8 @@ def init_keys(self, dev_id, image, buttons, cmds): elif buttons[bid]['orient'] == 'Bottom': self.buttons['bottom'].append(HotkeyWidget(dev_id, bid, buttons[bid]['bid'], keystroke)) svgWidget = None - svg_hspace = QSpacerItem(800, 80, QSizePolicy.Fixed, QSizePolicy.Fixed) - svg_vspace = QSpacerItem(80, 300, QSizePolicy.Fixed, QSizePolicy.Fixed) + svg_hspace = QtWidgets.QSpacerItem(800, 80, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) + svg_vspace = QtWidgets.QSpacerItem(80, 300, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) hspace = 0 vspace = 20 # reset button row = 0 @@ -191,7 +189,7 @@ def init_keys(self, dev_id, image, buttons, cmds): try: bkground = os.path.join("/tmp", image) if os.path.exists(bkground): - svgWidget = QSvgWidget(bkground) + svgWidget = QtSvg.QSvgWidget(bkground) col = col + 1 # get spacing for final image svg_size = svgWidget.sizeHint() @@ -201,14 +199,14 @@ def init_keys(self, dev_id, image, buttons, cmds): scale_h = float(img_h / svg_size.height()) if scale_h < scale_w: vspace = round(img_w - (scale_h * svg_size.width())) - svg_vspace.changeSize(vspace, img_h, QSizePolicy.Fixed, QSizePolicy.Fixed) - svg_hspace.changeSize(img_w, 0, QSizePolicy.Fixed, QSizePolicy.Fixed) + svg_vspace.changeSize(vspace, img_h, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) + svg_hspace.changeSize(img_w, 0, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) else: hspace = round(img_h - (scale_w * svg_size.height())) - svg_vspace.changeSize(0, img_h, QSizePolicy.Fixed, QSizePolicy.Fixed) - svg_hspace.changeSize(img_w, hspace, QSizePolicy.Fixed, QSizePolicy.Fixed) + svg_vspace.changeSize(0, img_h, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) + svg_hspace.changeSize(img_w, hspace, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) except Exception as e: - print (e) + print(str(e)) # start to build... # add top row if self.buttons['top'].__len__() != 0: @@ -219,11 +217,11 @@ def init_keys(self, dev_id, image, buttons, cmds): # add left row if self.buttons['left'].__len__() != 0: for button in self.buttons['left']: - left.addWidget(button) + QtCore.left.addWidget(button) if svgWidget is None: - self.keysLayout.addLayout(left, row, 0, 1, 1) + self.keysLayout.addLayout(QtCore.left, row, 0, 1, 1) else: - self.keysLayout.addLayout(left, row, 0, 2, 1) + self.keysLayout.addLayout(QtCore.left, row, 0, 2, 1) if svgWidget is not None: if self.buttons['left'].__len__() == 0: self.keysLayout.addWidget(svgWidget, row, 0, 1, 1) @@ -234,11 +232,11 @@ def init_keys(self, dev_id, image, buttons, cmds): row = row + 1 if self.buttons['right'].__len__() != 0: for button in self.buttons['right']: - right.addWidget(button) + QtCore.right.addWidget(button) if svgWidget is None: - self.keysLayout.addLayout(right, row, 2, 1, 1) + self.keysLayout.addLayout(QtCore.right, row, 2, 1, 1) else: - self.keysLayout.addLayout(right, row - 1, 3, 2, 1) + self.keysLayout.addLayout(QtCore.right, row - 1, 3, 2, 1) if self.buttons['left'].__len__() != 0 or self.buttons['right'].__len__() != 0: row = row + 1 if self.buttons['bottom'].__len__() != 0: @@ -246,13 +244,13 @@ def init_keys(self, dev_id, image, buttons, cmds): top.addWidget(button) self.keysLayout.addLayout(top, row, 0, 1, col) row = row + 1 - resetLayout = QHBoxLayout() - resetLayout.setAlignment(Qt.AlignRight) + resetLayout = QtWidgets.QHBoxLayout() + resetLayout.setAlignment(QtCore.Qt.AlignRight) resetLayout.addWidget(self.reset) self.keysLayout.addLayout(resetLayout, row, col, 1, col) def set_default(self): - for loc in self.buttons.keys(): + for loc in list(self.buttons.keys()): for btn in self.buttons[loc]: btn.reset() @@ -265,7 +263,7 @@ def is_toggle(self): def get_config(self): buttons = {} - for loc in self.buttons.keys(): + for loc in list(self.buttons.keys()): for btn in self.buttons[loc]: info = list(btn.button.get_button_cmd()) id = None @@ -282,13 +280,13 @@ def get_config(self): return buttons -class Touch(QWidget): +class Touch(QtWidgets.QWidget): def __init__(self): - QWidget.__init__(self, None) + QtWidgets.QWidget.__init__(self, None) self.dev_id = None self.touch = None self.gesture = None - self.layout = QGridLayout() + self.layout = QtWidgets.QGridLayout() self.taptime = None self.rawsample = None self.zoomdistance = None @@ -299,41 +297,41 @@ def init(self, dev_id, settings): self.deleteItemsOfLayout(self.layout.layout()) self.dev_id = dev_id self.cwd = os.path.dirname(os.path.abspath(__file__)) - self.touch = QCheckBox("Enable Touch") - self.gesture = QCheckBox("Enable Gestures") - self.guide = QVBoxLayout() - self.guide.setAlignment(Qt.AlignLeft) - touch = QVBoxLayout() + self.touch = QtWidgets.QCheckBox("Enable Touch") + self.gesture = QtWidgets.QCheckBox("Enable Gestures") + self.guide = QtWidgets.QVBoxLayout() + self.guide.setAlignment(QtCore.Qt.AlignLeft) + touch = QtWidgets.QVBoxLayout() touch.addWidget(self.touch) touch.addWidget(self.gesture) self.touch.setChecked(False) self.gesture.setEnabled(False) - if 'touch' in settings.keys() and settings['touch'] == 'on': + if 'touch' in list(settings.keys()) and settings['touch'] == 'on': self.touch.setChecked(True) self.gesture.setEnabled(True) self.gesture.setChecked(False) - if 'gesture' in settings.keys() and settings['gesture'] == 'on' and self.gesture.isEnabled(): + if 'gesture' in list(settings.keys()) and settings['gesture'] == 'on' and self.gesture.isEnabled(): self.touch.setChecked(True) - if 'taptime' in settings.keys(): + if 'taptime' in list(settings.keys()): self.taptime = WacomAttribSlider(self.dev_id, 'taptime', 250, "Double Tap Time (ms)", 0, 500, 25, int(settings['taptime'])) else: self.taptime = WacomAttribSlider(self.dev_id, 'taptime', 250, "Threshold", 0, 500, 25) self.taptime.setToolTip("Time between taps in ms that will register as a double time") - if 'rawsample' in settings.keys(): + if 'rawsample' in list(settings.keys()): self.rawsample = WacomAttribSlider(self.dev_id, 'rawsample', 4, "Sample Size", 1, 20, 4, int(settings['rawsample'])) else: self.rawsample = WacomAttribSlider(self.dev_id, 'rawsample', 4, "Sample Size", 1, 20, 4) self.rawsample.setToolTip("Set the sample window size (a sliding average sampling window) for\n" "incoming input tool raw data points.") - if 'zoomdistance' in settings.keys(): + if 'zoomdistance' in list(settings.keys()): self.zoomdistance = WacomAttribSlider(self.dev_id, 'zoomdistance', 180, "Zoom Distance", 50, 500, 25, int(settings['zoomdistance'])) else: self.zoomdistance = WacomAttribSlider(self.dev_id, 'zoomdistance', 180, "Zoom Distance", 50, 500, 25) self.zoomdistance.setToolTip("A lower value increases the sensitivity when zooming") - if 'scrolldistance' in settings.keys(): + if 'scrolldistance' in list(settings.keys()): self.scrolldistance = WacomAttribSlider(self.dev_id, 'scrolldistance', 80, "Scroll Distance", 10, 200, 20, int(settings['scrolldistance'])) else: @@ -348,26 +346,26 @@ def init(self, dev_id, settings): data = None with open(os.path.join(self.cwd, "icons/ui/touch.json"), 'r') as f: data = json.load(f) - for fingers in data.keys(): - self.guide.addWidget(QLabel(fingers)) - for control in data[fingers].keys(): + for fingers in list(data.keys()): + self.guide.addWidget(QtWidgets.QLabel(fingers)) + for control in list(data[fingers].keys()): text = "%s - %s" % (control, data[fingers][control]['text']) self.guide.addWidget(GuideWidget(data[fingers][control]['icon'], text)) except Exception as e: - print e - group = QGroupBox("Touch Controls") + print(str(e)) + group = QtWidgets.QGroupBox("Touch Controls") group.setFixedSize(290, 80) group.setLayout(touch) - gesture = QGroupBox("Gesture Controls List") + gesture = QtWidgets.QGroupBox("Gesture Controls List") gesture.setLayout(self.guide) gesture.setContentsMargins(6, 6, 6, 6) self.layout.setMargin(0) - self.layout.addWidget(group, 0, 0, 1, 1, Qt.AlignTop) - self.layout.addWidget(gesture, 0, 1, 5, 1, Qt.AlignVCenter) - self.layout.addWidget(self.taptime, 1, 0, 1, 1, Qt.AlignTop) - self.layout.addWidget(self.rawsample, 2, 0, 1, 1, Qt.AlignTop) - self.layout.addWidget(self.zoomdistance, 3, 0, 1, 1, Qt.AlignTop) - self.layout.addWidget(self.scrolldistance, 4, 0, 1, 1, Qt.AlignTop) + self.layout.addWidget(group, 0, 0, 1, 1, QtCore.Qt.AlignTop) + self.layout.addWidget(gesture, 0, 1, 5, 1, QtCore.Qt.AlignVCenter) + self.layout.addWidget(self.taptime, 1, 0, 1, 1, QtCore.Qt.AlignTop) + self.layout.addWidget(self.rawsample, 2, 0, 1, 1, QtCore.Qt.AlignTop) + self.layout.addWidget(self.zoomdistance, 3, 0, 1, 1, QtCore.Qt.AlignTop) + self.layout.addWidget(self.scrolldistance, 4, 0, 1, 1, QtCore.Qt.AlignTop) self.setLayout(self.layout) def deleteItemsOfLayout(self, layout): @@ -447,32 +445,32 @@ def get_config(self): settings[attr] = str(value) return settings -class GuideWidget(QWidget): +class GuideWidget(QtWidgets.QWidget): def __init__(self, icon, info): - QWidget.__init__(self, None) + QtWidgets.QWidget.__init__(self, None) self.cwd = os.path.join(os.path.dirname(os.path.abspath(__file__)), "icons/ui") self.setFixedSize(500, 70) - self.icon = QLabel() + self.icon = QtWidgets.QLabel() self.icon.setFixedSize(40, 40) - self.icon.setPixmap(QPixmap(os.path.join(self.cwd, icon))) + self.icon.setPixmap(QtGui.QPixmap(os.path.join(self.cwd, icon))) self.icon.setScaledContents(True) - self.info = QLabel() + self.info = QtWidgets.QLabel() self.info.setFixedWidth(400) self.info.setText(info) self.info.setWordWrap(True) - layout = QHBoxLayout() - layout.setAlignment(Qt.AlignVCenter) + layout = QtWidgets.QHBoxLayout() + layout.setAlignment(QtCore.Qt.AlignVCenter) layout.addWidget(self.icon) layout.addWidget(self.info) - group = QGroupBox() + group = QtWidgets.QGroupBox() group.setLayout(layout) - main = QVBoxLayout() + main = QtWidgets.QVBoxLayout() main.addWidget(group) self.setLayout(main) if __name__ == '__main__': - app = QApplication([]) + app = QtWidgets.QApplication([]) window = Pad() buttons = {'ButtonC': {'bid': 'Button 3', 'orient': 'Left'}, 'ButtonB': {'bid': 'Button 2', 'orient': 'Left'}, 'ButtonA': {'bid': 'Button 1', 'orient': 'Left'}, 'ButtonG': {'bid': 'Button 11', 'orient': 'Left'}, 'ButtonF': {'bid': 'Button 10', 'orient': 'Left'}, 'ButtonE': {'bid': 'Button 9', 'orient': 'Left'}, 'ButtonD': {'bid': 'Button 8', 'orient': 'Left'}, 'RingUp': {'bid': 'AbsWheelUp', 'orient': 'Left'}, 'RingDown': {'bid': 'AbsWheelDown', 'orient': 'Left'}} # window.init_keys('intuos4-4x6.svg', buttons, {}) diff --git a/wacom-gui/pad_ui.py b/wacom-gui/pad_ui.py index d28f13c..a01e766 100644 --- a/wacom-gui/pad_ui.py +++ b/wacom-gui/pad_ui.py @@ -7,27 +7,27 @@ # # WARNING! All changes made in this file will be lost! -from PyQt4 import QtCore, QtGui +from Qt import QtCore, QtCompat, QtWidgets try: - _fromUtf8 = QtCore.QString.fromUtf8 + _fromUtf8 = str except AttributeError: def _fromUtf8(s): return s try: - _encoding = QtGui.QApplication.UnicodeUTF8 + _encoding = QtWidgets.QApplication.UnicodeUTF8 def _translate(context, text, disambig): - return QtGui.QApplication.translate(context, text, disambig, _encoding) + return QtCompat.translate(context, text, disambig, _encoding) except AttributeError: def _translate(context, text, disambig): - return QtGui.QApplication.translate(context, text, disambig) + return QtCompat.translate(context, text, disambig) class Ui_PadWidget(object): def setupUi(self, PadWidget): PadWidget.setObjectName(_fromUtf8("PadWidget")) PadWidget.resize(840, 520) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Minimum) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(PadWidget.sizePolicy().hasHeightForWidth()) @@ -46,12 +46,12 @@ def setupUi(self, PadWidget): " }\n" "border-style: none;\n" "border-width: 0px;")) - self.keys = QtGui.QWidget() + self.keys = QtWidgets.QWidget() self.keys.setObjectName(_fromUtf8("keys")) - self.gridLayoutWidget = QtGui.QWidget(self.keys) + self.gridLayoutWidget = QtWidgets.QWidget(self.keys) self.gridLayoutWidget.setGeometry(QtCore.QRect(0, 0, 831, 481)) self.gridLayoutWidget.setObjectName(_fromUtf8("gridLayoutWidget")) - self.keysLayout = QtGui.QGridLayout(self.gridLayoutWidget) + self.keysLayout = QtWidgets.QGridLayout(self.gridLayoutWidget) self.keysLayout.setMargin(0) self.keysLayout.setObjectName(_fromUtf8("keysLayout")) PadWidget.addTab(self.keys, _fromUtf8("")) diff --git a/wacom-gui/pressure.py b/wacom-gui/pressure.py index af5818e..9d01aca 100644 --- a/wacom-gui/pressure.py +++ b/wacom-gui/pressure.py @@ -5,16 +5,16 @@ # QFont, QLayout, QGraphicsScene, QGraphicsView, QPixmap, QGraphicsPixmapItem, \ # QTabletEvent, QLabel, QSplitter, QRadialGradient, QImage #from PyQt4.QtCore import QObject, SIGNAL, SLOT, QPointF, Qt, QRectF, QPointF, QString, QRect -from PyQt4 import QtCore,QtGui +from Qt import QtCore, QtGui, QtWidgets import sys, os -class pressureSettings(QtGui.QWidget): +class pressureSettings(QtWidgets.QWidget): def __init__(self, tabletName, parent=None): - QtGui.QWidget.__init__(self, parent) + QtWidgets.QWidget.__init__(self, parent) self.setFixedSize(300, 300) self.tabletName = tabletName - mainLayout = QtGui.QHBoxLayout() + mainLayout = QtWidgets.QHBoxLayout() mainLayout.setAlignment(QtCore.Qt.AlignLeft) self.setLayout(mainLayout) @@ -47,9 +47,9 @@ def paintEvent(self, event): painter.drawEllipse(QtCore.QRectF(self.points[1][0] - 4, self.points[1][1] - 4, 8, 8)) painter.setPen(QtGui.QPen(QtGui.QColor(QtCore.Qt.white), 1)) label1 = "("+ str((self.points[0][0] - 50)/2) + "," + str(100 - ((self.points[0][1] -50)/2)) + ")" - painter.drawText(self.points[0][0] -25, self.points[0][1] + 18, QtCore.QString(label1)) + painter.drawText(self.points[0][0] -25, self.points[0][1] + 18, str(label1)) label2 = "("+ str((self.points[1][0] - 50)/2) + "," + str(100 - ((self.points[1][1] -50)/2)) + ")" - painter.drawText(self.points[1][0] -25, self.points[1][1] + 18, QtCore.QString(label2)) + painter.drawText(self.points[1][0] -25, self.points[1][1] + 18, str(label2)) def setSensor(self, sensor): self.sensor = sensor @@ -61,7 +61,7 @@ def setSensor(self, sensor): # And this one too # http://stackoverflow.com/a/3220819/736306 def mousePressEvent(self, event): - i = min(range(len(self.points)), + i = min(list(range(len(self.points))), key=lambda i: (event.x() - self.points[i][0]) ** 2 + (event.y() - self.points[i][1]) ** 2) #print "X: " + str(event.x()) + " Y: " + str(event.y()) @@ -89,7 +89,7 @@ def mouseMoveEvent(self, event): def mouseReleaseEvent(self, event): self.tracking = None if self.sensor == None: - print "Need device to be set" + print("Need device to be set") else: accuratePts = str((self.points[0][0] - 50)/2) + " " + str(100 - ((self.points[0][1] -50)/2)) + \ " " + str((self.points[1][0] - 50)/2) + " " + str(100 - ((self.points[1][1] -50)/2)) @@ -111,19 +111,19 @@ def setCurPoints(self,pressure): #================================================================================================ #================================================================================================ -class pressureTest(QtGui.QWidget): +class pressureTest(QtWidgets.QWidget): def __init__(self, tabletName, parent=None): - QtGui.QWidget.__init__(self, parent) + QtWidgets.QWidget.__init__(self, parent) self.setFixedSize(250, 300) - self.scene = QtGui.QGraphicsScene() + self.scene = QtWidgets.QGraphicsScene() self.scene.setBspTreeDepth(1) - self.view = QtGui.QGraphicsView(self.scene) + self.view = QtWidgets.QGraphicsView(self.scene) self.view.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) self.view.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) self.tabletName = tabletName self.info = pressureInfo(self.tabletName) - splitter = QtGui.QSplitter(QtCore.Qt.Vertical) + splitter = QtWidgets.QSplitter(QtCore.Qt.Vertical) splitter.addWidget(self.view) splitter.addWidget(self.info) splitter.setSizes([200, 50]) @@ -131,13 +131,13 @@ def __init__(self, tabletName, parent=None): splitter.handle(1).setEnabled(False) #print splitter.count() - testLayout = QtGui.QVBoxLayout() + testLayout = QtWidgets.QVBoxLayout() testLayout.setAlignment(QtCore.Qt.AlignBottom) testLayout.addWidget(splitter) self.setLayout(testLayout) self.blank = QtGui.QPixmap(250,250) self.blank.fill(QtCore.Qt.white) - self.pixmap_item = QtGui.QGraphicsPixmapItem(self.blank, None, self.scene) + self.pixmap_item = QtWidgets.QGraphicsPixmapItem(self.blank, None, self.scene) def tabletEvent(self, event): senId = "" @@ -160,7 +160,7 @@ def tabletEvent(self, event): radial.setColorAt(1,QtGui.QColor(color,color,color,0)) brush = QtGui.QBrush(radial) if(amp >= 1): - if len(self.scene.items()) >= 50: + if len(list(self.scene.items())) >= 50: render = QtGui.QPixmap(250,250) painter = QtGui.QPainter(render) rect = QtCore.QRectF(0,0,250,250) @@ -178,22 +178,22 @@ def setSensor(self,sensor): #================================================================================================ #================================================================================================ -class pressureInfo(QtGui.QWidget): +class pressureInfo(QtWidgets.QWidget): def __init__(self, tabletName, parent=None): - QtGui.QWidget.__init__(self, parent) - row1 = QtGui.QHBoxLayout() - row2 = QtGui.QHBoxLayout() + QtWidgets.QWidget.__init__(self, parent) + row1 = QtWidgets.QHBoxLayout() + row2 = QtWidgets.QHBoxLayout() self.tabletName=tabletName - self.xTilt = QtGui.QLabel("XTilt: 0.0") - self.yTilt = QtGui.QLabel("YTilt: 0.0") - self.amp = QtGui.QLabel("Amplitude: 0") + self.xTilt = QtWidgets.QLabel("XTilt: 0.0") + self.yTilt = QtWidgets.QLabel("YTilt: 0.0") + self.amp = QtWidgets.QLabel("Amplitude: 0") self.sensor = "" row1.addWidget(self.xTilt,0,QtCore.Qt.AlignLeft) row1.addWidget(self.yTilt,0,QtCore.Qt.AlignLeft) row2.addWidget(self.amp,0,QtCore.Qt.AlignHCenter) - layout = QtGui.QVBoxLayout() + layout = QtWidgets.QVBoxLayout() layout.addLayout(row1) layout.addLayout(row2) self.setLayout(layout) @@ -203,21 +203,21 @@ def updateInfo(self,x,y,amp): self.yTilt.setText("yTilt: " + str(y)) self.amp.setText("Amplitude: " + str(amp)) -class penOptions(QtGui.QWidget): +class penOptions(QtWidgets.QWidget): def __init__(self, tabletName, sensor, parent=None): - QtGui.QWidget.__init__(self, parent) + QtWidgets.QWidget.__init__(self, parent) self.setFixedSize(250, 120) self.tabletName = tabletName self.sensor = sensor - self.buttons = QtGui.QCheckBox("Inverse Buttons") + self.buttons = QtWidgets.QCheckBox("Inverse Buttons") self.buttons.setToolTip("Inverse mouse clicks on pen") self.buttons.stateChanged.connect(self.buttonChange) - self.tiptouch = QtGui.QCheckBox("Pen Touch") + self.tiptouch = QtWidgets.QCheckBox("Pen Touch") self.tiptouch.setToolTip("When enabled, pen must touch tablet to work.\nWhen disabled, hover will register.") self.tiptouch.stateChanged.connect(self.tipChange) #layout code - self.mainLayout = QtGui.QVBoxLayout() + self.mainLayout = QtWidgets.QVBoxLayout() self.mainLayout.addWidget(self.penSettings()) if sensor == 'stylus': self.mainLayout.addWidget(self.buttons) @@ -240,18 +240,18 @@ def tipChange(self): but1 = os.popen("xsetwacom --set \"%s %s\" TabletPCButton off" % (self.tabletName, self.sensor.lower())) def penSettings(self): - groupBox = QtGui.QGroupBox("Mode") + groupBox = QtWidgets.QGroupBox("Mode") groupBox.setAlignment(QtCore.Qt.AlignCenter) - self.penGroup = QtGui.QButtonGroup(groupBox) - self.penAbs = QtGui.QRadioButton("Absolute") + self.penGroup = QtWidgets.QButtonGroup(groupBox) + self.penAbs = QtWidgets.QRadioButton("Absolute") self.penAbs.setToolTip("%s maps 1:1 to mapped input area." % self.sensor.title()) - self.penRel = QtGui.QRadioButton("Relative") + self.penRel = QtWidgets.QRadioButton("Relative") self.penRel.setToolTip("%s moves relative to when it is detected." % self.sensor.title()) self.penGroup.addButton(self.penAbs) self.penGroup.addButton(self.penRel) - penLayout = QtGui.QHBoxLayout() + penLayout = QtWidgets.QHBoxLayout() penLayout.addWidget(self.penAbs) penLayout.addWidget(self.penRel) penLayout.addStretch(1) @@ -305,11 +305,11 @@ def getPenInfo(self): def hideButtons(self): self.buttons.hide() -class pressure(QtGui.QWidget): +class pressure(QtWidgets.QWidget): def __init__(self, name, sensor, parent=None): - QtGui.QWidget.__init__(self, parent) + QtWidgets.QWidget.__init__(self, parent) self.setFixedSize(650, 400) - left = QtGui.QVBoxLayout() + left = QtWidgets.QVBoxLayout() if name is None: return self.tabletName = name.replace('Pad', 'Pen') @@ -322,7 +322,7 @@ def __init__(self, name, sensor, parent=None): self.pen = penOptions(self.tabletName, sensor) left.addWidget(self.pen) - grid = QtGui.QHBoxLayout() + grid = QtWidgets.QHBoxLayout() grid.addLayout(left, QtCore.Qt.AlignTop) if self.sensor in ['stylus', 'eraser']: grid.addWidget(self.test) diff --git a/wacom-gui/stylus.py b/wacom-gui/stylus.py index 6d27f05..d640a15 100644 --- a/wacom-gui/stylus.py +++ b/wacom-gui/stylus.py @@ -1,9 +1,7 @@ #!/usr/bin/python # -*- coding: utf-8 -*- -from PyQt4.QtCore import * -from PyQt4.QtGui import * -from PyQt4.QtSvg import * +from Qt import QtCore, QtGui, QtWidgets from hotkeys import HotkeyWidget import stylus_ui import os @@ -12,16 +10,16 @@ # 880, 560 -class Stylus(QTabWidget, stylus_ui.Ui_StylusWidget): +class Stylus(QtWidgets.QTabWidget, stylus_ui.Ui_StylusWidget): def __init__(self, parent = None): super(Stylus, self).__init__(parent) self.setupUi(self) self.cwd = os.path.dirname(os.path.abspath(__file__)) - self.setFocusPolicy(Qt.NoFocus) + self.setFocusPolicy(QtCore.Qt.NoFocus) # put pen images in GUI - self.penImage.setPixmap(QPixmap(os.path.join(self.cwd, "icons/ui/stylus_pen.png"))) + self.penImage.setPixmap(QtGui.QPixmap(os.path.join(self.cwd, "icons/ui/stylus_pen.png"))) self.penImage.setScaledContents(True) - self.eraserImage.setPixmap(QPixmap(os.path.join(self.cwd,"icons/ui/stylus_eraser.png"))) + self.eraserImage.setPixmap(QtGui.QPixmap(os.path.join(self.cwd,"icons/ui/stylus_eraser.png"))) self.eraserImage.setScaledContents(True) self.button1 = None self.button2 = None @@ -32,7 +30,7 @@ def __init__(self, parent = None): self.penTaptime = None self.penRawsample = None self.penSuppress = None - self.penTabletPC = QCheckBox("TabletPCButton") + self.penTabletPC = QtWidgets.QCheckBox("TabletPCButton") self.penTabletPC.setToolTip("When enabled, pen must touch screen for the stylus to work.") self.penTabletPC.stateChanged.connect(self.updateTabletPC) self.eraserPressure = None @@ -41,7 +39,7 @@ def __init__(self, parent = None): self.eraserRawsample = None self.eraserSuppress = None self.mapping = Mapping() - self.mappingImage.setPixmap(QPixmap(os.path.join(self.cwd, "icons/ui/mapping.png"))) + self.mappingImage.setPixmap(QtGui.QPixmap(os.path.join(self.cwd, "icons/ui/mapping.png"))) self.penImage.setScaledContents(True) self.mappingToolRight.addWidget(self.mapping) self.penDefault.clicked.connect(self.resetPen) @@ -54,34 +52,34 @@ def init_pen(self, dev_id, pen): self.deleteItemsOfLayout(self.penToolRight.layout()) # TODO: button stuff # TODO: mapping stuff - if 'pressurecurve' in pen.keys(): + if 'pressurecurve' in list(pen.keys()): self.penPressure = WacomPressure(dev_id, pen['pressurecurve']) else: self.penPressure = WacomPressure(dev_id) self.penPressure.setToolTip("Set pressure curve for input pressure.\n" "It is composed of two anchor points (0,0 and 100,100)") self.penPressure.gauge.installEventFilter(self) - if 'threshold' in pen.keys(): + if 'threshold' in list(pen.keys()): self.penThreshold = WacomAttribSlider(dev_id, 'threshold', 26, "Threshold", 0, 2047, 50, int(pen['threshold'])) else: self.penThreshold = WacomAttribSlider(dev_id, 'threshold', 26, "Threshold", 0, 2047, 50) self.penThreshold.setToolTip("Set the minimum pressure necessary to generate a Button event\n" "for the stylus tip, eraser, or touch.") - if 'taptime' in pen.keys(): + if 'taptime' in list(pen.keys()): self.penTaptime = WacomAttribSlider(dev_id, 'taptime', 250, "Double Tap Time (ms)", 0, 500, 25, int(pen['taptime'])) else: self.penTaptime = WacomAttribSlider(dev_id, 'taptime', 250, "Threshold", 0, 500, 25) self.penTaptime.setToolTip("Time between taps in ms that will register as a double time") - if 'rawsample' in pen.keys(): + if 'rawsample' in list(pen.keys()): self.penRawsample = WacomAttribSlider(dev_id, 'rawsample', 4, "Sample Size", 1, 20, 4, int(pen['rawsample'])) else: self.penRawsample = WacomAttribSlider(dev_id, 'rawsample', 4, "Sample Size", 1, 20, 4) self.penRawsample.setToolTip("Set the sample window size (a sliding average sampling window) for\n" "incoming input tool raw data points.") - if 'suppress' in pen.keys(): + if 'suppress' in list(pen.keys()): self.penSuppress = WacomAttribSlider(dev_id, 'suppress', 2, "Tilt Sensitivity", 0, 100, 10, int(pen['suppress'])) else: @@ -89,7 +87,7 @@ def init_pen(self, dev_id, pen): self.penSuppress.setToolTip("Set the delta (difference) cutoff level for further processing of\n" "incoming input tool coordinate values.") - if 'buttons' in pen.keys(): + if 'buttons' in list(pen.keys()): if 'Button2' in pen['buttons']: self.button2 = HotkeyWidget(dev_id, 'Button2', 'Button 2', pen['buttons']['Button2']) else: @@ -103,7 +101,7 @@ def init_pen(self, dev_id, pen): self.penToolLeft.addWidget(self.penThreshold) self.penToolLeft.addWidget(self.penTaptime) self.penToolLeft.addWidget(self.penRawsample) - spacer = QSpacerItem(20, 200, QSizePolicy.Fixed, QSizePolicy.Fixed) + spacer = QtWidgets.QSpacerItem(20, 200, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) self.penToolRight.addWidget(self.button3) self.penToolRight.addWidget(self.button2) self.penToolRight.addItem(spacer) @@ -113,41 +111,41 @@ def init_pen(self, dev_id, pen): def init_eraser(self, dev_id, eraser): self.deleteItemsOfLayout(self.eraserToolLeft.layout()) self.deleteItemsOfLayout(self.eraserToolRight.layout()) - if 'pressurecurve' in eraser.keys(): + if 'pressurecurve' in list(eraser.keys()): self.eraserPressure = WacomPressure(dev_id, eraser['pressurecurve']) else: self.eraserPressure = WacomPressure(dev_id) self.eraserPressure.gauge.installEventFilter(self) self.eraserPressure.setToolTip("Set pressure curve for input pressure.\n" "It is composed of two anchor points (0,0 and 100,100)") - if 'threshold' in eraser.keys(): + if 'threshold' in list(eraser.keys()): self.eraserThreshold = WacomAttribSlider(dev_id, 'threshold', 26, "Threshold", 0, 2047, 50, int(eraser['threshold'])) else: self.eraserThreshold = WacomAttribSlider(dev_id, 'threshold', 26, "Threshold", 0, 2047, 50) self.eraserThreshold.setToolTip("Set the minimum pressure necessary to generate a Button event\n" "for the stylus tip, eraser, or touch.") - if 'taptime' in eraser.keys(): + if 'taptime' in list(eraser.keys()): self.eraserTaptime = WacomAttribSlider(dev_id, 'taptime', 250, "Double Tap Time (ms)", 0, 500, 25, int(eraser['taptime'])) else: self.eraserTaptime = WacomAttribSlider(dev_id, 'taptime', 250, "Threshold", 0, 500, 25) self.eraserTaptime.setToolTip("Time between taps in ms that will register as a double time") - if 'rawsample' in eraser.keys(): + if 'rawsample' in list(eraser.keys()): self.eraserRawsample = WacomAttribSlider(dev_id, 'rawsample', 4, "Sample Size", 1, 20, 4, int(eraser['rawsample'])) else: self.eraserRawsample = WacomAttribSlider(dev_id, 'rawsample', 4, "Sample Size", 1, 20, 4) self.eraserRawsample.setToolTip("Set the sample window size (a sliding average sampling window) for\n" "incoming input tool raw data points.") - if 'suppress' in eraser.keys(): + if 'suppress' in list(eraser.keys()): self.eraserSuppress = WacomAttribSlider(dev_id, 'suppress', 2, "Tilt Sensitivity", 0, 100, 10, int(eraser['suppress'])) else: self.eraserSuppress = WacomAttribSlider(dev_id, 'suppress', 2, "Tilt Sensitivity", 0, 100, 10) self.eraserSuppress.setToolTip("Set the delta (difference) cutoff level for further processing of\n" "incoming input tool coordinate values.") - if 'buttons' in eraser.keys(): + if 'buttons' in list(eraser.keys()): if 'Button1' in eraser['buttons']: self.button1 = HotkeyWidget(dev_id, 'Button1', 'Button 1', eraser['buttons']['Button1']) else: @@ -157,7 +155,7 @@ def init_eraser(self, dev_id, eraser): self.eraserToolLeft.addWidget(self.eraserThreshold) self.eraserToolLeft.addWidget(self.eraserTaptime) self.eraserToolLeft.addWidget(self.eraserRawsample) - spacer = QSpacerItem(20, 200, QSizePolicy.Fixed, QSizePolicy.Fixed) + spacer = QtWidgets.QSpacerItem(20, 200, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) self.eraserToolRight.addWidget(self.button1) self.eraserToolRight.addItem(spacer) self.eraserToolRight.addWidget(self.eraserSuppress) @@ -210,7 +208,7 @@ def resetEraser(self): self.eraserSuppress.set_defaults() def eventFilter(self, source, event): - if event.type() == QEvent.TabletMove: + if event.type() == QtCore.QEvent.TabletMove: if event.pointerType() == 1: self.penPressure.update_gauge(event.pressure()) return True @@ -262,18 +260,18 @@ def get_config(self): data['stylus']['buttons'][info[0]] = info[2] return data -class WacomAttribSlider(QWidget): +class WacomAttribSlider(QtWidgets.QWidget): def __init__(self, dev_id, attr, default, label, x, y, ticks=1, setting=None, x_label=None, y_label=None): - QWidget.__init__(self, None) + QtWidgets.QWidget.__init__(self, None) self.dev_id = dev_id self.attr = attr self.default = default - self.group = QGroupBox(label) + self.group = QtWidgets.QGroupBox(label) self.group.setFixedSize(290, 80) - self.group.setAlignment(Qt.AlignTop) + self.group.setAlignment(QtCore.Qt.AlignTop) self.min = None self.max = None - self.slider = QSlider(Qt.Horizontal) + self.slider = QtWidgets.QSlider(QtCore.Qt.Horizontal) # self.slider.setFocusPolicy(Qt.NoFocus) self.slider.setMinimum(x) self.slider.setMaximum(y) @@ -284,35 +282,35 @@ def __init__(self, dev_id, attr, default, label, x, y, ticks=1, setting=None, x_ self.slider.setValue(self.default) self.slider.setTickInterval(ticks) self.slider.setTickPosition(self.slider.TicksBelow) - self.value = QLabel(str(self.slider.value())) + self.value = QtWidgets.QLabel(str(self.slider.value())) self.value.setStyleSheet("QLabel { " "font-weight: bold; color: #6DD7E8; " "background-color: #444444; " "padding-left: 1px; " "padding-right: 1px;}") - self.value.setAlignment(Qt.AlignRight) + self.value.setAlignment(QtCore.Qt.AlignRight) self.value.setFixedSize(46, 14) if x_label is not None: - self.min = QLabel(str(x_label)) + self.min = QtWidgets.QLabel(str(x_label)) else: - self.min = QLabel(str(x)) + self.min = QtWidgets.QLabel(str(x)) if y_label is not None: - self.max = QLabel(str(y_label)) + self.max = QtWidgets.QLabel(str(y_label)) else: - self.max = QLabel(str(y)) + self.max = QtWidgets.QLabel(str(y)) self.min.setFixedSize(40, 14) self.max.setFixedSize(40, 14) - self.min.setAlignment(Qt.AlignRight) - self.spread = QSpacerItem(240, 14, QSizePolicy.Fixed, QSizePolicy.Fixed) + self.min.setAlignment(QtCore.Qt.AlignRight) + self.spread = QtWidgets.QSpacerItem(240, 14, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) - grid = QGridLayout() - grid.addWidget(self.value, 0, 1, 1, 1, Qt.AlignRight) - grid.addWidget(self.slider, 1, 0, 1, 3, Qt.AlignHCenter) - grid.addWidget(self.min, 2, 0, 1, 1, Qt.AlignRight) + grid = QtWidgets.QGridLayout() + grid.addWidget(self.value, 0, 1, 1, 1, QtCore.Qt.AlignRight) + grid.addWidget(self.slider, 1, 0, 1, 3, QtCore.Qt.AlignHCenter) + grid.addWidget(self.min, 2, 0, 1, 1, QtCore.Qt.AlignRight) grid.addItem(self.spread, 2, 1, 1, 1) - grid.addWidget(self.max, 2, 2, 1, 1, Qt.AlignLeft) + grid.addWidget(self.max, 2, 2, 1, 1, QtCore.Qt.AlignLeft) self.group.setLayout(grid) - layout = QHBoxLayout() + layout = QtWidgets.QHBoxLayout() layout.addWidget(self.group) self.setLayout(layout) @@ -334,9 +332,9 @@ def set_defaults(self): self.value.setText(str(self.default)) self.slider.setValue(self.default) -class WacomPressure(QWidget): +class WacomPressure(QtWidgets.QWidget): def __init__(self, dev_id, setting=None): - QWidget.__init__(self, None) + QtWidgets.QWidget.__init__(self, None) self.dev_id = dev_id self.attr = 'pressurecurve' self.defaults = [[0, 100, 0, 100], @@ -354,18 +352,18 @@ def __init__(self, dev_id, setting=None): self.setting = setting #for value in values: # self.setting.append(int(value)) - group = QGroupBox('Tip Feel') + group = QtWidgets.QGroupBox('Tip Feel') group.setFixedSize(290, 148) - group.setAlignment(Qt.AlignTop) - self.gauge = QProgressBar() + group.setAlignment(QtCore.Qt.AlignTop) + self.gauge = QtWidgets.QProgressBar() self.gauge.setRange(0, 1000) self.gauge.setValue(0) self.gauge.setFixedSize(260, 18) - self.min = QLabel("Soft") - self.max = QLabel("Firm") + self.min = QtWidgets.QLabel("Soft") + self.max = QtWidgets.QLabel("Firm") self.min.setFixedSize(40, 14) self.max.setFixedSize(40, 14) - self.slider = QSlider(Qt.Horizontal) + self.slider = QtWidgets.QSlider(QtCore.Qt.Horizontal) # self.slider.setFocusPolicy(Qt.NoFocus) self.slider.setMinimum(0) self.slider.setMaximum(8) @@ -377,7 +375,7 @@ def __init__(self, dev_id, setting=None): self.slider.setValue(0) self.slider.setTickInterval(1) self.slider.setTickPosition(self.slider.TicksBelow) - self.value = QLabel("[%s]" % ",".join(str(i) for i in self.setting)) + self.value = QtWidgets.QLabel("[%s]" % ",".join(str(i) for i in self.setting)) self.value.setStyleSheet("QLabel { font-weight: bold; color: #6DD7E8; " "background-color: #444444; padding-left: 1px; " "padding-right: 1px;}" @@ -394,20 +392,20 @@ def __init__(self, dev_id, setting=None): "border-radius: 1px;" "border: 1px solid black;" "}") - self.value.setAlignment(Qt.AlignRight) + self.value.setAlignment(QtCore.Qt.AlignRight) self.value.setFixedSize(144, 14) - self.min.setAlignment(Qt.AlignRight) - self.spread = QSpacerItem(240, 14, QSizePolicy.Fixed, QSizePolicy.Fixed) + self.min.setAlignment(QtCore.Qt.AlignRight) + self.spread = QtWidgets.QSpacerItem(240, 14, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) - grid = QGridLayout() - grid.addWidget(self.value, 0, 1, 1, 1, Qt.AlignRight) - grid.addWidget(self.slider, 1, 0, 1, 3, Qt.AlignHCenter) - grid.addWidget(self.min, 2, 0, 1, 1, Qt.AlignRight) + grid = QtWidgets.QGridLayout() + grid.addWidget(self.value, 0, 1, 1, 1, QtCore.Qt.AlignRight) + grid.addWidget(self.slider, 1, 0, 1, 3, QtCore.Qt.AlignHCenter) + grid.addWidget(self.min, 2, 0, 1, 1, QtCore.Qt.AlignRight) grid.addItem(self.spread, 2, 1, 1, 1) - grid.addWidget(self.max, 2, 2, 1, 1, Qt.AlignLeft) - grid.addWidget(self.gauge, 3, 0, 1, 3, Qt.AlignHCenter) + grid.addWidget(self.max, 2, 2, 1, 1, QtCore.Qt.AlignLeft) + grid.addWidget(self.gauge, 3, 0, 1, 3, QtCore.Qt.AlignHCenter) group.setLayout(grid) - layout = QHBoxLayout() + layout = QtWidgets.QHBoxLayout() layout.addWidget(group) self.setLayout(layout) @@ -433,9 +431,9 @@ def set_defaults(self): def update_gauge(self, val): self.gauge.setValue(int(val * 1000)) -class Mapping(QWidget): +class Mapping(QtWidgets.QWidget): def __init__(self): - QWidget.__init__(self, None) + QtWidgets.QWidget.__init__(self, None) # TODO: orient, mode, screen, forced proportions, tablet area # TODO: return values function self.sid = None @@ -443,34 +441,34 @@ def __init__(self): self.cid = None self.settings = {} self.displays = None - self.main = QVBoxLayout() - self.lorient = QHBoxLayout() - self.orient = QComboBox() + self.main = QtWidgets.QVBoxLayout() + self.lorient = QtWidgets.QHBoxLayout() + self.orient = QtWidgets.QComboBox() self.orient.addItems(['ExpressKeys Left', 'ExpressKeys Right', 'ExpressKeys Up', 'ExpressKeys Down']) self.orient.currentIndexChanged.connect(self.update_orient) - self.orient_lbl = QLabel("Orientation:") + self.orient_lbl = QtWidgets.QLabel("Orientation:") self.lorient.addWidget(self.orient_lbl) self.lorient.addWidget(self.orient) - self.mode_group = QButtonGroup() - self.mode_pen = QRadioButton('Pen') - self.mode_mouse = QRadioButton("Mouse") - self.mode_lbl = QLabel("Mode: ") + self.mode_group = QtWidgets.QButtonGroup() + self.mode_pen = QtWidgets.QRadioButton('Pen') + self.mode_mouse = QtWidgets.QRadioButton("Mouse") + self.mode_lbl = QtWidgets.QLabel("Mode: ") self.mode_group.addButton(self.mode_pen) self.mode_group.addButton(self.mode_mouse) self.mode_group.buttonClicked['QAbstractButton *'].connect(self.update_mode) - self.mode_box = QGroupBox() + self.mode_box = QtWidgets.QGroupBox() self.mode_box.setFixedSize(290, 40) - self.lmode = QHBoxLayout() + self.lmode = QtWidgets.QHBoxLayout() self.lmode.addWidget(self.mode_lbl) self.lmode.addWidget(self.mode_pen) self.lmode.addWidget(self.mode_mouse) self.mode_box.setLayout(self.lmode) self.main.addLayout(self.lorient) self.main.addWidget(self.mode_box) - self.lscreen = QGridLayout() - self.screen = QComboBox() - self.screen_lbl = QLabel("Screen: ") - self.forced = QCheckBox("Force Proportions") + self.lscreen = QtWidgets.QGridLayout() + self.screen = QtWidgets.QComboBox() + self.screen_lbl = QtWidgets.QLabel("Screen: ") + self.forced = QtWidgets.QCheckBox("Force Proportions") self.forced.stateChanged.connect(self.update_forced) self.lscreen.addWidget(self.screen_lbl, 0, 0) self.lscreen.addWidget(self.screen, 0, 1) @@ -482,7 +480,7 @@ def __init__(self): def initUI(self, stylus_id, eraser_id, settings={}): self.sid = stylus_id self.eid = eraser_id - if 'mapping' in settings.keys(): + if 'mapping' in list(settings.keys()): self.settings = settings['mapping'] # load displays self.displays = self.get_displays() @@ -490,7 +488,7 @@ def initUI(self, stylus_id, eraser_id, settings={}): self.screen.addItems(sorted(self.displays.keys())) self.screen.currentIndexChanged.connect(self.update_screen) # set rotation value - if 'rotate' in self.settings.keys(): + if 'rotate' in list(self.settings.keys()): if self.settings['rotate'] == 'False': self.orient.hide() self.orient_lbl.hide() @@ -507,7 +505,7 @@ def initUI(self, stylus_id, eraser_id, settings={}): self.orient.setCurrentIndex(0) self.update_orient() # set mode - if 'mode' in self.settings.keys() and self.settings['mode'] == 'relative': + if 'mode' in list(self.settings.keys()) and self.settings['mode'] == 'relative': self.mode_mouse.setChecked(True) self.screen.setDisabled(True) self.update_mode(self.mode_mouse) @@ -516,7 +514,7 @@ def initUI(self, stylus_id, eraser_id, settings={}): self.screen.setDisabled(False) self.update_mode(self.mode_pen) # set forced - if 'forcedproportion' in self.settings.keys(): + if 'forcedproportion' in list(self.settings.keys()): if self.settings['forcedproportion'] == 'True': self.forced.setChecked(True) else: @@ -524,8 +522,8 @@ def initUI(self, stylus_id, eraser_id, settings={}): else: self.settings['forcedproportion'] = 'False' # TODO: figure out partial... - if 'maptooutput' in self.settings.keys(): - if self.settings['maptooutput'] in self.displays.keys(): + if 'maptooutput' in list(self.settings.keys()): + if self.settings['maptooutput'] in list(self.displays.keys()): idx = self.screen.findText(str(self.settings['maptooutput'])) self.screen.setCurrentIndex(idx) self.screen.setToolTip('[%s]' % self.displays[self.settings['maptooutput']]['cmd']) @@ -533,7 +531,7 @@ def initUI(self, stylus_id, eraser_id, settings={}): self.settings['maptooutput'] = 'Full' # hack note idx = self.screen.findText('Partial...') - self.screen.setItemData(idx, "Just sets display to Full Screen (for now)", Qt.ToolTipRole) + self.screen.setItemData(idx, "Just sets display to Full Screen (for now)", QtCore.Qt.ToolTipRole) def update_orient(self): opt = self.orient.currentIndex() @@ -639,7 +637,7 @@ def get_displays(self): 'y': int(info[3]), 'xoff': int(info[4]), 'yoff': int(info[5])} - if 'partial' in self.settings.keys(): + if 'partial' in list(self.settings.keys()): displays['Partial...'] = {'cmd': self.settings['partial']} else: self.settings['partial'] = "%sx%s+0+0" % (full[0], full[1]) @@ -716,4 +714,4 @@ def resetMapping(self): - where height is tablet_width * screen_height / screen_width - tablet area (disabled if force proportions enabled) - xsetwacom set ResetArea -''' \ No newline at end of file +''' diff --git a/wacom-gui/stylus_ui.py b/wacom-gui/stylus_ui.py index 58cd18d..013b620 100644 --- a/wacom-gui/stylus_ui.py +++ b/wacom-gui/stylus_ui.py @@ -7,27 +7,27 @@ # # WARNING! All changes made in this file will be lost! -from PyQt4 import QtCore, QtGui +from Qt import QtCore, QtCompat, QtWidgets try: - _fromUtf8 = QtCore.QString.fromUtf8 + _fromUtf8 = str except AttributeError: def _fromUtf8(s): return s try: - _encoding = QtGui.QApplication.UnicodeUTF8 + _encoding = QtWidgets.QApplication.UnicodeUTF8 def _translate(context, text, disambig): - return QtGui.QApplication.translate(context, text, disambig, _encoding) + return QtCompat.translate(context, text, disambig, _encoding) except AttributeError: def _translate(context, text, disambig): - return QtGui.QApplication.translate(context, text, disambig) + return QtCompat.translate(context, text, disambig) class Ui_StylusWidget(object): def setupUi(self, StylusWidget): StylusWidget.setObjectName(_fromUtf8("StylusWidget")) StylusWidget.resize(840, 520) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Minimum) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(StylusWidget.sizePolicy().hasHeightForWidth()) @@ -67,11 +67,11 @@ def setupUi(self, StylusWidget): "}\n" "border-style: none;\n" "border-width: 0px;")) - self.keys = QtGui.QWidget() + self.keys = QtWidgets.QWidget() self.keys.setObjectName(_fromUtf8("keys")) - self.penImage = QtGui.QLabel(self.keys) + self.penImage = QtWidgets.QLabel(self.keys) self.penImage.setGeometry(QtCore.QRect(390, 20, 106, 440)) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.penImage.sizePolicy().hasHeightForWidth()) @@ -79,29 +79,29 @@ def setupUi(self, StylusWidget): self.penImage.setMinimumSize(QtCore.QSize(106, 440)) self.penImage.setMaximumSize(QtCore.QSize(106, 440)) self.penImage.setObjectName(_fromUtf8("penImage")) - self.verticalLayoutWidget_4 = QtGui.QWidget(self.keys) + self.verticalLayoutWidget_4 = QtWidgets.QWidget(self.keys) self.verticalLayoutWidget_4.setGeometry(QtCore.QRect(0, 20, 301, 451)) self.verticalLayoutWidget_4.setObjectName(_fromUtf8("verticalLayoutWidget_4")) - self.penToolLeft = QtGui.QVBoxLayout(self.verticalLayoutWidget_4) + self.penToolLeft = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_4) self.penToolLeft.setSpacing(0) self.penToolLeft.setMargin(0) self.penToolLeft.setObjectName(_fromUtf8("penToolLeft")) - self.verticalLayoutWidget_5 = QtGui.QWidget(self.keys) + self.verticalLayoutWidget_5 = QtWidgets.QWidget(self.keys) self.verticalLayoutWidget_5.setGeometry(QtCore.QRect(530, 20, 301, 421)) self.verticalLayoutWidget_5.setObjectName(_fromUtf8("verticalLayoutWidget_5")) - self.penToolRight = QtGui.QVBoxLayout(self.verticalLayoutWidget_5) + self.penToolRight = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_5) self.penToolRight.setSpacing(0) self.penToolRight.setMargin(0) self.penToolRight.setObjectName(_fromUtf8("penToolRight")) - self.penDefault = QtGui.QPushButton(self.keys) + self.penDefault = QtWidgets.QPushButton(self.keys) self.penDefault.setGeometry(QtCore.QRect(740, 450, 84, 25)) self.penDefault.setObjectName(_fromUtf8("penDefault")) StylusWidget.addTab(self.keys, _fromUtf8("")) - self.tab = QtGui.QWidget() + self.tab = QtWidgets.QWidget() self.tab.setObjectName(_fromUtf8("tab")) - self.eraserImage = QtGui.QLabel(self.tab) + self.eraserImage = QtWidgets.QLabel(self.tab) self.eraserImage.setGeometry(QtCore.QRect(390, 20, 106, 440)) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.eraserImage.sizePolicy().hasHeightForWidth()) @@ -109,36 +109,36 @@ def setupUi(self, StylusWidget): self.eraserImage.setMinimumSize(QtCore.QSize(106, 440)) self.eraserImage.setMaximumSize(QtCore.QSize(106, 440)) self.eraserImage.setObjectName(_fromUtf8("eraserImage")) - self.verticalLayoutWidget_6 = QtGui.QWidget(self.tab) + self.verticalLayoutWidget_6 = QtWidgets.QWidget(self.tab) self.verticalLayoutWidget_6.setGeometry(QtCore.QRect(0, 20, 301, 451)) self.verticalLayoutWidget_6.setObjectName(_fromUtf8("verticalLayoutWidget_6")) - self.eraserToolLeft = QtGui.QVBoxLayout(self.verticalLayoutWidget_6) + self.eraserToolLeft = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_6) self.eraserToolLeft.setSpacing(0) self.eraserToolLeft.setMargin(0) self.eraserToolLeft.setObjectName(_fromUtf8("eraserToolLeft")) - self.verticalLayoutWidget_7 = QtGui.QWidget(self.tab) + self.verticalLayoutWidget_7 = QtWidgets.QWidget(self.tab) self.verticalLayoutWidget_7.setGeometry(QtCore.QRect(530, 20, 301, 421)) self.verticalLayoutWidget_7.setObjectName(_fromUtf8("verticalLayoutWidget_7")) - self.eraserToolRight = QtGui.QVBoxLayout(self.verticalLayoutWidget_7) + self.eraserToolRight = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_7) self.eraserToolRight.setSpacing(0) self.eraserToolRight.setMargin(0) self.eraserToolRight.setObjectName(_fromUtf8("eraserToolRight")) - self.eraserDefault = QtGui.QPushButton(self.tab) + self.eraserDefault = QtWidgets.QPushButton(self.tab) self.eraserDefault.setGeometry(QtCore.QRect(740, 450, 84, 25)) self.eraserDefault.setObjectName(_fromUtf8("eraserDefault")) StylusWidget.addTab(self.tab, _fromUtf8("")) - self.tab_2 = QtGui.QWidget() + self.tab_2 = QtWidgets.QWidget() self.tab_2.setObjectName(_fromUtf8("tab_2")) - self.verticalLayoutWidget_8 = QtGui.QWidget(self.tab_2) + self.verticalLayoutWidget_8 = QtWidgets.QWidget(self.tab_2) self.verticalLayoutWidget_8.setGeometry(QtCore.QRect(530, 20, 301, 421)) self.verticalLayoutWidget_8.setObjectName(_fromUtf8("verticalLayoutWidget_8")) - self.mappingToolRight = QtGui.QVBoxLayout(self.verticalLayoutWidget_8) + self.mappingToolRight = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_8) self.mappingToolRight.setSpacing(0) self.mappingToolRight.setMargin(0) self.mappingToolRight.setObjectName(_fromUtf8("mappingToolRight")) - self.mappingImage = QtGui.QLabel(self.tab_2) + self.mappingImage = QtWidgets.QLabel(self.tab_2) self.mappingImage.setGeometry(QtCore.QRect(40, 20, 340, 440)) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.mappingImage.sizePolicy().hasHeightForWidth()) @@ -146,7 +146,7 @@ def setupUi(self, StylusWidget): self.mappingImage.setMinimumSize(QtCore.QSize(340, 440)) self.mappingImage.setMaximumSize(QtCore.QSize(340, 440)) self.mappingImage.setObjectName(_fromUtf8("mappingImage")) - self.mappingDefault = QtGui.QPushButton(self.tab_2) + self.mappingDefault = QtWidgets.QPushButton(self.tab_2) self.mappingDefault.setGeometry(QtCore.QRect(740, 450, 84, 25)) self.mappingDefault.setObjectName(_fromUtf8("mappingDefault")) StylusWidget.addTab(self.tab_2, _fromUtf8("")) diff --git a/wacom-gui/touch.py b/wacom-gui/touch.py index 4b8bd36..045157c 100644 --- a/wacom-gui/touch.py +++ b/wacom-gui/touch.py @@ -1,11 +1,11 @@ #!/usr/bin/python -from PyQt4 import QtCore, QtGui +from Qt import QtCore, QtWidgets import sys, os, re -class touch(QtGui.QWidget): +class touch(QtWidgets.QWidget): def __init__(self, tabletName, parent=None): - QtGui.QWidget.__init__(self, parent) + QtWidgets.QWidget.__init__(self, parent) if tabletName is None: return None self.tabletName = tabletName @@ -14,9 +14,9 @@ def __init__(self, tabletName, parent=None): def initUI(self): # self.devices = [] - self.mainLayout = QtGui.QHBoxLayout() + self.mainLayout = QtWidgets.QHBoxLayout() self.mainLayout.setAlignment(QtCore.Qt.AlignLeft) - self.buttons = QtGui.QCheckBox("Enable Touch") + self.buttons = QtWidgets.QCheckBox("Enable Touch") self.getEnableStatus() self.buttons.stateChanged.connect(self.buttonChange) # layout code diff --git a/wacom-gui/wacom-gui.py b/wacom-gui/wacom-gui.py index 09ec8c5..acb8d95 100644 --- a/wacom-gui/wacom-gui.py +++ b/wacom-gui/wacom-gui.py @@ -1,8 +1,7 @@ #!/usr/bin/python # -*- coding: utf-8 -*- -from PyQt4.QtCore import * -from PyQt4.QtGui import * +from Qt import QtCore, QtGui, QtWidgets import sys import os from os.path import expanduser @@ -15,8 +14,8 @@ from pad import Pad, Touch from stylus import Stylus -class WacomGui(QMainWindow, wacom_menu.Ui_MainWindow): - buttonClicked = pyqtSignal(int) +class WacomGui(QtWidgets.QMainWindow, wacom_menu.Ui_MainWindow): + buttonClicked = QtCore.Signal(int) def __init__(self, parent=None): super(WacomGui, self).__init__(parent) self.setupUi(self) @@ -25,7 +24,7 @@ def __init__(self, parent=None): self.cwd = os.path.dirname(os.path.abspath(__file__)) if self.cwd == '/usr/local/bin': self.cwd = '/usr/local/wacom-gui' - self.setFocusPolicy(Qt.NoFocus) + self.setFocusPolicy(QtCore.Qt.NoFocus) # button instances self.tabletButtons = ButtonGroup() self.toolButtons = ButtonGroup() @@ -51,7 +50,7 @@ def __init__(self, parent=None): self.touch = Touch() self.touch.hide() # ui icon - self.tabletRefresh.setIcon(QIcon(os.path.join(self.cwd, os.path.join(self.cwd, 'icons/ui/refresh.png')))) + self.tabletRefresh.setIcon(QtGui.QIcon(os.path.join(self.cwd, os.path.join(self.cwd, 'icons/ui/refresh.png')))) # get connected tablet info self.tablet_data = Tablets() # attach function to refresh tablets @@ -70,8 +69,8 @@ def __init__(self, parent=None): self.refreshTablets() self.controlBox.setContentsMargins(0, 0, 0, 0) # add control widgets to control box - hbox = QHBoxLayout() - hbox.setAlignment(Qt.AlignHCenter) + hbox = QtWidgets.QHBoxLayout() + hbox.setAlignment(QtCore.Qt.AlignHCenter) hbox.addWidget(self.pad) hbox.addWidget(self.stylus) hbox.addWidget(self.touch) @@ -88,7 +87,7 @@ def __init__(self, parent=None): self.configButtons.btn_grp.buttonClicked['int'].connect(self.configSelect) def initTabletButtons(self): - for dev, data in self.tablet_data.tablets.items(): + for dev, data in list(self.tablet_data.tablets.items()): for dev_id, tablet in enumerate(data): if 'svg' in tablet : icon = os.path.join(self.cwd, "icons/devices/%spng" % tablet['svg'][:-3]) @@ -107,7 +106,7 @@ def refreshTablets(self): self.tabletLayout.removeButtons() self.tabletButtons.removeButton() self.initTabletButtons() - if self.tabletButtons.buttons.items().__len__() == 0: + if list(self.tabletButtons.buttons.items()).__len__() == 0: self.toolButtons.hideButtons() else: self.tabletSelect(0) @@ -122,7 +121,7 @@ def initToolButtons(self): def setToolsAvail(self, idx): self.dev = self.tabletButtons.buttons[(idx, 1)] self.dev_id = self.tabletButtons.buttons[(idx, 3)] - if 'pad' in self.tablet_data.tablets[self.dev][self.dev_id].keys(): + if 'pad' in list(self.tablet_data.tablets[self.dev][self.dev_id].keys()): self.toolButtons.buttons[(0, 0)].setVisible(True) self.toolButtons.buttons[(0, 1)] = self.dev self.toolButtons.buttons[(0, 2)] = self.tablet_data.tablets[self.dev][self.dev_id]['pad']['id'] @@ -132,7 +131,7 @@ def setToolsAvail(self, idx): self.toolButtons.buttons[(0, 1)] = 0 self.toolButtons.buttons[(0, 2)] = 0 self.toolButtons.buttons[(0, 3)] = 0 - if 'stylus' in self.tablet_data.tablets[self.dev][self.dev_id].keys(): + if 'stylus' in list(self.tablet_data.tablets[self.dev][self.dev_id].keys()): self.toolButtons.buttons[(1, 0)].setVisible(True) self.toolButtons.buttons[(1, 1)] = self.dev self.toolButtons.buttons[(1, 2)] = [self.tablet_data.tablets[self.dev][self.dev_id]['stylus']['id'], @@ -143,7 +142,7 @@ def setToolsAvail(self, idx): self.toolButtons.buttons[(1, 1)] = 0 self.toolButtons.buttons[(1, 2)] = 0 self.toolButtons.buttons[(1, 3)] = 0 - if 'touch' in self.tablet_data.tablets[self.dev][self.dev_id].keys(): + if 'touch' in list(self.tablet_data.tablets[self.dev][self.dev_id].keys()): self.toolButtons.buttons[(2, 0)].setVisible(True) self.toolButtons.buttons[(2, 1)] = self.dev self.toolButtons.buttons[(2, 2)] = self.tablet_data.tablets[self.dev][self.dev_id]['touch']['id'] @@ -153,7 +152,7 @@ def setToolsAvail(self, idx): self.toolButtons.buttons[(2, 1)] = 0 self.toolButtons.buttons[(2, 2)] = 0 self.toolButtons.buttons[(2, 3)] = 0 - if 'cursor' in self.tablet_data.tablets[self.dev][self.dev_id].keys(): + if 'cursor' in list(self.tablet_data.tablets[self.dev][self.dev_id].keys()): self.toolButtons.buttons[(3, 0)].setVisible(True) self.toolButtons.buttons[(3, 1)] = self.dev self.toolButtons.buttons[(3, 2)] = self.tablet_data.tablets[self.dev][self.dev_id]['cursor']['id'] @@ -174,34 +173,34 @@ def deviceReset(self): def emptyConfig(self, dev, dev_id): config = {} - for input in self.tablet_data.tablets[dev][dev_id].keys(): + for input in list(self.tablet_data.tablets[dev][dev_id].keys()): if input in ['pad', 'stylus', 'eraser', 'touch', 'cursor']: config[input] = {} if input in ['pad', 'stylus', 'eraser']: config[input]['buttons'] = {} if input == 'pad': buttons = self.tablet_data.tablets[dev][dev_id][input]['buttons'] - for button in buttons.keys(): + for button in list(buttons.keys()): config['pad']['buttons'][button] = 'Default' return config def verifyConfigRemove(self): - reply = QMessageBox.question(self, 'Remove Config', + reply = QtWidgets.QMessageBox.question(self, 'Remove Config', "Delete \"%s\" config file?" % self.config, - QMessageBox.Yes, QMessageBox.No) - if reply == QMessageBox.Yes: + QtWidgets.QMessageBox.Yes, QtWidgets.QMessageBox.No) + if reply == QtWidgets.QMessageBox.Yes: home = "%s/.wacom-gui" % expanduser("~") conf_path = os.path.join(home, "%s/%s.json" % (self.dev, self.config)) # delete file try: os.remove(conf_path) except Exception as e: - print e + print(str(e)) del self.configs[self.dev][self.config] self.getConfigs(0) def newConfig(self): - config = AddConfig.add_config(self.configs[self.dev].keys()) + config = AddConfig.add_config(list(self.configs[self.dev].keys())) if config is not None: # empty config self.configs[self.dev][config] = self.emptyConfig(self.dev, self.dev_id) @@ -224,7 +223,7 @@ def getConfigs(self, idx): home = "%s/.wacom-gui" % expanduser("~") conf_path = os.path.join(home, dev) self.tablet_data.tablets[dev][dev_id]['conf_path'] = os.path.join(home, dev) - if dev not in self.configs.keys(): + if dev not in list(self.configs.keys()): self.configs[dev] = {} if not os.path.exists(conf_path): os.mkdir(self.tablet_data.tablets[dev][dev_id]['conf_path']) @@ -236,7 +235,7 @@ def getConfigs(self, idx): self.configs[dev][os.path.splitext(config)[0]] = json.load(f) # TODO: allow user to sent alternate config to load by default # load default config, if it exists - if 'default' not in self.configs[dev].keys(): + if 'default' not in list(self.configs[dev].keys()): self.configs[dev]['default'] = self.emptyConfig(dev, dev_id) # get default config to load for given device, ie last selected config self.config = 'default' @@ -244,10 +243,10 @@ def getConfigs(self, idx): with open("%s/device_default" % conf_path, 'r') as f: device = json.load(f) # config file exists, use it - if str(dev_id) in device.keys() and device[str(dev_id)]['config'] in self.configs[dev].keys(): + if str(dev_id) in list(device.keys()) and device[str(dev_id)]['config'] in list(self.configs[dev].keys()): self.config = device[str(dev_id)]['config'] # set defaults in tablet_data, if it's detected - for idx in device.keys(): + for idx in list(device.keys()): try: self.tablet_data.tablets[self.dev][int(idx)]['config'] = device[idx]['config'] except Exception as e: @@ -394,11 +393,11 @@ def updateConfigs(self): if write: reply = None if self.toggle is False and self.load is False: - reply = QMessageBox.question(self, 'Save Config', + reply = QtWidgets.QMessageBox.question(self, 'Save Config', "Write \"%s\" config file?" % self.config, - QMessageBox.Yes, QMessageBox.No) + QtWidgets.QMessageBox.Yes, QtWidgets.QMessageBox.No) # update config if toggle is set or save is called - if self.toggle or reply == QMessageBox.Yes: + if self.toggle or reply == QtWidgets.QMessageBox.Yes: home = "%s/.wacom-gui" % expanduser("~") conf_path = os.path.join(home, self.dev) conf_file = os.path.join(conf_path, "%s.json" % self.config) @@ -416,11 +415,11 @@ def updateConfigs(self): default = {} if self.dev is not None: for idx, tablet in enumerate(self.tablet_data.tablets[self.dev]): - if 'config' in tablet.keys(): + if 'config' in list(tablet.keys()): # check if toggle enabled toggle = 0 if 'pad' in self.configs[self.dev][tablet['config']]: - for button in self.configs[self.dev][tablet['config']]['pad']['buttons'].keys(): + for button in list(self.configs[self.dev][tablet['config']]['pad']['buttons'].keys()): if self.configs[self.dev][tablet['config']]['pad']['buttons'][button] == 'lhyper z': toggle = 1 break @@ -449,9 +448,9 @@ def closeEvent(self, event): class ButtonLayout: def __init__(self): - self.layout = QHBoxLayout() - self.layout.setAlignment(Qt.AlignLeft) - self.frame = QFrame() + self.layout = QtWidgets.QHBoxLayout() + self.layout.setAlignment(QtCore.Qt.AlignLeft) + self.frame = QtWidgets.QFrame() self.frame.setLayout(self.layout) def addButton(self, button): @@ -479,17 +478,17 @@ def boxdelete(self, box): def removeButtons(self): self.deleteItemsOfLayout(self.layout.layout()) -class ButtonGroup(QObject): - buttonClicked = pyqtSignal(int) +class ButtonGroup(QtCore.QObject): + buttonClicked = QtCore.Signal(int) def __init__(self): super(ButtonGroup, self).__init__() self.initUI() def initUI(self): - self.buttonMapper = QSignalMapper(self) + self.buttonMapper = QtCore.QSignalMapper(self) self.buttons = {} - self.btn_grp = QButtonGroup() + self.btn_grp = QtWidgets.QButtonGroup() self.btn_style = ("QToolButton {\n" " background-color: rgb(220, 220, 220);\n" " border-radius: 4px;\n" @@ -504,22 +503,22 @@ def initUI(self): def addButton(self, label, wid=0, dev=0, dev_id=0, icon=None, isize=48, hide=False): select = False idx = self.buttons.__len__() / 4 - self.buttons[(idx, 0)] = QToolButton() + self.buttons[(idx, 0)] = QtWidgets.QToolButton() self.btn_grp.addButton(self.buttons[(idx, 0)], idx) self.buttons[(idx, 1)] = dev self.buttons[(idx, 2)] = wid self.buttons[(idx, 3)] = dev_id self.buttons[(idx, 0)].clicked[()].connect(self.buttonMapper.map) if label.split("Wacom ").__len__() == 2: - self.buttons[(idx, 0)].setText(QString(label[6:])) + self.buttons[(idx, 0)].setText(str(label[6:])) else: - self.buttons[(idx, 0)].setText(QString(label)) + self.buttons[(idx, 0)].setText(str(label)) if icon is not None: - self.buttons[(idx, 0)].setIcon(QIcon(icon)) - self.buttons[(idx, 0)].setIconSize(QSize(isize, isize)) - self.buttons[(idx, 0)].setToolButtonStyle(Qt.ToolButtonTextUnderIcon) - self.buttons[(idx, 0)].setMinimumSize(QSize(80, 70)) - self.buttons[(idx, 0)].setMaximumSize(QSize(120, 90)) + self.buttons[(idx, 0)].setIcon(QtGui.QIcon(icon)) + self.buttons[(idx, 0)].setIconSize(QtCore.QSize(isize, isize)) + self.buttons[(idx, 0)].setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon) + self.buttons[(idx, 0)].setMinimumSize(QtCore.QSize(80, 70)) + self.buttons[(idx, 0)].setMaximumSize(QtCore.QSize(120, 90)) self.buttonMapper.setMapping(self.buttons[(idx, 0)], idx) self.buttons[(idx, 0)].setCheckable(True) self.buttons[(idx, 0)].setStyleSheet(self.btn_style) @@ -549,27 +548,27 @@ def hideButtons(self): if idx[1] == 0: self.buttons[idx].setVisible(False) -class AddConfig(QDialog): +class AddConfig(QtWidgets.QDialog): def __init__(self, parent=None): super(AddConfig, self).__init__(parent) self.setFixedSize(300, 80) self.setWindowTitle("Add Custom Config") self.ok = False - self.cname = QLineEdit() + self.cname = QtWidgets.QLineEdit() self.cname.setFixedWidth(180) - self.cname.setValidator(QRegExpValidator(QRegExp('[a-z0-9_-]{1,16}'))) - self.lbl = QLabel("Config Name:") - self.btn_ok = QPushButton("Ok", self) + self.cname.setValidator(QtGui.QRegExpValidator(QtCore.QRegExp('[a-z0-9_-]{1,16}'))) + self.lbl = QtWidgets.QLabel("Config Name:") + self.btn_ok = QtWidgets.QPushButton("Ok", self) self.btn_ok.clicked.connect(self.button_press) - self.btn_cancel = QPushButton("Cancel", self) + self.btn_cancel = QtWidgets.QPushButton("Cancel", self) self.btn_cancel.clicked.connect(self.button_press) - self.btns = QHBoxLayout() + self.btns = QtWidgets.QHBoxLayout() self.btns.addWidget(self.btn_ok) self.btns.addWidget(self.btn_cancel) - grid = QGridLayout() - grid.addWidget(self.lbl, 0, 0, Qt.AlignRight) - grid.addWidget(self.cname, 0, 1, Qt.AlignLeft) - grid.addLayout(self.btns, 1, 1, Qt.AlignRight) + grid = QtWidgets.QGridLayout() + grid.addWidget(self.lbl, 0, 0, QtCore.Qt.AlignRight) + grid.addWidget(self.cname, 0, 1, QtCore.Qt.AlignLeft) + grid.addLayout(self.btns, 1, 1, QtCore.Qt.AlignRight) self.setLayout(grid) def cur_configs(self, configs): @@ -591,11 +590,11 @@ def add_config(configs, parent=None): result = dialog.exec_() if dialog.ok is True: if dialog.cname.text().__len__() < 1: - warning = QMessageBox(QMessageBox.Warning, "No Config Name", + warning = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Warning, "No Config Name", "You must enter a name for your config.") warning.exec_() elif str(dialog.cname.text()) in configs: - warning = QMessageBox(QMessageBox.Warning, "Config Exists", + warning = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Warning, "Config Exists", "Config \"%s\" already exists." % dialog.cname.text()) warning.exec_() else: @@ -603,13 +602,13 @@ def add_config(configs, parent=None): else: return None -class About(QDialog): +class About(QtWidgets.QDialog): def __init__(self, parent=None): super(About, self).__init__(parent) self.setFixedSize(360, 240) self.setWindowTitle("About") - self.text = QTextEdit() - self.text.setAlignment(Qt.AlignHCenter) + self.text = QtWidgets.QTextEdit() + self.text.setAlignment(QtCore.Qt.AlignHCenter) self.text.setReadOnly(True) self.text.insertPlainText("""This utility is designed to help you easily configure your wacom tablet under linux. @@ -623,11 +622,11 @@ def __init__(self, parent=None): Hand Icons by: https://www.flaticon.com/authors/mobiletuxedo [CC 3.0]""") - self.text.setFrameShape(QFrame.WinPanel) - self.text.setFrameShadow(QFrame.Plain) + self.text.setFrameShape(QtWidgets.QFrame.WinPanel) + self.text.setFrameShadow(QtWidgets.QFrame.Plain) self.text.setStyleSheet("background-color:#23464c; color:#dddddd") - layout = QVBoxLayout() - layout.setAlignment(Qt.AlignVCenter) + layout = QtWidgets.QVBoxLayout() + layout.setAlignment(QtCore.Qt.AlignVCenter) layout.addWidget(self.text) self.setLayout(layout) @@ -691,7 +690,7 @@ def toggleDisplay(): 'y': full[1], 'xoff': 0, 'yoff': 0} - for dev in tablet_data.tablets.keys(): + for dev in list(tablet_data.tablets.keys()): path = os.path.join(expanduser("~"), ".wacom-gui/%s" % dev) config_name = None if os.path.exists(os.path.join(path, 'device_default')): @@ -703,12 +702,12 @@ def toggleDisplay(): if os.path.exists(os.path.join(path, "%s.json" % config_name[str(dev_id)]['config'])): with open(os.path.join(path, "%s.json" % config_name[str(dev_id)]['config']), 'r') as f: config = json.load(f) - if 'mapping' in config['stylus'].keys(): - if 'maptooutput' in config['stylus']['mapping'].keys(): + if 'mapping' in list(config['stylus'].keys()): + if 'maptooutput' in list(config['stylus']['mapping'].keys()): cur_display = config['stylus']['mapping']['maptooutput'] disp_list = sorted(displays.keys()) idx = disp_list.index(cur_display) - if idx + 1 <= displays.keys().__len__(): + if idx + 1 <= list(displays.keys()).__len__(): idx = idx + 1 if displays[disp_list[idx]]['cmd'] == displays[disp_list[0]]['cmd']: idx = 0 @@ -734,7 +733,7 @@ def toggleDisplay(): def main(): loadToggleShortcut() - app = QApplication(sys.argv) + app = QtWidgets.QApplication(sys.argv) opts = parseArgs() if opts.toggle: toggleDisplay() @@ -750,3 +749,4 @@ def main(): # pyuic4 wacom_menu.ui -o wacom_menu.py + diff --git a/wacom-gui/wacom_data.py b/wacom-gui/wacom_data.py index 77fe396..5fa2128 100644 --- a/wacom-gui/wacom_data.py +++ b/wacom-gui/wacom_data.py @@ -18,8 +18,7 @@ import math import copy import sys -from PyQt4.QtCore import * -from PyQt4.QtGui import * +from Qt import QtWidgets class Tablets: @@ -56,7 +55,7 @@ def get_connected_tablets(self): name = name[:-7] if name not in detected: detected[name] = {attr[dev_attr[2]]: {'id': [dev_attr[1].split()[1]]}} - elif attr[dev_attr[2]] not in detected[name].keys(): + elif attr[dev_attr[2]] not in list(detected[name].keys()): detected[name][attr[dev_attr[2]]] = {'id': [dev_attr[1].split()[1]]} else: detected[name][attr[dev_attr[2]]]['id'].append(dev_attr[1].split()[1]) @@ -64,7 +63,7 @@ def get_connected_tablets(self): pass self.__get_libwacom_data() self.tablets = {} - for device, inputs in detected.iteritems(): + for device, inputs in list(detected.items()): if device[-4:] == '(WL)': dev_type = device[:-5] else: @@ -72,7 +71,7 @@ def get_connected_tablets(self): try: # Cintiq Pro 24 hack if dev_type == 'Wacom Cintiq Pro 24': - if 'Wacom Cintiq Pro 24 P' in self.device_data.keys(): + if 'Wacom Cintiq Pro 24 P' in list(self.device_data.keys()): dev_type = 'Wacom Cintiq Pro 24 P' else: dev_type = 'Wacom Cintiq Pro 24 PT' @@ -81,13 +80,13 @@ def get_connected_tablets(self): dev_type = 'Wacom ExpressKey Remote' # PTH-660/PTH-860 hack if dev_type.startswith('Wacom Intuos Pro') : - if dev_type not in self.device_data.keys(): + if dev_type not in list(self.device_data.keys()): dev_type = dev_type.replace("Pro", "Pro 2") # One Wacom hack if dev_type == 'Wacom One by Wacom S': dev_type = 'One by Wacom (small)' devID = self.device_data[dev_type]['devID'] - if self.device_data[dev_type]['devID'] not in self.tablets.keys(): + if self.device_data[dev_type]['devID'] not in list(self.tablets.keys()): self.tablets[devID] = [] # assume if it's the same device it has the same inputs for all connected if 'pad' in detected[device]: @@ -104,14 +103,14 @@ def get_connected_tablets(self): self.tablets[devID][idx][dev_input]['id'] = instance idx = idx + 1 # remove devices that are not available - for dev in self.tablets.keys(): + for dev in list(self.tablets.keys()): for device in self.tablets[dev]: for id in ['touch', 'stylus', 'eraser', 'cursor', 'pad']: - if id in device.keys(): - if 'id' not in device[id].keys(): + if id in list(device.keys()): + if 'id' not in list(device[id].keys()): del device[id] except: - warning = QMessageBox(QMessageBox.Warning, "Unknown Device", + warning = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Warning, "Unknown Device", "Device information for \"%s\" not found." % dev_type) warning.exec_() @@ -209,10 +208,10 @@ def __get_libwacom_data(self): except Exception as e: pass - for device, data in self.device_data.items(): + for device, data in list(self.device_data.items()): # get button svg info - if 'pad' in data.keys(): - if 'buttons' in data['pad'].keys(): + if 'pad' in list(data.keys()): + if 'buttons' in list(data['pad'].keys()): if data['pad']['buttons'].__len__() == 0: del data['pad']['buttons'] else: @@ -241,7 +240,7 @@ def pretty_svg(self, device): for attr in elem.attrib: svg = "%s\n\t\t\t%s=\"%s\"" % (svg, attr, elem.attrib[attr]) svg = "%s />" % svg - if elem.attrib['id'] in self.device_data[device]['pad']['buttons'].keys(): + if elem.attrib['id'] in list(self.device_data[device]['pad']['buttons'].keys()): but_info = self.device_data[device]['pad']['buttons'][elem.attrib['id']] if but_info['orient'] in ['Left', 'Right']: self.device_data[device]['pad']['buttons'][elem.attrib['id']]['pos'] = \ @@ -265,13 +264,13 @@ def pretty_svg(self, device): if not attr.startswith("{"): svg = "%s\n\t\t\t%s=\"%s\"" % (svg, attr, elem.attrib[attr]) svg = "%s\n\t\t\tfill=\"none\" />" % svg - if elem.attrib['id'] in self.device_data[device]['pad']['buttons'].keys(): + if elem.attrib['id'] in list(self.device_data[device]['pad']['buttons'].keys()): but_info = self.device_data[device]['pad']['buttons'][elem.attrib['id']] if but_info['orient'] in ['Left', 'Right']: - if 'y' in elem.attrib.keys(): + if 'y' in list(elem.attrib.keys()): self.device_data[device]['pad']['buttons'][elem.attrib['id']]['pos'] = \ "%06.f" % float(elem.attrib['y']) - elif 'd' in elem.attrib.keys(): + elif 'd' in list(elem.attrib.keys()): d = elem.attrib['d'].split(' ') if d[1].find(',') != -1: elem.attrib['y'] = d[1].split(',')[1] @@ -280,10 +279,10 @@ def pretty_svg(self, device): self.device_data[device]['pad']['buttons'][elem.attrib['id']]['pos'] = \ "%06.f" % float(elem.attrib['y']) else: - if 'x' in elem.attrib.keys(): + if 'x' in list(elem.attrib.keys()): self.device_data[device]['pad']['buttons'][elem.attrib['id']]['pos'] = \ "%06.f" % float(elem.attrib['x']) - elif 'd' in elem.attrib.keys(): + elif 'd' in list(elem.attrib.keys()): d = elem.attrib['d'].split(' ') if d[1].find(',') != -1: elem.attrib['x'] = d[1].split(',')[0] @@ -298,7 +297,7 @@ def pretty_svg(self, device): for attr in elem.attrib: svg = "%s\n\t\t\t%s=\"%s\"" % (svg, attr, elem.attrib[attr]) svg = "%s />" % svg - if elem.attrib['id'] in self.device_data[device]['pad']['buttons'].keys(): + if elem.attrib['id'] in list(self.device_data[device]['pad']['buttons'].keys()): but_info = self.device_data[device]['pad']['buttons'][elem.attrib['id']] if but_info['orient'] in ['Left', 'Right']: self.device_data[device]['pad']['buttons'][elem.attrib['id']]['pos'] = \ @@ -322,7 +321,7 @@ def pretty_svg(self, device): label = elem.attrib['id'].split('Label')[1] label = label.replace('CCW', "Up") label = label.replace('CW', "Down") - if label in self.device_data[device]['pad']['buttons'].keys(): + if label in list(self.device_data[device]['pad']['buttons'].keys()): but_info = self.device_data[device]['pad']['buttons'][label] if but_info['orient'] in ['Left', 'Right']: self.device_data[device]['pad']['buttons'][label]['pos'] = \ diff --git a/wacom-gui/wacom_menu.py b/wacom-gui/wacom_menu.py index 5bb3722..94715fd 100644 --- a/wacom-gui/wacom_menu.py +++ b/wacom-gui/wacom_menu.py @@ -7,28 +7,28 @@ # # WARNING! All changes made in this file will be lost! -from PyQt4 import QtCore, QtGui +from Qt import QtCore, QtCompat, QtWidgets try: - _fromUtf8 = QtCore.QString.fromUtf8 + _fromUtf8 = str except AttributeError: def _fromUtf8(s): return s try: - _encoding = QtGui.QApplication.UnicodeUTF8 + _encoding = QtWidgets.QApplication.UnicodeUTF8 def _translate(context, text, disambig): - return QtGui.QApplication.translate(context, text, disambig, _encoding) + return QtCompat.translate(context, text, disambig, _encoding) except AttributeError: def _translate(context, text, disambig): - return QtGui.QApplication.translate(context, text, disambig) + return QtCompat.translate(context, text, disambig) class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName(_fromUtf8("MainWindow")) MainWindow.setEnabled(True) MainWindow.resize(900, 900) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth()) @@ -36,27 +36,27 @@ def setupUi(self, MainWindow): MainWindow.setMinimumSize(QtCore.QSize(900, 900)) MainWindow.setMaximumSize(QtCore.QSize(900, 900)) MainWindow.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu) - self.centralwidget = QtGui.QWidget(MainWindow) + self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName(_fromUtf8("centralwidget")) - self.formLayoutWidget = QtGui.QWidget(self.centralwidget) + self.formLayoutWidget = QtWidgets.QWidget(self.centralwidget) self.formLayoutWidget.setGeometry(QtCore.QRect(10, 0, 881, 301)) self.formLayoutWidget.setObjectName(_fromUtf8("formLayoutWidget")) - self.controlLayout = QtGui.QFormLayout(self.formLayoutWidget) - self.controlLayout.setFieldGrowthPolicy(QtGui.QFormLayout.AllNonFixedFieldsGrow) + self.controlLayout = QtWidgets.QFormLayout(self.formLayoutWidget) + self.controlLayout.setFieldGrowthPolicy(QtWidgets.QFormLayout.AllNonFixedFieldsGrow) self.controlLayout.setLabelAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.controlLayout.setMargin(4) self.controlLayout.setSpacing(4) self.controlLayout.setObjectName(_fromUtf8("controlLayout")) - self.tabletLbl = QtGui.QLabel(self.formLayoutWidget) + self.tabletLbl = QtWidgets.QLabel(self.formLayoutWidget) self.tabletLbl.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.tabletLbl.setObjectName(_fromUtf8("tabletLbl")) - self.controlLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.tabletLbl) - self.toolLbl = QtGui.QLabel(self.formLayoutWidget) + self.controlLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.tabletLbl) + self.toolLbl = QtWidgets.QLabel(self.formLayoutWidget) self.toolLbl.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.toolLbl.setObjectName(_fromUtf8("toolLbl")) - self.controlLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.toolLbl) - self.toolScroll = QtGui.QScrollArea(self.formLayoutWidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed) + self.controlLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.toolLbl) + self.toolScroll = QtWidgets.QScrollArea(self.formLayoutWidget) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.toolScroll.sizePolicy().hasHeightForWidth()) @@ -96,19 +96,19 @@ def setupUi(self, MainWindow): self.toolScroll.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) self.toolScroll.setWidgetResizable(True) self.toolScroll.setObjectName(_fromUtf8("toolScroll")) - self.scrollAreaWidgetContents_2 = QtGui.QWidget() + self.scrollAreaWidgetContents_2 = QtWidgets.QWidget() self.scrollAreaWidgetContents_2.setGeometry(QtCore.QRect(0, 0, 821, 86)) self.scrollAreaWidgetContents_2.setObjectName(_fromUtf8("scrollAreaWidgetContents_2")) self.toolScroll.setWidget(self.scrollAreaWidgetContents_2) - self.controlLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.toolScroll) - self.configLbl = QtGui.QLabel(self.formLayoutWidget) + self.controlLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.toolScroll) + self.configLbl = QtWidgets.QLabel(self.formLayoutWidget) self.configLbl.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.configLbl.setObjectName(_fromUtf8("configLbl")) - self.controlLayout.setWidget(2, QtGui.QFormLayout.LabelRole, self.configLbl) - self.horizontalLayout = QtGui.QHBoxLayout() + self.controlLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.configLbl) + self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout")) - self.tabletScroll = QtGui.QScrollArea(self.formLayoutWidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed) + self.tabletScroll = QtWidgets.QScrollArea(self.formLayoutWidget) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.tabletScroll.sizePolicy().hasHeightForWidth()) @@ -151,22 +151,22 @@ def setupUi(self, MainWindow): self.tabletScroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded) self.tabletScroll.setWidgetResizable(True) self.tabletScroll.setObjectName(_fromUtf8("tabletScroll")) - self.scrollAreaWidgetContents = QtGui.QWidget() + self.scrollAreaWidgetContents = QtWidgets.QWidget() self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 776, 96)) self.scrollAreaWidgetContents.setObjectName(_fromUtf8("scrollAreaWidgetContents")) self.tabletScroll.setWidget(self.scrollAreaWidgetContents) self.horizontalLayout.addWidget(self.tabletScroll) - self.tabletRefresh = QtGui.QPushButton(self.formLayoutWidget) + self.tabletRefresh = QtWidgets.QPushButton(self.formLayoutWidget) self.tabletRefresh.setMaximumSize(QtCore.QSize(30, 30)) self.tabletRefresh.setText(_fromUtf8("")) self.tabletRefresh.setObjectName(_fromUtf8("tabletRefresh")) self.horizontalLayout.addWidget(self.tabletRefresh) - self.controlLayout.setLayout(0, QtGui.QFormLayout.FieldRole, self.horizontalLayout) - self.horizontalLayout_2 = QtGui.QHBoxLayout() + self.controlLayout.setLayout(0, QtWidgets.QFormLayout.FieldRole, self.horizontalLayout) + self.horizontalLayout_2 = QtWidgets.QHBoxLayout() self.horizontalLayout_2.setSpacing(6) self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2")) - self.configScroll = QtGui.QScrollArea(self.formLayoutWidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed) + self.configScroll = QtWidgets.QScrollArea(self.formLayoutWidget) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.configScroll.sizePolicy().hasHeightForWidth()) @@ -208,47 +208,47 @@ def setupUi(self, MainWindow): self.configScroll.setWidgetResizable(True) self.configScroll.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop) self.configScroll.setObjectName(_fromUtf8("configScroll")) - self.scrollAreaWidgetContents_3 = QtGui.QWidget() + self.scrollAreaWidgetContents_3 = QtWidgets.QWidget() self.scrollAreaWidgetContents_3.setGeometry(QtCore.QRect(0, 0, 725, 86)) self.scrollAreaWidgetContents_3.setObjectName(_fromUtf8("scrollAreaWidgetContents_3")) self.configScroll.setWidget(self.scrollAreaWidgetContents_3) self.horizontalLayout_2.addWidget(self.configScroll) - self.configControls = QtGui.QVBoxLayout() + self.configControls = QtWidgets.QVBoxLayout() self.configControls.setSpacing(0) self.configControls.setObjectName(_fromUtf8("configControls")) - self.addConfig = QtGui.QPushButton(self.formLayoutWidget) + self.addConfig = QtWidgets.QPushButton(self.formLayoutWidget) self.addConfig.setEnabled(False) self.addConfig.setMaximumSize(QtCore.QSize(30, 30)) self.addConfig.setObjectName(_fromUtf8("addConfig")) self.configControls.addWidget(self.addConfig) - self.removeConfig = QtGui.QPushButton(self.formLayoutWidget) + self.removeConfig = QtWidgets.QPushButton(self.formLayoutWidget) self.removeConfig.setEnabled(False) self.removeConfig.setMaximumSize(QtCore.QSize(30, 30)) self.removeConfig.setObjectName(_fromUtf8("removeConfig")) self.configControls.addWidget(self.removeConfig) - self.saveConfig = QtGui.QPushButton(self.formLayoutWidget) + self.saveConfig = QtWidgets.QPushButton(self.formLayoutWidget) self.saveConfig.setObjectName(_fromUtf8("saveConfig")) self.configControls.addWidget(self.saveConfig) self.horizontalLayout_2.addLayout(self.configControls) - self.controlLayout.setLayout(2, QtGui.QFormLayout.FieldRole, self.horizontalLayout_2) - self.controlBox = QtGui.QGroupBox(self.centralwidget) + self.controlLayout.setLayout(2, QtWidgets.QFormLayout.FieldRole, self.horizontalLayout_2) + self.controlBox = QtWidgets.QGroupBox(self.centralwidget) self.controlBox.setGeometry(QtCore.QRect(10, 310, 880, 540)) self.controlBox.setMinimumSize(QtCore.QSize(880, 540)) self.controlBox.setMaximumSize(QtCore.QSize(880, 540)) self.controlBox.setStyleSheet(_fromUtf8("")) self.controlBox.setTitle(_fromUtf8("")) self.controlBox.setObjectName(_fromUtf8("controlBox")) - self.aboutButton = QtGui.QPushButton(self.centralwidget) + self.aboutButton = QtWidgets.QPushButton(self.centralwidget) self.aboutButton.setGeometry(QtCore.QRect(770, 860, 90, 20)) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.aboutButton.sizePolicy().hasHeightForWidth()) self.aboutButton.setSizePolicy(sizePolicy) self.aboutButton.setObjectName(_fromUtf8("aboutButton")) - self.helpButton = QtGui.QPushButton(self.centralwidget) + self.helpButton = QtWidgets.QPushButton(self.centralwidget) self.helpButton.setGeometry(QtCore.QRect(870, 860, 20, 20)) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.helpButton.sizePolicy().hasHeightForWidth()) @@ -258,16 +258,16 @@ def setupUi(self, MainWindow): "border-width: 1px;\n" "")) self.helpButton.setObjectName(_fromUtf8("helpButton")) - self.deviceDefaults = QtGui.QPushButton(self.centralwidget) + self.deviceDefaults = QtWidgets.QPushButton(self.centralwidget) self.deviceDefaults.setGeometry(QtCore.QRect(650, 860, 111, 20)) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.deviceDefaults.sizePolicy().hasHeightForWidth()) self.deviceDefaults.setSizePolicy(sizePolicy) self.deviceDefaults.setObjectName(_fromUtf8("deviceDefaults")) MainWindow.setCentralWidget(self.centralwidget) - self.menuBar = QtGui.QMenuBar(MainWindow) + self.menuBar = QtWidgets.QMenuBar(MainWindow) self.menuBar.setGeometry(QtCore.QRect(0, 0, 900, 20)) self.menuBar.setObjectName(_fromUtf8("menuBar")) MainWindow.setMenuBar(self.menuBar) diff --git a/wacom-gui/xfce_shortcut.py b/wacom-gui/xfce_shortcut.py index 8daa679..eb488ee 100644 --- a/wacom-gui/xfce_shortcut.py +++ b/wacom-gui/xfce_shortcut.py @@ -60,7 +60,7 @@ class XfconfInterface: itself returns an error. """ - _QUERY_COMMAND = u"xfconf-query" + _QUERY_COMMAND = "xfconf-query" @staticmethod def _execute(args): @@ -251,7 +251,7 @@ class XfceShortcut: arbitrary tuples. """ - _CUSTOM_COMMAND_NAMESPACE = u"/commands/custom" + _CUSTOM_COMMAND_NAMESPACE = "/commands/custom" def __init__(self, namespace, sequence): # type: (Optional[Text], Text) -> None @@ -354,7 +354,7 @@ def isCustomCommand(self): class XfceShortcutInterface: """Interface for setting shortcuts in XFCE.""" - _KEYBOARD_SHORTCUT_CHANNEL = u"xfce4-keyboard-shortcuts" + _KEYBOARD_SHORTCUT_CHANNEL = "xfce4-keyboard-shortcuts" @staticmethod def _lookupShortcuts(shortcut):