#ifndef _AXWIN3_AXWIN_H_
#define _AXWIN3_AXWIN_H_
+#include <stddef.h> // size_t
+#include <unistd.h>
+
// === CONSTANTS ===
// === TYPES ===
typedef unsigned int tAxWin3_Colour; // TODO: Actual 32-bit
typedef void (*tAxWin3_MessageCallback)(int SourceTID, int Length);
+typedef void (*tAxWin3_HotkeyCallback)(void);
typedef int (*tAxWin3_WindowMessageHandler)(tHWND Window, int Message, int Length, void *Data);
// --- Connection management
extern void AxWin3_Connect(const char *ServerDesc);
extern tAxWin3_MessageCallback AxWin3_SetMessageCallback(tAxWin3_MessageCallback Callback);
-extern void AxWin3_MainLoop(void);
+extern int AxWin3_MainLoop(void);
+extern void AxWin3_StopMainLoop(int Reason);
+extern void AxWin3_MessageSelect(int nFD, fd_set *FDs);
// --- Non-Window based functions
extern int AxWin3_GetDisplayCount(void);
* \param Window Handle to a window to destroy
*/
extern void AxWin3_DestroyWindow(tHWND Window);
+extern int AxWin3_RegisterAction(tHWND Window, const char *Action, tAxWin3_HotkeyCallback cb);
// --- Core window management functions
extern void AxWin3_SendMessage(tHWND Window, tHWND Dest, int Message, int Length, void *Data);
+extern void *AxWin3_WaitMessage(tHWND Window, int MessageID, size_t *Length);
extern void AxWin3_SetWindowTitle(tHWND Window, const char *Title);
extern void AxWin3_FocusWindow(tHWND Window);
extern void AxWin3_ShowWindow(tHWND Window, int bShow);