diff --git a/pyfpdb/GuiStove.py b/pyfpdb/GuiStove.py
new file mode 100644
index 00000000..1ee825e2
--- /dev/null
+++ b/pyfpdb/GuiStove.py
@@ -0,0 +1,205 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+#Copyright 2008-2010 Steffen Schaumburg
+#This program is free software: you can redistribute it and/or modify
+#it under the terms of the GNU Affero General Public License as published by
+#the Free Software Foundation, version 3 of the License.
+#
+#This program is distributed in the hope that it will be useful,
+#but WITHOUT ANY WARRANTY; without even the implied warranty of
+#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+#GNU General Public License for more details.
+#
+#You should have received a copy of the GNU Affero General Public License
+#along with this program. If not, see .
+#In the "official" distribution you can find the license in agpl-3.0.txt.
+
+import L10n
+_ = L10n.get_translation()
+
+import pygtk
+pygtk.require('2.0')
+import gtk
+import os
+import sys
+
+import Charset
+
+DEBUG = False
+
+class GuiStove():
+
+ def __init__(self, config, parent, debug=True):
+ """Constructor for GraphViewer"""
+ self.conf = config
+ self.parent = parent
+
+ self.mainHBox = gtk.HBox(False, 0)
+
+ # hierarchy: self.mainHBox / self.notebook
+
+ self.notebook = gtk.Notebook()
+ self.notebook.set_tab_pos(gtk.POS_TOP)
+ self.notebook.set_show_tabs(True)
+ self.notebook.set_show_border(True)
+
+ self.createFlopTab()
+ #self.createStudTab()
+ #self.createDrawTab()
+
+
+ self.mainHBox.add(self.notebook)
+
+ self.mainHBox.show_all()
+
+ if DEBUG == False:
+ warning_string = """
+Stove is a GUI mockup of a EV calculation page, and completely non functional.
+
+Unless you are interested in developing this feature, please ignore this page.
+
+If you are interested in developing the code further see GuiStove.py and Stove.py
+
+Thankyou
+"""
+ self.warning_box(warning_string)
+
+
+ def warning_box(self, str, diatitle=_("FPDB WARNING")):
+ diaWarning = gtk.Dialog(title=diatitle, parent=self.parent, flags=gtk.DIALOG_DESTROY_WITH_PARENT, buttons=(gtk.STOCK_OK,gtk.RESPONSE_OK))
+
+ label = gtk.Label(str)
+ diaWarning.vbox.add(label)
+ label.show()
+
+ response = diaWarning.run()
+ diaWarning.destroy()
+ return response
+
+
+ def get_active_text(combobox):
+ model = combobox.get_model()
+ active = combobox.get_active()
+ if active < 0:
+ return None
+ return model[active][0]
+
+ def create_combo_box(self, strings):
+ combobox = gtk.combo_box_new_text()
+ for label in strings:
+ combobox.append_text(label)
+ combobox.set_active(0)
+ return combobox
+
+
+ def createFlopTab(self):
+ # hierarchy: hbox / ddbox / ddhbox / Label + flop_games_cb | label + players_cb
+ # / gamehbox / in_frame / table /
+ # / out_frame
+
+ tab_title = "Flop"
+ label = gtk.Label(tab_title)
+
+ ddbox = gtk.VBox(False, 0)
+ self.notebook.append_page(ddbox, label)
+
+ ddhbox = gtk.HBox(False, 0)
+ gamehbox = gtk.HBox(False, 0)
+
+ ddbox.add(ddhbox)
+ ddbox.add(gamehbox)
+
+ # Combo boxes in the top row
+
+ games = [ "Holdem", "Omaha", "Omaha 8", ]
+ players = [ "2", "3", "4", "5", "6", "7", "8", "9", "10" ]
+ flop_games_cb = self.create_combo_box(games)
+ players_cb = self.create_combo_box(players)
+
+ label = gtk.Label("Gametype:")
+ ddhbox.add(label)
+ ddhbox.add(flop_games_cb)
+ label = gtk.Label("Players:")
+ ddhbox.add(label)
+ ddhbox.add(players_cb)
+
+ # Frames for Stove input and output
+
+ in_frame = gtk.Frame("Input:")
+ out_frame = gtk.Frame("Output:")
+
+ gamehbox.add(in_frame)
+ gamehbox.add(out_frame)
+
+ outstring = """
+No board given. Using Monte-Carlo simulation...
+Enumerated 2053443 possible plays.
+Your hand: (Ad Ac)
+Against the range: {
+ AhAd, AhAs, AdAs, KhKd, KhKs,
+ KhKc, KdKs, KdKc, KsKc, QhQd,
+ QhQs, QhQc, QdQs, QdQc, QsQc,
+ JhJd, JhJs, JhJc, JdJs, JdJc,
+ JsJc
+ }
+
+ Win Lose Tie
+ 69.91% 15.83% 14.26%
+
+"""
+ label = gtk.Label(outstring)
+ out_frame.add(label)
+
+ # Input Frame
+ table = gtk.Table(4, 4, True)
+ label = gtk.Label("Board:")
+ board = gtk.Entry()
+ #board.connect("changed", self._some_function, arg)
+
+ btn1 = gtk.Button()
+ btn1.set_image(gtk.image_new_from_stock(gtk.STOCK_INDEX, gtk.ICON_SIZE_BUTTON))
+ #btn.connect('clicked', self._some_function, arg)
+ table.attach(label, 0, 1, 0, 1, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK)
+ table.attach(board, 1, 2, 0, 1, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK)
+ table.attach(btn1, 2, 3, 0, 1, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK)
+
+
+ label = gtk.Label("Player1:")
+ board = gtk.Entry()
+ #board.connect("changed", self._some_function, arg)
+ btn2 = gtk.Button()
+ btn2.set_image(gtk.image_new_from_stock(gtk.STOCK_INDEX, gtk.ICON_SIZE_BUTTON))
+ #btn.connect('clicked', self._some_function, arg)
+ btn3 = gtk.Button()
+ btn3.set_image(gtk.image_new_from_stock(gtk.STOCK_INDEX, gtk.ICON_SIZE_BUTTON))
+ #btn.connect('clicked', self._some_function, arg)
+ table.attach(label, 0, 1, 1, 2, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK)
+ table.attach(board, 1, 2, 1, 2, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK)
+ table.attach(btn2, 2, 3, 1, 2, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK)
+ table.attach(btn3, 3, 4, 1, 2, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK)
+
+
+ label = gtk.Label("Player2:")
+ board = gtk.Entry()
+ #board.connect("changed", self._some_function, arg)
+ btn4 = gtk.Button()
+ btn4.set_image(gtk.image_new_from_stock(gtk.STOCK_INDEX, gtk.ICON_SIZE_BUTTON))
+ #btn.connect('clicked', self._some_function, arg)
+ btn5 = gtk.Button()
+ btn5.set_image(gtk.image_new_from_stock(gtk.STOCK_INDEX, gtk.ICON_SIZE_BUTTON))
+ #btn.connect('clicked', self._some_function, arg)
+ table.attach(label, 0, 1, 2, 3, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK)
+ table.attach(board, 1, 2, 2, 3, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK)
+ table.attach(btn4, 2, 3, 2, 3, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK)
+ table.attach(btn5, 3, 4, 2, 3, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK)
+
+ #table.attach(label, i, i+1, j, j+1,)
+ in_frame.add(table)
+
+
+
+ def get_vbox(self):
+ """returns the vbox of this thread"""
+ return self.mainHBox
+ #end def get_vbox
diff --git a/pyfpdb/fpdb.pyw b/pyfpdb/fpdb.pyw
index 612f007f..3660dd57 100755
--- a/pyfpdb/fpdb.pyw
+++ b/pyfpdb/fpdb.pyw
@@ -116,6 +116,7 @@ import GuiAutoImport
import GuiGraphViewer
import GuiTourneyGraphViewer
import GuiSessionViewer
+import GuiStove
import SQL
import Database
import Configuration
@@ -778,6 +779,7 @@ class fpdb:
+