home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Otherware
/
Otherware_1_SB_Development.iso
/
amiga
/
comms
/
network
/
grn116e.lha
/
GRn.doc
< prev
next >
Wrap
Text File
|
1992-07-07
|
20KB
|
394 lines
GRn
Gadtools Read News
for the Amiga
by
Mike Schwartz
Michael B. Smith
================================================================================
Mike Schwartz Michael B. Smith
1124 Fremont Ave. P.O. Box 6791
Los Altos, CA 94024 Charlottesville, VA 22906
mykes@amiga0.sf-bay.org mbs@adastra.cvl.va.us
GRn is FreeWare. But, if you have a desire to donate, please feel free. :)
We've gone to a great deal of trouble to try to make sure that GRn is as usable
and bug-free as possible, but we can't guarantee it. Use GRn at your own risk.
CREDITS
Special thanks to Peter Cherna of Commodore-Amiga for his assistance with my
GadTools questions. I still can't do EVERYTHING I want to with GadTools, but
I am getting better, especially with his help. :):)
Special thanks to Georg Sassen for his assistance with a DICE startup problem
that haunted me for weeks.
Special thanks are due to Matt Dillon, as well. He has helped me to make GRn
as compatible with UUCP as possible. As well, his 'C' compiler, DICE, is head
and shoulders above the rest of the Amiga 'C' compilers. If you don't have it,
it is well worth the $50 to get the registered version.
Special thanks to Christopher A. Wichura, who has been very helpful in getting
GRn "clean" of Enforcer hits and Mungwall violations.
IMPORTANT NOTES
Throughout this document, "I" refers to the original author, Myke Schwartz.
To install, read the file INSTALL which should have come with this archive.
For run-time parameters, see the file GRn.man which should have come with this
archive.
GRn requires release 2.04 of AmigaDOS.
GRn is designed to work with Dillon's AmigaUUCP versions 1.13, 1.15 and 1.16.
It should work with NFS mounted C-News partitions as well. An NNTP module is
in the works.
GRn is written in 'C'. And typical of 'C' programs, it requires a bit of
stack space. GRn should comfortably run with 16K of stack. It probably
will work with 8K, but I won't guarantee it. Some of the subroutines have
as much as 5K in auto variables/arrays...
Due to way WorkBench works, you must either:
a) Install GRn in the same directories where SendMail, PostNews
and UUEncode reside, or
b) Put absolute pathnames for SendMail and PostNews in your
UULIB:Config file (you must still have UUEncode in the same
directory).
We may come up with a way to resolve this in the future.
The "STOP" button in the fuel gauge requester in the Publish function does
nothing.
MANIFEST
Each version of GRn should come with the following files:
README
CHANGES
INSTALL
TODO
PROBLEMS
GRn
GRn.info
uuencode
GRn.doc
GRn.man
fonts/grn.font
fonts/grn/8
Some archives of GRn will also include a version of MailMinder.
Some archives of GRn will include source.
UUENCODE
A version of UUEncode is included as part of the GRn distribution. If anyone
has problems with this version of uuencode, I am willing to replace mine with
theirs. Regrettably, I have NO idea who wrote this uudecode program, or I
would give him the credit he deserves.
MAILMINDER
Now distributed with GRn is another neato utility written to enhance UUCP
under 2.04 (and up). This utility is called MailMinder. MailMinder adds
appIcon(s) to your workbench display that (in default form) is a mailbox
with flag up (if you have mail) or flag down (if you don't). MailMinder is
fully configurable via tooltypes and can automatically launch DMail (or
whatever) when you have mail or when you doubleclick the icon.
Included with MailMinder are custom Icons drawn by Paul Broe, Dave Connors,
Stephan Lussier, and Andy Wright. My thanks to these guys! Special thanks
to Andy Wright, who passes along some very nifty scripts and such to go
along with MailMinder.
INTRODUCTION AND OVERVIEW
I've been on UseNet for over 7 years now (causing everyone pain and misery, I'm
sure :). For the last year (plus), I've been using Matt Dillon's Amiga UUCP
package to actually get to read/write news and mail on my Amiga instead of
having to use some cryptic and barbaric Unix user interface over the phone at
2400 broads (oops, baud :).
But after using DNews for all this time, I have always wanted to replace it with
something that works better for the Amiga - something that uses Intuition and
runs from an Icon, etc. Also, Matt has been too busy to polish up DNews to meet
my demanding specifications :)
Ever since 2.0 has come out, I've been using the new 2.0 functions. I typically
don't write hard disk based programs for public consumption on the Amiga, so it
never has made a difference to me to support 1.3. So if you don't have 2.0, you
may as well stop reading and delete these files, or you may start drooling :) Or
you should go and get 2.0. It is worth it. Once you go 2.0, you won't go back.
I should also mention that I have tried to find other PD news readers, but none
have even come close to what I envisioned an Amiga oriented News Reader to be.
Too many of them are clones of Unix teletype style interfaces for my personal
liking.
GRn can be started from the CLI or from the workbench icon. I personally use
the latter.
BASIC CONCEPTS AND REQUIREMENTS
GRn is patterned after some screen shots of XRn (X-Windows Read News) that a
friend of mine sent to me. I've never used XRn, but it looks like a great user
interface for News. I doubt that GRn is totally a look- and feel-alike for XRn,
but it deserves a plug anyhow. Anything that makes Unix less cryptic is worth
the plug!
GRn assumes that you have the basic Amiga UUCP system assigns in place - UUCP:,
UUTMP:, UUMAIL:, UUNEWS:, etc. GRn creates a file called username.grnrc in your
UULIB: directory, where it keeps track of the News database. This file is NOT
in ascii format, and can grow to be quite large - as much as 256 bytes per news
article in your UUNEWS: directory tree. However, the binary format used
provides for as fast a startup/shutdown as I could get, considering the
inefficiencies of the Amiga filesystem for scanning directories.
Due to problems with Dillon's software not using the system path to find its
binaries, I've found that the only way to get GRn to work properly from a
workbench icon is to put the GRn executable in the same directory as Dillon's
binaries. More specifically, Dillon's PostNews Execute()'s BatchNews, RNews,
and UUX, but when GRn is run from a workbench ICON, those Execute()s fail for
some reason. Remember, if you keep your UUCP binaries in UUCP:c, as I do, put
the GRn executable and Icon in UUCP:c also! GRn deliberately uses the full path
to the executables as found in your environment variables or UULIB:config...
So, for correct operation of GRn from the WorkBench, the binary directory must
contain these programs: GRn, GRn.info, RNews, UUX, UUXqt, BatchNews, SendMail,
PostNews and UUEncode (needed for Publish). To use GRn from the CLI, all of
these programs must be on the CLI path.
Finally, GRn is designed to work with its own custom 8-point font. This font is
called grn.font and must be installed in your fonts: directory. There are
valid reasons for choosing to do so... First of all, although GRn is pretty
smart about algorithmically placing and sizing the various gadgets, it is easy
for the user to choose a font that makes the gadgets not fit appropriately in
the window. Second, the font I chose is narrow, so you can fit more columns of
text in the browse listviews.
OPERATION
GRn operates in a single window, which can have two different looks to it. The
two modes of operation are Group Mode and Article Mode. In Group Mode, you
perform operations on newsgroups. In Article Mode, you perform operations on
the articles in the selected newsgroup.
There is a close gadget on the window. Use this gadget ONLY if you want to quit
without updating your .grnrc file! The "Quit" button on the groups mode window
is the normal method of quitting which saves updated news tree information to
your .grnrc file.
Both Group Mode and Article Mode have a Text gadget near the bottom of the
window which is used to display messages. For Group Mode, the total number of
newsgroups, articles, and unread articles is displayed. For Article Mode, the
article number, remaining article count, and the name of the next newsgroup is
displayed.
In Group mode, you are presented with a list of all the newsgroups, along with
the number of articles in each newsgroup and the number of unread articles in
each newsgroup. Below this list of groups are a set of buttons which operate on
the selected newsgroup. You can Catchup in a newsgroup, Read a newsgroup,
Post to a newsgroup, or Publish a binary file to a newsgroup.
You must select a newsgroup as the first step for any of these functions (that
is, click on the newsgroup name). Click once on a newsgroup to select it and
the various buttons become active as appropriate. For example, it doesn't make
sense to be able to read a newsgroup which has no articles, so the "Read" button
will be disabled. Double-clicking on the newsgroup is the same as clicking once
and then clicking "Read".
To Catchup, click on the Catchup button after selecting a newsgroup. All
articles for that newsgroup will be marked as "read".
To Read, click on the Read button after selecting a newsgroup. You will be
taken to the Article Mode screen (explained below).
To Post, click on the Post button after selecting a newsgroup. Your specified
editor will be executed for you to enter the article. If you run GRn on a
custom screen, you may need to enter LeftAmiga-M to bring the editor to the
front screen. After you exit your editor, GRn requests you to confirm that
you still wish to post the article. If you confirm, GRn does so. If not, the
article is discarded. GRn also detects whether or not you actually changed
the article. If you did not, GRn asks you whether to abort the posting or not.
To Publish, click on the Publish button after selecting the newsgroup you wish
to publish the file in. A file requester will be presented for you to choose the
desired file to publish. GRn will automatically uuencode and make as many 500
line posts as needed to completely post the file. The subject line of each
message will be formatted as "<filename> (part x/n)".
There is a "bug report" button, which will automatically send me e-mail so you
can easily access me to get bugs and/or enhancements done. There is also a UUCP
Bug Report button which will post a message to the alt.sys.amiga.uucp newsgroup,
to report bugs with UUCP.
In Article Mode, the window takes a new display format. The list at the top
becomes a list of the articles in the selected group, including the status
(READ/UNREAD), the article number, the sender (parsed from the "From:" field
of the article header), and the subject. This is a convenient way to browse
through the articles available to read!
There are two checkboxes below the list of articles named "Hide Headers" and
"Hide Read Messages". When "Hide Headers" is checked, the browser window at the
bottom of the window will not display article header information. When "Hide
Read Messages" is checked, the articles list will only show UNREAD articles.
"Hide Read Messages" is not yet implemented, so the box is permanently
"ghosted".
Below the checkboxes is a row of buttons. The "Groups" button returns you to
the Group Mode display. The Prev button (bound to the 'p' and the 'b' keys)
moves you to the prior article, if any. The Next button (bound to the 'n' key)
moves you to the next article in the list, if any. The Unread button moves you
to the next UNREAD article. The Next Group button (bound to the 'N' key)
moves you to the next newsgroup with unread articles (if there are no
newsgroups with unread articles, you are taken to the next group in the
newsgroup list). The Prev Group button (bound to the 'P' and 'B' keys) moves
you to the previous group in the newsgroup list. Finally, there is a cycle
gadget that allows you to specify how to sort the list of articles.
You can sort the articles list by Number, From, or Subject fields. This allows
you a lot of flexibility as to how the Next/Prev functions work. If you sort by
Number, you read in the order the messages were posted by Dillon's UUCP. If you
sort by From, you can read all the articles by a certain person in order. If
you sort by Subject, you can read the articles in "thread" fashion.
Below these buttons are three text gadgets used to display the From:,
Organization:, and Subject: fields from the selected article. When the "Hide
Headers" option is selected, this is typically the header information that you'd
care about, anyhow. But if you want to see other information in the headers,
you always can with the click of the mouse... I like the Hide Headers feature,
because you will more often than not be able to see entire articles in the
browser window this way.
Below the text gadgets is the article browser window. This window will contain
the text (with or without headers) of the selected article. You have a choice
of using the Mouse to scroll this window or to use the keyboard cursor keys.
Unfortunately, one of the oversights in GadTools.library is that there is no way
to tell how the user has used the mouse to scroll the ListView, so intermixing
can be a bit confusing - but it does work as well as possible.
Below the browser window is another row of buttons that operate on the
currently selected article. You may save the article to a file, Reply to the
article's poster via Mail, Forward the article to someone, FollowUp (post) to
the article, or Print the article to your printer.
This version of GRn uses the News and Mail Editors specified in your
UULIB:config file. A future release of GRn will have its own composition
window added to it so the package will be fully integrated.
TECHNICAL INFORMATION
GRn internally consists of three logical modules: main, gmode, and amode. The
main program starts by parsing the environment variables NEWSEDITOR, MAILEDITOR,
and USERNAME or finds them in UULIB:config. If the .grnrc file is found, main
reads it into memory and then scans the newsgroups for deleted articles
(pruning) and new articles. If the .grnrc file is not found, main scans UUNEWS:
for groups and articles and builds a tree from scratch. main also checks to see
if another copy is running and aborts if so (before reading the tree, of
course). Two copies of GRn running at the same time can cause the News Trees to
be out of sync and cause problems not worth addressing.
For each group, the hide headers, hide read, and sort options are kept. This
way, you can read one group sorted by subject and another sorted by from.
When posting or replying, GRn puts a custom extension field into the article
headers: "X-NewsSoftware: GRn, etc."
RECOMMENDATIONS
I recommend that you use your normal newsreader to catchup on all your news
right away. Then you run GRn and use the catchup feature to get in sync.
What's coming next:
1. I still want to work on the way sort by subject works. The Re: part should not be
considered during the sort, except to put the original posting first.
2. The publish and hide unread gadgets are still disabled. Publish will allow you to
automagically uuencode and post (in as many parts as needed) binary files to a news
group. I will add a reverse option to the articles mode to automagically combine
these kinds of postings and uudecode them (when you use SAVE).
3. There is still a huge wasted area below the groups LISTVIEW in groups mode. I intend
to add new features there in the future. Please be patient. I intend to implement
a full-blown uulib: configuration editor, preferences (like a way to change my bug
report path if I move, GRn task priority, etc.), a button to start/stop CRON and
UUCICO, and eventually GMail.
4. I intend to implement a nifty kill-file dialog/requester.
5. I will add the capability of GRn to iconify itself (into an appIcon). I have done this
with other programs already, and it's no big deal...
Things NOT implemented (I decided against doing):
1. Allowing the user to specify the font of his choice for the listviews.
Until the Amiga has higher resolution and faster hardware display, it
doesn't make sense to not have at least 80 columns of text for the
article browser.
2. I was going to add some sort of statistic display while GRn was starting
up. It is not needed anymore, since GRn zips now.
3. There were complaints about the size of the grnrc file. I was going to
add a compressor/decompressor to shrink this. I have a real fast one I
use in my games that does about what LHARC does (same percentage, but
much faster). It isn't needed anymore, since I reduced the grnrc file
size by 80%.
Call for discussion:
I have an idea that I would like feedback on. I want to implement a news/mail
editor that is 100% consistent with the GRn interface. Currently, GRn supports
no particular editor well. An integrated editor may seem controversial at first
glance, but let me describe it in more detail and then you can send me flame
mail (or whatever) with your opinions.
The editor I envision has a different look for mail and news editing, so let me
describe Mail first. The top of the window (same window as GRn uses now) would
have String gadgets for you to enter To:, Subject:, Cc:, Bcc:, and Attachment:
header fields. Next to each string gadget will be a button - if you hit the To:
button, a requester with a listview containing your aliases and EVERY username
GRn and GMail ever see in From: and Path: fields of all news articles and mail
messages would pop up and you can simply select a name. If you click on the
button next to attachment, a file requester pops up to request what file you
wish to send as a binary with the mail (uuencoded, split, automagically). At
the bottom of the window there will be several gadgets, among them: Save, Send,
Abort, Include article/message, Include File, and print.
The article editor has different gadgets at the top: newsgroups, subject, etc.
Similar to the mail editor, you can click a button next to newsgroups: and you
get a listview requester with a list of ALL newsgroups your UUCP knows about to
choose from. At the bottom of this window, you have similar buttons to the mail
editor.
Now that you have a feel for the nature of the editor (unified environment),
I'd like to point out that I don't believe the editor should be a massive,
full-blown program editor by any means. In fact, I believe the editor should
be pretty minimal. It will do word wrap and cut and paste (to the
clipboard.device). It will be more than useable for what it is designed to do -
edit mail and news articles (what a concept :)
OK, I've had my say, let me know your opinions...