/[ascend]/trunk/pygtk/interface/gtkbrowser.py
ViewVC logotype

Diff of /trunk/pygtk/interface/gtkbrowser.py

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

revision 226 by johnpye, Sat Jan 28 02:12:19 2006 UTC revision 227 by johnpye, Sat Jan 28 04:44:15 2006 UTC
# Line 25  import ascend Line 25  import ascend
25  GLADE_FILE = "/home/john/src/ascend/trunk/pygtk/interface/ascend.glade"  GLADE_FILE = "/home/john/src/ascend/trunk/pygtk/interface/ascend.glade"
26    
27  CHANGED_COLOR = "#FFFF88"  CHANGED_COLOR = "#FFFF88"
28    SOLVERPARAM_BOOL_TRUE = "Yes"
29    SOLVERPARAM_BOOL_FALSE = "No"
30    
31    ESCAPE_KEY = 65307
32    
33  #======================================  #======================================
34  # Browser is the main ASCEND library/model browser window  # Browser is the main ASCEND library/model browser window
# Line 884  class SolverParametersWindow: Line 888  class SolverParametersWindow:
888    
889          _xml = gtk.glade.XML(GLADE_FILE,"paramswin")          _xml = gtk.glade.XML(GLADE_FILE,"paramswin")
890          self.window = _xml.get_widget("paramswin")          self.window = _xml.get_widget("paramswin")
891            self.paramdescription = _xml.get_widget("paramdescription")
892            self.solvername = _xml.get_widget("solvername")
893          _xml.signal_autoconnect(self)          _xml.signal_autoconnect(self)
894    
895            self.solvername.set_text(self.sim.getSolver().getName())
896                    
897          self.paramsview = _xml.get_widget("paramsview")          self.paramsview = _xml.get_widget("paramsview")
898          self.otank = {}          self.otank = {}
899          self.paramstore = gtk.TreeStore(str,str,str,bool,str)          self.paramstore = gtk.TreeStore(str,str,str,bool,str,int)
900          self.paramsview.set_model(self.paramstore)          self.paramsview.set_model(self.paramstore)
901    
902          # name column          # name column
903          _renderer0 = gtk.CellRendererText()          _renderer0 = gtk.CellRendererText()
904          _col0 = gtk.TreeViewColumn("Name", _renderer0, text=0, background=4)          _col0 = gtk.TreeViewColumn("Name", _renderer0, text=0, background=4, weight=5)
905          self.paramsview.append_column(_col0)          self.paramsview.append_column(_col0)
906    
907          # value column: 'editable' set by column 3 of the model data.          # value column: 'editable' set by column 3 of the model data.
# Line 909  class SolverParametersWindow: Line 917  class SolverParametersWindow:
917    
918          self.populate()          self.populate()
919    
920            self.paramsview.expand_all()    
921    
922        #def on_paramswin_key_press_event(self,widget,event):
923        #   if event.keyval == ESCAPE_KEY:
924        #       if not gtk.gdk.events_pending():
925        #           self.do_destroy()
926    
927      def on_paramsview_row_activated(self,treeview,path,view_column,*args,**kwargs):      def on_paramsview_row_activated(self,treeview,path,view_column,*args,**kwargs):
928          # get back the object we just clicked          # get back the object we just clicked
929    
930          if not self.otank.has_key(path):          if not self.otank.has_key(path):
             raise RuntimeError("cell_edited_callback: invalid path '%s'" % path)  
931              return              return
932                    
933          _iter,_param = self.otank[path]          _iter,_param = self.otank[path]
# Line 922  class SolverParametersWindow: Line 935  class SolverParametersWindow:
935          if _param.isBool():          if _param.isBool():
936              newvalue = not _param.getBoolValue()              newvalue = not _param.getBoolValue()
937              _param.setBoolValue(newvalue)              _param.setBoolValue(newvalue)
938              self.paramstore.set_value(_iter,1,newvalue)              if newvalue:
939                    self.paramstore.set_value(_iter,1,SOLVERPARAM_BOOL_TRUE)
940                else:
941                    self.paramstore.set_value(_iter,1,SOLVERPARAM_BOOL_FALSE)
942              self.paramstore.set_value(_iter,4, CHANGED_COLOR)              self.paramstore.set_value(_iter,4, CHANGED_COLOR)
943    
944      def on_paramsview_button_press_event(self,widget,event):      def on_paramsview_button_press_event(self,widget,event):
# Line 933  class SolverParametersWindow: Line 949  class SolverParametersWindow:
949              _pathinfo = self.paramsview.get_path_at_pos(_x, _y)              _pathinfo = self.paramsview.get_path_at_pos(_x, _y)
950              if _pathinfo != None:              if _pathinfo != None:
951                  _path, _col, _cellx, _celly = _pathinfo                  _path, _col, _cellx, _celly = _pathinfo
952                    if not self.otank.has_key(_path):
953                        return
954                  _iter, _param = self.otank[_path]                  _iter, _param = self.otank[_path]
955    
956                    # update the description field
957                    self.paramdescription.set_text(_param.getDescription())
958    
959                  if _param.isStr():                  if _param.isStr():
                     print "EDITING STRING..."  
960                      _menu = gtk.Menu();                      _menu = gtk.Menu();
961                      _head = gtk.ImageMenuItem("Options",True)                      _head = gtk.ImageMenuItem("Options",True)
962                      _head.show()                      _head.show()
# Line 949  class SolverParametersWindow: Line 970  class SolverParametersWindow:
970    
971                      _item = None;                      _item = None;
972                      for i in _param.getStrOptions():                      for i in _param.getStrOptions():
                         print i;  
973                          _item = gtk.RadioMenuItem(group=_item, label=i);                          _item = gtk.RadioMenuItem(group=_item, label=i);
974                          if i == _param.getStrValue():                          if i == _param.getStrValue():
975                              _item.set_active(True)                              _item.set_active(True)
# Line 963  class SolverParametersWindow: Line 983  class SolverParametersWindow:
983                      _menu.popup(None, None, None, event.button, _time)                      _menu.popup(None, None, None, event.button, _time)
984    
985      def on_menu_activate(self, menuitem, param, iter, newvalue):      def on_menu_activate(self, menuitem, param, iter, newvalue):
         print "NEW VALUE FOR",param.getLabel(),"IS",newvalue;  
986          if param.getStrValue() != newvalue:          if param.getStrValue() != newvalue:
987              param.setStrValue(newvalue)              param.setStrValue(newvalue)
988              self.paramstore.set_value(iter, 1, newvalue)              self.paramstore.set_value(iter, 1, newvalue)
989              self.paramstore.set_value(iter, 4, CHANGED_COLOR)              self.paramstore.set_value(iter, 4, CHANGED_COLOR)
990          else:          else:
991              print "NOT CHANGED"              print "NOT CHANGED"
992                
993        def on_paramsview_cursor_changed(self, *args, **kwargs):
994            _path, _col = self.paramsview.get_cursor()
995            if not self.otank.has_key(_path):
996                self.paramdescription.set_text("")
997                return
998            _iter, _param = self.otank[_path]
999            self.paramdescription.set_text(_param.getDescription())
1000            #self.paramsview.set_cursor(_path,self.paramsview.get_column(1));      
1001    
1002      def on_paramsview_edited(self, renderer, path, newtext, **kwargs):      def on_paramsview_edited(self, renderer, path, newtext, **kwargs):
1003          # get back the Instance object we just edited (having to use this seems like a bug)          # get back the Instance object we just edited (having to use this seems like a bug)
# Line 981  class SolverParametersWindow: Line 1008  class SolverParametersWindow:
1008              return              return
1009                    
1010          _iter,_param = self.otank[path]          _iter,_param = self.otank[path]
         print "NEW VALUE OF ",_param.getLabel(),"=",newtext  
1011          # you can only edit real, int, str:          # you can only edit real, int, str:
1012    
1013          _changed = False          _changed = False
# Line 1018  class SolverParametersWindow: Line 1044  class SolverParametersWindow:
1044          if _changed:          if _changed:
1045              self.paramstore.set_value(_iter, 1, newvalue)              self.paramstore.set_value(_iter, 1, newvalue)
1046              self.paramstore.set_value(_iter, 4, CHANGED_COLOR)                        self.paramstore.set_value(_iter, 4, CHANGED_COLOR)          
             print "SET OK"  
1047          else:          else:
1048              print "NO CHANGE"              print "NO CHANGE"
1049            
1050    
1051      def create_row_data(self,p):      def create_row_data(self,p):
1052          _row = [p.getLabel()];          _row = [p.getLabel()];
# Line 1028  class SolverParametersWindow: Line 1054  class SolverParametersWindow:
1054              _row.extend([p.getStrValue(), str(len(p.getStrOptions()))+" options", False]);              _row.extend([p.getStrValue(), str(len(p.getStrOptions()))+" options", False]);
1055          elif p.isBool():          elif p.isBool():
1056              if p.getBoolValue():              if p.getBoolValue():
1057                  _val = 'True'                  _val = SOLVERPARAM_BOOL_TRUE
1058              else:              else:
1059                  _val = 'False'                  _val = SOLVERPARAM_BOOL_FALSE
1060              _row.extend([_val,"",False])              _row.extend([_val,"",False])
1061          elif p.isReal():          elif p.isReal():
1062              if p.getRealLowerBound()==0 and p.getRealUpperBound():              if not p.isBounded():
1063                  _row.extend([str(p.getRealValue()), "",True])                  _row.extend([str(p.getRealValue()), "",True])
1064              else:              else:
1065                  _row.extend([str(p.getRealValue()), "[ "+str(p.getRealLowerBound())+", "+str(p.getRealUpperBound())+" ]",True])                  _row.extend([str(p.getRealValue()), "[ "+str(p.getRealLowerBound())+", "+str(p.getRealUpperBound())+" ]",True])
1066          elif p.isInt():          elif p.isInt():
1067              if p.getIntLowerBound()==0 and p.getIntUpperBound():              if not p.isBounded():
1068                  _row.extend([str(p.getIntValue()), "", True])                  _row.extend([str(p.getIntValue()), "", True])
1069              else:              else:
1070                  _row.extend([str(p.getIntValue()), "[ "+str(p.getIntLowerBound())+", "+str(p.getIntLowerBound())+" ]", True])                  _row.extend([str(p.getIntValue()), "[ "+str(p.getIntLowerBound())+", "+str(p.getIntLowerBound())+" ]", True])
# Line 1046  class SolverParametersWindow: Line 1072  class SolverParametersWindow:
1072          else:          else:
1073              raise RuntimeError("invalid type")              raise RuntimeError("invalid type")
1074    
1075          _row.append("white")          _row.extend(["white",pango.WEIGHT_NORMAL])
1076          return _row;          return _row;
1077                    
1078      def populate(self):      def populate(self):
1079          # Fill the paramstore with data          # Fill the paramstore with data
1080                    
1081            data = {}
1082          for i in self.params:          for i in self.params:
1083              _piter = self.paramstore.append( None, self.create_row_data(i) )              if not data.has_key(i.getPage()):
1084                    data[i.getPage()] = {}
1085              _path = self.paramstore.get_path(_piter)              data[i.getPage()][i.getNumber()] = i;
1086              self.otank[ _path ] = (_piter, i)  
1087            _pagenum = 1;
1088            for _page in sorted(data.keys()):
1089                if len(data[_page].keys()):
1090                    _pageiter = self.paramstore.append( None, ["Page "+str(_pagenum), "", "", False, "white", pango.WEIGHT_BOLD])
1091                    for _number in sorted(data[_page].keys()):
1092                        _param = data[_page][_number]
1093                        _piter = self.paramstore.append( _pageiter, self.create_row_data(_param) )
1094                        _path = self.paramstore.get_path(_piter)
1095                        self.otank[ _path ] = (_piter, _param)
1096                    _pagenum = _pagenum + 1
1097    
1098      def show(self):      def show(self):
1099          self.window.show()          self.window.show()
1100            
1101      def on_paramscancel_activate(self,*args,**kwargs):      def on_paramscancel_clicked(self,*args,**kwargs):
1102          self.do_destroy()          self.do_destroy()
1103    
1104      def on_paramsapply_activate(self,*args,**kwargs):      def on_paramsapply_clicked(self,*args,**kwargs):
1105          self.sim.setSolverParameters(self.params);          self.sim.setSolverParameters(self.params);
1106          self.do_destroy()          self.do_destroy()
1107    
# Line 1072  class SolverParametersWindow: Line 1109  class SolverParametersWindow:
1109          self.do_destroy()          self.do_destroy()
1110    
1111      def do_destroy(self):      def do_destroy(self):
         print "DESTROY PARAMS WIN"  
1112          self.window.hide()          self.window.hide()
1113          del(self.window)          del(self.window)
1114          del(self.params)          del(self.params)

Legend:
Removed from v.226  
changed lines
  Added in v.227

john.pye@anu.edu.au
ViewVC Help
Powered by ViewVC 1.1.22