[Date Prev][Date Next][Thread Prev][Thread Next] [Search] [Date Index] [Thread Index]

Re: [MacPerl] Using Mac:: '...' Modules



Thanks Chris,

# Can't call method "fileInfo" without a package or object reference.
> Note that I never got the NavTypeList stuff to work, so I just constructed
> my own object from scratch of type NavTypeList and provided a subroutine to
> do the work.

This makes me feel better :-)

> So essentially:
>
> DEFAULTLOCATION is just a path.  I believe it is converted to an AEDesc for
> you.

If you pass a null string, the dialog opens with the last visited location.

> DIALOGOPTIONS is a data structure object (a good way to start is with
> NavGetDefaultDialogOptions) that is changed with:
>
>    $options->somefield($somedata)

Would this be true for the NavDialodOptionsFlags also?  I can see that for
setting the option you might use:

  $options->dialogOptionFlags(kNavSelectAllReadableItem)

but how would you reset it?

> And TYPELIST is, from all I can do, simply an empty hashref object of type
> NavTypeListHandle.  There isat least one a bug in NavTypeListHandle()
> anyway ... it tries to bless a nonreference value.  But I can't get it to
> work if I fix that.
>
> So I provide the optional FILTERPROC to do the file filtering "by hand", as
> it were.  This is more flexible anyway ... if you want to open any TEXT
> file, you need to use the FILTERPROC method, I think.  I think the other
> method will only open files of type TEXT for a given application.

This works fine, but it was not clear to me how to write it, your example
was very helpful.  A simpler method may be (assuming that the TYPELIST was
working) to specify some application signature and file types, then set the
kNavSelectAllReadableItem dialogOptionFlag.  According to Programming With
Navigation Services 1.1 (pg. 20 - 21): "Listing a file type in the typeList
parameter generally limits you to displaying only those files created by
your application. If you specify the kNavSelectAllReadableItem constant in
the dialogOptionFlags field of the NavDialogOptions structure you pass in
the dialogOptions parameter, or if the user selects All Readable Items from
the Show menu, Navigation Services will ignore the application signature
specified in the typeList parameter and display all documents of the
specified types."

A few questions:

1) I assume that you must supply an event handling procedure to get the
window title bar to display.  Is this correct?

2) I wanted to pull the filter procedure outside the NavGetFile call, but
when I did (defining it before the call), I get the following error:

  # Can't call method "fileInfo" without a package or object reference.

Since it I thought that Mac:: packages exported there types and functions,
this was a surprise error. I tried adding Mac::Navigation::, but got the
same error.  Should it be possible to define the FILTERPROC subroutine
outside the NavGetFile function?

3) I have discovered that the second element ($_[2]) passed by NavGetFile to
the FILTERPROC appears to be the filterMode variable (NavFilterModes type),
which is "...a list of objects currently being filtered."  How would one use
this, as it appears that it is not necessary for one to check that the
Browser list (kNavFilteringBrowserList = 0) is currently being filtered
before the filter is applied?

Mark

----------------------
Mark J. Yannuzzi
myannuzzi@aya.yale.edu

===== Want to unsubscribe from this list?
===== Send mail with body "unsubscribe" to macperl-request@macperl.org