Add autosave feature with backup of unsaved new projects (#221)

* Add autosave feature with backup of unsaved new projects.

* Fix wrong indentation on line 205.

* Store backup for every opened file in user://. Some other improvements.

* Remove unnecessary variable.

* Update Translations.pot

Co-authored-by: Manolis Papadeas <35376950+OverloadedOrama@users.noreply.github.com>
This commit is contained in:
Martin Novák 2020-04-30 19:33:24 +02:00 committed by GitHub
parent c82c54d096
commit 82fe186b65
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 343 additions and 110 deletions

View file

@ -49,39 +49,30 @@ size_flags_horizontal = 3
[node name="VBoxContainer" type="VBoxContainer" parent="HSplitContainer/ScrollContainer"]
margin_right = 308.0
margin_bottom = 1186.0
margin_bottom = 1230.0
size_flags_horizontal = 3
[node name="General" type="VBoxContainer" parent="HSplitContainer/ScrollContainer/VBoxContainer"]
margin_right = 306.0
margin_bottom = 116.0
[node name="OpenLastProject" type="CheckBox" parent="HSplitContainer/ScrollContainer/VBoxContainer/General"]
margin_right = 306.0
margin_bottom = 24.0
hint_tooltip = "Opens last opened project on startup"
mouse_default_cursor_shape = 2
pressed = true
text = "Open last project on startup"
margin_bottom = 180.0
[node name="SmoothZoom" type="CheckBox" parent="HSplitContainer/ScrollContainer/VBoxContainer/General"]
margin_top = 28.0
margin_right = 306.0
margin_bottom = 52.0
margin_bottom = 24.0
hint_tooltip = "Adds a smoother transition when zooming in or out"
mouse_default_cursor_shape = 2
pressed = true
text = "Smooth Zoom"
[node name="HSeparator2" type="HSeparator" parent="HSplitContainer/ScrollContainer/VBoxContainer/General"]
margin_top = 56.0
margin_top = 28.0
margin_right = 306.0
margin_bottom = 60.0
margin_bottom = 32.0
[node name="GridContainer" type="GridContainer" parent="HSplitContainer/ScrollContainer/VBoxContainer/General"]
margin_top = 64.0
margin_top = 36.0
margin_right = 306.0
margin_bottom = 116.0
margin_bottom = 88.0
custom_constants/vseparation = 4
custom_constants/hseparation = 4
columns = 2
@ -125,6 +116,11 @@ size_flags_horizontal = 3
pressed = true
text = "Show right tool icon"
[node name="HSeparator3" type="HSeparator" parent="HSplitContainer/ScrollContainer/VBoxContainer/General"]
margin_top = 92.0
margin_right = 306.0
margin_bottom = 96.0
[node name="PressureSentivity" type="HBoxContainer" parent="HSplitContainer/ScrollContainer/VBoxContainer/General"]
visible = false
margin_top = 116.0
@ -145,10 +141,56 @@ text = "Affect Brush's Alpha"
items = [ "None", null, false, 0, null, "Affect Brush's Alpha", null, false, 1, null ]
selected = 1
[node name="Languages" type="VBoxContainer" parent="HSplitContainer/ScrollContainer/VBoxContainer"]
margin_top = 120.0
[node name="OpenLastProject" type="CheckBox" parent="HSplitContainer/ScrollContainer/VBoxContainer/General"]
margin_top = 100.0
margin_right = 306.0
margin_bottom = 512.0
margin_bottom = 124.0
hint_tooltip = "Opens last opened project on startup"
mouse_default_cursor_shape = 2
pressed = true
text = "Open last project on startup"
[node name="EnableAutosave" type="CheckBox" parent="HSplitContainer/ScrollContainer/VBoxContainer/General"]
margin_top = 128.0
margin_right = 306.0
margin_bottom = 152.0
text = "Enable autosave"
__meta__ = {
"_edit_use_anchors_": false
}
[node name="AutosaveInterval" type="HBoxContainer" parent="HSplitContainer/ScrollContainer/VBoxContainer/General"]
margin_top = 156.0
margin_right = 306.0
margin_bottom = 180.0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="AutosaveIntervalLabel" type="Label" parent="HSplitContainer/ScrollContainer/VBoxContainer/General/AutosaveInterval"]
margin_top = 5.0
margin_right = 115.0
margin_bottom = 19.0
text = "Autosave interval:"
[node name="AutosaveInterval" type="SpinBox" parent="HSplitContainer/ScrollContainer/VBoxContainer/General/AutosaveInterval"]
margin_left = 119.0
margin_right = 306.0
margin_bottom = 24.0
size_flags_horizontal = 3
min_value = 1.0
max_value = 30.0
value = 1.0
align = 2
suffix = "minute(s)"
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Languages" type="VBoxContainer" parent="HSplitContainer/ScrollContainer/VBoxContainer"]
margin_top = 184.0
margin_right = 306.0
margin_bottom = 576.0
[node name="System Language" type="CheckBox" parent="HSplitContainer/ScrollContainer/VBoxContainer/Languages"]
margin_right = 306.0
@ -252,9 +294,9 @@ custom_fonts/font = ExtResource( 3 )
text = "繁體中文 [zh_TW]"
[node name="Themes" type="VBoxContainer" parent="HSplitContainer/ScrollContainer/VBoxContainer"]
margin_top = 516.0
margin_top = 580.0
margin_right = 306.0
margin_bottom = 652.0
margin_bottom = 716.0
[node name="Dark Theme" type="CheckBox" parent="HSplitContainer/ScrollContainer/VBoxContainer/Themes"]
margin_right = 306.0
@ -291,9 +333,9 @@ mouse_default_cursor_shape = 2
text = "Light"
[node name="Canvas" type="VBoxContainer" parent="HSplitContainer/ScrollContainer/VBoxContainer"]
margin_top = 656.0
margin_top = 720.0
margin_right = 306.0
margin_bottom = 848.0
margin_bottom = 912.0
[node name="GuideOptions" type="GridContainer" parent="HSplitContainer/ScrollContainer/VBoxContainer/Canvas"]
margin_right = 306.0
@ -465,9 +507,9 @@ mouse_default_cursor_shape = 2
color = Color( 1, 1, 1, 1 )
[node name="Image" type="VBoxContainer" parent="HSplitContainer/ScrollContainer/VBoxContainer"]
margin_top = 852.0
margin_top = 916.0
margin_right = 306.0
margin_bottom = 928.0
margin_bottom = 992.0
[node name="ImageOptions" type="GridContainer" parent="HSplitContainer/ScrollContainer/VBoxContainer/Image"]
margin_right = 306.0
@ -538,9 +580,9 @@ mouse_default_cursor_shape = 2
color = Color( 0, 0, 0, 0 )
[node name="Shortcuts" type="VBoxContainer" parent="HSplitContainer/ScrollContainer/VBoxContainer"]
margin_top = 932.0
margin_top = 996.0
margin_right = 306.0
margin_bottom = 1186.0
margin_bottom = 1230.0
[node name="HBoxContainer" type="HBoxContainer" parent="HSplitContainer/ScrollContainer/VBoxContainer/Shortcuts"]
margin_right = 306.0
@ -571,7 +613,8 @@ margin_bottom = 28.0
[node name="Shortcuts" type="GridContainer" parent="HSplitContainer/ScrollContainer/VBoxContainer/Shortcuts"]
margin_top = 32.0
margin_right = 306.0
margin_bottom = 254.0
margin_bottom = 234.0
custom_constants/vseparation = 2
custom_constants/hseparation = 5
columns = 3
@ -598,9 +641,9 @@ text = "Right Tool:"
align = 1
[node name="Empty2" type="Control" parent="HSplitContainer/ScrollContainer/VBoxContainer/Shortcuts/Shortcuts"]
margin_top = 18.0
margin_top = 16.0
margin_right = 137.0
margin_bottom = 22.0
margin_bottom = 20.0
[node name="HSeparator" type="HSeparator" parent="HSplitContainer/ScrollContainer/VBoxContainer/Shortcuts/Shortcuts"]
visible = false
@ -610,174 +653,174 @@ margin_bottom = 22.0
[node name="HSeparator2" type="HSeparator" parent="HSplitContainer/ScrollContainer/VBoxContainer/Shortcuts/Shortcuts"]
margin_left = 142.0
margin_top = 18.0
margin_top = 16.0
margin_right = 221.0
margin_bottom = 22.0
margin_bottom = 20.0
[node name="HSeparator3" type="HSeparator" parent="HSplitContainer/ScrollContainer/VBoxContainer/Shortcuts/Shortcuts"]
margin_left = 226.0
margin_top = 18.0
margin_top = 16.0
margin_right = 305.0
margin_bottom = 22.0
margin_bottom = 20.0
[node name="RectSelectLabel" type="Label" parent="HSplitContainer/ScrollContainer/VBoxContainer/Shortcuts/Shortcuts"]
margin_top = 29.0
margin_top = 25.0
margin_right = 137.0
margin_bottom = 43.0
margin_bottom = 39.0
text = "Rectangular Selection"
[node name="left_rectangle_select_tool" type="Button" parent="HSplitContainer/ScrollContainer/VBoxContainer/Shortcuts/Shortcuts"]
margin_left = 142.0
margin_top = 26.0
margin_top = 22.0
margin_right = 221.0
margin_bottom = 46.0
margin_bottom = 42.0
size_flags_horizontal = 3
[node name="right_rectangle_select_tool" type="Button" parent="HSplitContainer/ScrollContainer/VBoxContainer/Shortcuts/Shortcuts"]
margin_left = 226.0
margin_top = 26.0
margin_top = 22.0
margin_right = 305.0
margin_bottom = 46.0
margin_bottom = 42.0
size_flags_horizontal = 3
[node name="ZoomLabel" type="Label" parent="HSplitContainer/ScrollContainer/VBoxContainer/Shortcuts/Shortcuts"]
margin_top = 53.0
margin_top = 47.0
margin_right = 137.0
margin_bottom = 67.0
margin_bottom = 61.0
text = "Zoom"
[node name="left_zoom_tool" type="Button" parent="HSplitContainer/ScrollContainer/VBoxContainer/Shortcuts/Shortcuts"]
margin_left = 142.0
margin_top = 50.0
margin_top = 44.0
margin_right = 221.0
margin_bottom = 70.0
margin_bottom = 64.0
size_flags_horizontal = 3
[node name="right_zoom_tool" type="Button" parent="HSplitContainer/ScrollContainer/VBoxContainer/Shortcuts/Shortcuts"]
margin_left = 226.0
margin_top = 50.0
margin_top = 44.0
margin_right = 305.0
margin_bottom = 70.0
margin_bottom = 64.0
size_flags_horizontal = 3
[node name="ColorPickerLabel" type="Label" parent="HSplitContainer/ScrollContainer/VBoxContainer/Shortcuts/Shortcuts"]
margin_top = 77.0
margin_top = 69.0
margin_right = 137.0
margin_bottom = 91.0
margin_bottom = 83.0
text = "Color Picker"
[node name="left_colorpicker_tool" type="Button" parent="HSplitContainer/ScrollContainer/VBoxContainer/Shortcuts/Shortcuts"]
margin_left = 142.0
margin_top = 74.0
margin_top = 66.0
margin_right = 221.0
margin_bottom = 94.0
margin_bottom = 86.0
[node name="right_colorpicker_tool" type="Button" parent="HSplitContainer/ScrollContainer/VBoxContainer/Shortcuts/Shortcuts"]
margin_left = 226.0
margin_top = 74.0
margin_top = 66.0
margin_right = 305.0
margin_bottom = 94.0
margin_bottom = 86.0
[node name="PencilLabel" type="Label" parent="HSplitContainer/ScrollContainer/VBoxContainer/Shortcuts/Shortcuts"]
margin_top = 101.0
margin_top = 91.0
margin_right = 137.0
margin_bottom = 115.0
margin_bottom = 105.0
text = "Pencil"
[node name="left_pencil_tool" type="Button" parent="HSplitContainer/ScrollContainer/VBoxContainer/Shortcuts/Shortcuts"]
margin_left = 142.0
margin_top = 98.0
margin_top = 88.0
margin_right = 221.0
margin_bottom = 118.0
margin_bottom = 108.0
[node name="right_pencil_tool" type="Button" parent="HSplitContainer/ScrollContainer/VBoxContainer/Shortcuts/Shortcuts"]
margin_left = 226.0
margin_top = 98.0
margin_top = 88.0
margin_right = 305.0
margin_bottom = 118.0
margin_bottom = 108.0
[node name="EraserLabel" type="Label" parent="HSplitContainer/ScrollContainer/VBoxContainer/Shortcuts/Shortcuts"]
margin_top = 125.0
margin_top = 113.0
margin_right = 137.0
margin_bottom = 139.0
margin_bottom = 127.0
text = "Eraser"
[node name="left_eraser_tool" type="Button" parent="HSplitContainer/ScrollContainer/VBoxContainer/Shortcuts/Shortcuts"]
margin_left = 142.0
margin_top = 122.0
margin_top = 110.0
margin_right = 221.0
margin_bottom = 142.0
margin_bottom = 130.0
[node name="right_eraser_tool" type="Button" parent="HSplitContainer/ScrollContainer/VBoxContainer/Shortcuts/Shortcuts"]
margin_left = 226.0
margin_top = 122.0
margin_top = 110.0
margin_right = 305.0
margin_bottom = 142.0
margin_bottom = 130.0
[node name="BucketLabel" type="Label" parent="HSplitContainer/ScrollContainer/VBoxContainer/Shortcuts/Shortcuts"]
margin_top = 149.0
margin_top = 135.0
margin_right = 137.0
margin_bottom = 163.0
margin_bottom = 149.0
text = "Bucket"
[node name="left_fill_tool" type="Button" parent="HSplitContainer/ScrollContainer/VBoxContainer/Shortcuts/Shortcuts"]
margin_left = 142.0
margin_top = 146.0
margin_top = 132.0
margin_right = 221.0
margin_bottom = 166.0
margin_bottom = 152.0
[node name="right_fill_tool" type="Button" parent="HSplitContainer/ScrollContainer/VBoxContainer/Shortcuts/Shortcuts"]
margin_left = 226.0
margin_top = 146.0
margin_top = 132.0
margin_right = 305.0
margin_bottom = 166.0
margin_bottom = 152.0
[node name="LightenDarkenLabel" type="Label" parent="HSplitContainer/ScrollContainer/VBoxContainer/Shortcuts/Shortcuts"]
margin_top = 173.0
margin_top = 157.0
margin_right = 137.0
margin_bottom = 187.0
margin_bottom = 171.0
text = "Lighten/Darken"
[node name="left_lightdark_tool" type="Button" parent="HSplitContainer/ScrollContainer/VBoxContainer/Shortcuts/Shortcuts"]
margin_left = 142.0
margin_top = 170.0
margin_top = 154.0
margin_right = 221.0
margin_bottom = 190.0
margin_bottom = 174.0
[node name="right_lightdark_tool" type="Button" parent="HSplitContainer/ScrollContainer/VBoxContainer/Shortcuts/Shortcuts"]
margin_left = 226.0
margin_top = 170.0
margin_top = 154.0
margin_right = 305.0
margin_bottom = 190.0
margin_bottom = 174.0
[node name="HSeparator4" type="HSeparator" parent="HSplitContainer/ScrollContainer/VBoxContainer/Shortcuts/Shortcuts"]
margin_top = 194.0
margin_top = 176.0
margin_right = 137.0
margin_bottom = 198.0
margin_bottom = 180.0
[node name="HSeparator5" type="HSeparator" parent="HSplitContainer/ScrollContainer/VBoxContainer/Shortcuts/Shortcuts"]
margin_left = 142.0
margin_top = 194.0
margin_top = 176.0
margin_right = 221.0
margin_bottom = 198.0
margin_bottom = 180.0
[node name="HSeparator6" type="HSeparator" parent="HSplitContainer/ScrollContainer/VBoxContainer/Shortcuts/Shortcuts"]
margin_left = 226.0
margin_top = 194.0
margin_top = 176.0
margin_right = 305.0
margin_bottom = 198.0
margin_bottom = 180.0
[node name="Switch Colors" type="Label" parent="HSplitContainer/ScrollContainer/VBoxContainer/Shortcuts/Shortcuts"]
margin_top = 205.0
margin_top = 185.0
margin_right = 137.0
margin_bottom = 219.0
margin_bottom = 199.0
text = "Switch Colors"
[node name="switch_colors" type="Button" parent="HSplitContainer/ScrollContainer/VBoxContainer/Shortcuts/Shortcuts"]
margin_left = 142.0
margin_top = 202.0
margin_top = 182.0
margin_right = 221.0
margin_bottom = 222.0
margin_bottom = 202.0
[node name="Popups" type="Node" parent="."]
@ -805,13 +848,15 @@ __meta__ = {
[connection signal="about_to_show" from="." to="." method="_on_PreferencesDialog_about_to_show"]
[connection signal="popup_hide" from="." to="." method="_on_PreferencesDialog_popup_hide"]
[connection signal="item_selected" from="HSplitContainer/Tree" to="." method="_on_Tree_item_selected"]
[connection signal="pressed" from="HSplitContainer/ScrollContainer/VBoxContainer/General/OpenLastProject" to="." method="_on_OpenLastProject_pressed"]
[connection signal="pressed" from="HSplitContainer/ScrollContainer/VBoxContainer/General/SmoothZoom" to="." method="_on_SmoothZoom_pressed"]
[connection signal="toggled" from="HSplitContainer/ScrollContainer/VBoxContainer/General/GridContainer/LeftIndicatorCheckbox" to="." method="_on_LeftIndicatorCheckbox_toggled"]
[connection signal="toggled" from="HSplitContainer/ScrollContainer/VBoxContainer/General/GridContainer/RightIndicatorCheckbox" to="." method="_on_RightIndicatorCheckbox_toggled"]
[connection signal="toggled" from="HSplitContainer/ScrollContainer/VBoxContainer/General/GridContainer/LeftToolIconCheckbox" to="." method="_on_LeftToolIconCheckbox_toggled"]
[connection signal="toggled" from="HSplitContainer/ScrollContainer/VBoxContainer/General/GridContainer/RightToolIconCheckbox" to="." method="_on_RightToolIconCheckbox_toggled"]
[connection signal="item_selected" from="HSplitContainer/ScrollContainer/VBoxContainer/General/PressureSentivity/PressureSensitivityOptionButton" to="." method="_on_PressureSensitivityOptionButton_item_selected"]
[connection signal="pressed" from="HSplitContainer/ScrollContainer/VBoxContainer/General/OpenLastProject" to="." method="_on_OpenLastProject_pressed"]
[connection signal="toggled" from="HSplitContainer/ScrollContainer/VBoxContainer/General/EnableAutosave" to="." method="_on_EnableAutosave_toggled"]
[connection signal="value_changed" from="HSplitContainer/ScrollContainer/VBoxContainer/General/AutosaveInterval/AutosaveInterval" to="." method="_on_AutosaveInterval_value_changed"]
[connection signal="color_changed" from="HSplitContainer/ScrollContainer/VBoxContainer/Canvas/GuideOptions/GuideColor" to="." method="_on_GuideColor_color_changed"]
[connection signal="value_changed" from="HSplitContainer/ScrollContainer/VBoxContainer/Canvas/GridOptions/GridWidthValue" to="." method="_on_GridWidthValue_value_changed"]
[connection signal="value_changed" from="HSplitContainer/ScrollContainer/VBoxContainer/Canvas/GridOptions/GridHeightValue" to="." method="_on_GridHeightValue_value_changed"]