class LabelRichExample(VerticalLayout, IClickListener): def __init__(self): super(LabelRichExample, self).__init__() self.setSpacing(True) self._editor = RichTextArea() self._richText = Label('<h1>Rich text example</h1>' '<p>The <b>quick</b> brown fox jumps <sup>over</sup> ' 'the <b>lazy</b> dog.</p>' '<p>This text can be edited with the <i>Edit</i> -button</p>') self._richText.setContentMode(Label.CONTENT_XHTML) self.addComponent(self._richText) self._b = Button('Edit') self._b.addListener(self, IClickListener) self.addComponent(self._b) self._editor.setWidth('100%') def buttonClick(self, event): if self.getComponentIterator().next() == self._richText: self._editor.setValue(self._richText.getValue()) self.replaceComponent(self._richText, self._editor) self._b.setCaption('Apply') else: self._richText.setValue(self._editor.getValue()) self.replaceComponent(self._editor, self._richText) self._b.setCaption('Edit')
class LabelRichExample(VerticalLayout, IClickListener): def __init__(self): super(LabelRichExample, self).__init__() self.setSpacing(True) self._editor = RichTextArea() self._richText = Label( '<h1>Rich text example</h1>' '<p>The <b>quick</b> brown fox jumps <sup>over</sup> ' 'the <b>lazy</b> dog.</p>' '<p>This text can be edited with the <i>Edit</i> -button</p>') self._richText.setContentMode(Label.CONTENT_XHTML) self.addComponent(self._richText) self._b = Button('Edit') self._b.addListener(self, IClickListener) self.addComponent(self._b) self._editor.setWidth('100%') def buttonClick(self, event): if self.getComponentIterator().next() == self._richText: self._editor.setValue(self._richText.getValue()) self.replaceComponent(self._richText, self._editor) self._b.setCaption('Apply') else: self._richText.setValue(self._editor.getValue()) self.replaceComponent(self._editor, self._richText) self._b.setCaption('Edit')
class AccordionDisabledExample(VerticalLayout, tab_sheet.ISelectedTabChangeListener, button.IClickListener): _icon1 = ThemeResource('../sampler/icons/action_save.gif') _icon2 = ThemeResource('../sampler/icons/comment_yellow.gif') _icon3 = ThemeResource('../sampler/icons/icon_info.gif') def __init__(self): super(AccordionDisabledExample, self).__init__() self.setSpacing(True) self._l1 = Label('There are no previously saved actions.') self._l2 = Label('There are no saved notes.') self._l3 = Label('There are currently no issues.') self._a = Accordion() self._a.setHeight('300px') self._a.setWidth('400px') self._t1 = self._a.addTab(self._l1, 'Saved actions', self._icon1) self._t2 = self._a.addTab(self._l2, 'Notes', self._icon2) self._t3 = self._a.addTab(self._l3, 'Issues', self._icon3) self._a.addListener(self, tab_sheet.ISelectedTabChangeListener) self._b1 = Button('Disable \'Notes\' tab') self._b2 = Button('Hide \'Issues\' tab') self._b1.addListener(self, button.IClickListener) self._b2.addListener(self, button.IClickListener) hl = HorizontalLayout() hl.setSpacing(True) hl.addComponent(self._b1) hl.addComponent(self._b2) self.addComponent(self._a) self.addComponent(hl) def selectedTabChange(self, event): c = self._a.getTab(event.getTabSheet().getSelectedTab()).getCaption() self.getWindow().showNotification('Selected tab: ' + c) def buttonClick(self, event): if self._b1 == event.getButton(): # b1 clicked if self._t2.isEnabled(): self._t2.setEnabled(False) self._b1.setCaption('Enable \'Notes\' tab') else: self._t2.setEnabled(True) self._b1.setCaption('Disable \'Notes\' tab') else: # b2 clicked if self._t3.isVisible(): self._t3.setVisible(False) self._b2.setCaption('Show \'Issues\' tab') else: self._t3.setVisible(True) self._b2.setCaption('Hide \'Issues\' tab') self._a.requestRepaint()
class TabSheetDisabledExample(VerticalLayout, tab_sheet.ISelectedTabChangeListener, button.IClickListener): _icon1 = ThemeResource('../sampler/icons/action_save.gif') _icon2 = ThemeResource('../sampler/icons/comment_yellow.gif') _icon3 = ThemeResource('../sampler/icons/icon_info.gif') def __init__(self): super(TabSheetDisabledExample, self).__init__() self.setSpacing(True) # Tab 1 content self._l1 = VerticalLayout() self._l1.setMargin(True) self._l1.addComponent(Label('There are no previously saved actions.')) # Tab 2 content self._l2 = VerticalLayout() self._l2.setMargin(True) self._l2.addComponent(Label('There are no saved notes.')) # Tab 3 content self._l3 = VerticalLayout() self._l3.setMargin(True) self._l3.addComponent(Label('There are currently no issues.')) self._t = TabSheet() self._t.setHeight('200px') self._t.setWidth('400px') self._t1 = self._t.addTab(self._l1, 'Saved actions', self._icon1) self._t2 = self._t.addTab(self._l2, 'Notes', self._icon2) self._t3 = self._t.addTab(self._l3, 'Issues', self._icon3) self._t.addListener(self, tab_sheet.ISelectedTabChangeListener) self._toggleEnabled = Button('Disable \'Notes\' tab') self._toggleEnabled.addListener(self, button.IClickListener) self._toggleVisible = Button('Hide \'Issues\' tab') self._toggleVisible.addListener(self, button.IClickListener) hl = HorizontalLayout() hl.setSpacing(True) hl.addComponent(self._toggleEnabled) hl.addComponent(self._toggleVisible) self.addComponent(self._t) self.addComponent(hl) def selectedTabChange(self, event): selected = event.getTabSheet().getSelectedTab() c = self._t.getTab(selected).getCaption() self.getWindow().showNotification('Selected tab: ' + c) def buttonClick(self, event): if self._toggleEnabled == event.getButton(): # toggleEnabled clicked self._t2.setEnabled(not self._t2.isEnabled()) if self._t2.isEnabled(): self._toggleEnabled.setCaption('Disable \'Notes\' tab') else: self._toggleEnabled.setCaption('Enable \'Notes\' tab') else: # toggleVisible clicked self._t3.setVisible(not self._t3.isVisible()) if self._t3.isVisible(): self._toggleVisible.setCaption('Hide \'Issues\' tab') else: self._toggleVisible.setCaption('Show \'Issues\' tab') self._t.requestRepaint()
class SimpleEditor ( Editor, IClickListener ): """ Simple style editor for a button. """ #--------------------------------------------------------------------------- # Trait definitions: #--------------------------------------------------------------------------- # The button label label = Unicode # The list of items in a drop-down menu, if any #menu_items = List # The selected item in the drop-down menu. selected_item = Str #--------------------------------------------------------------------------- # Finishes initializing the editor by creating the underlying toolkit # widget: #--------------------------------------------------------------------------- def init ( self, parent ): """ Finishes initializing the editor by creating the underlying toolkit widget. """ label = self.factory.label or self.item.get_label(self.ui) self.control = Button( str(self.string_value(label)) ) self.sync_value(self.factory.label_value, 'label', 'from') self.control.addListener(self, IClickListener) self.set_tooltip() #--------------------------------------------------------------------------- # Handles the 'label' trait being changed: #--------------------------------------------------------------------------- def _label_changed(self, label): self.control.setCaption( str(self.string_value(label)) ) #--------------------------------------------------------------------------- # Handles the user clicking the button by setting the value on the object: #--------------------------------------------------------------------------- def buttonClick(self, event): self.update_object() def update_object(self): """ Handles the user clicking the button by setting the factory value on the object. """ if self.selected_item != "": self.value = self.selected_item else: self.value = self.factory.value # If there is an associated view, then display it: if (self.factory is not None) and (self.factory.view is not None): self.object.edit_traits( view = self.factory.view, parent = self.control ) #--------------------------------------------------------------------------- # Updates the editor when the object trait changes external to the editor: #--------------------------------------------------------------------------- def update_editor(self): """ Updates the editor when the object trait changes externally to the editor. """ pass
class MuntjacPushButton(MuntjacControl, AbstractTkPushButton): """ A Muntjac implementation of PushButton. """ #-------------------------------------------------------------------------- # Setup methods #-------------------------------------------------------------------------- def create(self, parent): """ Creates the underlying Button control. """ self.widget = Button() self.widget.setImmediate(True) parent.addComponent(self.widget) def initialize(self): """ Intializes the widget with the attributes of this instance. """ super(MuntjacPushButton, self).initialize() self.set_label(self.shell_obj.text) def bind(self): """ Connects the event handlers for the push button. """ super(MuntjacPushButton, self).bind() widget = self.widget widget.clicked.connect(self.on_clicked) widget.pressed.connect(self.on_pressed) widget.released.connect(self.on_released) #-------------------------------------------------------------------------- # Implementation #-------------------------------------------------------------------------- def shell_text_changed(self, text): """ The change handler for the 'text' attribute. """ self.set_label(text) # If the text of the button changes, the size hint has likely # change and the layout system needs to be informed. self.shell_obj.size_hint_updated = True def on_clicked(self): """ The event handler for the button's clicked event. """ shell = self.shell_obj shell._down = False shell.clicked = True def on_pressed(self): """ The event handlers for the button's pressed event. """ shell = self.shell_obj shell._down = True shell.pressed = True def on_released(self): """ The event handler for the button's released event. """ shell = self.shell_obj if shell._down: shell._down = False shell.released = True def set_label(self, label): """ Sets the label on the button control. """ self.widget.setCaption(label)