[Xotcl] Re: [Xotcl] Re: [Xotcl] Widgets

Gustaf Neumann Gustaf.Neumann@wu-wien.ac.at
Tue, 6 Feb 2001 13:11:05 +0100 (CET)


>>>>> "CL" == Catherine Letondal <letondal@pasteur.fr> writes:
CL> Gustaf Neumann wrote:
RH> Or wrap every tk command in my xotcl object.
>> 
>> Sometimes, this is a straight forward solution to keeps the
>> XOTcl objects and the tk widget in separate trees. Architecturally,
>> this is not a beauty.

CL> How do you then implement the composite pattern for widgets trees as
CL> explained in:

  ...
CL> In my application, every Tk widget creation is wrapped in a method:
CL>     widgets build ${frame}::widgets::panel {
CL> 	frame $path.panel 
CL>     }
CL> where widgets is of class Object.

 my point is not that you can't do it, the point is that it can be
 done in many ways, but we have for now no definitive best
 solution. The main problem is that often there are other Tcl commands
 (pure Tcl, [incr tcl], tk, ...) that we want to treat like first
 class XOTcl objects. A mechanism suited for Tk is not necessarly the
 best for [incr tcl] or other situations. We are using some ad-hoc
 approaches for the problem already for "package" (see package.xotcl)
 or file (see make.xotcl) based on renaming of the original
 command. The classical solution are object wrappers for "legacy
 components", which are more a programming than a generic approach,
 and are difficult when the "legacy component" has a different
 understanding of e.g. the composite model (like tk). I have
 implemented most of my GUIs via Motif, which is some respects easier
 to integrate, since it follows the idea "every widget has an ID"
 rather than "every widget is a command" (like in tk). The latter
 leads to the "conflict" with XOTcl, which says "every Object is a
 command". OTOH, solving this conflict is quite an interesting and
 generic challenge.

CL> Then you may store informations concerning the widget, in order to
CL> be able to save it, clone it, or whatever.

CL> The composite pattern is very convenient indeed for tk widgets. I
CL> use it to make recursive Tk bindings, or to build a graphical
CL> attribute editor for all the widget tree.

 Catherine, you seem to be quite happy with your Tk integration. Can
 you post a small but complete introductory example. Do you use Tk
 features like "-command"?

 best regards
 -gustaf

CL> --
CL> Catherine Letondal -- Pasteur Institute Computing Center