\documentclass[british,ps,darkblue,slideColor,colorBG,final]{prosper}

 %-- Packages ----------------------------------------------------------------

 \usepackage[latin1]{inputenc}
 \usepackage[english]{babel}
 \usepackage[T1]{fontenc}
 \usepackage{url}

 \usepackage{amsmath}
 \usepackage{amssymb}
 \usepackage{epsfig}
 \usepackage{makeidx}

 %----------------------------------------------------------------------------

\begin{document}
  \begin{slide}
    {\small LinuxDay/Cagliari 2004: GUI building with GLADE}
    
    \begin{center}
      {\Large Building graphical user interfaces with GLADE and Gtk+/GtkAda}
    \end{center}

    \vspace{6mm}

    \begin{center}
      Jacob Sparre Andersen <sparre@crs4.it>
    \end{center}

    \vspace{6mm}

    Please interrupt me {\em when} I'm speaking too fast or otherwise am
    difficult to understand.

    Questions are welcome at {\em any time} during the talk.
  \end{slide}

  \begin{slide}
    {\small LinuxDay/Cagliari 2004: GUI building with GLADE}

    Gtk+/GtkAda is a portable graphical user interface library.
    Applications written with Gtk+/GtkAda are - if you don't try
    hard to make it different - portable between MacOS X, most
    Unixes and MS Windows.

    \vspace{2mm}

    GLADE is a tool for creating graphical user interfaces using
    Gtk+/GtkAda.

    \vspace{2mm}

    The talk will be a live presentation of how one can create a
    simple application with a graphical user interface.

  \end{slide}

  \begin{slide}
    {\small LinuxDay/Cagliari 2004: GUI building with GLADE}

    \begin{center}
      {\Large The task}
    \end{center}

    \vspace{0mm}

    Make a graphical user interface for proof-reading a spell checking
    dictionary.  Given a string (hopefully a word) we want to ask the user
    \begin{itemize}
      \item if it is a correctly spelled word
      \item which class it belongs to (but only if it is correct)
      \item what its correct spelling is (but only if it is wrong)
    \end{itemize}
  \end{slide}

  \begin{slide}
    {\small LinuxDay/Cagliari 2004: GUI building with GLADE}

    \begin{center}
      {\Large The tools}
    \end{center}

    \vspace{10mm}

    \begin{itemize}
      \item GLADE - the GUI builder
      \item GtkAda - the GUI library
      \item GNAT - the compiler
      \item Emacs - just a nice editor
    \end{itemize}
  \end{slide}

  \begin{slide}
    {\small LinuxDay/Cagliari 2004: GUI building with GLADE}

    \begin{center}
      {\Large Some traps}
    \end{center}

    \vspace{10mm}

    Not all distributions come with working versions of GLADE and
    GNAT.  Debian works straight out of the box, while Red Hat requires
    use of some packages downloaded from a non-standard location.
    GLADE doesn't seem to work properly on Mac OS X.
  \end{slide}

  \begin{slide}
    {\small LinuxDay/Cagliari 2004: GUI building with GLADE}

    \begin{center}
      {\Large First steps}
    \end{center}

    \vspace{1mm}

    \begin{itemize}
      \item Starting the GUI builder
      \item Setting up a project
      \item Creating a window
      \item Adding layout tables,
            a {\em notebook} and some {\em buttons} to the window
      \item Building the project source
      \item Compiling the program
    \end{itemize}
  \end{slide}

  \begin{slide}
    {\small LinuxDay/Cagliari 2004: GUI building with GLADE}

    \begin{center}
      {\Large Adding a handler to a button}
    \end{center}

    \vspace{1mm}

    \begin{itemize}
      \item Attaching signal handlers
      \item Updating the generated project source
      \item Editing the generated handler:
            {\small\verb|Gdk.Main.Gdk_Exit (Error_Code => 0);|}
            quits the program
    \end{itemize}
  \end{slide}

  \begin{slide}
    {\small LinuxDay/Cagliari 2004: GUI building with GLADE}

    \begin{center}
      {\Large Changing text in the GUI}
    \end{center}

    \vspace{3mm}

    \begin{itemize}
      \item Adding a {\em label} and a {\em textbox} to the window
      \item Updating the generated project source\footnote{
              Notice that this doesn't destroy the handler we wrote before. }
      \item Editing the initialization routine to use the 1st command line
            argument to set the window title:
            {\small\verb|Ada.Command_Line.Argument (1)|}
    \end{itemize}
    \vspace{11mm}
  \end{slide}

  \begin{slide}
    {\small LinuxDay/Cagliari 2004: GUI building with GLADE}

    \begin{center}
      {\Large Radio buttons}
    \end{center}

    \vspace{3mm}

    \begin{itemize}
      \item Extending an existing layout table
      \item Adding a group of radio buttons
      \item Adding a field to a window type
      \item Accessing a window object from a handler for one of its child
            widgets
      \item Writing the result to standard output
    \end{itemize}
  \end{slide}

  \begin{slide}
    {\small LinuxDay/Cagliari 2004: GUI building with GLADE}

    \begin{center}
      {\Large Extending the {\em notebook}}
    \end{center}

    \vspace{3mm}

    \begin{itemize}
      \item Extend the {\em notebook} with an additional page
      \item Adding an editable text box
      \item Include data from the editable text box in the output
    \end{itemize}
  \end{slide}

  \begin{slide}
    {\small LinuxDay/Cagliari 2004: GUI building with GLADE}

    \begin{center}
      {\Large Extending the {\em notebook} (2)}
    \end{center}

    \vspace{3mm}

    \begin{itemize}
      \item Using the "Forward" {\em button} to switch pages
      \item Showing and hiding pages
      \item Changing the initialization routine
    \end{itemize}
  \end{slide}

  \begin{slide}
    {\small LinuxDay/Cagliari 2004: GUI building with GLADE}

    \begin{center}
      {\Large Extending the {\em notebook} (3)}
    \end{center}

    \vspace{3mm}

    \begin{itemize}
      \item One more page
      \item Showing and hiding it as appropriate
      \item Call "Done" when "Forward" doesn't change the page
    \end{itemize}
  \end{slide}

  \begin{slide}
    {\small LinuxDay/Cagliari 2004: GUI building with GLADE}

    \begin{center}
      {\Large ...}
    \end{center}

    \vspace{3mm}

  \end{slide}

  \begin{slide}
    {\small LinuxDay/Cagliari 2004: GUI building with GLADE}

    \begin{center}
      {\Large Links}
    \end{center}

    \vspace{3mm}

    \begin{itemize}
      \item Starting point for GUI building with GLADE and Gtk+/GtkAda:
            {\small\url{http://libre.act-europe.fr/GtkAda/}}
      \item Starting point for programming in Ada:
            {\small\url{http://www.adapower.com/?Command=Started}}
      \item Newsgroup:
            {\small\url{comp.lang.ada}}
    \end{itemize}
  \end{slide}
\end{document}

