Files
gotify-tray-customized/venv/lib/python3.12/site-packages/PyQt6/uic/ui_file.py
kdusek 5138303016
Some checks failed
build / build-pip (push) Failing after 16s
build / build-win64 (push) Has been cancelled
build / build-macos (push) Has been cancelled
Fix tray visibility and message reception issues
- Disable sound initialization to prevent hanging
- Add missing import re in utils.py
- Fix settings loading for QSettings
- Update file paths to use PROJECT_ROOT
- Revert to working API paths and listener from commit efdc63e
2025-12-07 22:39:07 +01:00

93 lines
3.1 KiB
Python

# Copyright (c) 2025 Riverbank Computing Limited <info@riverbankcomputing.com>
#
# This file is part of PyQt6.
#
# This file may be used under the terms of the GNU General Public License
# version 3.0 as published by the Free Software Foundation and appearing in
# the file LICENSE included in the packaging of this file. Please review the
# following information to ensure the GNU General Public License version 3.0
# requirements will be met: http://www.gnu.org/copyleft/gpl.html.
#
# If you do not wish to use this file under the terms of the GPL version 3.0
# then you may purchase a commercial license. For more information contact
# info@riverbankcomputing.com.
#
# This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
# WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
from xml.etree import ElementTree
class UIFile:
""" Encapsulate a Designer .ui file. """
def __init__(self, ui_file):
""" Initialise the .ui file. """
# Get the name of the .ui file allowing it to be a file object.
if hasattr(ui_file, 'read'):
self._ui_file = getattr(ui_file, 'name', "unknown")
else:
self._ui_file = ui_file
try:
document = ElementTree.parse(ui_file)
except Exception as e:
self._raise_exception("invalid Qt Designer file", detail=str(e))
# Perform some sanity checks.
root = document.getroot()
if root.tag != 'ui':
self._raise_exception("not created by Qt Designer")
version = root.get('version')
if version is None:
self._raise_exception("missing version number")
if version != '4.0':
self._raise_exception("only Qt Designer files v4.0 are supported")
# Extract the top-level elements.
self.button_groups = None
self.connections = None
self.custom_widgets = None
self.layout_default = None
self.tab_stops = None
self.widget = None
self.class_name = None
for el in root:
if el.tag == 'class':
self.class_name = el.text
elif el.tag == 'buttongroups':
self.button_groups = el
elif el.tag == 'connections':
self.connections = el
elif el.tag == 'customwidgets':
self.custom_widgets = el
elif el.tag == 'layoutdefault':
self.layout_default = el
elif el.tag == 'tabstops':
self.tab_stops = el
elif el.tag == 'widget':
self.widget = el
# The <class> element was optional in legacy versions of the schema.
if not self.class_name:
if self.widget is not None:
self.class_name = self.widget.get('name')
if not self.class_name:
self._raise_exception(
"unable to determine the name of the UI class")
def _raise_exception(self, message, detail=''):
""" Raise a UIFileException. """
from .exceptions import UIFileException
raise UIFileException(self._ui_file, message, detail=detail)