home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 Mobile / Chip_Mobile_2001.iso / palm / system / _palmemu / palmemu.exe / Scripting / Perl / FormSpy.pl < prev    next >
Text File  |  2000-01-27  |  3KB  |  98 lines

  1. ########################################################################
  2. #
  3. #    File:            FormSpy.pl
  4. #
  5. #    Purpose:        Examine the current active form.
  6. #
  7. #    Description:    This script gets the current active form, iterates
  8. #                    over its contents, and prints out information on
  9. #                    all of the form objects.  For each object, it prints
  10. #
  11. #                    * The object's index number (starting from zero)
  12. #                    * The object's type (frmTitleObj, etc.)
  13. #                    * Text associated with the object (only for title,
  14. #                      label, and control objects)
  15. #                    * The object's bounds
  16. #
  17. ########################################################################
  18.  
  19. use EmRPC;            # EmRPC::OpenConnection, CloseConnection
  20. use EmFunctions;
  21.  
  22. EmRPC::OpenConnection(6415, "localhost");
  23.  
  24.     #=====================================================================
  25.     # Get the current form and the number objects on that form.
  26.     #=====================================================================
  27.  
  28.     my ($form) = FrmGetActiveForm();
  29.     my ($num_objects) = FrmGetNumberOfObjects($form);
  30.  
  31.     #=====================================================================
  32.     # Iterate over all the objects on the form.
  33.     #=====================================================================
  34.  
  35.     for $ii (0..$num_objects - 1)
  36.     {
  37.         #=====================================================================
  38.         # Start generating the line to print.  Start with the object's index.
  39.         #=====================================================================
  40.  
  41.         my ($line) = "$ii. ";
  42.  
  43.         #=====================================================================
  44.         # Add the object's type (frmTitleObj, etc.) to the line.
  45.         #=====================================================================
  46.  
  47.         my ($object_type) = FrmGetObjectType($form, $ii);
  48.  
  49.         my ($type) = ("frmFieldObj", "frmControlObj", "frmListObj", "frmTableObj",
  50.                       "frmBitmapObj", "frmLineObj", "frmFrameObj", "frmRectangleObj",
  51.                       "frmLabelObj", "frmTitleObj", "frmPopupObj", "frmGraffitiStateObj",
  52.                       "frmGadgetObj", "frmScrollBarObj")[$object_type];
  53.  
  54.         $line .= " $type";
  55.  
  56.         #=====================================================================
  57.         # If the object is a frmControlObj, frmLabelObj, or frmTitleObj,
  58.         # get the text associated with the object and add it to our line.
  59.         #=====================================================================
  60.  
  61.         if ($object_type == frmControlObj)
  62.         {
  63.             my ($obj_ptr) = FrmGetObjectPtr ($form, $ii);
  64.             my ($address, $label) = CtlGetLabel($obj_ptr);
  65.             $line .= " \"$label\"";
  66.         }
  67.         elsif ($object_type == frmLabelObj)
  68.         {
  69.             my ($label_id) = FrmGetObjectId ($form, $ii);
  70.             my ($address, $label) = FrmGetLabel($form, $label_id);
  71.             $line .= " \"$label\"";
  72.         }
  73.         elsif ($object_type == frmTitleObj)
  74.         {
  75.             my ($address, $title) = FrmGetTitle($form,);
  76.             $line .= " \"$title\"";
  77.         }
  78.         else
  79.         {
  80.             $line .= " <no label>";
  81.         }
  82.  
  83.         #=====================================================================
  84.         # Add the object's bounds to the line.
  85.         #=====================================================================
  86.  
  87.         my (%bounds) = FrmGetObjectBounds($form, $ii);
  88.         $line .= " ($bounds{left}, $bounds{top}, $bounds{right}, $bounds{bottom})";
  89.  
  90.         #=====================================================================
  91.         # Print out the result.
  92.         #=====================================================================
  93.  
  94.         print "$line\n";
  95.     }
  96.  
  97. EmRPC::CloseConnection();
  98.