| #!/usr/bin/env python |
| # |
| # Copyright (c) 2010 <shadytyrant@gmail.com> |
| # Permission is hereby granted, free of charge, to any person obtaining a copy |
| # of this software and associated documentation files (the "Software"), to deal |
| # in the Software without restriction, including without limitation the rights |
| # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
| # copies of the Software, and to permit persons to whom the Software is |
| # furnished to do so, subject to the following conditions: |
| # |
| # The above copyright notice and this permission notice shall be included in |
| # all copies or substantial portions of the Software. |
| # |
| # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
| # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
| # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
| # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
| # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
| # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| # THE SOFTWARE. |
| |
| import wx |
| from math import * |
| |
| #----- Main Frame ----------------------------------------------------- |
| |
| class PyCalc(wx.Frame): |
| |
| def __init__(self, *args, **kwds): |
| '''MyFrame init method: Calls methods to create GUI''' |
| |
| kwds["style"] = wx.DEFAULT_FRAME_STYLE |
| wx.Frame.__init__(self, *args, **kwds) |
| |
| self.CreateMenuBar() |
| self.CreateMainWindow() |
| self.SetProperties() |
| self.DoLayout() |
| self.BindEvents() |
| . |
| . |
| . |
| #----- Event Handlers ----------------------------------------------------- |
| |
| def OnEqualsButtonClick(self, event): |
| '''Try to evaluate the solution of the given algorithem''' |
| |
| try: |
| equation = self.TextBox.GetValue() |
| solution = str(eval(equation)) |
| self.TextBox.SetValue(solution) |
| |
| status_text = "Solution: %s" % solution |
| self.PyCalc_statusbar.SetStatusText(status_text) |
| except: |
| self.PyCalc_statusbar.SetStatusText("Invalid Equation Syntax") |
| |
| |
| def OnQuitButtonClick(self, event): |
| '''Exit Application''' |
| |
| self.Close() |
| event.Skip() |
| |
| def OnCopyButtonClick(self, event): |
| '''Copy all the text in TextBox to clipboard''' |
| |
| self.TextBox.SelectAll() |
| self.TextBox.Copy() |
| |
| def OnPasteButtonClick(self, event): |
| '''Paste text from clipboard to TextBox''' |
| self.TextBox.Paste() |
| |
| def OnPowButtonClick(self, event): |
| self.TextBox.AppendText("pow(,)") |
| |
| def OnSinButtonClick(self, event): |
| self.TextBox.AppendText("sin()") |
| |
| def OnCosButtonClick(self, event): |
| self.TextBox.AppendText("cos()") |
| |
| def OnTanButtonClick(self, event): |
| self.TextBox.AppendText("tan()") |
| |
| def OnFloorButtonClick(self, event): |
| self.TextBox.AppendText("floor()") |
| |
| def OnFactorialButtonClick(self, event): |
| self.TextBox.AppendText("factorial()") |
| |
| def OnSqrtButtonClick(self, event): |
| self.TextBox.AppendText("sqrt()") |
| |
| def OnHyptButtonClick(self, event): |
| self.TextBox.AppendText("hypt()") |
| |
| def OnPiButtonClick(self, event): |
| self.TextBox.AppendText("pi") |
| |
| def OnEButtonClick(self, event): |
| self.TextBox.AppendText("e") |
| |
| def OnAboutButtonClicked(self, event): |
| '''Pop up about dialog''' |
| |
| AboutDialog = AboutDialogBox(None, -1, 'About dialog box') |
| AboutDialog.Show() |
| |
| |
| def OnBackButtonClick(self, event): |
| '''Delete last char''' |
| |
| text = self.TextBox.GetValue() |
| self.TextBox.SetValue(text[:-1]) |
| |
| def OnClearButtonClick(self, event): |
| '''Delete entire TextBox''' |
| self.TextBox.SetValue("") |
| |
| def OnStartBracketButtonClick(self, event): |
| self.TextBox.AppendText("(") |
| |
| def OnEndBracketButtonClick(self, event): # wxGlade: MyFrame.<event_handler> |
| self.TextBox.AppendText(")") |
| |
| def OnAddButtonClick(self, event): # wxGlade: MyFrame.<event_handler> |
| self.TextBox.AppendText("+") |
| |
| def OnMinusButtonClick(self, event): # wxGlade: MyFrame.<event_handler> |
| self.TextBox.AppendText("-") |
| |
| def OnDivideButtonClick(self, event): # wxGlade: MyFrame.<event_handler> |
| self.TextBox.AppendText("/") |
| |
| def OnMultiplyButtonClick(self, event): # wxGlade: MyFrame.<event_handler> |
| self.TextBox.AppendText("*") |
| |
| def OnDecimalButtonClick(self, event): # wxGlade: MyFrame.<event_handler> |
| self.TextBox.AppendText(".") |
| |
| |
| def OnButton0Click(self, event): # wxGlade: MyFrame.<event_handler> |
| self.TextBox.AppendText("0") |
| |
| def OnButton1Click(self, event): # wxGlade: MyFrame.<event_handler> |
| self.TextBox.AppendText("1") |
| |
| def OnButton2Click(self, event): # wxGlade: MyFrame.<event_handler> |
| self.TextBox.AppendText("2") |
| |
| def OnButton3Click(self, event): # wxGlade: MyFrame.<event_handler> |
| self.TextBox.AppendText("3") |
| |
| def OnButton4Click(self, event): # wxGlade: MyFrame.<event_handler> |
| self.TextBox.AppendText("4") |
| |
| def OnButton5Click(self, event): # wxGlade: MyFrame.<event_handler> |
| self.TextBox.AppendText("5") |
| |
| def OnButton6Click(self, event): # wxGlade: MyFrame.<event_handler> |
| self.TextBox.AppendText("6") |
| |
| def OnButton7Click(self, event): # wxGlade: MyFrame.<event_handler> |
| self.TextBox.AppendText("7") |
| |
| def OnButton8Click(self, event): # wxGlade: MyFrame.<event_handler> |
| self.TextBox.AppendText("8") |
| |
| def OnButton9Click(self, event): # wxGlade: MyFrame.<event_handler> |
| self.TextBox.AppendText("9") |