← Back to team overview

unity-design team mailing list archive

General questions about indicators

 

Hello,

For a few weeks now, me and a friend have been planning
to start a project that would make use of indicators.
However, we are a little bit confused about how *exactly*
they work and I decided to post some general questions
in this list, that seemed to be the best place to ask.

This email is long, but I do hope that someone more deeply
involved can answer it, as otherwise our project will be
stuck.

I'll start with some things that are not exactly questions,
but deductions I'd like confirmed/corrected. In the following
text, concepts will be in caps.

1) The job of an INDICATOR-APPLET is to contain and display
INDICATORS on the desktop. INDICATORS are, for the lack of
a better word, "widgets" that cannot exist on the desktop
on their own and need a container in order to do so. Those
containers are currently INDICATOR-APPLETS, but they could
easily be something else (i.e. there's nothing tying the
concept specifically to panel applets)

2) An INDICATOR-APPLET can contain as much INDICATORS as
it wants. Currently, which INDICATORS each INDICATOR-APPLET
contains and their order have to be hardcoded in the
INDICATOR-APPLET source.

3) LIBINDICATOR is the library needed to build INDICATORS
and INDICATOR-APPLETS. An application should not need to
use those directly.

4) LIBINDICATOR, INDICATORS and INDICATOR-APPLETS are Gtk
specific and the Qt equivalents are a work in progress. One
example is the PLASMA-WIDGET-MESSAGING-INDICATOR, which is
at the same time a Qt equivalent of INDICATOR-MESSAGES and
an INDICATOR-APPLET containing it.

5) LIBDBUSMENU is a toolkit-independent library that the
applications can use to send menu objects via dbus. It is
a concept that exists on its own and does not depend on
anything specifically related to indicators. There are
Gtk and Qt bindings for this library.

6) LIBINDICATE is a toolkit-independent wrapper library
around LIBDBUSMENU for the communication between
applications and INDICATORS (or the Qt equivalent to
INDICATORS) via menu objects. There are Gtk and Qt
bindings for this library.

7) LIBAPPINDICATOR is a Gtk-specific wrapper library around
LIBDBUSMENU for the communication between applications and
INDICATOR-APPLICATION. There is not a Qt equivalent yet.

The questions that will follow now are very dependent on
the statements above have being correctly deduced, so they
might need some adapting if some of those are wrong.

1) Why are INDICATORS and LIBINDICATOR toolkit-specific?
Conceptually, aren't the only toolkit-specific parts
supposed to be INDICATOR-APPLETS?

2) Why does the Gtk (Qt) bindings of LIBINDICATE do not
use the Gtk (Qt) bindings of LIBDBUSMENU?

3) Why is LIBAPPINDICATOR a wrapper directly around
LIBDBUSMENU instead of being a wrapper around LIBINDICATE?
It seems that LIBINDICATE specializes LIBDBUSMENU to
INDICATORS and LIBAPPINDICATOR specializes LIBDBUSMENU
to a *specific* INDICATOR, so it seems less redundant
to wrap LIBAPPINDICATOR around LIBINDICATE.

4) Why does the specification of which INDICATORS go
inside each INDICATOR-APPLET, and their order, are
hardcoded in the INDICATOR-APPLET code? Currently, the
only "configuration" available to the end user is
uninstalling the indicators they don't want and the
only way for developers to experiment with, for example,
the order of INDICATORS is constant recompilation.

Finally, the most important questions: am I being
redundant and all those conceptual questions are
easily answered by a wiki/doc/whatever somewhere?
If the answer is "no", I volunteer myself to start
one.

Also, where I can find complete API documentation
of everything above? The only thing with a -doc
package I've seen is LIBAPPINDICATOR.

Again, sorry for the long mail and hope someone
can answer everything.

Best regards,
Marcelo




Follow ups