diff --git a/app/ui/backup.py b/app/ui/backup.py
index 8d27143c..09603d9d 100644
--- a/app/ui/backup.py
+++ b/app/ui/backup.py
@@ -1,12 +1,15 @@
import os
import shutil
import tempfile
+import time
+import zipfile
from datetime import datetime
from enum import Enum
from app.commons import run_idle
from app.properties import Profile
from app.ui.dialogs import show_dialog, DialogType
+from app.ui.main_helper import append_text_to_tview
from .uicommons import Gtk, Gdk, UI_RESOURCES_PATH
@@ -21,7 +24,9 @@ class BackupDialog:
"on_restore_all": self.on_restore_all,
"on_remove": self.on_remove,
"on_view_popup_menu": self.on_view_popup_menu,
- "on_info_bar_close": self.on_info_bar_close}
+ "on_info_button_toggled": self.on_info_button_toggled,
+ "on_info_bar_close": self.on_info_bar_close,
+ "on_cursor_changed": self.on_cursor_changed}
builder = Gtk.Builder()
builder.set_translation_domain("demon-editor")
@@ -36,6 +41,9 @@ class BackupDialog:
self._dialog_window.set_transient_for(transient)
self._model = builder.get_object("main_list_store")
self._main_view = builder.get_object("main_view")
+ self._text_view = builder.get_object("text_view")
+ self._text_view_scrolled_window = builder.get_object("text_view_scrolled_window")
+ self._info_check_button = builder.get_object("info_check_button")
self._info_bar = builder.get_object("info_bar")
self._message_label = builder.get_object("message_label")
self.init_data()
@@ -82,6 +90,12 @@ class BackupDialog:
if event.get_event_type() == Gdk.EventType.BUTTON_PRESS and event.button == Gdk.BUTTON_SECONDARY:
menu.popup(None, None, None, None, event.button, event.time)
+ def on_info_button_toggled(self, button):
+ active = button.get_active()
+ self._text_view_scrolled_window.set_visible(active)
+ if active:
+ self.on_cursor_changed(self._main_view)
+
@run_idle
def show_info_message(self, text, message_type):
self._info_bar.set_visible(True)
@@ -91,6 +105,23 @@ class BackupDialog:
def on_info_bar_close(self, bar=None, resp=None):
self._info_bar.set_visible(False)
+ def on_cursor_changed(self, view):
+ if not self._info_check_button.get_active():
+ return
+
+ model, paths = view.get_selection().get_selected_rows()
+ if paths:
+ try:
+ file_name = self._backup_path + model.get_value(model.get_iter(paths[0]), 0) + ".zip"
+ created = time.ctime(os.path.getctime(file_name))
+ self._text_view.get_buffer().set_text(
+ "Created: {}\n********** Files: **********\n".format(created))
+ with zipfile.ZipFile(file_name) as zip_file:
+ for name in zip_file.namelist():
+ append_text_to_tview(name + "\n", self._text_view)
+ except FileNotFoundError as e:
+ self.show_info_message(str(e), Gtk.MessageType.ERROR)
+
def restore(self, restore_type):
model, paths = self._main_view.get_selection().get_selected_rows()
if not paths:
diff --git a/app/ui/backup_dialog.glade b/app/ui/backup_dialog.glade
index 9c12f85c..94c95b86 100644
--- a/app/ui/backup_dialog.glade
+++ b/app/ui/backup_dialog.glade
@@ -42,12 +42,14 @@ Author: Dmitriy Yefremov
+
+
+
+ end
+ 1
+
+
-
+
True
False
vertical
-
- 480
+
True
True
- in
+ True
-
+
True
True
- main_list_store
- False
- 0
- True
-
-
-
- multiple
-
-
+ in
-
- Backup
- True
- 0.5
- True
- 0
-
-
- 10
+
+ True
+ True
+ True
+ main_list_store
+ False
+ 0
+ True
+ True
+
+
+
+
+ multiple
+
+
+
+
+ Backup
+ True
+ 0.5
+ True
+ 0
+
+
+ 10
+
+
+ 0
+
+
-
- 0
-
+
+ True
+ True
+
+
+
+
+ False
+ in
+
+
+ True
+ False
+ 5
+ False
+ 10
+ 10
+ 10
+ False
+ False
+
+
+
+
+ True
+ True
+