ProcessInterface.hh 5.98 KB
Newer Older
1
2
3
4
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/*===========================================================================*\
 *                                                                           *
 *                              OpenFlipper                                  *
 *      Copyright (C) 2001-2009 by Computer Graphics Group, RWTH Aachen      *
 *                           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/>.                                      *
 *                                                                           *
\*===========================================================================*/

/*===========================================================================*\
 *                                                                           *
 *   $Revision: 6727 $                                                         *
 *   $Author: moebius $                                                      *
 *   $Date: 2009-08-05 08:03:50 +0200 (Mi, 05. Aug 2009) $                   *
 *                                                                           *
\*===========================================================================*/

//
// 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
66
 /** \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
67
 * emit startJob( name() + "unique id", "Description" , 0 , 100 , false);                       // Tell the core about your thread
Jan Möbius's avatar
Jan Möbius committed
68
69
 * thread->start();                                                                             // start thread
 * thread->startProcessing();                                                                   // start processing
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
 */
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.
      * 
91
92
      * blocking will define, if user interaction with the core should still be possible
      *
93
      */
94
      virtual void startJob( QString /*_jobId*/, QString /*_description */, int /*_min*/ , int /*_max*/ , bool /*_blocking */ = false) {};
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124

      /** \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*/ ) {};
      
      /** \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
        */
        virtual void canceledJob (QString /*_job */) = 0;      
      
};

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

#endif // PROCESSINTERFACE_HH