|
From: <lu...@us...> - 2003-12-23 02:45:57
|
Update of /cvsroot/neelix/neelix/view
In directory sc8-pr-cvs1:/tmp/cvs-serv5237/view
Modified Files:
fox.rb
Log Message:
Adding/editing ingredients works (rudimentary). Edit an ingredient by double
clicking on it.
Index: fox.rb
===================================================================
RCS file: /cvsroot/neelix/neelix/view/fox.rb,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- fox.rb 22 Dec 2003 23:44:48 -0000 1.14
+++ fox.rb 23 Dec 2003 02:45:53 -0000 1.15
@@ -74,7 +74,7 @@
@ingredientList = FXList.new(ingredientFrame,5,nil,0,LAYOUT_FILL_X|LIST_SINGLESELECT)
frame = FXVerticalFrame.new(frame)
- FXButton.new(frame,"Add Ingredient")
+ @add = FXButton.new(frame,"Add Ingredient")
@up = FXButton.new(frame,"Move Up")
@delete = FXButton.new(frame,"Delete")
@up.enabled = false
@@ -119,6 +119,81 @@
@ingredientList.connect(SEL_COMMAND) do |snd,sel,data|
@ingredientList.selectItem(data)
+ end
+
+ @ingredientList.connect(SEL_DOUBLECLICKED) do |sender,sel,data|
+ ingredient = @recipe.ingredients.sort[data]
+
+ ingredientDialog = FXDialogBox.new(self,"Edit Ingredient")
+
+ FXLabel.new(ingredientDialog,"Quantity")
+ quantity = FXTextField.new(ingredientDialog, 80, nil, 0, LAYOUT_FILL_X|TEXTFIELD_NORMAL)
+ quantity.text = ingredient.quantity.to_s
+
+ FXLabel.new(ingredientDialog,"Measure")
+ measures = FXListBox.new(ingredientDialog, 5, nil, 0, FRAME_SUNKEN|FRAME_THICK|LISTBOX_NORMAL|LAYOUT_FILL_X)
+ $replicator.measure_list.each do |measure|
+ measures << measure.name
+ measures.currentItem = measures.numItems - 1 if measure === ingredient.measure
+ end
+
+ FXLabel.new(ingredientDialog,"Food")
+ food = FXTextField.new(ingredientDialog, 80, nil, 0, LAYOUT_FILL_X|TEXTFIELD_NORMAL)
+ food.text = ingredient.food.name
+
+ FXLabel.new(ingredientDialog,"Modifier")
+ modifier = FXTextField.new(ingredientDialog, 80, nil, 0, LAYOUT_FILL_X|TEXTFIELD_NORMAL)
+ modifier.text = ingredient.modifier
+
+ FXButton.new(ingredientDialog,"Accept",nil,ingredientDialog,FXDialogBox::ID_ACCEPT)
+ FXButton.new(ingredientDialog,"Cancel",nil,ingredientDialog,FXDialogBox::ID_CANCEL)
+ if ingredientDialog.execute == 1 then
+ ingredient.quantity = quantity.text
+ ingredient.measure = $replicator.measure_list[measures.currentItem]
+ ingredient.modifier = (modifier.text == '' ? nil : modifier.text)
+
+ new_food = food.text
+ food = $replicator.find_food(new_food)
+ food = $replicator.create('food', {'name' => new_food}) if food.nil?
+ ingredient.food = food
+ end
+ end
+
+ @add.connect(SEL_COMMAND) do |sender,sel,data|
+ ingredientDialog = FXDialogBox.new(self,"Add Ingredient")
+
+ FXLabel.new(ingredientDialog,"Quantity")
+ quantity = FXTextField.new(ingredientDialog, 80, nil, 0, LAYOUT_FILL_X|TEXTFIELD_NORMAL)
+ quantity.text = '0.0'
+
+ FXLabel.new(ingredientDialog,"Measure")
+ measures = FXListBox.new(ingredientDialog, 5, nil, 0, FRAME_SUNKEN|FRAME_THICK|LISTBOX_NORMAL|LAYOUT_FILL_X)
+ $replicator.measure_list.each { |measure| measures << measure.name }
+
+ FXLabel.new(ingredientDialog,"Food")
+ food = FXTextField.new(ingredientDialog, 80, nil, 0, LAYOUT_FILL_X|TEXTFIELD_NORMAL)
+
+ FXLabel.new(ingredientDialog,"Modifier")
+ modifier = FXTextField.new(ingredientDialog, 80, nil, 0, LAYOUT_FILL_X|TEXTFIELD_NORMAL)
+
+ FXButton.new(ingredientDialog,"Accept",nil,ingredientDialog,FXDialogBox::ID_ACCEPT)
+ FXButton.new(ingredientDialog,"Cancel",nil,ingredientDialog,FXDialogBox::ID_CANCEL)
+ if ingredientDialog.execute == 1 then
+ quantity = quantity.text
+ measure = $replicator.measure_list[measures.currentItem]
+ modifier = (modifier.text == '' ? nil : modifier.text)
+
+ new_food = food.text
+ food = $replicator.find_food(new_food)
+ food = $replicator.create('food', {'name' => new_food}) if food.nil?
+
+ Presenter::addIngredient(@recipe, $replicator.create('ingredient',{
+ 'recipe_id' => @recipe.id,
+ 'measure_id' => measure.id,
+ 'quantity' => quantity,
+ 'food_id' => food.id,
+ 'modifier' => modifier}))
+ end
end
@up.connect(SEL_COMMAND) do |sender,sel,data|
|