Octave-GTK 24/02/05 © Octave-GTK Team 24/02/05 Octave-GTK Team Octave-GTK, a language bindings project Hemant Muthu Rams Manik {gnufied, gnumuthu,

Slides:



Advertisements
Similar presentations
VirtualSim Inc. Real tools for virtual worlds Presentation.
Advertisements

IIIMF GUI Open Source Software Foundry
Introduction to the BinX Library eDIKT project team Ted Wen Robert Carroll
Usage of the memoQ web service API by LSP – a case study
Win8 on Intel Programming Course Desktop : Sensors Cédric Andreolli Intel Software
Media Player for the i.MX31 Advanced Embedded Systems Architecture Class Project May 14, 2011 Rafael Castro Ryan Ugland Carlos Cabral.
Instructed by: Ofir Erel Performed by: Adam Levi Marina Skarbovsky.
Automatic Installation System on USB Memory Instructor: Hai Vortman Students: Leeor Langer Eyal Koren.
Software development in robotics: frameworks, tools and the OpenRDK D. Calisi.
Exploring the iPhone SDK Toyin Adedokun & Daniel Laughlin.
AraFell Project By: Joey Peters. System Selection A video game – Video games implement many OS principles Already working on the project Challenging Fun.
Computer Software.
Client-side Applications with PHP Andrei Zmievski & Frank M. Kromann Track: PHP Conference Date: Friday, July 27 Time: 3:45pm – 4:30pm Location: Fairbanks.
An Overview of Qt - asankar1. Agenda About Qt –A brief intro of Qt Qt development tools –Tools used for building Qt application Qt Architecture –The underlying.
© Strategic Mapping & Data Services LLC – Dr. Michael Stachiw – February 2012© Strategic Mapping & Data Services LLC Android Programming Dr. Michael A.
Open Office Writer Computer Training Programme Speaker Kumardeep Chaudhary 17th September 2014 (Wednesday)
Ch 1. Introduction Dr. Bernard Chen Ph.D. University of Central Arkansas Spring 2012.
1 Programming Concepts Module Code : CMV6107 Class Contact Hours: 45 hours (Lecture 15 hours) (Laboratory/Tutorial 30 hours) Module Value: 1 Textbook:
Chapter 1 Introduction to Visual Basic Programming and Applications 1 Joshi R.G. Dept. of Computer Sci. YMA.
Java Beans.
Languages and Environments Higher Computing Unit 2 – Software Development.
OpenAlea An OpenSource platform for plant modeling C. Pradal, S. Dufour-Kowalski, F. Boudon, C. Fournier, C. Godin.
Introduction to MATLAB adapted from Dr. Rolf Lakaemper.
1 ITSK 2611 Welcome. 2 Operating System 3 What is an OS Resource Manager –Disk –Memory –CPU Device Manager –Printers –Video Card –Sound Card Utility.
Proposalz Generator Plus July Proposalz Generator Plus
A Comparison of Linux vs. Windows Bhargav A. Sorathiya B.E. 4 th C.E. Roll no:6456.
By Roland Foster Supervisors: Mr. Mehrdad Ghaziasgar Mr. James Connan Mentor: Mr. Warren Nel.
Capture and Replay Often used for regression test development –Tool used to capture interactions with the system under test. –Inputs must be captured;
CS 425 Game Programming I Jan M. Allbeck. Outline  Introductions  Expectations  Tools and setup  Quick introduction to C++ and Visual Studio  What.
Presented By: Muhammad Tariq Software Engineer Android Training course.
Integrated Development Environment (IDE)
Domain-Specific Development Stuart Kent, Senior Program Manager, DSL Tools, Visual Studio Team System, Microsoft.
Ch 1. A Python Q&A Session Spring Why do people use Python? Software quality Developer productivity Program portability Support libraries Component.
Grid Computing Research Lab SUNY Binghamton 1 XCAT-C++: A High Performance Distributed CCA Framework Madhu Govindaraju.
PVSSProxy The first piece of the MACS procedure framework (ProShell) Angela Brett.
1 Geospatial and Business Intelligence Jean-Sébastien Turcotte Executive VP San Francisco - April 2007 Streamlining web mapping applications.
GTK Binding for Alice Robert Grabowski Eine GTK-Schnittstelle für Alice.
WebSphere Portal Technical Conference U.S Creating Rich Internet (AJAX) Applications with WebSphere Portlet Factory.
WEP Presentation for non-IT Steps and roles in software development 2. Skills developed in 1 st year 3. What can do a student in 1 st internship.
Java GUI building approaches Aleksandar Kartelj Faculty of Mathematics, Belgrade 11 th Workshop “Software Engineering Education and.
GUI With GTK+ Under Linux Fanfan Xiong. Introduction GTK+ (GIMP toolkit) : A library for creating graphical user interfaces(GUI) Two examples developed.
Chapter 6 CASE Tools Software Engineering Chapter 6-- CASE TOOLS
Gerhard Klimeck High Performance Computing Group Software Development at Academia, Government Labs, Industry John Barker Agenda/Questions: How can the.
PRIOR TO WEB SERVICES THE OTHER TECHNOLOGIES ARE:.
Overview GUI Programming with GTK+ and GLADE 장정철.
Course Name: Software Engineering Year: Teachers names: Dr. Shmuel Tyszberowicz, Mr. Eyal Ben-Ari Project Name: GIC.
FORTRAN History. FORTRAN - Interesting Facts n FORTRAN is the oldest Language actively in use today. n FORTRAN is still used for new software development.
Ch 1. A Python Q&A Session. Why do people use Python? Software Quality Developer productivity Program portability Support Libraries Component integration.
Linux History C151 Multi-User Operating Systems. Open Source Programming Open source programming: 1983, Richard Stallman started the GNU Project (GNU.
COMPUTER III. Fundamental Concepts of Programming Control Structures Sequence Selection Iteration Flowchart Construction Introduction to Visual Basic.
GTK+
Developing GUIs With the Eclipse Visual Editor, SWT Edition David Gallardo.
4000 Imaje 4020 – Software Imaje 4020 – Content ■ Content of Chapter Software: 1. Flash Up 2. Netcenter 3. FTP 4. Active X 5. XCL commands 6. Exercise.
Workflow in Microsoft Office SharePoint Server Jessica Gruber Consultant Microsoft Corporation.
Enterprise Library 3.0 Memi Lavi Solution Architect Microsoft Consulting Services Guy Burstein Senior Consultant Advantech – Microsoft Division.
Very Rapid Applications Development on Management Creating management software fastly Creative Common By SA License Matthieu GIROUX -
Gtk2 GTK+ (the GIMP ToolKit) Bratislava, Gtk2 - Overview Graphical toolkit native to X11 (Linux, Unix) Ported to Windows and OS X Written in C,
September 24th 2006, aKademy The Design and Implementation of KJSEmbed Richard Moore,
Writing Really Rad GTK+ & GNOME Applications in C, Python or Java
Building GUI applications with Python, GTK and Glade
CST 1101 Problem Solving Using Computers
Fedora Project / Red Hat
Software for scientific calculations
In-situ Visualization using VisIt
HISTORY Of API.
GNOME/GTK+ Introduction
VISUAL BASIC.
GTK + Programming.
The Basic Usage and The Event Handling in Glade.
Prepared by Peter Boško, Luxembourg June 2012
Presentation transcript:

Octave-GTK 24/02/05 © Octave-GTK Team 24/02/05 Octave-GTK Team Octave-GTK, a language bindings project Hemant Muthu Rams Manik {gnufied, gnumuthu, Step in

24/02/05 © Octave-GTK Team Octave-GTK, a language bindings project ➔ Aims ➔ Rationale/Need ➔ Project Overview ➔ Development Tools ➔ Octave-GTK Today ➔ Octave-GTK demo ➔ What can you do? ➔ More Information Agenda

24/02/05 © Octave-GTK Team Octave-GTK, a language bindings project Aims ➢ Integrate Scientific programming environment with a world-class GUI. ➢ Octave+GTK = Octave-GTK ➢ Octave bindings for GTK+ ➢ Octave GUI

24/02/05 © Octave-GTK Team Octave-GTK, a language bindings project Terms ➢ Scientific Computing ➢ Octave ➢ GTK ➢ GUI ➢ Language Bindings ➢ Language Interoperability ➢ Advantages

24/02/05 © Octave-GTK Team Octave-GTK, a language bindings project Rationale/Need ➢ A Software EcoSystem based around Octave. ➔ Integration of free tools & libraries Enviroments: Lush, SciLab, NumPython Libraries: GD, GTK, Fann, ImageMagick, Audiofile ➔ Octave-GUI Octave-GUI using Octave-GTK itself. ➔ Make porting easier Octave-SWIG: for autogenerating bindings. ➢ Principle of least surprise ➔ A Matlab clone. ➢ RAD for scientific Applications ➔ Stop Re-Inventing the wheel. ➔ Reduce Reuse Recycle. GNU Way. Why start Octave-GTK ?

24/02/05 © Octave-GTK Team Octave-GTK, a language bindings project Project Overview ➢ Octave-GTK: ➔ Octave bindings to GTK ✔ GTK function calls from Octave. ✔ Function call marshalling ✔ Type conversion between Octave & C ➔ Octave bindings to LibGlade, LibGnomeUi, GDK ✔ Language bindings to LibGlade, for easier GUI programming ✔ LibGnome for real GNOME programs ✔ LibGDK for graphics & color. LibGD already ported. ✔ Octave-SWIG: for autogenerating bindings. ➢ Octave-GUI ➔ Octave-GUI using Octave-GTK itself. ➢ #1 Fun project! ➔ All code under this project is GPL'ed

24/02/05 © Octave-GTK Team Octave-GTK, a language bindings project ➢ Octave Bindings produced by Octave-GTK team. ➔ Octave-GTK Octave bindings to GTK. Write GUI code from Octave. ➔ Octave-libGlade Use Glade UI designer.glade files ➔ GD-Octave Image processing from Octave. ➔ Octave-Glade Glade UI Editor customised. ➢ Octave Bindings due from Octave-GTK team ➔ LibGnome for real GNOME programs ➔ LibGDK for graphics & color. LibGD already ported. ➔ LibAtk, LibPango, LibGlib, LibGObject Completes the GTK bindings set. Development Tools

24/02/05 © Octave-GTK Team Octave-GTK, a language bindings project Octave-GTK Today ➔ Octave-GTK works today. ➔ Maps about 2083 functions automagically. ➔ Python code generator ➔ Custom lexer. ➔ Bindings autogenerated. ➔ Exports C API directly. ➔ Part of functions manually wrapped. ➔ Glue code of 35,208 lines of code. ➔ gtk.cpp size 1336Kb. ➔ Binding library, gtk.oct 5572 Kb

24/02/05 © Octave-GTK Team Octave-GTK, a language bindings project Design Issues ➢ Callbacks are AdHoc ➢ Must Write a custom Marshaller. ➢ Type Mapping ➢ Integer to Pointer ➢ Memory Management ➢ Reference counting problem ➢ Quality of binding,GObject. ➢ Native to C, and Octave. ➢ Lag between releases. ➢ C API always newer. ➢ Library Size, Speed ➢ Octave marshalling slow

24/02/05 © Octave-GTK Team Octave-GTK, a language bindings project Components ➢ Octave-GTK (40%) ➔ Difficult to write GUI's. ➔ Repetitive code ➔ Suitable for autogeneration ➔ Tough API to learn. ➔ Version 0.1 ➔ 2083 functions. ➢ Octave-LibGlade (80%) ➔ Easy to write GUI's. ➔ Only Event Handlers ➔ GUI Builder ➔ Easy simple API to learn. ➔ Version 0.1 ➔ 13 functions ➢ Gd-Octave (80%) ➔ Read/Write Image files. ➔ Easy Image Processing. ➔ Convolution, FFT, DFT ➔ Filtering, Analysis/Synthesis ➔ Fairly mature. ➔ Concise API to learn. ➔ Version 0.5 ➔ 75 functions ➢ Octave-Glade (5%) ➔ Glade Hacked ➔ History added? ➔ Customised Window creation ➔ Eliminate Boxed widget building. ➔ Auto-Code generation of octave. ➔ Version 0.1

24/02/05 © Octave-GTK Team Octave-GTK, a language bindings project Demo ➢ Gd-Octave (80%) ➔ Read/Write Image files. ➔ Easy Image Processing. ➔ Convolution, FFT, DFT ➔ Filtering, Analysis/Synthesis ➔ Fairly mature. ➔ Concise API to learn. ➔ Version 0.5 ➔ 75 functions #! /usr/bin/octave -q function main() gd() fp=fopen("mail.png","wb") ip=gdImageCreate(200,40); color=gdImageColorAllocate( ip,0xcc,0xdd,0xff) %draws a square grid for i=0:20:190 gdImageLine(ip,0,i/5,200,i/5,color); gdImageLine(ip,i,0,i,40,color); end gdImageString(ip,"Large",0,20, "gd- gdImagePng(ip,fp); fclose(fp); gdFree(ip); end main()

24/02/05 © Octave-GTK Team Octave-GTK, a language bindings project Demo ➢ Octave-GTK (40%) ➔ Difficult to write GUI's. ➔ Repetitive code ➔ Suitable for autogeneration ➔ Tough API to learn. ➔ Version 0.1 ➔ 2083 functions. #! /usr/bin/octave -q function main() gtk() %load library gtk_init() %initation w=gtk_window_new(0) b=gtk_vbox_new(0,0) gtk_window_set_title(w, "Welcome to Octave-GTK"); entry=gtk_entry_new(); gtk_entry_set_text(entry,"Hello World"); okb=gtk_button_new_with_label("ok"); gtk_container_add(w,b); gtk_container_add(b,entry); gtk_container_add(b,okb); %hookup the signals g_signal_connect(okb, "clicked","gtk_main_quit"); g_signal_connect(w, "destroy","gtk_main_quit"); gtk_widget_show_all(w); gtk_main() %enter main loop end main()

24/02/05 © Octave-GTK Team Octave-GTK, a language bindings project Demo [LibGlade] ➢ Octave-LibGlade (80%) ➔ Easy to write GUI's. ➔ Only Event Handlers ➔ GUI Builder ➔ Easy simple API to learn. ➔ Version 0.1 ➔ 13 functions function main() global xml gtk() %Load GTK Library glade() %Load LibGlade gtk_init() %Initialize GTK Type system. xml=glade_xml_new("ohms.glade","window1",""); win1=glade_xml_get_widget(xml,"window1"); glade_xml_signal_autoconnect(xml); gtk_widget_show_all(win1); gtk_main() end main()

24/02/05 © Octave-GTK Team Octave-GTK, a language bindings project Demo [LibGlade...] ➢ Octave-LibGlade (80%) ➔ Easy to write GUI's. ➔ Only Event Handlers ➔ GUI Builder ➔ Easy simple API to learn. ➔ Version 0.1 ➔ 13 functions #! /usr/bin/octave -q xml="" disp('Ohms law example with octave-libglade') function calculate_cb() global xml disp('Hello World') i=glade_xml_get_widget(xml,"current") r=glade_xml_get_widget(xml,"resistance") v=glade_xml_get_widget(xml,"voltage") amp=str2num(gtk_entry_get_text(i)) ohm=str2num(gtk_entry_get_text(r)) gtk_entry_set_text(v,num2str(amp*ohm)) end

24/02/05 © Octave-GTK Team Octave-GTK, a language bindings project Demo [Complete App] ➢ Design the GUI with Octave-Glade ➢ Glade hacked & customised. ➢ Use the.glade file in your octave program. ➢ Standard LibGlade useage. ➢ Generate GUI from this using Octave-LibGlade ➢ Standard LibGlade useage. ➢ Write callbacks in Octave. ➢ Your Job! Application Logic ➢ Most of this stuff can easily be automated. ➢ Done in Octave-Glade. ➢ Octave-Glade (5%) ➔ Glade Hacked ➔ History added? ➔ Customised Window creation ➔ Eliminate Boxed widget building. ➔ Auto-Code generation of octave. ➔ Version 0.1

24/02/05 © Octave-GTK Team Octave-GTK, a language bindings project Time Line 20 July 2004 Project Launched 29 July 2004 First Octave-GTK Prototype 17 Oct 2004 First Gd-Octave autogenerated code Gd-Octave ported to GNU Autotools. 20 Nov 2004 First Octave-GTK autogenerated 08 Feb 2005 First Octave-libGlade autogenerated/ released 21 Feb Jan 2005 Glade hacked Listed as part of Debian Project GTK Project Octave Project: ? GNOME Project: ?

24/02/05 © Octave-GTK Team Octave-GTK, a language bindings project What can you do? ➢ Use Octave-LibGlade/Octave-GTK ➔ For your science/Engineering projects ➔ Make applications wit Octave- GTK. ➔ Use Octave-GTK for your work. ➢ Request features ➔ Ask for newer libraries for Octave- GTK. ➔ Ask for new type of API ➔ Ask for code/example/documents/demos. ➢ Write new Applications ➔ Stress test Octave-GTK. ➔ Report errors/results. ➢ Write Documentation ➔ Well how else could you get started? ➔ Support us! ➢ Write Code! ➔ Hack with us!

Evolution/Conclusion ➢ Octave-GTK Project is Evolving. 0.1 ➢ Octave-GTK will be industrial strength ➢ Version 0.2 slated for March 1st ➢ We are working! ➢ Furiously Hacking? ➢ GtkExtra, GtkWidgetFactory ➢ SWIG : Simplified Wrapper Generator ➢ Debugger: Octave Debugger ➢ Profiler: Profiler for Octave. ➢ Octave# compiler/Interpreter: 12/27/04 © ECE NIT-T, Muthiah A Octave-GTK, a language bindings project

Information ➢ ➢ ➢ ➢ ➢ /27/04 © ECE NIT-T, Muthiah A Octave-GTK, a language bindings project

The Team 12/27/04 © ECE NIT-T, Muthiah A Hemant Kumar Chemical Engineer NIT-T C++, OOP, Octave Ramasamy Chemical Engineer NIT-T C++, GUI,Octave t Muthiah Electronics Engineer NIT-T GTK, C, Testing Saravana Manickam Mechanical Engineer NIT-T Python, SWIG, C Octave-GTK, a language bindings project

Thanks ● The GNU movement, and free software. – Dr Richard Stallman ● GNU Octave John Eaton ● GTK Peter Mattis, Spencer Kimball, Havoc Pennington, OwenTaylor et- al ● The GNU/Linux OS Linus Torvalds et-al ● PyGTK James Henstridge ● GNOME Miguel De Icaza ● CSG Head Mr.Arun, Mr.Pradeep & Mr. Victor 12/27/04 © ECE NIT-T, Muthiah A Octave-GTK, a language bindings project

12/27/04 © ECE NIT-T, Muthiah A Octave-GTK, a language bindings project Q &A ● Contents of this slides are licensed under GNU FDL