BackupPlugin.cc 15.2 KB
Newer Older
Jan Möbius's avatar
Jan Möbius committed
1
/*===========================================================================*\
Jan Möbius's avatar
Jan Möbius committed
2
3
*                                                                            *
*                              OpenFlipper                                   *
Jan Möbius's avatar
Jan Möbius committed
4
*      Copyright (C) 2001-2014 by Computer Graphics Group, RWTH Aachen       *
Jan Möbius's avatar
Jan Möbius committed
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
*                           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/>.                                       *
*                                                                            *
Jan Möbius's avatar
Jan Möbius committed
33
34
35
\*===========================================================================*/

/*===========================================================================*\
Jan Möbius's avatar
Jan Möbius committed
36
37
38
39
40
*                                                                            *
*   $Revision$                                                       *
*   $LastChangedBy$                                                *
*   $Date$                     *
*                                                                            *
Jan Möbius's avatar
Jan Möbius committed
41
\*===========================================================================*/
Jan Möbius's avatar
 
Jan Möbius committed
42

43
#include "BackupPlugin.hh"
Matthias Möller's avatar
Matthias Möller committed
44
45
46
47
48
49
#if QT_VERSION >= 0x050000 
  #include <QtWidgets>
#else
  #include <QtGui>
#endif

Jan Möbius's avatar
 
Jan Möbius committed
50
51
52
53
#include <iostream>
#include <OpenFlipper/BasePlugin/PluginFunctions.hh>
#include <OpenFlipper/common/GlobalOptions.hh>

Dirk Wilden's avatar
Dirk Wilden committed
54
#include "GroupBackup.hh"
Jan Möbius's avatar
 
Jan Möbius committed
55

56
57
58
59
60
61
62
63
64
65
66
67
68
69
//-----------------------------------------------------------------------------
BackupPlugin::BackupPlugin():
backupMenu_(0),
backupsEnabledAction_(0),
undoMenuAction_(0),
redoMenuAction_(0),
undoToolAction_(0),
redoToolAction_(0),
undoContextAction_(0),
redoContextAction_(0)
{

}

Dirk Wilden's avatar
Dirk Wilden committed
70
//-----------------------------------------------------------------------------
Jan Möbius's avatar
 
Jan Möbius committed
71
72
73
74
75
76
77

void BackupPlugin::pluginsInitialized() {

  // Create Backup menu
  emit getMenubarMenu(tr("&Backup"), backupMenu_, true );

  if ( OpenFlipper::Options::gui() ) {
Dirk Wilden's avatar
Dirk Wilden committed
78
    //construct the menu
Jan Möbius's avatar
 
Jan Möbius committed
79
80
81
    backupsEnabledAction_ = new QAction("Backups Enabled",0);
    backupsEnabledAction_->setCheckable(true);
    connect (backupsEnabledAction_, SIGNAL(triggered(bool)), this, SLOT(slotEnableDisableBackups()) );
82

Dirk Wilden's avatar
Dirk Wilden committed
83
84
85
86
    undoMenuAction_ = new QAction(tr("&Undo"), this);
    undoMenuAction_->setEnabled(false);
    undoMenuAction_->setStatusTip(tr("Undo the last action."));
    undoMenuAction_->setIcon(QIcon(OpenFlipper::Options::iconDirStr()+OpenFlipper::Options::dirSeparator()+"edit-undo.png") );
87
    connect(undoMenuAction_, SIGNAL(triggered()), this, SIGNAL( undo() ) );
88

Dirk Wilden's avatar
Dirk Wilden committed
89
90
91
92
    redoMenuAction_ = new QAction(tr("&Redo"), this);
    redoMenuAction_->setEnabled(false);
    redoMenuAction_->setStatusTip(tr("Redo the last action"));
    redoMenuAction_->setIcon(QIcon(OpenFlipper::Options::iconDirStr()+OpenFlipper::Options::dirSeparator()+"edit-redo.png") );
93
    connect(redoMenuAction_, SIGNAL(triggered()), this, SIGNAL( redo() ) );
Dirk Wilden's avatar
Dirk Wilden committed
94
95
96
97
98

    backupMenu_->addAction(undoMenuAction_);
    backupMenu_->addAction(redoMenuAction_);
    backupMenu_->addSeparator();
    backupMenu_->addAction(backupsEnabledAction_);
Jan Möbius's avatar
 
Jan Möbius committed
99
100
101

    // Add a backup Toolbar
    QToolBar* toolbar = new QToolBar("Backup Toolbar");
102

Jan Möbius's avatar
 
Jan Möbius committed
103
    //Undo
Dirk Wilden's avatar
Dirk Wilden committed
104
105
106
107
    undoToolAction_ = new QAction(tr("&Undo"), this);
    undoToolAction_->setEnabled(false);
    undoToolAction_->setStatusTip(tr("Undo the last action."));
    undoToolAction_->setIcon(QIcon(OpenFlipper::Options::iconDirStr()+OpenFlipper::Options::dirSeparator()+"edit-undo.png") );
108
    connect(undoToolAction_, SIGNAL(triggered()), this, SIGNAL( undo() ) );
Dirk Wilden's avatar
Dirk Wilden committed
109
    toolbar->addAction(undoToolAction_);
110

Jan Möbius's avatar
 
Jan Möbius committed
111
    //Redo
Dirk Wilden's avatar
Dirk Wilden committed
112
113
114
115
    redoToolAction_ = new QAction(tr("&Redo"), this);
    redoToolAction_->setEnabled(false);
    redoToolAction_->setStatusTip(tr("Redo the last action"));
    redoToolAction_->setIcon(QIcon(OpenFlipper::Options::iconDirStr()+OpenFlipper::Options::dirSeparator()+"edit-redo.png") );
116
    connect(redoToolAction_, SIGNAL(triggered()), this, SIGNAL( redo() ) );
Dirk Wilden's avatar
Dirk Wilden committed
117
    toolbar->addAction(redoToolAction_);
118

Jan Möbius's avatar
 
Jan Möbius committed
119
    emit addToolbar( toolbar );
120

Jan Möbius's avatar
 
Jan Möbius committed
121
122
123
    //the release event does not contain the modifier
    emit registerKey(Qt::Key_Z,  Qt::ControlModifier, tr("Undo Action"));
    emit registerKey(Qt::Key_Z, (Qt::ControlModifier | Qt::ShiftModifier),   tr("Redo Action"));
124

Dirk Wilden's avatar
Dirk Wilden committed
125
126
127
128
129
130
131
132
133
134
135
136
137
138
    //add actions for the context menu
    undoContextAction_ = new QAction(tr("&Undo"), this);
    undoContextAction_->setEnabled(false);
    undoContextAction_->setStatusTip(tr("Undo the last action."));
    undoContextAction_->setIcon(QIcon(OpenFlipper::Options::iconDirStr()+OpenFlipper::Options::dirSeparator()+"edit-undo.png") );
    connect(undoContextAction_, SIGNAL(triggered()), this, SLOT(slotObjectUndo()) );
    emit addContextMenuItem(undoContextAction_, DATA_ALL, CONTEXTOBJECTMENU);

    redoContextAction_ = new QAction(tr("&Redo"), this);
    redoContextAction_->setEnabled(false);
    redoContextAction_->setStatusTip(tr("Redo the last action"));
    redoContextAction_->setIcon(QIcon(OpenFlipper::Options::iconDirStr()+OpenFlipper::Options::dirSeparator()+"edit-redo.png") );
    connect(redoContextAction_, SIGNAL(triggered()), this, SLOT(slotObjectRedo()) );
    emit addContextMenuItem(redoContextAction_, DATA_ALL, CONTEXTOBJECTMENU);
Jan Möbius's avatar
 
Jan Möbius committed
139
  }
140
141
142
143
144
145

//createBackup(int _objectId, QString _name, UpdateType _type= UPDATE_ALL)
  emit setSlotDescription("createBackup(int,QString)", tr("Creates a backup which can be restored via undo."),
                               QString("objectId,name").split(","), QString("Id of the object,name of the backup").split(","));
  emit setSlotDescription("createBackup(int,QString,UpdateType)", tr("Creates a backup which can be restored via undo."),
                             QString("objectId,name,type").split(","), QString("Id of the object,name of the backup,updatetypes which are changed").split(","));
Jan Möbius's avatar
 
Jan Möbius committed
146
147
}

Dirk Wilden's avatar
Dirk Wilden committed
148
149
//-----------------------------------------------------------------------------

Jan Möbius's avatar
 
Jan Möbius committed
150
void BackupPlugin::slotAllCleared(){
Dirk Wilden's avatar
Dirk Wilden committed
151
152
  globalBackup_.clear();
}
Jan Möbius's avatar
 
Jan Möbius committed
153

Dirk Wilden's avatar
Dirk Wilden committed
154
155
156
//-----------------------------------------------------------------------------

void BackupPlugin::updateButtons() {
157

Dirk Wilden's avatar
Dirk Wilden committed
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
  if ( globalBackup_.undoAvailable() ){
    undoMenuAction_->setText( tr("Undo '%1'").arg( globalBackup_.undoName() ) );
    undoMenuAction_->setEnabled(true);
    undoToolAction_->setText( tr("Undo '%1'").arg( globalBackup_.undoName() ) );
    undoToolAction_->setEnabled(true);
  } else {
    undoMenuAction_->setText( tr("Undo") );
    undoMenuAction_->setEnabled(false);
    undoToolAction_->setText( tr("Undo") );
    undoToolAction_->setEnabled(false);
  }

  if ( globalBackup_.redoAvailable() ){
    redoMenuAction_->setText( tr("Redo '%1'").arg( globalBackup_.redoName() ) );
    redoMenuAction_->setEnabled(true);
    redoToolAction_->setText( tr("Redo '%1'").arg( globalBackup_.redoName() ) );
    redoToolAction_->setEnabled(true);
  } else {
    redoMenuAction_->setText( tr("Redo") );
    redoMenuAction_->setEnabled(false);
    redoToolAction_->setText( tr("Redo") );
    redoToolAction_->setEnabled(false);
  }
Jan Möbius's avatar
 
Jan Möbius committed
181

Dirk Wilden's avatar
Dirk Wilden committed
182
  backupsEnabledAction_->setChecked( OpenFlipper::Options::backupEnabled() );
Jan Möbius's avatar
 
Jan Möbius committed
183
184
}

Dirk Wilden's avatar
Dirk Wilden committed
185
186
//-----------------------------------------------------------------------------

Jan Möbius's avatar
 
Jan Möbius committed
187
188
189
190
void BackupPlugin::slotEnableDisableBackups() {
  OpenFlipper::Options::enableBackup(backupsEnabledAction_->isChecked());
}

Dirk Wilden's avatar
Dirk Wilden committed
191
192
//-----------------------------------------------------------------------------

Jan Möbius's avatar
 
Jan Möbius committed
193
194
195
196
197
void BackupPlugin::slotKeyEvent( QKeyEvent* _event ){
   switch (_event->key())
   {
      case Qt::Key_Z :
         if ( _event->modifiers() == Qt::ControlModifier )
Dirk Wilden's avatar
Dirk Wilden committed
198
           emit undo();
Jan Möbius's avatar
 
Jan Möbius committed
199
         else if ( _event->modifiers() == (Qt::ControlModifier | Qt::ShiftModifier) )
Dirk Wilden's avatar
Dirk Wilden committed
200
           emit redo();
Jan Möbius's avatar
 
Jan Möbius committed
201
202
203
204
205
206
         break;
      default:
         break;
  }
}

Dirk Wilden's avatar
Dirk Wilden committed
207
208
//-----------------------------------------------------------------------------

Jan Möbius's avatar
 
Jan Möbius committed
209
210
211
void BackupPlugin::objectDeleted(int _objectid) {
}

Dirk Wilden's avatar
Dirk Wilden committed
212
//-----------------------------------------------------------------------------
Jan Möbius's avatar
 
Jan Möbius committed
213

Dirk Wilden's avatar
Dirk Wilden committed
214
void BackupPlugin::slotUpdateContextMenu( int _objectId ){
Jan Möbius's avatar
 
Jan Möbius committed
215

Dirk Wilden's avatar
Dirk Wilden committed
216
217
218
219
220
  //disable everything
  undoContextAction_->setText( tr("Undo") );
  undoContextAction_->setEnabled(false);
  redoContextAction_->setText( tr("Redo") );
  redoContextAction_->setEnabled(false);
Jan Möbius's avatar
 
Jan Möbius committed
221

Dirk Wilden's avatar
Dirk Wilden committed
222
223
224
  //get backup data
  BaseObjectData* object = 0;
  PluginFunctions::getObject(_objectId, object);
Jan Möbius's avatar
 
Jan Möbius committed
225

Dirk Wilden's avatar
Dirk Wilden committed
226
  if ( object != 0 ){
Jan Möbius's avatar
 
Jan Möbius committed
227

Dirk Wilden's avatar
Dirk Wilden committed
228
    if ( object->hasObjectData( OBJECT_BACKUPS ) ){
Jan Möbius's avatar
Jan Möbius committed
229
230
231

      //get backup object data
      BackupData* backupData = dynamic_cast< BackupData* >(object->objectData(OBJECT_BACKUPS));
Jan Möbius's avatar
 
Jan Möbius committed
232

Dirk Wilden's avatar
Dirk Wilden committed
233
234
235
236
237
      if ( backupData->undoAvailable() ){
        undoContextAction_->setData(_objectId);
        undoContextAction_->setText( tr("Undo '%1'").arg( backupData->undoName() ) );
        undoContextAction_->setEnabled( !backupData->undoBlocked() );
      }
Jan Möbius's avatar
 
Jan Möbius committed
238

Dirk Wilden's avatar
Dirk Wilden committed
239
240
241
242
      if ( backupData->redoAvailable() ){
        redoContextAction_->setData(_objectId);
        redoContextAction_->setText( tr("Redo '%1'").arg( backupData->redoName() ) );
        redoContextAction_->setEnabled( !backupData->redoBlocked() );
Jan Möbius's avatar
 
Jan Möbius committed
243
244
245
      }
    }
  }
Dirk Wilden's avatar
Dirk Wilden committed
246

Jan Möbius's avatar
 
Jan Möbius committed
247
248
}

Dirk Wilden's avatar
Dirk Wilden committed
249
//-----------------------------------------------------------------------------
Jan Möbius's avatar
 
Jan Möbius committed
250

Dirk Wilden's avatar
Dirk Wilden committed
251
void BackupPlugin::slotObjectUndo(){
252

Dirk Wilden's avatar
Dirk Wilden committed
253
254
  int id = undoContextAction_->data().toInt();
  emit undo(id);
Jan Möbius's avatar
 
Jan Möbius committed
255
256
}

Dirk Wilden's avatar
Dirk Wilden committed
257
//-----------------------------------------------------------------------------
Jan Möbius's avatar
 
Jan Möbius committed
258

Dirk Wilden's avatar
Dirk Wilden committed
259
void BackupPlugin::slotObjectRedo(){
260

Dirk Wilden's avatar
Dirk Wilden committed
261
262
263
  int id = undoContextAction_->data().toInt();
  emit redo(id);
}
Jan Möbius's avatar
 
Jan Möbius committed
264

Dirk Wilden's avatar
Dirk Wilden committed
265
//-----------------------------------------------------------------------------
Jan Möbius's avatar
 
Jan Möbius committed
266

Dirk Wilden's avatar
Dirk Wilden committed
267
void BackupPlugin::slotCreateBackup( int _objectid, QString _name, UpdateType _type){
268

Dirk Wilden's avatar
Dirk Wilden committed
269
270
  if ( !OpenFlipper::Options::backupEnabled() )
    return;
Jan Möbius's avatar
 
Jan Möbius committed
271

Dirk Wilden's avatar
Dirk Wilden committed
272
  BaseObjectData* object;
Jan Möbius's avatar
 
Jan Möbius committed
273

Dirk Wilden's avatar
Dirk Wilden committed
274
275
276
277
  if ( !PluginFunctions::getObject(_objectid,object) ){
    emit log(LOGWARN,"Unable to find backup object with id " + QString::number(_objectid));
    return;
  }
Jan Möbius's avatar
 
Jan Möbius committed
278

Dirk Wilden's avatar
Dirk Wilden committed
279
280
  //tell TypePlugin to Backup
  emit generateBackup( _objectid, _name, _type );
Jan Möbius's avatar
 
Jan Möbius committed
281

Dirk Wilden's avatar
Dirk Wilden committed
282
283
284
  //add global backup
  IdList groupIds;
  groupIds.push_back( _objectid );
Jan Möbius's avatar
 
Jan Möbius committed
285

Dirk Wilden's avatar
Dirk Wilden committed
286
  bool skipBackup = false;
Jan Möbius's avatar
 
Jan Möbius committed
287

Dirk Wilden's avatar
Dirk Wilden committed
288
289
290
  if ( globalBackup_.undoAvailable() ){
    //skip 'Original Object' Backups in global view
    BackupData* backupData = dynamic_cast< BackupData* >(object->objectData(OBJECT_BACKUPS));
Jan Möbius's avatar
 
Jan Möbius committed
291

Dirk Wilden's avatar
Dirk Wilden committed
292
293
294
    if ( backupData != 0 )
      skipBackup = !backupData->undoAvailable();
  }
Jan Möbius's avatar
 
Jan Möbius committed
295

Dirk Wilden's avatar
Dirk Wilden committed
296
297
298
299
  if ( !skipBackup ){
    GroupBackup* backup = new GroupBackup(groupIds, _name);
    globalBackup_.storeBackup( backup );
  }
Jan Möbius's avatar
 
Jan Möbius committed
300

Dirk Wilden's avatar
Dirk Wilden committed
301
302
303
  updateButtons();
  emit log(LOGOUT,"Created backup for " + QString::number(_objectid)+ " , Name : '" + _name + "'" );
}
Jan Möbius's avatar
 
Jan Möbius committed
304

Dirk Wilden's avatar
Dirk Wilden committed
305
//-----------------------------------------------------------------------------
Jan Möbius's avatar
 
Jan Möbius committed
306

Dirk Wilden's avatar
Dirk Wilden committed
307
void BackupPlugin::slotCreateBackup( IdList _objectids , QString _name, std::vector<UpdateType> _types){
Jan Möbius's avatar
 
Jan Möbius committed
308

Dirk Wilden's avatar
Dirk Wilden committed
309
310
  if ( !OpenFlipper::Options::backupEnabled() )
    return;
Jan Möbius's avatar
 
Jan Möbius committed
311

Dirk Wilden's avatar
Dirk Wilden committed
312
  IdList groupIds;
313

Dirk Wilden's avatar
Dirk Wilden committed
314
315
  if ( _objectids.size() != _types.size() ){
    emit log(LOGWARN,"Unable to create backup sizes of ids and updateTypes do not match!");
Jan Möbius's avatar
 
Jan Möbius committed
316
317
318
    return;
  }

Dirk Wilden's avatar
Dirk Wilden committed
319
320
  //generate backups on all objects
  for (unsigned int i=0; i < _objectids.size(); ++i){
Jan Möbius's avatar
 
Jan Möbius committed
321

Dirk Wilden's avatar
Dirk Wilden committed
322
    BaseObjectData* object;
Jan Möbius's avatar
 
Jan Möbius committed
323

Dirk Wilden's avatar
Dirk Wilden committed
324
325
326
327
    if ( !PluginFunctions::getObject(_objectids[i],object) ){
      emit log(LOGWARN,"Unable to find backup object with id " + QString::number(_objectids[i]));
      continue;
    }
Jan Möbius's avatar
 
Jan Möbius committed
328

Dirk Wilden's avatar
Dirk Wilden committed
329
330
331
332
    //tell TypePlugin to generate a backup
    emit generateBackup( _objectids[i], _name, _types[i] );
    groupIds.push_back(  _objectids[i] );
  }
Jan Möbius's avatar
 
Jan Möbius committed
333

Dirk Wilden's avatar
Dirk Wilden committed
334
  //add global backup
Jan Möbius's avatar
Typo    
Jan Möbius committed
335
  if ( ! groupIds.empty() ){
336

Dirk Wilden's avatar
Dirk Wilden committed
337
338
    GroupBackup* backup = new GroupBackup(groupIds, _name);
    globalBackup_.storeBackup( backup );
Jan Möbius's avatar
 
Jan Möbius committed
339

Dirk Wilden's avatar
Dirk Wilden committed
340
341
    updateButtons();
    emit log(LOGOUT,"Created grouped backup, Name : '" + _name + "'" );
Jan Möbius's avatar
 
Jan Möbius committed
342
343
344
  }
}

Dirk Wilden's avatar
Dirk Wilden committed
345
//-----------------------------------------------------------------------------
346

Dirk Wilden's avatar
Dirk Wilden committed
347
void BackupPlugin::slotUndo(int _objectid){
348

349
  emit aboutToRestore(_objectid);
Dirk Wilden's avatar
Dirk Wilden committed
350
  globalBackup_.undo(_objectid);
351
  emit restored(_objectid);
Dirk Wilden's avatar
Dirk Wilden committed
352
  emit updatedObject(_objectid, UPDATE_ALL);
353

Dirk Wilden's avatar
Dirk Wilden committed
354
  updateButtons();
Jan Möbius's avatar
 
Jan Möbius committed
355
356
}

Dirk Wilden's avatar
Dirk Wilden committed
357
//-----------------------------------------------------------------------------
Jan Möbius's avatar
 
Jan Möbius committed
358

Dirk Wilden's avatar
Dirk Wilden committed
359
void BackupPlugin::slotUndo(){
360
361
  GroupBackup* group = dynamic_cast< GroupBackup* >( globalBackup_.currentState() );

Isaak Lim's avatar
Isaak Lim committed
362
363
364
365
366
  if (group) {
    IdList ids = group->objectIDs();
    IdList::const_iterator it, end;
    for (it = ids.begin(), end = ids.end(); it != end; ++it)
      emit aboutToRestore(*it);
367

Isaak Lim's avatar
Isaak Lim committed
368
    globalBackup_.undo();
Jan Möbius's avatar
 
Jan Möbius committed
369

Dirk Wilden's avatar
Dirk Wilden committed
370
371
    for (unsigned int i=0; i < group->objectIDs().size(); i++)
      emit updatedObject(group->objectIDs()[i], UPDATE_ALL);
Jan Möbius's avatar
 
Jan Möbius committed
372

Isaak Lim's avatar
Isaak Lim committed
373
374
375
    updateButtons();
  } else
    emit log(LOGWARN,"Unable to find the current GroupBackup");
Dirk Wilden's avatar
Dirk Wilden committed
376
}
Jan Möbius's avatar
 
Jan Möbius committed
377

Dirk Wilden's avatar
Dirk Wilden committed
378
//-----------------------------------------------------------------------------
Jan Möbius's avatar
 
Jan Möbius committed
379

Dirk Wilden's avatar
Dirk Wilden committed
380
void BackupPlugin::slotRedo(int _objectid){
Jan Möbius's avatar
 
Jan Möbius committed
381

382
  emit aboutToRestore(_objectid);
Dirk Wilden's avatar
Dirk Wilden committed
383
  globalBackup_.redo(_objectid);
384
  emit restored(_objectid);
Dirk Wilden's avatar
Dirk Wilden committed
385
  emit updatedObject(_objectid, UPDATE_ALL);
Jan Möbius's avatar
 
Jan Möbius committed
386

Dirk Wilden's avatar
Dirk Wilden committed
387
  updateButtons();
Jan Möbius's avatar
 
Jan Möbius committed
388
389
}

Dirk Wilden's avatar
Dirk Wilden committed
390
//-----------------------------------------------------------------------------
Jan Möbius's avatar
 
Jan Möbius committed
391

Dirk Wilden's avatar
Dirk Wilden committed
392
393
void BackupPlugin::slotRedo(){
  globalBackup_.redo();
Jan Möbius's avatar
 
Jan Möbius committed
394

Dirk Wilden's avatar
Dirk Wilden committed
395
  GroupBackup* group = dynamic_cast< GroupBackup* >( globalBackup_.currentState() );
Jan Möbius's avatar
 
Jan Möbius committed
396

Dirk Wilden's avatar
Dirk Wilden committed
397
398
399
  if ( group != 0)
    for (unsigned int i=0; i < group->objectIDs().size(); i++)
      emit updatedObject(group->objectIDs()[i], UPDATE_ALL);
Jan Möbius's avatar
 
Jan Möbius committed
400

Dirk Wilden's avatar
Dirk Wilden committed
401
  updateButtons();
Jan Möbius's avatar
 
Jan Möbius committed
402
403
}

Dirk Wilden's avatar
Dirk Wilden committed
404
//-----------------------------------------------------------------------------
Jan Möbius's avatar
 
Jan Möbius committed
405

406
407
408
409
410
411
412
void BackupPlugin::createBackup(int _objectId, QString _name, UpdateType _type)
{
  slotCreateBackup(_objectId,_name,_type);
}

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

Matthias Möller's avatar
Matthias Möller committed
413
#if QT_VERSION < 0x050000
Jan Möbius's avatar
 
Jan Möbius committed
414
Q_EXPORT_PLUGIN2( backupplugin , BackupPlugin );
Matthias Möller's avatar
Matthias Möller committed
415
#endif
Jan Möbius's avatar
 
Jan Möbius committed
416