HOME | USAGE | DEVELOPMENT | AUTHORS | LICENSE
concept | prepare | state |  |  |
structure | show | future |  |  |
sources |  | chances |  |  |

# IndeView - Development
LET'S GO ON

TOP

## current state

You may use IndeView to display simple presentations:
User controlled, linear or looping runs of slides,
without special transition effects nor sound playback.

While this should be enough for many purposes
IndeView development is going on of course:

TOP

## extentions being worked on or planned

### Viewer

roughly in the following order will be implemented:

- Auto Mode - self-running presentations.
- Transitions - optical changing from one slide to the next one.
- Notes - temporarily displaying page specific speaker notes at a screen position specified by you, with customizable colour / contrast / font size to prevent your audience from also reading these texts.
- Sounds - playback of transition, intro and/or viewing sounds.
- PopUp Windows - areas to be shown/hidden by mouse or keyboard, similar to the help screen shown by the [F1] key.
- Alternative Paths - different runs through a presentation may be used to specify an "overview run" showing only a part of the slides.
  These paths will be displayed in the page list shown by the [L] key.
- Slide Groups - extended means of navigation: hit a key to directly jump to the first / last slide of the current group or jump to the slide that is preceeding / following to the group.
- Back Pointers - jumping to another page than the immediately preceeding one if the [back] key (or right mouse button, resp.) is pressed: you might want to use this to backwards to skip some slides that have acted as a sequence forming the current slide by adding its components one by one from page to page.
  Note however:
  If a back pointer is specified the user by no means can go to the immediately preceeding slide but has to follow this back pointer, so you should carefully check if defining a slide group might be a better solution than using a back pointer.
- Active Areas - parts of an image that can be selected by keyboard / mouse and be activated by clicking onto them (or using the [Enter] key, resp.) to start an action:
  - jump to another page / into another path
  - open a PopUp window
  - play a sound
- Helpers - small hints shown when mouse passes over an active area.

### Editor

As a new IndeView modul a special Editor is being planned right now.

Presentation editing will include covenient means to change links, specify slide groups / paths / active areas...

### Creator

Being able to also convert PowerPoint presentations into the IndeView format would be very nice.

Unfortunately we do not own a Microsoft Office, so this creator module hinges upon the skills of an IndeView power users: in case you are interested in developing this module please contact us before starting: send your mail to developers@indeview.org, so we can prevent you from working on the same issues that might have been digged into by another committed IndeView user already.

IndeView is "Free Software" so we won't give you money but do you credit:

See our autors page with its as of yet empty slot for this module, we would be happy to fill it with your name there and (if you like it) your mail address.

TOP

## chances for you

### Contribute to IndeView

You are a skilled C++ and Qt programmer interested in participating at IndeView development?

Knowing a lot about PowerPoint and Visual Basic for Applications you would like to develop a respective IndeView Creator module?

Please do not hesitate, we are looking forward to your mail!

As you may see looking at our plans IndeView's further way will be long and quite interesting so we would welcome your participation very much - perhaps you want to try developing one of the planned features or you got another idea you would like to realize?

In any case we kindly ask you to observe these rules:

- Before starting any work please make sure to inform us by mail so we can make sure nobody else is working on the same issue already, please write to: developers@indeview.org.
- Of course it must be you who is the author of all of your contributions and no patents nor other reserved rights must be violated.
- The IndeView distribution will integrate contributions covered by the here cited GNU-LGPL only.

TOP

### embedd the IndeView `core` into your programs

IndeView is ready to be used by other (Qt-)programs:

The viewer application (running in full screen mode) uses an extra `core` module:

Qt library: | `QObject` |
| ¦ |
IndeView core: | `IndeViewSlides` | reads control file and page information files, organizes the structure of the presentation, provides the pixmaps to display the slides
Qt library: | `QWidget` |
| ¦ |
IndeView core: | `IndeViewWidget` | can show a presentation in a window, does not have a user interface
| ¦ |
IndeView app: | `IndeViewMain` | runs in full screen mode, provides: keyboard / mouse interface, slide access list, help screen
IndeView app: | `int main()` | instantiates an `IndeViewSlides` object and starts `IndeViewMain` if IndeViewSlides has successfully read and the parsed the presentation structure

Please note:
The `IndeViewMain` class has been developed for the special needs of the viewer application, please do not use it in your own programs but use `IndeViewSlides` and `IndeViewWidget` instead.

Importiert all contents of directory `core` into your project and create an `IndeViewWidget` like this:

    #include "core/indeview_widget.h"

    IndeViewWidget* getIVW( const QString& runFile,
                            QWidget *parent )
    {
      IndeViewSlides* slides =
        new IndeViewSlides( runFile );
      if( slides->structureOK() )
        return new IndeViewWidget( slides,
                                   true,
                                   parent,
                                   "my_IVW" );
      delete slides;
      return 0;
    }

In case `getIVW()` returns a Null pointer you might want to show an error box, otherwise you add IndeViewWidget to your layout. No need to worry about `slides`: the parameter `true` shown above tells `IndeViewWidget` to delete `slides` when the widget is about to be closed.

To assign another presentation to your `IndeViewWidget` without creating a new widget you might act like this:

    bool changePresentation( IndeViewWidget& widget,
                             const QString& runFile )
    {
      IndeViewSlides* theNewSlides =
        new IndeViewSlides( runFile );
      const bool bOK = theNewSlides->structureOK();
      if( bOK )
        widget.setSlides( theNewSlides, true );
      else
        delete theNewSlides;
      return bOK;
    }

Controll the `IndeViewWidget` by connecting "Signals" of your application with the `public slot` methods documented in `indeview_widget.h`, e.g.: `gotoNextSlide()` and `changeZoom()`. Obtain state information by calling `const` functions like `bool optionDontStretch()` and `int movedByX()`.

The following `IndeViewWidget` methods might be usefull for adding slide selection capabilities to your program:

- `slideNames()` returns a `QStringList` with all slide titles ordered according to their appearance in the presentation..
- `curSlideIdx()` returns the number of the current slide: you might use this to highlight this page in your selection list.
- `gotoSlide()` jumps to the slide with the number specified.

Have fun and succeed - and tell us about your results - we would like to learn how you are making use of IndeView.

TOP

If you like IndeView
please consider sending a little picture postcard
of your town / your village to
Your feedback will be very much appreciated:
we will be glad about receiving a visual representation
of where on earth our IndeView users are living.