BackupPlugin.cc 14.3 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-2011 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
44
45
46
47
48

#include <QtGui>
#include "BackupPlugin.hh"
#include <iostream>
#include <OpenFlipper/BasePlugin/PluginFunctions.hh>
#include <OpenFlipper/common/GlobalOptions.hh>

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

51
52
53
54
55
56
57
58
59
60
61
62
63
64
//-----------------------------------------------------------------------------
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
65
//-----------------------------------------------------------------------------
Jan Möbius's avatar
 
Jan Möbius committed
66
67
68
69
70
71
72

void BackupPlugin::pluginsInitialized() {

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

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

Dirk Wilden's avatar
Dirk Wilden committed
78
79
80
81
    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") );
82
    connect(undoMenuAction_, SIGNAL(triggered()), this, SIGNAL( undo() ) );
83

Dirk Wilden's avatar
Dirk Wilden committed
84
85
86
87
    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") );
88
    connect(redoMenuAction_, SIGNAL(triggered()), this, SIGNAL( redo() ) );
Dirk Wilden's avatar
Dirk Wilden committed
89
90
91
92
93

    backupMenu_->addAction(undoMenuAction_);
    backupMenu_->addAction(redoMenuAction_);
    backupMenu_->addSeparator();
    backupMenu_->addAction(backupsEnabledAction_);
Jan Möbius's avatar
 
Jan Möbius committed
94
95
96

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

Jan Möbius's avatar
 
Jan Möbius committed
98
    //Undo
Dirk Wilden's avatar
Dirk Wilden committed
99
100
101
102
    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") );
103
    connect(undoToolAction_, SIGNAL(triggered()), this, SIGNAL( undo() ) );
Dirk Wilden's avatar
Dirk Wilden committed
104
    toolbar->addAction(undoToolAction_);
105

Jan Möbius's avatar
 
Jan Möbius committed
106
    //Redo
Dirk Wilden's avatar
Dirk Wilden committed
107
108
109
110
    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") );
111
    connect(redoToolAction_, SIGNAL(triggered()), this, SIGNAL( redo() ) );
Dirk Wilden's avatar
Dirk Wilden committed
112
    toolbar->addAction(redoToolAction_);
113

Jan Möbius's avatar
 
Jan Möbius committed
114
    emit addToolbar( toolbar );
115

Jan Möbius's avatar
 
Jan Möbius committed
116
117
118
    //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"));
119

Dirk Wilden's avatar
Dirk Wilden committed
120
121
122
123
124
125
126
127
128
129
130
131
132
133
    //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
134
135
136
  }
}

Dirk Wilden's avatar
Dirk Wilden committed
137
138
//-----------------------------------------------------------------------------

Jan Möbius's avatar
 
Jan Möbius committed
139
void BackupPlugin::slotAllCleared(){
Dirk Wilden's avatar
Dirk Wilden committed
140
141
  globalBackup_.clear();
}
Jan Möbius's avatar
 
Jan Möbius committed
142

Dirk Wilden's avatar
Dirk Wilden committed
143
144
145
//-----------------------------------------------------------------------------

void BackupPlugin::updateButtons() {
146

Dirk Wilden's avatar
Dirk Wilden committed
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
  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
170

Dirk Wilden's avatar
Dirk Wilden committed
171
  backupsEnabledAction_->setChecked( OpenFlipper::Options::backupEnabled() );
Jan Möbius's avatar
 
Jan Möbius committed
172
173
}

Dirk Wilden's avatar
Dirk Wilden committed
174
175
//-----------------------------------------------------------------------------

Jan Möbius's avatar
 
Jan Möbius committed
176
177
178
179
void BackupPlugin::slotEnableDisableBackups() {
  OpenFlipper::Options::enableBackup(backupsEnabledAction_->isChecked());
}

Dirk Wilden's avatar
Dirk Wilden committed
180
181
//-----------------------------------------------------------------------------

Jan Möbius's avatar
 
Jan Möbius committed
182
183
184
185
186
void BackupPlugin::slotKeyEvent( QKeyEvent* _event ){
   switch (_event->key())
   {
      case Qt::Key_Z :
         if ( _event->modifiers() == Qt::ControlModifier )
Dirk Wilden's avatar
Dirk Wilden committed
187
           emit undo();
Jan Möbius's avatar
 
Jan Möbius committed
188
         else if ( _event->modifiers() == (Qt::ControlModifier | Qt::ShiftModifier) )
Dirk Wilden's avatar
Dirk Wilden committed
189
           emit redo();
Jan Möbius's avatar
 
Jan Möbius committed
190
191
192
193
194
195
         break;
      default:
         break;
  }
}

Dirk Wilden's avatar
Dirk Wilden committed
196
197
//-----------------------------------------------------------------------------

Jan Möbius's avatar
 
Jan Möbius committed
198
199
200
void BackupPlugin::objectDeleted(int _objectid) {
}

Dirk Wilden's avatar
Dirk Wilden committed
201
//-----------------------------------------------------------------------------
Jan Möbius's avatar
 
Jan Möbius committed
202

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

Dirk Wilden's avatar
Dirk Wilden committed
205
206
207
208
209
  //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
210

Dirk Wilden's avatar
Dirk Wilden committed
211
212
213
  //get backup data
  BaseObjectData* object = 0;
  PluginFunctions::getObject(_objectId, object);
Jan Möbius's avatar
 
Jan Möbius committed
214

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

Dirk Wilden's avatar
Dirk Wilden committed
217
    if ( object->hasObjectData( OBJECT_BACKUPS ) ){
Jan Möbius's avatar
Jan Möbius committed
218
219
220

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

Dirk Wilden's avatar
Dirk Wilden committed
222
223
224
225
226
      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
227

Dirk Wilden's avatar
Dirk Wilden committed
228
229
230
231
      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
232
233
234
      }
    }
  }
Dirk Wilden's avatar
Dirk Wilden committed
235

Jan Möbius's avatar
 
Jan Möbius committed
236
237
}

Dirk Wilden's avatar
Dirk Wilden committed
238
//-----------------------------------------------------------------------------
Jan Möbius's avatar
 
Jan Möbius committed
239

Dirk Wilden's avatar
Dirk Wilden committed
240
void BackupPlugin::slotObjectUndo(){
241

Dirk Wilden's avatar
Dirk Wilden committed
242
243
  int id = undoContextAction_->data().toInt();
  emit undo(id);
Jan Möbius's avatar
 
Jan Möbius committed
244
245
}

Dirk Wilden's avatar
Dirk Wilden committed
246
//-----------------------------------------------------------------------------
Jan Möbius's avatar
 
Jan Möbius committed
247

Dirk Wilden's avatar
Dirk Wilden committed
248
void BackupPlugin::slotObjectRedo(){
249

Dirk Wilden's avatar
Dirk Wilden committed
250
251
252
  int id = undoContextAction_->data().toInt();
  emit redo(id);
}
Jan Möbius's avatar
 
Jan Möbius committed
253

Dirk Wilden's avatar
Dirk Wilden committed
254
//-----------------------------------------------------------------------------
Jan Möbius's avatar
 
Jan Möbius committed
255

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

Dirk Wilden's avatar
Dirk Wilden committed
258
259
  if ( !OpenFlipper::Options::backupEnabled() )
    return;
Jan Möbius's avatar
 
Jan Möbius committed
260

Dirk Wilden's avatar
Dirk Wilden committed
261
  BaseObjectData* object;
Jan Möbius's avatar
 
Jan Möbius committed
262

Dirk Wilden's avatar
Dirk Wilden committed
263
264
265
266
  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
267

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

Dirk Wilden's avatar
Dirk Wilden committed
271
272
273
  //add global backup
  IdList groupIds;
  groupIds.push_back( _objectid );
Jan Möbius's avatar
 
Jan Möbius committed
274

Dirk Wilden's avatar
Dirk Wilden committed
275
  bool skipBackup = false;
Jan Möbius's avatar
 
Jan Möbius committed
276

Dirk Wilden's avatar
Dirk Wilden committed
277
278
279
  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
280

Dirk Wilden's avatar
Dirk Wilden committed
281
282
283
    if ( backupData != 0 )
      skipBackup = !backupData->undoAvailable();
  }
Jan Möbius's avatar
 
Jan Möbius committed
284

Dirk Wilden's avatar
Dirk Wilden committed
285
286
287
288
  if ( !skipBackup ){
    GroupBackup* backup = new GroupBackup(groupIds, _name);
    globalBackup_.storeBackup( backup );
  }
Jan Möbius's avatar
 
Jan Möbius committed
289

Dirk Wilden's avatar
Dirk Wilden committed
290
291
292
  updateButtons();
  emit log(LOGOUT,"Created backup for " + QString::number(_objectid)+ " , Name : '" + _name + "'" );
}
Jan Möbius's avatar
 
Jan Möbius committed
293

Dirk Wilden's avatar
Dirk Wilden committed
294
//-----------------------------------------------------------------------------
Jan Möbius's avatar
 
Jan Möbius committed
295

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

Dirk Wilden's avatar
Dirk Wilden committed
298
299
  if ( !OpenFlipper::Options::backupEnabled() )
    return;
Jan Möbius's avatar
 
Jan Möbius committed
300

Dirk Wilden's avatar
Dirk Wilden committed
301
  IdList groupIds;
302

Dirk Wilden's avatar
Dirk Wilden committed
303
304
  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
305
306
307
    return;
  }

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

Dirk Wilden's avatar
Dirk Wilden committed
311
    BaseObjectData* object;
Jan Möbius's avatar
 
Jan Möbius committed
312

Dirk Wilden's avatar
Dirk Wilden committed
313
314
315
316
    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
317

Dirk Wilden's avatar
Dirk Wilden committed
318
319
320
321
    //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
322

Dirk Wilden's avatar
Dirk Wilden committed
323
  //add global backup
Jan Möbius's avatar
Typo    
Jan Möbius committed
324
  if ( ! groupIds.empty() ){
325

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

Dirk Wilden's avatar
Dirk Wilden committed
329
330
    updateButtons();
    emit log(LOGOUT,"Created grouped backup, Name : '" + _name + "'" );
Jan Möbius's avatar
 
Jan Möbius committed
331
332
333
  }
}

Dirk Wilden's avatar
Dirk Wilden committed
334
//-----------------------------------------------------------------------------
335

Dirk Wilden's avatar
Dirk Wilden committed
336
void BackupPlugin::slotUndo(int _objectid){
337

338
  emit aboutToRestore(_objectid);
Dirk Wilden's avatar
Dirk Wilden committed
339
  globalBackup_.undo(_objectid);
340
  emit restored(_objectid);
Dirk Wilden's avatar
Dirk Wilden committed
341
  emit updatedObject(_objectid, UPDATE_ALL);
342

Dirk Wilden's avatar
Dirk Wilden committed
343
  updateButtons();
Jan Möbius's avatar
 
Jan Möbius committed
344
345
}

Dirk Wilden's avatar
Dirk Wilden committed
346
//-----------------------------------------------------------------------------
Jan Möbius's avatar
 
Jan Möbius committed
347

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

Isaak Lim's avatar
Isaak Lim committed
351
352
353
354
355
  if (group) {
    IdList ids = group->objectIDs();
    IdList::const_iterator it, end;
    for (it = ids.begin(), end = ids.end(); it != end; ++it)
      emit aboutToRestore(*it);
356

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

Dirk Wilden's avatar
Dirk Wilden committed
359
360
    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
361

Isaak Lim's avatar
Isaak Lim committed
362
363
364
    updateButtons();
  } else
    emit log(LOGWARN,"Unable to find the current GroupBackup");
Dirk Wilden's avatar
Dirk Wilden committed
365
}
Jan Möbius's avatar
 
Jan Möbius committed
366

Dirk Wilden's avatar
Dirk Wilden committed
367
//-----------------------------------------------------------------------------
Jan Möbius's avatar
 
Jan Möbius committed
368

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

371
  emit aboutToRestore(_objectid);
Dirk Wilden's avatar
Dirk Wilden committed
372
  globalBackup_.redo(_objectid);
373
  emit restored(_objectid);
Dirk Wilden's avatar
Dirk Wilden committed
374
  emit updatedObject(_objectid, UPDATE_ALL);
Jan Möbius's avatar
 
Jan Möbius committed
375

Dirk Wilden's avatar
Dirk Wilden committed
376
  updateButtons();
Jan Möbius's avatar
 
Jan Möbius committed
377
378
}

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

Dirk Wilden's avatar
Dirk Wilden committed
381
382
void BackupPlugin::slotRedo(){
  globalBackup_.redo();
Jan Möbius's avatar
 
Jan Möbius committed
383

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

Dirk Wilden's avatar
Dirk Wilden committed
386
387
388
  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
389

Dirk Wilden's avatar
Dirk Wilden committed
390
  updateButtons();
Jan Möbius's avatar
 
Jan Möbius committed
391
392
}

Dirk Wilden's avatar
Dirk Wilden committed
393
//-----------------------------------------------------------------------------
Jan Möbius's avatar
 
Jan Möbius committed
394
395
396

Q_EXPORT_PLUGIN2( backupplugin , BackupPlugin );