Help for the program MinDia

The program MinDia can be used to perform multimedia slide presentations on the computer. It is possible to dissolve images, display texts in the images and play music while the slide presentation/show is running.

The program can also control programable slide-projectors, this makes it possible to perform computer controled slide presentations. At this moment some Rollei slide projectors are supported:.Rolleivision 35 twin digital P and Rolleivision twin MSC 3x0 P.

These slide projectors can be controled by a computer via a serial interface (RS 232). So it is possible to run an full automated slide show. The computer sets the dissolve- and show-time for every slide and performs also the slide change. In addition the slide presentation can be accompanied with music. Thereby the computer plays one or more audio files (at the moment WAV- and MP3-files are supported).

The program supports the user by the creation of a slide show, by allowing a comfortable arrangement of the slides and giving him an easy way to synchronize the change of slides with the music, i. e. to perform a slide change fitting to a rythmchange in the music. A slide show can be simulated in real time while editing the presentation, there need no slide projector be connected to the computer.

Because of the feature of the simulation of a slide show, the program can be used to show the slide presentation on a connected computer monitor or TV screen. Thereby it is possible to use the program for the presentation of  figures in a talk.

To the slideshow.


Program features

The important features of the program are:

Slide show

A slide show consists of the following elements:

For the arrangement of the slides the Pult-view is used and for the synchronization of the slide change with the music the timeline-view is used.


Structure of the main window

The main window of the program MinDia contains many different areas: the menubar, the toolbar, a statusbar (at the bottom of the window) and the workingarea. The workingarea contains two different subareas: the slide-pult-view and the timeline-view.

Menubar

All functions of the programm can be accessed via the menubar. Nearly all menu items have a accelerator-key, because of a fast and comfortable usage of the programm (Example: Ctrl+O to open a presentation file).

The  mainmenu contains the following entries:


Toolbar

The toolbar contains some icons for frequently used functions.

Statusbar

In the statusbar informations about the actual staus of the programm will be shown. There are three areas:

Workingarea

Slide-Desk-View:

In this area the slides can be inserted and aranged.
A new slide will allways be inserted at the end of the actual presenation.
The modification of the slide sequence can be done with the clipboard: first the slide has to be selected (click on the slide with the mouse pointer), than the slide can be cut into the clipboard, after that the slide should be selected where the slide in the clipboard should be inserted, finally paste the slide in the clipoard into the presenation.
It is possible to select more than one slide at a time, this can be achieved by pressing the 'Shift' button while selecting the slides.
It is also possible to drop down image files on this area (Drag&Drop). Drag&Drop works also for slides inside the slide-desk-view.

Timeline-View:

In this area the dissolve- and showtimes of the slides will be shown.
Additional the dissolvetime and showtime of the slides can be changed with a mouse-move:
As soon as the mouse pointer is over an end of a slide, the shape of the mouse pointer changes. By pressing the left mouse button and simultaneously moving the mouse pointer horizontally the showtime of the slide can be changed.
The same can be done with the dissolvetime, by moving the mouse pointer over the end of the dissolve ramp.
Additional the music files (at the moment WAV and MP3 are supported) can be added by dropping them on this area (Drag&Drop), the new music file will be inserted as the last track.
Texts can also be added by dropping them in the area of the dynamic graphic operations (Drag&Drop), the text will be insterted as a dynamical text. This dynamical text can be modified in a dialog by clicking with the left mouse button on the text and simultaneously pressing the shift button or by using the context menu.


Mainmenu

File

New

Create a new presentation, all data of the actual presentation wil be deleted.

Open...

Read a presentation from a file.

Open for edit...

Read a presentation from a file, but don't execute the script event "Presentation_loaded".

Save

Save the actual presentation into a file.

Save as...

Save the actual presentation into a file with another name.

Make relative paths Replaces all absoulte paths (i.e. c:\document\images\image.jpg) with relative paths (i.e. ..\images\image.jpg). Presentations with relative paths can be moved easyly to other positions.

Import XML...

Import a presentation from a XML file. 

Export XMK...

Export the actuall presentation as a XML file.

Import dyn. graphics...

Import an external generated file with dynamical graphic operations/objects.

Export dyn. graphics...

Export the actuall dynamical graphic operations/objects in a file, this file can be modified with external programs and re-imported into the MinDia program.

Export...

NOT IMPLEMENTED YET, use a script for that operation.

Print...

NOT IMPLEMENTED YET.

Last files

Fast selection of the last opend files.

Exit

Program exit. If there are some modified presentation data a messagebox will be shown to confirm the operation.

Edit

Un

NOT IMPLEMENTED YET.

Redo

NOT IMPLEMENTED YET.

Cut

Copy the selected slides into the clipboard and remove the slides from the presentation.

Copy

Copy the selected slides into the clipboard.

Paste

Inserts the slides in the clipboard at the actual selected position into the presentation.

Select all

Select all slides of the presentation.

Find...

Search for a text in the dia information data (Id, comment or image file name).

Find next

Search for the next occurence of the search text.

Append dia

Append a new slide at the end of the actual presentation.

Add dia

Add a new slide at the acutal position.

Delete

Delete the selected slides.

Play

Start from selected

Start the actual presentation with the selected slide. Before the presentations starts to play, the slide magazin will be transported to the selected position.

Start at selected

Start the actual presentation with the selected slide. There will be no transport of the slide magazin, this means you should position the slide magazin manually.

Start

Starts the presentation.

Pause

Pause the running presentation.

Stop

Stops the running presentation.

Add sound comment

Sets a sound comment mark at the actual play position. Only available while the presentation is playing.

Add graphic operation

Sets a graphic operation at the actual play position. Only available while the presenation is playing.

Dissolve time...

Changes the dissolvetime for testing.

Fade in test

Runs in the Play-Info-Dialog a dissolve test with the two selected slides. The dissolvetime is the actual test dissolvetime.

Fade out test

Like the "Fade in test", but the other way arround.

Extras

Configuration...

Shows a modal dialog to change the settings of the programm: COM port settings, Simulation- and Scriptmodus).

Player Configuration...

Settings for the mp3-player (only under Linux).

Logging...

Shows a dialog to trace the logging output, the logging output can be switched of in the Configuration Dialog.

Projector control...

Shows a dialog to manually control the projector.

Presentation data...

Shows a modal dialog to enter a comment for the acutal presentation.

Presentation events...

Shows a modal dialog to enter scripts for script events.

Sound data...

Shows a modal dialog to enter information about music tracks and play positions. Here the sound files (WAV or MP3) and the play positions (start and stop) can be given.
WARNING: this dialog is not very userfriendly! --> use Drag&Drop!

Sound comments...

Shows a modal dialog to enter sound comments.
WARNING: this dialog is not very userfriendly!

Plot comments...

Shows a modal dialog to enter comments for areas in the slide show (i.e. intro, chapter one, file, etc.). This comments can be usefull for the creation of presentation scripts.
WARNING: this dialog is not very userfriendly!

Modify item...

Shows a dialog to modify data of the selected slide. In this Dialog the showtime, dissolvetime and comments of a slide can be changed.

Play infos...

Show a dialog in which the image of actual slide will be shown. This is the 'virtual movie screen'. This dialog is very usefull for the simulation modus of a presenation.

Plugins (optional)

Modify Python scripts...

Opens a dialog in which scripts can be opend, changed, saved and executed.

Run Python scripts

Fast execute of scripts which are in the "scripts" directory.

Help

Help

Show the help for this program.

About...

Show informations about the program.


Dialogs

Configuration-Dialog (configuration of the serial port RS232), modal

Logging-Dialog

Projector Control-Dialog

Presentationdata-Dialog, modal

Presentationevents-Dialog, modal

Music-Data-Dialog, modal

Music-Comment-Dialog, modal

Dia-Comment-Dialog, modal

Dynamical Graphic Operations-Dialog, modal

Dialog to change properties of the dynamic texts (color, font, fontsize).
This dialog can be opend with the context menu in the timeline view or by clicking on a dynamical text with the left mouse button and simultaneously pressing the Shift button.

Modify-Dia-Dialog

Play-Informations-Dialog

This dialog has the function of a virtual screen. In this dialog the actual or selected image (if available) will be shown and the fade-in or fade-out effect can be tested (Menuitem: "Play/Fade in/out").
With the context menu of the image view (the context menu can be activated by pressing the right mouse button) the dialog can be switched to a full screen modus. In this modus the dialog fills the whole screen, this is usefull for presentations of slide shows with digital projectors. Further functions accessed by the context menu are pausing and continuing of the running dissolving effect and saving the actual image into a file.
At the bottom of the dialog the scale modus for images can be changed. The following modi are available:

There are some keyboard inputs possible (if the dialog owns the input focus, that means is activated) which are shortcuts for context menu items:

Search-Dialog, modal

About-Dialog, modal

In this dialog some informations about the application will be shown. There are different categories:
Hier wird Information über die Anwendung angezeigt. Es gibt mehrere Kategorien:

Help-Dialog, sometimes modal

In this dialog the online help (this file !) of the application will be shown. It is possible to navigate in the help using the navigation buttons at the bottom of the dialog.

Modify-Scripts-Dialog

With this dialog it is possible to enter, change, import, export and test scripts. The available script commands are documented in the section script-functions. The output area in the lower area of the dialog is used to show the output of scripts. Output can be gererated with the function mindiapy.PrintLn( string ).


Copyright

MinDia (c) by Michael Neuroth, 2001-2004.

The program MinDia is written by Michael Neuroth and released under the GPL.

For some parts of the program other source code and libraries from other sources are used, for more information have a look in the section contributions.

ATTENTION:
Use this program at your own risk. The author does not take any guaranty for this program.

WARNING:
The program can be used to control the slide projectors of the type Rolleivision 35 twin digital P andRolleivision twin MSC 3x0 P via the serial com port (RS232). Use this functionality at your own risk. By using this functioniality in a wrong way it is possible to damage your projector. The author does not take any guaranty for a correct working projector control.


Feedback

The homepage of MinDia is available under this link mindia.sourceforge.net zu. The author can be reached under this e-mail address mindia@users.sourceforge.net. The project page on sourceforge holds other usefull information about the project. There is a user forum and a bug tracker available at sourceforge.

It is allways nice for authors of open projects to have some feedback about the program. Any kind of feedback is welcome: user reports, bugs, bugfixes, feature-requests,  nice post cards, ...


Further informations


Technical documentation


Requirements and plattforms

MinDia uses the Qt-Framework. It requires at least Qt 2.3.0. The program works also with Qt 3.x.y.
To use the (optional) script feature, the script language Python has to be installed.

Currently MinDia runs on the following plattforms:


Commandline parameters

The following commandline parameters are available:


INI file

In the ini file (.mindia.ini) some configuration parameters can be set, these values overwrite the default values. The values can also be changed with the configuration dialog. The format of the ini file entries allways like this:

    Key-Text=Value-Text

ATTENTION: between the assign character (=) and the key-text and the value-text is no space character allowed, otherwise the key will not be recognized.

The ini file can be found under Linux in the user-home directory (~/.mindia.ini) and under Windows in the directory, which is given in the registry entry "HKEY_CURRENT_USER.Software.mindia.inifile". If you use the setup program this will be something like c:\programs\mindia.

These ini file key's are valid:

Key
Values
com.port_no 1,2,3,4
com.baudrate 110, 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200
com.parity_mode none, even, odd
com.stopbits 1, 1.5, 2
com.databits 6,7,8
com.flow 0 (none), 1 (XON/XOFF), 2 (Hardware)
com.logging 0, 1
script_events.enabled 0, 1
config.logging
0, 1
config.projector_id
1=Digital Twin P; 2=MSC 3x0 P
config.scriptEvents
0, 1
config.simulation
0, 1
datafile.? filename


Scripts

By using scripts the functionality of the program can be extended. With scripts the import and export of the presentation data can be archieved. Check functions can be realized (i.e. to check if the show times for the slides fulfill the technical spezifications of the slide projector, see verifyshow.py) and scale operations can be executed (see _settime.py).

Beside the usage as macros, scripts could also be used for events, for that topic see the section script events.

Additional it is possible to assign to every slide a script, this script will be executed at two times in the play modus of the presentaion. The first execution is performed at the begin of the dissolve phase (variable bDissolve has the value 1) and the second execution is performed when the dissolve phase is finished (variable bDissolve has the value 0). This can be used to show texts..

It is possible to use other script languages via the plugin interface. The functionality of the program is supported via functions and methods. The script support is realized with SWIG.

At this moment MinDia only supports the script language Python.

The following functions are available in the module mindiapy:
 

  # Output of a string in a output window
  mindiapy.PrintLn( "outputtext" )
  # Show a modal messagebox
  # return values are: -1 == Undefined, 0 == Ok, 1 == Cancel
  iRet = mindiapy.DoMessageBox( "Message text", "Title-Text" )
  # Access of the presentation object
  aDiaPresentation = mindiapy.GetDiaPresentation()
  # suspend the actual thread for some ms
  mindiapy.SleepMS( 100 )
  # convert a RGB color value in a HSV color value
  aHSV = mindiapy.RgbToHsv( aRGB )
  # convert a HSV color value in a RGB color value
  aRGB = mindiapy.HsvToRgb( aHSV )


The Object-Model consists of these classes:

The (schematical) definitions of the classes have the form:

##############################################################
class IDiaPresentation:
    bool   IsChanged():
    string GetDocName():
    string GetDescription():
    int    GetDiaCount():
    IDia   GetDia( int iIndex ):
    IDia   AddNewDia():
    int    GetSoundFileCount():
    string GetSoundFileNameAt( int iIndex ):
    bool   SetSoundFileNameAt( int iIndex, string sFileName ):

    IDiaOutputWindow GetOutputWindow():
    bool   LoadPresentation( string sFileName ):
    bool   SavePresentation():
    bool   SavePresentationAs( string sFileName ):
    bool   GotoPosition( int iPosition ):
    bool   PlayFrom( int iFromDiaNo ):
    bool   Play():
    bool   Stop():
    bool   Pause():
    bool   Continue():
    bool   IsPlayModus():
    bool   IsPauseModus():
    bool   IsEditModus():
    string GetPlayModusStrg():

    bool   IsSimulation():
    void   SetSimulation( bool bSimulation ):
##############################################################
class IDia

   double GetTotalTime():

    double GetShowTime():
    bool   SetShowTime( double dVal ):
    double GetDissolveTime():
    bool   SetDissolveTime( double dVal ):
    string GetId() const:
    bool   SetId( string sId ):
    string GetComment():
    bool   SetComment( string sComment ):
    string GetImageFile():
    bool   SetImageFile( string sFileName ):
    string GetScript():
    bool   SetScript( string sScript ):
    bool   GetHorizontalFormat():
    bool   SetHorizontalFormat( bool bHorizontal ):
##############################################################
class IDiaOutputWindow
    bool   IsValid():

    bool   Show():
    bool   Hide():
    bool   Maximize():
    bool   Restore():
    int    GetWidth():
    int    GetHeight():
    bool   SetSize( int iWidth, iHeight ):
    bool   SetPos( int x, int y ):
    int    GetDrawWidth():
    int    GetDrawHeight():

    bool   Clear():
    bool   SetColor( int iRed, int iGreen, int iBlue ):
    bool   SetFont( string sFontName ):
    bool   SetFontSize( int iSizeInPixel, bool bBold, bool bItalic ):
    int    SetTextXY( int x, int y, string sText ):
    int    GetTextCount():
    bool   MoveText( int iTextID, int x, int y ):
    int    GetTextX( int iTextID ):
    int    GetTextY( int iTextID ):
    int    GetTextWidth( int iTextID ):
    int    GetTextHeight( int iTextID ):
    bool   SetTextColor( int iTextID, int iRed, int iGreen, int iBlue ):
    bool   DeleteText( int iTextID ):
##############################################################
class IColor
    int    iRed
    int    iGreen
    int    iBlue
##############################################################
class IHsv
    int    iHue
    int    iSaturation
    int    iValue


Remark:

To create a new slide object only the method AddNewDia in the IDiaPresentation object should be used. Never use the Python new operator!

Example for a script:

# script example for a slide-script
# the variable bDissolve will be set
# from the MinDia-Application

import mindiapy

aPres = mindiapy.GetDiaPresentation()
aWin = aPres.GetOutputWindow()

def Dissolve():
    aWin.SetFontSize( 30 )
    aWin.SetTextXY( 10, 10, "Fade In" )

def Show():
    aWin.Clear()
    aWin.SetFontSize( 30 )
    aWin.SetTextXY( 30, 50, "Show" )

if bDissolve==1:
    Dissolve()
else:
    Show()


Script events

In a presenation is it possible to define different script events. These script events will be executed, if the event occures. The following events are available:

Ereignis

Bemerkung

Presentation_Started

The presentation should be started. This event will be created immediately before the start of the presentation, this means that the presentation is not started.

Presentation_Stoped

The presentation was stoped. This event will be created immediately after the stop of the presentation, this means that the presentation has stoped allready.

Presentation_Paused

The presentation was paused.

Presentation_Saved

The presentation was saved. This event will be created immediately after the presentation was saved.

Presentation_Loaded

A new presenation was loaded. This event will be created immediately after the presentation was read, this means the data of the presentation is allready loaded.


Plugin interface

TODO !


Contributions to this project

The graphical user interface of the program MinDia was implemented with the Qt-Framework of Trolltech.

The project uses parts (files or functions) from the following projects or they are usefull to create a slide show:


Python

Further information about the well known programming language are available under http://www.python.org/ and http://www.pythonlabs.com/.


SWIG

A program package to create dynamic loadable modules for script languages out of C/C++ functions. SWIG supports a lot of different scripting languages, like Python, Perl and Tcl.

For further informations about SWIG see http://www.swig.org/.