Institute of Informatics & Telecommunications – NCSR “Demokritos” TileQt and TileGtk: current status Georgios Petasis Software and Knowledge Engineering.

Slides:



Advertisements
Similar presentations
MicroKernel Pattern Presented by Sahibzada Sami ud din Kashif Khurshid.
Advertisements

A Workflow Engine with Multi-Level Parallelism Supports Qifeng Huang and Yan Huang School of Computer Science Cardiff University
Win8 on Intel Programming Course Desktop : WPF Cédric Andreolli Intel Software
Tk. Toolkit n Wish - windowing shell –touch fileName –chmod +x fileName –xedit fileName & –#!/usr/local/bin/wish n Widgets - eg Buttons, Labels, Frames.
COM vs. CORBA.
Win8 on Intel Programming Course Desktop : Sensors Cédric Andreolli Intel Software
QtMG CCP4 Developers’ Meeting, Abingdon, 17th-19th March, 2008.
Software Engineering 2003 Jyrki Nummenmaa 1 OBJECT ARCHITECTURE DESIGN These slides continue with our example application, based on the simplified.
Design Developing Software on Linux Tim Marriott Mel Nicholson ICCAD 2003.
Linux vs. Windows. Linux  Linux was originally built by Linus Torvalds at the University of Helsinki in  Linux is a Unix-like, Kernal-based, fully.
CORBA - Common Object Request Broker Architecture.
Quicktime Howell Istance School of Computing De Montfort University.
1 Introducing Collaboration to Single User Applications A Survey and Analysis of Recent Work by Brian Cornell For Collaborative Systems Fall 2006.
Juan Carlos Flores 10/20/2011. Outline Introduction Centralized Revision Control Systems Subversion Overview Distributed Revision Control Systems Network.
Computer Programming and Basic Software Engineering 4. Basic Software Engineering 1 Writing a Good Program 4. Basic Software Engineering 3 October 2007.
Chapter 3 Software Two major types of software
DATA PRESERVATION IN ALICE FEDERICO CARMINATI. MOTIVATION ALICE is a 150 M CHF investment by a large scientific community The ALICE data is unique and.
Types of software. Sonam Dema..
How to install CGAL Yuanzhen Wang. What is CGAL Computational Geometry Algorithms Library “Provide easy access to efficient and reliable geometric algorithms.
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.
Oct ROOT 2002, CERN, Geneva Qt-Based Implementation of Low Level ROOT Graphical Layer By V.Fine.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Chapter 4 Operating Systems and File Management. 4 Chapter 4: Operating Systems and File Management 2 Chapter Contents  Section A: Operating System Basics.
4 1 Operating System Activities  An operating system is a type of system software that acts as the master controller for all activities that take place.
Institute of Informatics & Telecommunications – NCSR “Demokritos” Ellogon and the challenge of threads Georgios Petasis Software and Knowledge Engineering.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
DIFFERENCE BETWEEN ORCAD AND LABVIEW
SITools Enhanced Use of Laboratory Services and Data Romain Conseil
A Comparison of Linux vs. Windows Bhargav A. Sorathiya B.E. 4 th C.E. Roll no:6456.
Institute of Informatics & Telecommunications – NCSR “Demokritos” TkRibbon: Windows Ribbons for Tk Georgios Petasis Software and Knowledge Engineering.
SPACE TELESCOPE SCIENCE INSTITUTE Operated for NASA by AURA COS Pipeline Language(s) We plan to develop CALCOS using Python and C Another programming language?
GUIs for Applets Introduction Applets and Swing/JFC Alternatives to Swing Look-and-Feel issues Example applet graphical user interfaces.
‘Tirgul’ # 7 Enterprise Development Using Visual Basic 6.0 Autumn 2002 Tirgul #7.
BLU-ICE and the Distributed Control System Constraints for Software Development Strategies Timothy M. McPhillips Stanford Synchrotron Radiation Laboratory.
Soaring to the heights of personal success Enabling candidates to raise grades from B to A and from A to A*
An Introduction to Linux Name: Haixin Wang ID :
Gary MarsdenSlide 1University of Cape Town Human-Computer Interaction - 3 Programmer Support Gary Marsden ( ) July 2002.
FLUKA GUI Status FLUKA Meeting CERN, 10/7/2006.
Use of Coverity & Valgrind in Geant4 Gabriele Cosmo.
Achieving High Software Reliability Using a Faster, Easier and Cheaper Method NASA OSMA SAS '01 September 5-7, 2001 Taghi M. Khoshgoftaar The Software.
Eagle: Maturation and Evolution 17th Annual Tcl Conference Joe Mistachkin.
XGL: X11 replacement ? O.Couet, ROOT meeting 11/07/2006.
CINT C++ Interpreter update ROOT2001 at Fermi-Lab Masaharu Goto.
Distribution and components. 2 What is the problem? Enterprise computing is Large scale & complex: It supports large scale and complex organisations Spanning.
Institute of Informatics & Telecommunications – NCSR “Demokritos” TkDND: a cross-platform drag’n’drop package Georgios Petasis Software and Knowledge Engineering.
Introduction What is detector simulation? A detector simulation program must provide the possibility of describing accurately an experimental setup (both.
Porting a large scale enterprise application from Tcl/Tk 8.4 to 8.5 Prashant Thakre, Tushar Gupta {prashant_thakre, Gaurav Bansal.
Creating visual interfaces in python
H.G.Essel: Go4 - J. Adamczewski, M. Al-Turany, D. Bertini, H.G.Essel, S.Linev ROOT 2002 GSI Online Offline Object Oriented Go4.
 Programming - the process of creating computer programs.
Institute of Informatics & Telecommunications – NCSR “Demokritos” TkGecko: Another Attempt for an HTML Renderer for Tk Georgios Petasis Software and Knowledge.
A Remote Collaboration Environment for Protein Crystallography HEPiX-HEPNT Conference, 8 Oct 1999 Nicholas Sauter, Stanford Synchrotron Radiation Laboratory.
Word Create a basic TOC. Course contents Overview: table of contents basics Lesson 1: About tables of contents Lesson 2: Format your table of contents.
Understand How to Create New Controls and Extend Existing Controls Windows Development Fundamentals LESSON 2.3A.
GTK+
OPERATING SYSTEM BY KINSHUK RASTOGI. WHAT IS AN OPERATING SYSTEM? What is an operating system in the first place? An operating system is a software that.
Using a MATLAB/Photoshop Interface to Enhance Image Processing in the Interpretation of Radar Imagery.
OPERATING SYSTEMS (OS) By the end of this lesson you will be able to explain: 1. What an OS is 2. The relationship between the OS & application programs.
G ambas A lmost M eans BAS IC...really?. Gambas 2.0 RC 1 ● Two years of development since the release of Gambas 1.0. ● Seven years since the first beginning.
Bonobo and Free Software GNOME Components
GNOME/GTK+ Introduction
Scaling of Eclipse on High Density Displays
GUI Using Python.
Chapter 2: Operating-System Structures
This Week: Tkinter for GUI Interfaces Some examples
Qt Programming.
The Basic Usage and The Event Handling in Glade.
Eagle: Maturation and Evolution
Graphic Libraries for The User Interface
Presentation transcript:

Institute of Informatics & Telecommunications – NCSR “Demokritos” TileQt and TileGtk: current status Georgios Petasis Software and Knowledge Engineering Laboratory, Institute of Informatics and Telecommunications, National Centre for Scientific Research “Demokritos”, Athens, Greece

Overview  Ttk and support for Windows, OS X and Linux  Qt and GTK+ –Mapping between Ttk and other widget toolkits  Interfacing steps –The steps required to interface Ttk to another toolkit  TileQt and TileGTK –Current status  Conclusions 2 15 Oct 2010TileQt and TileGtk: current status

Ttk widgets  Ttk is the best effort so far in providing Tk widgets with native look under all major operating systems  Both Microsoft Windows and Apple OS X offer a native widget set –Along with a suitable API, that applications can use in order to natively draw widgets  Wisely, Ttk fully exploits these APIs –Making native look for Tk applications a reality  But what about Linux? 15 Oct 2010TileQt and TileGtk: current status 3

Ttk and Linux  No native widget set under Linux –Thus, no API that can be called  The Linux desktop is dominated by two environments: –KDE, based on the Qt toolkit library –GNOME, based on the GTK+ toolkit library  Both support styled widgets –But using the style engine for drawing widgets from outside each toolkit is difficult 15 Oct 2010TileQt and TileGtk: current status 4

Qt and GTK+  Both widget toolkits offer a public API  The public API usually targets: –Style development So as new widget styles or themes can be developed –New widget development So as new or composite widgets can be developed  TileQt/TileGTK try to use these public APIs in order to draw Ttk widget elements (parts) 15 Oct 2010TileQt and TileGtk: current status 5

Mapping between Ttk and other widget toolkits  TileQt and TileGTK are quite different from each other, implementation wise  However, the problems of interfacing Ttk to another toolkit library (that being Qt, GTK or any other library) are exactly the same –And seem to be independent of the target toolkit library 15 Oct 2010TileQt and TileGtk: current status 6

Interfacing steps (1) 1.Understand the internals of the library that must be interfaced –A time consuming, but feasible task, if the library sources are available The sources of both Qt and GTK are publically available, along with sufficient documentation 2.Understand how to initialise the library from the hosting application –But without initialising the never ending event loop of he library 15 Oct 2010TileQt and TileGtk: current status 7

Interfacing steps (2) 3.Understand how the toolkit library: –Locates themes –Loads themes –Uses themes in order to draw widget elements 4.Find a way to map Tk drawables (windows, pixmaps, etc.) to the drawables of the toolkit library, and vice versa –This is an important step, as each library expects its own structures while using its API –Not always easy to achieve through the public API Native structures are usually abstracted to enhance portability 15 Oct 2010TileQt and TileGtk: current status 8

Interfacing steps (3) 5.Find a way to map Ttk widget states to the ones supported by the target toolkit library –Not always a straight-forward mapping Mapping differences usually result in visual differences 6.Separate widgets whose elements can be drawn directly from widgets that are drawn as a whole –Widgets of the latter category must: Drawn in an offline pixmap Segmented in elements, using available pixel metrics Elements of interest copied back to Ttk window –Segmentation is a vulnerable process Rarely exact element dimensions can be retrieved 15 Oct 2010TileQt and TileGtk: current status 9

Interfacing steps (4) 7.Ensure thread-safety –Easy task if the target toolkit library is already thread safe (i.e. Qt) –More tricky if it is not (i.e. GTK, where widgets must be created/drawn only by the thread the library was initialised) 8.Cope with the large number of available themes for each toolkit library –Problems range from different layouts to wrong pixel metrics 15 Oct 2010TileQt and TileGtk: current status 10

TileQt: a Ttk interface to the Qt widget toolkit  One of the first C/C++ extensions that attempted to provide a Ttk theme, based on the Ttk public API, without being part of Ttk  Development started in 2003 –Initially supporting Qt 3.x at that time  Compiling TileQt was never easy –As the build system was not robust for quite some time  Currently, TileQt: –Has substantial support for Qt 3.x/4.x –Uses a build system based on CMake 15 Oct 2010TileQt and TileGtk: current status 11

TileQt: supported widgets WidgetQt 3.xQt 4.xWidgetQt 3.xQt 4.x Background  LabelFrame  Button  NoteBook  CheckButton  TreeView  RadioButton  Progress  MenuButton  Paned  ToolButton  SizeGrip  Entry  ScrollBar  ComboBox  Scale  15 Oct 2010TileQt and TileGtk: current status 12

15 Oct 2010TileQt and TileGtk: current status 13

TileGTK: a Ttk interface to the GTK+ toolkit  A far more recent extension, as development started in 2008  TileGTK was based on the expereince obtained from TileQt –In fact, development started by search/replace of Qt to GTK, followed by an gradual adaptation of widgets  Compiling TileGTK has always been easy –As the CMake build system was also inherited 15 Oct 2010TileQt and TileGtk: current status 14

TileGTK and a GTK in C  GTK+ is written in C, which makes presents an interesting opportunity: –To access the GTK+ API through stubs! –No need to link with GTK+ Which may result in distributing TileGTK binaries under the BSD license  However, currently Glib facilities are used in order to load and initialise the GTK+ library –It would have been better if Tcl offered similar capabilities  For the time being, TileGTK binaries are covered by GPL 15 Oct 2010TileQt and TileGtk: current status 15

15 Oct 2010TileQt and TileGtk: current status 16 TileGTK: supported widgets WidgetGTK 2.xWidgetGTK 2.x Background  LabelFrame  Button  NoteBook  CheckButton  TreeView  RadioButton  Progress  MenuButton  Paned  ToolButton  SizeGrip  Entry  ScrollBar  ComboBox  Scale 

15 Oct 2010TileQt and TileGtk: current status 17

Conclusions (1)  TileQt & TileGTK try to interface Qt & GTK+ to Ttk  Both extensions are not actively maintained –Mainly because Linux usage by the main author constantly diminishes  Both TileQt & TileGTK compile and run with recent Tcl versions –Tested with ActiveTcl 8.6 beta 3 on an updated Fedora 13 system –However loading TileQt/TileGTK in a second interpreter seems to crash wish No idea why, it used to work 15 Oct 2010TileQt and TileGtk: current status 18

Conclusions (2)  Some widgets are missing: –Separators –Scrollbars/Scales (for Qt 4.x) –Treeview (for GTK+ 2.x)  Several visual differences between TileQt/TileGTK and Qt/GTK+ –TileGTK has more differences –TileQt is missing an essential widget (scrollbars)  Both extensions try to retrieve the colour scheme from the corresponding toolkit –Even for GTK+ who has no such capability 15 Oct 2010TileQt and TileGtk: current status 19

Thank you!