// ========================================================= //
//                                                           //
//   File      : app.hxx                                     //
//   Purpose   : arb application support                     //
//                                                           //
//   Coded by Ralf Westram (coder@reallysoft.de) in Dec 25   //
//   http://www.arb-home.de/                                 //
//                                                           //
// ========================================================= //

#ifndef APP_HXX
#define APP_HXX

#ifndef CB_H
#include <cb.h>
#endif
#ifndef ARBDB_BASE_H
#include <arbdb_base.h>
#endif
#ifndef AW_BASE_HXX
#include <aw_base.hxx>
#endif

// (function prefix 'AWT_' is a leftover from former library 'AWT')

#if defined(DEBUG)
// database browser:
void AWT_create_db_browser_awars(AW_root *aw_root, AW_default aw_def);
void AWT_announce_db_to_browser(GBDATA *gb_main, const char *description);

void AWT_create_debug_menu(AW_window *awmm);
void AWT_check_action_ids(AW_root *aw_root, const char *suffix);
#endif // DEBUG

class UserActionTracker;
AW_root *AWT_create_root(const char *properties, const char *program, UserActionTracker *user_tracker);

void AWT_install_cb_guards();
void AWT_install_postcb_cb(AW_postcb_cb postcb_cb);

void AWT_trigger_remote_action(UNFIXED, GBDATA *gb_main, const char *remote_action_spec);

// ----------------------------------------

DECLARE_CBTYPE_FFV_AND_BUILDERS(ArbDisconnectCallback, void, AW_root*, GBDATA*); // generates makeArbDisconnectCallback
void ARB_atdisconnect_callback(const ArbDisconnectCallback& cb);

void ARB_disconnect_from_db(AW_root *aw_root, GBDATA*& gb_main_ref);

#else
#error app.hxx included twice
#endif // APP_H
