fix: backup progress window + real-time rsync output

- Replace small popup with big backup progress window (750x500)
- Shows rsync command in header, real-time output in monospace textview
- Progress bar with percentage, Cancel/Close button
- Output with color-coded tags (error=red, success=green, cmd=gray italic)
- Auto-scrolls to bottom during backup
- Fixed live log not updating (stdbuf -oL for unbuffered rsync output)
- Fixed double closing brace compilation error
- Downloaded proper backup icon
This commit is contained in:
x3
2026-09-07 17:37:59 +00:00
parent e2b4bb1413
commit 5422ce17ba
5 changed files with 2900 additions and 60 deletions
+12 -15
View File
@@ -28,22 +28,16 @@ private:
void build_ui();
void build_menu();
void build_toolbar();
void build_sidebar();
void build_file_browser();
void build_statusbar();
void refresh_snapshot_list();
void load_selected_snapshot();
void browse_path(const std::string& snapshot, const std::string& path);
void navigate_up();
void on_backup_clicked();
void on_restore_clicked();
void on_delete_snapshot_clicked();
void on_new_backup_clicked();
void show_sudo_dialog(std::function<void(const std::string&)> callback);
void show_progress_dialog(const std::string& title);
void open_backup_window(const std::string& description = "");
void close_backup_window();
void append_backup_line(const std::string& line, const char* tag = nullptr);
void install_cronjob();
void remove_cronjob();
@@ -80,22 +74,25 @@ private:
GtkWidget* file_tree_ = nullptr;
GtkWidget* path_entry_ = nullptr;
GtkWidget* statusbar_ = nullptr;
GtkWidget* progress_bar_ = nullptr;
GtkWidget* progress_label_ = nullptr;
GtkWidget* progress_window_ = nullptr;
GtkWidget* nav_label_ = nullptr;
GtkListStore* file_store_ = nullptr;
GtkWidget* toolbar_ = nullptr;
GtkWidget* log_window_ = nullptr;
GtkWidget* log_textview_ = nullptr;
guint log_timer_ = 0;
GtkWidget* live_log_textview_ = nullptr;
GtkWidget* live_log_label_ = nullptr;
GtkWidget* backlog_textview_ = nullptr;
GtkWidget* backlog_scrolled_ = nullptr;
/* Backup progress window */
GtkWidget* backup_win_ = nullptr;
GtkWidget* backup_cmd_label_ = nullptr;
GtkWidget* backup_output_view_ = nullptr;
GtkWidget* backup_progress_ = nullptr;
GtkWidget* backup_status_label_ = nullptr;
GtkWidget* backup_cancel_btn_ = nullptr;
GtkWidget* backup_close_btn_ = nullptr;
std::string log_path_;
std::string current_snapshot_;