comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Re: IDL 5.0 observations
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Switch to threaded view of this topic Create a new topic Submit Reply
Re: IDL 5.0 observations [message #9049] Fri, 30 May 1997 00:00 Go to next message
David Foster is currently offline  David Foster
Messages: 341
Registered: January 1996
Senior Member
Yet more IDL 5.0 observations:

1. I was suprised at the amount of editing of existing applications
that was required to use them with IDL 5.0, particularly if the apps
are modal widgets (many of ours are as they share volume data
using common blocks). To make a modal widget work with IDL 5.0,
you must use the GROUP_LEADER and MODAL keywords in the WIDGET_BASE()
call; I have found that using /MODAL with XMANAGER will lead to
unexpected behavior from popup widgets using IDL 5.0. A fairly
minor change, but if you have 40 applications it's a bit annoying.

2. What leads to even more editing is the fact that you should not
use EVENT_PRO or EVENT_FUNC keywords in the WIDGET_BASE() call,
use EVENT_HANDLER in XMANAGER instead. This means that for all
popup utility windows that generate events for their applications,
and for each application in turn, you have to modify the widget
creation code. Again, a pain if you have many applications.

3. Change: Events from CW_BGROUP() buttons now return press *and*
release events, unless /NO_RELEASE keyword is set. You can get
some really strange behavior with 5.0 until you put in the keyword.

4. I found a serious bug with SEARCH2D.PRO that occurs when the seed
point is on the edge of an image. This may seem unlikely when you're
searching for an object, but what if you're searching for background?
RSI has verified that this is a bug. Also, some major changes were
made to SEARCH2D.PRO, but these changes are *not* reflected in
the Online help! I worry about what other "undocumented features"
I will find.

5. Insight is slow and non-intuitive.


Now that all the crud is taken care of I'm hoping to play around
with the new features like pointers and OOP stuff. I have a feeling
I'll be impressed.

Dave
--

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~
David S. Foster Univ. of California, San Diego
Programmer/Analyst Brain Image Analysis Laboratory
foster@bial1.ucsd.edu Department of Psychiatry
(619) 622-5892 8950 Via La Jolla Drive, Suite 2200
La Jolla, CA 92037
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~

"I have this theory that if we're told we're bad,
then that's the only idea we'll ever have.
But maybe if we are surrounded in beauty,
someday we will become what we see." - Jewel Kilcher
Re: IDL 5.0 observations [message #9064 is a reply to message #9049] Thu, 29 May 1997 00:00 Go to previous messageGo to next message
Andy Loughe is currently offline  Andy Loughe
Messages: 174
Registered: November 1995
Senior Member
> Well I concur. The manuals are smaller (yeah!), but where are the
> ones I use all the time, namely the reference guides? Oh, I have to
> buy them or use the cumbersome online help. Well it is not like I
> paid $1500 for the software - ooops, I did! Hmmmmmmmmmm.

Same here. And try justifying such a purchase when the
user base at your lab keeps falling!


> So, I have to pay for annual maintainence
> so I can get software upgrades which then allow me to spend all my
> time "fixing" programs that used to work with the old version. Well
> since all the IDL code I write can only be used with IDL then in some
> sense my code is really a part of IDL and, therefore, should come under
> their software maintainence. Maybe I should just zip up all of my
> code and email it to RSI for repair!

Lovely!


> Am I the ONLY one whose code no longer works with Version 5.0?

No, at our lab of 60+ people with only 5-6 die hard IDL users
(most left when their 2.4 code didn't work with the 3.0 release),
we are all pointing to 4.01 until map_set and contour, /cell_fill
are really 100% backward compatible. That sort of compatibility
was advertised, was promised, but was not delivered. Are they working
on it? I think so, we have gotten good response from RSI with regard
the existence of problems, but still no bug fixes that provide
compatibility with our existing code. Is it a difficult task?
Maybe so, but that's why the software is so expensive, right?


--
Andrew F. Loughe |
afl@cdc.noaa.gov
University of Colorado, CIRES Box 449 |
http://cdc.noaa.gov/~afl
Boulder, CO 80309-0449 | phn:(303)492-0707
fax:(303)497-7013
------------------------------------------------------------ ---------------
"I do not feel obliged to believe that the same God who has endowed us
with
sense, reason, and intellect has intended us to forego their use."
-Galileo
Re: IDL 5.0 observations [message #9065 is a reply to message #9064] Thu, 29 May 1997 00:00 Go to previous messageGo to next message
jackel[1] is currently offline  jackel[1]
Messages: 11
Registered: May 1997
Junior Member
In article <338DA740.7018@LaRC.NASA.gov> Joseph M Zawodny <J.M.Zawodny@LaRC.NASA.gov> writes:

> Early "leaks" or announcements of IDL V5 included a statement to the
> effect that there would be "multithreading" (at least of some sort)
> which would allow continuous access to the command line while other
> IDL "things" were happening. Well this is not true, When IDL is
> busy it is busy period - no response to the command line - can't even
> type to it.

To be fair, that was referring to Widgets, which can now be run in
non-blocking mode (or whatever it's called), so that the command line
works while your snazzy data analysis widget is on screen. It's nice
to have something like Xpalette running on the side while interactively
messing around with loading images.

As for your other comments, it's true that the widget behavior has
changed in several cases, but v4.0.1 was less than perfect under
Win95, and some changes would be welcome. I'll reserve further
comments until I get the "final" v5.0 (any day now?)

Brian Jackel
Re: IDL 5.0 observations [message #9066 is a reply to message #9064] Thu, 29 May 1997 00:00 Go to previous messageGo to next message
Joseph M Zawodny is currently offline  Joseph M Zawodny
Messages: 24
Registered: March 1996
Junior Member
Yet some more, albeit minor, complaints (again for NT 4.0). Why can't
I save the geometries of the log window and the status of the tool
bars? I can change and set the overall size of the main window and
IDL will remeber both where and how big it was, but if I extend the
log window from 10 lines to say 20 lines, that setting will not be
remembered. Similarly, I want to get rid of the "Macro Toolbar" and
I can turn it off via the menus, but if I exit and then reenter IDL
those stupid macro tools are back. I'd also like to be able to
customize the tool bars as well (like I really need to have a tool
handy to run the demo program!). I did figure out how to delete items
from the macro menu. Is the solution for this to move or rename the
macro file in the IDL50 tree? How about being able to turn off
the "splash screen" that advertises IDL during the start-up sequence?

Hey, shouldn't we be able to double click on a proceedure or function
call in the edit window and have the online help pop up with the
reference guide entry for that function? Maybe this is something we
could add with a macro (double click on a function name then hit a
macro button as can be done with variables) if so does anyone have
a working macro for this?

The more I work with 5.0 the more potential I see here. Potential
is fine, but kinentics (actions) are better.

--

Work: Dr. Joseph M. Zawodny Play: Joe Zawodny
NASA Langley Research Center KO4LW@amsat.org
E-mail: J.M.Zawodny@LaRC.NASA.gov zawodny@exis.net
(757) 864-2681 (757) 864-2671 FAX http://wwwp.exis.net/~zawodny
Re: IDL 5.0 observations [message #9067 is a reply to message #9064] Thu, 29 May 1997 00:00 Go to previous messageGo to next message
Joseph M Zawodny is currently offline  Joseph M Zawodny
Messages: 24
Registered: March 1996
Junior Member
And some more observations. During installation on NT, IDL redefines
what double clicking on a .pro file does. It now fires up IDL and
opens a edit window - fine enough. You cannot print a text hard copy
of the .pro file from within IDL though! Furthermore, I had added to
the list of things you can do to a file when you right click on its
filename to include a print option (via notepad.exe), but V5 install
deleted this addition - easy enough to fix (but should I have had to?).

Early "leaks" or announcements of IDL V5 included a statement to the
effect that there would be "multithreading" (at least of some sort)
which would allow continuous access to the command line while other
IDL "things" were happening. Well this is not true, When IDL is
busy it is busy period - no response to the command line - can't even
type to it.

Widgets seem to have changed thier ordering or justification. When
I can get them to realize in a meaningful way, they now justify from
right to left rather than left to right as they had done under version
4.0.

As I hack away at my formerly working code to get it to run under V5
I will undobtedly come across other "new features" and will report them
here. I encourage others to share what they find and the associated
fixes - if any.

JMZ

--

Work: Dr. Joseph M. Zawodny Play: Joe Zawodny
NASA Langley Research Center KO4LW@amsat.org
E-mail: J.M.Zawodny@LaRC.NASA.gov zawodny@exis.net
(757) 864-2681 (757) 864-2671 FAX http://wwwp.exis.net/~zawodny
Re: IDL 5.0 observations [message #9068 is a reply to message #9064] Thu, 29 May 1997 00:00 Go to previous messageGo to next message
Joseph M Zawodny is currently offline  Joseph M Zawodny
Messages: 24
Registered: March 1996
Junior Member
This is a multi-part message in MIME format.

--------------734111EB4284
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Joseph M Zawodny wrote:
>
> So, now I tried to run my widget based programs. Well in brief, the
> new version broke all of my widgets. They either don't work, don't
> appear, or look completely different. Way to go - again! I am very
> seriously considering sticking to version 4 (which may fortunately
> coexist with version 5). So, I have to pay for annual maintainence
> so I can get software upgrades which then allow me to spend all my
> time "fixing" programs that used to work with the old version. Well
> since all the IDL code I write can only be used with IDL then in some
> sense my code is really a part of IDL and, therefore, should come under
> their software maintainence. Maybe I should just zip up all of my
> code and email it to RSI for repair!
>
> Am I the ONLY one whose code no longer works with Version 5.0?

Here is an example of a broken widget (at least under NT 4.0).
Compile the routines and then type

W_EDIT_EPHEM,req,pos=[300,200]

at the command line. In versions 3.6-4.0 you see what I want. Under
version 5 you get a microscopic widget with a black dot in it and a
partial (2 sided) frame. I have been fiddling with this for some
time now and I can force the root widget to have a finite size, but
the guts remain a black dot. Under version 5 you will have to kill
IDL to get rid of the widget.

First one to fix this can have a cookie.
--

Work: Dr. Joseph M. Zawodny Play: Joe Zawodny
NASA Langley Research Center KO4LW@amsat.org
E-mail: J.M.Zawodny@LaRC.NASA.gov zawodny@exis.net
(757) 864-2681 (757) 864-2671 FAX http://wwwp.exis.net/~zawodny

--------------734111EB4284
Content-Type: text/plain; charset=us-ascii; name="w_edit_e.pro"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline; filename="w_edit_e.pro"

function W_EDIT_EPHEM_EVENT,ev
;+
; V-2.1
; Event handling routine for W_EDIT_EPHEM widget
;
;-
child = widget_info(ev.top,/child)
widget_control,child,get_uvalue=req
widget_control,ev.top,get_uvalue=stat
type = tag_names(ev,/struct)
res = 0

; Was it a carriage return event
if(type eq 'WIDGET_TEXT_CH') then begin
if(ev.ch eq 10B) then begin
tid = stat.textid
case ev.id of
tid(0): widget_control,tid(1),/input_focus
tid(1): widget_control,tid(2),/input_focus
tid(2): widget_control,tid(3),/input_focus
tid(3): widget_control,tid(4),/input_focus
tid(4): widget_control,tid(5),/input_focus
tid(5): widget_control,tid(6),/input_focus
tid(6): widget_control,tid(7),/input_focus
ELSE: widget_control,stat.button(7),/input_focus
endcase
goto,SKIP
endif
endif

isit = strpos(type,'WIDGET_TEXT')
if(isit eq 0)then begin

; Check what the user is doing and manage the display
flag = chk_str(ev,vstr)
if (flag eq 0) then goto,SKIP

tid = stat.textid

case ev.id of
tid(0): req.name = vstr ; Name
tid(1): req.cur.orbit(0) = vstr ; Altitude
tid(2): req.cur.orbit(1) = vstr ; Inclination
tid(3): req.cur.orbit(3) = vstr ; Right Ascension
tid(4): req.cur.orbit(2) = vstr ; Eccentricity
tid(5): req.cur.orbit(4) = vstr ; Argument of Perogee
tid(6): req.cur.orbit(5) = vstr ; Mean Anomoly

ELSE: begin ; Ephemeris Date
flag = parse_date(vstr,ostr,date)
if(flag ne 0) then req.cur.dateorb = date
end
endcase
endif

; Was it a BUTTON event
if(type eq 'WIDGET_BUTTON')then begin

widget_control,ev.id,get_value=value
vstr = strupcase(strtrim(value,2))

case vstr of

'LEARN': begin
end

'QUIT': begin
req = stat.orig
res = 1
end

'SUN SYNCHRONOUS': begin
widget_control,ev.id,get_uvalue=uv,/no_copy
req.cur.sync = ev.select
widget_control,uv.inc(0),sens=1-ev.select
widget_control,uv.inc(1),sens=1-ev.select
widget_control,uv.inc(2),sens=1-ev.select
widget_control,uv.inc(1),get_value=curinc
vs = string(uv.oinc,form='(f8.2)')
widget_control,uv.inc(1),set_value=vs
widget_control,uv.inc(1),set_uvalue={value:vs,off:0}

uv.oinc = float(curinc(0))
; Swap values
t = uv.ra(1)
widget_control,t,get_value=curra
vs = string(uv.ora,form='(f8.2)')
widget_control,t,set_value=vs
widget_control,t,set_uvalue={value:vs,off:0}
uv.ora = float(curra(0))
if(ev.select eq 1) then begin
widget_control,uv.ra(0),set_value='Asc Node Time'
widget_control,uv.ra(2),set_value='hrs'
endif else begin
widget_control,uv.ra(0),set_value='RA of Asc Node'
widget_control,uv.ra(2),set_value='deg'
endelse
widget_control,ev.id,set_uvalue=uv,/no_copy
widget_control,t,/input_focus
end

'ACTIVE': req.cur.active = ev.select

'SOLAR': begin
widget_control,ev.id,/set_button
req.cur.solar = 1 & req.cur.lunar = 0
end

'LUNAR': begin
;test widget_control,ev.id,/set_button
req.cur.solar = 0 & req.cur.lunar = 1
end

'BOTH': begin
;test widget_control,ev.id,/set_button
req.cur.solar = 1 & req.cur.lunar = 1
end

ELSE: res = 1
endcase

endif

SKIP: widget_control,ev.top,set_uvalue=stat
widget_control,child,set_uvalue=req

return,{err_msg,id:ev.id,top:ev.top,handler:ev.handler,resul t:res}
end


pro W_EDIT_EPHEM,req,pos=pos
; Routine to initialize the widget
!quiet = 1
tft = '(i4,"/",i2.2,"/",i2.2,":",i2.2,":",i2.2,":",f5.2)'
f104 = '(f10.4)'
asc = '(a10)'

if(n_elements(req) eq 0) then begin
print,'Using default values'
date = [1999.,1.,1.,0.,0.,0.]
orb = [100.,0.,0.,0.,0.,0.]
req = {name:'',cur:{orbit:orb,dateorb:date,solar:1,lunar:0 $
,sync:0,active:1,id:[0L,0L]}}
endif
s1 = string(req.cur.orbit(0),form=f104)
s2 = string(req.cur.orbit(1),form=f104)
s3 = string(req.cur.orbit(3),form=f104)
s4 = string(req.cur.orbit(2),form=f104)
s5 = string(req.cur.orbit(4),form=f104)
s6 = string(req.cur.orbit(5),form=f104)
s7 = string(fix(req.cur.dateorb(0:4)),req.cur.dateorb(5),form=tft )
if(n_elements(pos) ne 2) then pos=[0,0]

b = widget_base(title='Orbit Ephemeris',event_func='w_edit_ephem_event' $
,xoff=pos(0),yoff=pos(1),tlb_frame_attr=1+2+8)

r = widget_base(b,/column)
ra = widget_base(r,/column,/frame)
ra1 = widget_base(ra)

ra1a = widget_base(ra1,/row)
ra1a0 = widget_base(ra1a,/column,space=12,ypad=8)
ra1a0a = widget_label(ra1a0,valu='Spacecraft')
ra1a0b = widget_label(ra1a0,valu='Altitude')
ra1a0c = widget_label(ra1a0,valu='Inclination')
ra1a0d = widget_label(ra1a0,valu='RA of Asc Node')
ra1a0e = widget_label(ra1a0,valu='Eccentricity')
ra1a0f = widget_label(ra1a0,valu='Arg of Perogee')
ra1a0g = widget_label(ra1a0,valu='Mean Anomaly')

ra1a1 = widget_base(ra1a,/column,space=4,ypad=3)
t00 = widget_text(ra1a1,xsiz=10,/edit,/all,value=req.name)
t01 = widget_text(ra1a1,xsiz=10,/edit,/all,value=s1)
t02 = widget_text(ra1a1,xsiz=10,/edit,/all,value=s2)
t03 = widget_text(ra1a1,xsiz=10,/edit,/all,value=s3)
t04 = widget_text(ra1a1,xsiz=10,/edit,/all,value=s4)
t05 = widget_text(ra1a1,xsiz=10,/edit,/all,value=s5)
t06 = widget_text(ra1a1,xsiz=10,/edit,/all,value=s6)

ra1a2 = widget_base(ra1a,/column,space=12,ypad=8)
ra1b2a = widget_label(ra1a2,valu=' ')
ra1a2b = widget_label(ra1a2,valu='km')
ra1a2c = widget_label(ra1a2,valu='deg')
ra1a2d = widget_label(ra1a2,valu='deg')
ra1b2e = widget_label(ra1a2,valu=' ')
ra1b2f = widget_label(ra1a2,valu='deg')
ra1b2g = widget_label(ra1a2,valu='deg')

ra2 = widget_base(ra,/row)
ra2a = widget_label(ra2,valu='Date')
t07 = widget_text (ra2,xsiz=22,/edit,/all,value=s7)

ra3 = widget_base(ra,/row)
ra3a = widget_base(ra3,/row,/nonexclusive)
b0 = widget_button(ra3a,value='Sun Synchronous')
b1 = widget_button(ra3a,value='Active')

ra4 = widget_base(ra,/row)
ra4a = widget_base(ra4,/row,/exclusive)
b2 = widget_button(ra4a,xsize=69,value='Solar')
b3 = widget_button(ra4a,xsize=69,value='Lunar')
b4 = widget_button(ra4a,xsize=69,value='Both')

ra5 = widget_base(ra,/row)
b5 = widget_button(ra5,xsize=70,value='Quit')
b6 = widget_button(ra5,xsize=70,value='Learn')
b7 = widget_button(ra5,xsize=70,value='OK')

; Set all the the fields to the initial values
widget_control,b0,set_button=req.cur.sync
widget_control,b1,set_button=req.cur.active
widget_control,b4,sens=0 & widget_control,b6,sens=0
widget_control,b2,set_button=req.cur.solar
widget_control,b3,set_button=req.cur.lunar
widget_control,b4,set_button=req.cur.solar*req.cur.lunar
widget_control,t00,set_uvalue={value:req.name,off:0}
widget_control,t01,set_uvalue={value:s1,off:0}
widget_control,t02,set_uvalue={value:s2,off:0}
widget_control,t03,set_uvalue={value:s3,off:0}
widget_control,t04,set_uvalue={value:s4,off:0}
widget_control,t05,set_uvalue={value:s5,off:0}
widget_control,t06,set_uvalue={value:s6,off:0}
widget_control,t07,set_uvalue={value:s7,off:0}
widget_control,r,/realize

status = {textid : [t00,t01,t02,t03,t04,t05,t06,t07] $
, textfmt: [asc,f104,f104,f104,f104,f104,f104,tft] $
, textmax: [ 10, 10, 10, 10, 10, 10, 10, 22] $
, textchr: [ 0, 2, 2, 2, 2, 2, 2, 3] $
, button : [ b0, b1, b2, b3, b4, b5, b6, b7], orig: req}

syncv = {inc:[ra1a0c,t02,ra1a2c],ra:[ra1a0d,t03,ra1a2d] $
,oinc:0.00,ora:0.00}

if(req.cur.sync ne 0) then begin
widget_control,syncv.inc(0),sens=0
widget_control,syncv.inc(1),sens=0
widget_control,syncv.inc(2),sens=0
widget_control,syncv.ra(0),set_value='Asc Node Time'
widget_control,syncv.ra(2),set_value='hrs'
endif

widget_control, b, set_uvalue=status,/no_copy
widget_control, r, set_uvalue=req,/no_copy
widget_control,b0,set_uval=syncv

; Wait for an event from the new widget
LOOP: wevent = widget_event(b)
if(wevent.result ne 1) then goto,LOOP

; Get the answer
widget_control, r, get_uvalue=req,/no_copy

; Destroy the widget
widget_control,b,/destroy

return
end

--------------734111EB4284--
Re: IDL 5.0 observations [message #9069 is a reply to message #9064] Thu, 29 May 1997 00:00 Go to previous messageGo to next message
Joseph M Zawodny is currently offline  Joseph M Zawodny
Messages: 24
Registered: March 1996
Junior Member
Phil Williams wrote:
>
> I am initially very impressed with IDL 5.0. I'm still running a preview
> release on my Mac (got the UNIX versions last week). Spent the weekend
> playing with it and beginning to port my XDISPLAY to objects. What a
> speed increase in simple stuff like window and leveling. Here are some
> of my complaints/observations (I'm sure some of you have the same ones)
>
> 1) Still need better manuals. (There are still places where the ;
> comments from code didn't get removed).
> 2) Better online help (at least on the Mac).
> 3) There still has to be consistancy in keyword usage. i.e. IDLgrWindow
> has keyword COLORMODEL, but WIDGET_DRAW has COLOR_MODEL! Why?
> 4) I love the fact that I can do a = ( b = intarr(10)) now.
> 5) help,output=helpSTR is much better than using a seperate function.
> 6) Pointers are much better than the handles they replace (same
> observations made by others here previously).
>
> That's all I can think of for the moment...
>
> Stay tuned for an objectified version of XDISPLAY soon (I hope!)
>
> Phil

Well I concur. The manuals are smaller (yeah!), but where are the
ones I use all the time, namely the reference guides? Oh, I have to
buy them or use the cumbersome online help. Well it is not like I
paid $1500 for the software - ooops, I did! Hmmmmmmmmmm.

I do like the new split windows and the toolbar. And finally, after
converting all of my files to 8.3 names, I get to use long file names.
Too little too late.

So, now I tried to run my widget based programs. Well in brief, the
new version broke all of my widgets. They either don't work, don't
appear, or look completely different. Way to go - again! I am very
seriously considering sticking to version 4 (which may fortunately
coexist with version 5). So, I have to pay for annual maintainence
so I can get software upgrades which then allow me to spend all my
time "fixing" programs that used to work with the old version. Well
since all the IDL code I write can only be used with IDL then in some
sense my code is really a part of IDL and, therefore, should come under
their software maintainence. Maybe I should just zip up all of my
code and email it to RSI for repair!

Am I the ONLY one whose code no longer works with Version 5.0?
--

Work: Dr. Joseph M. Zawodny Play: Joe Zawodny
NASA Langley Research Center KO4LW@amsat.org
E-mail: J.M.Zawodny@LaRC.NASA.gov zawodny@exis.net
(757) 864-2681 (757) 864-2671 FAX http://wwwp.exis.net/~zawodny
Re: IDL 5.0 observations [message #9132 is a reply to message #9068] Mon, 02 June 1997 00:00 Go to previous message
Stein Vidar Hagfors H is currently offline  Stein Vidar Hagfors H
Messages: 32
Registered: May 1997
Member
Joseph M Zawodny wrote:
>
[..]
>
> Here is an example of a broken widget (at least under NT 4.0).
> Compile the routines and then type
>
> W_EDIT_EPHEM,req,pos=[300,200]
>
> at the command line. In versions 3.6-4.0 you see what I want. Under
> version 5 you get a microscopic widget with a black dot in it and a
> partial (2 sided) frame. I have been fiddling with this for some
> time now and I can force the root widget to have a finite size, but
> the guts remain a black dot. Under version 5 you will have to kill
> IDL to get rid of the widget.
>

Under !version = { alpha OSF unix 5.0 Apr 28 1997} this works fine,
it looks the same as under v 4.0.1c ...

> First one to fix this can have a cookie.

Is this a fix? No, I guess not.. :-)

Stein Vidar
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: Clean Email Addresses
Next Topic: findfile()

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Wed Oct 08 15:10:53 PDT 2025

Total time taken to generate the page: 0.00780 seconds