/[ascend]/trunk/pygtk/diagnose.py
ViewVC logotype

Diff of /trunk/pygtk/diagnose.py

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

revision 2074 by arijit, Fri Sep 4 06:50:08 2009 UTC revision 2684 by sreenatha, Tue Feb 26 01:56:46 2013 UTC
# Line 1  Line 1 
1  import gtk  import gtk
 import gtk.glade  
2  import ascpy  import ascpy
3  from itertools import groupby  from itertools import groupby
4  from operator import itemgetter  from operator import itemgetter
# Line 8  import re Line 7  import re
7    
8  import config  import config
9  from infodialog import *  from infodialog import *
10    from preferences import *
11    
12  ZOOM_RE = re.compile(r"([0-9]+)\s*%?")  ZOOM_RE = re.compile(r"([0-9]+)\s*%?")
13  MAX_ZOOM_SIZE = float(2000) # float  MAX_ZOOM_SIZE = float(2000) # float
# Line 17  AT_BOUND_TOL = 0.0001; Line 17  AT_BOUND_TOL = 0.0001;
17  class DiagnoseWindow:  class DiagnoseWindow:
18      def __init__(self,browser,block=0):      def __init__(self,browser,block=0):
19          self.browser=browser          self.browser=browser
20          _xml = gtk.glade.XML(browser.glade_file,"diagnosewin")          self.browser.builder.add_objects_from_file(self.browser.glade_file, ["diagnosewin"])
21          _xml.signal_autoconnect(self)            self.browser.builder.connect_signals(self)
22            self.window = self.browser.builder.get_object("diagnosewin")
23          self.window = _xml.get_widget("diagnosewin")          self.window.grab_focus()
24          self.window.set_transient_for(self.browser.window)          self.window.set_transient_for(self.browser.window)
25    
26            self.prefs = Preferences()
27    
28          try:          try:
29              _icon = gtk.Image()              _icon = gtk.Image()
30              _iconpath = browser.assets_dir+'diagnose'+config.ICON_EXTENSION              _iconpath = browser.assets_dir+'diagnose'+config.ICON_EXTENSION
# Line 33  class DiagnoseWindow: Line 35  class DiagnoseWindow:
35          except:          except:
36              pass              pass
37                    
38          self.imagescroll = _xml.get_widget("imagescroll")          self.blockstatus = self.browser.builder.get_object("blockstatustext")
39          self.image = _xml.get_widget("image")  
40          self.blockentry = _xml.get_widget("blockentry")          self.imagescroll = self.browser.builder.get_object("imagescroll")
41          self.zoomentry = _xml.get_widget("zoomentry")          self.image = self.browser.builder.get_object("image")
42            self.blockentry = self.browser.builder.get_object("blockentry")
43            self.zoomentry = self.browser.builder.get_object("zoomentry")
44    
45          self.var = None; self.rel = None          self.var = None; self.rel = None
46          self.varname = _xml.get_widget("varname1")          self.varname = self.browser.builder.get_object("varname1")
47          self.varval = _xml.get_widget("varval")          self.varval = self.browser.builder.get_object("varval")
48          self.varinfobutton = _xml.get_widget("varinfobutton")          self.varinfobutton = self.browser.builder.get_object("varinfobutton")
49          self.relname = _xml.get_widget("relname1")          self.relname = self.browser.builder.get_object("relname1")
50          self.relresid = _xml.get_widget("relresid")          self.relresid = self.browser.builder.get_object("relresid")
51          self.relinfobutton = _xml.get_widget("relinfobutton")          self.relinfobutton = self.browser.builder.get_object("relinfobutton")
52            self.preferred_units_check = self.browser.builder.get_object("preferred_units_check")
53            if self.prefs.getBoolPref("Diagnose","show_preferred_units")==True:
54                self.preferred_units_check.set_active(True)
55            else:
56                self.preferred_units_check.set_active(False)
57    
58          self.varview = _xml.get_widget("varview")          self.varview = self.browser.builder.get_object("varview")
59          self.varbuf = gtk.TextBuffer()          self.varbuf = gtk.TextBuffer()
60          self.varview.set_buffer(self.varbuf)          self.varview.set_buffer(self.varbuf)
61          self.varcollapsed = _xml.get_widget("varcollapsed")          self.varcollapsed = self.browser.builder.get_object("varcollapsed")
62          self.relview = _xml.get_widget("relview")            self.relview = self.browser.builder.get_object("relview")  
63          self.relcollapsed = _xml.get_widget("relcollapsed")          self.relcollapsed = self.browser.builder.get_object("relcollapsed")
64          self.relvalues = _xml.get_widget("relvalues")          self.relvalues = self.browser.builder.get_object("relvalues")
65          self.rellabels = _xml.get_widget("rellabels")          self.rellabels = self.browser.builder.get_object("rellabels")
66          self.relrels = _xml.get_widget("relrels")          self.relrels = self.browser.builder.get_object("relrels")
67          self.relresids = _xml.get_widget("relresids")          self.relresids = self.browser.builder.get_object("relresids")
68          self.relbuf = gtk.TextBuffer()          self.relbuf = gtk.TextBuffer()
69          self.relview.set_buffer(self.relbuf)          self.relview.set_buffer(self.relbuf)
   
70          self.im = None          self.im = None
71          self.block = 0          self.block = 0
72          self.apply_prefs()          self.apply_prefs()
# Line 189  class DiagnoseWindow: Line 197  class DiagnoseWindow:
197    
198          self.fill_var_names()          self.fill_var_names()
199          self.fill_rel_names()          self.fill_rel_names()
200            self.fill_block_status()
201            
202          self.fill_selection_info()          self.fill_selection_info()
203    
# Line 196  class DiagnoseWindow: Line 205  class DiagnoseWindow:
205    
206      def fill_selection_info(self):      def fill_selection_info(self):
207          if self.var:          if self.var:
208              #self.varname.set_text(self.var.getName())              self.varname.set_text(self.var.getName())
209              self.varval.set_text(str(self.var.getValue()))              default_units = self.var.getInstance().getType().getDimensions().getDefaultUnits().getName().toString()
210                pref_units = self.var.getInstance().getType().getPreferredUnits()
211                if pref_units and self.prefs.getBoolPref("Diagnose","show_preferred_units",True):
212                    varval = str(self.var.getValue())+" "+pref_units.getName().toString()
213                else:
214                    if default_units=="?":
215                        varval = str(self.var.getValue())
216                    else:
217                        varval = str(self.var.getValue())+" "+default_units
218                self.varval.set_text(varval)
219              self.varinfobutton.set_sensitive(True)              self.varinfobutton.set_sensitive(True)
220          else:          else:
221              self.varname.set_text("")              self.varname.set_text("")
# Line 246  class DiagnoseWindow: Line 264  class DiagnoseWindow:
264                    
265          self.image.set_from_pixbuf(pb1)          self.image.set_from_pixbuf(pb1)
266    
267        def fill_block_status(self):
268            print "FILL BLOCK STATUS"
269            s = self.im.getBlockStatus(self.block)
270            ss = "Failed"
271            if s == ascpy.IM_CONVERGED:
272                ss = "Converged"
273            elif s == ascpy.IM_NOT_YET_ATTEMPTED:
274                ss = "Not attempted yet"
275            elif s == ascpy.IM_OVER_TIME:
276                ss += " (time limit)"
277            elif s == ascpy.IM_OVER_ITER:
278                ss += " (iter limit)"
279            self.blockstatus.set_text(ss);
280            
281    
282      def fill_var_names(self):      def fill_var_names(self):
283          print "FILL VAR NAMES"          print "FILL VAR NAMES"
284    
# Line 318  class DiagnoseWindow: Line 351  class DiagnoseWindow:
351      def on_diagnosewin_close(self,*args):      def on_diagnosewin_close(self,*args):
352          self.window.response(gtk.RESPONSE_CLOSE);          self.window.response(gtk.RESPONSE_CLOSE);
353    
354        def on_preferred_units_toggle(self,widget):
355            _v = widget.get_active()
356            self.prefs.setBoolPref("Diagnose","show_preferred_units",_v)
357            self.fill_selection_info()
358    
359      # incidence data view      # incidence data view
360    
361      def on_varcollapsed_toggled(self,*args):      def on_varcollapsed_toggled(self,*args):
# Line 337  class DiagnoseWindow: Line 375  class DiagnoseWindow:
375      def on_varinfobutton_clicked(self,*args):      def on_varinfobutton_clicked(self,*args):
376          title = "Variable '%s'" % self.var          title = "Variable '%s'" % self.var
377          text = "%s\n%s\n" % (title,"(from the solver's view)")          text = "%s\n%s\n" % (title,"(from the solver's view)")
378            units = " "
379            default_units = self.var.getInstance().getType().getDimensions().getDefaultUnits().getName().toString()
380            pref_units = self.var.getInstance().getType().getPreferredUnits()
381            if pref_units and self.prefs.getBoolPref("Diagnose","show_preferred_units",True):
382                units += pref_units.getName().toString()
383            else:
384                if default_units!="?":
385                    units += default_units
386          _rows = {          _rows = {
387              "Value": self.var.getValue()              "Value": self.var.getValue()
388              ,"Nominal": self.var.getNominal()              ,"Nominal": self.var.getNominal()
# Line 345  class DiagnoseWindow: Line 390  class DiagnoseWindow:
390              ,"Upper bound": self.var.getUpperBound()              ,"Upper bound": self.var.getUpperBound()
391          }          }
392          for k,v in _rows.iteritems():          for k,v in _rows.iteritems():
393              text += "\n  %s\t%s" % (k,value_human(v))              text += "\n  %s\t%s" % (k,value_human(v)+units)
394                    
395          text += "\n\nIncident with %d relations:" % self.var.getNumIncidentRelations()          text += "\n\nIncident with %d relations:" % self.var.getNumIncidentRelations()
396          for r in self.var.getIncidentRelations():          for r in self.var.getIncidentRelations():
# Line 364  class DiagnoseWindow: Line 409  class DiagnoseWindow:
409    
410          text += "\n\nIncident with %d variables:" % self.rel.getNumIncidentVariables()          text += "\n\nIncident with %d variables:" % self.rel.getNumIncidentVariables()
411          for v in self.rel.getIncidentVariables():          for v in self.rel.getIncidentVariables():
412              text += "\n  %s\t= %s" % ( v.getName(),value_human(v.getValue()) )              units = " "
413                default_units = v.getInstance().getType().getDimensions().getDefaultUnits().getName().toString()
414                pref_units = v.getInstance().getType().getPreferredUnits()
415                if pref_units and self.prefs.getBoolPref("Diagnose","show_preferred_units",True):
416                    units += pref_units.getName().toString()
417                else:
418                    if default_units != "?" :
419                        units += default_units
420                text += "\n  %s\t= %s" % ( v.getName(),value_human(v.getValue())+units )
421    
422          _dialog = InfoDialog(self.browser,self.window,text,title,tabs=(150,300))          _dialog = InfoDialog(self.browser,self.window,text,title,tabs=(150,300))
423          _dialog.run()          _dialog.run()
# Line 384  class DiagnoseWindow: Line 437  class DiagnoseWindow:
437              rl,cl,rh,ch = self.im.getBlockLocation(b)              rl,cl,rh,ch = self.im.getBlockLocation(b)
438              if rh-rl > 0 or ch-cl>0:              if rh-rl > 0 or ch-cl>0:
439                  self.set_block(b)                  self.set_block(b)
440                    return
441              b = b - 1              b = b - 1
442          print "NO PRECEDING 'BIG' BLOCKS"          print "NO PRECEDING 'BIG' BLOCKS"
443                    
# Line 394  class DiagnoseWindow: Line 448  class DiagnoseWindow:
448              rl,cl,rh,ch = self.im.getBlockLocation(b)              rl,cl,rh,ch = self.im.getBlockLocation(b)
449              if rh-rl > 0 or ch-cl>0:              if rh-rl > 0 or ch-cl>0:
450                  self.set_block(b)                  self.set_block(b)
451                    return
452              b = b + 1              b = b + 1
453          print "NO FOLLOWING 'BIG' BLOCKS"          print "NO FOLLOWING 'BIG' BLOCKS"
454            

Legend:
Removed from v.2074  
changed lines
  Added in v.2684

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