Octave GTK+
Octave GTK+ is a project that aims to add GTK+ bindings to Octave by extending it, and build a GUI for Octave around these features of GTK+. You can download versions of Octave-GTK from here http://octave-gtk.sf.net.
Rationale
http://www.octave.org, as most you will be familiar with, is the scientific computation tool that is used for BLAS & Linear algebraic computations. Currently GNU Octave exists as a an interpreter written in C++, with support for a language Octave much similar to the language like Matlab. However it has severe limitation of not being able to integrate a GUI framework for Octave, and remains tied down to the simple Text UI. We are working towards a GTK+ binding for Octave.Adding GTK support to Octave would definitely add teeth to Octave by giving GUI + Scientific computation together like other non-free counterparts do. With GTK+ bindings it is now possible to access GUI & implement programswith a scientific engine & GUI easily.
Status
As of now Octave-GTK is in 0.3 version, maps GTK+ version 2.2+ and compiles out of the box, [Ofcourse you need Octave libraries & GTK-devel].
This package is autotooled and has a many of GTK-C API examples.
Progress
We have Unstable bindings for the following packages, as of release 0.3(Galadriel)
* GTK+
- gtk
- gdk
- pango
- atk
- glib
* Glade
- Libglade
gobject is missing, and the most important part, will get fixed sooner.
Documentation/Help
- Octave-GTK uses a typical, GTK C API like standards. But its possible to go for an OO PI, which we will be doing soon. As of this release its still in the GTK C API format.
A simple Octave-GTK+ program looks like this
%(C) Feb 2005 Muthiah Annamalai, Octave-GTK & Octave-libGlade
gx=0
function on_spin_changed()
global gx
label=glade_xml_get_widget(gx,"label");
b=glade_xml_get_widget(gx,"spin");
count=gtk_spin_button_get_value_as_int(b);
buffer=sprintf("%3d",count);
gtk_label_set_text(label,buffer);
end
function main()
global gx
gtk()
glade()
gtk_init()
gx=glade_xml_new("gnu.glade","window","");
glade_xml_signal_autoconnect(gx);
w=glade_xml_get_widget(gx,"window");
g_signal_connect(w,"destroy","gtk_main_quit");
gtk_widget_show_all(w);
gtk_main();
return
end
main()
%gcc -o gnu -Wall gnu.c `pkg-config gtk+-2.0 --cflags --libs` -I/usr/include/libglade-2.0 -lxml -lglade-2.0While your standard GTK-C API programs are no different, [actually otherway round], as you see here
#include<stdio.h>
#include<gtk/gtk.h>
#include<glade/glade.h>
/*
(C) Feb 2005 Muthiah Annamalai, Octave-GTK & Octave-libGlade
*/
void on_spin_activate(GtkSpinButton *b);
void on_spin_changed(GtkSpinButton *b);
GladeXML *gx;
int main(int argc,char *argv[])
{
GtkWidget *w;
gtk_init(&argc,&argv);
gx=glade_xml_new("gnu.glade",NULL,NULL);
g_assert(gx != NULL);
glade_xml_signal_autoconnect(gx);
w=glade_xml_get_widget(gx,"window");
g_signal_connect(G_OBJECT(w),"destroy",G_CALLBACK(gtk_main_quit),NULL);
gtk_widget_show_all(w);
gtk_main();
return 0;
}
void on_spin_changed(GtkSpinButton *b)
{
gint count=0;
char buffer[10];
GtkLabel *label=GTK_LABEL(glade_xml_get_widget(gx,"label"));
count=gtk_spin_button_get_value_as_int(b);
sprintf(buffer,"%3d",count);
gtk_label_set_text(label,buffer);
printf("changed: %s <=> %d\n",buffer,count);
}
void on_spin_activate(GtkSpinButton *b)
{
//Doesnt work.
unsigned char count=0;
char buffer[10];
GtkLabel *label=GTK_LABEL(glade_xml_get_widget(gx,"label"));
count=gtk_spin_button_get_value_as_int(b);
sprintf(buffer,"%d",count);
gtk_label_set_text(label,buffer);
printf("actiavted: %s <=> %d\n",buffer,count);
}
/**
gcc -o gnu -Wall gnu.c `pkg-config gtk+-2.0 --cflags --libs` -I/usr/include/libglade-2.0 -lxml -lglade-2.0
*/
Tutorial
A simple LibGlade development with Octave-GTK is covered here. octave_gtk_libglade.html.
This example re-generates the gnu.c C-LibGlade project in Octave-GTK+ as gnu.m. The original glade file is in gnu.glade and both the files present the same interface gnu.png
Developer Lists
There are two lists. octave-gtk-devel[At]lists[do]sf[t]net see http://sf.net/projects/octave-gtk.
Resources
There is a presentation on Octave-GTK project here octave_gtk_hack.sxi.
Download
Get this package from http://sf.net/projects/octave-gtk.