Commit 3bcfab63 authored by Roman Alifanov's avatar Roman Alifanov

CustomSettings: add get_range

parent 0e19b429
...@@ -4,6 +4,7 @@ from .widgets import WidgetFactory ...@@ -4,6 +4,7 @@ from .widgets import WidgetFactory
import logging import logging
import subprocess import subprocess
import ast
class CustomSetting: class CustomSetting:
...@@ -22,6 +23,7 @@ class CustomSetting: ...@@ -22,6 +23,7 @@ class CustomSetting:
self._current_value = None self._current_value = None
self.get_command = setting_data.get('get_command') self.get_command = setting_data.get('get_command')
self.get_range_command = setting_data.get('get_range_command')
self.set_command = setting_data.get('set_command') self.set_command = setting_data.get('set_command')
self.gtype = setting_data.get('gtype', 's') self.gtype = setting_data.get('gtype', 's')
...@@ -115,6 +117,9 @@ class CustomSetting: ...@@ -115,6 +117,9 @@ class CustomSetting:
self._current_value = value self._current_value = value
self._update_widget() self._update_widget()
def get_range(self):
return self._execute_get_range_command()
def _get_selected_row_index(self): def _get_selected_row_index(self):
current_value = self._get_backend_value() current_value = self._get_backend_value()
return list(self.map.values()).index(current_value) if current_value in self.map.values() else 0 return list(self.map.values()).index(current_value) if current_value in self.map.values() else 0
...@@ -162,6 +167,25 @@ class CustomSetting: ...@@ -162,6 +167,25 @@ class CustomSetting:
self.logger.error(f"Set command failed: {e.stderr}") self.logger.error(f"Set command failed: {e.stderr}")
return False return False
def _execute_get_range_command(self):
if not self.get_range_command:
return None
try:
cmd = self._format_command(self.get_range_command)
result = subprocess.run(
cmd,
check=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True,
shell=True
)
return ast.literal_eval(self._process_output(result.stdout))
except subprocess.CalledProcessError as e:
self.logger.error(f"Get range command failed: {e.stderr}")
return None
def _format_command(self, template, value=None): def _format_command(self, template, value=None):
variables = { variables = {
'value': value, 'value': value,
...@@ -203,4 +227,7 @@ class CustomSetting: ...@@ -203,4 +227,7 @@ class CustomSetting:
return self.get_value() return self.get_value()
def _set_backend_value(self, value): def _set_backend_value(self, value):
self.set_value(value) self.set_value(value)
\ No newline at end of file
def _get_backend_range(self):
return self.get_range()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment