Source code for stoqlib.gui.events

# -*- Mode: Python; coding: utf-8 -*-
# vi:si:et:sw=4:sts=4:ts=4

##
## Copyright (C) 2007-2012 Async Open Source <http://www.async.com.br>
## All rights reserved
##
## 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.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., or visit: http://www.gnu.org/.
##
## Author(s): Stoq Team <stoq-devel@async.com.br>
##

"""Events used in the domain code
"""

from stoqlib.lib.decorators import public
from stoqlib.lib.event import Event


#
# Application events
#

@public(since="1.5.0")
[docs]class StartApplicationEvent(Event): """Emitted when an application is activated :param appname: the name of the application :param app: the app itself """
@public(since="1.5.0")
[docs]class StopApplicationEvent(Event): """Emitted when an application is deactivated :param appname: the name of the application :param app: the app itself """
[docs]class ApplicationSetupSearchEvent(Event): """Emitted when a search slave is created. :param dialog: The application that is being prepared for search. """
# # Dialog events #
[docs]class RunDialogEvent(Event): """This is emitted when a dialog is about to be run. This event gives the opportunity to change the dialog that is being displayed for another one. For instance, a plugin could change the product editor for a more specialized one, or could change the sale wizard for another one that has a slightly different process. This event is emitted with the same arguments that were passed to :func:`stoqlib.gui.base.run_dialog` If the return value is not ``None``, it should be a new dialog to replace the one that would be run. Note that the new dialog should be prepared to handle the same arguments as the original dialog. :param dialog: The dialog that will be run :param parent: The parent of the dialog :param args: Custom positional arguments :param kwargs: Custom keyword arguments. :retval: The new dialog to be displayed, or the original dialog, if no one handled this event """ @classmethod
[docs] def emit(cls, dialog, parent, *args, **kwargs): retval = super(RunDialogEvent, cls).emit(dialog, parent, *args, **kwargs) # When nobody catches the event, lets return the default dialog if retval is None: return dialog return retval
[docs]class DialogCreateEvent(Event): """Emitted when a dialog is instantiated :param dialog: an instance of :class:`stoqlib.gui.base.dialogs.BasicDialog` """
@public(since="1.8.0")
[docs]class EditorCreateEvent(Event): """Emitted when an editor is instantiated. Note that since a BaseEditor is also a BaseEditorSlave, the EditorSlaveCreateEvent will also be emitted. The main difference from this event to the other one, is that when this event is emitted, the editor already has a main_window property that can be used. :param editor: a subclass of :class:`stoqlib.gui.editor.baseeditor.BaseEditor` :param model: usually a subclass of :class:`stoqlib.domain.base.Domain` :param store: the database store used in editor and model :param visual_mode: a bool defining if the editor was created on visual_mode. """
@public(since="1.7.0")
[docs]class EditorSlaveCreateEvent(Event): """Emitted when a slave editor is instantiated :param editor: a subclass of :class:`stoqlib.gui.editor.baseeditor.BaseEditorSlave` :param model: usually a subclass of :class:`stoqlib.domain.base.Domain` :param store: the database store used in editor and model :param visual_mode: a bool defining if the editor was created on visual_mode. """
@public(since="1.8.0")
[docs]class EditorSlaveConfirmEvent(Event): """Emitted when a slave editor is confirmed :param editor: a subclass of :class:`stoqlib.gui.editor.baseeditor.BaseEditorSlave` :param model: usually a subclass of :class:`stoqlib.domain.base.Domain` :param store: the database store used in editor and model :param visual_mode: a bool defining if the editor was created on visual_mode. """
[docs]class SearchDialogSetupSearchEvent(Event): """Emitted when a search slave is created. :param dialog: The dialog that is being prepared for search. """
# # Printing events # @public(since="1.8.0")
[docs]class PrintReportEvent(Event): """Emitted when a report is going to be printed Useful if the report is going to be replaced by another. In that case, the callback connected to this event should return ``True`` and the original printing won't happen. :param report_class: the report class :param *args: extra args for the report class :param **kwargs: extra kwargs for the report class """
[docs]class SaleQuoteFinishPrintEvent(Event): """Emitted when finish a sale quote If a callsite return a value from this event, the default report will not be printed. :param sale: the sale that will generate a new report """
# # Searching Events # @public(since='1.9.0')
[docs]class CanSeeAllBranches(Event): """This is emmited when a branch filter is being created and we should decide if all branches should be selectable or only the current one. """
# # CouponCreatedEvent #
[docs]class CouponCreatedEvent(Event): """Emitted when a coupon is to be created on fiscalprinter. :param coupon: The newly created coupon :type coupon: :stoqlib.gui.fiscalprinter.FiscalCoupon :param sale: The |sale| to wich we are creating the coupon. Will be ``None`` when it is still in progress (i.e. a sale in progress on POS). """
# # Stock Update Events # @public(since="1.5.0")
[docs]class WizardSellableItemStepEvent(Event): """ This event is emitted when the `items step <stoqlib.gui.wizard...>` of the receiving wizard is reached. :param wizard_step: The product receiving order dialog. """
@public(since="1.13")
[docs]class WizardAddSellableEvent(Event): """ This event is emitted when a sellable is added on a stock operation wizard, such as sales, loans, transfers and decreases. :param wizard: The wizard that is handling the operation. :param item: The operation item added to the operation. """
# # POS Events # @public(since="1.5.0")
[docs]class POSConfirmSaleEvent(Event): """ This event is emitted in case a sale is confirmed in the pos app. Note that the `<ConfirmSaleEvent>` is also emitted, right before this event, but this event may not be emitted if the sale is being confirmed outside the pos app. :param sale_items: A list of objects representing the itens added in the Sale. This objects are instances of `<stoq.gui.pos.TemporarySaleItem>` """
@public(since="1.13")
[docs]class POSAddSellableEvent(Event): """ This event is emitted when a sellable is added on the pos app. :param sellable: The sellable `<stoqlib.domain.sellable.Sellable>` object added to the sale :param quantity: The quantity of the sellable added :param batch: The batch of the sellable added """
# # Wizard Events # @public(since="1.5.0")
[docs]class NewLoanWizardFinishEvent(Event): """ This event is emitted in case a loan is confirmed in the New Loan Wizard. :param loan: The `loan <stoqlib.domain.loan.Loan>` object that represents the loan created. """
@public(since="1.5.0")
[docs]class LoanItemSelectionStepEvent(Event): """ This event is emitted in item selection step of the close loan wizard :param step: The step itself """
@public(since="1.5.0")
[docs]class CloseLoanWizardFinishEvent(Event): """ This event is emitted when `stoqlib.gui.wizards.loanwizard.CloseLoanWizard>` finishes :param loans: A list of all closed |loans|. :param created_sale: The |sale| object that was created for the closed loans :param wizard: The `stoqlib.gui.wizards.loanwizard.CloseLoanWizard>` itself """
@public(since="1.5.0")
[docs]class ReceivingOrderWizardFinishEvent(Event): """ This event is emitted in case an order is received in the Receiving Order Wizard. :param order: The `receiving order <stoqlib.domain.receiving.ReceivingOrder>` object that represents the order received. """
@public(since="1.5.0")
[docs]class SaleReturnWizardFinishEvent(Event): """ This event is emitted in case a sale is returned in the Sale Return Wizard. :param returned_sale: The `returned sale <stoqlib.domain.returned_sale.ReturnedSale>` object that represents the sale returned. """
@public(since="1.5.0")
[docs]class SaleTradeWizardFinishEvent(Event): """ This event is emitted in case a new trade is created in the Sale Trade Wizard. Note that the trade will only be confirmed after the new sale is confirmed in the POS app. :param returned_sale: The `returned sale <stoqlib.domain.returnedsale.ReturnedSale>` object that represents the sale returned. """
@public(since="1.5.0")
[docs]class StockDecreaseWizardFinishEvent(Event): """ This event is emitted in case the stock is decreased in the Stock Decrease Wizard. :param stock_decreased: The `stock decrease <stoqlib.domain.stockdecrease.StockDecrease>` object that represents the stock decrement. """
@public(since="1.5.0")
[docs]class StockTransferWizardFinishEvent(Event): """ This event is emitted in case a stock transfer is ordered in the Stock Transfer Wizard. :param transfer_order: The `transfer order <stoqlib.domain.transfer.TransferOrder>` object that represents the stock transfer. """
@public(since="1.8.0")
[docs]class ConfirmSaleWizardFinishEvent(Event): """ This event is emitted in case a sale is confirmed using the confirm sale wizard :param sale: The |sale| that was confirmed. """
@public(since="1.8.0")
[docs]class SaleQuoteWizardFinishEvent(Event): """ This event is emitted in case a sale quote is created using the sale quote wizard. :param sale: The |sale| that was created. """
@public(since="1.12.0")
[docs]class InvoiceSetupEvent(Event): """ This event is triggered before an operation wizard commit to check and/or setup the invoice data. If the return value is False, the commit is not done, and the wizard should let the user fix the mistakes or do a rollback. If it's True, the wizard can go on with the commit. If the event is not caught or the callsite returns None, the wizard can go on with the commit too. :rtype: bool or NoneType :returns: A bool value representing the validity of the invoice data or None """
@public(since="1.13")
[docs]class StockOperationPersonValidationEvent(Event): """ This event is issued when a person is about to be associated to a stock operation. :param person: The <stoqlib.domain.person.Person> of the model added to the operation. :param person_type: The type of the model added, such as Client, Branch, Transporter. :rtype: <kiwy.datatypes.ValidationError> :returns: A ValidationError if validation fails else None """