#!Perl # # "my geometry" # #Copies my ("me" being the file on disk for this script) window, # font choice and size, and printing setup into given Perl scripts # (Resources TFSS 255 and TFSP 255, resp); # # Useful for solving the annoying problems created when you move # MacPerl files between boxen with wildly different screen sizes. # # sburke@netadventure.net 1998-03-19 use Mac::Memory; use Mac::Resources; use File::Find; exit unless @ARGV; &get_my_geometry(); find(\&put_window_prefs, @ARGV); print "Done\n"; exit; #-------------------------------------------------------------------------- sub get_my_geometry { local($SPEC) = $0; die "Can't find myself on disk!\n" unless -f $SPEC; my($creator, $type) = MacPerl::GetFileInfo($SPEC); unless($creator eq 'MrPL' or $creator eq 'McPL') { die "I'm not a Perl script?!? Open me in MacPerl and save me."; } my $refnum = FSpOpenResFile($SPEC, 1); # read only unless(defined($refnum)) { die "I have no resource fork?!? Open me in MacPerl and save me.\n"; } my $handle = Get1Resource('TFSP', 255); if( $handle ) { $Master_TFSP = $handle->get; } else { CloseResFile($refnum); die "I have no TFSP. Open me in MacPerl and save me.\n"; } $handle = Get1Resource('TFSS', 255); if( $handle ) { $Master_TFSS = $handle->get; } else { CloseResFile($refnum); die "I have no TFSS. Open me in MacPerl and save me.\n"; } CloseResFile($refnum); } #-------------------------------------------------------------------------- sub put_window_prefs { my $SPEC = $File::Find::name; my(@utime); return unless -f $SPEC; @utime = (stat($SPEC))[8,9]; my($creator, $type) = MacPerl::GetFileInfo($SPEC); return unless $creator eq 'MrPL' or $creator eq 'McPL'; my $refnum = OpenResFile($SPEC); unless(defined($refnum)) { #No res fork. Make one. if(CreateResFile($SPEC)) { $refnum = OpenResFile($SPEC); } else { warn "Can't make a resource fork for $SPEC"; return; } } my $handle = Get1Resource('TFSP', 255); # 'TFSP' (255) The printing setup for the file. RemoveResource($handle) if $handle; $handle = new Handle($Master_TFSP); # make a new one AddResource($handle, 'TFSP', 255, "Printer Info"); $handle = Get1Resource('TFSS', 255); # 'TFSS' (255) The font, size and rectangle for the file. RemoveResource($handle) if $handle; $handle = new Handle($Master_TFSS); # make a new one AddResource($handle, 'TFSS', 255, "Header Info"); UpdateResFile($refnum) || print "Error writing: $! $^E\n"; CloseResFile($refnum); utime(@utime , $SPEC); # preserve the datestamps } #-------------------------------------------------------------------------- __END__