package Tk::OlWm; use vars qw($VERSION); $VERSION = substr(q$Revision: 1.3 $, 10) + 1; use Tk; use 5.004; # Decoration that can be added/deleted # # CLOSE FOOTER HEADER RESIZE PIN ICON_NAME sub ADDDEL { my ($mw,$atom,$to,$from) = @_; my $data = $mw->privateData; $data->{$to} = {} unless exists $data->{$to}; $data->{$to}->{$atom} = 1; $data->{$from}->{$atom} if (exists $data->{$from}); } sub Update { my $mw = shift; my $data = $mw->privateData; foreach my $kind (keys %$data) { $mw->property('set',"_OL_DECOR_$kind",'ATOM',32,[keys %{$data->{$kind}}]); } } sub Flag { my ($name,$mw,$state) = @_; $mw->property('set',"_OL_$name",'INTEGER',32,$state); $mw->update if ($mw->IsMapped); } sub Tk::Wm::OL_WIN_BUSY { Flag('WIN_BUSY',@_); } sub Tk::Wm::OL_PIN_STATE { Flag('PIN_STATE',@_); } sub Tk::Wm::OL_DECOR { my ($mw,%args) = @_; foreach (keys %args) { my $atom = "_OL_DECOR_$_"; if ($args{$_}) { ADDDEL($mw,$atom,'ADD','DEL'); } else { ADDDEL($mw,$atom,'DEL','ADD'); } } Update($mw); } 1; __END__ =head1 NAME Tk::OlWm - Interface to OpenLook properties of toplevel windows. =for category Tk Geometry Management =head1 SYNOPSIS use Tk::OlWm; $toplevel->OL_DECOR( CLOSE => flag, FOOTER => flag, HEADER => flag, RESIZE => flag, PIN => flag, ICON_NAME => flag, ); $toplevel->OL_WIN_BUSY( flag ); $toplevel->OL_PIN_STATE( flag ); =head1 DESCRIPTION A simple perl-only module that adds a few methods to L class. These methods manipulate properties of the L<$toplevel|Tk::Toplevel> to communicate with an OpenLook window manager, e.g. Sun's C or C. In the synopsis above C is a "boolean" value - i.e. an integer with 0 meaning false and other values meaning true. All the I flag> pairs are optional. =head1 STATUS Works for me, it is in 'Contrib' because I cannot support something which has been developed just by dumping properties of Sun applications and guessing. =head1 AUTHOR Nick Ing-Simmons =cut