import os from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QWidget, QGridLayout, QHBoxLayout, QStackedWidget from neox.commons.custom_button import CustomButton from .common import get_icon DIR_SHARE = os.path.abspath(os.path.normpath(os.path.join(__file__, '..', '..', 'share'))) __all__ = ['ButtonsFunction', 'ButtonsStacked', 'ButtonsNumber'] def factoryIcons(): pass factoryIcons() class ButtonsFunction(QGridLayout): # Function Numpad def __init__(self, parent, tablet_mode=False): super(ButtonsFunction, self).__init__() self.setHorizontalSpacing(1) self.setVerticalSpacing(1) rows = 4 columns = 3 self.values = [ ['button_search_product', self.tr('SEARCH'), 'action_search_product'], ] salesman_desc = self.tr('SALESMAN') salesman_button = 'button_salesman' if parent.enviroment == 'restaurant': salesman_desc = self.tr('WAITER') salesman_button = 'button_waiter' self.values.extend([ ['button_party', self.tr('CUSTOMER'), 'action_party'], ['button_cancel', self.tr('CANCEL'), 'action_cancel'], ['button_search_sale', self.tr('S. SALE'), 'action_search_sale'], ['button_print_sale', self.tr('PRINT'), 'action_print_sale'], [salesman_button, salesman_desc, 'action_salesman'], ['button_global_discount', self.tr('GLOBAL DISCOUNT'), 'action_global_discount'], ['button_print_order', self.tr('ORDER'), 'action_print_order'] ]) if parent.type_pos_user != 'cashier': self.values.append( ['button_new_sale', self.tr('NEW SALE'), 'action_new_sale']) if parent.type_pos_user != 'order': self.values.append(['button_payment', self.tr('PAY MODE'), 'action_payment']) if parent.enviroment == 'retail': self.values.append([ 'button_payment_term', self.tr('PAY TERM'), 'action_payment_term'] ) if parent.enviroment == 'restaurant': rows = 3 columns = 5 self.values.extend([ ['button_position', self.tr('POSITION'), 'action_position'], # ['button_delete_line', self.tr('DELETE'), 'action_delete_line'], ['button_comment', self.tr('NOTE'), 'action_comment'], ]) if parent.enviroment == 'restaurant': self.values.extend([ ['button_tip', self.tr('TIP'), 'action_tip'], ['button_tables', self.tr('TABLES'), 'action_tables'], ['button_reservations', self.tr('RESERVATIONS'), 'action_reservations'], ]) positions = [(i, j) for i in range(rows) for j in range(columns)] for position, value in zip(positions, self.values): name_icon = value[0][7:] button = CustomButton( parent, id=value[0], icon=get_icon(name_icon), desc=value[1], method=value[2], name_style='toolbar_button' ) self.addWidget(button, *position) class ButtonsStacked(QHBoxLayout): def __init__(self, parent): super(ButtonsStacked, self).__init__() self.stacked = QStackedWidget() self.button_accept = CustomButton( id='button_accept', parent=parent, icon=get_icon('accept'), name_style='toolbar', method='button_accept_pressed' ) self.button_cash = CustomButton( id='button_cash', parent=parent, icon=get_icon('cash'), name_style='toolbar', method='button_cash_pressed' ) if parent.type_pos_user != 'order' and not parent.tablet_mode: self.stacked.addWidget(self.button_accept) self.stacked.addWidget(self.button_cash) self.addWidget(self.stacked, 0) if parent.type_pos_user == 'cashier': self.button_to_draft = CustomButton( id='button_to_draft', parent=parent, icon=get_icon('draft'), name_style='toolbar', method='button_to_draft_pressed' ) self.addWidget(self.button_to_draft, 0) else: self.button_plus = CustomButton( id='button_plus', parent=parent, icon=get_icon('plus'), method='button_plus_pressed', name_style='toolbar', ) #self.addWidget(self.button_plus, 0) if parent.type_pos_user == 'order' or parent.type_pos_user == 'salesman': self.button_send_order = CustomButton( id='button_send_to_pay', icon=get_icon('draft'), parent=parent, method='button_send_to_pay_pressed', name_style='toolbar' ) self.addWidget(self.button_send_order, 0) class ButtonsNumber(QGridLayout): def __init__(self, parent): # Numpad for Numbers super(ButtonsNumber, self).__init__() self.setHorizontalSpacing(1) self.setVerticalSpacing(1) class Buttonpad(QWidget): def __init__(self, parent): super(Buttonpad, self).__init__() self._text = '' self._keyStates = {} self.functions = ButtonsFunction(parent) if parent.tablet_mode: self.numbers = ButtonsNumber(parent) self.stacked = ButtonsStacked(parent) self.set_keys() def set_keys(self): q = Qt self.keys_numbers = list(range(q.Key_0, q.Key_9 + 1)) self.keys_alpha = list(range(q.Key_A, q.Key_Z + 1)) self.keys_special = [ q.Key_Asterisk, q.Key_Comma, q.Key_Period, q.Key_Minus, q.Key_Slash] self.show_keys = self.keys_numbers + self.keys_alpha + self.keys_special