September 24th 2006, aKademy The Design and Implementation of KJSEmbed Richard Moore,

Slides:



Advertisements
Similar presentations
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 16 Introduction to Ajax.
Advertisements

More about Ruby Maciej Mensfeld Presented by: Maciej Mensfeld More about Ruby dev.mensfeld.pl github.com/mensfeld.
XStudio Quick Overview Eric Gavaldo
Configuration management
Designing Reusable Frameworks for Test Automation
COM vs. CORBA.
INCREASED PRODUCTIVITY FOR ASSERTION-BASED VERIFICATION (ABV) INCREASED PRODUCTIVITY FOR ASSERTION-BASED VERIFICATION (ABV) DESIGNED FROM THE GROUND UP.
Presented by IBM developer Works ibm.com/developerworks/ 2006 January – April © 2006 IBM Corporation. Making the most of Creating Eclipse plug-ins.
Russell Taylor Lecturer in Computing & Business Studies.
Implementation. We we came from… Planning Analysis Design Implementation Identify Problem/Value. Feasibility Analysis. Project Management. Understand.
ICS 665 Jesse Abdul. jQuery UI Overview  jQuery UI javascript library Includes all UI component functionality  jQuery UI CSS framework Includes standard.
Qt Igor November 8, 2002 Friday’s HENP Group Meeting.
UNIT-V The MVC architecture and Struts Framework.
John Sinclair Oak Ridge National Laboratory
Joel Bapaga on Web Design Strategies Technologies Commercial Value.
Framework for Automated Builds Natalia Ratnikova CHEP’03.
Introduction to Silverlight. Slide 2 What is Silverlight? It’s part of a Microsoft Web platform called Rich Internet Applications (RIA) There is a service.
Zubanov Alexei, 2006 Aug 07 – Sep 28 QtROOT package extension with Coin3D lib.
COM vs. CORBA Computer Science at Azusa Pacific University September 19, 2015 Azusa Pacific University, Azusa, CA 91702, Tel: (800) Department.
Computing on the Cloud Jason Detchevery March 4 th 2009.
Virtual techdays INDIA │ Nov 2010 Developing Office Biz Application using WPF on Windows 7 Sarang Datye │ Sr. Consultant, Microsoft Sridhar Poduri.
Codeigniter is an open source web application. It occupies a very small amount of space in the memory and is most useful for developers who aim to develop.
Dessy, 17 september 2007 Tango Meeting Development of Tango Client Applications in Python Tiago Coutinho and Josep Ribas.
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,
Moving into Implementation SYSTEMS ANALYSIS AND DESIGN, 6 TH EDITION DENNIS, WIXOM, AND ROTH © 2015 JOHN WILEY & SONS. ALL RIGHTS RESERVED.Roberta M. Roth.
CS 3131 Introduction to Programming in Java Rich Maclin Computer Science Department.
PVSSProxy The first piece of the MACS procedure framework (ProShell) Angela Brett.
Dynamic Languages User Group Feb 7, DynApi Javascript Library.
© 2006 IBM Corporation Agile Planning Web UI. © 2006 IBM Corporation Agenda  Overview of APT Web UI  Current Issues  Required Infrastructure  API.
ProtoVis Peter Sikachev Institute of Computer Graphics and Algorithms Vienna University of Technology.
Area Detector Drivers Towards A Pattern Jon Thompson.
A New Approach to Java Clients Robert Buffone Chief Architect Nexaweb Technologies By
Chapter 4 – Threads (Pgs 153 – 174). Threads  A "Basic Unit of CPU Utilization"  A technique that assists in performing parallel computation by setting.
Python/Tango Client Binding Swig ( Vs Boost (
Confidential © 2008 Teleca AB Creating Custom Widgets Author: Patricia Jiang Date: July 29, 2010 Version: 1.0 Teleca Chengdu.
QT Programming QT Programming Ruku Roychowdhury. Background QT is a cross platform application framework. Widely used to develop GUI applications. Originally.
Implementation of a Relational Database as an Aid to Automatic Target Recognition Christopher C. Frost Computer Science Mentor: Steven Vanstone.
Intro to jQuery. What is jQuery? A JavaScript library Lightweight (about 31KB for the minified version) Simplifies HTML document traversing (DOM), event.
AJAX. Overview of Ajax Ajax is not an API or a programming language Ajax aims to provide more responsive web applications In normal request/response HTTP.
 An essential supporting structure of any thing  A Software Framework  Has layered structure ▪ What kind of functions and how they interrelate  Has.
K. Harrison CERN, 22nd September 2004 GANGA: ADA USER INTERFACE - Ganga release status - Job-Options Editor - Python support for AJDL - Job Builder - Python.
Java Programming, Second Edition Chapter Twelve Advanced Inheritance Concepts.
SPI NIGHTLIES Alex Hodgkins. SPI nightlies  Build and test various software projects each night  Provide a nightlies summary page that displays all.
UNDERSTANDING YOUR OPTIONS FOR CLIENT-SIDE DEVELOPMENT IN OFFICE 365 Mark Rackley
Wes Preston DEV 202. Audience: Info Workers, Dev A deeper dive into use-cases where client-side rendering (CSR) and SharePoint’s JS Link property can.
Sebastian Kügler, FrOSCon 2006 Jarosław Staniek, aKademy 2006 Database (data) components for KDE applications developers codename: KexiDB Facts ● Your.
Akademy 2007, KJSEmbed and QtScript KJSEmbed and QtScript ●What is application scripting? ●What is KJSEmbed? ●What is QtScript? ●How do KJSEmbed and QtScript.
The State of KHTML. In The Beginning... Why KHTML Is Important ● KHTML is critical to the success of KDE ● Provides a fast, light web browser and component.
Qt GUI and IDE development in EPICS
Let's talk about Linux and Virtualization in 'vLAMP'
Interfacing the Internet of a Trillion Things
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
Done By: Ashlee Lizarraga Ricky Usher Jacinto Roches Eli Gomez
Google Web Toolkit Tutorial
Working with Client-Side Scripting
An Overview of Java.
Introduction to Silverlight
Top Reasons to Choose Angular. Angular is well known for developing robust and adaptable Single Page Applications (SPA). The Application structure is.
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
Object Oriented Analysis and Design
Ada – 1983 History’s largest design effort
Modern web applications
Framework for Interactive Applications
Presented By - Avinash Pawar
Module 01 ETICS Overview ETICS Online Tutorials
JavaServer Faces: The Fundamentals
Modern web applications
The Most Popular Android UI Automation Testing Tool Andrii Voitenko
OpenURL: Pointing a Loaded Resolver
The Lua Chunk Vault, an enhancement to epics base
Presentation transcript:

September 24th 2006, aKademy The Design and Implementation of KJSEmbed Richard Moore,

September 24th 2006, aKademy Introduction ● KJSEmbed is a light-weight wrapper around KJS ● Available for KDE 3 for a long time ● Some parts are moving into kdelibs for KDE 4 ● Allows applications to easily embed KJS ● Allows creation of simple applications ● Not a full binding to the KDE APIs ● Aim is to be simple and lightweight rather than complete

September 24th 2006, aKademy A Brief History of Bindings ● Early binding systems were manual (XSUB for perl) ● Tools like SWIG were created that automated this ● These tools were good at binding C ● These first generation tools had little or no support for C++ ● Can't override virtual methods

September 24th 2006, aKademy A Brief History of Bindings 2 ● A second generation of bindings tools designed for C++ ● SIP (python) ● Smoke (language independent) ● Designed for C++ (and Qt) from ground up ● Create a subclass of each wrapped class ● Support for reimplementing virtual methods ● Support for signals and slots ● Support for inheritance

September 24th 2006, aKademy KJSEmbed/Qt3 ● Falls somewhere between generations ● Intended only for scripting applications ● Not a full binding for C++ libraries ● Relies heavily on Qt features, not a general C++ solution ● Does not create a subclass of wrapped widgets

September 24th 2006, aKademy KJSEmbed/Qt3 Features ● Full access to all properties defined by any QObject ● Access enums defined by QObjects ● Call any slot ● Access slot return values (yes, slots can have return values) ● Connect signals to javascript methods ● Reimplement event handlers from javascript ● Understands inheritance so you can access bindings of the baseclass ● Support for loading UI files from designer ● Support for loading KParts

September 24th 2006, aKademy KJSEmbed/Qt3 Features ● All of the above you get free with any QObject, no binding effort required ● If you use Q_PROPERTY, Q_ENUMS and slots this is all free ● Also supports custom bindings for methods that are not slots ● Provides custom bindings for common non-QObjects ● Tool to generate custom bindings ● Many example scripts from a basic calculator to a basic browser ● Lots of reference documentation

September 24th 2006, aKademy KJSEmbed/Qt3 Implementation ● Transparently converts basic types between javascript and C++ ● Holds pointers as void * ● Tracks the type of the objects itself ● Casts back to the correct type on demand ● This leads to problems with multiple inheritance ● There are also some problems ensuring things are cleanly deleted ● Poor use of JS prototypes leading to unnecessary overhead

September 24th 2006, aKademy KJSEmbed/Qt3 Event Handling ● Despite lacking support for virtuals you can reimplement event handlers ● Implemented using Qts event filters ● Detects when you assign to an event handler and installs the filter ● Uses a bitset to determine which events to filter ● Filtered events are passed to the javascript handler function ● Surprisingly fast – custom paint events work fine ● Lets us handle the most common case of virtual methods in Qt

September 24th 2006, aKademy KJSEmbed Qt 3 -> Qt4 ● Attempt to keep the good parts of Qt 3 implementation but fix the problems ● Same design goals as Qt 3 ● Make embedding the interpreter as easy as possible ● Keep things that worked well ● Try to make as much use of the QMetaObject as possible ● Keep the event handling mechanism as before

September 24th 2006, aKademy KJSEmbed/Qt4 Implementation ● Heavily template based ● Templates retain the real type information ● Uses template specialisation for types like QObject ● Retaining type information avoids multiple inheritance problem ● Lots of effort to ensure that startup is very fast ● Most of the features of the Qt 3 version are already implemented ● Simple scripts port with minimal changes

September 24th 2006, aKademy KJSEmbed/Qt4 Work In Progress ● Plasma integration ● Getting people to use the code! ● Ability to load custom bindings on demand ● Isolate the user from direct interaction with KJS ● New automatic binding generator ● Adding a standard library of utility functions ● Improving documentation ● Creating some real world examples ● Considering the relationship with QSA 2

September 24th 2006, aKademy Questions