mirror of
https://github.com/brmlab/brmbarSAP.git
synced 2025-12-15 05:04:00 +01:00
code import
This commit is contained in:
parent
5a102fcd5a
commit
fc36d54062
18 changed files with 1809 additions and 1 deletions
186
fce.py
Executable file
186
fce.py
Executable file
|
|
@ -0,0 +1,186 @@
|
|||
import os
|
||||
import sys
|
||||
import sqlite3
|
||||
import hashlib
|
||||
from PyQt4.QtGui import *
|
||||
from PyQt4.QtCore import *
|
||||
from PyQt4.QtSvg import *
|
||||
from datetime import datetime
|
||||
|
||||
STYLE_BTN=("background-color:rgba(0,0,0,100);color:yellow;font-size:48px;"
|
||||
"border: 1px solid #217777;padding:5px;")
|
||||
#STYLE_DESC="color:green;font-size:48px"
|
||||
STYLE_LABEL="color:green;font-size:64px;"
|
||||
STYLE_LE=("background-color:white;color:black;font-size:48px;"
|
||||
"margin-right:100px;")
|
||||
STYLE_BADLE="background-color:red;" # Invalid data indicator
|
||||
STYLE_OKLE="background-color:white;" # Fixed data indicator
|
||||
#STYLE_ITEM="color:white;font-size:64px"
|
||||
STYLE_HIDDEN="background-color:rgba(0,0,0,255);color:white;" #rgba(0,0,0,255);"
|
||||
STYLE_WIDGET="background-color:black;color:white;"
|
||||
STYLE_MSG="background-color:black;color:yellow;font-size:32px;"
|
||||
STYLE_TEXT=("background-color:black;color:white;font-size:48px;"
|
||||
"margin-left:100px;")
|
||||
STYLE_HELP=("background-color:black;color:#217777;font-size:32px;")
|
||||
|
||||
|
||||
EXIT_OK=0
|
||||
EXIT_CANCEL=1
|
||||
EXIT_MSG=2
|
||||
EXIT_NOBARCODE=3
|
||||
EXIT_NOCREDIT=4
|
||||
EXIT_USER=5
|
||||
EXIT_STOCKSAVED=6
|
||||
EXIT_TRANSFERRED=7
|
||||
EXIT_DONATION=8
|
||||
|
||||
MSGS=["Done!",
|
||||
"Transaction cancelled",
|
||||
"", # Reserved for external msg
|
||||
"Unknown barcode",
|
||||
"FAIL! Credit too low\nPlease recharge",
|
||||
"User saved",
|
||||
"Stock saved",
|
||||
"Credit transferred",
|
||||
"Thanks for the donation!"]
|
||||
MSGFILE="/dev/shm/brmbarsap_msg"
|
||||
|
||||
BRMDB="./brmbar.db"
|
||||
|
||||
BUY_LIMIT=-200
|
||||
|
||||
# hashlib.sha512(brmSatanize("")).hexdigest()
|
||||
NULL512=("cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce"
|
||||
"9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e")
|
||||
|
||||
DEBUG=1
|
||||
|
||||
# ====================================================================
|
||||
|
||||
def brmParseRC(rc=0,msg=None,t=None,foc=None):
|
||||
# Magic ahead:
|
||||
# The Return Code is 16bit integer but we need only the HIGH byte
|
||||
rc=rc>>8
|
||||
if DEBUG: print("brmParseRC="+str(rc)+"='"+MSGS[rc]+"'")
|
||||
if rc==EXIT_MSG:
|
||||
fr=open(MSGFILE,"r")
|
||||
fmsg=fr.readline()
|
||||
if DEBUG: print(" FILEMSG: '"+fmsg+"'")
|
||||
msg.setText(fmsg)
|
||||
fr.close()
|
||||
os.remove(MSGFILE)
|
||||
else:
|
||||
msg.setText(MSGS[rc])
|
||||
t.start(5000)
|
||||
t.timeout.connect(lambda:msg.setText(""))
|
||||
if foc!=None:
|
||||
if DEBUG:print(str(foc))
|
||||
QTimer.singleShot(0,foc,SLOT('setFocus()'))
|
||||
return
|
||||
|
||||
# Sanitize string
|
||||
def brmSatanize(s=""):
|
||||
ss=""
|
||||
sss=""
|
||||
try:
|
||||
ss=s.toAscii()
|
||||
except:
|
||||
for c in s:
|
||||
ss=ss+c.encode("ascii","ignore")
|
||||
|
||||
for c in ss:
|
||||
if ord(c) > 31 and ord(c) < 127:
|
||||
sss=sss+c
|
||||
ss=sss
|
||||
ss=ss.replace("'","")
|
||||
ss=ss.replace("\"","")
|
||||
ss=ss.replace(";","")
|
||||
ss=ss.replace("`","")
|
||||
ss=ss.replace("<","")
|
||||
ss=ss.replace(">","")
|
||||
ss=ss.replace("$(","$ (")
|
||||
if DEBUG: print("brmSatanize:\n "+ss)
|
||||
return str(ss);
|
||||
|
||||
# Clear Lineedit And Pass
|
||||
def brmCLAP(le=None,f=None,c=1,foc=1):
|
||||
if DEBUG: print("brmCLAP")
|
||||
a=le.text()
|
||||
if c==1:
|
||||
le.setText("")
|
||||
try:
|
||||
f(a)
|
||||
except: # Revert the value
|
||||
le.setText(a)
|
||||
f()
|
||||
if c==1:
|
||||
le.setText("")
|
||||
if foc==1:
|
||||
QTimer.singleShot(0,le,SLOT('setFocus()'))
|
||||
le.setFocus(True)
|
||||
|
||||
timetimer=QTimer()
|
||||
def brmLabelBox(p=None,lbl=""):
|
||||
if DEBUG: print("brmLabelBox: '"+lbl+"'")
|
||||
b=QHBoxLayout()
|
||||
b.addWidget(QSvgWidget("./brmlab.svg"))
|
||||
b.addStretch(1)
|
||||
b.addWidget(QLabel("<font style='"+STYLE_LABEL+"'>"+lbl+"</font>"))
|
||||
b.addStretch(1)
|
||||
timetext=("<font style='"+STYLE_MSG+"'>"
|
||||
""+datetime.strftime(datetime.now(),'%Y-%m-%d %H:%M:%S')+"</font>")
|
||||
timewidget=QLabel(timetext)
|
||||
timetimer.timeout.connect(
|
||||
lambda:timewidget.setText("<font style='"+STYLE_MSG+"'>"
|
||||
""+datetime.strftime(datetime.now(),'%Y-%m-%d %H:%M:%S')+"</font>"))
|
||||
timetimer.start(1000)
|
||||
b.addWidget(timewidget)
|
||||
p.addLayout(b)
|
||||
def brmAddButton(p=None,lbl="",f=exit,w=0,s=""):
|
||||
if DEBUG: print("addBrmButton: '"+lbl+"'")
|
||||
butt=QPushButton(lbl)
|
||||
if int(w)>0:
|
||||
butt.setStyleSheet(STYLE_BTN+s+"text-align:left;"
|
||||
"width:"+str(int(w))+"px;max-width:"+str(int(w))+"px;")
|
||||
else:
|
||||
butt.setStyleSheet(STYLE_BTN+s)
|
||||
butt.connect(butt,SIGNAL('pressed()'),f)
|
||||
butt.setAutoDefault(0)
|
||||
butt.setFocusPolicy(0)
|
||||
p.addWidget(butt)
|
||||
|
||||
def brmAddLine(p=None,lbl="",r='T',s="",f=exit,w=200,c=1,foc=1):
|
||||
if DEBUG: print("addBrmLine: '"+str(lbl)+"'")
|
||||
l=QLineEdit(str(lbl))
|
||||
l.setStyleSheet(s+"width:"+str(w)+"px;max-width:"+str(w)+"px;")
|
||||
|
||||
# if r=="T":
|
||||
# l.setValidator(QRegExpValidator(QRegExp("^[\d\s\w]*$")))
|
||||
if r=="Q":
|
||||
l.setValidator(QRegExpValidator(QRegExp("^-?[0-9]{1,5}(\.[0-9]{1,2})?$")))
|
||||
if r=="Q+":
|
||||
l.setValidator(QRegExpValidator(QRegExp("^[0-9]{1,5}(\.[0-9]{0,2})?$")))
|
||||
if r=="N":
|
||||
# l.setValidator(QIntValidator(-100000,100000))
|
||||
l.setValidator(QRegExpValidator(QRegExp("^-?[0-9]{1,5}$")))
|
||||
if r=="N1":
|
||||
# l.setValidator(QIntValidator(1,100000))
|
||||
l.setValidator(QRegExpValidator(QRegExp("^[1-9]{1}[0-9]{0,4}$")))
|
||||
if r=="N0":
|
||||
# l.setValidator(QIntValidator(0,100000))
|
||||
l.setValidator(QRegExpValidator(QRegExp("^[0-9]{1,5}$")))
|
||||
if r=="M":
|
||||
l.setValidator(QRegExpValidator(
|
||||
QRegExp("^[0-9A-Za-z\._-]{1,}@[0-9a-zA-Z\._-{1,}\.[a-zA-Z0-9]{1,}$")))
|
||||
|
||||
l.connect(l,SIGNAL('returnPressed()'),lambda:brmCLAP(l,f,c,foc))
|
||||
if s==STYLE_HIDDEN:
|
||||
l.setFocusPolicy(Qt.StrongFocus)
|
||||
QTimer.singleShot(0,l,SLOT('setFocus()'))
|
||||
p.addWidget(l)
|
||||
|
||||
def brmPassMsg(s=""):
|
||||
fw=open(MSGFILE,"w")
|
||||
fw.write(s)
|
||||
fw.close()
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue