[GRASS5] Internet GRASS

Does somebody knows some tool (LIB, API) than alloq the Internet - GRASS
interaction ??

      xxxxx
        xx xxx
       xx xx x xxxxx
      xxxxx xx x xx xxxxxx
             xxx xxx xx
                   xx xx
                           xx

     sldla996@bochica.udea.edu.co
     zoftwar@yahoo.com
     david@lozano.as
     dlozano@dada.udea.edu.co
     lenin@cigoto.8k.com
     zoftwar@latinmail.com
          
----------------------------------------
If you want to unsubscribe from GRASS Development Team mailing list write to:
minordomo@geog.uni-hannover.de with
subject 'unsubscribe grass5'

Hello David

David Lozano Argel wrote:

Does somebody knows some tool (LIB, API) than alloq the Internet -
GRASS interaction ??

You could look into GRASSLinks from the following site:

http://www.regis.berkeley.edu/rhome/webgis.html

--
Sincerely,

Jazzman (a.k.a. Justin Hickey) e-mail: jhickey@hpcc.nectec.or.th
High Performance Computing Center
National Electronics and Computer Technology Center (NECTEC)
Bangkok, Thailand

People who think they know everything are very irritating to those
of us who do. ---Anonymous

Jazz and Trek Rule!!!

----------------------------------------
If you want to unsubscribe from GRASS Development Team mailing list write to:
minordomo@geog.uni-hannover.de with
subject 'unsubscribe grass5'

On Thu, Mar 08, 2001 at 09:56:45AM +0700, Justin Hickey wrote:

Hello David

David Lozano Argel wrote:
>
> Does somebody knows some tool (LIB, API) than alloq the Internet -
> GRASS interaction ??

You could look into GRASSLinks from the following site:

http://www.regis.berkeley.edu/rhome/webgis.html

David,

you find many more here (JAVA etc.):
Bereich Geographie – Naturwissenschaftliche Fakultät – Leibniz Universität Hannover

Hope this helps,

Markus

----------------------------------------
If you want to unsubscribe from GRASS Development Team mailing list write to:
minordomo@geog.uni-hannover.de with
subject 'unsubscribe grass5'

Where can I find a JNI GRASS for GRASS 5 beta X.X?

      xxxxx
        xx xxx
       xx xx x xxxxx
      xxxxx xx x xx xxxxxx
             xxx xxx xx
                   xx xx
                           xx

     sldla996@bochica.udea.edu.co
     zoftwar@yahoo.com
     david@lozano.as
     dlozano@dada.udea.edu.co
     lenin@cigoto.8k.com
     zoftwar@latinmail.com
          
----------------------------------------
If you want to unsubscribe from GRASS Development Team mailing list write to:
minordomo@geog.uni-hannover.de with
subject 'unsubscribe grass5'

On Mon, Mar 12, 2001 at 02:37:20PM +0500, David Lozano Argel wrote:

Where can I find a JNI GRASS for GRASS 5 beta X.X?

Please check the source code:

src.garden/grass.java/

Note that this code is not upgraded to FP GRASS yet (volunteers
wanted).

Markus

----------------------------------------
If you want to unsubscribe from GRASS Development Team mailing list write to:
minordomo@geog.uni-hannover.de with
subject 'unsubscribe grass5'

I already download the JNI source code to compile on Linux. But the .a
files (libraries) are missing. Where can I find this files??

----------------------------------------
If you want to unsubscribe from GRASS Development Team mailing list write to:
minordomo@geog.uni-hannover.de with
subject 'unsubscribe grass5'

I'm moving forward on my plan to improve GRASS 2D display (adding layers, alpha channel, resolution independent graphics, rulers, WYSIWYG printing, etc.) . I have a small question about sockets.

I'm using GRASS 5 as my base and thus am using fifos in a fully compatible fashion to other grass5 display drivers. To my knowledge the developmental version 5.1 is using sockets instead of fifos to connect the display commands to the servers.

Are clients pushing the same data to the servers in 5.1?

How do the clients/servers know which sockets to use? With fifos they are included in the arguments, however with sockets I would think the display driver takes the initiative to register sockets which the clients look for, however that's pure speculation on my part.

My code uses functions in connect.c and SWITCHER.c in GRASS 5.0 to check the validity of fifos and to then 'connect' to them (read/write to them). The functions are used/copied verbatim, I don't change the initial dispatch method (which is currently calling a bunch if inline drawing functions). If your sockets implementation is similar to the fifo implementation I should be able to support both methods easily.

I hope nobody is adding functions to the display driver function set in 5.1. As soon as I support the current set I'll post the functions I plan to add for layers etc. Hopefully no parallel work is going on.

(FYI what I actually do is use two executables. One acts as the display driver and tells the primary application which fifos to use to create a new display canvas document. The display driver initializer knows the primary app is running because it vends an object as a server. I have to do this because fifos are passed as command arguments instead of some runtime method which you may or may not be using with sockets. Either way I can allow the primary application to create or accept sockets or use the prior method if it's more like fifos and command line arguments. I hope that made sense.)

----------------------------------------
If you want to unsubscribe from GRASS Development Team mailing list write to:
minordomo@geog.uni-hannover.de with
subject 'unsubscribe grass5'

I tried to compile the GRASS JNI that comes with the GRASS 5 beta 11
source code in the folder src.garden/grass.java. I have java 1.2 sdk. The
.jar compiled good, but it show me to much warnings and when I ran
examples check1 and check2 show:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no gis in
java.library.path
  at java.lang.ClassLoader.loadLibrary(Compiled Code)
  at java.lang.Runtime.loadLibrary0(Compiled Code)
  at java.lang.System.loadLibrary(Compiled Code)
  at GRASS.libgis.<clinit>(libgis.java:958)
  at check1.<init>(Compiled Code)
  at check1.main(Compiled Code)
make: *** [check1] Error 1

What additional thing I must to do to get a good result??? (show
examples if possible).

Sorry for my english.

      xxxxx
        xx xxx
       xx xx x xxxxx
      xxxxx xx x xx xxxxxx
             xxx xxx xx
                   xx xx
                           xx

     sldla996@bochica.udea.edu.co
     zoftwar@yahoo.com
     david@lozano.as
     dlozano@dada.udea.edu.co
     lenin@cigoto.8k.com
     zoftwar@latinmail.com
          
----------------------------------------
If you want to unsubscribe from GRASS Development Team mailing list write to:
minordomo@geog.uni-hannover.de with
subject 'unsubscribe grass5'

Hi

strobe anarkhos wrote:

I'm using GRASS 5 as my base and thus am using fifos in a fully
compatible fashion to other grass5 display drivers. To my knowledge
the developmental version 5.1 is using sockets instead of fifos to
connect the display commands to the servers.

Sorry, I can't really help with your sockets question. Eric Miller is
our expert on that, he should reply soon. However, I would just like to
clarify things with the socket code with regards to the versions of
Grass. The sokect code is now the default method for process
communication for version 5.0. So, if you download the current CVS and
compile, you will be using the new socket code. If no major problems
occur when we release version 5.0, we plan to remove the fifo code from
the tree. Since your changes will be used for version 5.1, I suggest you
concentrate on the socket code, unless somebody requests fifo code.

Hope this helps save you some work. :slight_smile:

--
Sincerely,

Jazzman (a.k.a. Justin Hickey) e-mail: jhickey@hpcc.nectec.or.th
High Performance Computing Center
National Electronics and Computer Technology Center (NECTEC)
Bangkok, Thailand

People who think they know everything are very irritating to those
of us who do. ---Anonymous

Jazz and Trek Rule!!!

----------------------------------------
If you want to unsubscribe from GRASS Development Team mailing list write to:
minordomo@geog.uni-hannover.de with
subject 'unsubscribe grass5'

At 9:42 AM +0700 3/15/01, Justin Hickey wrote:

Hi

strobe anarkhos wrote:
> I'm using GRASS 5 as my base and thus am using fifos in a fully
> compatible fashion to other grass5 display drivers. To my knowledge
> the developmental version 5.1 is using sockets instead of fifos to
> connect the display commands to the servers.

Sorry, I can't really help with your sockets question. Eric Miller is
our expert on that, he should reply soon. However, I would just like to
clarify things with the socket code with regards to the versions of
Grass. The sokect code is now the default method for process
communication for version 5.0. So, if you download the current CVS and
compile, you will be using the new socket code. If no major problems
occur when we release version 5.0, we plan to remove the fifo code from
the tree. Since your changes will be used for version 5.1, I suggest you
concentrate on the socket code, unless somebody requests fifo code.

Hope this helps save you some work. :slight_smile:

I'm not going to use it unless it's working 100%. I'm not interested in debugging sockets, I only want to extend the display driver function set. Fifos currently work so that's what I'm currently using.

----------------------------------------
If you want to unsubscribe from GRASS Development Team mailing list write to:
minordomo@geog.uni-hannover.de with
subject 'unsubscribe grass5'

Hi Strobe

strobe anarkhos wrote:

I'm not going to use it unless it's working 100%. I'm not interested
in debugging sockets, I only want to extend the display driver
function set. Fifos currently work so that's what I'm currently
using.

As far as we know, the socket code is working at 100% now. At least I am
not aware of any outstanding socket issues. Eric, do you know of any
outstanding issues?

--
Sincerely,

Jazzman (a.k.a. Justin Hickey) e-mail: jhickey@hpcc.nectec.or.th
High Performance Computing Center
National Electronics and Computer Technology Center (NECTEC)
Bangkok, Thailand

People who think they know everything are very irritating to those
of us who do. ---Anonymous

Jazz and Trek Rule!!!

----------------------------------------
If you want to unsubscribe from GRASS Development Team mailing list write to:
minordomo@geog.uni-hannover.de with
subject 'unsubscribe grass5'

On Wed, Mar 14, 2001 at 03:55:30AM -0800, strobe anarkhos wrote:

I'm moving forward on my plan to improve GRASS 2D display (adding
layers, alpha channel, resolution independent graphics, rulers,
WYSIWYG printing, etc.) . I have a small question about sockets.

I'm using GRASS 5 as my base and thus am using fifos in a fully
compatible fashion to other grass5 display drivers. To my knowledge
the developmental version 5.1 is using sockets instead of fifos to
connect the display commands to the servers.

Are clients pushing the same data to the servers in 5.1?

What you'll want to look at is the src/libes/raster code, and then
mostly the SWITCHER.c. If you look at the SWITCHER.c in
src/display/devices/XDRIVER/XDRIVER24/socket.new/ you'll see how I'm
currently handling (a) getting the socket file path, (b) checking if the
socket is in use, (c) binding to the socket (returns a file descriptor),
(d) fork, then start listening on the "bound" file descriptor, (e) then
using select() with the listening file descriptor; on "timeout", process
Xevents; on connection pending, accept the connection and see what the
client wants (i.e. process requests).

The modules don't know anything about the communications path; that's
handled by the misnamed "raster" library function calls. The various
wrapper routines "G_sock_*" are in src/gis/libes/unix_socks.c. These
routines make it possible for the servers and raster lib to only have to
worry about a filename and a couple of file descriptors (all the socket
structures are handled transparently).

How do the clients/servers know which sockets to use? With fifos they
are included in the arguments, however with sockets I would think the
display driver takes the initiative to register sockets which the
clients look for, however that's pure speculation on my part.

It's done by "name". That is, a routine in the aforementioned
"unix_socks.c" file, makes a file path using the server's name and the
current mapset temp file directory. It's very simple. "d.mon" executes
each server process with a certain name (like "x0"), so the server just
looks at argv[0] to find out its "name" and calls G_sock_get_fname(me)
to get a full path for the call to G_sock_bind(). The raster lib does a
similar thing. It just queries the "environment" for the name of the
currently active display driver (set by d.mon), calls
G_sock_get_fname(driver) and then G_sock_connect(path) to get a file
descriptor. After that, it's all read() and write() until a close() or
the process exits. Sockets are duplex, so only one file descriptor is
needed for both reading and writing (server's have two, a listening
descriptor and, after a successful G_sock_accept(), a connected
descriptor).

My code uses functions in connect.c and SWITCHER.c in GRASS 5.0 to
check the validity of fifos and to then 'connect' to them (read/write
to them). The functions are used/copied verbatim, I don't change the
initial dispatch method (which is currently calling a bunch if inline
drawing functions). If your sockets implementation is similar to the
fifo implementation I should be able to support both methods easily.

Pretty much all of the code in connect.c is usused/unnecessary with the
sockets set-up (at least, I don't use it). It is the source of some
read() blockage that is one of the many places where a blocked read()
call makes it impossible to handle Xevents like Expose.

I hope nobody is adding functions to the display driver function set
in 5.1. As soon as I support the current set I'll post the functions I
plan to add for layers etc. Hopefully no parallel work is going on.

I think we really need a function for plotting polygons with holes.
I've been working on a major work-around in d.area, having now written
some 1300 lines of code. Modules should not have to go through such
contortions...

(FYI what I actually do is use two executables. One acts as the
display driver and tells the primary application which fifos to use to
create a new display canvas document. The display driver initializer
knows the primary app is running because it vends an object as a
server. I have to do this because fifos are passed as command
arguments instead of some runtime method which you may or may not be
using with sockets. Either way I can allow the primary application to
create or accept sockets or use the prior method if it's more like
fifos and command line arguments. I hope that made sense.)

Are you saying, instead of having 2 programs involved, we'll now have
three?

In the long run, my personal opinion is we should move toward a regular
GUI interface for interactive display usage. Parallel to this should be
an effort to expand and improve the capabilities of ps.map. This way, in
theory, we should be able to develop better interactive display tools,
while having a good avenue for script-based generation of maps. The
CELL and PNGDrivers are serviceable, but it makes more sense to me to
have a high level mapping language/command set and possibly have other
targets than PostScript.

I know only enough GUI stuff to get me in trouble, but given the wide
number of platforms we wish to support, I think Tk is the only viable
solution. I've seen some really nice Tk apps and I believe it could
handle pretty much all we want.

The basic architechture of the display code is just wrong for
interactive use. It's just not designed to handle all kinds of random
things that users do. I don't have much experience here, but it seems
the design needs to be more action-response oriented using callbacks or
some other method.

--
Eric G. Miller <egm2@jps.net>

----------------------------------------
If you want to unsubscribe from GRASS Development Team mailing list write to:
minordomo@geog.uni-hannover.de with
subject 'unsubscribe grass5'

> My code uses functions in connect.c and SWITCHER.c in GRASS 5.0 to
> check the validity of fifos and to then 'connect' to them (read/write
> to them). The functions are used/copied verbatim, I don't change the
> initial dispatch method (which is currently calling a bunch if inline
> drawing functions). If your sockets implementation is similar to the
> fifo implementation I should be able to support both methods easily.

Pretty much all of the code in connect.c is usused/unnecessary with the
sockets set-up (at least, I don't use it). It is the source of some
read() blockage that is one of the many places where a blocked read()
call makes it impossible to handle Xevents like Expose.

I'll have to look at the new code I guess (sigh).

The old fifo code was really ugly. I mean connect.c shouldn't even exit, just put it in SWITHCER.c

Oh well I guess I'll have to somehow get a current source tree. I don't suppose anybody can tarball it, I can't use CVS easily because I'm on a modem, but I can download an archive from a faster ISP.

> I hope nobody is adding functions to the display driver function set
> in 5.1. As soon as I support the current set I'll post the functions I
> plan to add for layers etc. Hopefully no parallel work is going on.

I think we really need a function for plotting polygons with holes.
I've been working on a major work-around in d.area, having now written
some 1300 lines of code. Modules should not have to go through such
contortions...

The whole GRASS display system sucks IMO.

I don't want to fix an old system if we can move on to something better. For example after I add resolution independent display functions d.area would cease to use the old resolution dependent functions.

> (FYI what I actually do is use two executables. One acts as the
> display driver and tells the primary application which fifos to use to
> create a new display canvas document. The display driver initializer
> knows the primary app is running because it vends an object as a
> server. I have to do this because fifos are passed as command
> arguments instead of some runtime method which you may or may not be
> using with sockets. Either way I can allow the primary application to
> create or accept sockets or use the prior method if it's more like
> fifos and command line arguments. I hope that made sense.)

Are you saying, instead of having 2 programs involved, we'll now have
three?

The problem is fifos are passed with a command argument and I do not want multiple display drivers running. Instead I have one app running which handles multiple sets of fifos. However to interface with the old command line syntax I need a seperate executable to act as the display driver which then notifies the primary app that a new pair of fifos are ready to be used.

I couldn't understand what you said about sockets so I'll have to look at the code somehow. It sounded like you still use command line arguments so I'll have to use the same technique.

In the long run, my personal opinion is we should move toward a regular
GUI interface for interactive display usage. Parallel to this should be
an effort to expand and improve the capabilities of ps.map. This way, in
theory, we should be able to develop better interactive display tools,
while having a good avenue for script-based generation of maps. The
CELL and PNGDrivers are serviceable, but it makes more sense to me to
have a high level mapping language/command set and possibly have other
targets than PostScript.

I disagree 100%

ps.* commands ought to drop off the face of the earth. I will support WYSIWYG printing, however I will not be using ps.* commands or any of it's code. I can do this because I'm using a higher level API which can convert resolution independent images to postscript, thus when d.area draws a map using my resolution independent commands my code constructs a vector map in floating coordinates which are implicitly composited to the screen, or a printer, or whatever. Thus I support superior postscript, PDF, and raster printing without much work.

I know only enough GUI stuff to get me in trouble, but given the wide
number of platforms we wish to support, I think Tk is the only viable
solution. I've seen some really nice Tk apps and I believe it could
handle pretty much all we want.

I disagree 100%

TclTk sucks. In fact there are serious limits to any graphical interface for commands. For example my specialized interface will support limitless undo/redo, but that will *never* happen with TclTk.

The basic architechture of the display code is just wrong for
interactive use. It's just not designed to handle all kinds of random
things that users do. I don't have much experience here, but it seems
the design needs to be more action-response oriented using callbacks or
some other method.

It's not only the display code which is 'wrong' for interactive use (if I understand what you mean by that). The commands themselves are also part of the problem.

If I could I would start over using the GRASS library as the starting point creating a framework for model, view, and control commands but I'm only one person and I have to work within my limits. As such I can work with the current flawed framework (time permitting).

My display driver will eventually support interactive features like limitless undo/redo, persistence, zooming, WYSIWYG printing, etc. However to create interactive features like group selection and so on we will have to create a new framework so that graphics can be treated as objects. It would be possible to use my work as a point to begin this framework, but I don't think I'll be doing it myself (unless I get paid or something).

In my experience it's difficult to get popular support for such things especially when they are used to crummy interfaces.

----------------------------------------
If you want to unsubscribe from GRASS Development Team mailing list write to:
minordomo@geog.uni-hannover.de with
subject 'unsubscribe grass5'

strobe anarkhos wrote:

Oh well I guess I'll have to somehow get a current source tree. I
don't suppose anybody can tarball it, I can't use CVS easily because
I'm on a modem, but I can download an archive from a faster ISP.

There are tarballs of CVS snapshots available. Having installed the
tarball, you can then use CVS for periodic updates. See:

http://www.geog.uni-hannover.de/grass/grass5/source/snapshot/

As for your comments regarding the user interface, have you looked at
OSSIM (ossim.org)? This is currently the opposite of GRASS (i.e.
modern UI but no real functionality yet). I do know that they are
planning on a "bridge" to GRASS.

--
Glynn Clements <glynn@sensei.co.uk>

----------------------------------------
If you want to unsubscribe from GRASS Development Team mailing list write to:
minordomo@geog.uni-hannover.de with
subject 'unsubscribe grass5'

As for your comments regarding the user interface, have you looked at
OSSIM (ossim.org)? This is currently the opposite of GRASS (i.e.
modern UI but no real functionality yet). I do know that they are
planning on a "bridge" to GRASS.

Sounds horrible.

Anyway if you take a generic library or command and make a UI for it, it's going to suck. Why? because it's not following the MVC methodology. This is to say the model view controller methodology. With MVC you have an understanding when you are editing the model (data) and thus have better control over persistence or undo/redo or high level scripting (like VB or AppleScript) while the view acts independently of the model and the controller links the two. The model and viewww classes are also highly reusable due to their independence so we concentrate all implementation-specific code in the controller classes. Thus we can create a completely new UI like a command line without breaking undo/scripting/persistence/etc.

I would love to take the GRASS library and create a bunch of model classes for it from which people can create their own view classes and controllers. I don't have the 'free' time to do that however, I only have the time to extend the display function set so my GRASS port isn't horrible. Within this I have my own model classes (for graphics objects) and view (for display and printing) and controller (to interface the two) so I can implement undo/scripting/persistence for any drawing commands. To do this with all commands would require writing classes to interface with the GRASS library and a new set of commands which use my classes. I think this would be great but I don't have the 'free' time to do that on my lonesome.

----------------------------------------
If you want to unsubscribe from GRASS Development Team mailing list write to:
minordomo@geog.uni-hannover.de with
subject 'unsubscribe grass5'

On Thu, Mar 15, 2001 at 01:06:33AM -0800, strobe anarkhos wrote:

>Pretty much all of the code in connect.c is usused/unnecessary with the
>sockets set-up (at least, I don't use it). It is the source of some
>read() blockage that is one of the many places where a blocked read()
>call makes it impossible to handle Xevents like Expose.

I'll have to look at the new code I guess (sigh).

The old fifo code was really ugly. I mean connect.c shouldn't even
exit, just put it in SWITHCER.c

Oh well I guess I'll have to somehow get a current source tree. I
don't suppose anybody can tarball it, I can't use CVS easily because
I'm on a modem, but I can download an archive from a faster ISP.

If you're going to do significant development work, it's worth getting
CVS going. The initial download sucks, but updates usually aren't bad.
I only have a modem as well...

>Are you saying, instead of having 2 programs involved, we'll now have
>three?

The problem is fifos are passed with a command argument and I do not
want multiple display drivers running. Instead I have one app running
which handles multiple sets of fifos. However to interface with the
old command line syntax I need a seperate executable to act as the
display driver which then notifies the primary app that a new pair of
fifos are ready to be used.

But why use fifos at all? I guess I really don't understand what you're
shooting for.

>In the long run, my personal opinion is we should move toward a
>regular GUI interface for interactive display usage. Parallel to
>this should be an effort to expand and improve the capabilities of
>ps.map. This way, in theory, we should be able to develop better
>interactive display tools, while having a good avenue for
>script-based generation of maps. The CELL and PNGDrivers are
>serviceable, but it makes more sense to me to have a high level
>mapping language/command set and possibly have other targets than
>PostScript.

I disagree 100%

ps.* commands ought to drop off the face of the earth. I will support
WYSIWYG printing, however I will not be using ps.* commands or any of
it's code. I can do this because I'm using a higher level API which
can convert resolution independent images to postscript, thus when
d.area draws a map using my resolution independent commands my code
constructs a vector map in floating coordinates which are implicitly
composited to the screen, or a printer, or whatever. Thus I support
superior postscript, PDF, and raster printing without much work.

Well, here I'll have to disagree 100%. Interactive display needs are
not the same as generating cartographic products. Additionally, if
you've ever had to generate 100 similar maps in a hurry you'll find having
to use a GUI really sucks. When you can script the whole thing, and go
home for the night -- now that's nice.

>I know only enough GUI stuff to get me in trouble, but given the wide
>number of platforms we wish to support, I think Tk is the only viable
>solution. I've seen some really nice Tk apps and I believe it could
>handle pretty much all we want.

I disagree 100%

TclTk sucks. In fact there are serious limits to any graphical
interface for commands. For example my specialized interface will
support limitless undo/redo, but that will *never* happen with TclTk.

Well, I don't know what you intend to write, but rewriting an entire GUI
toolkit that's cross-platform is no small undertaking.

>The basic architechture of the display code is just wrong for
>interactive use. It's just not designed to handle all kinds of
>random things that users do. I don't have much experience here, but
>it seems the design needs to be more action-response oriented using
>callbacks or some other method.

It's not only the display code which is 'wrong' for interactive use
(if I understand what you mean by that). The commands themselves are
also part of the problem.

Yes, the architechture of the whole system is wrong...

If I could I would start over using the GRASS library as the starting
point creating a framework for model, view, and control commands but
I'm only one person and I have to work within my limits. As such I can
work with the current flawed framework (time permitting).

Pretty much have to start from scratch I think...

My display driver will eventually support interactive features like
limitless undo/redo, persistence, zooming, WYSIWYG printing, etc.
However to create interactive features like group selection and so on
we will have to create a new framework so that graphics can be treated
as objects. It would be possible to use my work as a point to begin
this framework, but I don't think I'll be doing it myself (unless I
get paid or something).

Well, maybe as we get a better idea of what you have in mind, we can
have multiple people work on it...

In my experience it's difficult to get popular support for such things
especially when they are used to crummy interfaces.

Well, there is comfort in using what you already know. But, I think
most people would warm nicely to a well-designed GUI for GRASS.

--
Eric G. Miller <egm2@jps.net>

----------------------------------------
If you want to unsubscribe from GRASS Development Team mailing list write to:
minordomo@geog.uni-hannover.de with
subject 'unsubscribe grass5'

>
> The problem is fifos are passed with a command argument and I do not
> want multiple display drivers running. Instead I have one app running
> which handles multiple sets of fifos. However to interface with the
> old command line syntax I need a seperate executable to act as the
> display driver which then notifies the primary app that a new pair of
> fifos are ready to be used.

But why use fifos at all? I guess I really don't understand what you're
shooting for.

I'm only telling you the difficulty I have with supporting command line arguments. It's not a question of using fifos or not, it's a question of passing command line arguments to an already running process.

> >In the long run, my personal opinion is we should move toward a
> >regular GUI interface for interactive display usage. Parallel to
> >this should be an effort to expand and improve the capabilities of
> >ps.map. This way, in theory, we should be able to develop better
> >interactive display tools, while having a good avenue for
> >script-based generation of maps. The CELL and PNGDrivers are
> >serviceable, but it makes more sense to me to have a high level
> >mapping language/command set and possibly have other targets than
> >PostScript.
>
> I disagree 100%
>
> ps.* commands ought to drop off the face of the earth. I will support
> WYSIWYG printing, however I will not be using ps.* commands or any of
> it's code. I can do this because I'm using a higher level API which
> can convert resolution independent images to postscript, thus when
> d.area draws a map using my resolution independent commands my code
> constructs a vector map in floating coordinates which are implicitly
> composited to the screen, or a printer, or whatever. Thus I support
> superior postscript, PDF, and raster printing without much work.

Well, here I'll have to disagree 100%. Interactive display needs are
not the same as generating cartographic products. Additionally, if
you've ever had to generate 100 similar maps in a hurry you'll find having
to use a GUI really sucks. When you can script the whole thing, and go
home for the night -- now that's nice.

Huh?

This has absolutely nothing to do with the GUI. when you construct a canvas of various maps and other elements it's not even visible until you display a view or print it.

When you create a canvas of maps and other display layers using the usual d.* commands you can either view or print it (or make a PDF of it).

The ps.* commands ought to drop off the face of the earth because they are superfluous. My method also works with any printer, whether it uses postscript, PDF, or raster. It's also easier to maintain.

> >I know only enough GUI stuff to get me in trouble, but given the wide
> >number of platforms we wish to support, I think Tk is the only viable
> >solution. I've seen some really nice Tk apps and I believe it could
> >handle pretty much all we want.
>
>
> I disagree 100%
>
> TclTk sucks. In fact there are serious limits to any graphical
> interface for commands. For example my specialized interface will
> support limitless undo/redo, but that will *never* happen with TclTk.

Well, I don't know what you intend to write, but rewriting an entire GUI
toolkit that's cross-platform is no small undertaking.

It's actually extremely easy to write a new UI for a set of commands. The difficult part would be writing a new set of commands using a new framework which I would like to do but probably won't.

Anyway the UI is the very last step in my project and will take the least amount of time.

> If I could I would start over using the GRASS library as the starting
> point creating a framework for model, view, and control commands but
> I'm only one person and I have to work within my limits. As such I can
> work with the current flawed framework (time permitting).

Pretty much have to start from scratch I think...

Not really. The existing GRASS library would be the starting point, the commands would have to be re-written however.

My set of classes wouldn't be part of the base GRASS library but would use it. So long the new commands use my classes instead of the GRASS library directly everything would work.

> My display driver will eventually support interactive features like
> limitless undo/redo, persistence, zooming, WYSIWYG printing, etc.
> However to create interactive features like group selection and so on
> we will have to create a new framework so that graphics can be treated
> as objects. It would be possible to use my work as a point to begin
> this framework, but I don't think I'll be doing it myself (unless I
> get paid or something).

Well, maybe as we get a better idea of what you have in mind, we can
have multiple people work on it...

> In my experience it's difficult to get popular support for such things
> especially when they are used to crummy interfaces.

Well, there is comfort in using what you already know. But, I think
most people would warm nicely to a well-designed GUI for GRASS.

I tell you what, my "display driver" will implement things like persistence, multiple undo/redo, high-level scripting, and lots of interactive features. I can do this because the display commands do not alter the database model, only my internal graphics model, thus I have more control. If people want all commands (not just display commands) to have these features we can all get on the bandwagon.

If we were to pursue this any 'old' commands using the GRASS library directly would break the model, but new commands would not. That doesn't mean old commands wouldn't work, it would mean old commands would break things like undo and changes to the database wouldn't be reflected in the display in real time (they would have to be manually redisplayed).

----------------------------------------
If you want to unsubscribe from GRASS Development Team mailing list write to:
minordomo@geog.uni-hannover.de with
subject 'unsubscribe grass5'

Strobe,
excuse my curiosity, but what programming language are you using, and
what kind of libraries? MVC is usually implemented using OO languages
(C++, Java and so on). There already are free GIS user interfaces, why
not try to reuse something already available? (take a look at
www.freegis.org)
Bye
Andrea Aime

strobe anarkhos wrote:

> >
> > The problem is fifos are passed with a command argument and I do not
> > want multiple display drivers running. Instead I have one app running
> > which handles multiple sets of fifos. However to interface with the
> > old command line syntax I need a seperate executable to act as the
> > display driver which then notifies the primary app that a new pair of
> > fifos are ready to be used.
>
>But why use fifos at all? I guess I really don't understand what you're
>shooting for.

I'm only telling you the difficulty I have with supporting command line arguments. It's not a question of using fifos or not, it's a question of passing command line arguments to an already running process.

>
> > >In the long run, my personal opinion is we should move toward a
> > >regular GUI interface for interactive display usage. Parallel to
> > >this should be an effort to expand and improve the capabilities of
> > >ps.map. This way, in theory, we should be able to develop better
> > >interactive display tools, while having a good avenue for
> > >script-based generation of maps. The CELL and PNGDrivers are
> > >serviceable, but it makes more sense to me to have a high level
> > >mapping language/command set and possibly have other targets than
> > >PostScript.
> >
> > I disagree 100%
> >
> > ps.* commands ought to drop off the face of the earth. I will support
> > WYSIWYG printing, however I will not be using ps.* commands or any of
> > it's code. I can do this because I'm using a higher level API which
> > can convert resolution independent images to postscript, thus when
> > d.area draws a map using my resolution independent commands my code
> > constructs a vector map in floating coordinates which are implicitly
> > composited to the screen, or a printer, or whatever. Thus I support
> > superior postscript, PDF, and raster printing without much work.
>
>Well, here I'll have to disagree 100%. Interactive display needs are
>not the same as generating cartographic products. Additionally, if
>you've ever had to generate 100 similar maps in a hurry you'll find having
>to use a GUI really sucks. When you can script the whole thing, and go
>home for the night -- now that's nice.

Huh?

This has absolutely nothing to do with the GUI. when you construct a canvas of various maps and other elements it's not even visible until you display a view or print it.

When you create a canvas of maps and other display layers using the usual d.* commands you can either view or print it (or make a PDF of it).

The ps.* commands ought to drop off the face of the earth because they are superfluous. My method also works with any printer, whether it uses postscript, PDF, or raster. It's also easier to maintain.

>
> > >I know only enough GUI stuff to get me in trouble, but given the wide
> > >number of platforms we wish to support, I think Tk is the only viable
> > >solution. I've seen some really nice Tk apps and I believe it could
> > >handle pretty much all we want.
> >
> >
> > I disagree 100%
> >
> > TclTk sucks. In fact there are serious limits to any graphical
> > interface for commands. For example my specialized interface will
> > support limitless undo/redo, but that will *never* happen with TclTk.
>
>Well, I don't know what you intend to write, but rewriting an entire GUI
>toolkit that's cross-platform is no small undertaking.

It's actually extremely easy to write a new UI for a set of commands. The difficult part would be writing a new set of commands using a new framework which I would like to do but probably won't.

Anyway the UI is the very last step in my project and will take the least amount of time.

>
>
> > If I could I would start over using the GRASS library as the starting
> > point creating a framework for model, view, and control commands but
> > I'm only one person and I have to work within my limits. As such I can
> > work with the current flawed framework (time permitting).
>
>Pretty much have to start from scratch I think...

Not really. The existing GRASS library would be the starting point, the commands would have to be re-written however.

My set of classes wouldn't be part of the base GRASS library but would use it. So long the new commands use my classes instead of the GRASS library directly everything would work.

>
> > My display driver will eventually support interactive features like
> > limitless undo/redo, persistence, zooming, WYSIWYG printing, etc.
> > However to create interactive features like group selection and so on
> > we will have to create a new framework so that graphics can be treated
> > as objects. It would be possible to use my work as a point to begin
> > this framework, but I don't think I'll be doing it myself (unless I
> > get paid or something).
>
>Well, maybe as we get a better idea of what you have in mind, we can
>have multiple people work on it...
>
> > In my experience it's difficult to get popular support for such things
> > especially when they are used to crummy interfaces.
>
>Well, there is comfort in using what you already know. But, I think
>most people would warm nicely to a well-designed GUI for GRASS.

I tell you what, my "display driver" will implement things like persistence, multiple undo/redo, high-level scripting, and lots of interactive features. I can do this because the display commands do not alter the database model, only my internal graphics model, thus I have more control. If people want all commands (not just display commands) to have these features we can all get on the bandwagon.

If we were to pursue this any 'old' commands using the GRASS library directly would break the model, but new commands would not. That doesn't mean old commands wouldn't work, it would mean old commands would break things like undo and changes to the database wouldn't be reflected in the display in real time (they would have to be manually redisplayed).

----------------------------------------
If you want to unsubscribe from GRASS Development Team mailing list write to:
minordomo@geog.uni-hannover.de with
subject 'unsubscribe grass5'

----------------------------------------
If you want to unsubscribe from GRASS Development Team mailing list write to:
minordomo@geog.uni-hannover.de with
subject 'unsubscribe grass5'

At 8:18 AM +0100 3/16/01, Andrea Aime wrote:

Strobe,
excuse my curiosity, but what programming language are you using, and
what kind of libraries? MVC is usually implemented using OO languages
(C++, Java and so on). There already are free GIS user interfaces, why
not try to reuse something already available? (take a look at
www.freegis.org)

Everything I have seen thus far doesn't use the MVC methodology or the features I'm describing.

If I were to create a model (or set of models or model hierarchy) for the GRASS library I would use Core Foundation which is part of Darwin (and thus open source and free). It's been ported to many other platforms (it's highly portable). Here's an overview:

http://developer.apple.com/techpubs/macosx/CoreFoundation/Overview/CFOverview/index.html

Core Foundation provides a method to define objects in a language neutral manner. In fact OS X supports C, Objective-C, and Java interfaces for the same objects meaning programs written in C, ObjC, and Java on the same machine have access to the same objects. It's really quite awesome.

Of course "Cocoa Foundation" (which is pretty much identical to GNUStep Foundation and OpenStep Foundation) has a few advantages in being a more flexible language than say Java. But that doesn't matter, you're always limited by the language you use, what's neat about Core Foundation is they didn't cripple Foundation when they added interfaces for C and Java which are relatively inflexible languages.

I don't know if Core Foundation has been ported to Windows, although it shouldn't be difficult.

The command line 'controller' class would also be written in Core Foundation and be highly portable.

The view class I'm already working on and uses AppKit which is the same API as GNUStep's AppKit. You can write a different view class of course using C or C++ (which can access Core Foundation which has a C interface) if you want, but AppKit has graphics abstraction and isn't tied to a specific display server like display postscript or X11 or whatever. It accomplishes this using NSBezierPath which draws complex graphics in an abstract manner.

One caveat is I have never used GNUStep so I don't know how fast it renders paths.

Anyway I hope I answered your question.

----------------------------------------
If you want to unsubscribe from GRASS Development Team mailing list write to:
minordomo@geog.uni-hannover.de with
subject 'unsubscribe grass5'

Hi,

"Eric G. Miller" wrote:
<snip>

> It's not only the display code which is 'wrong' for interactive use
> (if I understand what you mean by that). The commands themselves are
> also part of the problem.

Yes, the architechture of the whole system is wrong...

Care to elaborate? Do we have a better proposal? Or even just some rough ideas?

> If I could I would start over using the GRASS library as the starting
> point creating a framework for model, view, and control commands but
> I'm only one person and I have to work within my limits. As such I can
> work with the current flawed framework (time permitting).

Pretty much have to start from scratch I think...

Or could we rebuild the core libraries and define new API's (for 5.1? though
probably slightly longer term), then provide wrappers around the new code so
existing commands don't break? Should be possible for at least part of the
library, such as the catalogue services and region of interest - though as a
newbie to grass I could well be wrong about that :wink:

> My display driver will eventually support interactive features like
> limitless undo/redo, persistence, zooming, WYSIWYG printing, etc.
> However to create interactive features like group selection and so on
> we will have to create a new framework so that graphics can be treated
> as objects. It would be possible to use my work as a point to begin
> this framework, but I don't think I'll be doing it myself (unless I
> get paid or something).

Well, maybe as we get a better idea of what you have in mind, we can
have multiple people work on it...

> In my experience it's difficult to get popular support for such things
> especially when they are used to crummy interfaces.

Well, there is comfort in using what you already know. But, I think
most people would warm nicely to a well-designed GUI for GRASS.

Just a thought :slight_smile:

cheers,
John
----------------------------------------------------------------------
john reid e-mail john_reid@uow.edu.au
technical officer room G02, building 41
school of geosciences phone +61 02 4221 3963
university of wollongong fax +61 02 4221 4250

uproot your questions from their ground and the dangling roots will be
seen. more questions!
                                                       -mentat zensufi

apply standard disclaimers as desired...
----------------------------------------------------------------------

----------------------------------------
If you want to unsubscribe from GRASS Development Team mailing list write to:
minordomo@geog.uni-hannover.de with
subject 'unsubscribe grass5'