[lazarus] Question about component structure

Shane Miller SMiller1 at stvgb.org
Fri Jul 30 13:01:43 EDT 1999


That sounds fine Michael.  Rename the gtkint.pp file to Interface.pp and we can use it like that.  I was planning on doing a IFDEEF, but it would be better adjusting our path.

Shane


>>> "Michael A. Hess" <mhess at miraclec.com> 07/30 10:41 AM >>>
Jeff Wormsley wrote:
> 
> Working from memory (I am at work now, away from the code) the GTK
> stuff right now is localized to the GTKINT.PP file.  I assume that
> when QT, Win32 native, etc. are put in, that they will be likewise in
> a QTINT.PP and a WIN32INT.PP file.  Will these files be located in the
> LCL directory, or will the LCL have further subdirectories for each of
> these?  Also, the GTK files are in \pp\source\gtk right now.  I assume
> there will be a \pp\source\qt and \pp\source\win32 as well?  Or will
> WIN32 stay as it is under RTL and FCL?  I am a bit curious, but I
> would like to look at the WIN32 API this weekend, as I am a lot more
> familiar with it than GTK.  I want to know where to put things, and
> where to access things that are already there.

You beat me to it.  :-)

I was going to talk with Cliff about this very thing. Since we have
already broken out the source into .pp's and .inc's and separated the
component library into lcl I think it is also a good time to separate
the API stuff.

The /pp/source/gtk should probably stay as it is and we would add
/pp/source/qt  /pp/source/gnome   etc.

However in the lcl we should break out the gtk code into separate
directories lcl/gtk  lcl/qt  lcl/gnome   etc.
We should do this before we get to much further along.

Shane,

Another thing we should probably do now is adjust how the interface.pp
and gtkint.pp interaction works. I mentioned this before. We should
eliminate the interface.pp file and just rename the gtkint.pp class to
be the same as found in the interface unit. Then we place these files
into the lcl/gtk directory with it's own make file. As we move along
fewer and fewer changes will be required of the interface files and they
could be compiled separately from the lcl. Then when a user needs to
build their app they set make to include the lcl/gtk directory and
compile their program.

Now when we make the qt, motif, gnome, whatever, ports we use the exact
same name for the .pp file but place this and the specific .inc's into
their individual directories again with their own makefiles. Now when a
user wants to build a version of their app for qt all they need to do is
adjust their make file to point to the correct lcl subdirectory to use
the correct unit. No code will be needed to be changed and no {$ifdef}
is required. We can even make up a template make file that you type

  make gtk

     or

  make qt

and it will build the users application and use the correct api units to
link the program.

Then as we add more GUI APIs we don't need to change any code all we
need to do is write the interface code for that API. Place it into an
appropriate subdirectory and link against those units. No modifications
to the lcl are required. The lcl wouldn't even need to be recompiled to
use different API's.


-- 
==== Programming my first best destiny! ====

Michael A. Hess      Miracle Concepts, Inc.
mhess at miraclec.com   http://www.miraclec.com 

_________________________________________________________________
     To unsubscribe: mail lazarus-request at miraclec.com with
                "unsubscribe" as the Subject
    archives at http://www.miraclec.com/list_archives/lazarus






More information about the Lazarus mailing list