diff --git a/DataView/FEMConditionSetup.ui b/DataView/FEMConditionSetup.ui
index 59b4ac41cd1a7aedb05d3e48ab9a1abff4f03855..fbc20c328bdcf93c318c05da85cd7129c829d6ad 100644
--- a/DataView/FEMConditionSetup.ui
+++ b/DataView/FEMConditionSetup.ui
@@ -54,11 +54,6 @@
        <string>Constant (Direchlet)</string>
       </property>
      </item>
-     <item>
-      <property name="text">
-       <string>Constant (Neumann)</string>
-      </property>
-     </item>
     </widget>
    </item>
    <item row="3" column="0">
diff --git a/DataView/FEMConditionSetupDialog.cpp b/DataView/FEMConditionSetupDialog.cpp
index 6da5e2b4ca423db7d441cf4906ea8f1fa4fb4b58..7bcb2b35988f5cd0998dbd78ee4a95bfd2741830 100644
--- a/DataView/FEMConditionSetupDialog.cpp
+++ b/DataView/FEMConditionSetupDialog.cpp
@@ -51,7 +51,7 @@ void FEMConditionSetupDialog::setupDialog()
 	if (_cond.getGeoType() == GEOLIB::POLYLINE)
 	{
 		this->disTypeBox->addItem("Linear (Direchlet)");
-		this->disTypeBox->addItem("Linear (Neumann)");
+		//this->disTypeBox->addItem("Linear (Neumann)");
 	}
 	_first_value_validator = new StrictDoubleValidator(-1e+10, 1e+10, 5);
 	_second_value_validator = new StrictDoubleValidator(-1e+10, 1e+10, 5);
@@ -77,22 +77,20 @@ void FEMConditionSetupDialog::accept()
 	_cond.setProcessType(static_cast<FiniteElement::ProcessType>(this->processTypeBox->currentIndex() + 1));
 	_cond.setProcessPrimaryVariable(static_cast<FiniteElement::PrimaryVariable>(this->pvTypeBox->currentIndex() + 1));
 
-	switch(this->disTypeBox->currentIndex())
+	QString dis_type_text = this->disTypeBox->currentText();
+	if (condTypeBox->currentIndex()>1)
 	{
-		case 0:
-			_cond.setProcessDistributionType(FiniteElement::CONSTANT);
-			break;
-		case 1:
+		if (this->disTypeBox->currentIndex()>0) 
+			_cond.setProcessDistributionType(FiniteElement::LINEAR_NEUMANN);
+		else 
 			_cond.setProcessDistributionType(FiniteElement::CONSTANT_NEUMANN);
-			break;
-		case 2:
+	}
+	else
+	{
+		if (this->disTypeBox->currentIndex()>0) 
 			_cond.setProcessDistributionType(FiniteElement::LINEAR);
-			break;
-		case 3:
-			_cond.setProcessDistributionType(FiniteElement::LINEAR_NEUMANN);
-			break;
-		default:
-			_cond.setProcessDistributionType(FiniteElement::INVALID_DIS_TYPE);
+		else 
+			_cond.setProcessDistributionType(FiniteElement::CONSTANT);
 	}
 
 	std::vector<double> dis_values;
@@ -123,18 +121,34 @@ void FEMConditionSetupDialog::reject()
 	this->done(QDialog::Rejected);
 }
 
-/*
+
 void FEMConditionSetupDialog::on_condTypeBox_currentIndexChanged(int index)
 {
-	if (index==1)
-		this->geoNameBox->addItem("Domain");
+	//if (index==1)
+	//	this->geoNameBox->addItem("Domain");
 	// remove "Domain" if IC is unselected
+	if (index>1) // source terms selected
+	{
+		while (this->disTypeBox->count()>0)
+			this->disTypeBox->removeItem(0);
+		this->disTypeBox->addItem("Constant (Neumann)");
+		if (_cond.getGeoType() == GEOLIB::POLYLINE)
+			this->disTypeBox->addItem("Linear (Neumann)");
+	}
+	else
+	{
+		while (this->disTypeBox->count()>0)
+			this->disTypeBox->removeItem(0);
+		this->disTypeBox->addItem("Constant (Direchlet)");
+		if (_cond.getGeoType() == GEOLIB::POLYLINE)
+			this->disTypeBox->addItem("Linear (Direchlet)");
+	}
 }
-*/
+
 
 void FEMConditionSetupDialog::on_disTypeBox_currentIndexChanged(int index)
 {
-	if (index>1) // linear
+	if (index>0) // linear
 	{
 		if (!_secondValueEdit)
 		{
diff --git a/DataView/FEMConditionSetupDialog.h b/DataView/FEMConditionSetupDialog.h
index 921fd2f5559c0226349fd3a3e1d0039142317be3..ea9c66c58b10d906bd46677a0b851ed1dc345a22 100644
--- a/DataView/FEMConditionSetupDialog.h
+++ b/DataView/FEMConditionSetupDialog.h
@@ -53,7 +53,7 @@ private slots:
 	/// Instructions if the Cancel-Button has been pressed.
 	void reject();
 
-	//void on_condTypeBox_currentIndexChanged(int index);
+	void on_condTypeBox_currentIndexChanged(int index);
 
 	void on_disTypeBox_currentIndexChanged(int index);