ProcessInterface.hh 6.44 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
/*===========================================================================*\
 *                                                                           *
 *                              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/>.                                      *
 *                                                                           *
\*===========================================================================*/

/*===========================================================================*\
 *                                                                           *
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