src/eric7/UI/VersionsDialog.py

Fri, 02 Sep 2022 16:07:11 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 02 Sep 2022 16:07:11 +0200
branch
eric7
changeset 9308
110d32f96013
parent 9221
bf71ee032bb4
child 9339
41ceec853d3e
permissions
-rw-r--r--

Improved update check info and versions check dialogs.

8970
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2022 Detlev Offenbach <detlev@die-offenbachs.de>
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a dialog to show the versions of various components.
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
10 import sys
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
11
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
12 from PyQt6.QtCore import pyqtSlot, Qt
8970
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 from PyQt6.QtGui import QGuiApplication
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 from PyQt6.QtWidgets import QDialog, QDialogButtonBox
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
16 from EricGui.EricOverrideCursor import EricOverrideCursor
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
17 from EricWidgets.EricApplication import ericApp
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
18 from EricWidgets import EricMessageBox
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
19
8970
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 from .Ui_VersionsDialog import Ui_VersionsDialog
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 class VersionsDialog(QDialog, Ui_VersionsDialog):
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 """
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 Class implementing a dialog to show the versions of various components.
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
27
8970
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 def __init__(self, parent, title, text):
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 """
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
31
8970
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 @param parent reference to the parent widget
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 @type UserInterface
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 @param title dialog title
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 @type str
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 @param text versions text to be shown
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 @type str
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 """
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 super().__init__(parent)
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 self.setupUi(self)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
41
8970
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 self.__ui = parent
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 icon = QGuiApplication.windowIcon().pixmap(64, 64)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
44
8970
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 self.setWindowTitle(title)
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 self.iconLabel.setPixmap(icon)
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 self.textLabel.setText(text)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
48
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
49 self.__checkUpdateButton = self.buttonBox.addButton(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
50 self.tr("Check for Upgrades..."), QDialogButtonBox.ButtonRole.ActionRole
8970
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 )
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
52 self.__checkUpdateButton.clicked.connect(self.__checkForUpdate)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
53
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
54 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setDefault(True)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
55 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setFocus(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
56 Qt.FocusReason.OtherFocusReason
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
57 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
58
8970
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 msh = self.minimumSizeHint()
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 self.resize(max(self.width(), msh.width()), msh.height())
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
61
8970
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 self.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
63
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
64 @pyqtSlot()
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
65 def __checkForUpdate(self):
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
66 """
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
67 Private slot to check, if updates of PyQt6 packages or the eric-ide
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
68 package are available.
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
69 """
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
70 msg = ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
71
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
72 pip = ericApp().getObject("Pip")
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
73 venvManager = ericApp().getObject("VirtualEnvManager")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
74
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
75 environmentName = (
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
76 venvManager.environmentForInterpreter(sys.executable)[0]
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
77 # just the name is needed
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
78 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
79
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
80 if environmentName:
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
81 with EricOverrideCursor():
9308
110d32f96013 Improved update check info and versions check dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
82 pyqtUpdateAvailable, pyqtVersionsData = pip.checkPackageOutdated(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
83 "pyqt6", environmentName
9308
110d32f96013 Improved update check info and versions check dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
84 )
110d32f96013 Improved update check info and versions check dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
85 ericUpdateAvailable, ericVersionsData = pip.checkPackageOutdated(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
86 "eric-ide", environmentName
9308
110d32f96013 Improved update check info and versions check dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
87 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
88
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
89 if pyqtUpdateAvailable or ericUpdateAvailable:
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
90 self.buttonBox.removeButton(self.__checkUpdateButton)
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
91 self.__checkUpdateButton = None
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
92 else:
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
93 msg = self.tr("No upgrades available.")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
94
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
95 if ericUpdateAvailable:
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
96 self.__upgradeEricButton = self.buttonBox.addButton(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
97 self.tr("Upgrade eric7..."), QDialogButtonBox.ButtonRole.ActionRole
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
98 )
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
99 self.__upgradeEricButton.clicked.connect(self.__ui.upgradeEric)
9308
110d32f96013 Improved update check info and versions check dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
100 msg += self.tr(
110d32f96013 Improved update check info and versions check dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
101 "<p>An upgrade of <b>eric7</b> is available.<br/>"
110d32f96013 Improved update check info and versions check dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
102 "<b>{0}</b>: {1} to {2}.</p>"
110d32f96013 Improved update check info and versions check dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
103 ).format(*ericVersionsData[0])
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
104
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
105 if pyqtUpdateAvailable:
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
106 self.__upgradePyQtButton = self.buttonBox.addButton(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
107 self.tr("Upgrade PyQt6..."), QDialogButtonBox.ButtonRole.ActionRole
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
108 )
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
109 self.__upgradePyQtButton.clicked.connect(self.__ui.upgradePyQt)
9308
110d32f96013 Improved update check info and versions check dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
110 msg += self.tr(
110d32f96013 Improved update check info and versions check dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
111 "<p>An upgrade of <b>PyQt6</b> is available.<br/>{0}</p>"
110d32f96013 Improved update check info and versions check dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
112 ).format(
110d32f96013 Improved update check info and versions check dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
113 "<br/>".join(
110d32f96013 Improved update check info and versions check dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
114 self.tr("<b>{0}</b>: {1} to {2}").format(*v)
110d32f96013 Improved update check info and versions check dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
115 for v in pyqtVersionsData
110d32f96013 Improved update check info and versions check dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
116 )
110d32f96013 Improved update check info and versions check dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
117 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
118
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
119 if ericUpdateAvailable and pyqtUpdateAvailable:
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
120 self.__upgradeBothButton = self.buttonBox.addButton(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
121 self.tr("Upgrade Both..."), QDialogButtonBox.ButtonRole.ActionRole
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
122 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
123 self.__upgradeBothButton.clicked.connect(self.__ui.upgradeEricPyQt)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
124
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
125 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setDefault(True)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
126 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setFocus(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
127 Qt.FocusReason.OtherFocusReason
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8971
diff changeset
128 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
129
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
130 EricMessageBox.information(self, self.tr("Check for Upgrades"), msg)

eric ide

mercurial