/usr/local/CPAN/Sx/Sx.pm


package Sx;

require Exporter;
require DynaLoader;

@ISA = (Exporter, DynaLoader);
@EXPORT = qw(
    OpenDisplay ShowDisplay MainLoop SyncDisplay
    MakeWindow SetCurrentWindow CloseWindow
    MakeForm SetForm
    MakeButton Make3Button
    MakeLabel
    MakeToggle SetToggleState GetToggleState
    MakeDrawArea SetButtonDownCB SetButtonUpCB SetKeypressCB SetMouseMotionCB
    SetColor SetDrawMode SetLineWidth SetDrawArea GetDrawAreaSize ClearDrawArea
    DrawPixel GetPixel DrawLine DrawPolyline DrawFilledPolygon DrawFilledBox
    DrawBox DrawText DrawArc DrawFilledArc DrawImage GetImage ScrollDrawArea
    MakeStringEntry SetStringEntry GetStringEntry
    MakeTextWidget SetTextWidgetText GetTextWidgetText
    MakeHorizScrollbar MakeVertScrollbar SetScrollbar
    MakeScrollList Make3List SetCurrentListItem GetCurrentListItem
    ChangeScrollList
    MakeMenu MakeMenuItem SetMenuItemChecked GetMenuItemChecked
    SetWidgetPos AttachEdge
    SetFgColor SetBgColor SetBorderColor GetFgColor GetBgColor
    SetLabel SetWidgetState GetWidgetState SetWidgetBitmap
    Beep
    GetFont SetWidgetFont GetWidgetFont FreeFont FontHeight TextWidth
    AddTimeOut RemoveTimeOut
    AddReadCallback AddWriteCallback RemoveReadWriteCallback
    GetString GetYesNo
    GetStandardColors GetNamedColor GetRGBColor FreeStandardColors
    GetPrivateColor SetPrivateColor FreePrivateColor GetAllColors
    SetColorMap SetMyColorMap FreeAllColors
    DestroyWidget SetWidgetInt SetWidgetDat GetWidgetInt GetWidgetDat
    AppendText InsertText ReplaceText GetSelection GetTextSelectionPos
    UnsetTextSelection SetTextSelection WarpPointer
    AddTranslation
    SAME_DISPLAY ORIGINAL_WINDOW NullSx TOP_LEVEL_FORM
    WHITE BLACK RED GREEN BLUE YELLOW NONEXCLUSIVE_WINDOW EXCLUSIVE_WINDOW 
    SANE_XOR NO_CARE PLACE_RIGHT PLACE_UNDER LEFT_EDGE RIGHT_EDGE TOP_EDGE
    BOTTOM_EDGE ATTACH_LEFT ATTACH_RIGHT ATTACH_TOP ATTACH_BOTTOM
    GREY_SCALE_1 GREY_SCALE_2 RAINBOW_1 RAINBOW_2
);

$SxVersion = "2.3";
$VERSION = $SxVersion;		# for use by Exporter.pm

bootstrap Sx;

sub SAME_DISPLAY() { undef }
sub ORIGINAL_WINDOW() { undef }
sub NullSx() { undef }
sub TOP_LEVEL_FORM() { undef }


sub AddTranslation ($%) {
  my($widget,%trans_list) = @_;
  my($event,$callb,$trtable);

  while (($event,$callb) = each(%trans_list)) {
    unless ($callb =~ /[()]/) {
      $callb = "trback_to_perl($callb)";
    } elsif ($callb =~ /\(\s*\)/) {
      $callb =~ s/[()]//g;
      $callb = "trback_to_perl($callb)";
    } else {
      $callb =~ s/\(/,/;
      $callb = "trback_to_perl($callb";
    }
    $trtable .= ":$event:\t$callb\n";
  }
  Sx::AddTrans($widget,$trtable);
}

$NONEXCLUSIVE_WINDOW = 0;
$EXCLUSIVE_WINDOW = 1;
$SANE_XOR = 127;
$NO_CARE = 0;
$PLACE_RIGHT = 1;
$PLACE_UNDER = 2;
$LEFT_EDGE = 0;
$RIGHT_EDGE = 1;
$TOP_EDGE = 2;
$BOTTOM_EDGE = 3;
$ATTACH_LEFT = 0;
$ATTACH_RIGHT = 1;
$ATTACH_TOP = 2;
$ATTACH_BOTTOM = 3;
$GREY_SCALE_1 = 0;
$GREY_SCALE_2 = 1;
$RAINBOW_1 = 2;
$RAINBOW_2 = 3;

sub NONEXCLUSIVE_WINDOW() { 0 }
sub EXCLUSIVE_WINDOW() { 1 }
sub SANE_XOR() { 127 }
sub NO_CARE() { 0 }
sub PLACE_RIGHT() { 1 }
sub PLACE_UNDER() { 2 }
sub LEFT_EDGE() { 0 }
sub RIGHT_EDGE() { 1 }
sub TOP_EDGE() { 2 }
sub BOTTOM_EDGE() { 3 }
sub ATTACH_LEFT() { 0 }
sub ATTACH_RIGHT() { 1 }
sub ATTACH_TOP() { 2 }
sub ATTACH_BOTTOM() { 3 }
sub GREY_SCALE_1() { 0 }
sub GREY_SCALE_2() { 1 }
sub RAINBOW_1() { 2 }
sub RAINBOW_2() { 3 }

1;

__END__