/[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 2641 by schoenebeck, Mon Jun 16 15:24:54 2014 UTC revision 3158 by schoenebeck, Mon May 8 18:05:35 2017 UTC
# Line 17  Line 17 
17   * 02110-1301 USA.   * 02110-1301 USA.
18   */   */
19    
20    #include <glibmmconfig.h>
21    // threads.h must be included first to be able to build with
22    // G_DISABLE_DEPRECATED
23    #if (GLIBMM_MAJOR_VERSION == 2 && GLIBMM_MINOR_VERSION == 31 && GLIBMM_MICRO_VERSION >= 2) || \
24        (GLIBMM_MAJOR_VERSION == 2 && GLIBMM_MINOR_VERSION > 31) || GLIBMM_MAJOR_VERSION > 2
25    #include <glibmm/threads.h>
26    #endif
27    
28  #include "dimensionmanager.h"  #include "dimensionmanager.h"
29    
30  #include <gtkmm/stock.h>  #include <gtkmm/stock.h>
# Line 236  void IntSetCellRenderer::valueChanged() Line 244  void IntSetCellRenderer::valueChanged()
244  }  }
245    
246  DimensionManager::DimensionManager() :  DimensionManager::DimensionManager() :
247  addButton(Gtk::Stock::ADD), removeButton(Gtk::Stock::REMOVE),      addButton(Gtk::Stock::ADD), removeButton(Gtk::Stock::REMOVE),
248  allRegionsCheckBox(_("All Regions"))      allRegionsCheckBox(_("All Regions"))
249  {  {
250      ignoreColumnClicked = true;      ignoreColumnClicked = true;
251    
# Line 384  void DimensionManager::set_region(gig::R Line 392  void DimensionManager::set_region(gig::R
392  }  }
393    
394  void DimensionManager::onColumnClicked() {  void DimensionManager::onColumnClicked() {
395        printf("DimensionManager::onColumnClicked()\n");
396    
397        //FIXME: BUG: this method is currently very unreliably called, it should actually be called when the user selects another column, it is ATM however also called when the table content changed programmatically causing the dialog below to popup at undesired times !
398    
399      //HACK: Prevents that onColumnClicked() gets called multiple times or at times where it is not desired      //HACK: Prevents that onColumnClicked() gets called multiple times or at times where it is not desired
400      if (ignoreColumnClicked) {      if (ignoreColumnClicked) {
401          ignoreColumnClicked = false;          ignoreColumnClicked = false;
402          return;          return;
403      }      }
404    #if (GTKMM_MAJOR_VERSION == 2 && GTKMM_MINOR_VERSION >= 18) || GTKMM_MAJOR_VERSION > 2
405        // prevents app to crash if this dialog is closed
406        if (!get_visible())
407            return;
408    #else
409    # warning Your GTKMM version is too old; dimension manager dialog might crash when changing a dimension type !
410    #endif
411    
412    #if (GTKMM_MAJOR_VERSION == 3 && GTKMM_MINOR_VERSION >= 8) || GTKMM_MAJOR_VERSION > 3
413        if (!is_visible()) return;
414    #endif
415    
416      Gtk::TreeModel::Path path;      Gtk::TreeModel::Path path;
417      Gtk::TreeViewColumn* focus_column;      Gtk::TreeViewColumn* focus_column;
# Line 396  void DimensionManager::onColumnClicked() Line 419  void DimensionManager::onColumnClicked()
419      //const int row = path[0];      //const int row = path[0];
420      if (focus_column == treeView.get_column(0)) {      if (focus_column == treeView.get_column(0)) {
421          Gtk::TreeModel::iterator it = treeView.get_model()->get_iter(path);          Gtk::TreeModel::iterator it = treeView.get_model()->get_iter(path);
422            if (!it) return;
423          Gtk::TreeModel::Row row = *it;          Gtk::TreeModel::Row row = *it;
424          gig::dimension_t oldType = row[tableModel.m_type];          gig::dimension_t oldType = row[tableModel.m_type];
425    
# Line 430  void DimensionManager::onColumnClicked() Line 454  void DimensionManager::onColumnClicked()
454          comboDimType.set_active(oldTypeIndex);          comboDimType.set_active(oldTypeIndex);
455    
456          if (!dialog.run()) { // OK selected ...          if (!dialog.run()) { // OK selected ...
457                ignoreColumnClicked = true;
458              Gtk::TreeModel::iterator iterType = comboDimType.get_active();              Gtk::TreeModel::iterator iterType = comboDimType.get_active();
459              if (!iterType) return;              if (!iterType) return;
460              Gtk::TreeModel::Row rowType = *iterType;              Gtk::TreeModel::Row rowType = *iterType;
# Line 438  void DimensionManager::onColumnClicked() Line 463  void DimensionManager::onColumnClicked()
463              gig::dimension_t newType = static_cast<gig::dimension_t>(iTypeID);              gig::dimension_t newType = static_cast<gig::dimension_t>(iTypeID);
464              if (newType == oldType) return;              if (newType == oldType) return;
465              //printf("change 0x%x -> 0x%x\n", oldType, newType);              //printf("change 0x%x -> 0x%x\n", oldType, newType);
             ignoreColumnClicked = true;  
466    
467              // assemble the list of regions where the selected dimension type              // assemble the list of regions where the selected dimension type
468              // shall be changed              // shall be changed
# Line 497  void DimensionManager::onColumnClicked() Line 521  void DimensionManager::onColumnClicked()
521                  msg.run();                  msg.run();
522              }              }
523          }          }
524        } else if (focus_column == treeView.get_column(1) || focus_column == treeView.get_column(2)) {
525            Glib::ustring txt = _("Right-click on a specific dimension zone of the dimension region selector to delete or split that particular dimension zone!");
526            Gtk::MessageDialog msg(*this, txt, false, Gtk::MESSAGE_INFO);
527            msg.run();
528      }      }
529  }  }
530    

Legend:
Removed from v.2641  
changed lines
  Added in v.3158

  ViewVC Help
Powered by ViewVC