home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 13 / AACD13.ISO / AACD / Programming / MR_Classes / Dev / Source / palette / OpenEditor.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-07-24  |  3.7 KB  |  153 lines

  1. #include "ui.h"
  2. #include "edata.h"
  3. #include "apptags.h"
  4. #include "gids.h"
  5.  
  6. #define DEBUG
  7. #include <debug.h>
  8.  
  9. void InitGadgetValues(struct EData *edata);
  10.  
  11. ULONG i_OpenEditor(Class *C, Object *Obj, struct opSet *Set)
  12. {
  13.   struct EData *edata;
  14.   ULONG retval=0;
  15.  
  16.   edata=INST_DATA(C,Obj);
  17.  
  18. //  DKP("InitGV\n");
  19.   InitGadgetValues(edata);
  20. //  DKP("EndInitGV\n");
  21.  
  22.  
  23.  
  24.   if( edata->Window = (struct Window *) RA_OpenWindow(edata->Win_Object) )
  25.   {
  26.     ULONG wait, signal, result, done = FALSE;
  27.     WORD Code;
  28.                   
  29.     /* Obtain the window wait signal mask.     */
  30.     GetAttr( WINDOW_SigMask, edata->Win_Object, &signal );
  31.     /* Input Event Loop     */
  32.       while( !done )
  33.       {
  34.         wait = Wait(signal|SIGBREAKF_CTRL_C);
  35.       // DKP("wait=%d %x\n",wait,wait);
  36.           if (wait & SIGBREAKF_CTRL_C)
  37.       {
  38.         done = TRUE;
  39.       }
  40.           else
  41.       {
  42.                while ((result = RA_HandleInput(edata->Win_Object,&Code)) != WMHI_LASTMSG)
  43.               {
  44.           //DKP("result=%d %x\n",result,result);
  45.                   switch (result & WMHI_CLASSMASK)
  46.                   {
  47.                     case WMHI_CLOSEWINDOW:
  48.                         done = TRUE;
  49.                           break;
  50.                        case WMHI_GADGETUP:
  51.                         switch(result & WMHI_GADGETMASK)
  52.                           {
  53.                             case GID_OK:
  54.                   done=TRUE;
  55.                   retval=1;
  56.                                 break;
  57.                             case GID_CANCEL:
  58.                   done=TRUE;
  59.                   retval=0;
  60.                   break;
  61.                 case GID_RESET:
  62.                   SetGadgetAttrs(edata->G_Palette,edata->Window,0,
  63.                       TCPALETTE_NumColors,  edata->pr_Colors,
  64.                       TCPALETTE_RGBPalette, edata->pr_InitialPalette,
  65.                       TAG_DONE);    
  66.                 
  67.                                 break;
  68.                 case GID_UNDO:
  69.                   SetGadgetAttrs(edata->G_Palette,edata->Window,0,
  70.                       TCPALETTE_Undo,  1,
  71.                       TAG_DONE);    
  72.                 
  73.                                 break;
  74.                   
  75.                           }
  76.                       break;
  77.                   }
  78.               }
  79.       }
  80.     }
  81.     RA_CloseWindow(edata->Win_Object);
  82.   }
  83.   return(retval);  
  84. }
  85.  
  86.  
  87. ULONG __saveds __asm IDCMPDispatch( register __a0 struct IDCMP_Hook *hook,
  88.                                             register __a2 APTR       object,
  89.                                     register __a1 struct IntuiMessage *IMsg)
  90. {
  91.   struct TagItem *tag,*tstate;
  92.   struct EData *edata;
  93.   
  94.   edata=hook->EData;
  95.  
  96.   switch(IMsg->Class)
  97.   {
  98.     case IDCMP_IDCMPUPDATE:
  99. //      DKP("IDCMP_IDCMPUPDATE - \n");
  100.       ProcessTagList(IMsg->IAddress, tag, tstate)
  101.       {
  102.         ULONG t,d;
  103.   
  104.         t=tag->ti_Tag;
  105.         d=tag->ti_Data;
  106.         switch(t)
  107.         {
  108.           case GA_ID:
  109. //            DKP("  GA_ID: %ld\n",d);
  110.             break;
  111.             
  112.           default:
  113.           /*
  114.             if(~(t & REACTION_Dummy))
  115.             {
  116.               DKP("  0x%08lx,%ld\n",t,d);            
  117.             }*/
  118.         }
  119.       }
  120.       break;
  121.   }
  122.   return(1);
  123. }
  124.  
  125. void InitGadgetValues(struct EData *edata)
  126. {
  127.   SetAttrs(edata->Win_Object, 
  128. //    WA_PubScreenName,   edata->pr_PubScreenName,
  129. //    WA_CustomScreen,    edata->pr_Screen,
  130. //    WINDOW_RefWindow,   edata->pr_Window,
  131. //    WINDOW_Position,    WPOS_CENTERWINDOW,
  132.     WINDOW_TextAttr,    edata->pr_TextAttr,
  133.     WA_Title,           (edata->pr_TitleText ? edata->pr_TitleText : GetString(MSG_W_TITLE)),
  134.     WA_ScreenTitle,           (edata->pr_TitleText ? edata->pr_TitleText : GetString(MSG_W_TITLE)),
  135.     TAG_DONE);
  136.  
  137.   SetAttrs(edata->G_Palette,
  138.     TCPALETTE_NumColors,  edata->pr_Colors,
  139.     TCPALETTE_RGBPalette, edata->pr_InitialPalette,
  140.     TAG_DONE);
  141.     
  142.   SetAttrs(edata->G_OK,
  143.     GA_Text, (edata->pr_PositiveText ? edata->pr_PositiveText : "OK"),
  144.     TAG_DONE);
  145.     
  146.   SetAttrs(edata->G_Cancel,
  147.     GA_Text, (edata->pr_NegativeText ? edata->pr_NegativeText : "Cancel"),
  148.     TAG_DONE);
  149. }
  150.  
  151.  
  152.  
  153.