gnome2 port of anjuta2



I have checked in the initial gnome2 port of anjuta2.  The port is not
complete; there are still a number of bugs and pieces of the system
that haven't been ported yet.

I also took this opportunity to fix a few of the little problems with
anjuta2 that I've noticed over time.

This mail details the changes that were made to anjuta2 during the
initial port, and lists the tasks that are still remaining for people
that want to help out.

Changes
-------

The major change is the gnome2 port.  This means that old-style bonobo
objects were updated to the BonoboXObject style (renamed BonoboObject
in gnome).  The GtkObject->GObject change was reflected.

Since the gnome2 ETable port is not maintained, the two places that
used etable (the layout manager and the plugin manager) have been
disabled.  I believe the layout manager is in GDL now, and I have
begun to reimplement the plugin manager (see below).

I have removed the "Environment" namespace fromt he IDL.  What was
formerly GNOME::Development::Environment::Shell is now
GNOME::Development::Shell.

The shell now passes a complete moniker to the plugins instead of a
shell id.  This means that plugins that want to use the moniker to
access the anjuta2 object model should use "%s!Object" instead of
"anjuta:%s!Object".

Plugins should now have proper factory objects.  The ANJUTA_SHLIB_TOOL
macro has been changed to reflect this.  Look at the project manager
and document manager tools for examples.  This mostly just means
adding a factory server to the server (formerly oaf) file and making
sure your tool uses ANJUTA_SHLIB_TOOL or one of its relatives.  If it
doesn't, you need to make sure you have a proper factory object.

I have begun rewriting the plugin management code.  I'm not done yet,
but I decided to check in what I have so that people could get a look
at the gnome2 port.  The plugin code is much more robust, and supports
plugin dependnecies (already implemented), plugin sets (partially
implemented) and will finally make multiple shells work right (not
implemented).  The version I'm checking in will load plugins correctly
and do dependency checking, but the plugin manager is not fully ported
yet.  My apologies to everyone who saw the screenshot with the new
plugin manager; I'll have the plugin manager working soon.

Plugin dependencies are implemented using bonobo-activation
properties.  To add a dependency to a plugin, use a
"anjuta:dependencies" property:

<oaf_attribute name="anjuta:dependencies" type="stringv">
  <item value="OAFIID:GNOME_Development_Plugin:project-manager"/>
  <item value="OAFIID:GNOME_Development_Plugin:another-plugin"/>
</oaf_attribute>

I also checked in a change to gnome-build that makes the project trees
make a best-effort attempt to load your nautilus theme.

Work to be done
---------------

Most of the plugins have not yet been ported.  I only ported the
project manager and document manager components.  The rest need to be
ported.  Some notes:

  * I didn't port the debugger component because I am not ready to
    check in gnome-debug2.  You should leave this one alone.

  * The evo-mail plugin can't be ported until evolution is ported.

  * The symbol browser plugin needs the symbol browser to be ported in 
    gdl.

  * You should add $(DEPRECATED_FLAGS) to he makefile and remove calls
    to deprecated functions when possible.

Everything else is fair game.

The layout manager needs to be reimplemented.  I believe gustavo is
working on this.

I am using a practice borrowed from nautilus, where I enclose any
unported piece of code with #ifdef GNOME2_CONVERSION_COMPLETE.  This
lets us look at the state of the port by grepping for
GNOME2_CONVERSION_COMPLETE in the source files.  So you can find work
to do by finding GNOME2_CONVERSION_COMPLETE chunks and either porting,
reimplementing, or removing these chunks.

The UI merging is still a bit messed up.

Anyway, have at it.

-dave



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