36 |
|
|
37 |
dollarFormat = '$%.02f' |
dollarFormat = '$%.02f' |
38 |
|
|
39 |
|
STATUS_USER = 2 |
40 |
|
STATUS_TICKET = 1 |
41 |
|
|
42 |
from wxPython.wx import * |
from wxPython.wx import * |
43 |
from wxPython.gizmos import * |
from wxPython.gizmos import * |
44 |
|
|
52 |
('sku',_('Code'), '%s', 0), |
('sku',_('Code'), '%s', 0), |
53 |
('quantity',_('Units'), '%s', 0), |
('quantity',_('Units'), '%s', 0), |
54 |
('description',_('Description'), '%s', 0), |
('description',_('Description'), '%s', 0), |
55 |
|
('base',_('Base Price'), dollarFormat, 1), |
56 |
('each',_('Price/Unit'), dollarFormat, 1), |
('each',_('Price/Unit'), dollarFormat, 1), |
57 |
('extended',_('Extended'), dollarFormat, 1) ) |
('extended',_('Extended'), dollarFormat, 1), |
58 |
|
('taxable','T', '%s', 0) ) |
59 |
|
|
60 |
self.totalFieldMapping = {} |
self.totalFieldMapping = {} |
61 |
|
|
62 |
self._buildUI() |
self._buildUI() |
63 |
|
|
64 |
self.registerEventListeners( { |
self.registerEventListeners( { |
65 |
|
'Prompt': self._Prompt, |
66 |
'BeginTicket': self._BeginTicket, |
'BeginTicket': self._BeginTicket, |
67 |
'EndTicket': self._EndTicket, |
'EndTicket': self._EndTicket, |
68 |
'AddTicketItem': self._AddTicketItem, |
'AddTicketItem': self._AddTicketItem, |
74 |
app = getWxApp() |
app = getWxApp() |
75 |
app.MainLoop() |
app.MainLoop() |
76 |
|
|
77 |
|
def _Prompt(self, event): |
78 |
|
self.inputLabel.SetLabel(event.label) |
79 |
|
self.inputField.Clear() |
80 |
|
self.inputField.SetFocus() |
81 |
|
self.__event = event.response |
82 |
|
try: |
83 |
|
self.statusbar.SetStatusText (event.help) |
84 |
|
except AttributeError: |
85 |
|
pass |
86 |
|
|
87 |
|
try: |
88 |
|
self.__endingEvents = event.endingEvents |
89 |
|
except AttributeError: |
90 |
|
self.__endingEvents = () |
91 |
|
|
92 |
def _BeginTicket(self, event): |
def _BeginTicket(self, event): |
93 |
print "Beginning ticket # %s" % event.serial |
print "Beginning ticket # %s" % event.serial |
94 |
|
self.statusbar.SetStatusText("Ticket # %s" % event.serial, STATUS_TICKET) |
95 |
|
self.receiptList.DeleteAllItems() |
96 |
|
|
97 |
def _EndTicket(self, event): |
def _EndTicket(self, event): |
98 |
print "Ending ticket" |
print "Ending ticket" |
99 |
|
self.statusbar.SetStatusText("No Current Ticket", STATUS_TICKET) |
100 |
|
|
101 |
def _AddTicketItem(self, event): |
def _AddTicketItem(self, event): |
102 |
# Insert a new row |
# Insert a new row |
128 |
frame.SetAutoLayout(1) |
frame.SetAutoLayout(1) |
129 |
EVT_SIZE(frame, self.__OnSize) |
EVT_SIZE(frame, self.__OnSize) |
130 |
|
|
131 |
self.statusbar = frame.CreateStatusBar() |
self.statusbar = frame.CreateStatusBar(3) |
132 |
self.statusbar.SetStatusText ('Clerk: 100 (Jason)') |
self.statusbar.SetStatusText ('Clerk: 100 (Jason)', STATUS_USER) |
133 |
|
|
134 |
topPanel = wxPanel(frame, -1) |
topPanel = wxPanel(frame, -1) |
135 |
topSizer = wxBoxSizer(wxHORIZONTAL) |
topSizer = wxBoxSizer(wxHORIZONTAL) |
207 |
|
|
208 |
frameSizer.Layout() |
frameSizer.Layout() |
209 |
# self.frame.ShowFullScreen(1) |
# self.frame.ShowFullScreen(1) |
210 |
frame.SetSize((640,480)) # TODO: Maximize to screen? |
frame.SetSize((640,480)) # TODO: Maximize to screen? |
211 |
frame.Show(1) |
frame.Show(1) |
212 |
|
|
213 |
|
EVT_KEY_DOWN(self.inputField, self.__keypress) |
214 |
|
|
215 |
def __OnSize(self, event): |
def __OnSize(self, event): |
216 |
self.frame.Layout() |
self.frame.Layout() |
222 |
else: |
else: |
223 |
w -= self.receiptList.GetColumnWidth(i) |
w -= self.receiptList.GetColumnWidth(i) |
224 |
self.receiptList.SetColumnWidth(pos, w) |
self.receiptList.SetColumnWidth(pos, w) |
225 |
|
|
226 |
|
def __keypress(self, event): |
227 |
|
key = event.GetKeyCode() |
228 |
|
|
229 |
|
if key in (WXK_RETURN,WXK_NUMPAD_ENTER): |
230 |
|
self.dispatchEvent(self.__event, value=self.inputField.GetValue()) |
231 |
|
elif key == WXK_ESCAPE: |
232 |
|
self.inputField.Clear() |
233 |
|
elif _specialKeys.has_key(key) and _specialKeys[key] in self.__endingEvents: |
234 |
|
self.dispatchEvent(self.__event, value=self.inputField.GetValue(), next=_specialKeys[key]) |
235 |
|
else: |
236 |
|
event.Skip() |
237 |
|
|
238 |
|
|
239 |
|
_specialKeys = { |
240 |
|
'*': 'RequestQuantity', |
241 |
|
'=': 'RequestTender', |
242 |
|
'-': 'RequestCancelLastItem', |
243 |
|
'+': 'RequestDuplicateLastItem', |
244 |
|
} |