oqtopus 0.1.15__tar.gz → 0.1.17__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {oqtopus-0.1.15 → oqtopus-0.1.17}/PKG-INFO +1 -1
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/gui/database_create_dialog.py +15 -6
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/gui/project_widget.py +60 -72
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/ui/database_create_dialog.ui +43 -54
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/ui/project_widget.ui +4 -1
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus.egg-info/PKG-INFO +1 -1
- {oqtopus-0.1.15 → oqtopus-0.1.17}/LICENSE +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/README.md +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/__init__.py +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/core/module.py +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/core/module_asset.py +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/core/module_package.py +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/core/modules_config.py +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/core/package_prepare_task.py +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/gui/__init__.py +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/gui/about_dialog.py +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/gui/database_connection_widget.py +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/gui/database_duplicate_dialog.py +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/gui/logs_widget.py +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/gui/main_dialog.py +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/gui/module_selection_widget.py +4 -4
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/gui/module_widget.py +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/gui/parameters_groupbox.py +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/gui/settings_dialog.py +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/oqtopus.py +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/oqtopus_plugin.py +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/ui/__init__.py +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/ui/about_dialog.ui +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/ui/database_connection_widget.ui +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/ui/database_duplicate_dialog.ui +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/ui/logs_widget.ui +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/ui/main_dialog.ui +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/ui/module_selection_widget.ui +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/ui/module_widget.ui +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/ui/settings_dialog.ui +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/utils/__init__.py +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/utils/plugin_utils.py +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/utils/qt_utils.py +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/utils/tmmtlogging.py +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus/utils/translation.py +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus.egg-info/SOURCES.txt +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus.egg-info/dependency_links.txt +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus.egg-info/requires.txt +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/oqtopus.egg-info/top_level.txt +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/pyproject.toml +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/setup.cfg +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/tests/__init__.py +0 -0
- {oqtopus-0.1.15 → oqtopus-0.1.17}/tests/test_plugin_load.py +0 -0
@@ -35,6 +35,11 @@ from ..utils.qt_utils import OverrideCursor
|
|
35
35
|
DIALOG_UI = PluginUtils.get_ui_class("database_create_dialog.ui")
|
36
36
|
|
37
37
|
|
38
|
+
DEFAULT_PG_PORT = "5432"
|
39
|
+
DEFAULT_PG_DB = "postgres"
|
40
|
+
DEFAULT_PG_HOST = "localhost"
|
41
|
+
|
42
|
+
|
38
43
|
class DatabaseCreateDialog(QDialog, DIALOG_UI):
|
39
44
|
def __init__(self, selected_service=None, parent=None):
|
40
45
|
QDialog.__init__(self, parent)
|
@@ -62,6 +67,11 @@ class DatabaseCreateDialog(QDialog, DIALOG_UI):
|
|
62
67
|
self.parameters_ssl_comboBox.addItem("require", "require")
|
63
68
|
self.parameters_ssl_comboBox.addItem("verify-ca", "verify-ca")
|
64
69
|
self.parameters_ssl_comboBox.addItem("verify-full", "verify-full")
|
70
|
+
self.parameters_ssl_comboBox.setCurrentIndex(2) # Default to 'prefer'
|
71
|
+
|
72
|
+
self.parameters_host_lineEdit.setPlaceholderText(DEFAULT_PG_HOST)
|
73
|
+
self.parameters_port_lineEdit.setPlaceholderText(DEFAULT_PG_PORT)
|
74
|
+
self.parameters_database_lineEdit.setPlaceholderText(DEFAULT_PG_DB)
|
65
75
|
|
66
76
|
self.database_lineEdit.textChanged.connect(self._databaseTextChanged)
|
67
77
|
|
@@ -91,8 +101,7 @@ class DatabaseCreateDialog(QDialog, DIALOG_UI):
|
|
91
101
|
self.parameters_ssl_comboBox.setCurrentIndex(parameter_ssl_index)
|
92
102
|
self.parameters_user_lineEdit.setText(service_user)
|
93
103
|
self.parameters_password_lineEdit.setText(service_password)
|
94
|
-
|
95
|
-
self.database_lineEdit.setText(service_dbname)
|
104
|
+
self.parameters_database_lineEdit.setText(service_dbname)
|
96
105
|
|
97
106
|
def _enterManuallyToggled(self, checked):
|
98
107
|
self.parameters_frame.setEnabled(checked)
|
@@ -195,16 +204,16 @@ class DatabaseCreateDialog(QDialog, DIALOG_UI):
|
|
195
204
|
|
196
205
|
# Collect parameters from manual input fields
|
197
206
|
if self.parameters_host_lineEdit.text():
|
198
|
-
parameters["host"] = self.parameters_host_lineEdit.text()
|
207
|
+
parameters["host"] = self.parameters_host_lineEdit.text() or DEFAULT_PG_HOST
|
199
208
|
if self.parameters_port_lineEdit.text():
|
200
|
-
parameters["port"] = self.parameters_port_lineEdit.text()
|
209
|
+
parameters["port"] = self.parameters_port_lineEdit.text() or DEFAULT_PG_PORT
|
201
210
|
if self.parameters_ssl_comboBox.currentData():
|
202
211
|
parameters["sslmode"] = self.parameters_ssl_comboBox.currentData()
|
203
212
|
if self.parameters_user_lineEdit.text():
|
204
213
|
parameters["user"] = self.parameters_user_lineEdit.text()
|
205
214
|
if self.parameters_password_lineEdit.text():
|
206
215
|
parameters["password"] = self.parameters_password_lineEdit.text()
|
207
|
-
if self.
|
208
|
-
parameters["dbname"] = self.
|
216
|
+
if self.parameters_database_lineEdit.text():
|
217
|
+
parameters["dbname"] = self.parameters_database_lineEdit.text() or DEFAULT_PG_DB
|
209
218
|
|
210
219
|
return parameters
|
@@ -1,11 +1,13 @@
|
|
1
1
|
import os
|
2
2
|
import shutil
|
3
3
|
|
4
|
+
from qgis.PyQt.QtCore import QUrl
|
5
|
+
from qgis.PyQt.QtGui import QDesktopServices
|
4
6
|
from qgis.PyQt.QtWidgets import QFileDialog, QMessageBox, QWidget
|
5
7
|
|
6
8
|
from ..core.module_package import ModulePackage
|
7
|
-
from ..utils.plugin_utils import PluginUtils
|
8
|
-
from ..utils.qt_utils import
|
9
|
+
from ..utils.plugin_utils import PluginUtils, logger
|
10
|
+
from ..utils.qt_utils import QtUtils
|
9
11
|
|
10
12
|
DIALOG_UI = PluginUtils.get_ui_class("project_widget.ui")
|
11
13
|
|
@@ -35,41 +37,40 @@ class ProjectWidget(QWidget, DIALOG_UI):
|
|
35
37
|
QtUtils.setFontItalic(self.project_info_label, True)
|
36
38
|
return
|
37
39
|
|
38
|
-
# Search for QGIS project file in self.__package_dir
|
39
|
-
project_file_dir = os.path.join(asset_project.package_dir, "project")
|
40
|
-
|
41
40
|
# Check if the directory exists
|
42
|
-
if not os.path.exists(
|
41
|
+
if not os.path.exists(asset_project.package_dir):
|
43
42
|
self.project_info_label.setText(
|
44
|
-
self.tr(f"Project directory '{
|
43
|
+
self.tr(f"Project directory '{asset_project.package_dir}' does not exist.")
|
45
44
|
)
|
46
45
|
QtUtils.setForegroundColor(self.project_info_label, PluginUtils.COLOR_WARNING)
|
47
46
|
QtUtils.setFontItalic(self.project_info_label, True)
|
48
47
|
return
|
49
48
|
|
50
|
-
|
51
|
-
for root, dirs, files in os.walk(
|
49
|
+
project_file = None
|
50
|
+
for root, dirs, files in os.walk(asset_project.package_dir):
|
52
51
|
for file in files:
|
53
52
|
if file.endswith(".qgz") or file.endswith(".qgs"):
|
54
|
-
|
53
|
+
project_file = os.path.join(root, file)
|
55
54
|
break
|
56
55
|
|
57
|
-
if
|
56
|
+
if project_file:
|
58
57
|
break
|
59
58
|
|
60
|
-
if
|
59
|
+
if project_file is None:
|
61
60
|
self.project_info_label.setText(
|
62
|
-
self.tr(
|
61
|
+
self.tr(
|
62
|
+
f"No QGIS project file (.qgz or .qgs) found into {asset_project.package_dir}."
|
63
|
+
),
|
63
64
|
)
|
64
65
|
QtUtils.setForegroundColor(self.project_info_label, PluginUtils.COLOR_WARNING)
|
65
|
-
QtUtils.setFontItalic(self.
|
66
|
+
QtUtils.setFontItalic(self.project_info_label, True)
|
66
67
|
return
|
67
68
|
|
69
|
+
QtUtils.resetForegroundColor(self.project_info_label)
|
70
|
+
QtUtils.setFontItalic(self.project_info_label, False)
|
68
71
|
self.project_info_label.setText(
|
69
|
-
|
72
|
+
f"<a href='file://{asset_project.package_dir}'>{asset_project.package_dir}</a>",
|
70
73
|
)
|
71
|
-
QtUtils.setForegroundColor(self.project_info_label, PluginUtils.COLOR_GREEN)
|
72
|
-
QtUtils.setFontItalic(self.db_database_label, False)
|
73
74
|
|
74
75
|
def __projectInstallClicked(self):
|
75
76
|
|
@@ -81,15 +82,7 @@ class ProjectWidget(QWidget, DIALOG_UI):
|
|
81
82
|
)
|
82
83
|
return
|
83
84
|
|
84
|
-
|
85
|
-
QMessageBox.warning(
|
86
|
-
self,
|
87
|
-
self.tr("Error"),
|
88
|
-
self.tr("Please select a module version first."),
|
89
|
-
)
|
90
|
-
return
|
91
|
-
|
92
|
-
asset_project = self.module_package_comboBox.currentData().asset_project
|
85
|
+
asset_project = self.__current_module_package.asset_project
|
93
86
|
if asset_project is None:
|
94
87
|
QMessageBox.warning(
|
95
88
|
self,
|
@@ -98,46 +91,6 @@ class ProjectWidget(QWidget, DIALOG_UI):
|
|
98
91
|
)
|
99
92
|
return
|
100
93
|
|
101
|
-
package_dir = asset_project.package_dir
|
102
|
-
if package_dir is None:
|
103
|
-
CriticalMessageBox(
|
104
|
-
self.tr("Error"), self.tr("No valid package directory available."), None, self
|
105
|
-
).exec()
|
106
|
-
return
|
107
|
-
|
108
|
-
# Search for QGIS project file in package_dir
|
109
|
-
project_file_dir = os.path.join(package_dir, "project")
|
110
|
-
|
111
|
-
# Check if the directory exists
|
112
|
-
if not os.path.exists(project_file_dir):
|
113
|
-
CriticalMessageBox(
|
114
|
-
self.tr("Error"),
|
115
|
-
self.tr(f"Project directory '{project_file_dir}' does not exist."),
|
116
|
-
None,
|
117
|
-
self,
|
118
|
-
).exec()
|
119
|
-
return
|
120
|
-
|
121
|
-
self.__project_file = None
|
122
|
-
for root, dirs, files in os.walk(project_file_dir):
|
123
|
-
print(f"Searching for QGIS project file in {root}: {files}")
|
124
|
-
for file in files:
|
125
|
-
if file.endswith(".qgz") or file.endswith(".qgs"):
|
126
|
-
self.__project_file = os.path.join(root, file)
|
127
|
-
break
|
128
|
-
|
129
|
-
if self.__project_file:
|
130
|
-
break
|
131
|
-
|
132
|
-
if self.__project_file is None:
|
133
|
-
CriticalMessageBox(
|
134
|
-
self.tr("Error"),
|
135
|
-
self.tr(f"No QGIS project file (.qgz or .qgs) found into {project_file_dir}."),
|
136
|
-
None,
|
137
|
-
self,
|
138
|
-
).exec()
|
139
|
-
return
|
140
|
-
|
141
94
|
install_destination = QFileDialog.getExistingDirectory(
|
142
95
|
self,
|
143
96
|
self.tr("Select installation directory"),
|
@@ -148,15 +101,22 @@ class ProjectWidget(QWidget, DIALOG_UI):
|
|
148
101
|
if not install_destination:
|
149
102
|
return
|
150
103
|
|
151
|
-
# Copy the project
|
104
|
+
# Copy the project files to the selected directory
|
152
105
|
try:
|
153
|
-
|
106
|
+
# Copy all files from assset_project to install_destination
|
107
|
+
for item in os.listdir(asset_project.package_dir):
|
108
|
+
source_path = os.path.join(asset_project.package_dir, item)
|
109
|
+
destination_path = os.path.join(install_destination, item)
|
110
|
+
|
111
|
+
if os.path.isdir(source_path):
|
112
|
+
shutil.copytree(source_path, destination_path, dirs_exist_ok=True)
|
113
|
+
else:
|
114
|
+
shutil.copy2(source_path, destination_path)
|
115
|
+
|
154
116
|
QMessageBox.information(
|
155
117
|
self,
|
156
118
|
self.tr("Project installed"),
|
157
|
-
self.tr(
|
158
|
-
f"Project file '{self.__project_file}' has been copied to '{install_destination}'."
|
159
|
-
),
|
119
|
+
self.tr(f"Project files have been copied to '{install_destination}'."),
|
160
120
|
)
|
161
121
|
except Exception as e:
|
162
122
|
QMessageBox.critical(
|
@@ -167,4 +127,32 @@ class ProjectWidget(QWidget, DIALOG_UI):
|
|
167
127
|
return
|
168
128
|
|
169
129
|
def __projectSeeChangelogClicked(self):
|
170
|
-
self.
|
130
|
+
if self.__current_module_package is None:
|
131
|
+
QMessageBox.warning(
|
132
|
+
self,
|
133
|
+
self.tr("Can't open changelog"),
|
134
|
+
self.tr("Please select a module and version first."),
|
135
|
+
)
|
136
|
+
return
|
137
|
+
|
138
|
+
if self.__current_module_package.type == ModulePackage.Type.FROM_ZIP:
|
139
|
+
QMessageBox.warning(
|
140
|
+
self,
|
141
|
+
self.tr("Can't open changelog"),
|
142
|
+
self.tr("Changelog is not available for Zip packages."),
|
143
|
+
)
|
144
|
+
return
|
145
|
+
|
146
|
+
if self.__current_module_package.html_url is None:
|
147
|
+
QMessageBox.warning(
|
148
|
+
self,
|
149
|
+
self.tr("Can't open changelog"),
|
150
|
+
self.tr(
|
151
|
+
f"Changelog not available for version '{self.__current_module_package.display_name()}'."
|
152
|
+
),
|
153
|
+
)
|
154
|
+
return
|
155
|
+
|
156
|
+
changelog_url = self.__current_module_package.html_url
|
157
|
+
logger.info(f"Opening changelog URL: {changelog_url}")
|
158
|
+
QDesktopServices.openUrl(QUrl(changelog_url))
|
@@ -62,13 +62,23 @@
|
|
62
62
|
<enum>QFrame::Raised</enum>
|
63
63
|
</property>
|
64
64
|
<layout class="QGridLayout" name="gridLayout_5">
|
65
|
-
<item row="
|
66
|
-
<widget class="
|
65
|
+
<item row="5" column="1">
|
66
|
+
<widget class="QLineEdit" name="parameters_password_lineEdit">
|
67
|
+
<property name="clearButtonEnabled">
|
68
|
+
<bool>true</bool>
|
69
|
+
</property>
|
70
|
+
</widget>
|
71
|
+
</item>
|
72
|
+
<item row="5" column="0">
|
73
|
+
<widget class="QLabel" name="label_12">
|
67
74
|
<property name="text">
|
68
|
-
<string>
|
75
|
+
<string>Password</string>
|
69
76
|
</property>
|
70
77
|
</widget>
|
71
78
|
</item>
|
79
|
+
<item row="3" column="1">
|
80
|
+
<widget class="QComboBox" name="parameters_ssl_comboBox"/>
|
81
|
+
</item>
|
72
82
|
<item row="3" column="0">
|
73
83
|
<widget class="QLabel" name="label_11">
|
74
84
|
<property name="text">
|
@@ -76,38 +86,11 @@
|
|
76
86
|
</property>
|
77
87
|
</widget>
|
78
88
|
</item>
|
79
|
-
<item row="
|
80
|
-
<widget class="
|
81
|
-
<
|
82
|
-
<
|
83
|
-
|
84
|
-
</property>
|
85
|
-
</item>
|
86
|
-
<item>
|
87
|
-
<property name="text">
|
88
|
-
<string>allow</string>
|
89
|
-
</property>
|
90
|
-
</item>
|
91
|
-
<item>
|
92
|
-
<property name="text">
|
93
|
-
<string>prefer</string>
|
94
|
-
</property>
|
95
|
-
</item>
|
96
|
-
<item>
|
97
|
-
<property name="text">
|
98
|
-
<string>require</string>
|
99
|
-
</property>
|
100
|
-
</item>
|
101
|
-
<item>
|
102
|
-
<property name="text">
|
103
|
-
<string>verify-ca</string>
|
104
|
-
</property>
|
105
|
-
</item>
|
106
|
-
<item>
|
107
|
-
<property name="text">
|
108
|
-
<string>verify-full</string>
|
109
|
-
</property>
|
110
|
-
</item>
|
89
|
+
<item row="1" column="1">
|
90
|
+
<widget class="QLineEdit" name="parameters_host_lineEdit">
|
91
|
+
<property name="clearButtonEnabled">
|
92
|
+
<bool>true</bool>
|
93
|
+
</property>
|
111
94
|
</widget>
|
112
95
|
</item>
|
113
96
|
<item row="2" column="1">
|
@@ -117,45 +100,51 @@
|
|
117
100
|
</property>
|
118
101
|
</widget>
|
119
102
|
</item>
|
120
|
-
<item row="
|
121
|
-
<widget class="QLineEdit" name="
|
103
|
+
<item row="4" column="1">
|
104
|
+
<widget class="QLineEdit" name="parameters_user_lineEdit">
|
122
105
|
<property name="clearButtonEnabled">
|
123
106
|
<bool>true</bool>
|
124
107
|
</property>
|
125
108
|
</widget>
|
126
109
|
</item>
|
127
|
-
<item row="
|
128
|
-
<widget class="QLabel" name="
|
110
|
+
<item row="4" column="0">
|
111
|
+
<widget class="QLabel" name="label_8">
|
129
112
|
<property name="text">
|
130
|
-
<string>
|
113
|
+
<string>User</string>
|
131
114
|
</property>
|
132
115
|
</widget>
|
133
116
|
</item>
|
134
|
-
<item row="
|
135
|
-
<widget class="QLabel" name="
|
117
|
+
<item row="2" column="0">
|
118
|
+
<widget class="QLabel" name="label_10">
|
136
119
|
<property name="text">
|
137
|
-
<string>
|
120
|
+
<string>Port</string>
|
138
121
|
</property>
|
139
122
|
</widget>
|
140
123
|
</item>
|
141
|
-
<item row="
|
142
|
-
<widget class="
|
143
|
-
<property name="
|
144
|
-
<
|
124
|
+
<item row="1" column="0">
|
125
|
+
<widget class="QLabel" name="label_9">
|
126
|
+
<property name="text">
|
127
|
+
<string>Host</string>
|
145
128
|
</property>
|
146
129
|
</widget>
|
147
130
|
</item>
|
148
|
-
<item row="
|
149
|
-
<widget class="QLabel" name="
|
131
|
+
<item row="6" column="0">
|
132
|
+
<widget class="QLabel" name="label_3">
|
150
133
|
<property name="text">
|
151
|
-
<string>
|
134
|
+
<string>Database</string>
|
152
135
|
</property>
|
153
136
|
</widget>
|
154
137
|
</item>
|
155
|
-
<item row="
|
156
|
-
<widget class="QLineEdit" name="
|
157
|
-
<property name="
|
158
|
-
<
|
138
|
+
<item row="6" column="1">
|
139
|
+
<widget class="QLineEdit" name="parameters_database_lineEdit">
|
140
|
+
<property name="toolTip">
|
141
|
+
<string><html><head/><body><p>This is the database used to connect to the cluster. It must already exist.</p></body></html></string>
|
142
|
+
</property>
|
143
|
+
<property name="text">
|
144
|
+
<string/>
|
145
|
+
</property>
|
146
|
+
<property name="placeholderText">
|
147
|
+
<string>postgres</string>
|
159
148
|
</property>
|
160
149
|
</widget>
|
161
150
|
</item>
|
@@ -26,8 +26,11 @@
|
|
26
26
|
<property name="text">
|
27
27
|
<string>-</string>
|
28
28
|
</property>
|
29
|
+
<property name="openExternalLinks">
|
30
|
+
<bool>true</bool>
|
31
|
+
</property>
|
29
32
|
<property name="textInteractionFlags">
|
30
|
-
<set>Qt::
|
33
|
+
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
|
31
34
|
</property>
|
32
35
|
</widget>
|
33
36
|
</item>
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -213,19 +213,19 @@ class ModuleSelectionWidget(QWidget, DIALOG_UI):
|
|
213
213
|
self.module_information_label.setText(loading_text)
|
214
214
|
|
215
215
|
def __seeChangeLogClicked(self):
|
216
|
-
if self.__current_module_package
|
216
|
+
if self.__current_module_package is None:
|
217
217
|
QMessageBox.warning(
|
218
218
|
self,
|
219
219
|
self.tr("Can't open changelog"),
|
220
|
-
self.tr("
|
220
|
+
self.tr("Please select a module and version first."),
|
221
221
|
)
|
222
222
|
return
|
223
223
|
|
224
|
-
if self.__current_module_package
|
224
|
+
if self.__current_module_package.type == ModulePackage.Type.FROM_ZIP:
|
225
225
|
QMessageBox.warning(
|
226
226
|
self,
|
227
227
|
self.tr("Can't open changelog"),
|
228
|
-
self.tr("
|
228
|
+
self.tr("Changelog is not available for Zip packages."),
|
229
229
|
)
|
230
230
|
return
|
231
231
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|