Index: calculatorview/src/sans/perspectives/calculator/model_editor.py
===================================================================
--- calculatorview/src/sans/perspectives/calculator/model_editor.py	(revision 316e23141b5dbc6d16b566d2c0d4f1093176139c)
+++ calculatorview/src/sans/perspectives/calculator/model_editor.py	(revision 0008f540c023d66c540368b01cd137a0fcdefd36)
@@ -59,5 +59,5 @@
     def __init__(self, parent=None, base=None, id=None, title='', model_list=[], plugin_dir=None):
         """
-        Dialog window popup when selecting 'Easy Custom Sum' on the menu
+        Dialog window popup when selecting 'Easy Custom Sum/Multiply' on the menu
         """
         wx.Dialog.__init__(self, parent=parent, id=id, 
@@ -75,4 +75,5 @@
         self.model2_string = "CylinderModel"
         self._notes = ''
+        self.operator = '+'
         self._msg_box = None
         self.msg_sizer = None
@@ -89,10 +90,10 @@
         self.name_hsizer = wx.BoxSizer(wx.HORIZONTAL)
         #title name [string]
-        name_txt = wx.StaticText(self, -1, 'SumFunction Name : ')  
+        name_txt = wx.StaticText(self, -1, 'Function Name : ')  
         self.name_tcl = wx.TextCtrl(self, -1, size=(PANEL_WIDTH*3/5, -1)) 
         self.name_tcl.Bind(wx.EVT_TEXT_ENTER, self.on_change_name)
         self.name_tcl.SetValue('')
         self.name_tcl.SetFont(self.font)
-        hint_name = "Unique Sum Model Function Name."
+        hint_name = "Unique Sum/Multiply Model Function Name."
         self.name_tcl.SetToolTipString(hint_name)
         self.name_hsizer.AddMany([(name_txt, 0, wx.LEFT|wx.TOP, 10),
@@ -152,5 +153,6 @@
                                      size=(_BOX_WIDTH/2, 25))
         # Intro
-        explanation  = "  custom model = scale_factor * (model1 + model2)\n"
+        explanation  = "  custom model = scale_factor * (model1 %s model2)\n"\
+                            % self.operator
         #explanation  += "  Note: This will overwrite the previous sum model.\n"
         model_string = " Model%s (p%s):"
@@ -231,5 +233,5 @@
         if len(title) > 20:
             s_title = title[0:19] + '...'
-        self._notes = "SumModel function (%s) has been set! \n" % str(s_title)
+        self._notes = "Model function (%s) has been set! \n" % str(s_title)
         self.good_name = True
         self.on_apply(self.fname)
@@ -249,5 +251,5 @@
             self.parent.update_custom_combo()
             msg = self._notes
-            info = 'Infor'
+            info = 'Info'
             color = 'blue'
         except:
@@ -307,5 +309,5 @@
         description = self.desc_tcl.GetValue().lstrip().rstrip()
         if description == '':
-            description = name1 + "+" + name2
+            description = name1 + self.operator + name2
         name = self.name_tcl.GetValue().lstrip().rstrip()
         if name == '':
@@ -324,6 +326,8 @@
             elif line.count("self.description = '%s'"):
                 out_f.write(line % description + "\n")
-            #elif line.count("self.name = '%s'"):
-            #    out_f.write(line % name + "\n")
+            elif line.count("run") and line.count("%s"):
+                out_f.write(line % self.operator)
+            elif line.count("evalDistribution") and line.count("%s"):
+                out_f.write(line % self.operator)
             else:
                 out_f.write(line + "\n")
@@ -854,5 +858,5 @@
 """
 SUM_TEMPLATE = """
-# A sample of an experimental model function for Sum(Pmodel1,Pmodel2)
+# A sample of an experimental model function for Sum/Multiply(Pmodel1,Pmodel2)
 import copy
 from sans.models.pluginmodel import Model1DPlugin
@@ -951,5 +955,5 @@
             p1_name = name1
         name = p1_name
-        name += "+"
+        name += "%s"% (self.operator)
         p2_name = self._get_upper_name(name2)
         if not p2_name:
@@ -1024,5 +1028,5 @@
                 
     def setParam(self, name, value):
-        # set param to p1+p2 model
+        # set param to this (p1, p2) model
         self._setParamHelper(name, value)
         
@@ -1093,10 +1097,10 @@
         self._set_scale_factor()
         return self.params['scale_factor'] * \
-(self.p_model1.run(x) + self.p_model2.run(x))
+(self.p_model1.run(x) %s self.p_model2.run(x))
     
     def runXY(self, x = 0.0):
         self._set_scale_factor()
         return self.params['scale_factor'] * \
-(self.p_model1.runXY(x) + self.p_model2.runXY(x))
+(self.p_model1.runXY(x) %s self.p_model2.runXY(x))
     
     ## Now (May27,10) directly uses the model eval function 
@@ -1105,5 +1109,5 @@
         self._set_scale_factor()
         return self.params['scale_factor'] * \
-(self.p_model1.evalDistribution(x) + \
+(self.p_model1.evalDistribution(x) %s \
 self.p_model2.evalDistribution(x))
 
@@ -1126,6 +1130,6 @@
     def fill_description(self, p_model1, p_model2):
         description = ""
-        description +="This model gives the summation of  %s and %s. "% \
-( p_model1.name, p_model2.name )
+        description += "This model gives the summation or multiplication of"
+        description += "%s and %s. "% ( p_model1.name, p_model2.name )
         self.description += description
           
@@ -1149,5 +1153,5 @@
     #m2.p_model2.setParam("scale", 100)
     #m2.p_model2.setParam("rg", 100)
-    out2 = m2.p_model1.runXY(0.01) + m2.p_model2.runXY(0.01)
+    out2 = m2.p_model1.runXY(0.01) %s m2.p_model2.runXY(0.01)\n
     print out1, " = ", out2
     if out1 == out2:
