Skip to content
This repository
branch: master
Fetching contributors…

Cannot retrieve contributors at this time

file 208 lines (143 sloc) 6.183 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208
#------------------------------------------------------------------------------
# Copyright (c) 2005, Enthought, Inc.
# All rights reserved.
#
# This software is provided without warranty under the terms of the BSD
# license included in enthought/LICENSE.txt and may be redistributed only
# under the conditions described in the aforementioned license. The license
# is also available online at http://www.enthought.com/licenses/BSD.txt
# Thanks for using Enthought open source!
#
# Author: Enthought, Inc.
# Description: <Enthought pyface package component>
#------------------------------------------------------------------------------
""" The abstract interface for all pyface top-level windows. """


# Enthought library imports.
from traits.api import Event, Tuple, Unicode

# Local imports.
from constant import NO
from key_pressed_event import KeyPressedEvent
from i_widget import IWidget


class IWindow(IWidget):
    """ The abstract interface for all pyface top-level windows.

A pyface top-level window has no visual representation until it is opened
(ie. its 'control' trait will be None until it is opened).
"""

    #### 'IWindow' interface ##################################################

    # The position of the window.
    position = Tuple

    # The size of the window.
    size = Tuple

    # The window title.
    title = Unicode

    #### Events #####

    # The window has been activated.
    activated = Event

    # The window has been closed.
    closed = Event

    # The window is about to be closed.
    closing = Event

    # The window has been deactivated.
    deactivated = Event

    # A key was pressed while the window had focus.
    # FIXME v3: This smells of a hack. What's so special about key presses?
    # FIXME v3: Unicode
    key_pressed = Event(KeyPressedEvent)

    # The window has been opened.
    opened = Event

    # The window is about to open.
    opening = Event

    ###########################################################################
    # 'IWindow' interface.
    ###########################################################################

    def open(self):
        """ Opens the window. """

    def close(self):
        """ Closes the window. """

    def activate(self):
        """ Activates the window. """

    def show(self, visible):
        """ Show or hide the window.

visible is set if the window should be shown.
"""

    def confirm(self, message, title=None, cancel=False, default=NO):
        """ Convenience method to show a confirmation dialog.

message is the text of the message to display.
title is the text of the window title.
cancel is set if the dialog should contain a Cancel button.
default is the default button.
"""

    def information(self, message, title='Information'):
        """ Convenience method to show an information message dialog.

message is the text of the message to display.
title is the text of the window title.
"""

    def warning(self, message, title='Warning'):
        """ Convenience method to show a warning message dialog.

message is the text of the message to display.
title is the text of the window title.
"""

    def error(self, message, title='Error'):
        """ Convenience method to show an error message dialog.

message is the text of the message to display.
title is the text of the window title.
"""

    ###########################################################################
    # Protected 'IWindow' interface.
    ###########################################################################

    def _add_event_listeners(self):
        """ Adds any event listeners required by the window. """


class MWindow(object):
    """ The mixin class that contains common code for toolkit specific
implementations of the IWindow interface.

Implements: close(), confirm(), open()
Reimplements: _create()
"""

    ###########################################################################
    # 'IWindow' interface.
    ###########################################################################

    def open(self):
        """ Opens the window. """

        # Trait notification.
        self.opening = self

        if self.control is None:
            self._create()

        self.show(True)

        # Trait notification.
        self.opened = self

        return

    def close(self):
        """ Closes the window. """

        if self.control is not None:
            # Trait notification.
            self.closing = self

            # Cleanup the toolkit-specific control.
            self.destroy()

            # Trait notification.
            self.closed = self

        return

    def confirm(self, message, title=None, cancel=False, default=NO):
        """ Convenience method to show a confirmation dialog. """

        from confirmation_dialog import confirm

        return confirm(self.control, message, title, cancel, default)

    def information(self, message, title='Information'):
        """ Convenience method to show an information message dialog. """

        from message_dialog import information

        return information(self.control, message, title)

    def warning(self, message, title='Warning'):
        """ Convenience method to show a warning message dialog. """

        from message_dialog import warning

        return warning(self.control, message, title)

    def error(self, message, title='Error'):
        """ Convenience method to show an error message dialog. """

        from message_dialog import error

        return error(self.control, message, title)

    ###########################################################################
    # Protected 'IWidget' interface.
    ###########################################################################

    def _create(self):
        """ Creates the window's widget hierarchy. """

        # Create the toolkit-specific control.
        super(MWindow, self)._create()

        # Wire up event any event listeners required by the window.
        self._add_event_listeners()
Something went wrong with that request. Please try again.