process.cc 6.74 KB
Newer Older
Jan Möbius's avatar
Jan Möbius committed
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$                   *
Jan Möbius's avatar
Jan Möbius committed
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
 *                                                                           *
\*===========================================================================*/




//=============================================================================
//
//  CLASS Core - IMPLEMENTATION
//
//=============================================================================


//== INCLUDES =================================================================

#include "Core.hh"

//== IMPLEMENTATION ==========================================================


// A job has been started by a plugin
61 62 63
void Core::slotStartJob( QString _jobId, QString _description , int _min , int _max, bool _blocking) {
  std::cerr << "StartJob: " << _jobId.toStdString() << " " << _description.toStdString() << " " << _min << " " << _max  << " " << _blocking <<std::endl;
  
64 65 66 67 68 69 70 71 72 73 74 75 76 77
  // Create process manager window if it has not been created before
  if(!processManager_) {
      processManager_ = new ProcessManagerWidget();
      
      // Connect cancel buttons to local slot for further treatment
      connect(processManager_, SIGNAL(cancelJobRequested(QString)),
              this,            SLOT(slotJobCancelRequested(QString)));
  }
  // Add new item
  processManager_->addJob(_jobId, _description, _min, _max);
  
  // Show window
  processManager_->show();
  
78
  JobInfo* info        = new JobInfo();
79
  info->id             = _jobId;
80
  info->description    = _description;
81 82 83
  info->currentStep    =  0;
  info->minSteps       = _min;
  info->maxSteps       = _max;
84 85 86 87 88 89 90 91 92
  info->blocking       = _blocking;
  
  currentJobs.push_back(info);
}

//-----------------------------------------------------------------------------
bool Core::getJob(QString _jobId, int& _index) {
  
  for ( int i = 0 ; i < currentJobs.size() ; ++i) {
93
      if ( currentJobs[i]->id == _jobId ) {
94 95 96 97 98 99 100 101
        _index = i;
        return true;
      }
  }
  
  emit log(LOGERR,tr("Unable to find Job %1.").arg(_jobId));
  _index = -1;
  return false;
Jan Möbius's avatar
Jan Möbius committed
102 103 104 105 106 107
}

//-----------------------------------------------------------------------------

// A job state has been updated by a plugin
void Core::slotSetJobState(QString _jobId, int _value ) {
108 109 110
  int id;
  
  if (  getJob(_jobId, id) ) {
111 112
    currentJobs[id]->currentStep = _value;
    processManager_->updateStatus(_jobId, _value);
113
  }
Jan Möbius's avatar
Jan Möbius committed
114 115 116 117
}

//-----------------------------------------------------------------------------

118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
// A job's caption has been updated by a plugin
void Core::slotSetJobName(QString _jobId, QString _name ) {
    int id;
    
    if (  getJob(_jobId, id) ) {
        currentJobs[id]->id = _name;
        processManager_->setJobName(_jobId, _name);
    }
}
//-----------------------------------------------------------------------------

// A job's widget's status text has been updated by a plugin
void Core::slotSetJobDescription(QString _jobId, QString _text ) {
    int id;
    
    if (  getJob(_jobId, id) ) {
        currentJobs[id]->description = _text;
        processManager_->setJobDescription(_jobId, _text);
    }
}

//-----------------------------------------------------------------------------

Jan Möbius's avatar
Jan Möbius committed
141 142
// A job state has been canceled by a plugin
void Core::slotCancelJob(QString _jobId ) {
143 144 145
  int id;
  
  if (  getJob(_jobId, id) ) {
146
    processManager_->removeJob(_jobId);
147 148
    currentJobs.removeAt(id);
  }
Jan Möbius's avatar
Jan Möbius committed
149 150 151 152 153 154
}

//-----------------------------------------------------------------------------

// A job state has been finished by a plugin
void Core::slotFinishJob(QString _jobId ) {
155 156 157
  int id;
  
  if (  getJob(_jobId, id) ) {
158
    processManager_->removeJob(_jobId);
159 160 161 162
    currentJobs.removeAt(id);
  }
}

163
//-----------------------------------------------------------------------------
Jan Möbius's avatar
Jan Möbius committed
164

165 166 167 168 169 170
// A job has shall be canceled since the user pushed
// the cancel button
void Core::slotJobCancelRequested(QString /*_jobId*/) {
    
    // Cancel job still to be implemented...
}
Jan Möbius's avatar
Jan Möbius committed
171 172

//=============================================================================