/[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 3225 by schoenebeck, Fri May 26 22:10:16 2017 UTC
# Line 1  Line 1 
1  /*  /*
2   * Copyright (C) 2006-2014 Andreas Persson   * Copyright (C) 2006-2017 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 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    
252        if (!Settings::singleton()->autoRestoreWindowDimension) {
253            set_default_size(630, 250);
254            set_position(Gtk::WIN_POS_MOUSE);
255        }
256    
257      set_title(_("Dimensions of selected Region"));      set_title(_("Dimensions of selected Region"));
258      add(vbox);      add(vbox);
259      scrolledWindow.add(treeView);      scrolledWindow.add(treeView);
# Line 289  allRegionsCheckBox(_("All Regions")) Line 302  allRegionsCheckBox(_("All Regions"))
302      );      );
303    
304      show_all_children();      show_all_children();
       
     resize(460,300);  
305  }  }
306    
307  bool DimensionManager::allRegions() const {  bool DimensionManager::allRegions() const {
# Line 384  void DimensionManager::set_region(gig::R Line 395  void DimensionManager::set_region(gig::R
395  }  }
396    
397  void DimensionManager::onColumnClicked() {  void DimensionManager::onColumnClicked() {
398        printf("DimensionManager::onColumnClicked()\n");
399    
400        //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 !
401    
402      //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
403      if (ignoreColumnClicked) {      if (ignoreColumnClicked) {
404          ignoreColumnClicked = false;          ignoreColumnClicked = false;
405          return;          return;
406      }      }
407    #if (GTKMM_MAJOR_VERSION == 2 && GTKMM_MINOR_VERSION >= 18) || GTKMM_MAJOR_VERSION > 2
408        // prevents app to crash if this dialog is closed
409        if (!get_visible())
410            return;
411    #else
412    # warning Your GTKMM version is too old; dimension manager dialog might crash when changing a dimension type !
413    #endif
414    
415    #if (GTKMM_MAJOR_VERSION == 3 && GTKMM_MINOR_VERSION >= 8) || GTKMM_MAJOR_VERSION > 3
416        if (!is_visible()) return;
417    #endif
418    
419      Gtk::TreeModel::Path path;      Gtk::TreeModel::Path path;
420      Gtk::TreeViewColumn* focus_column;      Gtk::TreeViewColumn* focus_column;
# Line 396  void DimensionManager::onColumnClicked() Line 422  void DimensionManager::onColumnClicked()
422      //const int row = path[0];      //const int row = path[0];
423      if (focus_column == treeView.get_column(0)) {      if (focus_column == treeView.get_column(0)) {
424          Gtk::TreeModel::iterator it = treeView.get_model()->get_iter(path);          Gtk::TreeModel::iterator it = treeView.get_model()->get_iter(path);
425            if (!it) return;
426          Gtk::TreeModel::Row row = *it;          Gtk::TreeModel::Row row = *it;
427          gig::dimension_t oldType = row[tableModel.m_type];          gig::dimension_t oldType = row[tableModel.m_type];
428    
# Line 430  void DimensionManager::onColumnClicked() Line 457  void DimensionManager::onColumnClicked()
457          comboDimType.set_active(oldTypeIndex);          comboDimType.set_active(oldTypeIndex);
458    
459          if (!dialog.run()) { // OK selected ...          if (!dialog.run()) { // OK selected ...
460                ignoreColumnClicked = true;
461              Gtk::TreeModel::iterator iterType = comboDimType.get_active();              Gtk::TreeModel::iterator iterType = comboDimType.get_active();
462              if (!iterType) return;              if (!iterType) return;
463              Gtk::TreeModel::Row rowType = *iterType;              Gtk::TreeModel::Row rowType = *iterType;
# Line 438  void DimensionManager::onColumnClicked() Line 466  void DimensionManager::onColumnClicked()
466              gig::dimension_t newType = static_cast<gig::dimension_t>(iTypeID);              gig::dimension_t newType = static_cast<gig::dimension_t>(iTypeID);
467              if (newType == oldType) return;              if (newType == oldType) return;
468              //printf("change 0x%x -> 0x%x\n", oldType, newType);              //printf("change 0x%x -> 0x%x\n", oldType, newType);
             ignoreColumnClicked = true;  
469    
470              // assemble the list of regions where the selected dimension type              // assemble the list of regions where the selected dimension type
471              // shall be changed              // shall be changed
# Line 497  void DimensionManager::onColumnClicked() Line 524  void DimensionManager::onColumnClicked()
524                  msg.run();                  msg.run();
525              }              }
526          }          }
527        } else if (focus_column == treeView.get_column(1) || focus_column == treeView.get_column(2)) {
528            Glib::ustring txt = _("Right-click on a specific dimension zone of the dimension region selector to delete or split that particular dimension zone!");
529            Gtk::MessageDialog msg(*this, txt, false, Gtk::MESSAGE_INFO);
530            msg.run();
531      }      }
532  }  }
533    

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

  ViewVC Help
Powered by ViewVC