home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Source Code / PowerPlant / Slider / SliderTestApp.cp < prev    next >
Encoding:
Text File  |  1995-04-27  |  6.4 KB  |  244 lines  |  [TEXT/CWIE]

  1. // ===========================================================================
  2. //    SliderTestApp.cp                    ©1995 Scott Squires
  3. // ===========================================================================
  4. //     
  5.  
  6.  
  7. // Test application class to demo Slider.cp
  8.  
  9.  
  10. #include "SliderTestApp.h"
  11.  
  12. #include <LWindow.h>
  13. #include <PP_Messages.h>
  14. #include <PP_Resources.h>
  15. #include <URegistrar.h>
  16. #include <PPobClasses.h>
  17. #include <LGrowZone.h>
  18. #include <UMemoryMgr.h>
  19. #include <UPowerTools.h>
  20.  
  21. #include "Slider.h"
  22. #include "SliderTestView.h"
  23.  
  24.  
  25.  
  26.  
  27. #define SliderWindowID 2000
  28.  
  29. #define SliderTestViewID 2001
  30. #define StdHorzSliderID 2002
  31. #define GraySliderID 2003
  32. #define BulbSliderID 2004
  33. #define CloudSliderID 2005
  34. #define BearSliderID 2006
  35. #define StdVertSliderID 2007
  36.  
  37. // ===========================================================================
  38. //        • Main Program
  39. // ===========================================================================
  40.  
  41. void main(void)
  42. {
  43.     // Set Debugging options
  44. #ifdef Debug_Throw
  45.     gDebugThrow = debugAction_Alert;
  46. #endif
  47.  
  48. #ifdef Debug_Signal
  49.     gDebugSignal = debugAction_Alert;
  50. #endif
  51.  
  52.     InitializeHeap(4);
  53.     InitializeToolbox();
  54.     new LGrowZone(20000);
  55.  
  56.     SliderTestApp theApp;                         
  57.     theApp.Run();
  58. }
  59.  
  60.  
  61. // ---------------------------------------------------------------------------
  62. //        • SliderTestApp              
  63. // ---------------------------------------------------------------------------
  64. //    Constructor
  65.  
  66. SliderTestApp::SliderTestApp()
  67. {
  68.      // Minimal classes to keep application small
  69.  
  70.     URegistrar::RegisterClass(LPane::class_ID, LPane::CreatePaneStream);
  71.     URegistrar::RegisterClass(LView::class_ID, LView::CreateViewStream);
  72.     URegistrar::RegisterClass(LWindow::class_ID, LWindow::CreateWindowStream);
  73.  
  74.     URegistrar::RegisterClass(HorzSlider::class_ID, HorzSlider::CreateHorzSliderStream);
  75.     URegistrar::RegisterClass(VertSlider::class_ID, VertSlider::CreateVertSliderStream);
  76.     URegistrar::RegisterClass(SliderView::class_ID, SliderView::CreateSliderTestStream);
  77.  
  78.     MakeNewDocument();                            // create a window at startup
  79. }
  80.  
  81.  
  82. // ---------------------------------------------------------------------------
  83. //        • ~SliderTestApp             
  84. // ---------------------------------------------------------------------------
  85. //    Destructor
  86. //
  87.  
  88. SliderTestApp::~SliderTestApp()
  89. {
  90. }
  91.  
  92.  
  93. void SliderTestApp::MakeNewDocument(void)
  94. {
  95.     LWindow * theWindow;
  96.     // SliderWindowID is a PPob, ResIDT defined above
  97.     theWindow = LWindow::CreateWindow(SliderWindowID, this);
  98.     SliderView * theView = (SliderView *)theWindow->FindPaneByID(SliderTestViewID);
  99.  
  100.     // All of these sliders are PPobs in window
  101.     // each still needs to be assigned picture#s, Inited, and assigned message values
  102.     // Typical case would be to save Slider pointers in the view class
  103.     HorzSlider * StdHSlider = (HorzSlider *)theView->FindPaneByID(StdHorzSliderID);
  104.     if (StdHSlider) {
  105.         StdHSlider->SetPicts(200, 201, 202);
  106.         StdHSlider->SetMinMax(0, 100);
  107.         StdHSlider->SetValueMessage(StdHorzSliderID);
  108.  
  109.         if (StdHSlider->MakeSlider())
  110.              StdHSlider->AddListener(theView);
  111.          else
  112.             delete StdHSlider;                    // delete if couldn't be created
  113.      }
  114.      
  115.     HorzSlider * GraySlider = (HorzSlider *)theView->FindPaneByID(GraySliderID);
  116.     if (GraySlider) {
  117.         GraySlider->SetPicts(400, 401,402);
  118.         GraySlider->SetMinMax(0, 1000);
  119.         GraySlider->SetValueMessage(GraySliderID);
  120.         // GraySlider->SetSliderOnlyFlag(true);        // Only activate slider itself
  121.         if (GraySlider->MakeSlider()) {
  122.             GraySlider->OffsetSlider(0, 25);        // place slider within base pict
  123.             GraySlider->AddListener(theView);
  124.         } else
  125.             delete GraySlider;                    // delete if couldn't be created
  126.  
  127.     }
  128.     HorzSlider * BulbSlider = (HorzSlider *)theView->FindPaneByID(BulbSliderID);
  129.     if (BulbSlider) {
  130.         BulbSlider->SetPicts(500, 501, 502);
  131.         BulbSlider->SetMinMax(0, 100);
  132.         BulbSlider->SetCursorFlag(false);            // hide cursor when clicked
  133.         BulbSlider->SetValueMessage(BulbSliderID);
  134.  
  135.         if (BulbSlider->MakeSlider())
  136.             BulbSlider->AddListener(theView);
  137.         else
  138.             delete BulbSlider;                    // delete if couldn't be created
  139.      }
  140.      
  141.     HorzSlider * CloudSlider = (HorzSlider *)theView->FindPaneByID(CloudSliderID);
  142.     if (CloudSlider) {
  143.         CloudSlider->SetPicts(600, 601);
  144.         CloudSlider->SetMinMax(-100, 100);
  145.         CloudSlider->SetValueMessage(CloudSliderID);
  146.  
  147.         if (CloudSlider->MakeSlider())
  148.             CloudSlider->AddListener(theView);
  149.         else
  150.             delete CloudSlider;                    // delete if couldn't be created
  151.      }
  152.     
  153.     HorzSlider * BearSlider = (HorzSlider *)theView->FindPaneByID(BearSliderID);
  154.     if (BearSlider) {
  155.         BearSlider->SetPicts(700, 701, 702);
  156.         BearSlider->SetMinMax(100, 200);
  157.         BearSlider->SetCursorFlag(false);            // hide cursor when clicked
  158.         BearSlider->SetValueMessage(BearSliderID);
  159.  
  160.         if (BearSlider->MakeSlider())
  161.              BearSlider->AddListener(theView);
  162.          else
  163.             delete BearSlider;                    // delete if couldn't be created
  164.  
  165.     }
  166.  
  167.     VertSlider * StdVSlider = (VertSlider *)theView->FindPaneByID(StdVertSliderID);
  168.     if (StdVSlider) {
  169.         StdVSlider->SetPicts(300, 301);            // no selection slider pict
  170.          StdVSlider->SetMinMax(0, 65535);            // full color range
  171.         StdVSlider->SetValueMessage(StdVertSliderID);
  172.  
  173.         if (StdVSlider->MakeSlider())
  174.              StdVSlider->AddListener(theView);
  175.          else
  176.              delete StdVSlider;                    // delete if couldn't be created
  177.  
  178.     }
  179.     theWindow->Show();
  180.     // Preset some of sliders
  181.     if (GraySlider)        GraySlider->SetSliderValue(243);
  182.     if (BearSlider)         BearSlider->SetSliderValue(175);
  183.     if (StdVSlider)        StdVSlider->SetSliderValue(30000);
  184.  
  185.  
  186. }
  187.  
  188. // ---------------------------------------------------------------------------
  189. //        • ObeyCommand
  190. // ---------------------------------------------------------------------------
  191. //    Respond to commands
  192.  
  193. Boolean SliderTestApp::ObeyCommand(CommandT inCommand, void *ioParam)
  194. {
  195.     Boolean cmdHandled = true;
  196.  
  197.     switch (inCommand) {
  198.  
  199.     case cmd_New:
  200.           MakeNewDocument();
  201.          
  202.         break;
  203.  
  204.  
  205.     default:
  206.         cmdHandled = LApplication::ObeyCommand(inCommand, ioParam);
  207.         break;
  208.     }
  209.  
  210.     return cmdHandled;
  211. }
  212.  
  213. // ---------------------------------------------------------------------------
  214. //        • FindCommandStatus
  215. // ---------------------------------------------------------------------------
  216. //    This function enables menu commands.
  217. //
  218.  
  219. void
  220. SliderTestApp::FindCommandStatus(
  221.                                  CommandT inCommand,
  222.                                  Boolean&outEnabled,
  223.                                  Boolean&outUsesMark,
  224.                                  Char16&outMark,
  225.                                  Str255 outName)
  226. {
  227.  
  228.     switch (inCommand) {
  229.  
  230.     case cmd_New:
  231.         outEnabled = true;                        // enable the New command
  232.         outUsesMark = false;                    // but it doesn't have a checkmark etc.
  233.         break;
  234.  
  235.  
  236.  
  237.     default:
  238.         LApplication::FindCommandStatus(inCommand, outEnabled, outUsesMark, outMark, outName);
  239.         break;
  240.     }
  241. }
  242.  
  243.  
  244.