fix ctrl+s missing in config pane

This commit is contained in:
2026-07-12 19:13:00 +02:00
parent e4cdea3b07
commit 7dc3f6560e
2 changed files with 21 additions and 2 deletions
+21 -1
View File
@@ -239,7 +239,6 @@ class DamarisGUI:
"on_display_y_scaling_combobox_changed": self.monitor.display_scaling_changed,
"on_display_save_data_as_text_button_clicked": self.monitor.save_display_data_as_text,
"on_display_copy_data_to_clipboard_button_clicked": self.monitor.copy_display_data_to_clipboard,
"on_data_handling_textview_event": self.sw.textviews_modified,
"on_experiment_script_textview_event": self.sw.textviews_modified,
"on_main_notebook_switch_page": self.nopevent,
"main_window_close": self.nopevent
@@ -2256,6 +2255,13 @@ class ConfigTab:
self.config_data_pool_comprate.set_tooltip_text("Use 1 for best compression, 9 for best speed; 3 is very usable")
self.config_info_textview = self.xml_gui.get_object( "info_textview" )
self.config_script_font_button = self.xml_gui.get_object( "script_fontbutton" )
# Connect keyboard event handlers for Ctrl+S support
self.config_info_textview.connect("key-press-event", self.config_keypress)
self.config_backend_executable_entry.connect("key-press-event", self.config_keypress)
self.config_spool_dir_entry.connect("key-press-event", self.config_keypress)
self.config_data_pool_name_entry.connect("key-press-event", self.config_keypress)
self.config_data_pool_write_interval_entry.connect("key-press-event", self.config_keypress)
# ADC bit depth setting
self.config_adc_bit_depth_hbox = gtk.HBox(homogeneous=False, spacing=6)
@@ -2264,6 +2270,7 @@ class ConfigTab:
self.config_adc_bit_depth_spinbutton.set_value(ADC_Result.default_bit_depth)
self.config_adc_bit_depth_spinbutton.set_tooltip_text("Set the default bit depth for clipping detection (e.g., 14 for 14-bit ADCs).")
self.config_adc_bit_depth_spinbutton.connect("value-changed", self.on_adc_bit_depth_changed)
self.config_adc_bit_depth_spinbutton.connect("key-press-event", self.config_keypress)
self.config_adc_bit_depth_hbox.pack_start(self.config_adc_bit_depth_label, False, False, 0)
self.config_adc_bit_depth_hbox.pack_start(self.config_adc_bit_depth_spinbutton, False, False, 0)
backend_vbox = self.xml_gui.get_object("vbox4")
@@ -2297,6 +2304,7 @@ class ConfigTab:
self.config_temp_device_entry = gtk.Entry()
self.config_temp_device_entry.set_tooltip_text("Serial port device (e.g., /dev/serial/by-id/...)")
self.config_temp_device_entry.set_width_chars(30)
self.config_temp_device_entry.connect("key-press-event", self.config_keypress)
self.config_temp_device_button = gtk.Button(label="...")
self.config_temp_device_button.set_tooltip_text("Browse for temperature controller device")
self.config_temp_device_button.connect("clicked", self.on_temp_device_browse_clicked)
@@ -2311,6 +2319,7 @@ class ConfigTab:
self.config_temp_interval_spinbutton = gtk.SpinButton.new_with_range(0.1, 60, 0.1)
self.config_temp_interval_spinbutton.set_value(2.0) # Default to 2 seconds
self.config_temp_interval_spinbutton.set_tooltip_text("Time between temperature readings in seconds")
self.config_temp_interval_spinbutton.connect("key-press-event", self.config_keypress)
self.config_temp_interval_hbox = gtk.HBox(homogeneous=False, spacing=6)
self.config_temp_interval_hbox.pack_start(self.config_temp_interval_label, False, False, 0)
@@ -2634,6 +2643,17 @@ pygobject version %(pygobject)s
def save_config_handler( self, widget ):
self.save_config( )
def config_keypress( self, widget, event ):
"""
Handle keyboard shortcuts in configuration window
"""
if event.state & gdk.ModifierType.CONTROL_MASK != 0:
if event.keyval == gdk.keyval_from_name( "s" ):
# Save configuration with Ctrl+S
self.save_config( )
return True
return False
def set_script_font_handler( self, widget ):
"""
handles changes in font name
-1
View File
@@ -924,7 +924,6 @@ Public License instead of this License.
<object class="GtkSourceView" id="data_handling_textview">
<property name="visible">True</property>
<property name="can-focus">True</property>
<signal name="event" handler="on_data_handling_textview_event" swapped="no"/>
</object>
</child>
</object>