101 lines
3.3 KiB
Python
101 lines
3.3 KiB
Python
#!/usr/bin/env python
|
|
|
|
import sys, socket
|
|
try:
|
|
import pygtk
|
|
pygtk.require("2.16")
|
|
except:
|
|
pass
|
|
try:
|
|
import gtk
|
|
import gtk.glade
|
|
except:
|
|
sys.exit(1)
|
|
|
|
class GGSCalc:
|
|
|
|
def __init__(self):
|
|
#Set the Glade file
|
|
self.gladefile = "calc.glade"
|
|
self.wTree = gtk.glade.XML(self.gladefile, "window1")
|
|
|
|
#Create our dictionay and connect it
|
|
dic = {"on_mainWindow_destroy" : gtk.main_quit
|
|
, "on_btn0_clicked" : lambda x: self.OnBtnClick(0)
|
|
, "on_btn1_clicked" : lambda x: self.OnBtnClick(1)
|
|
, "on_btn2_clicked" : lambda x: self.OnBtnClick(2)
|
|
, "on_btn3_clicked" : lambda x: self.OnBtnClick(3)
|
|
, "on_btn4_clicked" : lambda x: self.OnBtnClick(4)
|
|
, "on_btn5_clicked" : lambda x: self.OnBtnClick(5)
|
|
, "on_btn6_clicked" : lambda x: self.OnBtnClick(6)
|
|
, "on_btn7_clicked" : lambda x: self.OnBtnClick(7)
|
|
, "on_btn8_clicked" : lambda x: self.OnBtnClick(8)
|
|
, "on_btn9_clicked" : lambda x: self.OnBtnClick(9)
|
|
, "on_btnDiv_clicked" : lambda x: self.OnBtnClick("/")
|
|
, "on_btnMul_clicked" : lambda x: self.OnBtnClick("*")
|
|
, "on_btnMin_clicked" : lambda x: self.OnBtnClick("-")
|
|
, "on_btnPlus_clicked" : lambda x: self.OnBtnClick("+")
|
|
, "on_btnEq_clicked" : lambda x: self.calc()
|
|
, "on_btnDel_clicked" : lambda x: self.OnBtnClick("Del")
|
|
, "on_btnConnect_clicked" : lambda x: self.connect()
|
|
}
|
|
|
|
for i in range(0,9):
|
|
dic
|
|
self.wTree.signal_autoconnect(dic)
|
|
|
|
self.wTree.get_widget("window1").show()
|
|
self.setStatus("Not connected")
|
|
|
|
def setStatus(self, msg):
|
|
self.wTree.get_widget("statusbar").push(0, msg)
|
|
|
|
def calc(self):
|
|
exp = self.wTree.get_widget("txtCalc").get_text()
|
|
self.s.send("Server-Command: call\n"+
|
|
"Token: %s\n" % self.token +
|
|
"Content-Type: text\n"+
|
|
"Content-Length: %s\n" % len(exp)+
|
|
"\n"+
|
|
exp)
|
|
fs = self.s.makefile()
|
|
self.wTree.get_widget("txtCalc").set_text(fs.readline().split(" ")[1])
|
|
|
|
|
|
def connect(self):
|
|
print "Connecting"
|
|
self.setStatus("Connecting")
|
|
HOST = 'localhost' # The remote host
|
|
PORT = 9000 # The same port as used by the server
|
|
self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
self.s.connect((HOST, PORT))
|
|
self.s.send("Server-Command: hello\n"+
|
|
"Content-Type: text\n"+
|
|
"Content-Length: 0\n"+
|
|
"\n")
|
|
fs = self.s.makefile()
|
|
self.token = fs.readline().split(" ")[0]
|
|
self.setStatus("Connected!")
|
|
|
|
def OnBtnClick(self, btn):
|
|
calcTxt = self.wTree.get_widget("txtCalc")
|
|
t = calcTxt.get_text()
|
|
if btn == "+":
|
|
t += "+"
|
|
elif btn == "-":
|
|
t += "-"
|
|
elif btn == "/":
|
|
t += "/"
|
|
elif btn == "=":
|
|
t += "="
|
|
elif btn == "*":
|
|
t += "*"
|
|
elif btn == "Del":
|
|
t = t[:-1]
|
|
else:
|
|
t += str("\""+str(btn)+"\"")
|
|
calcTxt.set_text(t)
|
|
|
|
if __name__ == "__main__":
|
|
calc = GGSCalc()
|
|
gtk.main()
|