function gui1_al(event)

persistent SOLVED

f1=event.parent;

if isequal(event.source,f1.get('leftbc'))
  selectbc(f1,f1.get('leftbc').getSelectedIndex,'l');
elseif isequal(event.source,f1.get('rightbc'))
  selectbc(f1,f1.get('rightbc').getSelectedIndex,'r'); 
elseif isequal(event.source,f1.get('topbc'))
  selectbc(f1,f1.get('topbc').getSelectedIndex,'t'); 
elseif isequal(event.source,f1.get('bottombc'))
  selectbc(f1,f1.get('bottombc').getSelectedIndex,'b'); 
elseif isequal(event.source,f1.get('solvebutton'))
  try
    geommodel(f1);
  catch 
    errordisp
    return
  end
  try
    meshmodel(f1);
  catch 
    errordisp
    return
  end
  try
    solvemodel(f1);
    SOLVED=1;
    drawnow;
  catch 
    errordisp
    return
  end
elseif isequal(event.source,f1.get('defbutton'))
  setdefaults(f1);
  SOLVED=[];
elseif isequal(event.source,f1.get('meshbutton'))
  try
    geommodel(f1);
  catch 
    errordisp
    return
  end
  try
    meshmodel(f1);
  catch 
    errordisp
    return
  end
  SOLVED=[];
  drawnow;
elseif isequal(event.source,f1.get('plotbutton'))
  if isempty(SOLVED)
    try
        geommodel(f1);
    catch 
        errordisp
        return
    end
    try
      meshmodel(f1);
    catch 
      errordisp
      return
    end
    try
      solvemodel(f1);
      SOLVED=1;
      drawnow;
    catch 
      errordisp
      return
    end
  end
  plotmodel(f1);
else
    try
        geommodel(f1);
        SOLVED=[];
    catch 
      errordisp
      return
    end
end

function selectbc(f1,index,field)
if index==1
    f1.get([field,'q']).setEnabled(true);
    f1.get([field,'Tinf']).setEnabled(true);
    f1.get([field,'h']).setEnabled(true);
    f1.get([field,'T']).setEnabled(false);
elseif index==2
    f1.get([field,'q']).setEnabled(false);
    f1.get([field,'Tinf']).setEnabled(false);
    f1.get([field,'h']).setEnabled(false);
    f1.get([field,'T']).setEnabled(true);
elseif index==3
    f1.get([field,'q']).setEnabled(false);
    f1.get([field,'Tinf']).setEnabled(false);
    f1.get([field,'h']).setEnabled(false);
    f1.get([field,'T']).setEnabled(false);
end

function setdefaults(f1)
f1.get('width').setValue('1');
f1.get('height').setValue('0.5');
f1.get('source').setValue('0');
f1.get('cond').setValue('40');
f1.get('meshsize').setSelectedIndex(3);
f1.get('meshorder').setSelectedIndex(2);
f1.get('leftbc').setSelectedIndex(3);
f1.get('rightbc').setSelectedIndex(3);
f1.get('bottombc').setSelectedIndex(3);
f1.get('topbc').setSelectedIndex(3);
f1.get('heightplot').setSelectedIndex(1);
f1.get('plotpos').setSelectedIndex(1);
f1.get('lq').setEnabled(false);
f1.get('rq').setEnabled(false);
f1.get('tq').setEnabled(false);
f1.get('bq').setEnabled(false);
f1.get('lT').setEnabled(false);
f1.get('rT').setEnabled(false);
f1.get('tT').setEnabled(false);
f1.get('bT').setEnabled(false);
f1.get('lTinf').setEnabled(false);
f1.get('rTinf').setEnabled(false);
f1.get('tTinf').setEnabled(false);
f1.get('bTinf').setEnabled(false);
f1.get('lh').setEnabled(false);
f1.get('rh').setEnabled(false);
f1.get('th').setEnabled(false);
f1.get('bh').setEnabled(false);
f1.get('lq').setValue('0');
f1.get('rq').setValue('0');
f1.get('tq').setValue('0');
f1.get('bq').setValue('0');
f1.get('lT').setValue('0');
f1.get('rT').setValue('0');
f1.get('tT').setValue('0');
f1.get('bT').setValue('0');
f1.get('lTinf').setValue('0');
f1.get('rTinf').setValue('0');
f1.get('tTinf').setValue('0');
f1.get('bTinf').setValue('0');
f1.get('lh').setValue('0');
f1.get('rh').setValue('0');
f1.get('th').setValue('0');
f1.get('bh').setValue('0');

function errordisp
errorstr = 'Wrong input.' ;
messagedlg('Error',errorstr);
