Timothy M. Shead Sandia National Laboratories

Slides:



Advertisements
Similar presentations
Distributor meeting October 2007
Advertisements

Introduction to Java 2 Programming Lecture 10 API Review; Where Next.
Conclusion Kenneth Moreland Sandia National Laboratories Sandia is a multiprogram laboratory operated by Sandia Corporation, a Lockheed Martin Company,
Advanced ParaView Visualization Kenneth Moreland, David Thompson, Timothy Shead Sandia National Laboratories Utkarsh Ayachit Kitware Inc. John Biddiscombe.
Timothy M. Shead Sandia National Laboratories
First Steps with Qt Julien Finet Kitware Inc. Jan. 05 th 2010.
Sue Wills July Objects The JavaScript language is completely centered around objects, and because of this, it is known as an Object Oriented Programming.
Feature requests for Case Manager By Spar Nord Bank A/S IBM Insight 2014 Spar Nord Bank A/S1.
MP IP Strategy Stateye-GUI Provided by Edotronik Munich, May 05, 2006.
Module 5: Configuring Access for Remote Clients and Networks.
Managing User Settings with Group Policy
Object-Oriented Enterprise Application Development Tomcat 3.2 Configuration Last Updated: 03/30/2001.
OOP in Java Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
Hands-On Microsoft Windows Server 2003 Administration Chapter 5 Administering File Resources.
OOP in Java Fawzi Emad Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
1 ParaView Current Architecture and History Current Architecture and History Issues with the Current Design Issues with the Current Design.
1 Chapter Overview Creating User and Computer Objects Maintaining User Accounts Creating User Profiles.
Winter Consolidated Server Deployment Guide for Hosted Messaging and Collaboration version 3.5 Philippe Maurent Principal Consultant Microsoft.
New “Collaborate” Button Integrate UI directly into the browser. Preferred target: Firefox Easiest browser to extend in terms of UI.
Automated Production Report Generation with OPC DataHub Your Host Today: Colin Winchester, Director of Support Presenter: Win Worrall, Application Engineer.
Chapter 3 Navigating a Project Goals & Objectives 1.Get familiar with the navigation of the project. How is everything structured? What settings can you.
DHTML. What is DHTML?  DHTML is the combination of several built-in browser features in fourth generation browsers that enable a web page to be more.
A Scalable Application Architecture for composing News Portals on the Internet Serpil TOK, Zeki BAYRAM. Eastern MediterraneanUniversity Famagusta Famagusta.
WorkPlace Pro Utilities.
® IBM Software Group © 2009 IBM Corporation Rational Publishing Engine RQM Multi Level Report Tutorial David Rennie, IBM Rational Services A/NZ
Using the Actions Pane, Host Controls, and Smart Tags
For Version 6.0 and later Lattice3D Reporter Tutorial For Version 6.0 and later LATTICE TECHNOLOGY, INC.
5 Chapter Five Web Servers. 5 Chapter Objectives Learn about the Microsoft Personal Web Server Software Learn how to improve Web site performance Learn.
Virtual techdays INDIA │ Nov 2010 Developing Office Biz Application using WPF on Windows 7 Sarang Datye │ Sr. Consultant, Microsoft Sridhar Poduri.
11 MANAGING AND DISTRIBUTING SOFTWARE BY USING GROUP POLICY Chapter 5.
Managing User Desktops with Group Policy
LLRP GUI Client User Guide
11 Web Services. 22 Objectives You will be able to Say what a web service is. Write and deploy a simple web service. Test a simple web service. Write.
Virtual File Systems in Samba 3.0 Alexander Bokovoy Samba Team, Optifacio Software Services CIFS 2003 conference, San Jose, August.
Sample Application Multi Layered Architecture (n-tier): –Graphical User Interface (GUI): Forms, components, controls The Visual Designer in Visual Studio.
Shannon Hastings Multiscale Computing Laboratory Department of Biomedical Informatics.
1 Week #10Business Continuity Backing Up Data Configuring Shadow Copies Providing Server and Service Availability.
© 2010 IBM Corporation What’s New in RSA 8.0 Beta 1 – Deployment modeling March, 2010.
BEFOREHANDS. OMOptim C++ code Stored on subversion solver Using Qt libraries (GUI, Model/View, Containers, Threads, XML…)
WaveMaker Visual AJAX Studio 4.0 Training Basics: Building Your First Application Designer Basics.
NA-MIC National Alliance for Medical Image Computing ParaView Server Manager Berk Geveci Andy Cedilnik.
Looping and Counting Lecture 3 Hartmut Kaiser
Chapter 6 Introduction to Defining Classes. Objectives: Design and implement a simple class from user requirements. Organize a program in terms of a view.
Module 4 Planning for Group Policy. Module Overview Planning Group Policy Application Planning Group Policy Processing Planning the Management of Group.
Copyright © 2006 Pilothouse Consulting Inc. All rights reserved. Search Overview Search Features: WSS and Office Search Architecture Content Sources and.
Core Java Introduction Byju Veedu Ness Technologies httpdownload.oracle.com/javase/tutorial/getStarted/intro/definition.html.
QT Programming QT Programming Ruku Roychowdhury. Background QT is a cross platform application framework. Widely used to develop GUI applications. Originally.
ASP.NET Web Services.  A unit of managed code installed under IIS that can be remotely invoked using HTTP.
ParaView III Software Methodology Update Where to now November 29, 2006 John Greenfield Sandia is a multiprogram laboratory operated by Sandia Corporation,
Week 4 Objectives Overview of Group Policy Group Policy Processing Implementing a Central Store for Administrative Templates.
Module 10: Windows Firewall and Caching Fundamentals.
Chapter 5 Introduction To Form Builder. Lesson A Objectives  Display Forms Builder forms in a Web browser  Use a data block form to view, insert, update,
1 ParaView Future, vision, …. 2 ParaView Architecture.
Architecture Multi Layered Architecture (n-tier): Application: Model Controllers Database Access Graphical User Interface (GUI): Forms, components, controls.
IPS Infrastructure Technological Overview of Work Done.
IBM Express Runtime Quick Start Workshop © 2007 IBM Corporation Deploying a Solution.
Integrating and Extending Workflow 8 AA301 Carl Sykes Ed Heaney.
Wednesday NI Vision Sessions
Chapter 5 Introduction to Defining Classes Fundamentals of Java.
Product Training Program
Section 13 - Integrating with Third Party Tools
Chapter 2: System Structures
In-situ Visualization using VisIt
(Includes setup) FAQ ON DOCUMENTS (Includes setup)
70-293: MCSE Guide to Planning a Microsoft Windows Server 2003 Network, Enhanced Chapter 4: Planning and Configuring Routing and Switching.
Serpil TOK, Zeki BAYRAM. Eastern MediterraneanUniversity Famagusta
Data Structures and ADTs
(Includes setup) FAQ ON DOCUMENTS (Includes setup)
SPL – PS1 Introduction to C++.
Presentation transcript:

Timothy M. Shead Sandia National Laboratories Customizing ParaView Sandia is a multiprogram laboratory operated by Sandia Corporation, a Lockheed Martin Company, for the United States Department of Energy’s National Nuclear Security Administration under contract DE-AC04-94AL85000. This document is SAND Number: 2008-5204 P Timothy M. Shead Sandia National Laboratories

Extending ParaView Traditional ParaView provides a static collection of filters and views: Uses existing filters provided by VTK and ParaView libraries. The collection of filters can be extended at compile-time: Sources outside the ParaView tree can be incorporated into the ParaView build. Compiles and links external sources as part of the overall ParaView build. Cons: setting-up the correct build environment for external sources can be tricky. Cons: two-pass build process, dependencies Reference: http://paraview.org/Wiki/ExtendingParaView

ParaView Plugins Extend the collection of filters at runtime. Shared libraries containing new filters are dynamically-linked into the working-set at runtime. Plugins can be loaded automatically at startup from known locations, locations specified via environment variable (PV_PLUGIN_PATH) or manually loaded via the plugin manager GUI:

Plugin Types - Readers & Writers

Plugin Types - General Filters

Plugin Types - Custom Toolbars Useful for automating setup of a complex pipeline, an arbitrary view configuration, etc.

Plugin Types - Custom Panels Provides a proxy-specific user interface panel - useful with complex proxies where the auto-generated GUI is insufficient.

Plugin Types - Custom Views

Plugin Types - Miscellaneous Autostart Plugins - Executed automatically at program startup / shutdown. Useful for logging, starting servers, etc. Graph Layout Algorithms Your Plugin Idea Here!

An Everyday, Garden-Variety Parallel Pipeline … Node 0 Node 1 Node 2 Node N vtkParallelReader vtkParallelReader vtkParallelReader vtkParallelReader vtkFooFilter vtkFooFilter vtkFooFilter vtkFooFilter … vtkBarFilter vtkBarFilter vtkBarFilter vtkBarFilter … … … … vtkParallelRenderStuff vtkParallelRenderStuff vtkParallelRenderStuff vtkParallelRenderStuff Client

Raises lots of practical questions … vtkParallelReader vtkFooFilter vtkBarFilter vtkParallelRenderStuff … Node 0 Node 1 Node N Node 2 Client How does the client refer to a remote VTK filter? How does the client create / delete VTK filters on a different host? How are remote VTK filters initialized / modified? How are remote VTK filters connected to form a pipeline? How does the client generate a UI for a filter?

Referencing Remote VTK Filters vtkFooFilter Node vtkSMProxy Client Proxies = Remote VTK Filters

Proxies and the Parallel Pipeline vtkFooFilter Node 0 vtkFooFilter Node 1 vtkFooFilter … vtkFooFilter Node N-1 vtkSMProxy Client

Proxy Naming Proxies are identified using a two-level hierarchy: "group" and "name". Proxy Groups identify broad categories of proxy. Some current examples: "sources", "filters", "views", "representations", "writers", "lights", "textures". You can create your own, e.g: "layout_strategies". But many groups have special meaning to the user interface! Proxy Names identify specific proxy types. Typically "vtkFooFilter" will have a proxy named "FooFilter". This naming scheme isn’t enforced.

Initializing / Modifying Proxies vtkFooFilter Node Client vtkSMProxy + SetFooCount(count : int) : void + … vtkSMProperty 0 .. * Properties = Remote Method Calls

Representative Method Calls Property Types Type C++ Class Representative Method Calls Integers vtkSMIntVectorProperty SetFoo(int) SetFoo(int[2]) Doubles vtkSMDoubleVectorProperty SetFoo(double) SetFoo(double[3]) Strings vtkSMStringVectorProperty SetFoo(const char*) SetFoo(const char*, const char*) Proxy vtkSMProxyProperty SetFoo(vtkObject*) Filter Input vtkSMInputProperty AddInput(…)

Property Domains Domains restrict the set of values that a property can assume. Example: a domain can limit an integer property to a range of values. Example: a domain can limit a string property to an enumerated list of values. Where a property defines the type of data, a domain can provide a higher-level description of how the data will be used. Example: a domain can limit an integer property to boolean true/false values. Example: a domain can specify that a string property will be used to represent filenames.

But Where Do Proxies and Properties Come From? "Server Manager XML" defines each proxy and all its properties: <ServerManagerConfiguration> <ProxyGroup name="filters"> <SourceProxy name="FooFilter" class="vtkFooFilter"> <InputProperty name="Input" … /> <IntVectorProperty name="FooCount" … /> </SourceProxy> <!-- More proxies in this group … --> </ProxyGroup> <!-- More groups in this file … --> </ServerManagerConfiguration> The XML is linked into the binary (ParaView or plugin) as a static string, then parsed at runtime to populate a database of proxies. The XML provides a useful layer of indirection: Proxies and properties can be named however you like, replacing the names of the underlying filters and methods. You can provide properties for only those methods that you want to expose, simplifying the user interface. You can provide your own preferred default values for properties, replacing those of the underlying filter. One filter could be used in multiple proxies, "preconfigured" for multiple specific use-cases.

Plugin Examples Reader Filter Toolbar Custom Panel

Sample Reader Plugin XML <ServerManagerConfiguration> <ProxyGroup name="sources"> <SourceProxy name="TulipReader" class="vtkTulipReader"> <StringVectorProperty name="FileName" command="SetFileName" number_of_elements="1"> <FileListDomain name="files"/> </StringVectorProperty> <Hints> <View type="ClientGraphView"/> </Hints> </SourceProxy> </ProxyGroup> </ServerManagerConfiguration>

Sample Reader Client XML <ParaViewReaders> <Reader name="TulipReader" extensions="tlp" file_description="Tulip graphs"> </Reader> </ParaViewReaders>

Sample Reader Listfile ADD_PARAVIEW_PLUGIN(MyReaders "1.0" SERVER_MANAGER_XML MyReadersSM.xml SERVER_MANAGER_SOURCES ${VTK_SOURCE_DIR}/Infovis/vtkTulipReader.h GUI_RESOURCE_FILES MyReadersGUI.xml ) TARGET_LINK_LIBRARIES(MyReaders vtkInfovis

Sample Filter Plugin XML <ServerManagerConfiguration> <ProxyGroup name="filters"> <SourceProxy name="DataObjectToTable" class="vtkDataObjectToTable"> <InputProperty name="Input" command="SetInputConnection"/> <IntVectorProperty name="FieldType" command="SetFieldType" number_of_elements="1" default_values="0"> <EnumerationDomain name="enum"> <Entry value="0" text="Field Data"/> <Entry value="1" text="Point Data"/> <Entry value="2" text="Cell Data"/> <Entry value="3" text="Vertex Data"/> <Entry value="4" text="Edge Data"/> </EnumerationDomain> </IntVectorProperty> <Hints> <View type="ClientTableView"/> </Hints> </SourceProxy> </ProxyGroup> </ServerManagerConfiguration>

Sample Filter Listfile ADD_PARAVIEW_PLUGIN(MyFilters "1.0" SERVER_MANAGER_XML MyFiltersSM.xml SERVER_MANAGER_SOURCES ${VTK_SOURCE_DIR}/Infovis/vtkDataObjectToTable.h ) TARGET_LINK_LIBRARIES(MyFilters vtkInfovis

Sample Toolbar Plugin Source #include <QActionGroup> #include <QApplication> #include <QMessageBox> #include <QStyle> class MyToolBar : public QActionGroup { Q_OBJECT public: MyToolBar (QObject* p) : QActionGroup(p) QIcon icon = qApp->style()->standardIcon(QStyle::SP_MessageBoxCritical); QAction* a = this->addAction(new QAction(icon, "MyAction", this)); QObject::connect(a, SIGNAL(triggered(bool)), this, SLOT(onAction())); } public slots: void onAction() QMessageBox::information(NULL, "MyAction", "MyAction was invoked\n"); };

Sample Toolbar Listfile QT4_WRAP_CPP(MOC_SRCS MyToolBar.h) ADD_PARAVIEW_ACTION_GROUP( IFACES IFACE_SRCS CLASS_NAME MyToolBar GROUP_NAME "ToolBar/MyActions" ) ADD_PARAVIEW_PLUGIN(MyToolBar "1.0" GUI_INTERFACES ${IFACES} SOURCES MyToolBar.cxx ${MOC_SRCS} ${IFACE_SRCS}

Custom Panel Sources #include "pqObjectPanel.h" class MyCustomPanel : public pqObjectPanel { Q_OBJECT public: MyCustomPanel(pqProxy* proxy, QWidget* p) : pqObjectPanel(proxy, p) vtkSMProxy* my_proxy = proxy->GetProxy(); /* Sync widgets with proxy property values here. */ /* Connect widget signals to the setModified() slot here … */ QObject::connect(this->Widgets.foo, SIGNAL(textEdited(const QString&)), this, SLOT(setModified())); } private slots: virtual void accept() vtkSMProxy* my_proxy = this->referenceProxy()->getProxy(); /* Sync proxy properties with widget states here. */ virtual void reset() pqObjectPanel::reset(); };

Custom Panel Listfile QT4_WRAP_CPP(MOC_SRCS MyCustomPanel.h) ADD_PARAVIEW_OBJECT_PANEL( IFACES IFACE_SRCS CLASS_NAME MyCustomPanel XML_NAME DataObjectToTable XML_GROUP filters ) ADD_OVERVIEW_PLUGIN( MyCustomPanel "1.0" GUI_INTERFACES ${IFACES} SOURCES MyCustomPanel.cxx ${MOC_SRCS} ${IFACE_SRCS}

Plugin Execution Context Remember that plugins can be loaded into the client, the server, or both. In many cases a server won’t have access to the same libraries as the client. Example: a plugin that contains a VTK filter and a corresponding custom panel might not load successfully on the server, since the custom panel has a Qt dependency. Solution: separate plugins for server and client - one containing just the filter for use with server and client, and one containing just the panel for use with the client.

Useful Plugin References Server Manager XML The ParaView Guide, Version 3, section 18.6, pp 262 - 273. The ParaView/Servers/ServerManager/Resources/ directory. General Plugin Information The ParaView Guide, Version 3, chapter 19. http://paraview.org/Wiki/Plugin_HowTo Sample Plugins The ParaView/Examples/Plugins directory. The ParaView/Plugins directory.

Vertical Applications Traditional ParaView provides a pipeline-oriented interface. Users manipulate the pipeline directly, and must understand it at a low level. Nothing we’ve seen so far changes that - we add to the list of pipeline components, and we grow the UI by adding views, toolbars, etc. Sometimes, you just gotta simplify …

"Minor Simplification" - OverView

"Minor Simplification" - Steps Copy-n-paste the contents of ParaView/Applications/Client/ Feels dirty, but it’s < 4000 lines-of-code. You can modify the MainWindow class to simplify: Remove / simplify menus, docking windows, toolbars. Add common operations, custom toolbars, etc.

Starting From Zero - Demo