
1. Q: I can't figure out the use of PlaceText/DrawString and Line - 
  It seems to me that if I want to draw a horizontal red line in the 
  main window, I could:

  main_window *mw=new main_window("Hello",300,300);
  setcolor(alloc_named_color("red"));
  mw->Line(10,10,290,10);

  but it doesn't work that way... how do I use placetext/drawstring/line?
 
A: Indeed, drawing does not work like you wrote. Well, it's quite the *default*
question about Grafix.

For drawing into a window you have to :
1. define a subclass of "window" (or some other window class)
2. overload its "redraw" method by a specific function that does the
   desired drawing
3. create an instance of this new class as subwindow in your main_window.
4. invoke the main_loop to catch the X-events

eg. see "win-demo.c" :
....
// ** 1. define "my_window" as derived class of window
class my_window : public window {
public: my_window(window & parent, int w, int h, int x, int y) :
  window(parent,w,h,x,y) {}
  virtual void redraw() { // ** 2. virtual fn replaces window::redraw
    int y;                //        and does the actual drawing
    for (y=0; y < height ; y+= 3) line(0, y, width, y);
  }
};
....
main(int argc, char *argv[]) {
  main_window *mainw = new main_window(argv[0], 300, 300);  // Main Window
.... -- other definititons --
  new my_window(*mainw, 60, 60, 110, 0); // ** 3. create an instance
  mainw->main_loop();                    // ** 4. invoke X-event-loop
}
/******************************************************/

This seems quite complicated at a first glance, however, if you understand
a little bit more about X-window you will see that only this approach will work
with it.

BTW. this is also explained in HOWTO.txt :-)
--------------------------------------------------

2. Q:
 > 	I am having trouble compiling your demos.  I get the message
 > cannot open -lX11.  Also, I can't find any installation instructions.  
 > Can you help me?


A: You probably have an unusual path for your Xlib. Try to find the file
libX11.a on your system. It shoulb be located somewhere under 
"/usr/X11/lib...", "/usr/X11R6/lib" or similiar. 
Then add the path ( without the last "/lib") to the XPATH-macro in the 
file "grafix.mk" eg :

ifeq ($(shell uname),Linux)
XPATH = /usr/X11R6
LFLAGS = -L$(XPATH)/lib
endif

and then make again.

The second possibility is you haven't installed Xlib on your system yet.

3. Q:
I'm trying grafix1.2 under linux (g++ 2.5.8).   The previous version
worked perfectly.   With the new version, make depend works, but make
gives...

window.c: In method `void scrolled_window::resize(int, int)':
window.c:1292: cannot convert to a pointer type
window.c:1298: cannot convert to a pointer type
make: *** [window.o] Error 1

Can you help please?

A: I would recommend installing a new gcc version. I use 2.6.3 and 2.7.0 which
work well. 2.5.8 has some flaws.
To solve your problem quickly try the following : change
      vs = new vertical_shifter(*this,sz,h,w,0,sh, (CBHOOK) cbhook, this);
to
      vs = new vertical_shifter(*this,sz,h,w,0,sh, (CBHOOK) &cbhook, this);
							    ^
and the same modification in line 1298.

---------------------------------------------------------------------------
4. Q: 
Question for you - Here's my situation:

1. I have a window that contains 10 buttons.
2. I want to destroy this window, reopen it with the same handle, a
   and then put in 10 *different* buttons, and i want this to happen when 
    the user presses a completely different button in another part of 
   the main window.
3.  Here's how I'm doing it:
	'aux' is the handle to the window, as a child of the main window.
        the buttons are put in with a simple 'new function_button(*aux...)'
      	When the user presses the activation button to move to the next 
	'page', I do this:
	aux->UnMap();
	delete aux;
	Now I want to bring the window back in the same place, so I call the
	same "aux=new window(...)" that I did when I *first* set it up.
	I have to now call aux->Map() (not sure why) to make the window 
	exist.  Then I try putting in buttons the same way as before :
		new function_button(*aux ...)
	but they never appear.  


Any hints?

A:
First, you must keep in mind that using the same handler 'aux' for the new 
window does not make any connection between the two windows. 
It's simply a pointer variable that is set to another value.

Second, to make a new window appear on the screen together with its child 
windows you have to use 'RealizeChildren' after they all are created.

Ie, the following statements should be used:
   aux = new window(...); 
   new button(*aux,....); // some child windows of aux
    ...
   aux->RealizeChildren();

--------------------------------------------------------------------------
5. Q: 
class-browser says 'graph contains cycles' and crashes. Any ideas?

A: 
The "cycles" problem in the class-browser occurs if you have a quite complex
inheritance graph. It is only a methodical problem to display these graphs, and
I hope to solve it the next release.

The problem arises e.g. when you have the following class inheritance :

         Superclass
            ^  ^
           /   |
       Class2  |
          ^    |
           \   |
           Class3

Then it is not possible to compute an unique "depth" value which is needed
by the used method.

6. Q:
at which sites can I found the new version of grafix ?

A:
Usually, all mirrors of sunsite should have grafix in a subdirectory
 /pub/Linux/X11/devel/c++libs or similiar.
A recent short archie inquiery showed the following list of ftp servers :

sites with grafix.1.2.tgz :

primary site
============
sunsite.unc.edu /pub/Linux/X11/devel/c++libs (or /incoming)

found on archie : host archie.funet.fi :
========================================
ftp.warwick.ac.uk /pub/linux/sunsite.unc-mirror/X11/devel

ftp.ms.mff.cuni.cz /MIRRORS/ftp.ibp.fr/linux/distributions/jurix/source/X11/libs
		   /MIRRORS/sunsite.unc.edu/Linux/X11/devel
		   /OS/Linux/distributions/jurix/source/X11/libs

ftp.vse.cz         /pub/386-unix/linux/X11/devel

romeo-klive.nvg.unit.no /pub/linux/sunsite/X11/devel

sunsite.doc.ic.ac.uk /computing/operating-systems/Linux/sunsite.unc-mirror/X11/devel

found on other archies :
========================
parnas.mimuw.edu.pl /linux/X11/devel

from archie.univie.ac.at :
ftp.cc.duth.gr  /pub/unix/Linux/sunsite/X11/devel
ftp.ibp.fr      /pub3/linux/sunsite/X11/devel
		/pub2/linux/distributions/jurix/source/X11/libs
ftp.kfki.hu  	/pub/linux/X11/devel
ftp.loria.fr	/pub/linux/sunsite/X11/devel
ftp.switch.ch	/mirror/linux/sunsite/X11/devel
ftp.univie.ac.at 	/systems/linux/sunsite/X11/devel
sunsite.icm.edu.pl	/pub2/linux/X11/devel

old versions :
=============
 /archive/comp/sources/misc/volume46/grafix

----------------------------------------------------------------------------