[Pykafe-commits] SF.net SVN: pykafe: [92] trunk/pykafe/client
Status: Pre-Alpha
Brought to you by:
jnmbk
|
From: <jn...@us...> - 2007-06-04 15:38:52
|
Revision: 92
http://pykafe.svn.sourceforge.net/pykafe/?rev=92&view=rev
Author: jnmbk
Date: 2007-06-04 08:38:47 -0700 (Mon, 04 Jun 2007)
Log Message:
-----------
cafeteria thing and fixes
Modified Paths:
--------------
trunk/pykafe/client/cafeteria.ui
trunk/pykafe/client/client.py
trunk/pykafe/client/clientmain.py
trunk/pykafe/client/login.py
Added Paths:
-----------
trunk/pykafe/client/cafeteria.py
Added: trunk/pykafe/client/cafeteria.py
===================================================================
--- trunk/pykafe/client/cafeteria.py (rev 0)
+++ trunk/pykafe/client/cafeteria.py 2007-06-04 15:38:47 UTC (rev 92)
@@ -0,0 +1,157 @@
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2007, pyKafe Development Team
+#
+# This program is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2 of the License, or (at your option)
+# any later version.
+#
+# Please read the COPYING file.
+#
+
+from PyQt4 import QtCore, QtGui
+
+import locale, gettext
+locale.setlocale(locale.LC_ALL, "C")
+_ = gettext.translation("pyKafe_client", fallback=True).ugettext
+
+class Product:
+ def __init__(self, values):
+ print values
+ self.name, self.price, self.quantity = values.split('|',3)
+
+class Order(QtGui.QTreeWidgetItem):
+ def __init__(self, parent, product, value, quantity):
+ QtGui.QTreeWidgetItem.__init__(self, parent)
+ self.setText(0, product)
+ self.setText(1, value)
+ self.setText(2, quantity)
+
+def findProductPrice(products, name):
+ for product in products:
+ if product.name == name:
+ return float(product.value)
+
+class Ui_Dialog(object):
+ def setupUi(self, Dialog, client):
+ Dialog.setObjectName("Dialog")
+ Dialog.resize(QtCore.QSize(QtCore.QRect(0,0,361,300).size()).expandedTo(Dialog.minimumSizeHint()))
+ Dialog.setWindowIcon(QtGui.QIcon("../../data/icons/pyKafe.png"))
+
+ self.gridlayout = QtGui.QGridLayout(Dialog)
+ self.gridlayout.setMargin(9)
+ self.gridlayout.setSpacing(6)
+ self.gridlayout.setObjectName("gridlayout")
+
+ self.gridlayout1 = QtGui.QGridLayout()
+ self.gridlayout1.setMargin(0)
+ self.gridlayout1.setSpacing(6)
+ self.gridlayout1.setObjectName("gridlayout1")
+
+ spacerItem = QtGui.QSpacerItem(20,16,QtGui.QSizePolicy.Minimum,QtGui.QSizePolicy.Fixed)
+ self.gridlayout1.addItem(spacerItem,0,2,1,1)
+
+ self.addOrder = QtGui.QPushButton(Dialog)
+ self.addOrder.setIcon(QtGui.QIcon("../../data/icons/edit_add.png"))
+ self.addOrder.setObjectName("addOrder")
+ self.gridlayout1.addWidget(self.addOrder,1,2,1,1)
+
+ self.product = QtGui.QComboBox(Dialog)
+ self.product.setObjectName("product")
+ self.gridlayout1.addWidget(self.product,1,0,1,1)
+
+ self.label = QtGui.QLabel(Dialog)
+
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Policy(5),QtGui.QSizePolicy.Policy(0))
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
+ self.label.setSizePolicy(sizePolicy)
+ self.label.setObjectName("label")
+ self.gridlayout1.addWidget(self.label,0,0,1,1)
+
+ self.quantity = QtGui.QSpinBox(Dialog)
+ self.quantity.setMinimum(1)
+ self.quantity.setObjectName("quantity")
+ self.gridlayout1.addWidget(self.quantity,1,1,1,1)
+
+ self.label_2 = QtGui.QLabel(Dialog)
+
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Policy(5),QtGui.QSizePolicy.Policy(0))
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.label_2.sizePolicy().hasHeightForWidth())
+ self.label_2.setSizePolicy(sizePolicy)
+ self.label_2.setObjectName("label_2")
+ self.gridlayout1.addWidget(self.label_2,0,1,1,1)
+ self.gridlayout.addLayout(self.gridlayout1,0,0,1,1)
+
+ self.buttonBox = QtGui.QDialogButtonBox(Dialog)
+ self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
+ self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.NoButton|QtGui.QDialogButtonBox.Ok)
+ self.buttonBox.setObjectName("buttonBox")
+ self.gridlayout.addWidget(self.buttonBox,2,0,1,1)
+
+ self.tabWidget = QtGui.QTabWidget(Dialog)
+ self.tabWidget.setObjectName("tabWidget")
+
+ self.tab = QtGui.QWidget()
+ self.tab.setObjectName("tab")
+
+ self.gridlayout2 = QtGui.QGridLayout(self.tab)
+ self.gridlayout2.setMargin(9)
+ self.gridlayout2.setSpacing(6)
+ self.gridlayout2.setObjectName("gridlayout2")
+
+ self.ordersToSend = QtGui.QTreeWidget(self.tab)
+ self.ordersToSend.setObjectName("ordersToSend")
+ self.gridlayout2.addWidget(self.ordersToSend,0,0,1,1)
+ self.tabWidget.addTab(self.tab,"")
+
+ self.tab_2 = QtGui.QWidget()
+ self.tab_2.setObjectName("tab_2")
+
+ self.gridlayout3 = QtGui.QGridLayout(self.tab_2)
+ self.gridlayout3.setMargin(9)
+ self.gridlayout3.setSpacing(6)
+ self.gridlayout3.setObjectName("gridlayout3")
+
+ self.sentOrders = QtGui.QTreeWidget(self.tab_2)
+ self.sentOrders.setObjectName("sentOrders")
+ self.gridlayout3.addWidget(self.sentOrders,0,0,1,1)
+ self.tabWidget.addTab(self.tab_2,"")
+ self.gridlayout.addWidget(self.tabWidget,1,0,1,1)
+
+ self.retranslateUi(Dialog)
+ self.tabWidget.setCurrentIndex(0)
+ self.client = client
+ self.products = []
+ for product in client.cafeteriaContents:
+ self.products.append(Product(product))
+ self.product.addItem(self.products[-1].name)
+ self.orders = []
+ QtCore.QObject.connect(self.buttonBox,QtCore.SIGNAL("accepted()"),Dialog.accept)
+ QtCore.QObject.connect(self.buttonBox,QtCore.SIGNAL("rejected()"),Dialog.reject)
+ QtCore.QObject.connect(self.addOrder,QtCore.SIGNAL("clicked()"),self.orderAdd)
+ QtCore.QMetaObject.connectSlotsByName(Dialog)
+
+ def retranslateUi(self, Dialog):
+ Dialog.setWindowTitle(_("Cafeteria"))
+ self.addOrder.setText(_("Add Order"))
+ self.label.setText(_("Product"))
+ self.label_2.setText(_("Quantity"))
+ self.ordersToSend.headerItem().setText(0,_("Item"))
+ self.ordersToSend.headerItem().setText(1,_("Cost"))
+ self.ordersToSend.headerItem().setText(2,_("Quantity"))
+ self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _("Orders to Send"))
+ self.sentOrders.headerItem().setText(0,_("Item"))
+ self.sentOrders.headerItem().setText(1,_("Cost"))
+ self.sentOrders.headerItem().setText(2,_("Quantity"))
+ self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _("Sent Orders"))
+
+ def orderAdd(self):
+ print 1234
+ cost = self.quantity.value() * findProductPrice(self.products, self.product.currentText())
+ self.orders.append(Order(self.ordersToSend, self.product.currentText(), cost, self.quantity.value()))
+ self.client.temporders.append[self.product.currentText() + '|' + str(self.quantity.value())]
Modified: trunk/pykafe/client/cafeteria.ui
===================================================================
--- trunk/pykafe/client/cafeteria.ui 2007-06-03 20:20:15 UTC (rev 91)
+++ trunk/pykafe/client/cafeteria.ui 2007-06-04 15:38:47 UTC (rev 92)
@@ -47,7 +47,7 @@
</spacer>
</item>
<item row="1" column="2" >
- <widget class="QPushButton" name="pushButton" >
+ <widget class="QPushButton" name="addOrder" >
<property name="text" >
<string>Add Order</string>
</property>
@@ -57,7 +57,7 @@
</widget>
</item>
<item row="1" column="0" >
- <widget class="QComboBox" name="comboBox" />
+ <widget class="QComboBox" name="product" />
</item>
<item row="0" column="0" >
<widget class="QLabel" name="label" >
@@ -75,7 +75,11 @@
</widget>
</item>
<item row="1" column="1" >
- <widget class="QSpinBox" name="spinBox" />
+ <widget class="QSpinBox" name="quantity" >
+ <property name="minimum" >
+ <number>1</number>
+ </property>
+ </widget>
</item>
<item row="0" column="1" >
<widget class="QLabel" name="label_2" >
@@ -121,7 +125,7 @@
<number>6</number>
</property>
<item row="0" column="0" >
- <widget class="QTreeWidget" name="treeWidget" >
+ <widget class="QTreeWidget" name="ordersToSend" >
<column>
<property name="text" >
<string>Item</string>
@@ -153,7 +157,7 @@
<number>6</number>
</property>
<item row="0" column="0" >
- <widget class="QTreeWidget" name="treeWidget_2" >
+ <widget class="QTreeWidget" name="sentOrders" >
<column>
<property name="text" >
<string>Item</string>
@@ -211,5 +215,21 @@
</hint>
</hints>
</connection>
+ <connection>
+ <sender>addOrder</sender>
+ <signal>clicked()</signal>
+ <receiver>Dialog</receiver>
+ <slot>close()</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>295</x>
+ <y>46</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>180</x>
+ <y>149</y>
+ </hint>
+ </hints>
+ </connection>
</connections>
</ui>
Modified: trunk/pykafe/client/client.py
===================================================================
--- trunk/pykafe/client/client.py 2007-06-03 20:20:15 UTC (rev 91)
+++ trunk/pykafe/client/client.py 2007-06-04 15:38:47 UTC (rev 92)
@@ -103,8 +103,9 @@
self.client.setState(ClientSession.loggedIn)
elif data[:3] == "005":
self.client.setState(ClientSession.loggedIn)
+ sendDataToUi(data)
+ elif data[:3] == "006":
sendDataToUi("005")
- elif data[:3] == "006":
self.client.setState(ClientSession.loggedIn, endTime = QtCore.QDateTime.fromTime_t(int(data[3:])))
elif data[:3] == "007":
iptablesFile = "*filter\n:INPUT ACCEPT [94:7144]\n:FORWARD ACCEPT [0:0]\n:OUTPUT ACCEPT [177:10428]\n"
@@ -118,8 +119,13 @@
file.close()
print iptablesFile
os.system("iptables-restore < /etc/pyKafe/iptables.conf")
+ elif data[:3] == "009":
+ os.system("restartkde&")
elif data[:3] == "010":
os.system("init 0")
+ elif data[:3] == "015":
+ if self.client.state == ClientSession.ready:
+ sendDataToServer("004")
elif data[:3] == "016":
for c, value in map(lambda x,y:(x,y), ("price_fixedprice", "price_fixedpriceminutes", "price_onehourprice", "price_rounding"), data[3:].split("|")):
config.set(c, value)
@@ -132,12 +138,12 @@
return
if data[:3] == "000":
sendDataToServer("000")
- self.client.session.setState(ClientSession.requestedOpening)
+ self.client.setState(ClientSession.requestedOpening)
elif data[:3] == "002":
sendDataToServer(data)
elif data[:3] == "004":
sendDataToServer("004")
- self.client.session.state = ClientSession.ready
+ self.client.setState(ClientSession.ready)
elif data[:3] == "008":
sendDataToServer(data)
os.system("restartkde&")
@@ -159,7 +165,16 @@
print "sending:", text
self.tcpSocket.write(base64.encodestring(text))
self.tcpSocket.waitForBytesWritten()
- self.exit()
+ elif data[:3] == "018":
+ tcpSocket = QtNetwork.QTcpSocket()
+ tcpSocket.connectToHost(QtNetwork.QHostAddress(config.network_serverIP), config.network_port)
+ tcpSocket.waitForConnected()
+ tcpSocket.write(base64.encodestring(data))
+ tcpSocket.waitForBytesWritten()
+ tcpSocket.waitForReadyRead()
+ data = tcpSocket.readAll()
+ self.tcpSocket.write(data)
+ self.tcpSocket.waitForBytesWritten()
class PykafeClient(QtNetwork.QTcpServer):
def __init__(self):
Modified: trunk/pykafe/client/clientmain.py
===================================================================
--- trunk/pykafe/client/clientmain.py 2007-06-03 20:20:15 UTC (rev 91)
+++ trunk/pykafe/client/clientmain.py 2007-06-04 15:38:47 UTC (rev 92)
@@ -13,6 +13,7 @@
import sys, base64
from PyQt4 import QtCore, QtGui, QtNetwork
from config import PykafeConfiguration
+import cafeteria
import locale, gettext
locale.setlocale(locale.LC_ALL, "C")
@@ -21,8 +22,8 @@
config = PykafeConfiguration()
class SenderThread(QtCore.QThread):
- def __init__(self, parent, data):
- QtCore.QThread.__init__(self, parent)
+ def __init__(self, data):
+ QtCore.QThread.__init__(self)
self.data = data
def run(self):
tcpSocket = QtNetwork.QTcpSocket()
@@ -53,6 +54,8 @@
self.ui = ui
self.listen(QtNetwork.QHostAddress(QtNetwork.QHostAddress.LocalHost), config.network_localPort)
self.threads = []
+ self.orders = []
+ self.temporders = []
def incomingConnection(self, socketDescriptor):
thread = ListenerThread(self.parent(), socketDescriptor)
QtCore.QObject.connect(thread,QtCore.SIGNAL("close"),self.parent().close)
@@ -60,15 +63,39 @@
thread.start()
self.threads.append(thread)
def sendMessage(self, data):
- thread = SenderThread(self.parent(), data)
+ thread = SenderThread(data)
thread.start()
self.threads.append(thread)
def cafeteria(self):
- pass
+ tcpSocket = QtNetwork.QTcpSocket()
+ tcpSocket.connectToHost(QtNetwork.QHostAddress(QtNetwork.QHostAddress.LocalHost), config.network_port)
+ tcpSocket.waitForConnected()
+ tcpSocket.write(base64.encodestring("018"))
+ tcpSocket.waitForBytesWritten()
+ tcpSocket.waitForReadyRead()
+ data = base64.decodestring(tcpSocket.readAll())
+ print "received:", data
+ tcpSocket.disconnectFromHost()
+ self.cafeteriaContents = []
+ for i in data.split('||'):
+ self.cafeteriaContents.append(i)
+ self.cafeteriaWindow = QtGui.QDialog(self.parent())
+ QtCore.QObject.connect(self.cafeteriaWindow, QtCore.SIGNAL("accepted()"), self.sendOrders)
+ dialog = cafeteria.Ui_Dialog()
+ dialog.setupUi(self.cafeteriaWindow, self)
+ self.cafeteriaWindow.setModal(True)
+ self.cafeteriaWindow.show()
def logout(self):
answer = QtGui.QMessageBox.question(self.parent(), _("Are you sure?"), _("Do you really want to logout?"), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes).__or__(QtGui.QMessageBox.No), QtGui.QMessageBox.No)
if answer == QtGui.QMessageBox.Yes:
self.sendMessage("008")
+ def sendOrders(self):
+ text = "019"
+ for order in self.temporders:
+ text += order
+ self.orders.append(order)
+ if len(text)>3:
+ self.sendMessage(text)
class TimerThread(QtCore.QThread):
def run(self):
@@ -167,10 +194,13 @@
self.trayIcon.show()
self.ui = MainWindow
QtCore.QObject.connect(self.trayIcon, QtCore.SIGNAL("activated(QSystemTrayIcon::ActivationReason)"), self.iconActivated)
- thread = TimerThread()
- QtCore.QObject.connect(thread,QtCore.SIGNAL("changeTimeLabel"),self.timeLabel.setText)
- QtCore.QObject.connect(thread,QtCore.SIGNAL("changeMoneyLabel"),self.moneyLabel.setText)
- thread.start()
+ self.thread = TimerThread()
+ QtCore.QObject.connect(self.thread,QtCore.SIGNAL("changeTimeLabel"),self.timeLabel.setText)
+ QtCore.QObject.connect(self.thread,QtCore.SIGNAL("changeMoneyLabel"),self.moneyLabel.setText)
+ QtCore.QObject.connect(self.thread,QtCore.SIGNAL("setCafeteria"),self.setCafeteria)
+ self.thread.start()
+ def setCafeteria(self, cafeteria):
+ self.cafeteria = cafeteria
def iconActivated(self, reason):
if reason == QtGui.QSystemTrayIcon.Trigger:
if self.ui.isVisible():
Modified: trunk/pykafe/client/login.py
===================================================================
--- trunk/pykafe/client/login.py 2007-06-03 20:20:15 UTC (rev 91)
+++ trunk/pykafe/client/login.py 2007-06-04 15:38:47 UTC (rev 92)
@@ -54,23 +54,23 @@
print "received:", data
if data[:3] == "001":
if data[3] == "1":
- os.system("pyKafeclient&")
- self.emit(QtCore.SIGNAL("close"))
+ self.login()
elif data[3] == "0":
self.emit(QtCore.SIGNAL("message"), _("Server didn't give acknowledge"))
elif data[:3] == "003":
if data[3] == "1":
- os.system("pyKafeclient&")
- self.emit(QtCore.SIGNAL("close"))
+ self.login()
else:
self.emit(QtCore.SIGNAL("message"), _("Wrong username or password"))
elif data[:3] == "005":
- os.system("pyKafeclient&")
- self.emit(QtCore.SIGNAL("close"))
+ self.login()
elif data[:3] == "014":
self.emit(QtCore.SIGNAL("message"), _("Can't connect to server"))
self.tcpSocket.disconnectFromHost()
self.exec_()
+ def login(self):
+ os.system("pyKafeclient&")
+ self.emit(QtCore.SIGNAL("close"))
class PykafeClient(QtNetwork.QTcpServer):
def __init__(self, parent, ui):
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|