home *** CD-ROM | disk | FTP | other *** search
- ########################################################################
- #
- # File: FormSpy.pl
- #
- # Purpose: Examine the current active form.
- #
- # Description: This script gets the current active form, iterates
- # over its contents, and prints out information on
- # all of the form objects. For each object, it prints
- #
- # * The object's index number (starting from zero)
- # * The object's type (frmTitleObj, etc.)
- # * Text associated with the object (only for title,
- # label, and control objects)
- # * The object's bounds
- #
- ########################################################################
-
- use EmRPC; # EmRPC::OpenConnection, CloseConnection
- use EmFunctions;
-
- EmRPC::OpenConnection(6415, "localhost");
-
- #=====================================================================
- # Get the current form and the number objects on that form.
- #=====================================================================
-
- my ($form) = FrmGetActiveForm();
- my ($num_objects) = FrmGetNumberOfObjects($form);
-
- #=====================================================================
- # Iterate over all the objects on the form.
- #=====================================================================
-
- for $ii (0..$num_objects - 1)
- {
- #=====================================================================
- # Start generating the line to print. Start with the object's index.
- #=====================================================================
-
- my ($line) = "$ii. ";
-
- #=====================================================================
- # Add the object's type (frmTitleObj, etc.) to the line.
- #=====================================================================
-
- my ($object_type) = FrmGetObjectType($form, $ii);
-
- my ($type) = ("frmFieldObj", "frmControlObj", "frmListObj", "frmTableObj",
- "frmBitmapObj", "frmLineObj", "frmFrameObj", "frmRectangleObj",
- "frmLabelObj", "frmTitleObj", "frmPopupObj", "frmGraffitiStateObj",
- "frmGadgetObj", "frmScrollBarObj")[$object_type];
-
- $line .= " $type";
-
- #=====================================================================
- # If the object is a frmControlObj, frmLabelObj, or frmTitleObj,
- # get the text associated with the object and add it to our line.
- #=====================================================================
-
- if ($object_type == frmControlObj)
- {
- my ($obj_ptr) = FrmGetObjectPtr ($form, $ii);
- my ($address, $label) = CtlGetLabel($obj_ptr);
- $line .= " \"$label\"";
- }
- elsif ($object_type == frmLabelObj)
- {
- my ($label_id) = FrmGetObjectId ($form, $ii);
- my ($address, $label) = FrmGetLabel($form, $label_id);
- $line .= " \"$label\"";
- }
- elsif ($object_type == frmTitleObj)
- {
- my ($address, $title) = FrmGetTitle($form,);
- $line .= " \"$title\"";
- }
- else
- {
- $line .= " <no label>";
- }
-
- #=====================================================================
- # Add the object's bounds to the line.
- #=====================================================================
-
- my (%bounds) = FrmGetObjectBounds($form, $ii);
- $line .= " ($bounds{left}, $bounds{top}, $bounds{right}, $bounds{bottom})";
-
- #=====================================================================
- # Print out the result.
- #=====================================================================
-
- print "$line\n";
- }
-
- EmRPC::CloseConnection();
-