AxWin2 - More fiddling
[tpg/acess2.git] / Usermode / Libraries / libaxwin2.so_src / main.c
index 1a12561..cc96839 100644 (file)
@@ -7,12 +7,80 @@
  * main.c - Library Initialisation
  */
 #include "common.h"
+#include <string.h>
 
 // === GLOBALS ===
  int   giAxWin_Mode = 0;
+ int   giAxWin_PID = 0;
+tAxWin_MessageCallback *gAxWin_DefaultCallback;
 
 // === CODE ===
 int SoMain()
 {
        return 0;
 }
+
+tAxWin_Message *AxWin_int_SendAndWait(int RetID, tAxWin_Message *Message)
+{
+       tAxWin_Message  *msg;
+       tAxWin_RetMsg   *rmsg;
+
+       AxWin_SendMessage(Message);
+       
+       for(;;)
+       {
+               msg = AxWin_WaitForMessage();
+               
+               rmsg = (void*)msg->Data;
+               if(msg->ID == MSG_SRSP_RETURN && rmsg->ReqID == Message->ID )
+                       break;
+               
+               AxWin_HandleMessage(msg);
+               free(msg);
+       }
+       
+       return msg;
+}
+
+int AxWin_Register(const char *Name, tAxWin_MessageCallback *DefaultCallback)
+{
+       tAxWin_Message  req;
+       tAxWin_Message  *msg;
+        int    ret;
+        int    len = strlen(Name);
+       
+       req.ID = MSG_SREQ_REGISTER;
+       req.Size = 1 + (len+1)/4;
+       strcpy(req.Data, Name);
+       
+       msg = AxWin_int_SendAndWait(MSG_SRSP_RETURN, &req);
+       ret = ((tAxWin_RetMsg*)msg->Data)->Bool;
+       free(msg);
+
+       gAxWin_DefaultCallback = DefaultCallback;
+       
+       return !!ret;
+}
+
+tAxWin_Element *AxWin_CreateTab(const char *Title)
+{
+       tAxWin_Message  req;
+       tAxWin_Message  *msg;
+       tAxWin_Element  *ret;
+        int    len = strlen(Title);
+       
+       req.ID = MSG_SREQ_ADDWIN;
+       req.Size = 1 + (len+1)/4;
+       strcpy(req.Data, Title);
+       
+       msg = AxWin_int_SendAndWait(MSG_SRSP_RETURN, &req);
+       ret = (tAxWin_Element*) ((tAxWin_RetMsg*)msg->Data)->Handle;
+       free(msg);
+       
+       return ret;
+}
+
+tAxWin_Element *AxWin_AddMenuItem(tAxWin_Element *Parent, const char *Label, int Message)
+{
+       return NULL;
+}

UCC git Repository :: git.ucc.asn.au