AxWin2 - More fiddling
[tpg/acess2.git] / Usermode / Libraries / libaxwin2.so_src / main.c
index 1dfcf9b..cc96839 100644 (file)
@@ -12,6 +12,7 @@
 // === GLOBALS ===
  int   giAxWin_Mode = 0;
  int   giAxWin_PID = 0;
+tAxWin_MessageCallback *gAxWin_DefaultCallback;
 
 // === CODE ===
 int SoMain()
@@ -19,62 +20,67 @@ int SoMain()
        return 0;
 }
 
-int AxWin_Register(const char *Name)
+tAxWin_Message *AxWin_int_SendAndWait(int RetID, tAxWin_Message *Message)
 {
-       tAxWin_Message  req;
        tAxWin_Message  *msg;
-       tAxWin_RetMsg   *ret;
-        int    len = strlen(Name);
-       
-       req.ID = MSG_SREQ_REGISTER;
-       req.Size = 1 + (len+1)/4;
-       strcpy(req.Data, Name);
-       
-       AxWin_SendMessage(&req);
+       tAxWin_RetMsg   *rmsg;
+
+       AxWin_SendMessage(Message);
        
        for(;;)
        {
                msg = AxWin_WaitForMessage();
                
-               if(msg->ID == MSG_SREQ_ADDTAB)
-               {
-                       ret = (void*) &msg->Data[0];
-                       if( ret->ReqID == MSG_SREQ_REGISTER )
-                               break;
-               }
+               rmsg = (void*)msg->Data;
+               if(msg->ID == MSG_SRSP_RETURN && rmsg->ReqID == Message->ID )
+                       break;
                
                AxWin_HandleMessage(msg);
                free(msg);
        }
        
-       return !!ret->Bool;
+       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_Handle AxWin_AddTab(const char *Title)
+tAxWin_Element *AxWin_CreateTab(const char *Title)
 {
        tAxWin_Message  req;
        tAxWin_Message  *msg;
-       tAxWin_RetMsg   *ret;
+       tAxWin_Element  *ret;
         int    len = strlen(Title);
        
-       req.ID = MSG_SREQ_ADDTAB;
+       req.ID = MSG_SREQ_ADDWIN;
        req.Size = 1 + (len+1)/4;
        strcpy(req.Data, Title);
        
-       for(;;)
-       {
-               msg = AxWin_WaitForMessage();
-               
-               if(msg->ID == MSG_SRSP_RETURN)
-               {
-                       ret = (void*) &msg->Data[0];
-                       if( ret->ReqID == MSG_SREQ_ADDTAB )
-                               break;
-               }
-               
-               AxWin_HandleMessage(msg);
-               free(msg);
-       }
+       msg = AxWin_int_SendAndWait(MSG_SRSP_RETURN, &req);
+       ret = (tAxWin_Element*) ((tAxWin_RetMsg*)msg->Data)->Handle;
+       free(msg);
        
-       return (tAxWin_Handle) ret->Handle;
+       return ret;
+}
+
+tAxWin_Element *AxWin_AddMenuItem(tAxWin_Element *Parent, const char *Label, int Message)
+{
+       return NULL;
 }

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