ProcessInterface.hh 6.44 KB
Newer Older
1 2 3
/*===========================================================================*\
 *                                                                           *
 *                              OpenFlipper                                  *
Jan Möbius's avatar
Jan Möbius committed
4
 *      Copyright (C) 2001-2010 by Computer Graphics Group, RWTH Aachen      *
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
 *                           www.openflipper.org                             *
 *                                                                           *
 *---------------------------------------------------------------------------*
 *  This file is part of OpenFlipper.                                        *
 *                                                                           *
 *  OpenFlipper is free software: you can redistribute it and/or modify      *
 *  it under the terms of the GNU Lesser General Public License as           *
 *  published by the Free Software Foundation, either version 3 of           *
 *  the License, or (at your option) any later version with the              *
 *  following exceptions:                                                    *
 *                                                                           *
 *  If other files instantiate templates or use macros                       *
 *  or inline functions from this file, or you compile this file and         *
 *  link it with other files to produce an executable, this file does        *
 *  not by itself cause the resulting executable to be covered by the        *
 *  GNU Lesser General Public License. This exception does not however       *
 *  invalidate any other reasons why the executable file might be            *
 *  covered by the GNU Lesser General Public License.                        *
 *                                                                           *
 *  OpenFlipper is distributed in the hope that it will be useful,           *
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of           *
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            *
 *  GNU Lesser General Public License for more details.                      *
 *                                                                           *
 *  You should have received a copy of the GNU LesserGeneral Public          *
 *  License along with OpenFlipper. If not,                                  *
 *  see <http://www.gnu.org/licenses/>.                                      *
 *                                                                           *
\*===========================================================================*/

/*===========================================================================*\
 *                                                                           *
37 38 39
 *   $Revision$                                                         *
 *   $Author$                                                      *
 *   $Date$                   *
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
 *                                                                           *
\*===========================================================================*/

//
// C++ Interface: ProcessInterface
//
// Description:
//
//
// Author: Jan Moebius <jan_moebius@web.de>, (C) 2007
//

#ifndef PROCESSINTERFACE_HH
#define PROCESSINTERFACE_HH

#include <QtGui>
56
#include <OpenFlipper/threads/OpenFlipperThread.hh>
57

58 59 60 61 62 63 64 65
 /** \brief Interface class controlling threadding in OpenFlipper
 *
 *
 * Example:\n
 * OpenFlipperThread* thread = new OpenFlipperThread(name() + "unique id");                     // Create your thread containing a unique id \n
 * connect(thread,SIGNAL( state(QString, int)), this,SIGNAL(setJobState(QString, int)));        // connect your threads state info to the global one \n
 * connect(thread,SIGNAL( finished(QString)), this,SIGNAL(finishJob(QString)));                 // connect your threads finish info to the global one ( you can do the same for a local one ) \n
 * connect(thread,SIGNAL( function()), this,SLOT(testFunctionThread()),Qt::DirectConnection);   // You can directly give a slot of your app that gets called \n
Jan Möbius's avatar
Jan Möbius committed
66
 * emit startJob( name() + "unique id", "Description" , 0 , 100 , false);                       // Tell the core about your thread
Jan Möbius's avatar
Jan Möbius committed
67 68
 * thread->start();                                                                             // start thread
 * thread->startProcessing();                                                                   // start processing
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
 */
class ProcessInterface {



   public :

      /// Destructor
      virtual ~ProcessInterface() {};

    signals :
      
      /** \brief announce a new job
      *
      * Use this function to announce a new job. The Job Id should be a unique id for your job.
      * Prepend your PluginName to your id to make it unique across plugins.
      *
      * The description will be the string visible to the user.
      *
      * min and max define the range your status values will be in.
      * 
90 91
      * blocking will define, if user interaction with the core should still be possible
      *
92
      */
93
      virtual void startJob( QString /*_jobId*/, QString /*_description */, int /*_min*/ , int /*_max*/ , bool /*_blocking */ = false) {};
94 95 96 97 98 99 100 101 102

      /** \brief update job state
      *
      * Emit this signal to tell the core about your job status.
      *
      * _value has to be in the range you defined!
      */
      virtual void setJobState(QString /*_jobId*/, int /*_value*/ ) {};
      
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
      /** \brief update job's name
      *
      * Emit this signal to tell the core to change a job's name.
      *
      * _caption The new name of the job
      */
      virtual void setJobName(QString /*_jobId*/, QString /*_name*/ ) {};
      
      /** \brief update job's description text
      *
      * Emit this signal to tell the core to change a job's widget's description.
      *
      * _text The text of the job's description
      */
      virtual void setJobDescription(QString /*_jobId*/, QString /*_text*/ ) {};
      
119 120 121 122 123 124 125 126 127 128 129 130 131 132
      /** \brief Cancel your job
      */
      virtual void cancelJob(QString /*_jobId*/ ) {};
      
      /** \brief Finish your job
      */
      virtual void finishJob(QString /*_jobId*/ ) {};
      
      private slots :
        /** \brief A job has been canceled 
        *
        * This function is called when the user cancels a job. 
        * The returned name is the name of the job which has been canceled
        */
133
        virtual void canceledJob (QString /*_job */) {};      
134 135 136 137 138 139
      
};

Q_DECLARE_INTERFACE(ProcessInterface,"OpenFlipper.ProcessInterface/1.0")

#endif // PROCESSINTERFACE_HH