diff --git a/src/damaris/gui/DamarisGUI.py b/src/damaris/gui/DamarisGUI.py index 9832cc1..82f486c 100644 --- a/src/damaris/gui/DamarisGUI.py +++ b/src/damaris/gui/DamarisGUI.py @@ -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 diff --git a/src/damaris/gui/damaris3.glade b/src/damaris/gui/damaris3.glade index 4483d3e..8ce87fe 100644 --- a/src/damaris/gui/damaris3.glade +++ b/src/damaris/gui/damaris3.glade @@ -924,7 +924,6 @@ Public License instead of this License. True True -