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 >
Wrap
Text File
|
2000-01-27
|
3KB
|
98 lines
########################################################################
#
# 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();