Mercurial > libervia-web
diff browser_side/dialog.py @ 354:c417a7acfe44
browser_side: class PromptDialog based on GenericConfirmDialog asks the user for a text input
author | souliane <souliane@mailoo.org> |
---|---|
date | Thu, 13 Feb 2014 10:30:38 +0100 |
parents | ce5b33f499c5 |
children | 2b5503392fbd |
line wrap: on
line diff
--- a/browser_side/dialog.py Thu Feb 13 01:33:24 2014 +0100 +++ b/browser_side/dialog.py Thu Feb 13 10:30:38 2014 +0100 @@ -233,10 +233,14 @@ class GenericConfirmDialog(DialogBox): - def __init__(self, widgets, callback, title='Confirmation', **kwargs): + def __init__(self, widgets, callback, title='Confirmation', prompt=None, **kwargs): """ Dialog to confirm an action - @param callback: method to call when contacts have been choosed + @param widgets: widgets to attach + @param callback: method to call when a button is clicked + @param title: title of the dialog + @param prompt: textbox from which to retrieve the string value to be passed to the callback when + OK button is pressed. If None, OK button will return "True". Cancel button always returns "False". """ self.callback = callback DialogBox.__init__(self, centered=True, **kwargs) @@ -245,6 +249,8 @@ content.setWidth('100%') for wid in widgets: content.add(wid) + if wid == prompt: + wid.setWidth('100%') button_panel = HorizontalPanel() button_panel.addStyleName("marginAuto") self.confirm_button = Button("OK", self.onConfirm) @@ -253,15 +259,21 @@ content.add(button_panel) self.setHTML(title) self.setWidget(content) + self.prompt = prompt def onConfirm(self, sender): self.hide() - self.callback(True) + self.callback(self.prompt.getText() if self.prompt else True) def onCancel(self, sender): self.hide() self.callback(False) + def show(self): + DialogBox.show(self) + if self.prompt: + self.prompt.setFocus(True) + class ConfirmDialog(GenericConfirmDialog): @@ -313,6 +325,14 @@ GenericDialog.__init__(self, title, HTML(body), callback, options, **kwargs) +class PromptDialog(GenericConfirmDialog): + + def __init__(self, callback, text='', title='User input', **kwargs): + prompt = TextBox() + prompt.setText(text) + GenericConfirmDialog.__init__(self, [prompt], callback, title, prompt, **kwargs) + + class PopupPanelWrapper(PopupPanel): """This wrapper catch Escape event to avoid request cancellation by Firefox"""