Dessy, 17 september 2007 Tango Meeting Development of Tango Client Applications in Python Tiago Coutinho and Josep Ribas.

Slides:



Advertisements
Similar presentations
QGIS Plugins Creating custom spatial functions within the QGIS application framework using Python Z-Pulley Inc.
Advertisements

COM vs. CORBA.
Experiment Control Systems at the LHC An Overview of the System Architecture An Overview of the System Architecture JCOP Framework Overview JCOP Framework.
Goals Give you a feeling of what Eclipse is.
TAC Vista Security. Target  TAC Vista & Security Integration  Key customer groups –Existing TAC Vista users Provide features and hardware for security.
Part 3: Design Days 15, 19, 21, 23 Chapter 8: Work Reengineering and Conceptual Design Chapter 9: Design Guidance and Design Rationale Chapter 10: Interaction.
UI Standards & Tools Khushroo Shaikh.
Software Frameworks for Acquisition and Control European PhD – 2009 Horácio Fernandes.
Chapter 22 Object-Oriented Design
Victor Serbo, SLAC30 September 2004, Interlaken, Switzerland JASSimApp plugin for JAS3: Interactive Geant4 GUI Serbo, Victor (SLAC) - presenter Donszelmann,
Course Instructor: Aisha Azeem
Domain Modeling (with Objects). Motivation Programming classes teach – What an object is – How to create objects What is missing – Finding/determining.
Creational Patterns Making Objects The Smart Way Brent Ramerth Abstract Factory, Builder.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse 2.
Introduction to the Enterprise Library. Sounds familiar? Writing a component to encapsulate data access Building a component that allows you to log errors.
Zubanov Alexei, 2006 Aug 07 – Sep 28 QtROOT package extension with Coin3D lib.
The Sardana device pool for SPEC lovers - BLISS Seminar - January 15, 2007 The Sardana device pool for SPEC lovers BLISS Seminar January 15, 2007 Tiago.
COM vs. CORBA Computer Science at Azusa Pacific University September 19, 2015 Azusa Pacific University, Azusa, CA 91702, Tel: (800) Department.
1 MDWE'2008, Toulouse, France, September 30, 2008 A Comparative Analysis of Transformation Engines for User Interface Development Juan Manuel González.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 07. Review Architectural Representation – Using UML – Using ADL.
GumTree Feature Overview Tony Lam Data Acquisition Team Bragg Institute eScience Workshop 2006.
Putting together a complete system Chapter 10. Overview  Design a modest but complete system  A collection of objects work together to solve a problem.
K.Harrison CERN, 6th March 2003 GANGA: GAUDI/ATHENA AND GRID ALLIANCE - Aims and design - Progress with low-level software - Progress with Graphical User.
National Center for Supercomputing Applications NCSA OPIE Presentation November 2000.
Object-Oriented Modeling Chapter 10 CSCI CSCI 1302 – Object-Oriented Modeling2 Outline The Software Development Process Discovering Relationships.
11 CORE Architecture Mauro Bruno, Monica Scannapieco, Carlo Vaccari, Giulia Vaste Antonino Virgillito, Diego Zardetto (Istat)
PVSSProxy The first piece of the MACS procedure framework (ProShell) Angela Brett.
V. Serbo, SLAC ACAT03, 1-5 December 2003 Interactive GUI for Geant4 by Victor Serbo, SLAC.
Shannon Hastings Multiscale Computing Laboratory Department of Biomedical Informatics.
Refining middleware functions for verification purpose Jérôme Hugues Laurent Pautet Fabrice Kordon
Building Extensible Desktop Applications with Zope 3 Nathan R. Yergler Software Engineer Creative Commons Licensed under Creative Commons Attribution 2.5.
Architectural pattern: Interceptor Source: POSA II pp 109 – 140POSA II Environment: developing frameworks that can be extended transparently Recurring.
"Witness of a new dancer". 14 October TANGO at ALBA Alba team: Presented by DFC. Witness of a new dancer.
Database Systems: Design, Implementation, and Management Eighth Edition Chapter 14 Database Connectivity and Web Technologies.
The Sardana device pool A strange “future” demonstration A Talk given by and at the Hamburger Tango Meeting 17/18 th September 2010 Authors: Emmanuel Taurel,
WIRED 4 An extensible generic Event Display Mark Donszelmann SLAC, Stanford, U.S.A. CHEP2004, 27 september – 1 october Interlaken, Switzerland.
1 CMPT 275 High Level Design Phase Modularization.
Graphical User Interface You will be used to using programs that have a graphical user interface (GUI). So far you have been writing programs that have.
The TANGO Logging Service Status Implementation details Possible enhancements.
5-Oct-051 Tango collaboration status ICALEPCS 2005 Geneva (October 2005)
ASP.NET Web Services.  A unit of managed code installed under IIS that can be remotely invoked using HTTP.
INFSO-RI Enabling Grids for E-sciencE Ganga 4 – The Ganga Evolution Andrew Maier.
GUIs Basic Concepts. GUI GUI : Graphical User Interface Window/Frame : a window on the screen Controls/Widgets : GUI components.
April 27, 2006 The New GANGA GUI 26th LHCb Software Week C L Tan
Database Systems: Design, Implementation, and Management Eighth Edition Chapter 14 Database Connectivity and Web Technologies.
SRM “Multiple Inheritance for PyTango Device Classes” 21st Tango Meeting, 14th May A Multiple Inheritance Mechanism for PyTango Device Classes Sergi.
INFSO-RI Enabling Grids for E-sciencE Ganga 4 Technical Overview Jakub T. Moscicki, CERN.
LCG AA Meeting 30 June 2004 Ilka Antcheva Graphics User Interface in ROOT.
SDJ INFOSOFT PVT. LTD. 2 BROWSERBROWSER JSP JavaBean DB Req Res Application Layer Enterprise server/Data Sources.
ARTview A Community Weather Radar Data GUI Contributors Anderson Gama Nick Guy Paul Hein Jonathan Helmus Timothy Lang.
“This improved a lot since I started using Tango (three years ago) from scratch so I'm happy to see the efforts from the developers. Still there is room.
Tango - Icalepcs 2009 ESRF. E Taurel - Icalepcs TANGO kernel status and evolution Brief introduction What's new since Icalepcs 2007 New projects.
Re Write POGO using openArchitectureWare Technology ● Pogo History ● OpenArchitectureWare technology ● Generated code ● Project status.
Tango Collaboration Meeting May 13 th 2009Sardana Status Report Sardana Status Report Tango Collaboration Meeting May 13 th, 2009 Tiago Coutinho - ALBA.
September 24th 2006, aKademy The Design and Implementation of KJSEmbed Richard Moore,
Qt GUI and IDE development in EPICS
The BLISS Framework 4.
Device Pool Status Report TANGO Collaboration Meeting April 17, 2008
Python, PyTango + QT Designer Operations perspective on automation
EE2E1. JAVA Programming Revision Lecture.
Tau: PyQT GUI for Tango TANGO Collaboration Meeting April 18, 2008
Tau developers aproach
The BLISS Framework 4.
Advanced Java Programming
Framework for Interactive Applications
Tango in a Nutshell 31/12/2018.
Ms Munawar Khatoon IV Year I Sem Computer Science Engineering
Computer Science 111 Fundamentals of Programming I User Interfaces
Web Application Development Using PHP
TANGO from an EPICS perspective
Presentation transcript:

Dessy, 17 september 2007 Tango Meeting Development of Tango Client Applications in Python Tiago Coutinho and Josep Ribas

Tango Meeting Dessy, 17 september 2007 Outline PyTauico  Goals of PyTauico  Software Architecture PyTauiwi  Custom tango widgets in QtDesigner  Application development  Example Current Status Future Work Conclusions

Tango Meeting Dessy, 17 september 2007 Goals of PyTauico PyTauico = Python Tango User Interface Core Add Python and PyTango as an option for client applications Abstraction layer for PyTango Client Applications  Simplify the application development using PyTango  Reduce development time in Python  Standarize PyTango client applications  Improve performance of applications Efficient management of Devices and Attributes

Tango Meeting Dessy, 17 september 2007 PyTango Tango PyTauico 'IPyTauico' IPython PyTauiwi PyQT4 'WxTango' WxPython CORBA Architecture

Tango Meeting Dessy, 17 september 2007 Architecture (II) Device and Attribute Factories PyTango accessed through DeviceProxy Model and Listener Polling management

Tango Meeting Dessy, 17 september 2007 PyTauico Device > Attribute > Attribute > Attribute > Listener > Listener > Listener > Listener > AttributeFactoryDeviceFactory Tango Device Server Motor > Listeners

Tango Meeting Dessy, 17 september 2007 PyTauiwi Python Tango User Interface Widgets PyQt4 layer for PyTauico QtDesigner as a main tool. Provide a set of widgets for application development Standarize the look and feel Extensible  Easy development of new widgets  Complex widgets as a subset of basic widgets PyTango Tango PyTauico CORBA PyTauiwi PyQT4

Tango Meeting Dessy, 17 september 2007 Custom Widgets for PyTango PyQt4.2  Full range of standard Qt widgets  All the power of Qt, but exploit it with the simplicity of Python.  QtDesigner. Graphical User Interface Designer.  Own pure Python custom widgets  All the signals, slots and properties defined in Python are accessible in Designer's user interface.

Tango Meeting Dessy, 17 september 2007 Custom Widget Development 1. Design the widget using QtDesigner 2. Convert Design into Python Code using pyuic4 3. Implement widget functionality 1. Inherit from tauico model 2. Add Widget Properties, Signals and Slots 3. Implement the connection with PyTauico. 4. Defining the Widget's Plugin Interface Describes our custom widget and tells Qt Designer how to instantiate it.

Tango Meeting Dessy, 17 september 2007 Custom Widget development (II) Our widget is a Listener in the PyTauico Layer.  Widget Code must include. A property defining the Tango attribute or device name. Subscription management to PyTauico Device or attribute objects. Implementation of the eventReceived() function defined in the TauicoListener abstract class.  How the widget shows to the user the received events. Add signals and slots to the widget.  Define the interaction of the widget with the other components. from PyQt4 import QtCore, QtGui, Qt import PyTauico class PyStateLabel(QtGui.QLabel, PyTauico.TauicoListener):... def getDevice(self): return def setDevice(self, devname): self.dev = devfactory.getDevice(self._device) self.attr = self.dev.subscribeAttribute(self._device+"/State", self) self.setState(str(self.attr.read().value)) Device = QtCore.pyqtProperty("QString", getDevice, setDevice) def eventReceived(self, EventSource, EventType, EventValue): self.emit(QtCore.SIGNAL('changeText(QString)'), def setState(self, value): self.setText(value) self.changeColor(value)

Tango Meeting Dessy, 17 september 2007 Application Development 1. Design your application design using QtDesigner using the PyTauwi widgets. 2. Covert yout application to python code. 3. Implement extra functionalities like widget interconnection. 4. Enjoy it.

Tango Meeting Dessy, 17 september 2007 Example. Libera UI

Tango Meeting Dessy, 17 september 2007 Current Status PyTauico Layer  Basic support for devices and attributes.  Events for attributes  Basic polling  Core factory components Efficient object management (Devices and Attributes)  Basic widget interface defined. PyTauwi Layer  Basic widgets for testing.

Tango Meeting Dessy, 17 september 2007 Future work Documentation  Guidelines for developing widgets Define widgets interface Error tracking  Deal with tango exceptions Polling lists  Widget for choosing polling periods for attributes Commnads  Polling for Void commands Properties Multiple DB connection.  Add the DB on the device name. Extend the widget library.

Tango Meeting Dessy, 17 september 2007 Conclusions PyTango and PyQt4.  Mixing the power of Qt with the Python simplicity A good use for PyTango  Abstraction layer Fast and easy development of python client applications Extensible.  Possibility to create more complex and dedicated widgets. (A widget that represents a motor)  Use other Python GUI technologies. (wxPython, …)

Tango Meeting Dessy, 17 september 2007 Acknowledgments Fulvio Becheri

Tango Meeting Dessy, 17 september 2007 PyTauico Attribute > Attribute > Attribute > Listener > Listener > Listener > AttributeFactory PollingTimer > PollingTimer > T2T1