[Gnome-devtools] Recent gIDE changes



During comdex I made a number of changes to gIDE.  I'll be committing
these changes tonight (hopefully), into the bonobo-gide branch.  I'm
sending this mail to give a quick overview of the changes involved:

The major change I made is to the editor.  I replaced the current editor
with one that uses bonobo to load and interact with the editor.  Right
now there is a scintilla-based implementation of the editor in the gdl/
module.  The editor implements three interfaces:  Bonobo::Control (for
embedding the UI), Bonobo::PersistFile (for loading and saving files)
and Development::EditorBuffer (which will probably be renamed at some
point, and is used for manipulating the contents of the buffer).

Replacing the editor required these major changes:

* I removed all of the editor code from gIDE.  This included things like
the highlighting, text widgets, and all of the gI_document.c
implementation code.  This also meant deriving GideDocument from a
different base class.

* Moved gI_text functions into gI_document.  This split was really
somewhat artificial, and made no sense with the new code.  So
gI_text.[ch] are now obsolete.

* Re-implemented gI_document with the bonobo stuff.  This included
adding all the gI_text and gtk_editable functions that needed
implementing.

* Fixed up all the calling code.

Besides the editor code, I made a few other changes:  

* Made the main window use EPaned rather than GtkPaned.  EPaned is just
so much nicer :)

* Made plugin menu adding work again.  Plugin menu removing and toolbar
manipulation doesn't work though :)

There are a number of things left to be done.  Some of these are on my
todo list for the short term, some could use some help if people wanted
to do it:

* The plugins should be reworked to do their own menu merging with the
new bonobo UI code.

* It should be possible to write plugins as CORBA objects rather than C
code/gmodules.

* There are some editor bugs, particularly in the deletion code.

* The code should be scanned again to make sure that nothing is trying
to treat a GideDocument as a GtkEditable/GtkEditor/GtkSCText.

* Some inefficiencies need to be cleaned up.  What used to be a local
function call or array reference is now an RPC call.  I did a very basic
conversion, and didn't clean up any inefficiencies. 
So what used to be:

for (i = 0; i < gI_text_get_length (document); i++) {
    char *text = gtk_editable_get_chars (GTK_EDITABLE (document), i, i +
1);
}

is now:

for (i = 0; i < gI_document_get_length (document); i++) {
    char *text = gI_document_get_chars (document, i, i + 1);
}

but SHOULD be:

int length = gI_document_get_length (document); 
for (i = 0; i < length; i++) {
    /* I'll be adding buffering code to make this relatively efficient
*/
    char *text = gI_document_get_chars (document, i, i + 1);
}






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