home *** CD-ROM | disk | FTP | other *** search
/ CD Actual Thematic 7: Programming / CDAT7.iso / Share / Editores / Perl5 / perl / lib / site / Tk / OlWm.pm < prev    next >
Encoding:
Perl POD Document  |  1997-08-10  |  2.1 KB  |  114 lines

  1. package Tk::OlWm;
  2. use Tk;
  3. use 5.004;
  4.  
  5. # Decoration that can be added/deleted 
  6. # CLOSE FOOTER HEADER RESIZE PIN ICON_NAME
  7.  
  8. sub ADDDEL
  9. {
  10.  my ($mw,$atom,$to,$from) = @_;
  11.  my $data = $mw->privateData;
  12.  $data->{$to} = {} unless exists $data->{$to};
  13.  $data->{$to}->{$atom} = 1;
  14.  $data->{$from}->{$atom} if (exists $data->{$from});
  15. }
  16.  
  17. sub Update
  18. {
  19.  my $mw = shift;
  20.  my $data = $mw->privateData;
  21.  foreach my $kind (keys %$data)
  22.   {
  23.    $mw->property('set',"_OL_DECOR_$kind",ATOM,32,[keys %{$data->{$kind}}]);
  24.   }
  25. }
  26.  
  27. sub Flag
  28. {
  29.  my ($name,$mw,$state) = @_;
  30.  $mw->property('set',"_OL_$name",INTEGER,32,$state);
  31.  $mw->update if ($mw->IsMapped);
  32. }
  33.  
  34. sub Tk::Wm::OL_WIN_BUSY
  35. {
  36.  Flag('WIN_BUSY',@_);
  37. }
  38.  
  39. sub Tk::Wm::OL_PIN_STATE
  40. {
  41.  Flag('PIN_STATE',@_);
  42. }
  43.  
  44.  
  45. sub Tk::Wm::OL_DECOR
  46. {
  47.  my ($mw,%args) = @_;
  48.  foreach (keys %args)
  49.   {
  50.    my $atom = "_OL_DECOR_$_";
  51.    if ($args{$_})
  52.     {
  53.      ADDDEL($mw,$atom,'ADD','DEL');
  54.     }
  55.    else
  56.     {
  57.      ADDDEL($mw,$atom,'DEL','ADD');
  58.     }
  59.   }
  60.  Update($mw);
  61. }
  62.  
  63. 1;
  64.  
  65. __END__
  66.  
  67. =head1 NAME
  68.  
  69. Tk::OlWm - Interface to OpenLook properties of toplevel windows.
  70.  
  71. =head1 SYNOPSIS
  72.  
  73.    use Tk::OlWm;
  74.  
  75.    $toplevel->OL_DECOR( 
  76.                         CLOSE  => flag,
  77.                         FOOTER => flag,
  78.                         HEADER => flag, 
  79.                         RESIZE => flag, 
  80.                         PIN => flag, 
  81.                         ICON_NAME => flag, 
  82.                       );
  83.  
  84.    $toplevel->OL_WIN_BUSY( flag );
  85.  
  86.    $toplevel->OL_PIN_STATE( flag );
  87.  
  88.  
  89. =head1 DESCRIPTION
  90.  
  91. I simple perl-only module that adds a few methods to Tk::Wm class.
  92. These methods manipulate properties of the C<$toplevel> to communicate 
  93. with an OpenLook window manager, e.g. Sun's C<olwm> or C<olvwm>.
  94.  
  95. In the synopsis above C<flag> is a "boolean" value - i.e. an integer 
  96. with 0 meaning false and other values meaning true.
  97.  
  98. All the I<name =E<gt> flag> pairs are optional.
  99.  
  100. =head1 STATUS
  101.  
  102. Works for me, it is in 'Contrib' because I cannot support something
  103. which has been developed just by dumping properties of Sun applications
  104. and guessing.
  105.  
  106. =head1 AUTHOR
  107.  
  108. Nick Ing-Simmons E<lt>nik@tiuk.ti.comE<gt>
  109.  
  110. =cut
  111.  
  112.  
  113.