On Fri, Jan 11, 2013 at 10:57 AM, Frank Church <vfclists@gmail.com> wrote:
On 11 January 2013 13:34, Torsten Bergmann <astares@gmx.de> wrote:
From the history of Squeak and Pharo you can:
1. Squeak.exe (VM for Windows) was always able to set this using the Setting "WindowTitle" in Pharo.ini - see http://squeakvm.org/win32/settings.html
This was implemented by Andreas Raab (maintainer of SqueakVM)
2. Later there was the idea in Squeak for a project called "Areithfa Ffenestri" that should add more support code to Squeak to allow access to the native window or open new ones:
http://wiki.squeak.org/squeak/3862
This is a VM plugin that is not in all VM's and even after years AFAIK not fully implemented on all platforms.
If it is available then you can do what Bert Freudenberg suggested here:
http://lists.squeakfoundation.org/pipermail/squeak-dev/2013-January/167766.h...
Dont know if the Pharo VM maintainers added this plugin too. You have to ask Igor or Esteban.
3. While Squeak tries to stay platform independent and encapsulate platform dependent logic mostly into VM plugins to unify the access there is some other idea in Pharo now:
With the growing need to easily access platform logic of the underlying OS or access external libraries written in other languages there is a new FFI plugin which is (since Pharo 2.0) will be included in the standard distribution.
This new Foreign Function Interface (FFI) is called NativeBoost and will move more logic into Smalltalk itself. So you dont have to write/compile a plugin.
You just need a VM with NativeBoost support (NBCog.exe on Windows)
Using native Boost (when in Pharo 2.0) you can (already!) write:
NBWin32Window getFocus setWindowText: 'Hello using Native Boost'
to change the window title. Internally I just call the Windows Win32-API function "SetWindowTextA" using the window handle.
If someone from other platforms implements an NBUnixWindow, NBMacWindow, NBRiscOSWindow, ... we can also implement a common interface class (NBPharoWindow for example).
Hope this helps a little bit
Bye T.
I downloaded the NBCog.exe and was able to execute the 'NBWin32Window getFocus setWindowText: 'Hello using Native Boost' example you showed above. It looks me to like they are direct calls to the Windows API which don't require any external DLLs other the built in Windows ones..
However on Linux would that mean it may be necessary to use different code for Gnome or KDE/Qt for instance, or use some other native or crossplatform widgetset like Wx?
IIRC no. This is at the XLib level. See XStoreName/XSetTextProperty. -- best, Eliot