Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
4 changes: 4 additions & 0 deletions src/robotide/preferences/saving.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,10 @@ def _create_editors(settings):
IntegerChoiceEditor(settings, 'txt number of spaces', _('Separating spaces'),
[str(i) for i in range(2, 11)],
_('Number of spaces between cells when saving in txt format')
),
IntegerChoiceEditor(settings, 'auto save interval', _('Auto save interval (minutes)'),
['0', '1', '2', '3', '5', '10', '15', '20', '30'],
_('Automatically save all files after specified minutes (0 = disabled)')
)
]

Expand Down
4 changes: 2 additions & 2 deletions src/robotide/preferences/settings.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ reformat = False
doc language = None
# the style of the tabs in notebook pages, Edit, Text, Run. Values from 0 to 5.
notebook theme = 0
# auto save interval: Automatically save all files after specified minutes (0 = disabled)
auto save interval = 0

[General]
font size = 11
Expand Down Expand Up @@ -71,8 +73,6 @@ tc_kw_name = '#1A5FB4'
variable = '#008080'
background = '#F6F5F4'
enable auto suggestions = True
enable visible spaces = True
enable visible newlines = True

[Grid]
font size = 10
Expand Down
32 changes: 30 additions & 2 deletions src/robotide/ui/mainframe.py
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,9 @@ def __init__(self, application, controller):
self.color_foreground = self.general_settings.get('foreground', '#5E5C64') if self.general_settings else '#5E5C64'
self.font_face = self.general_settings.get('font face', '') if self.general_settings else ''
self.font_size = self.general_settings.get('font size', 11) if self.general_settings else 11
self.ui_language = self.general_settings.get('ui language', 'English') if self.general_settings else 'English'
self.ui_language = self.general_settings.get('ui language', 'English') if self.general_settings else 'English'
self._auto_save_interval = application.settings.get('auto save interval', 0)
self._auto_save_timer = None
self.main_menu = None
self._init_ui()
self.SetIcon(wx.Icon(self._image_provider.RIDE_ICON))
Expand All @@ -187,6 +189,7 @@ def __init__(self, application, controller):
self.Bind(aui.EVT_AUI_PANE_DOCKING, self.OnFloatDock)
self.Bind(aui.EVT_AUI_PANE_DOCKED, self.OnFloatDock)
self._subscribe_messages()
self._start_auto_save_timer()
wx.CallAfter(self.actions.register_tools) # DEBUG
# DEBUG wx.CallAfter(self.OnSettingsChanged, self.general_settings)

Expand All @@ -197,7 +200,8 @@ def _subscribe_messages(self):
(self._set_label, RideTreeSelection),
(self._show_validation_error, RideInputValidationError),
(self._show_modification_prevented_error, RideModificationPrevented),
(self.on_ui_language_changed, RideSettingsChanged)
(self.on_ui_language_changed, RideSettingsChanged),
(self._on_auto_save_settings_changed, RideSettingsChanged)
]:
PUBLISHER.subscribe(listener, topic)

Expand Down Expand Up @@ -364,6 +368,30 @@ def get_selected_datafile(self):
def get_selected_datafile_controller(self):
return self.tree.get_selected_datafile_controller()

def _start_auto_save_timer(self):
"""Start the auto-save timer if interval is set."""
if self._auto_save_timer:
self._auto_save_timer.Stop()
self._auto_save_timer = None
if self._auto_save_interval > 0:
self._auto_save_timer = wx.Timer(self)
self.Bind(wx.EVT_TIMER, self._on_auto_save, self._auto_save_timer)
self._auto_save_timer.Start(self._auto_save_interval * 60 * 1000) # minutes to milliseconds

def _on_auto_save(self, event):
"""Auto-save all files when timer fires."""
_ = event
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To avoid breaking translation function, when we use it, we should use:
__ = event

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please do a change and new commit. It must be double underscore to not change the original function.

__ = event  # Not _ = event 

if self.controller and self.controller.is_dirty():
RideBeforeSaving().publish()
self.save_all()
self.SetStatusText(_('Auto-saved all files'))
Comment thread
chelslava marked this conversation as resolved.

def _on_auto_save_settings_changed(self, message):
"""Update auto-save timer when settings change."""
if message.keys and 'auto save interval' in message.keys:
self._auto_save_interval = self._application.settings.get('auto save interval', 0)
self._start_auto_save_timer()

def on_close(self, event):
from ..preferences import RideSettings
if self._allowed_to_exit():
Expand Down
Loading