home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 13 / AACD13.ISO / AACD / Programming / MR_Classes / Dev / Source / palette / WindowObject.c < prev   
Encoding:
C/C++ Source or Header  |  2000-08-04  |  4.8 KB  |  148 lines

  1. #include "ui.h"
  2. #include "newgads.h"
  3. #include "edata.h"
  4. #include "apptags.h"
  5.  
  6. #include <tagitemmacros.h>
  7. #include <stdio.h>
  8. #include <classes/supermodel.h>
  9.  
  10. #define DEBUG
  11. #include <debug.h>
  12.  
  13.  
  14. Object *SetupModel(struct EData *edata);
  15. ULONG __saveds __asm IDCMPDispatch( register __a0 struct Hook *hook,
  16.                                             register __a2 APTR       object,
  17.                                     register __a1 struct IntuiMessage *IMsg);
  18.  
  19. BOOL i_NewWindowObject(Class *C, Object *Obj, struct opSet *Set)
  20. {
  21.   struct EData *edata;
  22.  
  23.   edata=INST_DATA(C,Obj);
  24. // Hook
  25. //DKP("i_NewWindowObject()\n");
  26.  
  27.   edata->IDCMPHook.H.h_Entry    =(HOOKFUNC)DispatcherStub;
  28.   edata->IDCMPHook.H.h_SubEntry =(HOOKFUNC)IDCMPDispatch;
  29.   edata->IDCMPHook.H.h_Data     =PaletteRequesterBase;
  30.   edata->IDCMPHook.EData        =edata;
  31.  
  32.   /* Create the window object. */
  33.   if(edata->Win_Object = (Object *)WindowObject,
  34.                 WA_SizeGadget,  TRUE,
  35.                 WA_DepthGadget, TRUE,
  36.                 WA_DragBar,     TRUE,
  37.                 WA_CloseGadget, TRUE,
  38.                 WA_Activate,    TRUE,
  39.                 WA_SmartRefresh,      TRUE,
  40. //          WA_IDCMP,       IDCMP_IDCMPUPDATE | IDCMP_CLOSEWINDOW,
  41. //        WA_PubScreenName,   "MPTestScreen",
  42.           WINDOW_IDCMPHook,       &edata->IDCMPHook,
  43.           WINDOW_IDCMPHookBits,   IDCMP_IDCMPUPDATE,          
  44.  
  45.                 WINDOW_ParentGroup,     NewGadgets(edata),
  46.             EndWindow)
  47.       /*  Object creation sucessful? */
  48.   {
  49.   //  DKP("Window object 0x%08lx\n",edata->Win_Object);
  50.     
  51.     if(edata->Model=SetupModel(edata))
  52.     {
  53.     //  DKP("Model object 0x%08lx\n",edata->Win_Object);
  54.  
  55.       return(1);
  56.     }
  57.     DisposeObject(edata->Win_Object);
  58.   }
  59.   return(0);
  60. }
  61.  
  62.  
  63. BOOL i_DisposeWindowObject(Class *C, Object *Obj, struct opSet *Set)
  64. {
  65.   struct EData *edata;
  66.  
  67.   edata=INST_DATA(C,Obj);
  68.  
  69.   DisposeObject(edata->Model);
  70.   DisposeObject(edata->Win_Object);
  71.  
  72.   return(1);
  73. }
  74.  
  75.  
  76. Object *SetupModel(struct EData *edata)
  77. {
  78.   /*
  79.   edata->GlueHook.h_Entry=A6Loader;
  80.   edata->GlueHook.h_SubEntry=GM_Set;
  81.   edata->GlueHook.h_Data=SuperModelBase;
  82.   */
  83.   
  84.   return(SM_NewSuperModel(
  85.             SMA_GlueFuncA6,         PaletteRequesterBase,
  86.             SMA_GlueFuncUserData,   edata,
  87.             SMA_GlueFunc,           GM_Set, // Glue function
  88.             
  89.             ICA_TARGET,     ICTARGET_IDCMP,
  90.  
  91.             SMA_AddMember,  SM_SICMAP( edata->G_Palette,
  92.                               TCPALETTE_SelectedRed,         APP_Red,
  93.                               TCPALETTE_SelectedGreen,       APP_Green,
  94.                               TCPALETTE_SelectedBlue,        APP_Blue,
  95.                               TCPALETTE_EditMode,            APP_EditMode,
  96.                               TCPALETTE_Undo,                APP_Undo,
  97.                               TCPALETTE_NoUndo,              APP_NoUndo,
  98.                               TAG_DONE),
  99.  
  100.             SMA_AddMember,  SM_SICMAP( edata->G_Red,
  101.                               SLIDER_Level,                   APP_Red,
  102.                               TAG_DONE),
  103.             SMA_AddMember,  SM_SICMAP( edata->G_Green,
  104.                               SLIDER_Level,                   APP_Green,
  105.                               TAG_DONE),
  106.             SMA_AddMember,  SM_SICMAP( edata->G_Blue,
  107.                               SLIDER_Level,                   APP_Blue,
  108.                               TAG_DONE),
  109.             SMA_AddMember,  SM_SICMAP( edata->G_RedText,
  110.                               BUTTON_Integer,                        APP_Red,
  111.                               TAG_DONE),
  112.             SMA_AddMember,  SM_SICMAP( edata->G_GreenText,
  113.                               BUTTON_Integer,                   APP_Green,
  114.                               TAG_DONE),
  115.             SMA_AddMember,  SM_SICMAP( edata->G_BlueText,
  116.                               BUTTON_Integer,                   APP_Blue,
  117.                               TAG_DONE),
  118.  
  119.             SMA_AddMember,  SM_SICMAP( edata->G_Copy,
  120.                               GA_Selected,                        APP_CopyMode,
  121.                               TAG_DONE),
  122.             SMA_AddMember,  SM_SICMAP( edata->G_Swap,
  123.                               GA_Selected,                        APP_SwapMode,
  124.                               TAG_DONE),
  125.             SMA_AddMember,  SM_SICMAP( edata->G_Spread,
  126.                               GA_Selected,                        APP_SpreadMode,
  127.                               TAG_DONE),
  128.  
  129. /*
  130.             SMA_AddMember,  SM_SICMAP( edata->G_Undo,
  131.                               GA_Disabled,                        APP_NoUndo,
  132.                               TAG_DONE),
  133. */
  134.             
  135.             TAG_DONE));
  136. }
  137.  
  138. /*
  139. ULONG __asm i_A6Loader(register __a0 struct Hook *Hook, register __a2 Object *Obj, register __a1 Msg M)
  140. {
  141.   ULONG __asm (*entry)(register __a0 Class *Cl, register __a2 Object *Obj, register __a1 Msg M, register __a6 APTR Lib);
  142.   
  143.   entry=Cl->cl_Dispatcher.h_SubEntry;
  144.   
  145.   return(entry(Cl,Obj,M,(struct Library *)Cl->cl_Dispatcher.h_Data));
  146. }
  147. */
  148.