Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions oqtopus/core/modules_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ class ModuleConfig(BaseModel):
organisation: str
repository: str
exclude_releases: str | None = None # Regexp pattern to exclude releases
experimental: bool = False # Whether this module is experimental


class ModulesConfig(BaseModel):
Expand Down
1 change: 1 addition & 0 deletions oqtopus/default_config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ modules:
id: tce
organisation: teksi
repository: cemetery
experimental: true

- name: SIGNALO
id: signalo
Expand Down
2 changes: 2 additions & 0 deletions oqtopus/gui/main_dialog.py
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,8 @@ def __open_settings_dialog(self):
if dlg.exec() == QDialog.DialogCode.Accepted:
# Update column visibility from settings
self.__logsWidget.update_column_visibility_from_settings()
# Reload modules in case experimental visibility changed
self.__moduleSelectionWidget.reloadModules()

def __cleanup_cache(self):
"""Delete all cached data (downloaded packages and GitHub API cache)."""
Expand Down
51 changes: 34 additions & 17 deletions oqtopus/gui/module_selection_widget.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,23 +43,7 @@ def __init__(self, modules_config_path, parent=None):

self.module_progressBar.setVisible(False)

self.module_module_comboBox.clear()
self.module_module_comboBox.addItem(self.tr("Please select a module"), None)
if self.__modules_config is not None:
for config_module in self.__modules_config.modules:
module = Module(
name=config_module.name,
id=config_module.id,
organisation=config_module.organisation,
repository=config_module.repository,
exclude_releases=config_module.exclude_releases,
parent=self,
)
self.module_module_comboBox.addItem(module.name, module)
module.signal_versionsLoaded.connect(self.__loadVersionsFinished)
module.signal_developmentVersionsLoaded.connect(
self.__loadDevelopmentVersionsFinished
)
self.__populate_module_combobox()

self.module_latestVersion_label.setText("")
QtUtils.setForegroundColor(self.module_latestVersion_label, PluginUtils.COLOR_GREEN)
Expand All @@ -80,6 +64,39 @@ def __init__(self, modules_config_path, parent=None):
self.__packagePrepareTaskProgress
)

def reloadModules(self):
"""Reload the module combobox, e.g. after settings change."""
self.__populate_module_combobox()

def __populate_module_combobox(self):
"""Populate the module combobox based on config and current settings."""
self.module_module_comboBox.blockSignals(True)
self.module_module_comboBox.clear()
self.module_module_comboBox.addItem(self.tr("Please select a module"), None)
show_experimental = PluginUtils.get_show_experimental_modules()
if self.__modules_config is not None:
for config_module in self.__modules_config.modules:
if config_module.experimental and not show_experimental:
continue
module = Module(
name=config_module.name,
id=config_module.id,
organisation=config_module.organisation,
repository=config_module.repository,
exclude_releases=config_module.exclude_releases,
parent=self,
)
display_name = (
f"{module.name} (experimental)" if config_module.experimental else module.name
)
self.module_module_comboBox.addItem(display_name, module)
module.signal_versionsLoaded.connect(self.__loadVersionsFinished)
module.signal_developmentVersionsLoaded.connect(
self.__loadDevelopmentVersionsFinished
)
self.module_module_comboBox.blockSignals(False)
self.module_module_comboBox.setCurrentIndex(0)

def close(self):
if self.__packagePrepareTask.isRunning():
# Disconnect signals first to prevent crashes when emitting to destroyed widgets
Expand Down
6 changes: 6 additions & 0 deletions oqtopus/gui/settings_dialog.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ def __init__(self, parent=None):

self.githubToken_lineEdit.setText(PluginUtils.get_github_token())
self.allow_multiple_modules_checkBox.setChecked(PluginUtils.get_allow_multiple_modules())
self.show_experimental_modules_checkBox.setChecked(
PluginUtils.get_show_experimental_modules()
)

# Load log column visibility settings
self.log_show_datetime_checkBox.setChecked(PluginUtils.get_log_show_datetime())
Expand All @@ -26,6 +29,9 @@ def __init__(self, parent=None):
def accept(self):
PluginUtils.set_github_token(self.githubToken_lineEdit.text())
PluginUtils.set_allow_multiple_modules(self.allow_multiple_modules_checkBox.isChecked())
PluginUtils.set_show_experimental_modules(
self.show_experimental_modules_checkBox.isChecked()
)
PluginUtils.set_log_show_datetime(self.log_show_datetime_checkBox.isChecked())
PluginUtils.set_log_show_level(self.log_show_level_checkBox.isChecked())
PluginUtils.set_log_show_module(self.log_show_module_checkBox.isChecked())
Expand Down
11 changes: 9 additions & 2 deletions oqtopus/ui/settings_dialog.ui
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,13 @@
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QCheckBox" name="show_experimental_modules_checkBox">
<property name="text">
<string>Show experimental modules</string>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QGroupBox" name="log_settings_groupBox">
<property name="title">
<string>Log display columns</string>
Expand Down Expand Up @@ -81,7 +88,7 @@
</layout>
</widget>
</item>
<item row="3" column="1">
<item row="4" column="1">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
Expand All @@ -94,7 +101,7 @@
</property>
</spacer>
</item>
<item row="4" column="0" colspan="3">
<item row="5" column="0" colspan="3">
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
Expand Down
10 changes: 10 additions & 0 deletions oqtopus/utils/plugin_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -241,6 +241,16 @@ def set_allow_multiple_modules(allow: bool):
settings = QSettings()
settings.setValue("oqtopus/allow_multiple_modules", allow)

@staticmethod
def get_show_experimental_modules():
settings = QSettings()
return settings.value("oqtopus/show_experimental_modules", False, type=bool)

@staticmethod
def set_show_experimental_modules(show: bool):
settings = QSettings()
settings.setValue("oqtopus/show_experimental_modules", show)

@staticmethod
def get_log_show_datetime():
settings = QSettings()
Expand Down