/[svn]/gigedit/trunk/src/gigedit/dimensionmanager.cpp
ViewVC logotype

Diff of /gigedit/trunk/src/gigedit/dimensionmanager.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1411 by schoenebeck, Fri Oct 12 17:46:29 2007 UTC revision 1677 by persson, Sun Feb 10 08:50:35 2008 UTC
# Line 1  Line 1 
1  /*                                                         -*- c++ -*-  /*                                                         -*- c++ -*-
2   * Copyright (C) 2006, 2007 Andreas Persson   * Copyright (C) 2006-2008 Andreas Persson
3   *   *
4   * This program is free software; you can redistribute it and/or   * This program is free software; you can redistribute it and/or
5   * modify it under the terms of the GNU General Public License as   * modify it under the terms of the GNU General Public License as
# Line 218  addButton(Gtk::Stock::ADD), removeButton Line 218  addButton(Gtk::Stock::ADD), removeButton
218  // update all GUI elements according to current gig::Region informations  // update all GUI elements according to current gig::Region informations
219  void DimensionManager::refreshManager() {  void DimensionManager::refreshManager() {
220      refTableModel->clear();      refTableModel->clear();
221      for (int i = 0; i < region->Dimensions; i++) {      if (region) {
222          gig::dimension_def_t* dim = &region->pDimensionDefinitions[i];          for (int i = 0; i < region->Dimensions; i++) {
223          Gtk::TreeModel::Row row = *(refTableModel->append());              gig::dimension_def_t* dim = &region->pDimensionDefinitions[i];
224          row[tableModel.m_dim_type] = __dimTypeAsString(dim->dimension);              Gtk::TreeModel::Row row = *(refTableModel->append());
225          row[tableModel.m_bits] = dim->bits;              row[tableModel.m_dim_type] = __dimTypeAsString(dim->dimension);
226          row[tableModel.m_zones] = 1 << dim->bits; //TODO: for now we calculate it here until libgig always ensures 'zones' to be correct              row[tableModel.m_bits] = dim->bits;
227          row[tableModel.m_description] = __dimDescriptionAsString(dim->dimension);              row[tableModel.m_zones] = 1 << dim->bits; //TODO: for now we calculate it here until libgig always ensures 'zones' to be correct
228          row[tableModel.m_definition] = dim;              row[tableModel.m_description] = __dimDescriptionAsString(dim->dimension);
229                row[tableModel.m_definition] = dim;
230            }
231      }      }
232        set_sensitive(region);
233  }  }
234    
235  void DimensionManager::show(gig::Region* region) {  void DimensionManager::show(gig::Region* region) {
# Line 236  void DimensionManager::show(gig::Region* Line 239  void DimensionManager::show(gig::Region*
239      deiconify();      deiconify();
240  }  }
241    
242    void DimensionManager::set_region(gig::Region* region) {
243        this->region = region;
244        refreshManager();
245    }
246    
247  void DimensionManager::addDimension() {  void DimensionManager::addDimension() {
248      try {      try {
249          Gtk::Dialog dialog("New Dimension", true /*modal*/);          Gtk::Dialog dialog("New Dimension", true /*modal*/);
# Line 315  void DimensionManager::removeDimension() Line 323  void DimensionManager::removeDimension()
323              Gtk::TreeModel::Row row = *it;              Gtk::TreeModel::Row row = *it;
324              gig::dimension_def_t* dim = row[tableModel.m_definition];              gig::dimension_def_t* dim = row[tableModel.m_definition];
325              region->DeleteDimension(dim);              region->DeleteDimension(dim);
             // remove respective row from table  
             refTableModel->erase(it);  
326              // let everybody know there was a change              // let everybody know there was a change
327              region_changed_signal.emit(region);              region_changed_signal.emit(region);
328                // update all GUI elements
329                refreshManager();
330          } catch (RIFF::Exception e) {          } catch (RIFF::Exception e) {
331              // notify that the changes are over (i.e. to avoid dead locks)              // notify that the changes are over (i.e. to avoid dead locks)
332              region_changed_signal.emit(region);              region_changed_signal.emit(region);

Legend:
Removed from v.1411  
changed lines
  Added in v.1677

  ViewVC Help
Powered by ViewVC