Re: [gnome-db] Future characteristic



On Mon, 04 Oct 2004 16:48:55 +0200, Rodrigo Moya <rodrigo gnome-db org> wrote:
> On Mon, 2004-10-04 at 09:54 +0200, Vivien Malerba wrote:
> > On Sun, 03 Oct 2004 22:43:58 -0500, Daniel Espinosa Ortiz
> > <esodan yahoo com mx> wrote:
> > > I think we will need Widgets to manage a Fields, may useful when you
> > > create a gnome_db_form.
> > >
> > > The you have gnome_db_text, gnome_db_date, and one for any GdaValue type
> > > exist. this Widget may have an associated Label, and some methods.
> >
> > I've already created such a class, but for libmergeant (can't be used
> > as-is for libgnomedb because it requires the data dictionnary
> > libmergeant maintains). If you want to have a look, the classes are
> > MgDataEntry (the actual base class for widget to be found in a form)
> > and MgDataHandler (a base non widget class to convert between SQL,
> > user and GdaValue some values).
> > 
> it looks to me much better to have a single class than a
> GnomeDbDate/Int/Float, etc. Is that how it works in Mergeant?

Data handling in libmergeant is done using two different type of
classes: the ones used to convert data representations between SQL
strings and GdaValue structures (and human readable strings), and the
ones which are GtkWidget and are data entry widgets (where the user
can enter and modify data).

The first type of classes must implement the MgDataHandler interface
(which are mostly the operations to make the data conversions), and
the second type of classes must implement the MgDataEntry interface
(with operations related to setting and getting values in the widget).

Libmergeant has some built-in actual classes which implement these
interfaces (for all the most common data types: strings or text,
numbers, booleans, dates), and some more can be created as plug-ins (a
few exists like an entry for encripted password for example).

The programmer can then ask for a MgDataHandler or a new MgDataEntry
to handle specified data types (being libgda's data types, or DBMS
specific data types); the object responsible for finding or created
the requested actual object instance which implement the MgDataHandler
or MgDataEntry interfaces is the MgServer object, which saves its
state in the dictionnary (an XML file).

Building a form is then as simple as asking for MgDataEntry widgets
and packing them correctly. To ease that job, libmergeant has a
specific widget: a MgForm.

Please have a look at the libmergeant's documentation in mergeant's
doc/ (gtk-doc, available in devhelp as well).

> 
> > If we want one day to make libmergeant and libgnomedb closer, then I
> > think we should have a kind of framework for form entry widgets in
> > libgnomedb which libmergeant will improve on (I say "improve" because
> > it has a finer view of the data types, etc because of the data
> > dictionnary it maintains).
> > 
> as we talked some time ago, libmergeant and libgnomedb should probably
> be merged at some point in future. The current widgets-only approach of
> libgnomedd makes it quite unattractive for many people, who prefer to
> just use normal GTK widget bound to libgda data. So, I think we should
> try to have libgnomedb/libmergeant be an extension to GTK, so that
> people can continue using any kind of GTK widget with access to the rich
> libgmergeant dictionary. That would make libgnomedb/libmergeant a much
> more attractive library to use.

I've tried to do this in libmergeant whenever possible. The idea is
that the developper can 'pilot' the GUI through the data and not
through the widgets once the GUI definition is done.

Cheers,

Vivien



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]