Python's Role in Visit

Total Page:16

File Type:pdf, Size:1020Kb

Python's Role in Visit PROC. OF THE 11th PYTHON IN SCIENCE CONF. (SCIPY 2012) 23 Python’s Role in VisIt Cyrus Harrison‡∗, Harinarayan Krishnan§ F Abstract—VisIt is an open source, turnkey application for scientific data anal- ysis and visualization that runs on a wide variety of platforms from desktops to Python GUI CLI petascale class supercomputers. VisIt’s core software infrastructure is written in Clients C++, however Python plays a vital role in enabling custom workflows. Recent work has extended Python’s use in VisIt beyond scripting, enabling custom State Control Python UIs and Python filters for low-level data manipulation. The ultimate (Python Client goal of this work is to evolve Python into a true peer to our core C++ plugin Viewer Interface) infrastructure. This paper provides an overview of Python’s role in VisIt with a (State Manager) focus on use cases of scripted rendering, data analysis, and custom application Local Components development. network connection Index Terms—visualization, hpc, python Direct Data Introduction Compute Manipulation VisIt [VisIt05], like EnSight [EnSight09] and ParaView (Python Filter MPI Engine [ParaView05], is an application designed for post processing of Runtime) mesh based scientific data. VisIt’s core infrastructure is written in C++ and it uses VTK [VTK96] for its underlying mesh data model. Its distributed-memory parallel architecture is tailored to Cluster Parallel Data process domain decomposed meshes created by simulations on large-scale HPC clusters. Early in development, the VisIt team adopted Python as the Fig. 1: Python integration with VisIt’s components. foundation of VisIt’s primary scripting interface. The scripting interface is available from both a standard Python interpreter and a custom command line client. The interface provides access to via VTK’s Python wrappers and leverage packages such all features available through VisIt’s GUI. It also includes support as NumPy [NumPy] and SciPy [SciPy]. Current support for macro recording of GUI actions to Python snippets and full includes the ability to create derived mesh quantities and control of windowless batch processing. execute data summarization operations. While Python has always played an important scripting role This paper provides an overview of how VisIt leverages Python in VisIt, two recent development efforts have greatly expanded in its software architecture, outlines these two recent Python VisIt’s Python capabilities: feature enhancements, and introduces several examples of use 1) We now support custom UI development using Qt via cases enabled by Python. PySide [PySide]. This allows users to embed VisIt’s visualization windows into their own Python applications. Python Integration Overview This provides a path to extend VisIt’s existing GUI and VisIt employs a client-server architecture composed of several for rapid development of streamlined UIs for specific use interacting software components: cases. • viewer 2) We recently enhanced VisIt by embedding Python in- A process coordinates the state of the system and terpreters into our data flow network pipelines. This provides the visualization windows used to display data. • client provides fine grained access, allowing users to write A set of processes, including a Qt-based GUI and custom algorithms in Python that manipulate mesh data Python-based command line interface (CLI), are used to setup plots and direct visualization operations. * Corresponding author: [email protected] • A parallel compute engine executes the visualization ‡ Lawrence Livermore National Laboratory pipelines. This component employs a data flow network § Lawrence Berkeley National Laboratory design and uses MPI for communication in distributed- Copyright © 2012 Cyrus Harrison et al. This is an open-access article memory parallel environments. distributed under the terms of the Creative Commons Attribution License, which permits unrestricted use, distribution, and reproduction in any medium, Client and viewer proceses are typically run on a desktop ma- provided the original author and source are credited. chine and connect to a parallel compute engine running remotely 24 PROC. OF THE 11th PYTHON IN SCIENCE CONF. (SCIPY 2012) on a HPC cluster. For smaller data sets, a local serial or parallel compute engine is also commonly used. Figure1 outlines how Python is integrated into VisIt’s compo- nents. VisIt both extends and embeds Python. State control of the viewer is provided by a Python Client Interface, available as Python/C extension module. This interface is outlined in the Python Client Interface section, and extensions to support custom UIs written in Python are described in the Custom Python UIs section. Direct access to low-level mesh data structures is provided by a Python Filter Runtime, embedded in VisIt’s compute engine processes. This runtime is described in the Python Filter Runtime section. Python Client Interface VisIt clients interact with the viewer process to control the state of visualization windows and data processing pipelines. Internally the system uses a collection of state objects that rely on a publish/subscribe design pattern for communication among com- ponents. These state objects are wrapped by a Python/C extension module to expose a Python state control API. The function calls are typically imperative: Add a new plot, Find the maximum value of a scalar field, etc. The client API is documented extensively in Fig. 2: Pseudocolor and Streamline plots setup using the script in the VisIt Python Interface Manual [VisItPyRef]. To introduce the Listing 1. API in this paper we provide a simple example script, Listing 1, that demonstrates VisIt’s five primary visualization building blocks: plot is created to display the scalar field named ’hardyglobal’. The mesh is transformed by a ThreeSlice operator to limit the • Databases: File readers and data sources. volume displayed by the Pseudocolor plot to three external faces. • Plots: Data set renderers. We use a query to obtain and print the maximum value of the • Operators: Filters implementing data set transformations. ’hardyglobal’ field. An expression is defined to extract the gradient • Expressions: Framework enabling the creation of derived quantities from existing mesh fields. of the ’hardyglobal’ scalar field. Finally, this gradient vector is used as the input field for a second plot, which traces streamlines. • Queries: Data summarization operations. Figure2 shows the resulting visualization which includes both the Pseudocolor Streamline Listing 1: Trace streamlines along the gradient of a scalar field. and plots. # Open an example file OpenDatabase("noise.silo") Accessing the Python Client Interface # Create a plot of the scalar field 'hardyglobal' For convenience, you can access the client interface from a custom AddPlot("Pseudocolor","hardyglobal") binary or a standalone Python interpreter. # Slice the volume to show only three # external faces. VisIt provides a command line interface (CLI) binary that AddOperator("ThreeSlice") embeds a Python interpreter and automatically imports the client tatts= ThreeSliceAttributes() interface module. There are several ways to access this binary: tatts.x=-10 tatts.y=-10 • From VisIt’s GUI, you can start a CLI instance from the tatts.z=-10 SetOperatorOptions(tatts) "Launch CLI" entry in the "Options" menu. DrawPlots() • Invoking VisIt from the command line with the -cli # Find the maximum value of the field 'hardyglobal' option starts the CLI and launches a connected viewer Query("Max") val= GetQueryOutputValue() process: print "Max value of'hardyglobal'=", val >visit -cli # Create a streamline plot that follows # the gradient of 'hardyglobal' For batch processing, the -nowin option launches the DefineVectorExpression("g","gradient(hardyglobal)") viewer in an offscreen mode and you can select a Python AddPlot("Streamline","g") script file to run using the -s option: satts= StreamlineAttributes() • >visit -cli -nowin -s satts.sourceType= satts.SpecifiedBox satts.sampleDensity0=7 <script_file.py> satts.sampleDensity1=7 satts.sampleDensity2=7 You can also import the interface into a standalone Python satts.coloringMethod= satts.ColorBySeedPointID interpreter and use the module to launch and control a new SetPlotOptions(satts) instance of VisIt. Listing 2 provides example code for this use DrawPlots() case. The core implementation of the VisIt module is a Python/C In this example, the Silo database reader is automatically selected extension module, so normal caveats for binary compatibly with to read meshes from the input file ’noise.silo’. A Pseudocolor your Python interpreter apply. PYTHON’S ROLE IN VISIT 25 The features of the VisIt interface are dependent on the version • The ability to reuse VisIt’s existing set of GUI widgets. of VisIt selected, so the import process is broken into two steps. The ability to utilize renderers as Qt widgets allows VisIt’s First, a small front end module is imported. This module allows visualization windows to be embedded in custom PySide GUIs you to select the options used to launch VisIt. Examples include: and other third party applications. Re-using VisIt’s existing generic using -nowin mode for the viewer process, selecting a specific widget toolset, which provides functionally such as remote filesys- version of VisIt, -v 2.5.1, etc. After these options are set tem browsing and a visualization pipeline editor, allows custom the Launch() method creates the appropriate Visit components. applications to incorporate advanced features with little difficulty. During the launch,
Recommended publications
  • Feature Tracking & Visualization in 'Visit'
    FEATURE TRACKING & VISUALIZATION IN ‘VISIT’ By NAVEEN ATMAKURI A thesis submitted to the Graduate School—New Brunswick Rutgers, The State University of New Jersey in partial fulfillment of the requirements for the degree of Master of Science Graduate Program in Electrical and Computer Engineering written under the direction of Professor Deborah Silver and approved by New Brunswick, New Jersey October 2010 ABSTRACT OF THE THESIS Feature Tracking & Visualization in VisIt by Naveen Atmakuri Thesis Director: Professor Deborah Silver The study and analysis of large experimental or simulation datasets in the field of science and engineering pose a great challenge to the scientists. These complex simulations generate data varying over a period of time. Scientists need to glean large quantities of time-varying data to understand the underlying physical phenomenon. This is where visualization tools can assist scientists in their quest for analysis and understanding of scientific data. Feature Tracking, developed at Visualization & Graphics Lab (Vizlab), Rutgers University, is one such visualization tool. Feature Tracking is an automated process to isolate and analyze certain regions or objects of interest, called ‘features’ and to highlight their underlying physical processes in time-varying 3D datasets. In this thesis, we present a methodology and documentation on how to port ‘Feature Tracking’ into VisIt. VisIt is a freely available open-source visualization software package that has a rich feature set for visualizing and analyzing data. VisIt can successfully handle massive data quantities in the range of tera-scale. The technology covered by this thesis is an improvement over the previous work that focused on Feature Tracking in VisIt.
    [Show full text]
  • Python for Economists Alex Bell
    Python for Economists Alex Bell [email protected] http://xkcd.com/353 This version: October 2016. If you have not already done so, download the files for the exercises here. Contents 1 Introduction to Python 3 1.1 Getting Set-Up................................................. 3 1.2 Syntax and Basic Data Structures...................................... 3 1.2.1 Variables: What Stata Calls Macros ................................ 4 1.2.2 Lists.................................................. 5 1.2.3 Functions ............................................... 6 1.2.4 Statements............................................... 7 1.2.5 Truth Value Testing ......................................... 8 1.3 Advanced Data Structures .......................................... 10 1.3.1 Tuples................................................. 10 1.3.2 Sets .................................................. 11 1.3.3 Dictionaries (also known as hash maps) .............................. 11 1.3.4 Casting and a Recap of Data Types................................. 12 1.4 String Operators and Regular Expressions ................................. 13 1.4.1 Regular Expression Syntax...................................... 14 1.4.2 Regular Expression Methods..................................... 16 1.4.3 Grouping RE's ............................................ 18 1.4.4 Assertions: Non-Capturing Groups................................. 19 1.4.5 Portability of REs (REs in Stata).................................. 20 1.5 Working with the Operating System....................................
    [Show full text]
  • Python Qt Tutorial Documentation Release 0.0
    Python Qt tutorial Documentation Release 0.0 Thomas P. Robitaille Jun 11, 2018 Contents 1 Installing 3 2 Part 1 - Hello, World! 5 3 Part 2 - Buttons and events 7 4 Part 3 - Laying out widgets 9 5 Part 4 - Dynamically updating widgets 13 i ii Python Qt tutorial Documentation, Release 0.0 This is a short tutorial on using Qt from Python. There are two main versions of Qt in use (Qt4 and Qt5) and several Python libraries to use Qt from Python (PyQt and PySide), but rather than picking one of these, this tutorial makes use of the QtPy package which provides a way to use whatever Python Qt package is available. This is not meant to be a completely exhaustive tutorial but just a place to start if you’ve never done Qt development before, and it will be expanded over time. Contents 1 Python Qt tutorial Documentation, Release 0.0 2 Contents CHAPTER 1 Installing 1.1 conda If you use conda to manage your Python environment (for example as part of Anaconda or Miniconda), you can easily install Qt, PyQt5, and QtPy (a common interface to all Python Qt bindings) using: conda install pyqt qtpy 1.2 pip If you don’t make use of conda, an easy way to install Qt, PyQt5, and QtPy is to do: pip install pyqt5 qtpy 3 Python Qt tutorial Documentation, Release 0.0 4 Chapter 1. Installing CHAPTER 2 Part 1 - Hello, World! To start off, we need to create a QApplication object, which represents the overall application: from qtpy.QtWidgets import QApplication app= QApplication([]) You will always need to ensure that a QApplication object exists, otherwise your Python script will terminate with an error if you try and use any other Qt objects.
    [Show full text]
  • Testing Pyside/Pyqt Code Using the Pytest Framework and Pytest-Qt
    Testing PySide/PyQt Code Using the pytest framework and pytest-qt Florian Bruhin “The Compiler” Bruhin Software 06. November 2019 Qt World Summit, Berlin About me • 2011: Started using Python • 2013: Started using PyQt and developing qutebrowser • 2015: Switched to pytest, ended up as a maintainer • 2017: qutebrowser v1.0.0, QtWebEngine by default • 2019: 40% employed, 60% open-source and freelancing (Bruhin Software) Giving trainings and talks at various conferences and companies! Relevant Python features Decorators registered_functions: List[Callable] = [] def register(f: Callable) -> Callable: registered_functions.append(f) return f @register def func() -> None: .... Relevant Python features Context Managers def write_file() -> None: with open("test.txt", "w") as f: f.write("Hello World") Defining your own: Object with special __enter__ and __exit__ methods. Relevant Python features Generators/yield def gen_values() -> Iterable[int] for i in range(4): yield i print(gen_values()) # <generator object gen_values at 0x...> print(list(gen_values())) # [0, 1, 2, 3] PyQt • Started in 1998 (!) by Riverbank Computing • GPL/commercial • Qt4 $ PyQt4 Qt5 $ PyQt5 PySide / Qt for Python • Started in 2009 by Nokia • Unmaintained for a long time • Since 2016: Officially maintained by the Qt Company again • LGPL/commercial • Qt4 $ PySide Qt5 $ PySide2 (Qt for Python) Qt and Python import sys from PySide2.QtWidgets import QApplication, QWidget, QPushButton if __name__ == "__main__": app = QApplication(sys.argv) window = QWidget() button = QPushButton("Don't
    [Show full text]
  • Lecture 1: September 8 Lecturer: Emery Berger Scribes: Bruno Silva, Gene Novark, Jim Partan
    CMPSCI 377 Operating Systems Fall 2009 Lecture 1: September 8 Lecturer: Emery Berger Scribes: Bruno Silva, Gene Novark, Jim Partan 1.1 General information This class is taught by Prof. Emery Berger in ELAB 323, every Tuesday and Thursday from 9:30am to 11:00am. ELAB is the older brick building next to the computer science building. For additional information related to the course (syllabus, projects, etc), please visit www.cs.umass.edu/~emery. Although the class name is Operating Systems, this course will deal mostly with large-scale computer systems. The main question to be studied is how to build correct, reliable and high performance computer systems. In order to answer this question, problems such as memory management, concurrency, scheduling, etc, will be studied. 1.1.1 Getting help Prof. Berger is available by appointment in his office (CS344). The TA's office hours are Mondays and Wednesdays from 4:00 PM to 5:00 PM in the Edlab (LGRT 223, 225). In addition to office hours, Discussion Sections will be led by the TA on Wednesdays from 12:20pm to 1:10pm in CMPSCI 142. Attendance is very important since sample test problems will be discussed, and the main concepts presented during the last couple of classes will be reinforced. Also, students looking for help can access the course's newsgroup (look for the link at Prof. Berger's website). Lecture notes will also be available. Although this class requires no textbook, interested students might look for classics of the area, such as Operating System Concepts (Silberschatz et all), 7th Edition.
    [Show full text]
  • Asyncprotect T1 Extunderscore Gui Documentation
    async_gui Documentation Release 0.1.1 Roman Haritonov Aug 21, 2017 Contents 1 Usage 1 1.1 Installation................................................1 1.2 First steps.................................................1 1.3 Tasks in threads.............................................2 1.4 Tasks in processes............................................3 1.5 Tasks in greenlets.............................................3 1.6 Returning result.............................................3 2 Supported GUI toolkits 5 3 API 7 3.1 engine..................................................7 3.2 tasks...................................................8 3.3 gevent_tasks...............................................9 4 Indices and tables 11 Python Module Index 13 i ii CHAPTER 1 Usage Installation Install with pip or easy_install: $ pip install --upgrade async_gui or download latest version from GitHub: $ git clone https://github.com/reclosedev/async_gui.git $ cd async_gui $ python setup.py install To run tests: $ python setup.py test First steps First create Engine instance corresponding to your GUI toolkit (see Supported GUI toolkits): from async_gui.tasks import Task from async_gui.toolkits.pyqt import PyQtEngine engine= PyQtEngine() It contains decorator @engine.async which allows you to write asynchronous code in serial way without callbacks. Example button click handler: @engine.async def on_button_click(self, *args): self.status_label.setText("Downloading image...") 1 async_gui Documentation, Release 0.1.1 # Run single task in separate thread
    [Show full text]
  • CIS192 Python Programming Graphical User Interfaces
    CIS192 Python Programming Graphical User Interfaces Robert Rand University of Pennsylvania November 19, 2015 Robert Rand (University of Pennsylvania) CIS 192 November 19, 2015 1 / 20 Outline 1 Graphical User Interface Tkinter Other Graphics Modules 2 Text User Interface curses Other Text Interface Modules Robert Rand (University of Pennsylvania) CIS 192 November 19, 2015 2 / 20 Tkinter The module Tkinter is a wrapper of the graphics library Tcl/Tk Why choose Tkinter over other graphics modules I It’s bundled with Python so you don’t need to install anything I It’s fast I Guido van Rossum helped write the Python interface The docs for Tkinter aren’t that good I The docs for Tk/Tcl are much better I Tk/Tcl functions translate well to Tkinter I It’s helpful to learn the basic syntax of Tk/Tcl Tk/Tcl syntax ! Python: I class .var_name -key1 val1 -key2 val2 ! var_name = class(key1=val1, key2=val2) I .var_name method -key val ! var_name.method(key=val) Robert Rand (University of Pennsylvania) CIS 192 November 19, 2015 3 / 20 Bare Bones Tkinter from Tkinter import Frame class SomeApp(Frame): def __init__(self, master=None): tk.Frame.__init__(self, master) def main(): root = tk.Tk() app = SomeApp(master=root) app.mainloop() if __name__ ==’__main__’: main() Robert Rand (University of Pennsylvania) CIS 192 November 19, 2015 4 / 20 Images By default, Tkinter only supports bitmap, gif, and ppm/pgm images More images are supported with Pillow Pillow is a fork of Python Imaging Library pip install pillow from PIL import Image, ImageTk Create a PIL
    [Show full text]
  • Oracle Solaris Containers Data Sheet
    ORACLE DATA SHEET ORACLE SOLARIS 8 CONTAINERS AND ORACLE SOLARIS 9 CONTAINERS KEY BENEFITS Oracle Solaris 8 Containers and Oracle Solaris 9 Containers let you migrate !"Quickly deploy Oracle Solaris 8 or Oracle Solaris 8 and Oracle Solaris 9 applications and environments to the Oracle Solaris 9 applications on Oracle Solaris 10 latest SPARC systems running Oracle Solaris 10. These environments can later !"Lower costs through consolidation onto be updated, at your own pace, to Oracle Solaris 10 Containers. With migration newer systems assistance from Oracle Advanced Customer Services, take advantage of Oracle !"Mitigate risks with expert assistance Solaris 8 Containers and Oracle Solaris 9 Containers to reduce the effort and !"Implement your solution for a single risk associated with migrating to the latest network computing environments. application or as part of a larger virtualization strategy Deploy Previous-Version Oracle Solaris Applications on Oracle Solaris 10 Oracle Solaris 8 Containers and Oracle Solaris 9 Containers serve as transition tools, decoupling your hardware upgrade from the operating system (OS) and applications, giving you more time to upgrade your applications to Oracle Solaris 10. Oracle guarantees application compatibility between OS releases, and builds on that by adding the ability to capture and transfer the surrounding configuration, data, and other elements of the OS. You can rapidly upgrade to new Oracle hardware and Oracle Solaris 10 while providing the Oracle Solaris 8 or Oracle Solaris 9 runtime environment as needed. Lower Costs by Consolidating Systems Today’s systems can be many times more powerful, space-efficient, and cost-efficient than earlier generations. However, hardware upgrades often demand OS as well as application upgrades.
    [Show full text]
  • Developing for Industrial Iot with Embedded Linux OS on Dragonboard™ 410C by Timesys University
    Qualcomm Developer Network Presents Developing for Industrial IoT with Embedded Linux OS on DragonBoard™ 410c by Timesys University Co-sponsored by Qualcomm Technologies, Inc. and Arrow Electronics Session 3 Building a Cutting-Edge User Interface with Qt® Maciej Halasz, Vice President of Technology Timesys Corporation Maurice Kalinowski, Principal Software Engineer Qt Company www.timesys.com ©2017 Timesys Corp. 3 Webinar Series . Session 1: Introduction to DragonBoard 410 SoC and Starting Development of Your Embedded Linux based “Industrial Internet of Things” (IIoT) Device • Setup for designing IIoT products • How to assemble and deploy initial BSP . Session 2: Application Development for Embedded Linux • Application development environment setup • How to reflect product requirements in the BSP • Communication in the IIoT system . Session 3: Building a Cutting-Edge User Interface with Qt® • Developing modern, rich UIs for factory terminals . Session 4: Embedded Products Security • Designing security-rich devices www.timesys.com ©2017 Timesys Corp. 4 Session 2 recap . What we did • Reflected API requirements in OpenEmbedded RPB Linux BSP • Talked about BSP customizations – New meta-layer – New recipe – Modified image . Application Development • SDK setup on a host • Used IDE to develop/deploy/debug code on DragonBoard 410c • We looked briefly at a BLE protocol • Programmed an application that received info from a sensor board – Temperature, Luminosity, FreeFall . Key takeaways • Its very straight forward to develop C/C++ application code for the 410c • IDEs accelerate development process • When working with Linaro BSP, customers can leverage meta layer library on OpenEmbedded https://layers.openembedded.org www.timesys.com ©2017 Timesys Corp. 5 Session 3 — Agenda . Sharing information in an IoT system .
    [Show full text]
  • Oracle Solaris 11.3 Frequently Asked Questions
    ORACLE FAQ Oracle Solaris 11.3 Frequently Asked Questions Introduction x REST-based admin interfaces: Oracle Solaris 11 includes Oracle Solaris is an efficient and simple, secure and support for developing REST-based APIs using the Remote Administration Daemon. This is in addition to the existing compliant, open and affordable solution for deploying programmatic interfaces that enable administrators to enterprise-grade clouds. More than just an operating remotely configure Oracle Solaris systems using Python, C, and Java. system (OS), Oracle Solaris 11.3 includes features and For more information, see “What's New in Oracle Solaris 11.3.” enhancements that deliver no-compromise virtualization, application-driven software-defined Frequently Asked Questions networking, and a complete OpenStack distribution for General Information creating and managing an enterprise cloud, thus Q: Where can I download Oracle Solaris 11.3? enabling you to meet IT demands and redefine your A: Download Oracle Solaris 11.3 from Oracle Technology business. Network at the following location: oracle.com/technetwork/server- storage/solaris11/downloads/index.html Oracle Solaris 11.3 Highlights Q: Where can I log issues relating to Oracle Solaris 11.3? Oracle Solaris 11.3 introduces hundreds of new features that A: Customers who have an active Oracle support agreement enhance its capabilities as an overall cloud infrastructure can log service requests through My Oracle Support at solution, including the following: support.oracle.com. x Oracle’s Software in Silicon technology: The SPARC M7 processor enables application developers to take advantage Q: Where can I find more information about Oracle Solaris of the Silicon Secured Memory feature of the chip to help 11.3? prevent buffer overflows and other external attacks.
    [Show full text]
  • Multiplatformní GUI Toolkity GTK+ a Qt
    Multiplatformní GUI toolkity GTK+ a Qt Jan Outrata KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO V OLOMOUCI GUI toolkit (widget toolkit) (1) = programová knihovna (nebo kolekce knihoven) implementující prvky GUI = widgety (tlačítka, seznamy, menu, posuvník, bary, dialog, okno atd.) a umožňující tvorbu GUI (grafického uživatelského rozhraní) aplikace vlastní jednotný nebo nativní (pro platformu/systém) vzhled widgetů, možnost stylování nízkoúrovňové (Xt a Xlib v X Windows System a libwayland ve Waylandu na unixových systémech, GDI Windows API, Quartz a Carbon v Apple Mac OS) a vysokoúrovňové (MFC, WTL, WPF a Windows Forms v MS Windows, Cocoa v Apple Mac OS X, Motif/Lesstif, Xaw a XForms na unixových systémech) multiplatformní = pro více platforem (MS Windows, GNU/Linux, Apple Mac OS X, mobilní) nebo platformově nezávislé (Java) – aplikace může být také (většinou) událostmi řízené programování (event-driven programming) – toolkit v hlavní smyčce zachytává události (uživatelské od myši nebo klávesnice, od časovače, systému, aplikace samotné atd.) a umožňuje implementaci vlastních obsluh (even handler, callback function), objektově orientované programování (objekty = widgety aj.) – nevyžaduje OO programovací jazyk! Jan Outrata (Univerzita Palackého v Olomouci) Multiplatformní GUI toolkity duben 2015 1 / 10 GUI toolkit (widget toolkit) (2) language binding = API (aplikační programové rozhraní) toolkitu v jiném prog. jazyce než původní API a toolkit samotný GUI designer/builder = WYSIWYG nástroj pro tvorbu GUI s využitím toolkitu, hierarchicky skládáním prvků, z uloženého XML pak generuje kód nebo GUI vytvoří za běhu aplikace nekomerční (GNU (L)GPL, MIT, open source) i komerční licence např. GTK+ (C), Qt (C++), wxWidgets (C++), FLTK (C++), CEGUI (C++), Swing/JFC (Java), SWT (Java), JavaFX (Java), Tcl/Tk (Tcl), XUL (XML) aj.
    [Show full text]
  • An Introduction to Windows Operating System
    EINAR KROGH AN INTRODUCTION TO WINDOWS OPERATING SYSTEM Download free eBooks at bookboon.com 2 An Introduction to Windows Operating System 2nd edition © 2017 Einar Krogh & bookboon.com ISBN 978-87-403-1935-4 Peer review by Høgskolelektor Lars Vidar Magnusson, Høgskolen i Østfold Download free eBooks at bookboon.com 3 AN INTRODUCTION TO WINDOWS OPERATING SYSTEM CONTENTS CONTENTS Introduction 9 1 About Windows history 10 1.1 MS-DOS 10 1.2 The first versions of Windows 11 1.3 Windows NT 12 1.4 Windows versions based on Windows NT 13 1.5 Windows Server 15 1.6 Control Questions 17 2 The tasks of an operating system 18 2.1 About the construction of computers 19 2.2 Central tasks for an operating system 20 2.3 Control Questions 22 �e Graduate Programme I joined MITAS because for Engineers and Geoscientists I wanted real responsibili� www.discovermitas.comMaersk.com/Mitas �e Graduate Programme I joined MITAS because for Engineers and Geoscientists I wanted real responsibili� Maersk.com/Mitas Month 16 I wwasas a construction Month 16 supervisorI wwasas in a construction the North Sea supervisor in advising and the North Sea Real work helpinghe foremen advising and IInternationalnternationaal opportunities ��reeree wworkoro placements solves Real work problems helpinghe foremen IInternationalnternationaal opportunities ��reeree wworkoro placements solves problems Download free eBooks at bookboon.com Click on the ad to read more 4 AN INTRODUCTION TO WINDOWS OPERATING SYSTEM CONTENTS 3 Some concepts and terms of the Windows operating system 23 3.1
    [Show full text]