#pragma once #include #include class MainWindow : public Gtk::Window { public: MainWindow(); virtual ~MainWindow(); private: // Core Layout Gtk::HeaderBar m_HeaderBar; Gtk::Box m_MainLayout; Gtk::Notebook m_Notebook; Gtk::Label m_StatusLabel; // --- Backup Page Elements --- Gtk::Box m_VBoxBackup; Gtk::Label m_LabelBackupInstruction; Gtk::CheckButton m_CheckThemesBackup; Gtk::CheckButton m_CheckIconsBackup; Gtk::CheckButton m_CheckDconfBackup; Gtk::Button m_ButtonBackup; // --- Restore Page Elements --- Gtk::Box m_VBoxRestore; Gtk::Label m_LabelRestoreInstruction; Gtk::CheckButton m_CheckThemesRestore; Gtk::CheckButton m_CheckIconsRestore; Gtk::CheckButton m_CheckDconfRestore; Gtk::Button m_ButtonRestore; // --- Signal Handlers and Logic --- void on_button_backup_clicked(); void on_button_restore_clicked(); bool create_tar_archive(const std::string& source_dir, const std::string& out_filename); };