pykafe-commits Mailing List for pyKafe (Page 4)
Status: Pre-Alpha
Brought to you by:
jnmbk
You can subscribe to this list here.
| 2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(78) |
Jul
(8) |
Aug
|
Sep
|
Oct
|
Nov
(2) |
Dec
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2008 |
Jan
(11) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: <jn...@us...> - 2007-06-03 10:07:26
|
Revision: 81
http://pykafe.svn.sourceforge.net/pykafe/?rev=81&view=rev
Author: jnmbk
Date: 2007-06-03 03:07:28 -0700 (Sun, 03 Jun 2007)
Log Message:
-----------
currency thing from python 2.5
Added Paths:
-----------
trunk/pykafe/server/currencyformat.py
Added: trunk/pykafe/server/currencyformat.py
===================================================================
--- trunk/pykafe/server/currencyformat.py (rev 0)
+++ trunk/pykafe/server/currencyformat.py 2007-06-03 10:07:28 UTC (rev 81)
@@ -0,0 +1,93 @@
+# -*- 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.
+#
+
+import locale
+
+#taken from python 2.5 sources
+#TODO: Remove these when Python 2.5 is widely available
+def format(percent, value, grouping=False, monetary=False, *additional):
+ """Returns the locale-aware substitution of a %? specifier
+ (percent).
+
+ additional is for format strings which contain one or more
+ '*' modifiers."""
+ # this is only for one-percent-specifier strings and this should be checked
+ if percent[0] != '%':
+ raise ValueError("format() must be given exactly one %char "
+ "format specifier")
+ if additional:
+ formatted = percent % ((value,) + additional)
+ else:
+ formatted = percent % value
+ # floats and decimal ints need special action!
+ if percent[-1] in 'eEfFgG':
+ seps = 0
+ parts = formatted.split('.')
+ if grouping:
+ parts[0], seps = locale._group(parts[0], monetary=monetary)
+ decimal_point = locale.localeconv()[monetary and 'mon_decimal_point'
+ or 'decimal_point']
+ formatted = decimal_point.join(parts)
+ while seps:
+ sp = formatted.find(' ')
+ if sp == -1: break
+ formatted = formatted[:sp] + formatted[sp+1:]
+ seps -= 1
+ elif percent[-1] in 'diu':
+ if grouping:
+ formatted = locale._group(formatted, monetary=monetary)[0]
+ return formatted
+
+def currency(val, symbol=True, grouping=False, international=False):
+ """Formats val according to the currency settings
+ in the current locale."""
+ conv = locale.localeconv()
+
+ # check for illegal values
+ digits = conv[international and 'int_frac_digits' or 'frac_digits']
+ if digits == 127:
+ raise ValueError("Currency formatting is not possible using "
+ "the 'C' locale.")
+
+ s = format('%%.%if' % digits, abs(val), grouping, monetary=True)
+ # '<' and '>' are markers if the sign must be inserted between symbol and value
+ s = '<' + s + '>'
+
+ if symbol:
+ smb = conv[international and 'int_curr_symbol' or 'currency_symbol']
+ precedes = conv[val<0 and 'n_cs_precedes' or 'p_cs_precedes']
+ separated = conv[val<0 and 'n_sep_by_space' or 'p_sep_by_space']
+
+ if precedes:
+ s = smb + (separated and ' ' or '') + s
+ else:
+ s = s + (separated and ' ' or '') + smb
+
+ sign_pos = conv[val<0 and 'n_sign_posn' or 'p_sign_posn']
+ sign = conv[val<0 and 'negative_sign' or 'positive_sign']
+
+ if sign_pos == 0:
+ s = '(' + s + ')'
+ elif sign_pos == 1:
+ s = sign + s
+ elif sign_pos == 2:
+ s = s + sign
+ elif sign_pos == 3:
+ s = s.replace('<', sign)
+ elif sign_pos == 4:
+ s = s.replace('>', sign)
+ else:
+ # the default if nothing specified;
+ # this should be the most fitting sign position
+ s = sign + s
+
+ return s.replace('<', '').replace('>', '')
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-03 10:06:31
|
Revision: 80
http://pykafe.svn.sourceforge.net/pykafe/?rev=80&view=rev
Author: jnmbk
Date: 2007-06-03 03:06:30 -0700 (Sun, 03 Jun 2007)
Log Message:
-----------
very small fixes in main window
Modified Paths:
--------------
trunk/pykafe/server/mainwindow.py
trunk/pykafe/server/mainwindow.ui
Modified: trunk/pykafe/server/mainwindow.py
===================================================================
--- trunk/pykafe/server/mainwindow.py 2007-06-03 10:02:27 UTC (rev 79)
+++ trunk/pykafe/server/mainwindow.py 2007-06-03 10:06:30 UTC (rev 80)
@@ -159,11 +159,13 @@
self.gridlayout4.addWidget(self.orders_itemComboBox,1,1,1,1)
self.orders_spinBox_1 = QtGui.QSpinBox(self.groupBox_2)
+ self.orders_spinBox_1.setMinimum(1)
self.orders_spinBox_1.setObjectName("orders_spinBox_1")
self.gridlayout4.addWidget(self.orders_spinBox_1,1,2,1,1)
self.gridlayout3.addLayout(self.gridlayout4,1,0,1,5)
self.orders_treeWidget_1 = QtGui.QTreeWidget(self.groupBox_2)
+ self.orders_treeWidget_1.setRootIsDecorated(False)
self.orders_treeWidget_1.setSortingEnabled(True)
self.orders_treeWidget_1.setObjectName("orders_treeWidget_1")
self.gridlayout3.addWidget(self.orders_treeWidget_1,0,0,1,5)
@@ -200,6 +202,7 @@
self.gridlayout5.setObjectName("gridlayout5")
self.orders_treeWidget_2 = QtGui.QTreeWidget(self.groupBox_3)
+ self.orders_treeWidget_2.setRootIsDecorated(False)
self.orders_treeWidget_2.setSortingEnabled(True)
self.orders_treeWidget_2.setObjectName("orders_treeWidget_2")
self.gridlayout5.addWidget(self.orders_treeWidget_2,0,0,1,4)
@@ -479,14 +482,14 @@
self.menuHelp = QtGui.QMenu(self.menubar)
self.menuHelp.setObjectName("menuHelp")
- self.menuTools = QtGui.QMenu(self.menubar)
- self.menuTools.setObjectName("menuTools")
-
self.menuFile = QtGui.QMenu(self.menubar)
self.menuFile.setObjectName("menuFile")
self.menuNew = QtGui.QMenu(self.menuFile)
self.menuNew.setObjectName("menuNew")
+
+ self.menuTools = QtGui.QMenu(self.menubar)
+ self.menuTools.setObjectName("menuTools")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(MainWindow)
@@ -517,12 +520,12 @@
self.menuHelp.addSeparator()
self.menuHelp.addAction(self.actionAbout_pyKafe)
self.menuHelp.addAction(self.actionAbout_Qt)
- self.menuTools.addAction(self.actionSettings)
self.menuNew.addAction(self.actionComputer)
self.menuNew.addAction(self.actionEntertainment)
self.menuFile.addAction(self.menuNew.menuAction())
self.menuFile.addSeparator()
self.menuFile.addAction(self.actionExit)
+ self.menuTools.addAction(self.actionSettings)
self.menubar.addAction(self.menuFile.menuAction())
self.menubar.addAction(self.menuTools.menuAction())
self.menubar.addAction(self.menuHelp.menuAction())
@@ -599,7 +602,7 @@
MainWindow.setTabOrder(self.logs_dateTimeEdit_2,self.logs_treeWidget)
def retranslateUi(self, MainWindow):
- MainWindow.setWindowTitle(_("PyKafe"))
+ MainWindow.setWindowTitle("PyKafe")
self.main_startTimeButton.setStatusTip(_("Starts selected computer for usage (timed)"))
self.main_startTimeButton.setText(_("Timed"))
self.main_stopButton.setStatusTip(_("Switches to login state"))
@@ -674,9 +677,9 @@
self.logs_treeWidget.headerItem().setText(6,_("Income"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _("Logs"))
self.menuHelp.setTitle(_("Help"))
- self.menuTools.setTitle(_("Tools"))
self.menuFile.setTitle(_("File"))
self.menuNew.setTitle(_("New"))
+ self.menuTools.setTitle(_("Tools"))
self.actionContents.setText(_("Contents"))
self.actionAbout_pyKafe.setText(_("About pyKafe"))
self.actionAbout_Qt.setText(_("About Qt"))
Modified: trunk/pykafe/server/mainwindow.ui
===================================================================
--- trunk/pykafe/server/mainwindow.ui 2007-06-03 10:02:27 UTC (rev 79)
+++ trunk/pykafe/server/mainwindow.ui 2007-06-03 10:06:30 UTC (rev 80)
@@ -351,12 +351,19 @@
<widget class="QComboBox" name="orders_itemComboBox" />
</item>
<item row="1" column="2" >
- <widget class="QSpinBox" name="orders_spinBox_1" />
+ <widget class="QSpinBox" name="orders_spinBox_1" >
+ <property name="minimum" >
+ <number>1</number>
+ </property>
+ </widget>
</item>
</layout>
</item>
<item row="0" column="0" colspan="5" >
<widget class="QTreeWidget" name="orders_treeWidget_1" >
+ <property name="rootIsDecorated" >
+ <bool>false</bool>
+ </property>
<property name="sortingEnabled" >
<bool>true</bool>
</property>
@@ -450,6 +457,9 @@
</property>
<item row="0" column="0" colspan="4" >
<widget class="QTreeWidget" name="orders_treeWidget_2" >
+ <property name="rootIsDecorated" >
+ <bool>false</bool>
+ </property>
<property name="sortingEnabled" >
<bool>true</bool>
</property>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-03 10:02:26
|
Revision: 79
http://pykafe.svn.sourceforge.net/pykafe/?rev=79&view=rev
Author: jnmbk
Date: 2007-06-03 03:02:27 -0700 (Sun, 03 Jun 2007)
Log Message:
-----------
fixes in options window
send options to all clients when accepted
logger takes cashier from database
Modified Paths:
--------------
trunk/pykafe/server/logger.py
trunk/pykafe/server/server.py
trunk/pykafe/server/settings.py
trunk/pykafe/server/settingswindow.py
trunk/pykafe/server/settingswindow.ui
Modified: trunk/pykafe/server/logger.py
===================================================================
--- trunk/pykafe/server/logger.py 2007-06-03 09:58:49 UTC (rev 78)
+++ trunk/pykafe/server/logger.py 2007-06-03 10:02:27 UTC (rev 79)
@@ -13,7 +13,8 @@
from database import Database
from PyQt4 import QtCore
-def add(log_type, log_value, cashier, computer = "", member = "", income = ""):
+def add(log_type, log_value, computer = "", member = "", income = ""):
+ cashier = Database().runOnce("select setting_value from general_settings where setting_id = 'last_cashier'")[0][0]
date = QtCore.QDateTime.currentDateTime().toTime_t()
Database().runOnce("insert into logs (date, log_type, log_value, cashier, computer, member, income) values (?,?,?,?,?,?,?)", (date, log_type, log_value, cashier, computer, member, income))
class logTypes:
Modified: trunk/pykafe/server/server.py
===================================================================
--- trunk/pykafe/server/server.py 2007-06-03 09:58:49 UTC (rev 78)
+++ trunk/pykafe/server/server.py 2007-06-03 10:02:27 UTC (rev 79)
@@ -18,13 +18,13 @@
from session import ClientSession
from database import Database
from settingswindow import Ui_SettingsWindow
+from currencyformat import currency
import logger
import base64, sha, time, os
import locale, gettext
locale.setlocale(locale.LC_MESSAGES, "C")
-#maybe using LC_MONETARY would be better for printing money in listwidgets
-locale.setlocale(locale.LC_NUMERIC, "")
+locale.setlocale(locale.LC_MONETARY, "")
_ = gettext.translation("pyKafe_server", fallback=True).ugettext
class MessageSender(QtCore.QThread):
@@ -65,10 +65,9 @@
client = self.clients[self.clientNumber]
data = base64.decodestring(self.tcpSocket.readAll())
print "data:", data
-
if data[:3] == "011":
+ #TODO: Move these into setState
if client.session.state in (ClientSession.notConnected, ClientSession.notReady):
- logger.add(logger.logTypes.information, "client connected", self.config.last_cashier, client.name)
if self.config.filter_enable:
message = "007"
filterFile = open(self.config.filter_file)
@@ -76,9 +75,9 @@
filterFile.close()
for i in filters:
message += i
- client.sendMessage(message)
+ client.sendMessage(message.strip())
message = "016"
- message += "%s|%s|%s|%s".strip() % (self.config.price_fixedprice,
+ message += "%s|%s|%s|%s" % (self.config.price_fixedprice,
self.config.price_fixedpriceminutes,
self.config.price_onehourprice,
self.config.price_rounding)
@@ -92,7 +91,7 @@
#client.sendSession()
elif data[:3] == "004":
if client.session.state == ClientSession.notReady:
- client.setState(ClientSession.ready)
+ self.emit(QtCore.SIGNAL("stateChange"), self.clientNumber, ClientSession.ready)
elif data[:3] == "000":
#User wants to open
if client.session.state == ClientSession.ready:
@@ -107,13 +106,13 @@
db.cur.execute("select count() from members where username = ? and password = ?", (username, password))
if db.cur.fetchall()[0][0]:
client.sendMessage("0031")
- logger.add(logger.logTypes.information, _("member login"), self.config.last_cashier, client.name, username)
- client.setState(ClientSession.loggedIn, user = username)
+ logger.add(logger.logTypes.information, _("Member logged in"), computer = client.name, member = username)
+ self.emit(QtCore.SIGNAL("stateChange"), self.clientNumber, ClientSession.waitingMoney, user = username)
else:
- logger.add(logger.logTypes.warning, _("Someone entered wrong password or username"), self.config.last_cashier, client.name, username)
+ logger.add(logger.logTypes.warning, _("Someone entered wrong password or username"), computer = client.name, member = username)
client.sendMessage("0030")
elif data[:3] == "008":
- client.setState(ClientSession.waitingMoney)
+ self.emit(QtCore.SIGNAL("stateChange"), self.clientNumber, ClientSession.waitingMoney)
self.tcpSocket.disconnectFromHost()
class ClientThread(QtCore.QThread):
@@ -131,7 +130,7 @@
else:
#TODO: round the price using price_rounding
price = float(self.config.price_onehourprice)/3600 * utime
- self.emit(QtCore.SIGNAL("changetext"),3,str(price))
+ self.emit(QtCore.SIGNAL("changetext"),3,currency(price))
usedTime = QtCore.QDateTime()
usedTime.setTime_t(utime)
self.emit(QtCore.SIGNAL("changetext"),4,usedTime.toUTC().time().toString("hh.mm"))
@@ -140,8 +139,8 @@
class Client(QtGui.QTreeWidgetItem):
def __init__(self, parent, clientInformation, config):
QtGui.QTreeWidgetItem.__init__(self, parent)
+ self.config = config
self.fillList(clientInformation)
- self.config = config
watcherThread = ClientThread(self, config)
QtCore.QObject.connect(watcherThread, QtCore.SIGNAL("changetext"), self.setText)
watcherThread.start()
@@ -170,7 +169,7 @@
elif state == ClientSession.loggedIn:
self.session.user = user
self.setText(2, user)
- self.setText(3, self.config.currency_prefix + "0" + self.config.currency_suffix)
+ self.setText(3, currency(0.0))
self.session.startTime = QtCore.QDateTime.currentDateTime()
self.setText(4, self.session.startTime.time().toString("00.00"))
if endTime:
@@ -182,20 +181,26 @@
self.changeColor("red")
self.session.state = state
self.setText(1, self.session.toString())
+ logger.add(logger.logTypes.information, _("State changed to %s") % self.session.toString(), member = self.name)
def sendSession(self):
- #send latest session to the client
- message = "012"
+ "sends latest session to the client, this is for eliminating client side problems like rebooting"
+ message = "012"+\
+ str(self.session.state)+'|'+\
+ self.session.user+'|'+\
+ str(self.session.startTime.toTime_t())+'|'+\
+ str(self.session.endTime.toTime_t())
self.sendMessage(message)
class Product(QtGui.QTreeWidgetItem):
def __init__(self, parent, productInformation):
QtGui.QTreeWidgetItem.__init__(self, parent)
self.updateValues(productInformation)
+
def updateValues(self, productInformation):
self.name, self.price, self.quantity = productInformation
self.setText(0,self.name)
- self.setText(1,locale.format("%.2f", self.price, grouping=True))
+ self.setText(1,currency(float(self.price)))
self.setText(2,str(self.quantity))
class Member(QtGui.QTreeWidgetItem):
@@ -218,25 +223,27 @@
self.ui = ui
if self.config.startup_askpassword:
self.config.set("last_cashier", cashier)
- logger.add(logger.logTypes.information, _("cashier login to server"), self.config.last_cashier)
+ logger.add(logger.logTypes.information, _("cashier login to server"))
if not self.listen(QtNetwork.QHostAddress(QtNetwork.QHostAddress.Any), int(self.config.network_port)):
- logger.add(logger.logTypes.error, _("Unable to start server: %s") % self.errorString(), self.config.last_cashier)
+ logger.add(logger.logTypes.error, _("Unable to start server: %s") % self.errorString())
QtGui.QMessageBox.critical(self.parent(), _("Connection Error"), _("Unable to start server: %s") % self.errorString())
self.parent().close()
self.clients = []
for clientInformation in self.config.clientList:
self.clients.append(Client(ui.main_treeWidget, clientInformation, self.config))
ui.main_treeWidget.sortItems(0, QtCore.Qt.AscendingOrder)
- self.initMembers()
+ self.initMembers(first = True)
self.initProducts()
self.localize()
self.threads = []
- def initMembers(self):
- self.members = []
- memberList = Database().run("select * from members where is_cashier='0'")
- for memberInformation in memberList:
- self.members.append(Member(self.ui.members_treeWidget, memberInformation[:7]))
+ def initMembers(self, first = False):
+ #TODO: Call this function after adding and deleting
+ if first:
+ self.members = []
+ memberList = Database().run("select * from members where is_cashier='0'")
+ for memberInformation in memberList:
+ self.members.append(Member(self.ui.members_treeWidget, memberInformation[:7]))
self.ui.members_dateEdit.setDate(QtCore.QDate.currentDate())
self.ui.members_dateEdit_2.setDate(QtCore.QDate.currentDate().addMonths(1))
self.ui.members_username.clear()
@@ -372,6 +379,7 @@
self.members.append(Member(self.ui.members_treeWidget, memberInformation[:7]))
self.filterMembers(self.ui.members_filter.text())
self.ui.statusbar.showMessage(_("Added member"))
+ logger.add(logger.logTypes.information, _("Added member"), member = memberInformation[0])
except sqlite.IntegrityError:
QtGui.QMessageBox.critical(self.parent(), _("Error"), _("Username must be unique"))
@@ -458,10 +466,16 @@
member.setHidden(True)
def localize(self):
- self.ui.members_debt.setPrefix(self.config.currency_prefix)
- self.ui.members_debt.setSuffix(self.config.currency_suffix)
- self.ui.orders_spinBox_2.setPrefix(self.config.currency_prefix)
- self.ui.orders_spinBox_2.setSuffix(self.config.currency_suffix)
+ conv = locale.localeconv()
+ symbol = conv['currency_symbol']
+ if conv['p_cs_precedes']:
+ symbol += ' '
+ self.ui.members_debt.setPrefix(symbol)
+ self.ui.orders_spinBox_2.setPrefix(symbol)
+ else:
+ symbol = ' ' + symbol
+ self.ui.members_debt.setSuffix(symbol)
+ self.ui.orders_spinBox_2.setSuffix(symbol)
def addProduct(self):
productName = unicode(self.ui.orders_itemLineEdit.text())
@@ -519,7 +533,29 @@
QtGui.QMessageBox.aboutQt(self.parent())
def settings(self):
- settingsDialog = QtGui.QDialog(self.parent())
+ self.settingsDialog = QtGui.QDialog(self.parent())
+ QtCore.QObject.connect(self.settingsDialog, QtCore.SIGNAL("accepted()"), self.sendOptions)
settingsUi = Ui_SettingsWindow()
- settingsUi.setupUi(settingsDialog, self.config)
- settingsDialog.show()
+ settingsUi.setupUi(self.settingsDialog, self.config)
+ self.settingsDialog.show()
+
+ def sendOptions(self):
+ "Sends internet filtering and pricing settings to all clients"
+ if self.config.filter_enable:
+ filterMessage = "007"
+ filterFile = open(self.config.filter_file)
+ filters = filterFile.readlines()
+ filterFile.close()
+ for i in filters:
+ filterMessage += i
+ filterMessage = filterMessage.strip()
+ priceMessage = "016"
+ priceMessage += "%s|%s|%s|%s" % (self.config.price_fixedprice,
+ self.config.price_fixedpriceminutes,
+ self.config.price_onehourprice,
+ self.config.price_rounding)
+ for client in self.clients:
+ if client.session.state != ClientSession.notConnected:
+ client.sendMessage(priceMessage)
+ if self.config.filter_enable:
+ client.sendMessage(filterMessage)
Modified: trunk/pykafe/server/settings.py
===================================================================
--- trunk/pykafe/server/settings.py 2007-06-03 09:58:49 UTC (rev 78)
+++ trunk/pykafe/server/settings.py 2007-06-03 10:02:27 UTC (rev 79)
@@ -17,6 +17,7 @@
import locale, gettext
locale.setlocale(locale.LC_ALL, "C")
+locale.setlocale(locale.LC_MONETARY, "")
_ = gettext.translation("pyKafe_server", fallback=True).ugettext
def getSiteIP(site):
@@ -46,6 +47,7 @@
self.filterRead()
self.cashiers = []
self.fillCashiers()
+ self.localize()
def fillCashiers(self):
cashierList = Database().run("select username,password,name from members where is_cashier='1'")
@@ -56,17 +58,17 @@
if not text:
text = self.ui.filter_address.text()
#TODO: a QtGui.QProgressDialog() is needed here because getSiteIP takes some time to complete its job
- if not getSiteIP(text):
- if errorDialog:
- QtGui.QMessageBox.critical(self.parent(), _("Error"), _("You didn't enter a valid address"))
- return
+ if errorDialog:
+ if not getSiteIP(text):
+ QtGui.QMessageBox.critical(self.parent, _("Error"), _("You didn't enter a valid address"))
+ return
self.filterItems.append(QtGui.QTreeWidgetItem(self.ui.filter_treeWidget))
self.filterItems[-1].setText(0, text)
def filterDelete(self):
currentFilter = self.ui.filter_treeWidget.currentItem()
if not currentFilter:
- QtGui.QMessageBox.critical(self.parent(), _("Error"), _("You must select a filter first"))
+ QtGui.QMessageBox.critical(self.parent, _("Error"), _("You must select a filter first"))
return
self.ui.filter_treeWidget.takeTopLevelItem(self.ui.filter_treeWidget.indexOfTopLevelItem(currentFilter))
del(self.filterItems[self.filterItems.index(currentFilter)])
@@ -74,7 +76,7 @@
def filterUpdate(self):
currentFilter = self.ui.filter_treeWidget.currentItem()
if not currentFilter:
- QtGui.QMessageBox.critical(self.parent(), _("Error"), _("You must select a filter first"))
+ QtGui.QMessageBox.critical(self.parent, _("Error"), _("You must select a filter first"))
return
currentFilter.setText(0, self.ui.filter_address.text())
@@ -83,6 +85,7 @@
if not currentFilter:
currentFilter = previous
self.ui.filter_address.setText(currentFilter.text(0))
+
def filterEnable(self):
if self.ui.filter_enable.checkState() == QtCore.Qt.Checked:
self.ui.filter_address.setEnabled(True)
@@ -102,7 +105,7 @@
self.ui.filter_browse.setEnabled(False)
def filterBrowse(self):
- fileName = QtGui.QFileDialog.getOpenFileName(self.parent(), _("Select Filter File"), self.config.filter_file[:self.config.filter_file.rfind('/')], "Text files (*.txt)")
+ fileName = QtGui.QFileDialog.getOpenFileName(self.parent, _("Select Filter File"), self.config.filter_file[:self.config.filter_file.rfind('/')], "Text files (*.txt)")
if not fileName:
return
self.ui.filter_file.setText(fileName)
@@ -120,8 +123,12 @@
filter_file.writelines(filters)
filter_file.close()
self.config.set("filter_file", unicode(self.ui.filter_file.text()))
+ self.config.set("price_fixedpriceminutes", str(self.ui.pricing_minutes.value()))
+ self.config.set("price_fixedprice", str(self.ui.pricing_fixed.value()))
+ self.config.set("price_onehourprice", str(self.ui.pricing_onehour.value()))
+ self.config.set("price_rounding", str(self.ui.pricing_rounding.value()))
#TODO: cashier changes should be applied here, not directly to db!
- self.parent.close()
+ self.parent.accept()
def readFromConfig(self):
if self.config.filter_enable:
@@ -129,7 +136,25 @@
self.ui.filter_file.setText(self.config.filter_file)
if self.config.startup_askpassword:
self.ui.checkBox_2.setCheckState(QtCore.Qt.Checked)
+ self.ui.pricing_minutes.setValue(int(self.config.price_fixedpriceminutes))
+ self.ui.pricing_fixed.setValue(float(self.config.price_fixedprice))
+ self.ui.pricing_onehour.setValue(float(self.config.price_onehourprice))
+ self.ui.pricing_rounding.setValue(float(self.config.price_rounding))
+ def localize(self):
+ conv = locale.localeconv()
+ symbol = conv['currency_symbol']
+ if conv['p_cs_precedes']:
+ symbol += ' '
+ self.ui.pricing_fixed.setPrefix(symbol)
+ self.ui.pricing_onehour.setPrefix(symbol)
+ self.ui.pricing_rounding.setPrefix(symbol)
+ else:
+ symbol = ' ' + symbol
+ self.ui.pricing_fixed.setSuffix(symbol)
+ self.ui.pricing_onehour.setSuffix(symbol)
+ self.ui.pricing_rounding.setSuffix(symbol)
+
def filterRead(self):
file = open(unicode(self.ui.filter_file.text()))
filters = file.readlines()
Modified: trunk/pykafe/server/settingswindow.py
===================================================================
--- trunk/pykafe/server/settingswindow.py 2007-06-03 09:58:49 UTC (rev 78)
+++ trunk/pykafe/server/settingswindow.py 2007-06-03 10:02:27 UTC (rev 79)
@@ -67,10 +67,10 @@
self.label_2.setObjectName("label_2")
self.hboxlayout.addWidget(self.label_2)
- self.doubleSpinBox = QtGui.QDoubleSpinBox(self.tab_3)
- self.doubleSpinBox.setMaximum(1000000000.0)
- self.doubleSpinBox.setObjectName("doubleSpinBox")
- self.hboxlayout.addWidget(self.doubleSpinBox)
+ self.pricing_rounding = QtGui.QDoubleSpinBox(self.tab_3)
+ self.pricing_rounding.setMaximum(1000000000.0)
+ self.pricing_rounding.setObjectName("pricing_rounding")
+ self.hboxlayout.addWidget(self.pricing_rounding)
self.gridlayout2.addLayout(self.hboxlayout,2,0,1,1)
spacerItem2 = QtGui.QSpacerItem(20,40,QtGui.QSizePolicy.Minimum,QtGui.QSizePolicy.Expanding)
@@ -85,20 +85,20 @@
self.label_5.setObjectName("label_5")
self.hboxlayout1.addWidget(self.label_5)
- self.spinBox = QtGui.QSpinBox(self.tab_3)
- self.spinBox.setMaximum(3600)
- self.spinBox.setSingleStep(15)
- self.spinBox.setObjectName("spinBox")
- self.hboxlayout1.addWidget(self.spinBox)
+ self.pricing_minutes = QtGui.QSpinBox(self.tab_3)
+ self.pricing_minutes.setMaximum(3600)
+ self.pricing_minutes.setSingleStep(15)
+ self.pricing_minutes.setObjectName("pricing_minutes")
+ self.hboxlayout1.addWidget(self.pricing_minutes)
self.label = QtGui.QLabel(self.tab_3)
self.label.setObjectName("label")
self.hboxlayout1.addWidget(self.label)
- self.pricing_30minutes = QtGui.QDoubleSpinBox(self.tab_3)
- self.pricing_30minutes.setMaximum(1000000000.0)
- self.pricing_30minutes.setObjectName("pricing_30minutes")
- self.hboxlayout1.addWidget(self.pricing_30minutes)
+ self.pricing_fixed = QtGui.QDoubleSpinBox(self.tab_3)
+ self.pricing_fixed.setMaximum(1000000000.0)
+ self.pricing_fixed.setObjectName("pricing_fixed")
+ self.hboxlayout1.addWidget(self.pricing_fixed)
self.gridlayout2.addLayout(self.hboxlayout1,0,0,1,1)
self.hboxlayout2 = QtGui.QHBoxLayout()
@@ -323,7 +323,7 @@
self.tabWidget.setCurrentIndex(0)
self.manager = SettingsManager(self, SettingsWindow, config)
QtCore.QObject.connect(self.buttonBox,QtCore.SIGNAL("accepted()"),self.manager.accept)
- QtCore.QObject.connect(self.buttonBox,QtCore.SIGNAL("rejected()"),SettingsWindow.close)
+ QtCore.QObject.connect(self.buttonBox,QtCore.SIGNAL("rejected()"),SettingsWindow.reject)
QtCore.QObject.connect(self.filter_add,QtCore.SIGNAL("clicked()"),self.manager.filterAdd)
QtCore.QObject.connect(self.filter_delete,QtCore.SIGNAL("clicked()"),self.manager.filterDelete)
QtCore.QObject.connect(self.filter_update,QtCore.SIGNAL("clicked()"),self.manager.filterUpdate)
@@ -337,11 +337,11 @@
QtCore.QObject.connect(self.cashiers_reportsButton,QtCore.SIGNAL("clicked()"),self.manager.cashierReports)
QtCore.QMetaObject.connectSlotsByName(SettingsWindow)
SettingsWindow.setTabOrder(self.tabWidget,self.checkBox_2)
- SettingsWindow.setTabOrder(self.checkBox_2,self.spinBox)
- SettingsWindow.setTabOrder(self.spinBox,self.pricing_30minutes)
- SettingsWindow.setTabOrder(self.pricing_30minutes,self.pricing_onehour)
- SettingsWindow.setTabOrder(self.pricing_onehour,self.doubleSpinBox)
- SettingsWindow.setTabOrder(self.doubleSpinBox,self.filter_enable)
+ SettingsWindow.setTabOrder(self.checkBox_2,self.pricing_minutes)
+ SettingsWindow.setTabOrder(self.pricing_minutes,self.pricing_fixed)
+ SettingsWindow.setTabOrder(self.pricing_fixed,self.pricing_onehour)
+ SettingsWindow.setTabOrder(self.pricing_onehour,self.pricing_rounding)
+ SettingsWindow.setTabOrder(self.pricing_rounding,self.filter_enable)
SettingsWindow.setTabOrder(self.filter_enable,self.filter_file)
SettingsWindow.setTabOrder(self.filter_file,self.filter_browse)
SettingsWindow.setTabOrder(self.filter_browse,self.filter_address)
Modified: trunk/pykafe/server/settingswindow.ui
===================================================================
--- trunk/pykafe/server/settingswindow.ui 2007-06-03 09:58:49 UTC (rev 78)
+++ trunk/pykafe/server/settingswindow.ui 2007-06-03 10:02:27 UTC (rev 79)
@@ -103,7 +103,7 @@
</widget>
</item>
<item>
- <widget class="QDoubleSpinBox" name="doubleSpinBox" >
+ <widget class="QDoubleSpinBox" name="pricing_rounding" >
<property name="maximum" >
<double>1000000000.000000000000000</double>
</property>
@@ -140,7 +140,7 @@
</widget>
</item>
<item>
- <widget class="QSpinBox" name="spinBox" >
+ <widget class="QSpinBox" name="pricing_minutes" >
<property name="maximum" >
<number>3600</number>
</property>
@@ -157,7 +157,7 @@
</widget>
</item>
<item>
- <widget class="QDoubleSpinBox" name="pricing_30minutes" >
+ <widget class="QDoubleSpinBox" name="pricing_fixed" >
<property name="maximum" >
<double>1000000000.000000000000000</double>
</property>
@@ -568,10 +568,10 @@
<tabstops>
<tabstop>tabWidget</tabstop>
<tabstop>checkBox_2</tabstop>
- <tabstop>spinBox</tabstop>
- <tabstop>pricing_30minutes</tabstop>
+ <tabstop>pricing_minutes</tabstop>
+ <tabstop>pricing_fixed</tabstop>
<tabstop>pricing_onehour</tabstop>
- <tabstop>doubleSpinBox</tabstop>
+ <tabstop>pricing_rounding</tabstop>
<tabstop>filter_enable</tabstop>
<tabstop>filter_file</tabstop>
<tabstop>filter_browse</tabstop>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-03 09:58:47
|
Revision: 78
http://pykafe.svn.sourceforge.net/pykafe/?rev=78&view=rev
Author: jnmbk
Date: 2007-06-03 02:58:49 -0700 (Sun, 03 Jun 2007)
Log Message:
-----------
getCurrentState->toString
Modified Paths:
--------------
trunk/pykafe/client/client.py
Modified: trunk/pykafe/client/client.py
===================================================================
--- trunk/pykafe/client/client.py 2007-06-03 09:58:00 UTC (rev 77)
+++ trunk/pykafe/client/client.py 2007-06-03 09:58:49 UTC (rev 78)
@@ -99,14 +99,14 @@
if self.client.session.state == ClientSession.ready:
sendDataToUi(data)
else:
- sys.stderr.write(_("Received ack from server, state was: %s") % self.client.session.getCurrentState())
+ sys.stderr.write(_("Received ack from server, state was: %s") % self.client.session.toString())
elif data[:3] == "003":
if self.client.session.state == ClientSession.ready:
sendDataToUi(data)
if data[3] == "1":
self.client.session.state = ClientSession.loggedIn
else:
- sys.stderr.write(_("Received %s from server, state was: %s") % (data, self.client.session.getCurrentState()))
+ sys.stderr.write(_("Received %s from server, state was: %s") % (data, self.client.session.toString()))
elif data[:3] == "005":
if self.client.session.state == ClientSession.ready:
self.client.session.user = "guest"
@@ -141,7 +141,7 @@
sendDataToServer("000")
self.client.session.setState(ClientSession.requestedOpening)
else:
- sys.stderr.write(_("Client tried to send opening request, state was: %s") % self.client.session.getCurrentState())
+ sys.stderr.write(_("Client tried to send opening request, state was: %s") % self.client.session.toString())
elif data[:3] == "002":
if self.client.session.state == ClientSession.ready:
sendDataToServer(data)
@@ -150,7 +150,7 @@
sendDataToServer("004")
self.client.session.state = ClientSession.ready
else:
- sys.stderr.write(_("Client tried to say I'm here, state was: %s") % self.client.session.getCurrentState())
+ sys.stderr.write(_("Client tried to say I'm here, state was: %s") % self.client.session.toString())
elif data[:3] == "008":
print 8
if self.client.session.state == ClientSession.loggedIn:
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-03 09:57:58
|
Revision: 77
http://pykafe.svn.sourceforge.net/pykafe/?rev=77&view=rev
Author: jnmbk
Date: 2007-06-03 02:58:00 -0700 (Sun, 03 Jun 2007)
Log Message:
-----------
add TODO
Added Paths:
-----------
trunk/TODO
Added: trunk/TODO
===================================================================
--- trunk/TODO (rev 0)
+++ trunk/TODO 2007-06-03 09:58:00 UTC (rev 77)
@@ -0,0 +1,9 @@
+before 0.1_alpha1:
+* complete all state changes
+
+before 0.1_beta1:
+* complete all inline TODO's
+
+before 0.1_rc1:
+* menus should be capable of doing anything
+* add shortcut keys to all functions and buttons
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-02 20:01:36
|
Revision: 76
http://pykafe.svn.sourceforge.net/pykafe/?rev=76&view=rev
Author: jnmbk
Date: 2007-06-02 13:01:38 -0700 (Sat, 02 Jun 2007)
Log Message:
-----------
waiting>ready
Modified Paths:
--------------
trunk/pykafe/client/client.py
trunk/pykafe/client/session.py
trunk/pykafe/server/server.py
trunk/pykafe/server/session.py
Modified: trunk/pykafe/client/client.py
===================================================================
--- trunk/pykafe/client/client.py 2007-06-02 19:23:03 UTC (rev 75)
+++ trunk/pykafe/client/client.py 2007-06-02 20:01:38 UTC (rev 76)
@@ -96,19 +96,19 @@
data = base64.decodestring(self.tcpSocket.readAll())
print "received from server:", data
if data[:3] == "001":
- if self.client.session.state == ClientSession.working:
+ if self.client.session.state == ClientSession.ready:
sendDataToUi(data)
else:
sys.stderr.write(_("Received ack from server, state was: %s") % self.client.session.getCurrentState())
elif data[:3] == "003":
- if self.client.session.state == ClientSession.working:
+ if self.client.session.state == ClientSession.ready:
sendDataToUi(data)
if data[3] == "1":
self.client.session.state = ClientSession.loggedIn
else:
sys.stderr.write(_("Received %s from server, state was: %s") % (data, self.client.session.getCurrentState()))
elif data[:3] == "005":
- if self.client.session.state == ClientSession.working:
+ if self.client.session.state == ClientSession.ready:
self.client.session.user = "guest"
self.client.session.state = ClientSession.loggedIn
sendDataToUi("005")
@@ -137,18 +137,18 @@
sendDataToUi("014")
return
if data[:3] == "000":
- if self.client.session.state == ClientSession.working:
+ if self.client.session.state == ClientSession.ready:
sendDataToServer("000")
self.client.session.setState(ClientSession.requestedOpening)
else:
sys.stderr.write(_("Client tried to send opening request, state was: %s") % self.client.session.getCurrentState())
elif data[:3] == "002":
- if self.client.session.state == ClientSession.working:
+ if self.client.session.state == ClientSession.ready:
sendDataToServer(data)
elif data[:3] == "004":
if self.client.session.state == ClientSession.notReady:
sendDataToServer("004")
- self.client.session.state = ClientSession.working
+ self.client.session.state = ClientSession.ready
else:
sys.stderr.write(_("Client tried to say I'm here, state was: %s") % self.client.session.getCurrentState())
elif data[:3] == "008":
Modified: trunk/pykafe/client/session.py
===================================================================
--- trunk/pykafe/client/session.py 2007-06-02 19:23:03 UTC (rev 75)
+++ trunk/pykafe/client/session.py 2007-06-02 20:01:38 UTC (rev 76)
@@ -16,7 +16,7 @@
class ClientSession:
"""class for managing client sessions"""
- notConnected, notReady, working, loggedIn, requestedOpening, waitingMoney = range(6)
+ notConnected, notReady, ready, loggedIn, requestedOpening, waitingMoney = range(6)
def __init__(self):
self.state = 0
self.user = None
@@ -44,7 +44,7 @@
"""returns current state as a string"""
if self.state == self.notConnected:
return _("Not Connected")
- elif self.state == self.working:
+ elif self.state == self.ready:
return _("Ready")
elif self.state == self.loggedIn:
return _("Logged In")
Modified: trunk/pykafe/server/server.py
===================================================================
--- trunk/pykafe/server/server.py 2007-06-02 19:23:03 UTC (rev 75)
+++ trunk/pykafe/server/server.py 2007-06-02 20:01:38 UTC (rev 76)
@@ -67,7 +67,7 @@
print "data:", data
if data[:3] == "011":
- if client.session.state == ClientSession.notConnected:
+ if client.session.state in (ClientSession.notConnected, ClientSession.notReady):
logger.add(logger.logTypes.information, "client connected", self.config.last_cashier, client.name)
if self.config.filter_enable:
message = "007"
@@ -78,7 +78,7 @@
message += i
client.sendMessage(message)
message = "016"
- message += "%s|%s|%s|%s" % (self.config.price_fixedprice,
+ message += "%s|%s|%s|%s".strip() % (self.config.price_fixedprice,
self.config.price_fixedpriceminutes,
self.config.price_onehourprice,
self.config.price_rounding)
@@ -90,15 +90,18 @@
#TODO: send current session information after taking 004
#message = "013"
#client.sendSession()
+ elif data[:3] == "004":
+ if client.session.state == ClientSession.notReady:
+ client.setState(ClientSession.ready)
elif data[:3] == "000":
#User wants to open
- if client.session.state == ClientSession.working:
+ if client.session.state == ClientSession.ready:
self.emit(QtCore.SIGNAL("stateChange"), self.clientNumber, ClientSession.requestedOpening)
else:
#TODO: illegal activity
pass
elif data[:3] == "002":
- if client.session.state == ClientSession.working:
+ if client.session.state == ClientSession.ready:
username, password = data[3:].split("|")
db = Database()
db.cur.execute("select count() from members where username = ? and password = ?", (username, password))
@@ -266,7 +269,7 @@
state = client.session.state
if state == ClientSession.notConnected:
QtGui.QMessageBox.critical(self.parent(), _("Error"), _("Can't connect to client"))
- if state == ClientSession.working:
+ if state == ClientSession.ready:
client.sendMessage("005")
client.setState(ClientSession.loggedIn, user = "guest")
if state == ClientSession.loggedIn:
@@ -293,7 +296,7 @@
1440, 15)
if answer[1] == False:
return
- if state == ClientSession.working:
+ if state == ClientSession.ready:
client.sendMessage("006" + str(answer[0]))
client.setState(ClientSession.loggedIn, user = "guest", endTime = QtCore.QDateTime.currentDateTime().addSecs(answer[0]*60))
@@ -305,16 +308,16 @@
state = client.session.state
if state == ClientSession.notConnected:
QtGui.QMessageBox.critical(self.parent(), _("Error"), _("Can't connect to client"))
- elif state == ClientSession.working:
+ elif state == ClientSession.ready:
QtGui.QMessageBox.information(self.parent(), _("Information"), _("Client is already stopped"))
elif state == ClientSession.loggedIn:
answer = QtGui.QMessageBox.question(self.parent(), _("Are you sure?"), _("Do you really want to stop this client?"), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes).__or__(QtGui.QMessageBox.No), QtGui.QMessageBox.No)
if answer == QtGui.QMessageBox.Yes:
client.sendMessage("009")
- client.setState(ClientSession.working)
+ client.setState(ClientSession.ready)
elif state == ClientSession.requestedOpening:
client.sendMessage("0010")
- client.setState(ClientSession.working)
+ client.setState(ClientSession.ready)
def changeButton(self):
pass
Modified: trunk/pykafe/server/session.py
===================================================================
--- trunk/pykafe/server/session.py 2007-06-02 19:23:03 UTC (rev 75)
+++ trunk/pykafe/server/session.py 2007-06-02 20:01:38 UTC (rev 76)
@@ -16,7 +16,7 @@
class ClientSession:
"""class for managing client sessions"""
- notConnected, notReady, working, loggedIn, requestedOpening, waitingMoney = range(6)
+ notConnected, notReady, ready, loggedIn, requestedOpening, waitingMoney = range(6)
def __init__(self):
self.state = 0
self.user = None
@@ -44,7 +44,7 @@
"""returns current state as a string"""
if self.state == self.notConnected:
return _("Not Connected")
- elif self.state == self.working:
+ elif self.state == self.ready:
return _("Ready")
elif self.state == self.loggedIn:
return _("Logged In")
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-02 19:23:02
|
Revision: 75
http://pykafe.svn.sourceforge.net/pykafe/?rev=75&view=rev
Author: jnmbk
Date: 2007-06-02 12:23:03 -0700 (Sat, 02 Jun 2007)
Log Message:
-----------
fixed
Modified Paths:
--------------
trunk/pykafe/client/client.py
Modified: trunk/pykafe/client/client.py
===================================================================
--- trunk/pykafe/client/client.py 2007-06-02 19:22:36 UTC (rev 74)
+++ trunk/pykafe/client/client.py 2007-06-02 19:23:03 UTC (rev 75)
@@ -89,7 +89,6 @@
QtCore.QObject.connect(self.tcpSocket, QtCore.SIGNAL("readyRead()"), self.readServer)
else:
sys.stderr.write(_("Unauthorized server tried to connect, aborting connection: %s") % self.tcpSocket.peerAddress())
- self.terminate()
self.tcpSocket.waitForDisconnected()
self.exec_()
@@ -130,7 +129,6 @@
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)
- self.terminate()
def readUi(self):
data = base64.decodestring(self.tcpSocket.readAll())
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-02 19:22:41
|
Revision: 74
http://pykafe.svn.sourceforge.net/pykafe/?rev=74&view=rev
Author: jnmbk
Date: 2007-06-02 12:22:36 -0700 (Sat, 02 Jun 2007)
Log Message:
-----------
this is the reason of hanging
Modified Paths:
--------------
trunk/pykafe/server/server.py
Modified: trunk/pykafe/server/server.py
===================================================================
--- trunk/pykafe/server/server.py 2007-06-02 17:13:16 UTC (rev 73)
+++ trunk/pykafe/server/server.py 2007-06-02 19:22:36 UTC (rev 74)
@@ -28,8 +28,8 @@
_ = gettext.translation("pyKafe_server", fallback=True).ugettext
class MessageSender(QtCore.QThread):
- def __init__(self, parent, ip, port, message):
- QtCore.QThread.__init__(self, parent)
+ def __init__(self, ip, port, message):
+ QtCore.QThread.__init__(self)
self.ip, self.port, self.message = ip, port, message
print "sending %s to %s:%d" % (message, ip, port)
def run(self):
@@ -39,7 +39,6 @@
tcpSocket.write(base64.encodestring(self.message))
tcpSocket.waitForBytesWritten()
tcpSocket.disconnectFromHost()
- self.terminate()
class ListenerThread(QtCore.QThread):
def __init__(self, parent, socketDescriptor, clients, config):
@@ -91,7 +90,6 @@
#TODO: send current session information after taking 004
#message = "013"
#client.sendSession()
- pass
elif data[:3] == "000":
#User wants to open
if client.session.state == ClientSession.working:
@@ -114,7 +112,6 @@
elif data[:3] == "008":
client.setState(ClientSession.waitingMoney)
self.tcpSocket.disconnectFromHost()
- self.terminate()
class ClientThread(QtCore.QThread):
def __init__(self, parent, config):
@@ -159,7 +156,7 @@
self.setBackground(i, QtGui.QBrush(QtGui.QColor(colorName)))
def sendMessage(self, message):
- thread = MessageSender(self.parent(), self.ip, int(self.config.network_port), message)
+ thread = MessageSender(self.ip, int(self.config.network_port), message)
thread.start()
self.threads.append(thread)
print "This client has %d threads" % len(self.threads)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-02 17:13:14
|
Revision: 73
http://pykafe.svn.sourceforge.net/pykafe/?rev=73&view=rev
Author: jnmbk
Date: 2007-06-02 10:13:16 -0700 (Sat, 02 Jun 2007)
Log Message:
-----------
fix something
Modified Paths:
--------------
trunk/pykafe/client/client.py
Modified: trunk/pykafe/client/client.py
===================================================================
--- trunk/pykafe/client/client.py 2007-06-02 17:09:07 UTC (rev 72)
+++ trunk/pykafe/client/client.py 2007-06-02 17:13:16 UTC (rev 73)
@@ -31,6 +31,7 @@
def run(self):
while not sendDataToServer(self.data):
self.emit(QtCore.SIGNAL("connectionError"))
+ print "connection error retrying"
time.sleep(10)
self.emit(QtCore.SIGNAL("messageSent"))
@@ -84,11 +85,11 @@
print "connection request from:", self.tcpSocket.peerAddress().toString()
if self.tcpSocket.peerAddress() == QtNetwork.QHostAddress(QtNetwork.QHostAddress.LocalHost):
QtCore.QObject.connect(self.tcpSocket, QtCore.SIGNAL("readyRead()"), self.readUi)
- elif self.tcpSocket.peerAddress() == QtNetwork.QHostAddress(self.client.config.network.serverIP):
+ elif self.tcpSocket.peerAddress() == QtNetwork.QHostAddress(config.network_serverIP):
QtCore.QObject.connect(self.tcpSocket, QtCore.SIGNAL("readyRead()"), self.readServer)
else:
sys.stderr.write(_("Unauthorized server tried to connect, aborting connection: %s") % self.tcpSocket.peerAddress())
- self.exit()
+ self.terminate()
self.tcpSocket.waitForDisconnected()
self.exec_()
@@ -122,6 +123,7 @@
file = open("/etc/pyKafe/iptables.conf", "w")
file.write(iptablesFile)
file.close()
+ print iptablesFile
os.system("iptables-restore < /etc/pyKafe/iptables.conf")
elif data[:3] == "010":
os.system("init 0")
@@ -189,6 +191,7 @@
sys.exit()
thread = SenderThread("011")
QtCore.QObject.connect(thread, QtCore.SIGNAL("messageSent"), self.initialConnection)
+ thread.start()
self.threads = [thread]
print "trying to connect to server"
def incomingConnection(self, socketDescriptor):
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-02 17:09:05
|
Revision: 72
http://pykafe.svn.sourceforge.net/pykafe/?rev=72&view=rev
Author: jnmbk
Date: 2007-06-02 10:09:07 -0700 (Sat, 02 Jun 2007)
Log Message:
-----------
one little todo
Modified Paths:
--------------
trunk/pykafe/server/settings.py
Modified: trunk/pykafe/server/settings.py
===================================================================
--- trunk/pykafe/server/settings.py 2007-06-02 16:56:31 UTC (rev 71)
+++ trunk/pykafe/server/settings.py 2007-06-02 17:09:07 UTC (rev 72)
@@ -21,7 +21,7 @@
def getSiteIP(site):
try:
- return socket.gethostbyname(site)
+ return socket.gethostbyname(str(site))
except socket.gaierror:
return False
@@ -55,6 +55,7 @@
def filterAdd(self, text = None, errorDialog = True):
if not text:
text = self.ui.filter_address.text()
+ #TODO: a QtGui.QProgressDialog() is needed here because getSiteIP takes some time to complete its job
if not getSiteIP(text):
if errorDialog:
QtGui.QMessageBox.critical(self.parent(), _("Error"), _("You didn't enter a valid address"))
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-02 16:56:28
|
Revision: 71
http://pykafe.svn.sourceforge.net/pykafe/?rev=71&view=rev
Author: jnmbk
Date: 2007-06-02 09:56:31 -0700 (Sat, 02 Jun 2007)
Log Message:
-----------
eclipse imports things without asking :P
Modified Paths:
--------------
trunk/pykafe/server/settings.py
Modified: trunk/pykafe/server/settings.py
===================================================================
--- trunk/pykafe/server/settings.py 2007-06-02 16:24:08 UTC (rev 70)
+++ trunk/pykafe/server/settings.py 2007-06-02 16:56:31 UTC (rev 71)
@@ -13,7 +13,6 @@
from PyQt4 import QtGui, QtCore
from pysqlite2 import dbapi2 as sqlite
from database import Database
-from client import getSiteIP
import sha, socket
import locale, gettext
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-02 16:24:06
|
Revision: 70
http://pykafe.svn.sourceforge.net/pykafe/?rev=70&view=rev
Author: jnmbk
Date: 2007-06-02 09:24:08 -0700 (Sat, 02 Jun 2007)
Log Message:
-----------
clean up some code
note: we have a hanging gui now :/
Modified Paths:
--------------
trunk/pykafe/server/server.py
Modified: trunk/pykafe/server/server.py
===================================================================
--- trunk/pykafe/server/server.py 2007-06-02 14:15:55 UTC (rev 69)
+++ trunk/pykafe/server/server.py 2007-06-02 16:24:08 UTC (rev 70)
@@ -39,6 +39,7 @@
tcpSocket.write(base64.encodestring(self.message))
tcpSocket.waitForBytesWritten()
tcpSocket.disconnectFromHost()
+ self.terminate()
class ListenerThread(QtCore.QThread):
def __init__(self, parent, socketDescriptor, clients, config):
@@ -65,7 +66,7 @@
client = self.clients[self.clientNumber]
data = base64.decodestring(self.tcpSocket.readAll())
print "data:", data
-
+
if data[:3] == "011":
if client.session.state == ClientSession.notConnected:
logger.add(logger.logTypes.information, "client connected", self.config.last_cashier, client.name)
@@ -77,14 +78,15 @@
for i in filters:
message += i
client.sendMessage(message)
- self.emit(QtCore.SIGNAL("stateChange"), self.clientNumber, ClientSession.working)
message = "016"
message += "%s|%s|%s|%s" % (self.config.price_fixedprice,
self.config.price_fixedpriceminutes,
self.config.price_onehourprice,
self.config.price_rounding)
client.sendMessage(message)
+ self.emit(QtCore.SIGNAL("stateChange"), self.clientNumber, ClientSession.notReady)
else:
+ self.emit(QtCore.SIGNAL("stateChange"), self.clientNumber, ClientSession.notReady)
#client is somehow rebooted
#TODO: send current session information after taking 004
#message = "013"
@@ -158,7 +160,7 @@
def sendMessage(self, message):
thread = MessageSender(self.parent(), self.ip, int(self.config.network_port), message)
- thread.run()
+ thread.start()
self.threads.append(thread)
print "This client has %d threads" % len(self.threads)
@@ -216,8 +218,6 @@
self.ui = ui
if self.config.startup_askpassword:
self.config.set("last_cashier", cashier)
- else:
- self.cashier = self.config.last_cashier
logger.add(logger.logTypes.information, _("cashier login to server"), self.config.last_cashier)
if not self.listen(QtNetwork.QHostAddress(QtNetwork.QHostAddress.Any), int(self.config.network_port)):
logger.add(logger.logTypes.error, _("Unable to start server: %s") % self.errorString(), self.config.last_cashier)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-02 14:15:53
|
Revision: 69
http://pykafe.svn.sourceforge.net/pykafe/?rev=69&view=rev
Author: jnmbk
Date: 2007-06-02 07:15:55 -0700 (Sat, 02 Jun 2007)
Log Message:
-----------
I changed my local ip
Modified Paths:
--------------
trunk/pykafe/client/config.py
Modified: trunk/pykafe/client/config.py
===================================================================
--- trunk/pykafe/client/config.py 2007-06-02 14:03:44 UTC (rev 68)
+++ trunk/pykafe/client/config.py 2007-06-02 14:15:55 UTC (rev 69)
@@ -12,7 +12,7 @@
#TODO: Read config from config file
class PykafeConfiguration:
- network_serverIP = "192.168.2.2"
+ network_serverIP = "192.168.2.6"
network_port = 23105
network_localPort = 23106
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-02 14:03:42
|
Revision: 68
http://pykafe.svn.sourceforge.net/pykafe/?rev=68&view=rev
Author: jnmbk
Date: 2007-06-02 07:03:44 -0700 (Sat, 02 Jun 2007)
Log Message:
-----------
sync with new system
Modified Paths:
--------------
trunk/pykafe/client/clientmain.py
Modified: trunk/pykafe/client/clientmain.py
===================================================================
--- trunk/pykafe/client/clientmain.py 2007-06-02 13:44:46 UTC (rev 67)
+++ trunk/pykafe/client/clientmain.py 2007-06-02 14:03:44 UTC (rev 68)
@@ -18,11 +18,7 @@
locale.setlocale(locale.LC_ALL, "C")
_ = gettext.translation("pyKafe_client", fallback=True).ugettext
-class CurrencyConfig:
- prefix = ""
- suffix = " YTL"
- fixedPrice = 0.50
- tenMinutePrice = 0.15
+config = PykafeConfiguration()
class SenderThread(QtCore.QThread):
def __init__(self, parent, data):
@@ -30,8 +26,8 @@
self.data = data
def run(self):
tcpSocket = QtNetwork.QTcpSocket()
- tcpSocket.connectToHost(QtNetwork.QHostAddress(QtNetwork.QHostAddress.LocalHost), PykafeConfiguration().network.port)
- print "connecting to:", QtNetwork.QHostAddress(QtNetwork.QHostAddress.LocalHost).toString(), PykafeConfiguration().network.port
+ tcpSocket.connectToHost(QtNetwork.QHostAddress(QtNetwork.QHostAddress.LocalHost), config.network_port)
+ print "connecting to:", QtNetwork.QHostAddress(QtNetwork.QHostAddress.LocalHost).toString(), config.network_port
tcpSocket.waitForConnected(-1)
tcpSocket.write(base64.encodestring(self.data))
tcpSocket.waitForBytesWritten()
@@ -70,7 +66,7 @@
def __init__(self, parent, ui):
QtNetwork.QTcpServer.__init__(self, parent)
self.ui = ui
- self.listen(QtNetwork.QHostAddress(QtNetwork.QHostAddress.LocalHost), PykafeConfiguration().network.localPort)
+ self.listen(QtNetwork.QHostAddress(QtNetwork.QHostAddress.LocalHost), config.network_localPort)
self.threads = []
def incomingConnection(self, socketDescriptor):
thread = ListenerThread(self.parent(), socketDescriptor)
@@ -100,26 +96,15 @@
self.do()
time.sleep(60)
def do(self):
- currentTime = QtCore.QDateTime.currentDateTime()
- usedTime = self.startTime.secsTo(currentTime)
- price = usedTime/600*self.currencyConfig.tenMinutePrice
- remainingTime = QtCore.QDateTime()
- if self.endTime.isValid():
- remainingTime.setTime_t(currentTime.secsTo(self.endTime))
- else:
- remainingTime.setTime_t(0)
- temp = usedTime
- usedTime = QtCore.QDateTime()
- usedTime.setTime_t(temp)
- text = self.startTime.time().toString("hh.mm") + "\n" +\
- remainingTime.toUTC().time().toString("hh.mm") + "\n" +\
- usedTime.toUTC().time().toString("hh.mm")
- self.emit(QtCore.SIGNAL("changeTimeLabel"), text)
- if self.currencyConfig.fixedPrice < price:
- text = self.currencyConfig.prefix + str(price) + self.currencyConfig.suffix
- else:
- text = self.currencyConfig.prefix + str(self.currencyConfig.fixedPrice) + self.currencyConfig.suffix
- self.emit(QtCore.SIGNAL("changeMoneyLabel"), text)
+ tcpSocket = QtNetwork.QTcpSocket()
+ tcpSocket.connectToHost(QtNetwork.QHostAddress(QtNetwork.QHostAddress.LocalHost), config.network_port)
+ tcpSocket.waitForConnected()
+ tcpSocket.write("017")
+ tcpSocket.waitForReadyRead()
+ text = tcpSocket.readAll()
+ text1, text2 = text.rsplit('|', 1)
+ self.emit(QtCore.SIGNAL("changeTimeLabel"), text1)
+ self.emit(QtCore.SIGNAL("changeMoneyLabel"), text2)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
@@ -202,7 +187,7 @@
self.trayIcon.show()
self.ui = MainWindow
QtCore.QObject.connect(self.trayIcon, QtCore.SIGNAL("activated(QSystemTrayIcon::ActivationReason)"), self.iconActivated)
- thread = TimerThread(MainWindow, QtCore.QDateTime.currentDateTime(), QtCore.QDateTime(), CurrencyConfig())
+ thread = TimerThread(MainWindow, QtCore.QDateTime.currentDateTime(), QtCore.QDateTime())
QtCore.QObject.connect(thread,QtCore.SIGNAL("changeTimeLabel"),self.timeLabel.setText)
QtCore.QObject.connect(thread,QtCore.SIGNAL("changeMoneyLabel"),self.moneyLabel.setText)
thread.start()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-02 13:44:46
|
Revision: 67
http://pykafe.svn.sourceforge.net/pykafe/?rev=67&view=rev
Author: jnmbk
Date: 2007-06-02 06:44:46 -0700 (Sat, 02 Jun 2007)
Log Message:
-----------
We'll calculate pricing things in root side
Currency things are handled as in python 2.5 now
Modified Paths:
--------------
trunk/pykafe/client/client.py
Added Paths:
-----------
trunk/pykafe/client/currencyformat.py
Modified: trunk/pykafe/client/client.py
===================================================================
--- trunk/pykafe/client/client.py 2007-06-02 09:56:16 UTC (rev 66)
+++ trunk/pykafe/client/client.py 2007-06-02 13:44:46 UTC (rev 67)
@@ -15,6 +15,7 @@
from PyQt4 import QtNetwork, QtCore
from config import PykafeConfiguration
from session import ClientSession
+from currencyformat import currency
import base64, sys, os, socket, time
import locale, gettext
@@ -156,6 +157,27 @@
print "gdg"
sendDataToServer(data)
os.system("service kdebase stop && sleep 3 && service kdebase start")
+ elif data[:3] == "017":
+ currentTime = QtCore.QDateTime.currentDateTime()
+ usedTime = self.client.session.startTime.secsTo(currentTime)
+ price = (usedTime/600)*(config.price_onehourprice/6.0)
+ remainingTime = QtCore.QDateTime()
+ if self.endTime.isValid():
+ remainingTime.setTime_t(currentTime.secsTo(self.client.session.endTime))
+ else:
+ remainingTime.setTime_t(0)
+ temp = usedTime
+ usedTime = QtCore.QDateTime()
+ usedTime.setTime_t(temp)
+ text = self.startTime.time().toString("hh.mm") + "\n" +\
+ remainingTime.toUTC().time().toString("hh.mm") + "\n" +\
+ usedTime.toUTC().time().toString("hh.mm") + "|"
+ if float(config.price_fixedprice) < price:
+ text += currency(price)
+ else:
+ text += currency(float(config.price_fixedprice))
+ self.tcpSocket.write(text)
+ self.tcpSocket.waitForBytesWritten()
self.exit()
class PykafeClient(QtNetwork.QTcpServer):
Added: trunk/pykafe/client/currencyformat.py
===================================================================
--- trunk/pykafe/client/currencyformat.py (rev 0)
+++ trunk/pykafe/client/currencyformat.py 2007-06-02 13:44:46 UTC (rev 67)
@@ -0,0 +1,93 @@
+# -*- 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.
+#
+
+import locale
+
+#taken from python 2.5 sources
+#TODO: Remove these when Python 2.5 is widely available
+def format(percent, value, grouping=False, monetary=False, *additional):
+ """Returns the locale-aware substitution of a %? specifier
+ (percent).
+
+ additional is for format strings which contain one or more
+ '*' modifiers."""
+ # this is only for one-percent-specifier strings and this should be checked
+ if percent[0] != '%':
+ raise ValueError("format() must be given exactly one %char "
+ "format specifier")
+ if additional:
+ formatted = percent % ((value,) + additional)
+ else:
+ formatted = percent % value
+ # floats and decimal ints need special action!
+ if percent[-1] in 'eEfFgG':
+ seps = 0
+ parts = formatted.split('.')
+ if grouping:
+ parts[0], seps = locale._group(parts[0], monetary=monetary)
+ decimal_point = locale.localeconv()[monetary and 'mon_decimal_point'
+ or 'decimal_point']
+ formatted = decimal_point.join(parts)
+ while seps:
+ sp = formatted.find(' ')
+ if sp == -1: break
+ formatted = formatted[:sp] + formatted[sp+1:]
+ seps -= 1
+ elif percent[-1] in 'diu':
+ if grouping:
+ formatted = locale._group(formatted, monetary=monetary)[0]
+ return formatted
+
+def currency(val, symbol=True, grouping=False, international=False):
+ """Formats val according to the currency settings
+ in the current locale."""
+ conv = locale.localeconv()
+
+ # check for illegal values
+ digits = conv[international and 'int_frac_digits' or 'frac_digits']
+ if digits == 127:
+ raise ValueError("Currency formatting is not possible using "
+ "the 'C' locale.")
+
+ s = format('%%.%if' % digits, abs(val), grouping, monetary=True)
+ # '<' and '>' are markers if the sign must be inserted between symbol and value
+ s = '<' + s + '>'
+
+ if symbol:
+ smb = conv[international and 'int_curr_symbol' or 'currency_symbol']
+ precedes = conv[val<0 and 'n_cs_precedes' or 'p_cs_precedes']
+ separated = conv[val<0 and 'n_sep_by_space' or 'p_sep_by_space']
+
+ if precedes:
+ s = smb + (separated and ' ' or '') + s
+ else:
+ s = s + (separated and ' ' or '') + smb
+
+ sign_pos = conv[val<0 and 'n_sign_posn' or 'p_sign_posn']
+ sign = conv[val<0 and 'negative_sign' or 'positive_sign']
+
+ if sign_pos == 0:
+ s = '(' + s + ')'
+ elif sign_pos == 1:
+ s = sign + s
+ elif sign_pos == 2:
+ s = s + sign
+ elif sign_pos == 3:
+ s = s.replace('<', sign)
+ elif sign_pos == 4:
+ s = s.replace('>', sign)
+ else:
+ # the default if nothing specified;
+ # this should be the most fitting sign position
+ s = sign + s
+
+ return s.replace('<', '').replace('>', '')
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-02 09:56:14
|
Revision: 66
http://pykafe.svn.sourceforge.net/pykafe/?rev=66&view=rev
Author: jnmbk
Date: 2007-06-02 02:56:16 -0700 (Sat, 02 Jun 2007)
Log Message:
-----------
logging works and a new state was added to session
Modified Paths:
--------------
trunk/pykafe/server/logger.py
trunk/pykafe/server/server.py
trunk/pykafe/server/session.py
trunk/pykafe/server/settings.py
Modified: trunk/pykafe/server/logger.py
===================================================================
--- trunk/pykafe/server/logger.py 2007-06-02 09:55:38 UTC (rev 65)
+++ trunk/pykafe/server/logger.py 2007-06-02 09:56:16 UTC (rev 66)
@@ -9,9 +9,12 @@
#
# Please read the COPYING file.
#
+
from database import Database
from PyQt4 import QtCore
-def add(self, log_type, log_value, cashier, computer = "", member = "", income = ""):
+def add(log_type, log_value, cashier, computer = "", member = "", income = ""):
date = QtCore.QDateTime.currentDateTime().toTime_t()
- Database().runOnce("insert into logs (date, log_type, log_value, cashier, computer, member, income) values (?,?,?,?,?,?,?)", date, log_type, log_value, cashier, computer, member, income)
+ Database().runOnce("insert into logs (date, log_type, log_value, cashier, computer, member, income) values (?,?,?,?,?,?,?)", (date, log_type, log_value, cashier, computer, member, income))
+class logTypes:
+ information, warning, error, emergency = range(4)
Modified: trunk/pykafe/server/server.py
===================================================================
--- trunk/pykafe/server/server.py 2007-06-02 09:55:38 UTC (rev 65)
+++ trunk/pykafe/server/server.py 2007-06-02 09:56:16 UTC (rev 66)
@@ -41,10 +41,11 @@
tcpSocket.disconnectFromHost()
class ListenerThread(QtCore.QThread):
- def __init__(self, parent, socketDescriptor, clients):
+ def __init__(self, parent, socketDescriptor, clients, config):
QtCore.QThread.__init__(self, parent)
self.socketDescriptor = socketDescriptor
self.clients = clients
+ self.config = config
def run(self):
self.tcpSocket = QtNetwork.QTcpSocket()
@@ -64,12 +65,30 @@
client = self.clients[self.clientNumber]
data = base64.decodestring(self.tcpSocket.readAll())
print "data:", data
- if data[:3] == "004":
- #Says I'm here
+
+ if data[:3] == "011":
if client.session.state == ClientSession.notConnected:
+ logger.add(logger.logTypes.information, "client connected", self.config.last_cashier, client.name)
+ if self.config.filter_enable:
+ message = "007"
+ filterFile = open(self.config.filter_file)
+ filters = filterFile.readlines()
+ filterFile.close()
+ for i in filters:
+ message += i
+ client.sendMessage(message)
self.emit(QtCore.SIGNAL("stateChange"), self.clientNumber, ClientSession.working)
+ message = "016"
+ message += "%s|%s|%s|%s" % (self.config.price_fixedprice,
+ self.config.price_fixedpriceminutes,
+ self.config.price_onehourprice,
+ self.config.price_rounding)
+ client.sendMessage(message)
else:
- #TODO: illegal activity
+ #client is somehow rebooted
+ #TODO: send current session information after taking 004
+ #message = "013"
+ #client.sendSession()
pass
elif data[:3] == "000":
#User wants to open
@@ -82,16 +101,18 @@
if client.session.state == ClientSession.working:
username, password = data[3:].split("|")
db = Database()
- db.cur.execute("select count() from members where username = ? and password = ?", (username, sha.new(password).hexdigest()))
+ db.cur.execute("select count() from members where username = ? and password = ?", (username, password))
if db.cur.fetchall()[0][0]:
client.sendMessage("0031")
+ logger.add(logger.logTypes.information, _("member login"), self.config.last_cashier, client.name, username)
client.setState(ClientSession.loggedIn, user = username)
else:
- #TODO: log: wrong password or username entered
+ logger.add(logger.logTypes.warning, _("Someone entered wrong password or username"), self.config.last_cashier, client.name, username)
client.sendMessage("0030")
elif data[:3] == "008":
client.setState(ClientSession.waitingMoney)
self.tcpSocket.disconnectFromHost()
+ self.terminate()
class ClientThread(QtCore.QThread):
def __init__(self, parent, config):
@@ -144,23 +165,6 @@
def setState(self, state, user = "guest", endTime = ""):
if self.session.state == ClientSession.requestedOpening and state != ClientSession.requestedOpening:
self.changeColor("white")
- if state == ClientSession.working:
- if self.session.state == ClientSession.loggedIn:
- #TODO: calculate time and money
-
- #logger.add("logout", "", self.config.cashier, self.name, user, income)
- #save detailed session information to logs
- pass
- if self.session.state == ClientSession.notConnected:
- if self.config.filter_enable:
- #send filter
- message = "007"
- filterFile = open(self.config.filter_file)
- filters = filterFile.readlines()
- filterFile.close()
- for i in filters:
- message += i
- self.sendMessage(message)
elif state == ClientSession.loggedIn:
self.session.user = user
self.setText(2, user)
@@ -175,9 +179,13 @@
elif state == ClientSession.waitingMoney:
self.changeColor("red")
self.session.state = state
- self.setText(1, self.session.getCurrentState())
- #print "state is now %s" % self.session.getCurrentState()
+ self.setText(1, self.session.toString())
+ def sendSession(self):
+ #send latest session to the client
+ message = "012"
+ self.sendMessage(message)
+
class Product(QtGui.QTreeWidgetItem):
def __init__(self, parent, productInformation):
QtGui.QTreeWidgetItem.__init__(self, parent)
@@ -210,11 +218,11 @@
self.config.set("last_cashier", cashier)
else:
self.cashier = self.config.last_cashier
- print "Current cashier is:", self.config.last_cashier
+ logger.add(logger.logTypes.information, _("cashier login to server"), self.config.last_cashier)
if not self.listen(QtNetwork.QHostAddress(QtNetwork.QHostAddress.Any), int(self.config.network_port)):
- #TODO: retry button
+ logger.add(logger.logTypes.error, _("Unable to start server: %s") % self.errorString(), self.config.last_cashier)
QtGui.QMessageBox.critical(self.parent(), _("Connection Error"), _("Unable to start server: %s") % self.errorString())
- exit()
+ self.parent().close()
self.clients = []
for clientInformation in self.config.clientList:
self.clients.append(Client(ui.main_treeWidget, clientInformation, self.config))
@@ -244,8 +252,7 @@
self.products.append(Product(self.ui.orders_treeWidget_2, product))
def incomingConnection(self, socketDescriptor):
- print "connection came"
- thread = ListenerThread(self.parent(), socketDescriptor, self.clients)
+ thread = ListenerThread(self.parent(), socketDescriptor, self.clients, self.config)
self.threads.append(thread)
QtCore.QObject.connect(thread, QtCore.SIGNAL("stateChange"), self.setClientState)
thread.start()
Modified: trunk/pykafe/server/session.py
===================================================================
--- trunk/pykafe/server/session.py 2007-06-02 09:55:38 UTC (rev 65)
+++ trunk/pykafe/server/session.py 2007-06-02 09:56:16 UTC (rev 66)
@@ -40,7 +40,7 @@
return True
else:
return False
- def getCurrentState(self):
+ def toString(self):
"""returns current state as a string"""
if self.state == self.notConnected:
return _("Not Connected")
Modified: trunk/pykafe/server/settings.py
===================================================================
--- trunk/pykafe/server/settings.py 2007-06-02 09:55:38 UTC (rev 65)
+++ trunk/pykafe/server/settings.py 2007-06-02 09:56:16 UTC (rev 66)
@@ -13,12 +13,19 @@
from PyQt4 import QtGui, QtCore
from pysqlite2 import dbapi2 as sqlite
from database import Database
-import sha
+from client import getSiteIP
+import sha, socket
import locale, gettext
locale.setlocale(locale.LC_ALL, "C")
_ = gettext.translation("pyKafe_server", fallback=True).ugettext
+def getSiteIP(site):
+ try:
+ return socket.gethostbyname(site)
+ except socket.gaierror:
+ return False
+
class Cashier(QtGui.QTreeWidgetItem):
def __init__(self, parent, cashierInformation):
QtGui.QTreeWidgetItem.__init__(self, parent)
@@ -49,7 +56,7 @@
def filterAdd(self, text = None, errorDialog = True):
if not text:
text = self.ui.filter_address.text()
- if not text:
+ if not getSiteIP(text):
if errorDialog:
QtGui.QMessageBox.critical(self.parent(), _("Error"), _("You didn't enter a valid address"))
return
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-02 09:55:36
|
Revision: 65
http://pykafe.svn.sourceforge.net/pykafe/?rev=65&view=rev
Author: jnmbk
Date: 2007-06-02 02:55:38 -0700 (Sat, 02 Jun 2007)
Log Message:
-----------
changes in session and config, now it keeps trying until connected to a server
Modified Paths:
--------------
trunk/pykafe/client/client.py
trunk/pykafe/client/config.py
trunk/pykafe/client/login.py
trunk/pykafe/client/session.py
Modified: trunk/pykafe/client/client.py
===================================================================
--- trunk/pykafe/client/client.py 2007-06-02 09:54:44 UTC (rev 64)
+++ trunk/pykafe/client/client.py 2007-06-02 09:55:38 UTC (rev 65)
@@ -15,23 +15,40 @@
from PyQt4 import QtNetwork, QtCore
from config import PykafeConfiguration
from session import ClientSession
-import base64, sys, os, socket
+import base64, sys, os, socket, time
import locale, gettext
locale.setlocale(locale.LC_ALL, "C")
_ = gettext.translation("pyKafe_client", fallback=True).ugettext
+config = PykafeConfiguration()
+
+class SenderThread(QtCore.QThread):
+ def __init__(self, data):
+ QtCore.QThread.__init__(self)
+ self.data = data
+ def run(self):
+ while not sendDataToServer(self.data):
+ self.emit(QtCore.SIGNAL("connectionError"))
+ time.sleep(10)
+ self.emit(QtCore.SIGNAL("messageSent"))
+
def sendDataToServer(data):
tcpSocket = QtNetwork.QTcpSocket()
- tcpSocket.connectToHost(QtNetwork.QHostAddress(PykafeConfiguration().network.serverIP), PykafeConfiguration().network.port)
+ tcpSocket.connectToHost(QtNetwork.QHostAddress(config.network_serverIP), config.network_port)
tcpSocket.waitForConnected(-1)
- tcpSocket.write(base64.encodestring(data))
- tcpSocket.waitForBytesWritten()
- print "sent to server:", data
+ print "trying to send:", data
+ if tcpSocket.write(base64.encodestring(data)) == -1:
+ print "failed"
+ return False
+ else:
+ print "success"
+ tcpSocket.waitForBytesWritten()
+ return True
def sendDataToUi(data):
tcpSocket = QtNetwork.QTcpSocket()
- tcpSocket.connectToHost(QtNetwork.QHostAddress(QtNetwork.QHostAddress.LocalHost), PykafeConfiguration().network.localPort)
+ tcpSocket.connectToHost(QtNetwork.QHostAddress(QtNetwork.QHostAddress.LocalHost), config.network_localPort)
tcpSocket.waitForConnected(-1)
tcpSocket.write(base64.encodestring(data))
tcpSocket.waitForBytesWritten()
@@ -95,12 +112,11 @@
self.client.session.state = ClientSession.loggedIn
sendDataToUi("005")
elif data[:3] == "007":
- self.emit(QtCore.SIGNAL("filter"), data[4:])
iptablesFile = "*filter\n:INPUT ACCEPT [94:7144]\n:FORWARD ACCEPT [0:0]\n:OUTPUT ACCEPT [177:10428]\n"
for site in data[3:].split('\n'):
ip = getSiteIP(site)
if ip:
- iptablesFile += "-A INPUT -s %s -j DROP\n" % site
+ iptablesFile += "-A INPUT -s %s -j DROP\n" % ip
iptablesFile += "COMMIT\n"
file = open("/etc/pyKafe/iptables.conf", "w")
file.write(iptablesFile)
@@ -108,11 +124,17 @@
os.system("iptables-restore < /etc/pyKafe/iptables.conf")
elif data[:3] == "010":
os.system("init 0")
- self.exit()
+ 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)
+ self.terminate()
def readUi(self):
data = base64.decodestring(self.tcpSocket.readAll())
print "received from user:", data
+ if self.client.session.state == ClientSession.notConnected:
+ sendDataToUi("014")
+ return
if data[:3] == "000":
if self.client.session.state == ClientSession.working:
sendDataToServer("000")
@@ -123,7 +145,7 @@
if self.client.session.state == ClientSession.working:
sendDataToServer(data)
elif data[:3] == "004":
- if self.client.session.state == ClientSession.notConnected:
+ if self.client.session.state == ClientSession.notReady:
sendDataToServer("004")
self.client.session.state = ClientSession.working
else:
@@ -139,18 +161,19 @@
class PykafeClient(QtNetwork.QTcpServer):
def __init__(self):
QtNetwork.QTcpServer.__init__(self)
- self.config = PykafeConfiguration()
self.session = ClientSession()
- self.threads = []
- self.listen(QtNetwork.QHostAddress(QtNetwork.QHostAddress.Any), self.config.network.port)
- print "listening?", self.isListening()
- print "listening to:", QtNetwork.QHostAddress(QtNetwork.QHostAddress.Any).toString() ,self.config.network.port
+ if not self.listen(QtNetwork.QHostAddress(QtNetwork.QHostAddress.Any), config.network_port):
+ print "cant bind, exitting"
+ sys.exit()
+ thread = SenderThread("011")
+ QtCore.QObject.connect(thread, QtCore.SIGNAL("messageSent"), self.initialConnection)
+ self.threads = [thread]
+ print "trying to connect to server"
def incomingConnection(self, socketDescriptor):
- print "called incomingConnection"
thread = ListenerThread(socketDescriptor, self)
thread.start()
- QtCore.QObject.connect(thread,QtCore.SIGNAL("filter"),self.filterCame)
self.threads.append(thread)
print "We have " + str(len(self.threads)) + " thread(s)"
- def filterCame(self, text):
- print "filtering:", text
+ def initialConnection(self):
+ print "connected to server"
+ self.session.setState(ClientSession.notReady)
Modified: trunk/pykafe/client/config.py
===================================================================
--- trunk/pykafe/client/config.py 2007-06-02 09:54:44 UTC (rev 64)
+++ trunk/pykafe/client/config.py 2007-06-02 09:55:38 UTC (rev 65)
@@ -12,7 +12,9 @@
#TODO: Read config from config file
class PykafeConfiguration:
- class network:
- serverIP = "192.168.2.2"
- port = 23105
- localPort = 23106
\ No newline at end of file
+ network_serverIP = "192.168.2.2"
+ network_port = 23105
+ network_localPort = 23106
+
+ def set(self, config, value):
+ setattr(self, config, value)
Modified: trunk/pykafe/client/login.py
===================================================================
--- trunk/pykafe/client/login.py 2007-06-02 09:54:44 UTC (rev 64)
+++ trunk/pykafe/client/login.py 2007-06-02 09:55:38 UTC (rev 65)
@@ -10,7 +10,7 @@
# Please read the COPYING file.
#
-import base64, os, sys
+import base64, os, sys, sha, time
from PyQt4 import QtCore, QtGui, QtNetwork
from config import PykafeConfiguration
@@ -18,22 +18,28 @@
locale.setlocale(locale.LC_ALL, "C")
_ = gettext.translation("pyKafe_client", fallback=True).ugettext
+config = PykafeConfiguration()
+
class SenderThread(QtCore.QThread):
- def __init__(self, parent, data):
+ def __init__(self, parent, data, retry = False):
QtCore.QThread.__init__(self, parent)
self.data = data
+ self.retry = retry
def run(self):
tcpSocket = QtNetwork.QTcpSocket()
- tcpSocket.connectToHost(QtNetwork.QHostAddress(QtNetwork.QHostAddress.LocalHost), PykafeConfiguration().network.port)
- print "connecting to:", QtNetwork.QHostAddress(QtNetwork.QHostAddress.LocalHost).toString(), PykafeConfiguration().network.port
- if not tcpSocket.waitForConnected(-1):
- print "error:", tcpSocket.errorString(), "sending exit signal"
- self.emit(QtCore.SIGNAL("exit()"))
- else:
- tcpSocket.write(base64.encodestring(self.data))
- tcpSocket.waitForBytesWritten()
- print "sent:", self.data
- tcpSocket.disconnectFromHost()
+ tcpSocket.connectToHost(QtNetwork.QHostAddress(QtNetwork.QHostAddress.LocalHost), config.network_port)
+ while not tcpSocket.waitForConnected(-1) and self.retry:
+ self.emit(QtCore.SIGNAL("connectionError()"))
+ print "trying to reconnect in 5 seconds"
+ time.sleep(5)
+ tcpSocket.connectToHost(QtNetwork.QHostAddress(QtNetwork.QHostAddress.LocalHost), config.network_port)
+ if tcpSocket.write(base64.encodestring(self.data)) == -1:
+ print "couldn't send:", self.data
+ self.emit(QtCore.SIGNAL("connectionError()"))
+ self.terminate()
+ tcpSocket.waitForBytesWritten()
+ print "sent:", self.data
+ tcpSocket.disconnectFromHost()
class ListenerThread(QtCore.QThread):
def __init__(self, parent, socketDescriptor):
@@ -42,7 +48,8 @@
def run(self):
self.tcpSocket = QtNetwork.QTcpSocket()
self.tcpSocket.setSocketDescriptor(self.socketDescriptor)
- self.tcpSocket.waitForReadyRead()
+ self.tcpSocket.isReadable()
+ self.tcpSocket.waitForReadyRead(-1)
data = base64.decodestring(self.tcpSocket.readAll())
print "received:", data
if data[:3] == "001":
@@ -60,6 +67,8 @@
elif data[:3] == "005":
os.system("pyKafeclient&")
self.emit(QtCore.SIGNAL("close"))
+ elif data[:3] == "014":
+ self.emit(QtCore.SIGNAL("message"), _("Can't connect to server"))
self.tcpSocket.disconnectFromHost()
self.exec_()
@@ -67,10 +76,13 @@
def __init__(self, parent, ui):
QtNetwork.QTcpServer.__init__(self, parent)
self.ui = ui
- self.listen(QtNetwork.QHostAddress(QtNetwork.QHostAddress.LocalHost), PykafeConfiguration().network.localPort)
- print "listening localhost on port:", PykafeConfiguration().network.localPort
- thread = SenderThread(self.parent(), "004")
- QtCore.QObject.connect(thread, QtCore.SIGNAL("exit()"), parent.close)
+ listening = self.listen(QtNetwork.QHostAddress(QtNetwork.QHostAddress.LocalHost), config.network_localPort)
+ if not listening:
+ print "Can't bind port %d" % config.network_localPort
+ sys.exit()
+ print "listening localhost on port:", config.network_localPort
+ thread = SenderThread(self.parent(), "004", retry = True)
+ QtCore.QObject.connect(thread, QtCore.SIGNAL("connectionError()"), self.connectionError)
thread.start()
self.threads = [thread]
def incomingConnection(self, socketDescriptor):
@@ -81,13 +93,17 @@
self.threads.append(thread)
print "login has %d threads" % len(self.threads)
def login(self):
- thread = SenderThread(self.parent(), "002" + unicode(self.ui.username.text()) + "|" + unicode(self.ui.password.text()))
+ thread = SenderThread(self.parent(), "002" + unicode(self.ui.username.text()) + "|" + sha.new(unicode(self.ui.password.text())).hexdigest())
+ QtCore.QObject.connect(thread, QtCore.SIGNAL("connectionError()"), self.connectionError)
thread.start()
self.threads.append(thread)
def request(self):
thread = SenderThread(self.parent(), "000")
+ QtCore.QObject.connect(thread, QtCore.SIGNAL("connectionError()"), self.connectionError)
thread.start()
self.threads.append(thread)
+ def connectionError(self):
+ self.ui.statusbar.showMessage(_("Can't connect to local daemon, please contact cashier"))
class Ui_LoginWindow(object):
def setupUi(self, MainWindow):
@@ -165,7 +181,7 @@
MainWindow.setTabOrder(self.password,self.loginButton)
def retranslateUi(self, LoginWindow):
- LoginWindow.setWindowTitle(_("pyKafe"))
+ LoginWindow.setWindowTitle("pyKafe")
self.textLabel1.setText(_("Username:"))
self.loginButton.setText(_("Login"))
self.textLabel2.setText(_("Password:"))
Modified: trunk/pykafe/client/session.py
===================================================================
--- trunk/pykafe/client/session.py 2007-06-02 09:54:44 UTC (rev 64)
+++ trunk/pykafe/client/session.py 2007-06-02 09:55:38 UTC (rev 65)
@@ -16,12 +16,13 @@
class ClientSession:
"""class for managing client sessions"""
- notAvailable, notConnected, working, loggedIn, requestedOpening = range(5)
+ notConnected, notReady, working, loggedIn, requestedOpening, waitingMoney = range(6)
def __init__(self):
self.state = 0
self.user = None
self.settings = None
self.startTime = None
+ self.endTime = None
self.orders = []
def isReachable(self):
@@ -39,16 +40,20 @@
return True
else:
return False
- def getCurrentState(self):
+ def toString(self):
"""returns current state as a string"""
- if self.state == self.notAvailable:
- return _("N/A")
+ if self.state == self.notConnected:
+ return _("Not Connected")
elif self.state == self.working:
return _("Ready")
elif self.state == self.loggedIn:
return _("Logged In")
elif self.state == self.requestedOpening:
return _("Requested Opening")
+ elif self.state == self.waitingMoney:
+ return _("Waiting for Payment")
+ elif self.state == self.notReady:
+ return _("Not ready")
def setState(self, stateNumber):
- self.state = stateNumber
\ No newline at end of file
+ self.state = stateNumber
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-02 09:54:43
|
Revision: 64
http://pykafe.svn.sourceforge.net/pykafe/?rev=64&view=rev
Author: jnmbk
Date: 2007-06-02 02:54:44 -0700 (Sat, 02 Jun 2007)
Log Message:
-----------
update translations
Modified Paths:
--------------
trunk/po/client_tr.po
trunk/po/pyKafe_client.pot
trunk/po/pyKafe_server.pot
trunk/po/server_tr.po
Modified: trunk/po/client_tr.po
===================================================================
--- trunk/po/client_tr.po 2007-06-01 13:05:26 UTC (rev 63)
+++ trunk/po/client_tr.po 2007-06-02 09:54:44 UTC (rev 64)
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: client_tr\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-05-31 06:45+0300\n"
+"POT-Creation-Date: 2007-06-02 12:54+0300\n"
"PO-Revision-Date: 2007-05-30 12:34+0300\n"
"Last-Translator: Uğur Çetin <jn...@us...>\n"
"Language-Team: Turkish <tr...@li...>\n"
@@ -24,12 +24,20 @@
msgid "Cafeteria"
msgstr ""
-#: ../pykafe/client/client.py:114
+#: ../pykafe/client/login.py:106
+msgid "Can't connect to local daemon, please contact cashier"
+msgstr ""
+
+#: ../pykafe/client/login.py:71
+msgid "Can't connect to server"
+msgstr ""
+
+#: ../pykafe/client/client.py:152
#, python-format
msgid "Client tried to say I'm here, state was: %s"
msgstr ""
-#: ../pykafe/client/client.py:105
+#: ../pykafe/client/client.py:143
#, python-format
msgid "Client tried to send opening request, state was: %s"
msgstr ""
@@ -42,11 +50,11 @@
msgid "Exit"
msgstr ""
-#: ../pykafe/client/session.py:49
+#: ../pykafe/client/session.py:50
msgid "Logged In"
msgstr ""
-#: ../pykafe/client/login.py:170
+#: ../pykafe/client/login.py:186
msgid "Login"
msgstr "Giriş"
@@ -54,28 +62,32 @@
msgid "Logout"
msgstr ""
-#: ../pykafe/client/session.py:45
-msgid "N/A"
+#: ../pykafe/client/session.py:46
+msgid "Not Connected"
msgstr ""
-#: ../pykafe/client/login.py:171
+#: ../pykafe/client/session.py:56
+msgid "Not ready"
+msgstr ""
+
+#: ../pykafe/client/login.py:187
msgid "Password:"
msgstr ""
-#: ../pykafe/client/login.py:173
+#: ../pykafe/client/login.py:189
msgid "Please contact cashier or enter your account information"
msgstr ""
-#: ../pykafe/client/session.py:47
+#: ../pykafe/client/session.py:48
msgid "Ready"
msgstr ""
-#: ../pykafe/client/client.py:76
+#: ../pykafe/client/client.py:108
#, python-format
msgid "Received %s from server, state was: %s"
msgstr ""
-#: ../pykafe/client/client.py:69
+#: ../pykafe/client/client.py:101
#, python-format
msgid "Received ack from server, state was: %s"
msgstr ""
@@ -84,15 +96,15 @@
msgid "Remaining Time:"
msgstr ""
-#: ../pykafe/client/login.py:172
+#: ../pykafe/client/login.py:188
msgid "Request Opening"
msgstr ""
-#: ../pykafe/client/session.py:51
+#: ../pykafe/client/session.py:52
msgid "Requested Opening"
msgstr ""
-#: ../pykafe/client/login.py:53
+#: ../pykafe/client/login.py:60
msgid "Server didn't give acknowledge"
msgstr ""
@@ -100,23 +112,27 @@
msgid "Starting Time:"
msgstr ""
-#: ../pykafe/client/client.py:57
+#: ../pykafe/client/client.py:89
#, python-format
-msgid "Unauthorized server tried to connect, aborting: %s"
+msgid "Unauthorized server tried to connect, aborting connection: %s"
msgstr ""
#: ../pykafe/client/clientmain.py:222
msgid "Used Time:"
msgstr ""
-#: ../pykafe/client/login.py:169
+#: ../pykafe/client/login.py:185
msgid "Username:"
msgstr ""
-#: ../pykafe/client/login.py:59
+#: ../pykafe/client/session.py:54
+msgid "Waiting for Payment"
+msgstr ""
+
+#: ../pykafe/client/login.py:66
msgid "Wrong username or password"
msgstr ""
-#: ../pykafe/client/clientmain.py:217 ../pykafe/client/login.py:168
+#: ../pykafe/client/clientmain.py:217
msgid "pyKafe"
msgstr ""
Modified: trunk/po/pyKafe_client.pot
===================================================================
--- trunk/po/pyKafe_client.pot 2007-06-01 13:05:26 UTC (rev 63)
+++ trunk/po/pyKafe_client.pot 2007-06-02 09:54:44 UTC (rev 64)
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-05-31 06:55+0300\n"
+"POT-Creation-Date: 2007-06-02 12:54+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL...@li...>\n"
@@ -24,12 +24,20 @@
msgid "Cafeteria"
msgstr ""
-#: ../pykafe/client/client.py:114
+#: ../pykafe/client/login.py:106
+msgid "Can't connect to local daemon, please contact cashier"
+msgstr ""
+
+#: ../pykafe/client/login.py:71
+msgid "Can't connect to server"
+msgstr ""
+
+#: ../pykafe/client/client.py:152
#, python-format
msgid "Client tried to say I'm here, state was: %s"
msgstr ""
-#: ../pykafe/client/client.py:105
+#: ../pykafe/client/client.py:143
#, python-format
msgid "Client tried to send opening request, state was: %s"
msgstr ""
@@ -42,11 +50,11 @@
msgid "Exit"
msgstr ""
-#: ../pykafe/client/session.py:49
+#: ../pykafe/client/session.py:50
msgid "Logged In"
msgstr ""
-#: ../pykafe/client/login.py:170
+#: ../pykafe/client/login.py:186
msgid "Login"
msgstr ""
@@ -54,28 +62,32 @@
msgid "Logout"
msgstr ""
-#: ../pykafe/client/session.py:45
-msgid "N/A"
+#: ../pykafe/client/session.py:46
+msgid "Not Connected"
msgstr ""
-#: ../pykafe/client/login.py:171
+#: ../pykafe/client/session.py:56
+msgid "Not ready"
+msgstr ""
+
+#: ../pykafe/client/login.py:187
msgid "Password:"
msgstr ""
-#: ../pykafe/client/login.py:173
+#: ../pykafe/client/login.py:189
msgid "Please contact cashier or enter your account information"
msgstr ""
-#: ../pykafe/client/session.py:47
+#: ../pykafe/client/session.py:48
msgid "Ready"
msgstr ""
-#: ../pykafe/client/client.py:76
+#: ../pykafe/client/client.py:108
#, python-format
msgid "Received %s from server, state was: %s"
msgstr ""
-#: ../pykafe/client/client.py:69
+#: ../pykafe/client/client.py:101
#, python-format
msgid "Received ack from server, state was: %s"
msgstr ""
@@ -84,15 +96,15 @@
msgid "Remaining Time:"
msgstr ""
-#: ../pykafe/client/login.py:172
+#: ../pykafe/client/login.py:188
msgid "Request Opening"
msgstr ""
-#: ../pykafe/client/session.py:51
+#: ../pykafe/client/session.py:52
msgid "Requested Opening"
msgstr ""
-#: ../pykafe/client/login.py:53
+#: ../pykafe/client/login.py:60
msgid "Server didn't give acknowledge"
msgstr ""
@@ -100,23 +112,27 @@
msgid "Starting Time:"
msgstr ""
-#: ../pykafe/client/client.py:57
+#: ../pykafe/client/client.py:89
#, python-format
-msgid "Unauthorized server tried to connect, aborting: %s"
+msgid "Unauthorized server tried to connect, aborting connection: %s"
msgstr ""
#: ../pykafe/client/clientmain.py:222
msgid "Used Time:"
msgstr ""
-#: ../pykafe/client/login.py:169
+#: ../pykafe/client/login.py:185
msgid "Username:"
msgstr ""
-#: ../pykafe/client/login.py:59
+#: ../pykafe/client/session.py:54
+msgid "Waiting for Payment"
+msgstr ""
+
+#: ../pykafe/client/login.py:66
msgid "Wrong username or password"
msgstr ""
-#: ../pykafe/client/clientmain.py:217 ../pykafe/client/login.py:168
+#: ../pykafe/client/clientmain.py:217
msgid "pyKafe"
msgstr ""
Modified: trunk/po/pyKafe_server.pot
===================================================================
--- trunk/po/pyKafe_server.pot 2007-06-01 13:05:26 UTC (rev 63)
+++ trunk/po/pyKafe_server.pot 2007-06-02 09:54:44 UTC (rev 64)
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-05-31 06:55+0300\n"
+"POT-Creation-Date: 2007-06-02 12:54+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL...@li...>\n"
@@ -16,7 +16,7 @@
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../pykafe/server/server.py:502
+#: ../pykafe/server/server.py:516
msgid "About PyKafe"
msgstr ""
@@ -29,46 +29,46 @@
msgstr ""
#: ../pykafe/server/mainwindow.py:635 ../pykafe/server/mainwindow.py:643
-#: ../pykafe/server/mainwindow.py:653 ../pykafe/server/settingswindow.py:368
-#: ../pykafe/server/settingswindow.py:377
+#: ../pykafe/server/mainwindow.py:653 ../pykafe/server/settingswindow.py:375
+#: ../pykafe/server/settingswindow.py:384
msgid "Add"
msgstr ""
-#: ../pykafe/server/server.py:360
+#: ../pykafe/server/server.py:374
msgid "Added member"
msgstr ""
-#: ../pykafe/server/server.py:465
+#: ../pykafe/server/server.py:479
msgid "Added product"
msgstr ""
-#: ../pykafe/server/settingswindow.py:367
+#: ../pykafe/server/settingswindow.py:374
msgid "Addres:"
msgstr ""
-#: ../pykafe/server/settings.py:137 ../pykafe/server/settings.py:169
+#: ../pykafe/server/settings.py:144 ../pykafe/server/settings.py:176
msgid "All cashier information must be filled"
msgstr ""
-#: ../pykafe/server/server.py:352 ../pykafe/server/server.py:382
+#: ../pykafe/server/server.py:366 ../pykafe/server/server.py:396
msgid "All member information must be filled"
msgstr ""
-#: ../pykafe/server/server.py:307 ../pykafe/server/server.py:333
-#: ../pykafe/server/server.py:408 ../pykafe/server/server.py:495
-#: ../pykafe/server/settings.py:154
+#: ../pykafe/server/server.py:314 ../pykafe/server/server.py:347
+#: ../pykafe/server/server.py:422 ../pykafe/server/server.py:509
+#: ../pykafe/server/settings.py:161
msgid "Are you sure?"
msgstr ""
-#: ../pykafe/server/settingswindow.py:354
+#: ../pykafe/server/settingswindow.py:365
msgid "Ask password when opening"
msgstr ""
-#: ../pykafe/server/server.py:502
+#: ../pykafe/server/server.py:516
msgid "Authors:"
msgstr ""
-#: ../pykafe/server/settingswindow.py:366
+#: ../pykafe/server/settingswindow.py:373
msgid "Browse"
msgstr ""
@@ -76,8 +76,9 @@
msgid "Cafeteria Stocks"
msgstr ""
-#: ../pykafe/server/server.py:264 ../pykafe/server/server.py:281
-#: ../pykafe/server/server.py:303 ../pykafe/server/server.py:331
+#: ../pykafe/server/server.py:271 ../pykafe/server/server.py:288
+#: ../pykafe/server/server.py:310 ../pykafe/server/server.py:331
+#: ../pykafe/server/server.py:345
msgid "Can't connect to client"
msgstr ""
@@ -89,11 +90,11 @@
msgid "Cashier"
msgstr ""
-#: ../pykafe/server/settingswindow.py:373
+#: ../pykafe/server/settingswindow.py:380
msgid "Cashier List"
msgstr ""
-#: ../pykafe/server/settingswindow.py:381
+#: ../pykafe/server/settingswindow.py:388
msgid "Cashiers"
msgstr ""
@@ -101,8 +102,9 @@
msgid "Change"
msgstr ""
-#: ../pykafe/server/server.py:260 ../pykafe/server/server.py:277
-#: ../pykafe/server/server.py:299 ../pykafe/server/server.py:327
+#: ../pykafe/server/server.py:267 ../pykafe/server/server.py:284
+#: ../pykafe/server/server.py:306 ../pykafe/server/server.py:328
+#: ../pykafe/server/server.py:341
msgid "Choose a client first"
msgstr ""
@@ -114,11 +116,11 @@
msgid "Clears filter"
msgstr ""
-#: ../pykafe/server/server.py:269 ../pykafe/server/server.py:284
+#: ../pykafe/server/server.py:276 ../pykafe/server/server.py:291
msgid "Client is already logged in"
msgstr ""
-#: ../pykafe/server/server.py:305
+#: ../pykafe/server/server.py:312
msgid "Client is already stopped"
msgstr ""
@@ -130,7 +132,7 @@
msgid "Computer ID"
msgstr ""
-#: ../pykafe/server/server.py:216
+#: ../pykafe/server/server.py:224
msgid "Connection Error"
msgstr ""
@@ -142,14 +144,6 @@
msgid "Cost"
msgstr ""
-#: ../pykafe/server/settingswindow.py:359
-msgid "Currency prefix:"
-msgstr ""
-
-#: ../pykafe/server/settingswindow.py:360
-msgid "Currency suffix:"
-msgstr ""
-
#: ../pykafe/server/mainwindow.py:668
msgid "Date"
msgstr ""
@@ -158,21 +152,17 @@
msgid "Debt:"
msgstr ""
-#: ../pykafe/server/settingswindow.py:357
-msgid "Decimals Seperator:"
-msgstr ""
-
#: ../pykafe/server/mainwindow.py:633 ../pykafe/server/mainwindow.py:645
-#: ../pykafe/server/mainwindow.py:655 ../pykafe/server/settingswindow.py:369
-#: ../pykafe/server/settingswindow.py:379
+#: ../pykafe/server/mainwindow.py:655 ../pykafe/server/settingswindow.py:376
+#: ../pykafe/server/settingswindow.py:386
msgid "Delete"
msgstr ""
-#: ../pykafe/server/server.py:414
+#: ../pykafe/server/server.py:428
msgid "Deleted member"
msgstr ""
-#: ../pykafe/server/server.py:499
+#: ../pykafe/server/server.py:513
msgid "Deleted product"
msgstr ""
@@ -180,27 +170,27 @@
msgid "Description"
msgstr ""
-#: ../pykafe/server/settings.py:154
+#: ../pykafe/server/settings.py:161
msgid "Do you really want to delete this cashier?"
msgstr ""
-#: ../pykafe/server/server.py:408
+#: ../pykafe/server/server.py:422
msgid "Do you really want to delete this member?"
msgstr ""
-#: ../pykafe/server/server.py:495
+#: ../pykafe/server/server.py:509
msgid "Do you really want to delete this product?"
msgstr ""
-#: ../pykafe/server/server.py:333
+#: ../pykafe/server/server.py:347
msgid "Do you really want to shutdown this client?"
msgstr ""
-#: ../pykafe/server/server.py:307
+#: ../pykafe/server/server.py:314
msgid "Do you really want to stop this client?"
msgstr ""
-#: ../pykafe/server/settingswindow.py:371
+#: ../pykafe/server/settingswindow.py:378
msgid "Enable Internet Filter"
msgstr ""
@@ -212,11 +202,11 @@
msgid "Ends"
msgstr ""
-#: ../pykafe/server/server.py:286
+#: ../pykafe/server/server.py:293
msgid "Enter time"
msgstr ""
-#: ../pykafe/server/server.py:286
+#: ../pykafe/server/server.py:293
msgid "Enter time in minutes"
msgstr ""
@@ -224,23 +214,23 @@
msgid "Entertainment"
msgstr ""
-#: ../pykafe/server/passwordwindow.py:88 ../pykafe/server/server.py:264
-#: ../pykafe/server/server.py:281 ../pykafe/server/server.py:303
-#: ../pykafe/server/server.py:331 ../pykafe/server/server.py:341
-#: ../pykafe/server/server.py:352 ../pykafe/server/server.py:362
-#: ../pykafe/server/server.py:367 ../pykafe/server/server.py:371
-#: ../pykafe/server/server.py:382 ../pykafe/server/server.py:391
-#: ../pykafe/server/server.py:400 ../pykafe/server/server.py:406
-#: ../pykafe/server/server.py:457 ../pykafe/server/server.py:460
-#: ../pykafe/server/server.py:467 ../pykafe/server/server.py:472
-#: ../pykafe/server/server.py:478 ../pykafe/server/server.py:481
-#: ../pykafe/server/server.py:488 ../pykafe/server/server.py:493
-#: ../pykafe/server/settings.py:54 ../pykafe/server/settings.py:62
-#: ../pykafe/server/settings.py:70 ../pykafe/server/settings.py:137
-#: ../pykafe/server/settings.py:144 ../pykafe/server/settings.py:148
-#: ../pykafe/server/settings.py:152 ../pykafe/server/settings.py:163
-#: ../pykafe/server/settings.py:169 ../pykafe/server/settings.py:177
-#: ../pykafe/server/settings.py:184
+#: ../pykafe/server/passwordwindow.py:88 ../pykafe/server/server.py:271
+#: ../pykafe/server/server.py:288 ../pykafe/server/server.py:310
+#: ../pykafe/server/server.py:331 ../pykafe/server/server.py:345
+#: ../pykafe/server/server.py:355 ../pykafe/server/server.py:366
+#: ../pykafe/server/server.py:376 ../pykafe/server/server.py:381
+#: ../pykafe/server/server.py:385 ../pykafe/server/server.py:396
+#: ../pykafe/server/server.py:405 ../pykafe/server/server.py:414
+#: ../pykafe/server/server.py:420 ../pykafe/server/server.py:471
+#: ../pykafe/server/server.py:474 ../pykafe/server/server.py:481
+#: ../pykafe/server/server.py:486 ../pykafe/server/server.py:492
+#: ../pykafe/server/server.py:495 ../pykafe/server/server.py:502
+#: ../pykafe/server/server.py:507 ../pykafe/server/settings.py:61
+#: ../pykafe/server/settings.py:69 ../pykafe/server/settings.py:77
+#: ../pykafe/server/settings.py:144 ../pykafe/server/settings.py:151
+#: ../pykafe/server/settings.py:155 ../pykafe/server/settings.py:159
+#: ../pykafe/server/settings.py:170 ../pykafe/server/settings.py:176
+#: ../pykafe/server/settings.py:184 ../pykafe/server/settings.py:191
msgid "Error"
msgstr ""
@@ -252,11 +242,11 @@
msgid "File"
msgstr ""
-#: ../pykafe/server/settingswindow.py:365
+#: ../pykafe/server/settingswindow.py:372
msgid "Filter File:"
msgstr ""
-#: ../pykafe/server/settingswindow.py:370
+#: ../pykafe/server/settingswindow.py:377
msgid "Filtered Addresses"
msgstr ""
@@ -264,11 +254,11 @@
msgid "Find:"
msgstr ""
-#: ../pykafe/server/settingswindow.py:362
-msgid "Fixed price for first 30 minutes:"
+#: ../pykafe/server/settingswindow.py:368
+msgid "Fixed price for first"
msgstr ""
-#: ../pykafe/server/settingswindow.py:356
+#: ../pykafe/server/settingswindow.py:366
msgid "General"
msgstr ""
@@ -280,18 +270,22 @@
msgid "ID"
msgstr ""
+#: ../pykafe/server/settingswindow.py:364
+msgid "If selected, cashier password will be asked on opening"
+msgstr ""
+
#: ../pykafe/server/mainwindow.py:674
msgid "Income"
msgstr ""
-#: ../pykafe/server/server.py:260 ../pykafe/server/server.py:269
-#: ../pykafe/server/server.py:277 ../pykafe/server/server.py:284
-#: ../pykafe/server/server.py:299 ../pykafe/server/server.py:305
-#: ../pykafe/server/server.py:327
+#: ../pykafe/server/server.py:267 ../pykafe/server/server.py:276
+#: ../pykafe/server/server.py:284 ../pykafe/server/server.py:291
+#: ../pykafe/server/server.py:306 ../pykafe/server/server.py:312
+#: ../pykafe/server/server.py:328 ../pykafe/server/server.py:341
msgid "Information"
msgstr ""
-#: ../pykafe/server/settingswindow.py:372
+#: ../pykafe/server/settingswindow.py:379
msgid "Internet Filter"
msgstr ""
@@ -328,7 +322,7 @@
msgid "Members"
msgstr ""
-#: ../pykafe/server/server.py:502
+#: ../pykafe/server/server.py:516
msgid "Mentor:"
msgstr ""
@@ -340,10 +334,6 @@
msgid "Moves user to another computer"
msgstr ""
-#: ../pykafe/server/session.py:46
-msgid "N/A"
-msgstr ""
-
#: ../pykafe/server/mainwindow.py:679
msgid "New"
msgstr ""
@@ -352,6 +342,14 @@
msgid "Normal"
msgstr ""
+#: ../pykafe/server/session.py:46
+msgid "Not Connected"
+msgstr ""
+
+#: ../pykafe/server/session.py:56
+msgid "Not ready"
+msgstr ""
+
#: ../pykafe/server/mainwindow.py:611
msgid "Opens remote desktop connection"
msgstr ""
@@ -365,7 +363,7 @@
msgstr ""
#: ../pykafe/server/mainwindow.py:658 ../pykafe/server/passwordwindow.py:76
-#: ../pykafe/server/settingswindow.py:376
+#: ../pykafe/server/settingswindow.py:383
msgid "Password:"
msgstr ""
@@ -381,19 +379,23 @@
msgid "Price"
msgstr ""
-#: ../pykafe/server/settingswindow.py:363
+#: ../pykafe/server/settingswindow.py:370
msgid "Price for one hour:"
msgstr ""
-#: ../pykafe/server/server.py:460 ../pykafe/server/server.py:481
+#: ../pykafe/server/server.py:474 ../pykafe/server/server.py:495
msgid "Price must be bigger than 0"
msgstr ""
-#: ../pykafe/server/settingswindow.py:364
+#: ../pykafe/server/settingswindow.py:367
+msgid "Price rounding:"
+msgstr ""
+
+#: ../pykafe/server/settingswindow.py:371
msgid "Pricing"
msgstr ""
-#: ../pykafe/server/server.py:467 ../pykafe/server/server.py:488
+#: ../pykafe/server/server.py:481 ../pykafe/server/server.py:502
msgid "Product name must be unique"
msgstr ""
@@ -401,7 +403,7 @@
msgid "PyKafe"
msgstr ""
-#: ../pykafe/server/settingswindow.py:353
+#: ../pykafe/server/settingswindow.py:363
msgid "PyKafe Settings"
msgstr ""
@@ -414,19 +416,15 @@
msgid "Ready"
msgstr ""
-#: ../pykafe/server/mainwindow.py:663 ../pykafe/server/settingswindow.py:374
+#: ../pykafe/server/mainwindow.py:663 ../pykafe/server/settingswindow.py:381
msgid "Real Name:"
msgstr ""
-#: ../pykafe/server/settingswindow.py:361
-msgid "Regional"
-msgstr ""
-
#: ../pykafe/server/mainwindow.py:612
msgid "Remote"
msgstr ""
-#: ../pykafe/server/mainwindow.py:656 ../pykafe/server/settingswindow.py:380
+#: ../pykafe/server/mainwindow.py:656 ../pykafe/server/settingswindow.py:387
msgid "Reports"
msgstr ""
@@ -434,7 +432,7 @@
msgid "Requested Opening"
msgstr ""
-#: ../pykafe/server/settings.py:98
+#: ../pykafe/server/settings.py:105
msgid "Select Filter File"
msgstr ""
@@ -454,11 +452,15 @@
msgid "Shuts down selected computer"
msgstr ""
+#: ../pykafe/server/server.py:110
+msgid "Someone entered wrong password or username"
+msgstr ""
+
#: ../pykafe/server/mainwindow.py:608
msgid "Start"
msgstr ""
-#: ../pykafe/server/server.py:341 ../pykafe/server/server.py:367
+#: ../pykafe/server/server.py:355 ../pykafe/server/server.py:381
msgid "Start date must be smaller than end date"
msgstr ""
@@ -490,14 +492,10 @@
msgid "Switches to login state"
msgstr ""
-#: ../pykafe/server/settings.py:148
+#: ../pykafe/server/settings.py:155
msgid "There should be one cashier at least"
msgstr ""
-#: ../pykafe/server/settingswindow.py:358
-msgid "Thousands seperator:"
-msgstr ""
-
#: ../pykafe/server/mainwindow.py:604
msgid "Timed"
msgstr ""
@@ -506,10 +504,6 @@
msgid "Tools"
msgstr ""
-#: ../pykafe/server/settingswindow.py:355
-msgid "Tray Icon"
-msgstr ""
-
#: ../pykafe/server/mainwindow.py:669
msgid "Type"
msgstr ""
@@ -518,21 +512,21 @@
msgid "Type some letters to filter"
msgstr ""
-#: ../pykafe/server/server.py:216
+#: ../pykafe/server/server.py:223 ../pykafe/server/server.py:224
#, python-format
msgid "Unable to start server: %s"
msgstr ""
#: ../pykafe/server/mainwindow.py:634 ../pykafe/server/mainwindow.py:644
-#: ../pykafe/server/mainwindow.py:654 ../pykafe/server/settingswindow.py:378
+#: ../pykafe/server/mainwindow.py:654 ../pykafe/server/settingswindow.py:385
msgid "Update"
msgstr ""
-#: ../pykafe/server/server.py:389 ../pykafe/server/server.py:398
+#: ../pykafe/server/server.py:403 ../pykafe/server/server.py:412
msgid "Updated member information"
msgstr ""
-#: ../pykafe/server/server.py:486
+#: ../pykafe/server/server.py:500
msgid "Updated product"
msgstr ""
@@ -544,14 +538,14 @@
msgid "User"
msgstr ""
-#: ../pykafe/server/server.py:362 ../pykafe/server/server.py:391
-#: ../pykafe/server/server.py:400 ../pykafe/server/settings.py:144
-#: ../pykafe/server/settings.py:177 ../pykafe/server/settings.py:184
+#: ../pykafe/server/server.py:376 ../pykafe/server/server.py:405
+#: ../pykafe/server/server.py:414 ../pykafe/server/settings.py:151
+#: ../pykafe/server/settings.py:184 ../pykafe/server/settings.py:191
msgid "Username must be unique"
msgstr ""
#: ../pykafe/server/mainwindow.py:661 ../pykafe/server/passwordwindow.py:75
-#: ../pykafe/server/settingswindow.py:375
+#: ../pykafe/server/settingswindow.py:382
msgid "Username:"
msgstr ""
@@ -563,30 +557,38 @@
msgid "Wrong username or password"
msgstr ""
-#: ../pykafe/server/settings.py:54
+#: ../pykafe/server/settings.py:61
msgid "You didn't enter a valid address"
msgstr ""
-#: ../pykafe/server/server.py:457 ../pykafe/server/server.py:478
+#: ../pykafe/server/server.py:471 ../pykafe/server/server.py:492
msgid "You must enter a product name"
msgstr ""
-#: ../pykafe/server/settings.py:152 ../pykafe/server/settings.py:163
+#: ../pykafe/server/settings.py:159 ../pykafe/server/settings.py:170
msgid "You must select a cashier first"
msgstr ""
-#: ../pykafe/server/settings.py:62 ../pykafe/server/settings.py:70
+#: ../pykafe/server/settings.py:69 ../pykafe/server/settings.py:77
msgid "You must select a filter first"
msgstr ""
-#: ../pykafe/server/server.py:371 ../pykafe/server/server.py:406
+#: ../pykafe/server/server.py:385 ../pykafe/server/server.py:420
msgid "You must select a member first"
msgstr ""
-#: ../pykafe/server/server.py:472 ../pykafe/server/server.py:493
+#: ../pykafe/server/server.py:486 ../pykafe/server/server.py:507
msgid "You must select a product first"
msgstr ""
-#: ../pykafe/server/passwordwindow.py:74
-msgid "pyKafe"
+#: ../pykafe/server/server.py:221
+msgid "cashier login to server"
msgstr ""
+
+#: ../pykafe/server/server.py:107
+msgid "member login"
+msgstr ""
+
+#: ../pykafe/server/settingswindow.py:369
+msgid "minutes:"
+msgstr ""
Modified: trunk/po/server_tr.po
===================================================================
--- trunk/po/server_tr.po 2007-06-01 13:05:26 UTC (rev 63)
+++ trunk/po/server_tr.po 2007-06-02 09:54:44 UTC (rev 64)
@@ -7,8 +7,8 @@
msgstr ""
"Project-Id-Version: server_tr\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-05-31 06:45+0300\n"
-"PO-Revision-Date: 2007-05-31 06:55+0300\n"
+"POT-Creation-Date: 2007-06-02 12:54+0300\n"
+"PO-Revision-Date: 2007-06-01 12:54+0300\n"
"Last-Translator: Uğur Çetin <jn...@us...>\n"
"Language-Team: Turkish <tr...@li...>\n"
"MIME-Version: 1.0\n"
@@ -16,7 +16,7 @@
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
-#: ../pykafe/server/server.py:502
+#: ../pykafe/server/server.py:516
msgid "About PyKafe"
msgstr ""
@@ -29,46 +29,46 @@
msgstr ""
#: ../pykafe/server/mainwindow.py:635 ../pykafe/server/mainwindow.py:643
-#: ../pykafe/server/mainwindow.py:653 ../pykafe/server/settingswindow.py:368
-#: ../pykafe/server/settingswindow.py:377
+#: ../pykafe/server/mainwindow.py:653 ../pykafe/server/settingswindow.py:375
+#: ../pykafe/server/settingswindow.py:384
msgid "Add"
msgstr "Ekle"
-#: ../pykafe/server/server.py:360
+#: ../pykafe/server/server.py:374
msgid "Added member"
msgstr "Üye eklendi"
-#: ../pykafe/server/server.py:465
+#: ../pykafe/server/server.py:479
msgid "Added product"
msgstr "Ürün eklendi"
-#: ../pykafe/server/settingswindow.py:367
+#: ../pykafe/server/settingswindow.py:374
msgid "Addres:"
msgstr "Adres:"
-#: ../pykafe/server/settings.py:137 ../pykafe/server/settings.py:169
+#: ../pykafe/server/settings.py:144 ../pykafe/server/settings.py:176
msgid "All cashier information must be filled"
msgstr "Bütün kasiyer bilgileri doldurulmalıdır"
-#: ../pykafe/server/server.py:352 ../pykafe/server/server.py:382
+#: ../pykafe/server/server.py:366 ../pykafe/server/server.py:396
msgid "All member information must be filled"
msgstr "Bütün üye bilgileri doldurulmalıdır"
-#: ../pykafe/server/server.py:307 ../pykafe/server/server.py:333
-#: ../pykafe/server/server.py:408 ../pykafe/server/server.py:495
-#: ../pykafe/server/settings.py:154
+#: ../pykafe/server/server.py:314 ../pykafe/server/server.py:347
+#: ../pykafe/server/server.py:422 ../pykafe/server/server.py:509
+#: ../pykafe/server/settings.py:161
msgid "Are you sure?"
msgstr "Emin misiniz?"
-#: ../pykafe/server/settingswindow.py:354
+#: ../pykafe/server/settingswindow.py:365
msgid "Ask password when opening"
msgstr "Açılırken parola sor"
-#: ../pykafe/server/server.py:502
+#: ../pykafe/server/server.py:516
msgid "Authors:"
msgstr "Yazarlar:"
-#: ../pykafe/server/settingswindow.py:366
+#: ../pykafe/server/settingswindow.py:373
msgid "Browse"
msgstr "Gözat"
@@ -76,8 +76,9 @@
msgid "Cafeteria Stocks"
msgstr ""
-#: ../pykafe/server/server.py:264 ../pykafe/server/server.py:281
-#: ../pykafe/server/server.py:303 ../pykafe/server/server.py:331
+#: ../pykafe/server/server.py:271 ../pykafe/server/server.py:288
+#: ../pykafe/server/server.py:310 ../pykafe/server/server.py:331
+#: ../pykafe/server/server.py:345
msgid "Can't connect to client"
msgstr "İstemciyle bağlantı kurulamıyor"
@@ -89,11 +90,11 @@
msgid "Cashier"
msgstr "Kasiyer"
-#: ../pykafe/server/settingswindow.py:373
+#: ../pykafe/server/settingswindow.py:380
msgid "Cashier List"
msgstr "Kasiyer Listesi"
-#: ../pykafe/server/settingswindow.py:381
+#: ../pykafe/server/settingswindow.py:388
msgid "Cashiers"
msgstr "Kasiyerler"
@@ -101,8 +102,9 @@
msgid "Change"
msgstr "Değiştir"
-#: ../pykafe/server/server.py:260 ../pykafe/server/server.py:277
-#: ../pykafe/server/server.py:299 ../pykafe/server/server.py:327
+#: ../pykafe/server/server.py:267 ../pykafe/server/server.py:284
+#: ../pykafe/server/server.py:306 ../pykafe/server/server.py:328
+#: ../pykafe/server/server.py:341
msgid "Choose a client first"
msgstr "Önce bir istemci seçin"
@@ -114,11 +116,11 @@
msgid "Clears filter"
msgstr "Filtreyi temizler"
-#: ../pykafe/server/server.py:269 ../pykafe/server/server.py:284
+#: ../pykafe/server/server.py:276 ../pykafe/server/server.py:291
msgid "Client is already logged in"
msgstr "İstemci zaten giriş yapmış"
-#: ../pykafe/server/server.py:305
+#: ../pykafe/server/server.py:312
msgid "Client is already stopped"
msgstr "İstemci zaten bekleme konumunda"
@@ -130,7 +132,7 @@
msgid "Computer ID"
msgstr "Bilgisayar Adı"
-#: ../pykafe/server/server.py:216
+#: ../pykafe/server/server.py:224
msgid "Connection Error"
msgstr "Bağlantı Hatası"
@@ -142,14 +144,6 @@
msgid "Cost"
msgstr "Fiyat"
-#: ../pykafe/server/settingswindow.py:359
-msgid "Currency prefix:"
-msgstr ""
-
-#: ../pykafe/server/settingswindow.py:360
-msgid "Currency suffix:"
-msgstr ""
-
#: ../pykafe/server/mainwindow.py:668
msgid "Date"
msgstr "Tarih"
@@ -158,21 +152,17 @@
msgid "Debt:"
msgstr "Borç:"
-#: ../pykafe/server/settingswindow.py:357
-msgid "Decimals Seperator:"
-msgstr ""
-
#: ../pykafe/server/mainwindow.py:633 ../pykafe/server/mainwindow.py:645
-#: ../pykafe/server/mainwindow.py:655 ../pykafe/server/settingswindow.py:369
-#: ../pykafe/server/settingswindow.py:379
+#: ../pykafe/server/mainwindow.py:655 ../pykafe/server/settingswindow.py:376
+#: ../pykafe/server/settingswindow.py:386
msgid "Delete"
msgstr "Sil"
-#: ../pykafe/server/server.py:414
+#: ../pykafe/server/server.py:428
msgid "Deleted member"
msgstr "Üye silindi"
-#: ../pykafe/server/server.py:499
+#: ../pykafe/server/server.py:513
msgid "Deleted product"
msgstr "Ürün silindi"
@@ -180,27 +170,27 @@
msgid "Description"
msgstr "Tanım"
-#: ../pykafe/server/settings.py:154
+#: ../pykafe/server/settings.py:161
msgid "Do you really want to delete this cashier?"
msgstr "Bu kasiyeri silmek istediğinizden emin misiniz?"
-#: ../pykafe/server/server.py:408
+#: ../pykafe/server/server.py:422
msgid "Do you really want to delete this member?"
msgstr "Bu üyeyi silmek istediğinizden emin misiniz?"
-#: ../pykafe/server/server.py:495
+#: ../pykafe/server/server.py:509
msgid "Do you really want to delete this product?"
msgstr "Bu ürünü silmek istediğinizden emin misiniz?"
-#: ../pykafe/server/server.py:333
+#: ../pykafe/server/server.py:347
msgid "Do you really want to shutdown this client?"
msgstr "Bu istemciyi kapatmak istediğinizden emin misiniz?"
-#: ../pykafe/server/server.py:307
+#: ../pykafe/server/server.py:314
msgid "Do you really want to stop this client?"
msgstr "Bu istemciyi durdurmak istediğinizden emin misiniz?"
-#: ../pykafe/server/settingswindow.py:371
+#: ../pykafe/server/settingswindow.py:378
msgid "Enable Internet Filter"
msgstr "İnternet Filtresini Etkinleştir"
@@ -212,11 +202,11 @@
msgid "Ends"
msgstr "Bitiş"
-#: ../pykafe/server/server.py:286
+#: ../pykafe/server/server.py:293
msgid "Enter time"
msgstr "Zamanı girin"
-#: ../pykafe/server/server.py:286
+#: ../pykafe/server/server.py:293
msgid "Enter time in minutes"
msgstr "Dakika cinsinden zamanı girin"
@@ -224,23 +214,23 @@
msgid "Entertainment"
msgstr ""
-#: ../pykafe/server/passwordwindow.py:88 ../pykafe/server/server.py:264
-#: ../pykafe/server/server.py:281 ../pykafe/server/server.py:303
-#: ../pykafe/server/server.py:331 ../pykafe/server/server.py:341
-#: ../pykafe/server/server.py:352 ../pykafe/server/server.py:362
-#: ../pykafe/server/server.py:367 ../pykafe/server/server.py:371
-#: ../pykafe/server/server.py:382 ../pykafe/server/server.py:391
-#: ../pykafe/server/server.py:400 ../pykafe/server/server.py:406
-#: ../pykafe/server/server.py:457 ../pykafe/server/server.py:460
-#: ../pykafe/server/server.py:467 ../pykafe/server/server.py:472
-#: ../pykafe/server/server.py:478 ../pykafe/server/server.py:481
-#: ../pykafe/server/server.py:488 ../pykafe/server/server.py:493
-#: ../pykafe/server/settings.py:54 ../pykafe/server/settings.py:62
-#: ../pykafe/server/settings.py:70 ../pykafe/server/settings.py:137
-#: ../pykafe/server/settings.py:144 ../pykafe/server/settings.py:148
-#: ../pykafe/server/settings.py:152 ../pykafe/server/settings.py:163
-#: ../pykafe/server/settings.py:169 ../pykafe/server/settings.py:177
-#: ../pykafe/server/settings.py:184
+#: ../pykafe/server/passwordwindow.py:88 ../pykafe/server/server.py:271
+#: ../pykafe/server/server.py:288 ../pykafe/server/server.py:310
+#: ../pykafe/server/server.py:331 ../pykafe/server/server.py:345
+#: ../pykafe/server/server.py:355 ../pykafe/server/server.py:366
+#: ../pykafe/server/server.py:376 ../pykafe/server/server.py:381
+#: ../pykafe/server/server.py:385 ../pykafe/server/server.py:396
+#: ../pykafe/server/server.py:405 ../pykafe/server/server.py:414
+#: ../pykafe/server/server.py:420 ../pykafe/server/server.py:471
+#: ../pykafe/server/server.py:474 ../pykafe/server/server.py:481
+#: ../pykafe/server/server.py:486 ../pykafe/server/server.py:492
+#: ../pykafe/server/server.py:495 ../pykafe/server/server.py:502
+#: ../pykafe/server/server.py:507 ../pykafe/server/settings.py:61
+#: ../pykafe/server/settings.py:69 ../pykafe/server/settings.py:77
+#: ../pykafe/server/settings.py:144 ../pykafe/server/settings.py:151
+#: ../pykafe/server/settings.py:155 ../pykafe/server/settings.py:159
+#: ../pykafe/server/settings.py:170 ../pykafe/server/settings.py:176
+#: ../pykafe/server/settings.py:184 ../pykafe/server/settings.py:191
msgid "Error"
msgstr "Hata"
@@ -252,11 +242,11 @@
msgid "File"
msgstr "Dosya"
-#: ../pykafe/server/settingswindow.py:365
+#: ../pykafe/server/settingswindow.py:372
msgid "Filter File:"
msgstr "Filtre Dosyası:"
-#: ../pykafe/server/settingswindow.py:370
+#: ../pykafe/server/settingswindow.py:377
msgid "Filtered Addresses"
msgstr "Filtrelenen Adresler"
@@ -264,11 +254,11 @@
msgid "Find:"
msgstr "Bul:"
-#: ../pykafe/server/settingswindow.py:362
-msgid "Fixed price for first 30 minutes:"
+#: ../pykafe/server/settingswindow.py:368
+msgid "Fixed price for first"
msgstr ""
-#: ../pykafe/server/settingswindow.py:356
+#: ../pykafe/server/settingswindow.py:366
msgid "General"
msgstr "Genel"
@@ -280,18 +270,22 @@
msgid "ID"
msgstr "Tanım"
+#: ../pykafe/server/settingswindow.py:364
+msgid "If selected, cashier password will be asked on opening"
+msgstr ""
+
#: ../pykafe/server/mainwindow.py:674
msgid "Income"
msgstr "Gelir"
-#: ../pykafe/server/server.py:260 ../pykafe/server/server.py:269
-#: ../pykafe/server/server.py:277 ../pykafe/server/server.py:284
-#: ../pykafe/server/server.py:299 ../pykafe/server/server.py:305
-#: ../pykafe/server/server.py:327
+#: ../pykafe/server/server.py:267 ../pykafe/server/server.py:276
+#: ../pykafe/server/server.py:284 ../pykafe/server/server.py:291
+#: ../pykafe/server/server.py:306 ../pykafe/server/server.py:312
+#: ../pykafe/server/server.py:328 ../pykafe/server/server.py:341
msgid "Information"
msgstr "Bilgi"
-#: ../pykafe/server/settingswindow.py:372
+#: ../pykafe/server/settingswindow.py:379
msgid "Internet Filter"
msgstr "İnternet Filtresi"
@@ -328,7 +322,7 @@
msgid "Members"
msgstr "Üyeler"
-#: ../pykafe/server/server.py:502
+#: ../pykafe/server/server.py:516
msgid "Mentor:"
msgstr ""
@@ -340,10 +334,6 @@
msgid "Moves user to another computer"
msgstr "Kullanıcıyı başka bilgisayara aktarır"
-#: ../pykafe/server/session.py:46
-msgid "N/A"
-msgstr "Erişilemez"
-
#: ../pykafe/server/mainwindow.py:679
msgid "New"
msgstr "Yeni"
@@ -352,6 +342,14 @@
msgid "Normal"
msgstr ""
+#: ../pykafe/server/session.py:46
+msgid "Not Connected"
+msgstr "Bağlı değil"
+
+#: ../pykafe/server/session.py:56
+msgid "Not ready"
+msgstr "Hazır değil"
+
#: ../pykafe/server/mainwindow.py:611
msgid "Opens remote desktop connection"
msgstr "Uzak masaüstü bağlantısı kurar"
@@ -365,7 +363,7 @@
msgstr "Siparişler"
#: ../pykafe/server/mainwindow.py:658 ../pykafe/server/passwordwindow.py:76
-#: ../pykafe/server/settingswindow.py:376
+#: ../pykafe/server/settingswindow.py:383
msgid "Password:"
msgstr "Parola:"
@@ -381,19 +379,23 @@
msgid "Price"
msgstr "Fiyat"
-#: ../pykafe/server/settingswindow.py:363
+#: ../pykafe/server/settingswindow.py:370
msgid "Price for one hour:"
msgstr "Bir saatlik ücret:"
-#: ../pykafe/server/server.py:460 ../pykafe/server/server.py:481
+#: ../pykafe/server/server.py:474 ../pykafe/server/server.py:495
msgid "Price must be bigger than 0"
msgstr "Fiyat sıfırdan büyük olmalıdır"
-#: ../pykafe/server/settingswindow.py:364
+#: ../pykafe/server/settingswindow.py:367
+msgid "Price rounding:"
+msgstr ""
+
+#: ../pykafe/server/settingswindow.py:371
msgid "Pricing"
msgstr ""
-#: ../pykafe/server/server.py:467 ../pykafe/server/server.py:488
+#: ../pykafe/server/server.py:481 ../pykafe/server/server.py:502
msgid "Product name must be unique"
msgstr ""
@@ -401,7 +403,7 @@
msgid "PyKafe"
msgstr ""
-#: ../pykafe/server/settingswindow.py:353
+#: ../pykafe/server/settingswindow.py:363
msgid "PyKafe Settings"
msgstr "PyKafe Ayarları"
@@ -414,19 +416,15 @@
msgid "Ready"
msgstr ""
-#: ../pykafe/server/mainwindow.py:663 ../pykafe/server/settingswindow.py:374
+#: ../pykafe/server/mainwindow.py:663 ../pykafe/server/settingswindow.py:381
msgid "Real Name:"
msgstr "Gerçek Adı:"
-#: ../pykafe/server/settingswindow.py:361
-msgid "Regional"
-msgstr ""
-
#: ../pykafe/server/mainwindow.py:612
msgid "Remote"
msgstr ""
-#: ../pykafe/server/mainwindow.py:656 ../pykafe/server/settingswindow.py:380
+#: ../pykafe/server/mainwindow.py:656 ../pykafe/server/settingswindow.py:387
msgid "Reports"
msgstr ""
@@ -434,7 +432,7 @@
msgid "Requested Opening"
msgstr ""
-#: ../pykafe/server/settings.py:98
+#: ../pykafe/server/settings.py:105
msgid "Select Filter File"
msgstr ""
@@ -454,11 +452,15 @@
msgid "Shuts down selected computer"
msgstr ""
+#: ../pykafe/server/server.py:110
+msgid "Someone entered wrong password or username"
+msgstr ""
+
#: ../pykafe/server/mainwindow.py:608
msgid "Start"
msgstr "Başlat"
-#: ../pykafe/server/server.py:341 ../pykafe/server/server.py:367
+#: ../pykafe/server/server.py:355 ../pykafe/server/server.py:381
msgid "Start date must be smaller than end date"
msgstr ""
@@ -490,14 +492,10 @@
msgid "Switches to login state"
msgstr ""
-#: ../pykafe/server/settings.py:148
+#: ../pykafe/server/settings.py:155
msgid "There should be one cashier at least"
msgstr ""
-#: ../pykafe/server/settingswindow.py:358
-msgid "Thousands seperator:"
-msgstr ""
-
#: ../pykafe/server/mainwindow.py:604
msgid "Timed"
msgstr "Süreli"
@@ -506,10 +504,6 @@
msgid "Tools"
msgstr "Araçlar"
-#: ../pykafe/server/settingswindow.py:355
-msgid "Tray Icon"
-msgstr ""
-
#: ../pykafe/server/mainwindow.py:669
msgid "Type"
msgstr ""
@@ -518,21 +512,21 @@
msgid "Type some letters to filter"
msgstr ""
-#: ../pykafe/server/server.py:216
+#: ../pykafe/server/server.py:223 ../pykafe/server/server.py:224
#, python-format
msgid "Unable to start server: %s"
msgstr "Sunucu başlatılamadı: %s"
#: ../pykafe/server/mainwindow.py:634 ../pykafe/server/mainwindow.py:644
-#: ../pykafe/server/mainwindow.py:654 ../pykafe/server/settingswindow.py:378
+#: ../pykafe/server/mainwindow.py:654 ../pykafe/server/settingswindow.py:385
msgid "Update"
msgstr "Güncelle"
-#: ../pykafe/server/server.py:389 ../pykafe/server/server.py:398
+#: ../pykafe/server/server.py:403 ../pykafe/server/server.py:412
msgid "Updated member information"
msgstr "Üye bilgisi güncellendi"
-#: ../pykafe/server/server.py:486
+#: ../pykafe/server/server.py:500
msgid "Updated product"
msgstr ""
@@ -544,14 +538,14 @@
msgid "User"
msgstr "Kullanıcı"
-#: ../pykafe/server/server.py:362 ../pykafe/server/server.py:391
-#: ../pykafe/server/server.py:400 ../pykafe/server/settings.py:144
-#: ../pykafe/server/settings.py:177 ../pykafe/server/settings.py:184
+#: ../pykafe/server/server.py:376 ../pykafe/server/server.py:405
+#: ../pykafe/server/server.py:414 ../pykafe/server/settings.py:151
+#: ../pykafe/server/settings.py:184 ../pykafe/server/settings.py:191
msgid "Username must be unique"
msgstr ""
#: ../pykafe/server/mainwindow.py:661 ../pykafe/server/passwordwindow.py:75
-#: ../pykafe/server/settingswindow.py:375
+#: ../pykafe/server/settingswindow.py:382
msgid "Username:"
msgstr ""
@@ -563,31 +557,39 @@
msgid "Wrong username or password"
msgstr ""
-#: ../pykafe/server/settings.py:54
+#: ../pykafe/server/settings.py:61
msgid "You didn't enter a valid address"
msgstr ""
-#: ../pykafe/server/server.py:457 ../pykafe/server/server.py:478
+#: ../pykafe/server/server.py:471 ../pykafe/server/server.py:492
msgid "You must enter a product name"
msgstr ""
-#: ../pykafe/server/settings.py:152 ../pykafe/server/settings.py:163
+#: ../pykafe/server/settings.py:159 ../pykafe/server/settings.py:170
msgid "You must select a cashier first"
msgstr ""
-#: ../pykafe/server/settings.py:62 ../pykafe/server/settings.py:70
+#: ../pykafe/server/settings.py:69 ../pykafe/server/settings.py:77
msgid "You must select a filter first"
msgstr ""
-#: ../pykafe/server/server.py:371 ../pykafe/server/server.py:406
+#: ../pykafe/server/server.py:385 ../pykafe/server/server.py:420
msgid "You must select a member first"
msgstr ""
-#: ../pykafe/server/server.py:472 ../pykafe/server/server.py:493
+#: ../pykafe/server/server.py:486 ../pykafe/server/server.py:507
msgid "You must select a product first"
msgstr ""
-#: ../pykafe/server/passwordwindow.py:74
-msgid "pyKafe"
+#: ../pykafe/server/server.py:221
+msgid "cashier login to server"
msgstr ""
+#: ../pykafe/server/server.py:107
+#, fuzzy
+msgid "member login"
+msgstr "Üye Listesi"
+
+#: ../pykafe/server/settingswindow.py:369
+msgid "minutes:"
+msgstr ""
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-01 13:05:24
|
Revision: 63
http://pykafe.svn.sourceforge.net/pykafe/?rev=63&view=rev
Author: jnmbk
Date: 2007-06-01 06:05:26 -0700 (Fri, 01 Jun 2007)
Log Message:
-----------
better settings window
Modified Paths:
--------------
trunk/pykafe/server/settingswindow.py
trunk/pykafe/server/settingswindow.ui
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-01 12:21:02
|
Revision: 62
http://pykafe.svn.sourceforge.net/pykafe/?rev=62&view=rev
Author: jnmbk
Date: 2007-06-01 05:21:04 -0700 (Fri, 01 Jun 2007)
Log Message:
-----------
changed N/A state name to not connected
Modified Paths:
--------------
trunk/pykafe/server/server.py
trunk/pykafe/server/session.py
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-01 12:19:31
|
Revision: 61
http://pykafe.svn.sourceforge.net/pykafe/?rev=61&view=rev
Author: jnmbk
Date: 2007-06-01 05:19:33 -0700 (Fri, 01 Jun 2007)
Log Message:
-----------
this is not a translateable string
Modified Paths:
--------------
trunk/pykafe/server/passwordwindow.py
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-01 12:18:58
|
Revision: 60
http://pykafe.svn.sourceforge.net/pykafe/?rev=60&view=rev
Author: jnmbk
Date: 2007-06-01 05:19:00 -0700 (Fri, 01 Jun 2007)
Log Message:
-----------
add some comments
Modified Paths:
--------------
trunk/pykafe/server/config.py
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-01 12:07:41
|
Revision: 59
http://pykafe.svn.sourceforge.net/pykafe/?rev=59&view=rev
Author: jnmbk
Date: 2007-06-01 05:07:43 -0700 (Fri, 01 Jun 2007)
Log Message:
-----------
added getNetworkBytes function
Modified Paths:
--------------
trunk/pykafe/client/client.py
trunk/pykafe/client/session.py
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-01 11:25:35
|
Revision: 58
http://pykafe.svn.sourceforge.net/pykafe/?rev=58&view=rev
Author: jnmbk
Date: 2007-06-01 04:25:36 -0700 (Fri, 01 Jun 2007)
Log Message:
-----------
let filtering work
Modified Paths:
--------------
trunk/pykafe/client/client.py
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|