ASPN ActiveState Programmer Network
ActiveState
/ Home / Perl / PHP / Python / Tcl / XSLT /
/ Safari / My ASPN /
Cookbooks | Documentation | Mailing Lists | Modules | News Feeds | Products | User Groups


Recent Messages
List Archives
About the List
List Leaders
Subscription Options

View Subscriptions
Help

View by Topic
ActiveState
.NET Framework
Open Source
Perl
PHP
Python
Tcl
Web Services
XML & XSLT

View by Category
Database
General
SOAP
System Administration
Tools
User Interfaces
Web Programming
XML Programming


MyASPN >> Mail Archive >> tcltk-perl
tcltk-perl
[tcltk-perl] FW: [MACTCL] loadable TkAqua
by Jeff Hobbs other posts by this author
Sep 27 2004 10:07AM messages near this date
[tcltk-perl] Tcl::Tk and Tcl/Tk files within Perl installation | [tcltk-perl] which is the best way to provide hook(s) in Tcl::Tk module
Just an FYI that Daniel Steffen has Tk now loadable from Tcl
on Aqua (required some thread voodoo).  This also enables
Tcl::Tk on Aqua, with confirmation from the attached email.

  Jeff Hobbs, The Tcl Guy
  http://www.ActiveState.com/, a division of Sophos

-----Original Message-----
From: Daniel A. Steffen
Sent: Monday, September 27, 2004 2:51 AM
To: tcl mac; Jim Ingham
Cc: Wout Mertens
Subject: [MACTCL] loadable TkAqua


All,

the follwoing has been on my almost-finished pile for a while, finally  
got around to cleaning it up this weekend:

	http://sourceforge.net/tracker/index.php? 
func=detail&aid=1035348&group_id=12997&atid=312997

this has patches to core-8-4-branch and HEAD that enable [package  
require Tk] for TkAqua.

All platform specific code from tkMacOSXAppInit.c is moved to  
tkMacOSXInit.c and tkMacOSXAppInit.c is removed and replaced by the  
generic unix/tkAppInit.c.

Almost all such startup code was interp specific and is moved into the  
existing initialization code in TkpInit(). The only  
pre-interp-initialization we need to do is setting up the  
Resources/Scripts/AppMain.tcl startup file (if present), this code is  
moved to a new TkMacOSXDefaultStartupScript() which is called from  
Tk_Main() (the only change to generic code).

The main project change is addition of a pkgIndex.tcl script in  
Tk.framework/Resources/Scripts, which enables [package require Tk].

I've also added code to TkpInit() that checks if we are loaded into a  
bundled executable; and if not, attempts to dynamically acquire the  
undocumented CPSEnableForegroundOperation SPI and use it to notify the  
window server that we are now a full GUI application (this will not  
break if that SPI ever disappears or changes its name).
Even though we've previously discussed and rejected using CPS SPI, I've  
lost my scruples on this after talking to the LaunchServices engineers  
at WWDC (who said to go ahead and use the same workaround that JAR  
launcher, SDL, wxPython etc all already use, it's not likely to go away  
at this point and an official solution is not in the pipeline). Just  
google for CPSEnableForegroundOperation to see how widespread use of  
this SPI is... In any case, this code can be disabled via #define if  
desired.
Of course it's still much preferred to use a bundled executable, as you  
cannot get a dock icon, document bindings, a bundle id, etc otherwise,  
also the aete resource for Wish is not available to an unbundled  
executable (i.e. app cannot be targeted via AppleScript)

With all this, [package require Tk] now works from tclsh wrapped as a  
bundled executable, and also unbundled if the above code is enabled.

In particular, this also allows the Tcl::Tk perl module to properly  
load TkAqua:
	http://search.cpan.org/~vkon/Tcl/
	http://search.cpan.org/~vkon/Tcl-Tk/
get release 0.84 which has my changes to build the Tcl module against  
Tcl.framework; and configure the Tcl module with
	perl Makefile.PL --tclconfig  
/Library/Frameworks/Tcl.framework/tclConfig.sh --usestubs  
INSTALLSITEMAN3DIR=/usr/local/man/man3
and the Tcl::Tk module with
	perl Makefile.PL INSTALLSITEMAN3DIR=/usr/local/man/man3
both modules should pass all their 'make test's...

Jim, could you review this for checkin?

Cheers,

Daniel

-- 
** Daniel A. Steffen     **  "And now for something completely
** Dept. of Mathematics  **   different"    Monty Python
** Macquarie University  **  
** NSW 2109 Australia    **  <http://www.maths.mq.edu.au/~steffen/> 
Attachments:
unknown1
unknown2


Privacy Policy | Email Opt-out | Feedback | Syndication
© ActiveState Software Inc. All rights reserved