[Stoq-devel] [Bug 2688] - Inconsistências no wizard de pedido de compra
bugzilla-daemon at async.com.br
bugzilla-daemon at async.com.br
Tue Jul 18 17:29:49 BRT 2006
http://bugs.async.com.br/show_bug.cgi?id=2688
--- Comment #8 from Henrique Romano <henrique at async.com.br> 2006-07-18 17:29 BRT ---
(From update of attachment 3324)
>Index: data/glade/ChooseItemStep.glade
>===================================================================
O nome aqui é muito genérico para o que o gladefile representa. Talvez
"SellableTypeItemStep"?
>Index: data/glade/AbstractProductStep.glade
>===================================================================
>--- data/glade/AbstractProductStep.glade (revisão 3920)
>+++ data/glade/AbstractProductStep.glade (cópia de trabalho)
...
>@@ -194,29 +195,26 @@
> </child>
> <child>
> <widget class="GtkButton" id="add_product_button">
>+ <property name="is_focus">True</property>
Hmmm. Tem certeza de que você realmente quer essa mudança? Por que o botão
"add/edit" tem que estar com foco? Não seria a entry do combo? Poderia testar
isso?
>Index: stoqlib/gui/wizards/purchase.py
>===================================================================
>@@ -240,13 +247,29 @@
...
> # We must commit now since we must rollback self.conn if the user
> # abort ProductEditor
> self.conn.commit()
>- if run_dialog(ProductEditor, self, self.conn, product):
>+ sellables_editors = {Service: ServiceEditor,
>+ Product: ProductEditor,
>+ GiftCertificate: GiftCertificateTypeEditor}
s/sellables_editors/sellable_editors
>+ if item is not None:
>+ for Class, Editor in sellables_editors.items():
Acho que você não precisa dessa iteração, e do dicionário também não:
if item:
editors = {Product: ProductEditor,
Service: ServiceEditor,
GiftCertificate: GiftCertificateTypeEditor,}
try:
editor = editors[item.get_adapted()]
except KeyError:
raise DatabaseIncosistency("Invalid sellable type: %r"
% item.get_adapted())
model = run_dialog(editor, self, self.conn, item)
else:
model = run_dialog(SelectionItemWizard, self, self.conn)
if model:
self.conn.commit()
self.setup_product_entry()
Talvez algo assim fique melhor
>Index: stoqlib/gui/wizards/purchaseitemselection.py
>===================================================================
>--- stoqlib/gui/wizards/purchaseitemselection.py (revisão 0)
>+++ stoqlib/gui/wizards/purchaseitemselection.py (revisão 0)
>@@ -0,0 +1,108 @@
>+# -*- coding: utf-8 -*-
>+# vi:si:et:sw=4:sts=4:ts=4
>+
>+##
>+## Copyright (C) 2005, 2006 Async Open Source <http://www.async.com.br>
>+## All rights reserved
Lembre-se, quando criando um novo módulo, coloque somente o ano atual.
>+class SelectionItemWizard(BaseWizard):
...
>+ def create_model(self, conn):
>+ model = Settable(teste='a')
>+ return model
teste?
>+class SelectionItemStep(WizardEditorStep):
...
Precisa pensar num nome melhor pra essas duas classes também. Talvez algo
derivado da sugestão que eu dei pro gladefile...
>+
>+ def __init__(self, wizard, conn, model, combo_product):
>+ self.combo = combo_product
>+ WizardEditorStep.__init__(self, conn, wizard, model)
>+ self.update_widgets()
Por que você precisa de combo_product aqui?
>+ def update_widgets(self):
>+ a = self.radio_product.get_active()
>+ b = self.radio_service.get_active()
>+ c = self.radio_gift.get_active()
>+ if a:
>+ self.editor = ProductEditor
>+ if b:
>+ self.editor = ServiceEditor
>+ if c:
>+ self.editor = GiftCertificateTypeEditor
renomeia update_widgets para get_item_editor e mude a implementação também, não
precisa das 3 variaveis:
if self.radio_product.get_active():
return ProductEditor
elif self.radio_service.get_active():
return ServiceEditor
elif self.radio_gift.get_active():
return GiftEditor
else:
raise StoqlibError("blabla")
>+ def next_step(self):
>+ if run_dialog(self.editor, self, self.conn, model=None):
E aqui, no lugar de self.editor, vc usa self.get_item_editor()
>+ def on_radio_product__toggled(self, widget):
>+ self.update_widgets()
>+
>+ def on_radio_service__toggled(self, widget):
>+ self.update_widgets()
>+
>+ def on_radio_gift__toggled(self, widget):
>+ self.update_widgets()
...e pode ser livrar dessas callbacks
>Index: stoqlib/gui/wizards/abstract.py
>===================================================================
>--- stoqlib/gui/wizards/abstract.py (revisão 3920)
>+++ stoqlib/gui/wizards/abstract.py (cópia de trabalho)
>@@ -294,14 +294,6 @@
> def _update_widgets(self):
> has_product_str = self.product.get_text() != ''
> self.add_item_button.set_sensitive(has_product_str)
>- if self.add_item_button.get_property('visible'):
>- has_product = (self.product_proxy.model and
>- self.product_proxy.model.product is not None)
>- if has_product:
>- text = _('Edit Product...')
>- else:
>- text = _('Add Product...')
>- self.add_product_button.set_label(text)
Hmmm. Que tal ao invés de termos "Add/Edit item" como label do botão, trocarmos
de "Add item" para "Edit Item" quando tiver item selecionado, igual era feito
antes aqui?
More information about the Stoq-devel
mailing list