Building GUIs in Haskell

Size: px
Start display at page:

Download "Building GUIs in Haskell"

Transcription

1 Building GUIs in Haskell Building GUIs in Haskell Comparing Gtk2Hs and wxhaskell, Universiteit Utrecht December 14, 2006

2 Building GUIs in Haskell Dazzle

3 Building GUIs in Haskell Proxima

4 Building GUIs in Haskell hide

5 Building GUIs in Haskell Frag

6 Building GUIs in Haskell Overview 1 Introduction 2 Gtk2Hs 3 wxhaskell 4 Comparison 5 Styles of libraries 6 Conclusion

7 Building GUIs in Haskell > Introduction Prejudice of building GUIs in Haskell Building GUIs in Haskell is underrated, many prejudices exist: Most Haskell applications do not require a GUI Very few useful GUI libraries exist Implementing a GUI requires an object-oriented language

8 Building GUIs in Haskell > Introduction Prejudice of building GUIs in Haskell Building GUIs in Haskell is underrated, many prejudices exist: Most Haskell applications do not require a GUI Very few useful GUI libraries exist Implementing a GUI requires an object-oriented language Haskell features that facilitate building GUIs in Haskell: Monads Higher-order functions Polymorphism Type classes Phantom types

9 Building GUIs in Haskell > Introduction Implementation of GUI libraries Building a GUI library in Haskell from scratch is fruitless: Lifting on success of another library is easier Implementing a complete library takes a long time Extension to another library is more maintainable Many extensive libraries already exist

10 Building GUIs in Haskell > Introduction Implementation of GUI libraries Building a GUI library in Haskell from scratch is fruitless: Lifting on success of another library is easier Implementing a complete library takes a long time Extension to another library is more maintainable Many extensive libraries already exist Problem: Existing extensive libraries are mostly written in C/C++

11 Building GUIs in Haskell > Introduction Implementation of GUI libraries Building a GUI library in Haskell from scratch is fruitless: Lifting on success of another library is easier Implementing a complete library takes a long time Extension to another library is more maintainable Many extensive libraries already exist Problem: Existing extensive libraries are mostly written in C/C++ Solution: Use the Foreign Function Interface (FFI)

12 Building GUIs in Haskell > Introduction Foreign Function Interface FFI allows to interact with another language, two major problems: 1 Haskell value can reference C/C++ value Problem C/C++ expects the user to explicitly free memory Solution Use a ForeignPtr with reference scheme

13 Building GUIs in Haskell > Introduction Foreign Function Interface FFI allows to interact with another language, two major problems: 1 Haskell value can reference C/C++ value Problem C/C++ expects the user to explicitly free memory Solution Use a ForeignPtr with reference scheme 2 C/C++ value referencing Haskell value Problem Garbage collection for Haskell can free memory too early move data around in memory Solution Use a StablePtr, which is untouched by the garbage collector

14 Building GUIs in Haskell > Introduction Comparison of libraries Two different styles of libraries: Monadic, imperative feel to building GUIs Declarative, point-free style using arrows

15 Building GUIs in Haskell > Introduction Comparison of libraries Two different styles of libraries: Monadic, imperative feel to building GUIs Declarative, point-free style using arrows Two monadic libraries will be compared: Gtk2Hs Developed by Axel Simon, currently maintained by Duncan Coutts wxhaskell Developed by Daan Leijen

16 Building GUIs in Haskell > Introduction Comparison of libraries Two different styles of libraries: Monadic, imperative feel to building GUIs Declarative, point-free style using arrows Two monadic libraries will be compared: Gtk2Hs Developed by Axel Simon, currently maintained by Duncan Coutts wxhaskell Developed by Daan Leijen Question: What determines the usability of a GUI library in Haskell?

17 Building GUIs in Haskell > Introduction Running example Application converting currencies: Managing state Managing widgets Frame Input field Button Implementing layout Events Gtk2Hs wxhaskell

18 Building GUIs in Haskell > Introduction Library-independent code Currency data type data Currency = Euro Guilder deriving Show Showing a currency tolabel :: Currency String tolabel = ("To " +). show type State = (Float, Currency)

19 Building GUIs in Haskell > Introduction Library-independent code Currency data type data Currency = Euro Guilder deriving Show Showing a currency tolabel :: Currency String tolabel = ("To " +). show type State = (Float, Currency) Flipping the current state flipstate :: State State flipstate (rate, Euro) = (1 / rate, Guilder) flipstate (rate, Guilder) = (1 / rate, Euro)

20 Building GUIs in Haskell > Gtk2Hs > Example Gtk2Hs in action (1) Building the GUI main :: IO () main = do initgui var newioref ( , Euro) frm windownew windowsettitle frm "Converter" ent entrynew entrysettext ent "0" btn buttonnew buttonsetlabel (tolabel Guilder)...

21 Building GUIs in Haskell > Gtk2Hs > Example Gtk2Hs in action (1) Building the GUI main :: IO () main = do initgui var newioref ( , Euro) frm windownew windowsettitle frm "Converter" ent entrynew entrysettext ent "0" btn buttonnew buttonsetlabel (tolabel Guilder)...

22 Building GUIs in Haskell > Gtk2Hs > Example Gtk2Hs in action (1) Building the GUI main :: IO () main = do initgui var newioref ( , Euro) frm windownew windowsettitle frm "Converter" ent entrynew entrysettext ent "0" btn buttonnew buttonsetlabel (tolabel Guilder)...

23 Building GUIs in Haskell > Gtk2Hs > Example Gtk2Hs in action (1) Building the GUI main :: IO () main = do initgui var newioref ( , Euro) frm windownew windowsettitle frm "Converter" ent entrynew entrysettext ent "0" btn buttonnew buttonsetlabel (tolabel Guilder)...

24 Building GUIs in Haskell > Gtk2Hs > Example Gtk2Hs in action (1) Building the GUI main :: IO () main = do initgui var newioref ( , Euro) frm windownew windowsettitle frm "Converter" ent entrynew entrysettext ent "0" btn buttonnew buttonsetlabel (tolabel Guilder)...

25 Building GUIs in Haskell > Gtk2Hs > Example Gtk2Hs in action (2) Building the GUI cont d main :: IO () main = do... box hboxnew True 5 set box [containerchild := ent ] set box [containerchild := btn] set frm [containerchild := box ] let click = change var ent btn onclicked btn click widgetshowall frm maingui

26 Building GUIs in Haskell > Gtk2Hs > Example Gtk2Hs in action (2) Building the GUI cont d main :: IO () main = do... box hboxnew True 5 set box [containerchild := ent ] set box [containerchild := btn] set frm [containerchild := box ] let click = change var ent btn onclicked btn click widgetshowall frm maingui

27 Building GUIs in Haskell > Gtk2Hs > Example Gtk2Hs in action (2) Building the GUI cont d main :: IO () main = do... box hboxnew True 5 set box [containerchild := ent ] set box [containerchild := btn] set frm [containerchild := box ] let click = change var ent btn onclicked btn click widgetshowall frm maingui

28 Building GUIs in Haskell > Gtk2Hs > Example Gtk2Hs in action (3) Implementing the event handler type StateVar = IORef State change :: StateVar Entry Button IO () change var ent btn = do state@(rate, currency) readioref var input entrygettext ent case string2float input of Just x do writeioref var (flipstate state) entrysettext ent (show $ rate x) buttonsetlabel btn (tolabel currency) Nothing return ()

29 Building GUIs in Haskell > Gtk2Hs > Example Gtk2Hs in action (3) Implementing the event handler type StateVar = IORef State change :: StateVar Entry Button IO () change var ent btn = do state@(rate, currency) readioref var input entrygettext ent case string2float input of Just x do writeioref var (flipstate state) entrysettext ent (show $ rate x) buttonsetlabel btn (tolabel currency) Nothing return ()

30 Building GUIs in Haskell > Gtk2Hs > Example Gtk2Hs in action (3) Implementing the event handler type StateVar = IORef State change :: StateVar Entry Button IO () change var ent btn = do state@(rate, currency) readioref var input entrygettext ent case string2float input of Just x do writeioref var (flipstate state) entrysettext ent (show $ rate x) buttonsetlabel btn (tolabel currency) Nothing return ()

31 Building GUIs in Haskell > Gtk2Hs > Example Gtk2Hs in action (3) Implementing the event handler type StateVar = IORef State change :: StateVar Entry Button IO () change var ent btn = do state@(rate, currency) readioref var input entrygettext ent case string2float input of Just x do writeioref var (flipstate state) entrysettext ent (show $ rate x) buttonsetlabel btn (tolabel currency) Nothing return ()

32 Building GUIs in Haskell > Gtk2Hs > Example Gtk2Hs in action (3) Implementing the event handler type StateVar = IORef State change :: StateVar Entry Button IO () change var ent btn = do state@(rate, currency) readioref var input entrygettext ent case string2float input of Just x do writeioref var (flipstate state) entrysettext ent (show $ rate x) buttonsetlabel btn (tolabel currency) Nothing return ()

33 Building GUIs in Haskell > Gtk2Hs > Example Gtk2Hs in action (3) Implementing the event handler type StateVar = IORef State change :: StateVar Entry Button IO () change var ent btn = do state@(rate, currency) readioref var input entrygettext ent case string2float input of Just x do writeioref var (flipstate state) entrysettext ent (show $ rate x) buttonsetlabel btn (tolabel currency) Nothing return ()

34 Building GUIs in Haskell > Gtk2Hs > Example Gtk2Hs in action (3) Implementing the event handler type StateVar = IORef State change :: StateVar Entry Button IO () change var ent btn = do state@(rate, currency) readioref var input entrygettext ent case string2float input of Just x do writeioref var (flipstate state) entrysettext ent (show $ rate x) buttonsetlabel btn (tolabel currency) Nothing return ()

35 Building GUIs in Haskell > Gtk2Hs > Example Gtk2Hs in action (3) Implementing the event handler type StateVar = IORef State change :: StateVar Entry Button IO () change var ent btn = do state@(rate, currency) readioref var input entrygettext ent case string2float input of Just x do writeioref var (flipstate state) entrysettext ent (show $ rate x) buttonsetlabel btn (tolabel currency) Nothing return ()

36 Building GUIs in Haskell > Gtk2Hs > Architecture Underlying toolkit Gtk2Hs built on top of GTK+: Large open source toolkit Many widgets available Platform independent Written in C Gtk2Hs API generated from GTK+ source

37 Building GUIs in Haskell > Gtk2Hs > Architecture Main features General features: Almost covered the complete GTK+ API Platform independence Bindings for Cairo vector graphics library Gnome modules (GConf and SourceView) Mozilla browser rendering engine Extensive documentation Unicode support Important feature to discuss: Support for visual GUI builder, called Glade

38 Building GUIs in Haskell > Gtk2Hs > Glade The visual GUI builder Defining (complex) layout by hand is hard: Not really intuitive Looking up library functions Effect of change visible after compilation

39 Building GUIs in Haskell > Gtk2Hs > Glade The visual GUI builder Defining (complex) layout by hand is hard: Not really intuitive Looking up library functions Effect of change visible after compilation do... edit textviewnew vbox vboxnew False 0 set vbox [boxhomogeneous := False ] boxpackstart vbox menubar PackNatural 0 boxpackstart vbox toolbar PackNatural 0 boxpackstart vbox edit PackGrow 0...

40 Building GUIs in Haskell > Gtk2Hs > Glade Glade to the rescue! Glade, the visual GUI builder: Comes with GTK+ Drag n drop widgets Designed GUI can be imported using Gtk2Hs

41 Building GUIs in Haskell > Gtk2Hs > Glade Exporting GUIs Glade saves GUI to.glade file (XML format)... <child> <widget class="gtkhbox" id="box"> <property name="visible">true</property> <property name="homogeneous">false</property> <property name="spacing">0</property> <child> <widget class="gtkentry" id="ent">...

42 Building GUIs in Haskell > Gtk2Hs > Glade Exporting GUIs Glade saves GUI to.glade file (XML format)... <child> <widget class="gtkhbox" id="box"> <property name="visible">true</property> <property name="homogeneous">false</property> <property name="spacing">0</property> <child> <widget class="gtkentry" id="ent">... Import widgets with xmlgetwidget using the id attribute

43 Building GUIs in Haskell > Gtk2Hs > Glade Gtk2Hs and Glade in action Creating and laying out widgets is done using Glade: Building the GUI main :: IO () main = do initgui Just xml xmlnew "converter.glade" frm xmlgetwidget xml casttowindow "frm" ent xmlgetwidget xml casttoentry "ent" btn xmlgetwidget xml casttobutton "btn"... The rest of the code is left unchanged

44 Building GUIs in Haskell > Gtk2Hs > Glade Gtk2Hs and Glade in action Creating and laying out widgets is done using Glade: Building the GUI main :: IO () main = do initgui Just xml xmlnew "converter.glade" frm xmlgetwidget xml casttowindow "frm" ent xmlgetwidget xml casttoentry "ent" btn xmlgetwidget xml casttobutton "btn"... The rest of the code is left unchanged

45 Building GUIs in Haskell > Gtk2Hs > Glade Gtk2Hs and Glade in action Creating and laying out widgets is done using Glade: Building the GUI main :: IO () main = do initgui Just xml xmlnew "converter.glade" frm xmlgetwidget xml casttowindow "frm" ent xmlgetwidget xml casttoentry "ent" btn xmlgetwidget xml casttobutton "btn"... The rest of the code is left unchanged

46 Building GUIs in Haskell > wxhaskell > Example wxhaskell in action (1) Building the GUI main :: IO () main = start $ do var variable [value := ( , Euro)] frm frame [text := "Converter"] ent mkvalueentry frm [typedvalue := Just 0] btn button frm [text := tolabel Guilder ] set frm [layout := row 5 [widget ent, widget btn]] let click = change var ent btn set btn [on command := click ]

47 Building GUIs in Haskell > wxhaskell > Example wxhaskell in action (1) Building the GUI main :: IO () main = start $ do var variable [value := ( , Euro)] frm frame [text := "Converter"] ent mkvalueentry frm [typedvalue := Just 0] btn button frm [text := tolabel Guilder ] set frm [layout := row 5 [widget ent, widget btn]] let click = change var ent btn set btn [on command := click ]

48 Building GUIs in Haskell > wxhaskell > Example wxhaskell in action (1) Building the GUI main :: IO () main = start $ do var variable [value := ( , Euro)] frm frame [text := "Converter"] ent mkvalueentry frm [typedvalue := Just 0] btn button frm [text := tolabel Guilder ] set frm [layout := row 5 [widget ent, widget btn]] let click = change var ent btn set btn [on command := click ]

49 Building GUIs in Haskell > wxhaskell > Example wxhaskell in action (1) Building the GUI main :: IO () main = start $ do var variable [value := ( , Euro)] frm frame [text := "Converter"] ent mkvalueentry frm [typedvalue := Just 0] btn button frm [text := tolabel Guilder ] set frm [layout := row 5 [widget ent, widget btn]] let click = change var ent btn set btn [on command := click ]

50 Building GUIs in Haskell > wxhaskell > Example wxhaskell in action (1) Building the GUI main :: IO () main = start $ do var variable [value := ( , Euro)] frm frame [text := "Converter"] ent mkvalueentry frm [typedvalue := Just 0] btn button frm [text := tolabel Guilder ] set frm [layout := row 5 [widget ent, widget btn]] let click = change var ent btn set btn [on command := click ]

51 Building GUIs in Haskell > wxhaskell > Example wxhaskell in action (1) Building the GUI main :: IO () main = start $ do var variable [value := ( , Euro)] frm frame [text := "Converter"] ent mkvalueentry frm [typedvalue := Just 0] btn button frm [text := tolabel Guilder ] set frm [layout := row 5 [widget ent, widget btn]] let click = change var ent btn set btn [on command := click ]

52 Building GUIs in Haskell > wxhaskell > Example wxhaskell in action (1) Building the GUI main :: IO () main = start $ do var variable [value := ( , Euro)] frm frame [text := "Converter"] ent mkvalueentry frm [typedvalue := Just 0] btn button frm [text := tolabel Guilder ] set frm [layout := row 5 [widget ent, widget btn]] let click = change var ent btn set btn [on command := click ]

53 Building GUIs in Haskell > wxhaskell > Example wxhaskell in action (2) Implementing the event handler type StateVar = Var State change :: StateVar ValueEntry Float () Button () IO () change var ent btn = do (rate, currency) get var value input get ent typedvalue case input of Just x do set var [value : flipstate ] set ent [typedvalue := Just (rate x)] set btn [text := tolabel currency ] Nothing return ()

54 Building GUIs in Haskell > wxhaskell > Example wxhaskell in action (2) Implementing the event handler type StateVar = Var State change :: StateVar ValueEntry Float () Button () IO () change var ent btn = do (rate, currency) get var value input get ent typedvalue case input of Just x do set var [value : flipstate ] set ent [typedvalue := Just (rate x)] set btn [text := tolabel currency ] Nothing return ()

55 Building GUIs in Haskell > wxhaskell > Example wxhaskell in action (2) Implementing the event handler type StateVar = Var State change :: StateVar ValueEntry Float () Button () IO () change var ent btn = do (rate, currency) get var value input get ent typedvalue case input of Just x do set var [value : flipstate ] set ent [typedvalue := Just (rate x)] set btn [text := tolabel currency ] Nothing return ()

56 Building GUIs in Haskell > wxhaskell > Example wxhaskell in action (2) Implementing the event handler type StateVar = Var State change :: StateVar ValueEntry Float () Button () IO () change var ent btn = do (rate, currency) get var value input get ent typedvalue case input of Just x do set var [value : flipstate ] set ent [typedvalue := Just (rate x)] set btn [text := tolabel currency ] Nothing return ()

57 Building GUIs in Haskell > wxhaskell > Example wxhaskell in action (2) Implementing the event handler type StateVar = Var State change :: StateVar ValueEntry Float () Button () IO () change var ent btn = do (rate, currency) get var value input get ent typedvalue case input of Just x do set var [value : flipstate ] set ent [typedvalue := Just (rate x)] set btn [text := tolabel currency ] Nothing return ()

58 Building GUIs in Haskell > wxhaskell > Example wxhaskell in action (2) Implementing the event handler type StateVar = Var State change :: StateVar ValueEntry Float () Button () IO () change var ent btn = do (rate, currency) get var value input get ent typedvalue case input of Just x do set var [value : flipstate ] set ent [typedvalue := Just (rate x)] set btn [text := tolabel currency ] Nothing return ()

59 Building GUIs in Haskell > wxhaskell > Example wxhaskell in action (2) Implementing the event handler type StateVar = Var State change :: StateVar ValueEntry Float () Button () IO () change var ent btn = do (rate, currency) get var value input get ent typedvalue case input of Just x do set var [value : flipstate ] set ent [typedvalue := Just (rate x)] set btn [text := tolabel currency ] Nothing return ()

60 Building GUIs in Haskell > wxhaskell > Example wxhaskell in action (2) Implementing the event handler type StateVar = Var State change :: StateVar ValueEntry Float () Button () IO () change var ent btn = do (rate, currency) get var value input get ent typedvalue case input of Just x do set var [value : flipstate ] set ent [typedvalue := Just (rate x)] set btn [text := tolabel currency ] Nothing return ()

61 Building GUIs in Haskell > wxhaskell > Architecture Underlying toolkit wxhaskell built on top of wxwidgets: Large open source toolkit Many widgets available Platform independent Written in C++ wxhaskell API generated from wxwidgets source

62 Building GUIs in Haskell > wxhaskell > Architecture Main features General features: Completely covered wxwidgets API Platform independence Extensive documentation Unicode support Important features to discuss: Inheritance between widgets Shared attributes Typed widgets

63 Building GUIs in Haskell > wxhaskell > Architecture Inheritance between widgets (1) Pointer to a C++ object type Object a = Ptr a

64 Building GUIs in Haskell > wxhaskell > Architecture Inheritance between widgets (1) Pointer to a C++ object type Object a = Ptr a For each C++ class, a phantom type is introduced: Phantom data types data CWindow a data CControl a data CButton a

65 Building GUIs in Haskell > wxhaskell > Architecture Inheritance between widgets (1) Pointer to a C++ object type Object a = Ptr a For each C++ class, a phantom type is introduced: Phantom data types data CWindow a data CControl a data CButton a Model inheritance using type synonyms: type Window a = Object (CWindow a) type Control a = Window (CControl a) type Button a = Control (CButton a)

66 Building GUIs in Haskell > wxhaskell > Architecture Inheritance between widgets (2) Unfold the definition of Button Button a = Control (CButton a) = Window (CControl (CButton a)) = Object (CWindow (CControl (CButton a)))

67 Building GUIs in Haskell > wxhaskell > Architecture Inheritance between widgets (2) Unfold the definition of Button Button a = Control (CButton a) = Window (CControl (CButton a)) = Object (CWindow (CControl (CButton a))) button :: Window a [Prop (Button ())] IO (Button ()) Window a is at least an instance of Window Button () is exactly an instance of Button

68 Building GUIs in Haskell > wxhaskell > Architecture Shared attributes Using inheritance for shared attributes text :: Attr (Window a) String Unfortunately, there is no uniform implementation available

69 Building GUIs in Haskell > wxhaskell > Architecture Shared attributes Using inheritance for shared attributes text :: Attr (Window a) String Unfortunately, there is no uniform implementation available Combination of inheritance and overloading class Textual w where text :: Attr w String instance Textual (Button a) where text =...

70 Building GUIs in Haskell > wxhaskell > XTC Typed widgets The extended and Typed Controls (XTC) library: Developed by Arjan van IJzendoorn en Martijn Schrage Parsing and showing of values by XTC Visual feedback given when parsing fails No need for explicit conversions

71 Building GUIs in Haskell > wxhaskell > XTC Typed widgets The extended and Typed Controls (XTC) library: Developed by Arjan van IJzendoorn en Martijn Schrage Parsing and showing of values by XTC Visual feedback given when parsing fails No need for explicit conversions Remember the following line from the wxhaskell example:... ent mkvalueentry frm [typedvalue := Just 0]...

72 Building GUIs in Haskell > Comparison Strongest points of Gtk2Hs Glade, the visual GUI builder Graphical power, especially using the cairo vector graphics library

73 Building GUIs in Haskell > Comparison Strongest points of wxhaskell In general, there are more abstractions available: Administrative tasks (e.g, start) Gtk2Hs should have offered some abstraction for this: Possible definition of start in Gtk2Hs start :: WidgetClass a IO a IO () start gui = do initgui frame gui widgetshowall frame maingui Inheritance between widgets Shared attributes Typed widgets

74 Building GUIs in Haskell > Styles of libraries Different styles of libraries Monadic style: Imperative intuition Declarative style: Functional intuition Monadic libraries: Declarative libraries:

75 Building GUIs in Haskell > Styles of libraries Different styles of libraries Monadic style: Imperative intuition Binding variables Declarative style: Functional intuition Point-free programming Monadic libraries: Declarative libraries:

76 Building GUIs in Haskell > Styles of libraries Different styles of libraries Monadic style: Imperative intuition Binding variables Explicit event handling Declarative style: Functional intuition Point-free programming Implicit event handling Monadic libraries: Declarative libraries:

77 Building GUIs in Haskell > Styles of libraries Different styles of libraries Monadic style: Imperative intuition Binding variables Explicit event handling Static aspect (layout) of building GUIs Monadic libraries: Declarative style: Functional intuition Point-free programming Implicit event handling Dynamic aspect (events) of building GUIs Declarative libraries:

78 Building GUIs in Haskell > Styles of libraries Different styles of libraries Monadic style: Imperative intuition Binding variables Explicit event handling Static aspect (layout) of building GUIs Monadic libraries: Gtk2Hs wxhaskell HToolkit... Declarative style: Functional intuition Point-free programming Implicit event handling Dynamic aspect (events) of building GUIs Declarative libraries: Fudgets Fruit Yampa...

79 Building GUIs in Haskell > Conclusion Concluding remarks Question: What determines the usability of a GUI library in Haskell? Usability of a library depends on its abstractions Cross-pollination improves development of libraries

80 Building GUIs in Haskell > Conclusion Concluding remarks Question: What determines the usability of a GUI library in Haskell? Usability of a library depends on its abstractions Cross-pollination improves development of libraries General remark about the two libraries introduced: Gtk2Hs is powerful, but misses a lot of abstractions wxhaskell has nice abstractions, but could improve on: Bindings for (more powerful) graphical libraries A visual GUI builder (thesis project anyone?)

81 Building GUIs in Haskell > Conclusion Concluding remarks Question: What determines the usability of a GUI library in Haskell? Usability of a library depends on its abstractions Cross-pollination improves development of libraries General remark about the two libraries introduced: Gtk2Hs is powerful, but misses a lot of abstractions wxhaskell has nice abstractions, but could improve on: Bindings for (more powerful) graphical libraries A visual GUI builder (thesis project anyone?) If you are interested, visit the websites of the libraries discussed: haskell.org/gtk2hs wxhaskell.sourceforge.net

Countdown Alarm Clock. GUI Programming with wxhaskell. Widgets used. UI Creation Code. Wei Tan <[email protected]>

Countdown Alarm Clock. GUI Programming with wxhaskell. Widgets used. UI Creation Code. Wei Tan <wlta543@cse.unsw.edu.au> Countdown Alarm Clock GUI Programming with wxhaskell Wei Tan Widgets used UI Creation Code Frame Menu StaticText -- create main window & container for widgets f

More information

Course MS10975A Introduction to Programming. Length: 5 Days

Course MS10975A Introduction to Programming. Length: 5 Days 3 Riverchase Office Plaza Hoover, Alabama 35244 Phone: 205.989.4944 Fax: 855.317.2187 E-Mail: [email protected] Web: www.discoveritt.com Course MS10975A Introduction to Programming Length: 5 Days

More information

Proxima 2.0: WYSIWYG generic editing for Web 2.0

Proxima 2.0: WYSIWYG generic editing for Web 2.0 Proxima 2.0: WYSIWYG generic editing for Web 2.0 dr Martijn M. Schrage Dept. of Computing Sciences, Utrecht University [email protected] Abstract In line with the Web 2.0 trend, an increasing number of

More information

Specialized Android APP Development Program with Java (SAADPJ) Duration 2 months

Specialized Android APP Development Program with Java (SAADPJ) Duration 2 months Specialized Android APP Development Program with Java (SAADPJ) Duration 2 months Our program is a practical knowledge oriented program aimed at making innovative and attractive applications for mobile

More information

English. Asema.com Portlets Programmers' Manual

English. Asema.com Portlets Programmers' Manual English Asema.com Portlets Programmers' Manual Asema.com Portlets : Programmers' Manual Asema Electronics Ltd Copyright 2011-2013 No part of this publication may be reproduced, published, stored in an

More information

Embedded BI made easy

Embedded BI made easy June, 2015 1 Embedded BI made easy DashXML makes it easy for developers to embed highly customized reports and analytics into applications. DashXML is a fast and flexible framework that exposes Yellowfin

More information

Voice Driven Animation System

Voice Driven Animation System Voice Driven Animation System Zhijin Wang Department of Computer Science University of British Columbia Abstract The goal of this term project is to develop a voice driven animation system that could take

More information

Using SQL Server Management Studio

Using SQL Server Management Studio Using SQL Server Management Studio Microsoft SQL Server Management Studio 2005 is a graphical tool for database designer or programmer. With SQL Server Management Studio 2005 you can: Create databases

More information

MA-WA1920: Enterprise iphone and ipad Programming

MA-WA1920: Enterprise iphone and ipad Programming MA-WA1920: Enterprise iphone and ipad Programming Description This 5 day iphone training course teaches application development for the ios platform. It covers iphone, ipad and ipod Touch devices. This

More information

Visual Basic. murach's TRAINING & REFERENCE

Visual Basic. murach's TRAINING & REFERENCE TRAINING & REFERENCE murach's Visual Basic 2008 Anne Boehm lbm Mike Murach & Associates, Inc. H 1-800-221-5528 (559) 440-9071 Fax: (559) 440-0963 [email protected] www.murach.com Contents Introduction

More information

Qualtrics Question API

Qualtrics Question API Qualtrics Question API API subject to change without notice Version: 2010.01.12 Contents Introduction... 2 Functions... 2 disablenextbutton... 2 disablepreviousbutton... 2 enablenextbutton... 3 enablepreviousbutton...

More information

Lecture 1 Introduction to Android

Lecture 1 Introduction to Android These slides are by Dr. Jaerock Kwon at. The original URL is http://kettering.jrkwon.com/sites/default/files/2011-2/ce-491/lecture/alecture-01.pdf so please use that instead of pointing to this local copy

More information

INFOPATH FORMS FOR OUTLOOK, SHAREPOINT, OR THE WEB

INFOPATH FORMS FOR OUTLOOK, SHAREPOINT, OR THE WEB INFOPATH FORMS FOR OUTLOOK, SHAREPOINT, OR THE WEB GINI COURTER, TRIAD CONSULTING Like most people, you probably fill out business forms on a regular basis, including expense reports, time cards, surveys,

More information

Visual Basic Programming. An Introduction

Visual Basic Programming. An Introduction Visual Basic Programming An Introduction Why Visual Basic? Programming for the Windows User Interface is extremely complicated. Other Graphical User Interfaces (GUI) are no better. Visual Basic provides

More information

Application Developer Guide

Application Developer Guide IBM Maximo Asset Management 7.1 IBM Tivoli Asset Management for IT 7.1 IBM Tivoli Change and Configuration Management Database 7.1.1 IBM Tivoli Service Request Manager 7.1 Application Developer Guide Note

More information

Source Code Translation

Source Code Translation Source Code Translation Everyone who writes computer software eventually faces the requirement of converting a large code base from one programming language to another. That requirement is sometimes driven

More information

JMulTi/JStatCom - A Data Analysis Toolkit for End-users and Developers

JMulTi/JStatCom - A Data Analysis Toolkit for End-users and Developers JMulTi/JStatCom - A Data Analysis Toolkit for End-users and Developers Technology White Paper JStatCom Engineering, www.jstatcom.com by Markus Krätzig, June 4, 2007 Abstract JStatCom is a software framework

More information

How to Develop Accessible Linux Applications

How to Develop Accessible Linux Applications Sharon Snider Copyright 2002 by IBM Corporation v1.1, 2002 05 03 Revision History Revision v1.1 2002 05 03 Revised by: sds Converted to DocBook XML and updated broken links. Revision v1.0 2002 01 28 Revised

More information

MICROSOFT ACCESS 2003 TUTORIAL

MICROSOFT ACCESS 2003 TUTORIAL MICROSOFT ACCESS 2003 TUTORIAL M I C R O S O F T A C C E S S 2 0 0 3 Microsoft Access is powerful software designed for PC. It allows you to create and manage databases. A database is an organized body

More information

Android Application Development - Exam Sample

Android Application Development - Exam Sample Android Application Development - Exam Sample 1 Which of these is not recommended in the Android Developer's Guide as a method of creating an individual View? a Create by extending the android.view.view

More information

DataPA OpenAnalytics End User Training

DataPA OpenAnalytics End User Training DataPA OpenAnalytics End User Training DataPA End User Training Lesson 1 Course Overview DataPA Chapter 1 Course Overview Introduction This course covers the skills required to use DataPA OpenAnalytics

More information

JavaFX Session Agenda

JavaFX Session Agenda JavaFX Session Agenda 1 Introduction RIA, JavaFX and why JavaFX 2 JavaFX Architecture and Framework 3 Getting Started with JavaFX 4 Examples for Layout, Control, FXML etc Current day users expect web user

More information

Syllabus for CS 134 Java Programming

Syllabus for CS 134 Java Programming - Java Programming Syllabus Page 1 Syllabus for CS 134 Java Programming Computer Science Course Catalog 2000-2001: This course is an introduction to objectoriented programming using the Java language.

More information

Student Records Home Page

Student Records Home Page Student Records Home Page The homepage for Student Records is built using four sections. Therefore there will be four different processes in changing or modifying the content. The four parts are: 1. Photo

More information

Access 2007 Creating Forms Table of Contents

Access 2007 Creating Forms Table of Contents Access 2007 Creating Forms Table of Contents CREATING FORMS IN ACCESS 2007... 3 UNDERSTAND LAYOUT VIEW AND DESIGN VIEW... 3 LAYOUT VIEW... 3 DESIGN VIEW... 3 UNDERSTAND CONTROLS... 4 BOUND CONTROL... 4

More information

STRUCTURE AND FLOWS. By Hagan Rivers, Two Rivers Consulting FREE CHAPTER

STRUCTURE AND FLOWS. By Hagan Rivers, Two Rivers Consulting FREE CHAPTER UIE REPORTS FUNDAMENTALS SERIES T H E D E S I G N E R S G U I D E T O WEB APPLICATIONS PART I: STRUCTURE AND FLOWS By Hagan Rivers, Two Rivers Consulting FREE CHAPTER User Interface Engineering User Interface

More information

An Overview of Java. overview-1

An Overview of Java. overview-1 An Overview of Java overview-1 Contents What is Java Major Java features Java virtual machine Java programming language Java class libraries (API) GUI Support in Java Networking and Threads in Java overview-2

More information

DEVELOPMENT OF AN ANALYSIS AND REPORTING TOOL FOR ORACLE FORMS SOURCE CODES

DEVELOPMENT OF AN ANALYSIS AND REPORTING TOOL FOR ORACLE FORMS SOURCE CODES DEVELOPMENT OF AN ANALYSIS AND REPORTING TOOL FOR ORACLE FORMS SOURCE CODES by Çağatay YILDIRIM June, 2008 İZMİR CONTENTS Page PROJECT EXAMINATION RESULT FORM...ii ACKNOWLEDGEMENTS...iii ABSTRACT... iv

More information

Building Applications With DUIM

Building Applications With DUIM Building Applications With DUIM Release 1.0 Dylan Hackers January 28, 2016 CONTENTS 1 Copyright 3 2 Preface 5 2.1 About this manual............................................ 5 2.2 Running examples in

More information

An introduction to creating JSF applications in Rational Application Developer Version 8.0

An introduction to creating JSF applications in Rational Application Developer Version 8.0 An introduction to creating JSF applications in Rational Application Developer Version 8.0 September 2010 Copyright IBM Corporation 2010. 1 Overview Although you can use several Web technologies to create

More information

for Sage 100 ERP Business Insights Overview Document

for Sage 100 ERP Business Insights Overview Document for Sage 100 ERP Business Insights Document 2012 Sage Software, Inc. All rights reserved. Sage Software, Sage Software logos, and the Sage Software product and service names mentioned herein are registered

More information

HTML Form Widgets. Review: HTML Forms. Review: CGI Programs

HTML Form Widgets. Review: HTML Forms. Review: CGI Programs HTML Form Widgets Review: HTML Forms HTML forms are used to create web pages that accept user input Forms allow the user to communicate information back to the web server Forms allow web servers to generate

More information

Pastel Evolution BIC. Getting Started Guide

Pastel Evolution BIC. Getting Started Guide Pastel Evolution BIC Getting Started Guide Table of Contents System Requirements... 4 How it Works... 5 Getting Started Guide... 6 Standard Reports Available... 6 Accessing the Pastel Evolution (BIC) Reports...

More information

metaengine DataConnect For SharePoint 2007 Configuration Guide

metaengine DataConnect For SharePoint 2007 Configuration Guide metaengine DataConnect For SharePoint 2007 Configuration Guide metaengine DataConnect for SharePoint 2007 Configuration Guide (2.4) Page 1 Contents Introduction... 5 Installation and deployment... 6 Installation...

More information

Explore commands on the ribbon Each ribbon tab has groups, and each group has a set of related commands.

Explore commands on the ribbon Each ribbon tab has groups, and each group has a set of related commands. Quick Start Guide Microsoft Excel 2013 looks different from previous versions, so we created this guide to help you minimize the learning curve. Add commands to the Quick Access Toolbar Keep favorite commands

More information

Rapid Application Development with GNOME and Python

Rapid Application Development with GNOME and Python Rapid Application Development with GNOME and Python Christian Egli [email protected] June 13, 2001 What is RAD? Abstract RAD is a programming system that enables programmers to build working programs

More information

Getting Started Guide

Getting Started Guide Getting Started Guide Introduction... 3 What is Pastel Partner (BIC)?... 3 System Requirements... 4 Getting Started Guide... 6 Standard Reports Available... 6 Accessing the Pastel Partner (BIC) Reports...

More information

Microsoft Access Basics

Microsoft Access Basics Microsoft Access Basics 2006 ipic Development Group, LLC Authored by James D Ballotti Microsoft, Access, Excel, Word, and Office are registered trademarks of the Microsoft Corporation Version 1 - Revision

More information

An Introduction to Modern Software Development Tools Creating A Simple GUI-Based Tool Appleʼs XCode Version 3.2.6

An Introduction to Modern Software Development Tools Creating A Simple GUI-Based Tool Appleʼs XCode Version 3.2.6 1 2 3 4 An Introduction to Modern Software Development Tools Creating A Simple GUI-Based Tool Appleʼs XCode Version 3.2.6 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Charles J. Ammon / Penn State August, 2011

More information

Hypercosm. Studio. www.hypercosm.com

Hypercosm. Studio. www.hypercosm.com Hypercosm Studio www.hypercosm.com Hypercosm Studio Guide 3 Revision: November 2005 Copyright 2005 Hypercosm LLC All rights reserved. Hypercosm, OMAR, Hypercosm 3D Player, and Hypercosm Studio are trademarks

More information

HTML5. Turn this page to see Quick Guide of CTTC

HTML5. Turn this page to see Quick Guide of CTTC Programming SharePoint 2013 Development Courses ASP.NET SQL TECHNOLGY TRAINING GUIDE Visual Studio PHP Programming Android App Programming HTML5 Jquery Your Training Partner in Cutting Edge Technologies

More information

E4 development: examples, methods and tools. Eclipse Con France 2014

E4 development: examples, methods and tools. Eclipse Con France 2014 E4 development: examples, methods and tools Eclipse Con France 2014 18-19 June 2014 Table des matières I - Eclipse 4 Workshop 5 A. OPCoach... 5 B. Workshop Eclipse 4 : Building an E4 application... 6

More information

Java (12 Weeks) Introduction to Java Programming Language

Java (12 Weeks) Introduction to Java Programming Language Java (12 Weeks) Topic Lecture No. Introduction to Java Programming Language 1 An Introduction to Java o Java as a Programming Platform, The Java "White Paper" Buzzwords, Java and the Internet, A Short

More information

Computing Concepts with Java Essentials

Computing Concepts with Java Essentials 2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Computing Concepts with Java Essentials 3rd Edition Cay Horstmann

More information

Creating Online Surveys with Qualtrics Survey Tool

Creating Online Surveys with Qualtrics Survey Tool Creating Online Surveys with Qualtrics Survey Tool Copyright 2015, Faculty and Staff Training, West Chester University. A member of the Pennsylvania State System of Higher Education. No portion of this

More information

Architecture, Design and Implementation of a Mathematical Derivation Editor. Johannes Eriksson

Architecture, Design and Implementation of a Mathematical Derivation Editor. Johannes Eriksson Architecture, Design and Implementation of a Mathematical Derivation Editor Johannes Eriksson What is the Derivation Editor? The Mathematical Derivation Editor (nicknamed Mathedit ) is work in progress;

More information

Android Development. Marc Mc Loughlin

Android Development. Marc Mc Loughlin Android Development Marc Mc Loughlin Android Development Android Developer Website:h:p://developer.android.com/ Dev Guide Reference Resources Video / Blog SeCng up the SDK h:p://developer.android.com/sdk/

More information

Advantage of Jquery: T his file is downloaded from

Advantage of Jquery: T his file is downloaded from What is JQuery JQuery is lightweight, client side JavaScript library file that supports all browsers. JQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling,

More information

Firewall Builder Architecture Overview

Firewall Builder Architecture Overview Firewall Builder Architecture Overview Vadim Zaliva Vadim Kurland Abstract This document gives brief, high level overview of existing Firewall Builder architecture.

More information

Dashcode User Guide. (Retired Document)

Dashcode User Guide. (Retired Document) Dashcode User Guide (Retired Document) Contents Introduction to Dashcode User Guide 7 Who Should Read This Document? 7 Organization of This Document 7 Getting and Running Dashcode 8 Reporting Bugs 8 See

More information

Release 2.1 of SAS Add-In for Microsoft Office Bringing Microsoft PowerPoint into the Mix ABSTRACT INTRODUCTION Data Access

Release 2.1 of SAS Add-In for Microsoft Office Bringing Microsoft PowerPoint into the Mix ABSTRACT INTRODUCTION Data Access Release 2.1 of SAS Add-In for Microsoft Office Bringing Microsoft PowerPoint into the Mix Jennifer Clegg, SAS Institute Inc., Cary, NC Eric Hill, SAS Institute Inc., Cary, NC ABSTRACT Release 2.1 of SAS

More information

Java Interview Questions and Answers

Java Interview Questions and Answers 1. What is the most important feature of Java? Java is a platform independent language. 2. What do you mean by platform independence? Platform independence means that we can write and compile the java

More information

User Guide for Smart Former Gold (v. 1.0) by IToris Inc. team

User Guide for Smart Former Gold (v. 1.0) by IToris Inc. team User Guide for Smart Former Gold (v. 1.0) by IToris Inc. team Contents Offshore Web Development Company CONTENTS... 2 INTRODUCTION... 3 SMART FORMER GOLD IS PROVIDED FOR JOOMLA 1.5.X NATIVE LINE... 3 SUPPORTED

More information

Introduction to Module 1: Converting Word Docs to FrameMaker

Introduction to Module 1: Converting Word Docs to FrameMaker Introduction to Module 1: Converting Word Docs to FrameMaker Introduction to Module 1: Converting Word Docs to FrameMaker FrameMaker s tools make it easy to globally control formatting and some content.

More information

Adding Panoramas to Google Maps Using Ajax

Adding Panoramas to Google Maps Using Ajax Adding Panoramas to Google Maps Using Ajax Derek Bradley Department of Computer Science University of British Columbia Abstract This project is an implementation of an Ajax web application. AJAX is a new

More information

Introduction to WebGL

Introduction to WebGL Introduction to WebGL Alain Chesnais Chief Scientist, TrendSpottr ACM Past President [email protected] http://www.linkedin.com/in/alainchesnais http://facebook.com/alain.chesnais Housekeeping If you are

More information

WebSphere Business Monitor

WebSphere Business Monitor WebSphere Business Monitor Monitor sub-models 2010 IBM Corporation This presentation should provide an overview of the sub-models in a monitor model in WebSphere Business Monitor. WBPM_Monitor_MonitorModels_Submodels.ppt

More information

Paper 10-27 Designing Web Applications: Lessons from SAS User Interface Analysts Todd Barlow, SAS Institute Inc., Cary, NC

Paper 10-27 Designing Web Applications: Lessons from SAS User Interface Analysts Todd Barlow, SAS Institute Inc., Cary, NC Paper 10-27 Designing Web Applications: Lessons from SAS User Interface Analysts Todd Barlow, SAS Institute Inc., Cary, NC ABSTRACT Web application user interfaces combine aspects of non-web GUI design

More information

Xcode Project Management Guide. (Legacy)

Xcode Project Management Guide. (Legacy) Xcode Project Management Guide (Legacy) Contents Introduction 10 Organization of This Document 10 See Also 11 Part I: Project Organization 12 Overview of an Xcode Project 13 Components of an Xcode Project

More information

Chapter 5 Names, Bindings, Type Checking, and Scopes

Chapter 5 Names, Bindings, Type Checking, and Scopes Chapter 5 Names, Bindings, Type Checking, and Scopes Chapter 5 Topics Introduction Names Variables The Concept of Binding Type Checking Strong Typing Scope Scope and Lifetime Referencing Environments Named

More information

Getting Started Guide SAGE ACCPAC INTELLIGENCE

Getting Started Guide SAGE ACCPAC INTELLIGENCE Getting Started Guide SAGE ACCPAC INTELLIGENCE Table of Contents Introduction... 1 What is Sage Accpac Intelligence?... 1 What are the benefits of using Sage Accpac Intelligence?... 1 System Requirements...

More information

Image Management Suite. Mini Thesis. Roland Foster. Supervisors: Mr. Mehrdad Ghaziasgar and Mr. James Connan. B.Sc. Honours

Image Management Suite. Mini Thesis. Roland Foster. Supervisors: Mr. Mehrdad Ghaziasgar and Mr. James Connan. B.Sc. Honours Image Management Suite Mini Thesis Roland Foster 2916282 Supervisors: Mr. Mehrdad Ghaziasgar and Mr. James Connan B.Sc. Honours Department of Computer Science 2012 Acknowledgements I would like to thank

More information

Page Editor Recommended Practices for Developers

Page Editor Recommended Practices for Developers Page Editor Recommended Practices for Developers Rev: 7 July 2014 Sitecore CMS 7 and later Page Editor Recommended Practices for Developers A Guide to Building for the Page Editor and Improving the Editor

More information

Business Insight Report Authoring Getting Started Guide

Business Insight Report Authoring Getting Started Guide Business Insight Report Authoring Getting Started Guide Version: 6.6 Written by: Product Documentation, R&D Date: February 2011 ImageNow and CaptureNow are registered trademarks of Perceptive Software,

More information

Blackboard Help. Getting Started My Institution Tab Courses Tab Working With Modules Customizing Tab Modules Course Catalog.

Blackboard Help. Getting Started My Institution Tab Courses Tab Working With Modules Customizing Tab Modules Course Catalog. Blackboard Help Getting Started My Institution Tab Courses Tab Working With Modules Customizing Tab Modules Course Catalog 1 Getting Started The following are some things to keep in mind when using Blackboard

More information

Module 9 Ad Hoc Queries

Module 9 Ad Hoc Queries Module 9 Ad Hoc Queries Objectives Familiarize the User with basic steps necessary to create ad hoc queries using the Data Browser. Topics Ad Hoc Queries Create a Data Browser query Filter data Save a

More information

Microsoft Office System Tip Sheet

Microsoft Office System Tip Sheet The 2007 Microsoft Office System The 2007 Microsoft Office system is a complete set of desktop and server software that can help streamline the way you and your people do business. This latest release

More information

Microsoft Access 2010 Overview of Basics

Microsoft Access 2010 Overview of Basics Opening Screen Access 2010 launches with a window allowing you to: create a new database from a template; create a new template from scratch; or open an existing database. Open existing Templates Create

More information

Declarative API for Defining Visualizations in Envision

Declarative API for Defining Visualizations in Envision Declarative API for Defining Visualizations in Envision Bachelor s Thesis Report Andrea Helfenstein Supervised by Dimitar Asenov, Prof. Peter Müller May 5, 2013 Contents 1 Introduction 1 1.1 Motivation..........................................

More information

not at all a manual simply a quick how-to-do guide

not at all a manual simply a quick how-to-do guide not at all a manual simply a quick how-to-do guide As a general rule, the GUI implemented by spatialite-gis is closely related to the one implemented by the companion app spatialite-gui So, if you are

More information

To determine the fields in a table decide what you need to know about the subject. Here are a few tips:

To determine the fields in a table decide what you need to know about the subject. Here are a few tips: Access Introduction Microsoft Access is a relational database software product that you can use to organize your data. What is a "database"? A database is an integrated collection of data that shares some

More information

Introduction to ProForm Rapid elearning Studio. What is ProForm? The ProForm Course Authoring Tool allows you to quickly create

Introduction to ProForm Rapid elearning Studio. What is ProForm? The ProForm Course Authoring Tool allows you to quickly create Introduction to ProForm Rapid elearning Studio The ProForm Rapid elearning Studio includes the ProForm Course Authoring Tool, the SWiSH Rapid Animation Tool, and the RapidCam Screen Recording Tool. This

More information

SignalDraw: GUI Tool For Generating Pulse Sequences

SignalDraw: GUI Tool For Generating Pulse Sequences SignalDraw: GUI Tool For Generating Pulse Sequences Konstantin Berlin Department of Computer Science University of Maryland College Park, MD 20742 [email protected] December 9, 2005 Abstract Generating

More information

15 minutes is not much so I will try to give some crucial guidelines and basic knowledge.

15 minutes is not much so I will try to give some crucial guidelines and basic knowledge. 1 Presentation. Good morning ladies and gentlemen, dear colleagues. First of all I would like to thank the committee for this invitation and letting me speak about one of my favourite topics: the internet.

More information

Team Members: Christopher Copper Philip Eittreim Jeremiah Jekich Andrew Reisdorph. Client: Brian Krzys

Team Members: Christopher Copper Philip Eittreim Jeremiah Jekich Andrew Reisdorph. Client: Brian Krzys Team Members: Christopher Copper Philip Eittreim Jeremiah Jekich Andrew Reisdorph Client: Brian Krzys June 17, 2014 Introduction Newmont Mining is a resource extraction company with a research and development

More information

Mobility Introduction Android. Duration 16 Working days Start Date 1 st Oct 2013

Mobility Introduction Android. Duration 16 Working days Start Date 1 st Oct 2013 Mobility Introduction Android Duration 16 Working days Start Date 1 st Oct 2013 Day 1 1. Introduction to Mobility 1.1. Mobility Paradigm 1.2. Desktop to Mobile 1.3. Evolution of the Mobile 1.4. Smart phone

More information

TUTORIAL 4 Building a Navigation Bar with Fireworks

TUTORIAL 4 Building a Navigation Bar with Fireworks TUTORIAL 4 Building a Navigation Bar with Fireworks This tutorial shows you how to build a Macromedia Fireworks MX 2004 navigation bar that you can use on multiple pages of your website. A navigation bar

More information

Lesson 07: MS ACCESS - Handout. Introduction to database (30 mins)

Lesson 07: MS ACCESS - Handout. Introduction to database (30 mins) Lesson 07: MS ACCESS - Handout Handout Introduction to database (30 mins) Microsoft Access is a database application. A database is a collection of related information put together in database objects.

More information

The Clean programming language. Group 25, Jingui Li, Daren Tuzi

The Clean programming language. Group 25, Jingui Li, Daren Tuzi The Clean programming language Group 25, Jingui Li, Daren Tuzi The Clean programming language Overview The Clean programming language first appeared in 1987 and is still being further developed. It was

More information

... Introduction... 17

... Introduction... 17 ... Introduction... 17 1... Workbench Tools and Package Hierarchy... 29 1.1... Log on and Explore... 30 1.1.1... Workbench Object Browser... 30 1.1.2... Object Browser List... 31 1.1.3... Workbench Settings...

More information

How To Create A Powerpoint Intelligence Report In A Pivot Table In A Powerpoints.Com

How To Create A Powerpoint Intelligence Report In A Pivot Table In A Powerpoints.Com Sage 500 ERP Intelligence Reporting Getting Started Guide 27.11.2012 Table of Contents 1.0 Getting started 3 2.0 Managing your reports 10 3.0 Defining report properties 18 4.0 Creating a simple PivotTable

More information

AbiWord: A Cross Platform GNOME Office Component

AbiWord: A Cross Platform GNOME Office Component AbiWord: A Cross Platform GNOME Office Component Dom Lachowicz Hubert Figuière 1 Abstract AbiWord is a cross platform Word Processor, but it is also GNOME s word

More information

Programming Language Pragmatics

Programming Language Pragmatics Programming Language Pragmatics THIRD EDITION Michael L. Scott Department of Computer Science University of Rochester ^ШШШШШ AMSTERDAM BOSTON HEIDELBERG LONDON, '-*i» ЩЛ< ^ ' m H NEW YORK «OXFORD «PARIS»SAN

More information

Web Application Designer for Beginners

Web Application Designer for Beginners Applies To: Web Application Designer, SAP BW Version: 3.5, SAP GUI version 6.40/Patch Level 13 BW 3.5 front end patch 7 (bw350_7-10001615) Summary The document will run the readers through a step by step

More information

Developer Tutorial Version 1. 0 February 2015

Developer Tutorial Version 1. 0 February 2015 Developer Tutorial Version 1. 0 Contents Introduction... 3 What is the Mapzania SDK?... 3 Features of Mapzania SDK... 4 Mapzania Applications... 5 Architecture... 6 Front-end application components...

More information

Building A Very Simple Web Site

Building A Very Simple Web Site Sitecore CMS 6.2 Building A Very Simple Web Site Rev 100601 Sitecore CMS 6. 2 Building A Very Simple Web Site A Self-Study Guide for Developers Table of Contents Chapter 1 Introduction... 3 Chapter 2 Building

More information

14.1. bs^ir^qfkd=obcib`qflk= Ñçê=emI=rkfuI=~åÇ=léÉåsjp=eçëíë

14.1. bs^ir^qfkd=obcib`qflk= Ñçê=emI=rkfuI=~åÇ=léÉåsjp=eçëíë 14.1 bs^ir^qfkd=obcib`qflk= Ñçê=emI=rkfuI=~åÇ=léÉåsjp=eçëíë bî~äì~íáåö=oéñäéåíáçå=ñçê=emi=rkfui=~åç=lééåsjp=eçëíë This guide walks you quickly through key Reflection features. It covers: Getting Connected

More information

Creating Database Tables in Microsoft SQL Server

Creating Database Tables in Microsoft SQL Server Creating Database Tables in Microsoft SQL Server Microsoft SQL Server is a relational database server that stores and retrieves data for multi-user network-based applications. SQL Server databases are

More information

8 CREATING FORM WITH FORM WIZARD AND FORM DESIGNER

8 CREATING FORM WITH FORM WIZARD AND FORM DESIGNER 8 CREATING FORM WITH FORM WIZARD AND FORM DESIGNER 8.1 INTRODUCTION Forms are very powerful tool embedded in almost all the Database Management System. It provides the basic means for inputting data for

More information

Java 7 Recipes. Freddy Guime. vk» (,\['«** g!p#« Carl Dea. Josh Juneau. John O'Conner

Java 7 Recipes. Freddy Guime. vk» (,\['«** g!p#« Carl Dea. Josh Juneau. John O'Conner 1 vk» Java 7 Recipes (,\['«** - < g!p#«josh Juneau Carl Dea Freddy Guime John O'Conner Contents J Contents at a Glance About the Authors About the Technical Reviewers Acknowledgments Introduction iv xvi

More information

J j enterpririse. Oracle Application Express 3. Develop Native Oracle database-centric web applications quickly and easily with Oracle APEX

J j enterpririse. Oracle Application Express 3. Develop Native Oracle database-centric web applications quickly and easily with Oracle APEX Oracle Application Express 3 The Essentials and More Develop Native Oracle database-centric web applications quickly and easily with Oracle APEX Arie Geller Matthew Lyon J j enterpririse PUBLISHING BIRMINGHAM

More information

Eclipse 4 RCP application Development COURSE OUTLINE

Eclipse 4 RCP application Development COURSE OUTLINE Description The Eclipse 4 RCP application development course will help you understand how to implement your own application based on the Eclipse 4 platform. The Eclipse 4 release significantly changes

More information

Programming in Access VBA

Programming in Access VBA PART I Programming in Access VBA In this part, you will learn all about how Visual Basic for Applications (VBA) works for Access 2010. A number of new VBA features have been incorporated into the 2010

More information

Handout 1. Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner.

Handout 1. Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner. Handout 1 CS603 Object-Oriented Programming Fall 15 Page 1 of 11 Handout 1 Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner. Java

More information

The Microsoft Access 2007 Screen

The Microsoft Access 2007 Screen 1 of 1 Office Button The Microsoft Access 2007 Screen Title Bar Help Ribbon Quick Access Toolbar Database Components Active Component NOTE: THIS HELP DOCUMENT EXPLAINS THE LAYOUT OF ACCESS. FOR MORE INFORMATION

More information

Microsoft Migrating to Access 2010 from Access 2003

Microsoft Migrating to Access 2010 from Access 2003 In This Guide Microsoft Access 2010 looks very different, so we created this guide to help you minimize the learning curve. Read on to learn key parts of the new interface, discover free Access 2010 training,

More information