#ifndef APP_BROWSER_MAIN_HPP #define APP_BROWSER_MAIN_HPP #include #include #include #include #include #include #include namespace app::browser { namespace main { class Tab; } class Main : public Gtk::Box { public: /* * Tab class database * * Allowed parental access to enums and relationship methods */ struct Database { // app_browser_main__* struct Session { enum { ID, APP_BROWSER__SESSION__ID, TIME }; // table fields index static int init( sqlite3 * database ); // return sqlite3_exec status code static int clean( sqlite3 * database, const sqlite3_int64 & APP_BROWSER__SESSION__ID ); // return sqlite3_finalize status code static sqlite3_int64 add( sqlite3 * database, const sqlite3_int64 & APP_BROWSER__SESSION__ID ); // return sqlite3_last_insert_rowid }; }; /* * Internal members */ private: // Database sqlite3 * database; // Components main::Tab * mainTab; // Defaults static const bool HOMOGENEOUS = true; /* * Main class API */ public: Main( sqlite3 * database, const Glib::RefPtr & ACTION__CLOSE, const Glib::RefPtr & ACTION__CLOSE_ALL, const Glib::RefPtr & ACTION__HISTORY_BACK, const Glib::RefPtr & ACTION__HISTORY_FORWARD, const Glib::RefPtr & ACTION__RELOAD, const Glib::RefPtr & ACTION__UPDATE ); // Actions void tab_append(); void tab_pin(); void tab_close_all(); void tab_close_left(); void tab_close_right(); void tab_close(); void tab_page_navigation_reload(); void tab_page_navigation_history_back(); void tab_page_navigation_history_forward(); int session_restore( const sqlite3_int64 & APP_BROWSER__SESSION__ID ); // return sqlite3_finalize status code void session_save( const sqlite3_int64 & APP_BROWSER__SESSION__ID ); void update(); // Getters Glib::ustring get_tab_page_title(); Glib::ustring get_tab_page_description(); }; } #endif // APP_BROWSER_MAIN_HPP