package X11::XRT;
/* Copyright 1997, 1998 by Ken Fox */
use DynaLoader;
use strict;
use vars qw($VERSION @ISA);
BEGIN {
$VERSION = 1.0;
@ISA = qw(DynaLoader);
bootstrap X11::XRT;
use X11::Motif qw(:private);
use X11::XRTCons;
}
sub import {
my $module = shift;
my %done;
foreach my $sym (@_) {
next if ($done{$sym});
if ($sym eq ':XRT') {
export_pattern(\%X::XRT::, '^XRT');
export_pattern(\%X::XRT::, '^XtNxrt');
export_pattern(\%X::XRT::, '^Xrt');
}
elsif ($sym eq ':widgets') {
export_pattern(\%X::XRT::, '^xtXrt');
export_pattern(\%X::XRT::, '^xmXrt');
}
else {
export_symbol(\%X::XRT::, $sym);
}
$done{$sym} = 1;
}
}
sub beta_version { 2 };
package X::XRT;
/* ================================================================================
* XRT Graph Widgets */
#ifdef WANT_XRT_GRAPH
xtXrtGraphWidgetClass()->register();
xtXrtGraphWidgetClass()->register_alias(-graph);
#endif
/* ================================================================================
* XRT Gear Widgets */
#ifdef WANT_XRT_GEAR
xmXrtOutlinerWidgetClass()->register();
xmXrtOutlinerWidgetClass()->register_alias(-outline);
xmXrtNodeFolderObjectClass()->register();
xmXrtNodeFolderObjectClass()->register_alias(-outlinefolder);
xmXrtNodeObjectClass()->register();
xmXrtNodeObjectClass()->register_alias(-outlinenode);
xmXrtNodeStyleObjectClass()->register();
xmXrtNodeStyleObjectClass()->register_alias(-outlinestyle);
xmXrtColumnObjectClass()->register();
xmXrtColumnObjectClass()->register_alias(-outlinecolumn);
xmXrtToggleButtonWidgetClass()->register();
xmXrtToggleButtonWidgetClass()->register_alias(-xrttoggle);
#endif
/* ================================================================================
* Resource converters */
sub cvt_to_XrtStrings {
my $value = shift;
$$value = convert_to_Strings($$value);
}
X::Toolkit::Widget::conversion_is_prohibited('XrtString');
X::Toolkit::Widget::conversion_is_mandatory('XrtStrings');
X::Toolkit::Widget::register_converter('XrtStrings', \&cvt_to_XrtStrings);
sub cvt_to_Float {
my $value = shift;
$$value = convert_to_Float($$value);
}
X::Toolkit::Widget::conversion_is_mandatory('Float');
X::Toolkit::Widget::register_converter('Float', \&cvt_to_Float);
sub cvt_to_XrtDataStyle {
my $value = shift;
$$value = convert_to_DataStyle($$value);
}
X::Toolkit::Widget::conversion_is_mandatory('XrtDataStyle');
X::Toolkit::Widget::register_converter('XrtDataStyle', \&cvt_to_DataStyle);
sub cvt_to_XrtDataStyles {
my $value = shift;
$$value = convert_to_DataStyles($$value);
}
X::Toolkit::Widget::conversion_is_mandatory('XrtDataStyles');
X::Toolkit::Widget::register_converter('XrtDataStyles', \&cvt_to_DataStyles);
sub cvt_to_GearString {
my $value = shift;
my $type = ref $$value;
if ($type) {
if ($type eq 'X::Motif::String') {
$$value = XrtGearStringCreateXmString($$value);
}
elsif ($type eq 'X::XRT::perl_GearIcon') {
$$value = XrtGearStringCreateIconString($$value);
}
}
else {
$$value = XrtGearStringCreateCharString($$value);
}
}
X::Toolkit::Widget::conversion_is_mandatory('GearString');
X::Toolkit::Widget::register_converter('GearString', \&cvt_to_GearString);
sub cvt_to_GearLabel {
my $value = shift;
if (ref $$value eq 'ARRAY') {
# create XrtList or XrtString
}
else {
cvt_to_GearString($value);
}
}
X::Toolkit::Widget::conversion_is_mandatory('GearLabel');
X::Toolkit::Widget::register_converter('GearLabel', \&cvt_to_GearLabel);
/* ================================================================================
* Callback data structures */
package X::XRT::AnyCallData;
#ifdef WANT_XRT_GEAR
$X::Toolkit::Widget::call_data_registry{'XmXrtOutliner,xrtGearFolderStateCallback'} = \"X::XRT::FolderStateCallData";
$X::Toolkit::Widget::call_data_registry{'XmXrtOutliner,xrtGearSelectionCallback'} = \"X::XRT::SelectCallData";
$X::Toolkit::Widget::call_data_registry{'XmXrtOutliner,xrtGearNodeActivateCallback'} = \"X::XRT::NodeActivateCallData";
package X::XRT::AnyGearCallData;
use vars qw(@ISA);
@ISA = qw(X::XRT::AnyCallData);
package X::XRT::GenericContainerCallData;
use vars qw(@ISA);
@ISA = qw(X::XRT::AnyGearCallData);
package X::XRT::FolderStateCallData;
use vars qw(@ISA);
@ISA = qw(X::XRT::GenericContainerCallData);
package X::XRT::SelectCallData;
use vars qw(@ISA);
@ISA = qw(X::XRT::GenericContainerCallData);
package X::XRT::NodeActivateCallData;
use vars qw(@ISA);
@ISA = qw(X::XRT::GenericContainerCallData);
#endif
/* ================================================================================
* Pseudo-inheritance hierarchy for XRT resource types */
package X::XRT::perl_GearObject;
package X::XRT::perl_GearString;
use vars qw(@ISA);
@ISA = qw(X::XRT::perl_GearObject);
package X::XRT::perl_GearList;
use vars qw(@ISA);
@ISA = qw(X::XRT::perl_GearObject);
1;
=head1 NAME
X11::XRT - Interface to KL Groups XRT Widget Set
=head1 SYNOPSIS
use X11::XRT qw(:XRT);
=head1 DESCRIPTION
The XRT Widget Set is a nice collection of widgets that extend
the Motif Widget Set. This module simply provides a Perl interface
to those widgets. This module can only be used with a statically
built perl interpreter because KL Groups licensing system must
stamp an executable with a valid license code.
=cut