Hi Pritpal,

> > The question is which way to choose to rewrite it _once_.
> > Options: GUI and WUI (web UI). For me a GUI is only an
> > option if it's at least portable, and it's a plus if it's relatively
> > easy to migrate CUI source, possibly with gradual rewrite.
> >
>
> This is EXACTLY the theme of GTWVG. Reusability of Clipper source.
> Just add few lines and have a nice look and feel.


Personally I don't want to keep UI source code by all means.
The problem with this approach is that it rarely gives a native
GUI feel. What would be important though is to have a relatively
easy upgrade path, and what helps a lot is if you can convert
your app window-by-window.

> classes can live by themselves (or not), and its also unclear
> > how the different namespaces / internal components are
> > connected to each other.
> >
>
> Yes, off course, too many things. But all are detachable, all
> can be used separately as well as cummulatively. Namespaces
> are strikingly distinguished. None interfare with others. And it is
> relatively easy to separate if there is a need for so.


I would suggest this route, if for nothing else, for the reason of clarity.
If it's clear, maybe other can also join the effort of developing it,
or we can at least have a better idea of what "assets" we have
there.

This is a question of debate. I choose Xbase++ modal on the strength
> of its sheer uniformity in calling conventions and parameter passing
> PLUS a decent documentation you need not to rewrite PLUS a large
> user base. Enough reasons to base.


Yes, these are absolutely valid ones. I really cannot judge here by
lack of experience and knowledge.

Xbase++ compatible framework is purely on PRG level. To make it
> multi-platform you need to call the OS API. So it it is just a matter
> of time when someone copy its class structure and implement the
> next platform.


Jumping on the theoretical level: .prg code _can_ be non-portable
for several reasons, starting from non-portable concepts, through
focusing on OS specific features / models, ending with simple
non-portable code (filename handling, using OS specific Harbour
features, using non-portable OS features.) So, generally speaking
.prg code is not a guarantee for portable code. I didn't speak here
about Xbase++ classes, or your implementation, since I don't know
them enough, but rather in general terms.

Sadly. And hence GTWVG + Xbase++ implementation is a
> single handed effort in that direction.


Yes, one problem I see, is the mentioned problem of everything
being meshed together which makes is very difficult to oversee.
The sheer size of GTWVG also became huge, 1.5MB of source.
This IMO needs to be organized. The other part is deep deep
Windows dependence. I understand this is a Windows-only
contrib, but still, staying along the Harbour dev guidelines and
trying to isolate (or even avoid some of) these parts would certainly
help in suggesting a portable approach. GTWVG is doing everything
by itself, I don't see why does it need to have a duplicated OLE
engine. Time would better be spent on fixing our existing implementation,
rather than adding another one with similar or other flaws.
Big problem is that Xbase++ parts are closely tied to WVG GT,
so it cannot even be tried out without using WVG GT.

A few points which could be fixed:
- To avoid xhb.lib (which isn't terribly portable)
- To not use Harbour internals.
- To not use CPU specific code.
- Separation of OLE/ActiveX.
- Maybe it's impossible now, but GTWVG could inherit from GTWVT,
  instead of copy-pasting (duplicating) functionality.
- Modularize, modularize, modularize :)

I'd imaging these layers with clear namespace and file structure:
- GT (inheriting from WVT and others in the future)
- WAPI functions
- WIN functions
- WVG functions (named WVT_* - this is also a big reason for confusion)
- Xbase++ parts
- GTWVW functions.

With clear call rules:
- Xbase++ parts call WAPI/WIN API only.
- WVG functions call WAPI/WIN API, uses WVG GT dependent features only.
- GTWVW functions call WAPI/WIN API only.
- WIN calls WAPI only.
- All above parts can of course you any std Harbour API.

Since I understand you have a strong concern of being compatible
with your own software, I think you should somehow detach this
need from GTWVG general development, maybe with a set of
compatibility API (not necessarily public), or by other means. But
this is really something I can only advise on, it's your time and
your effort.

Brgds,
Viktor
_______________________________________________
Harbour mailing list
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to