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 - 480 + 560 320 False True + center-on-parent True document-revert + center True @@ -136,51 +138,107 @@ Author: Dmitriy Yefremov + + + True + True + False + False + + + + True + False + gtk-dialog-info + + + + + 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 +