Пример #1
0
 def __popup_listwin(self, event=None):
     if not self.__listwin:
         from ListViewer import ListViewer
         self.__listwin = ListViewer(self.__sb, self.__root)
         self.__sb.add_view(self.__listwin)
     self.__listwin.deiconify()
Пример #2
0
 def __popup_listwin(self, event=None):
     if not self.__listwin:
         from ListViewer import ListViewer
         self.__listwin = ListViewer(self.__sb, self.__root)
         self.__sb.add_view(self.__listwin)
     self.__listwin.deiconify()
Пример #3
0
class PyncheWidget:
    def __init__(self, version, switchboard, master=None):
        self.__sb = switchboard
        self.__version = version
        self.__textwin = None
        self.__listwin = None
        self.__detailswin = None
        self.__helpwin = None
        modal = self.__modal = not not master
        # If a master was given, we are running as a modal dialog servant to
        # some other application.  We rearrange our UI in this case (there's
        # no File menu and we get `Okay' and `Cancel' buttons), and we do a
        # grab_set() to make ourselves modal
        if modal:
            self.__tkroot = tkroot = Toplevel(master, class_='Pynche')
            tkroot.grab_set()
            tkroot.withdraw()
        else:
            # Is there already a default root for Tk, say because we're
            # running under Guido's IDE? :-) Two conditions say no, either the
            # import fails or _default_root is None.
            tkroot = None
            try:
                from Tkinter import _default_root
                tkroot = self.__tkroot = _default_root
            except ImportError:
                pass
            if not tkroot:
                tkroot = self.__tkroot = Tk(className='Pynche')
            # but this isn't our top level widget, so make it invisible
            tkroot.withdraw()
        # create the menubar
        menubar = self.__menubar = Menu(tkroot)
        #
        # File menu
        #
        if not modal:
            filemenu = self.__filemenu = Menu(menubar, tearoff=0)
            filemenu.add_command(label='Quit',
                                 command=self.__quit,
                                 accelerator='Alt-Q',
                                 underline=0)
        #
        # View menu
        #
        viewmenu = Menu(menubar, tearoff=0)
        viewmenu.add_command(label='Text Window...',
                             command=self.__popup_text,
                             underline=0)
        viewmenu.add_command(label='Color List Window...',
                             command=self.__popup_listwin,
                             underline=0)
        viewmenu.add_command(label='Details Window...',
                             command=self.__popup_details,
                             underline=0)
        #
        # Help menu
        #
        helpmenu = Menu(menubar, name='help', tearoff=0)
        helpmenu.add_command(label='About Pynche...',
                             command=self.__popup_about,
                             underline=0)
        helpmenu.add_command(label='Help...',
                             command=self.__popup_usage,
                             underline=0)
        #
        # Tie them all together
        #
        if not modal:
            menubar.add_cascade(label='File', menu=filemenu, underline=0)
        menubar.add_cascade(label='View', menu=viewmenu, underline=0)
        menubar.add_cascade(label='Help', menu=helpmenu, underline=0)

        # now create the top level window
        root = self.__root = Toplevel(tkroot, class_='Pynche', menu=menubar)
        root.protocol('WM_DELETE_WINDOW', modal and self.__bell or self.__quit)
        root.title('Pynche %s' % version)
        root.iconname('Pynche')
        # Only bind accelerators for the File->Quit menu item if running as a
        # standalone app
        if not modal:
            root.bind('<Alt-q>', self.__quit)
            root.bind('<Alt-Q>', self.__quit)
        else:
            # We're a modal dialog so we have a new row of buttons
            bframe = Frame(root, borderwidth=1, relief=RAISED)
            bframe.grid(row=4, column=0, columnspan=2, sticky='EW', ipady=5)
            okay = Button(bframe, text='Okay', command=self.__okay)
            okay.pack(side=LEFT, expand=1)
            cancel = Button(bframe, text='Cancel', command=self.__cancel)
            cancel.pack(side=LEFT, expand=1)

    def __quit(self, event=None):
        self.__tkroot.quit()

    def __bell(self, event=None):
        self.__tkroot.bell()

    def __okay(self, event=None):
        self.__sb.withdraw_views()
        self.__tkroot.grab_release()
        self.__quit()

    def __cancel(self, event=None):
        self.__sb.canceled()
        self.__okay()

    def __keepalive(self):
        # Exercise the Python interpreter regularly so keyboard interrupts get
        # through.
        self.__tkroot.tk.createtimerhandler(KEEPALIVE_TIMER, self.__keepalive)

    def start(self):
        if not self.__modal:
            self.__keepalive()
        self.__tkroot.mainloop()

    def window(self):
        return self.__root

    def __popup_about(self, event=None):
        from Main import __version__
        tkMessageBox.showinfo(
            'About Pynche ' + __version__, '''\
Pynche %s
The PYthonically Natural
Color and Hue Editor

For information
contact: Barry A. Warsaw
email:   [email protected]''' % __version__)

    def __popup_usage(self, event=None):
        if not self.__helpwin:
            self.__helpwin = Helpwin(self.__root, self.__quit)
        self.__helpwin.deiconify()

    def __popup_text(self, event=None):
        if not self.__textwin:
            from TextViewer import TextViewer
            self.__textwin = TextViewer(self.__sb, self.__root)
            self.__sb.add_view(self.__textwin)
        self.__textwin.deiconify()

    def __popup_listwin(self, event=None):
        if not self.__listwin:
            from ListViewer import ListViewer
            self.__listwin = ListViewer(self.__sb, self.__root)
            self.__sb.add_view(self.__listwin)
        self.__listwin.deiconify()

    def __popup_details(self, event=None):
        if not self.__detailswin:
            from DetailsViewer import DetailsViewer
            self.__detailswin = DetailsViewer(self.__sb, self.__root)
            self.__sb.add_view(self.__detailswin)
        self.__detailswin.deiconify()

    def withdraw(self):
        self.__root.withdraw()

    def deiconify(self):
        self.__root.deiconify()
Пример #4
0
class PyncheWidget:
    def __init__(self, version, switchboard, master=None):
        self.__sb = switchboard
        self.__version = version
        self.__textwin = None
        self.__listwin = None
        self.__detailswin = None
        self.__helpwin = None
        modal = self.__modal = not not master
        # If a master was given, we are running as a modal dialog servant to
        # some other application.  We rearrange our UI in this case (there's
        # no File menu and we get `Okay' and `Cancel' buttons), and we do a
        # grab_set() to make ourselves modal
        if modal:
            self.__tkroot = tkroot = Toplevel(master, class_='Pynche')
            tkroot.grab_set()
            tkroot.withdraw()
        else:
            # Is there already a default root for Tk, say because we're
            # running under Guido's IDE? :-) Two conditions say no, either the
            # import fails or _default_root is None.
            tkroot = None
            try:
                from Tkinter import _default_root
                tkroot = self.__tkroot = _default_root
            except ImportError:
                pass
            if not tkroot:
                tkroot = self.__tkroot = Tk(className='Pynche')
            # but this isn't our top level widget, so make it invisible
            tkroot.withdraw()
        # create the menubar
        menubar = self.__menubar = Menu(tkroot)
        #
        # File menu
        #
        if not modal:
            filemenu = self.__filemenu = Menu(menubar, tearoff=0)
            filemenu.add_command(label='Quit',
                                 command=self.__quit,
                                 accelerator='Alt-Q',
                                 underline=0)
        #
        # View menu
        #
        viewmenu = Menu(menubar, tearoff=0)
        viewmenu.add_command(label='Text Window...',
                             command=self.__popup_text,
                             underline=0)
        viewmenu.add_command(label='Color List Window...',
                             command=self.__popup_listwin,
                             underline=0)
        viewmenu.add_command(label='Details Window...',
                             command=self.__popup_details,
                             underline=0)
        #
        # Help menu
        #
        helpmenu = Menu(menubar, name='help', tearoff=0)
	helpmenu.add_command(label='About Pynche...',
                             command=self.__popup_about,
                             underline=0)
        helpmenu.add_command(label='Help...',
                             command=self.__popup_usage,
                             underline=0)
        #
        # Tie them all together
        #
        if not modal:
            menubar.add_cascade(label='File',
                                menu=filemenu,
                                underline=0)
        menubar.add_cascade(label='View',
                            menu=viewmenu,
                            underline=0)
        menubar.add_cascade(label='Help',
                            menu=helpmenu,
                            underline=0)

        # now create the top level window
        root = self.__root = Toplevel(tkroot, class_='Pynche', menu=menubar)
        root.protocol('WM_DELETE_WINDOW',
                      modal and self.__bell or self.__quit)
        root.title('Pynche %s' % version)
        root.iconname('Pynche')
        # Only bind accelerators for the File->Quit menu item if running as a
        # standalone app
        if not modal:
            root.bind('<Alt-q>', self.__quit)
            root.bind('<Alt-Q>', self.__quit)
        else:
            # We're a modal dialog so we have a new row of buttons
            bframe = Frame(root, borderwidth=1, relief=RAISED)
            bframe.grid(row=4, column=0, columnspan=2,
                        sticky='EW',
                        ipady=5)
            okay = Button(bframe,
                          text='Okay',
                          command=self.__okay)
            okay.pack(side=LEFT, expand=1)
            cancel = Button(bframe,
                            text='Cancel',
                            command=self.__cancel)
            cancel.pack(side=LEFT, expand=1)

    def __quit(self, event=None):
        self.__tkroot.quit()

    def __bell(self, event=None):
        self.__tkroot.bell()

    def __okay(self, event=None):
        self.__sb.withdraw_views()
        self.__tkroot.grab_release()
        self.__quit()

    def __cancel(self, event=None):
        self.__sb.canceled()
        self.__okay()

    def __keepalive(self):
        # Exercise the Python interpreter regularly so keyboard interrupts get
        # through.
        self.__tkroot.tk.createtimerhandler(KEEPALIVE_TIMER, self.__keepalive)

    def start(self):
        if not self.__modal:
            self.__keepalive()
        self.__tkroot.mainloop()

    def window(self):
        return self.__root

    def __popup_about(self, event=None):
        from Main import __version__
        tkMessageBox.showinfo('About Pynche ' + __version__,
                              '''\
Pynche %s
The PYthonically Natural
Color and Hue Editor

For information
contact: Barry A. Warsaw
email:   [email protected]''' % __version__)

    def __popup_usage(self, event=None):
        if not self.__helpwin:
            self.__helpwin = Helpwin(self.__root, self.__quit)
        self.__helpwin.deiconify()

    def __popup_text(self, event=None):
        if not self.__textwin:
            from TextViewer import TextViewer
            self.__textwin = TextViewer(self.__sb, self.__root)
            self.__sb.add_view(self.__textwin)
        self.__textwin.deiconify()

    def __popup_listwin(self, event=None):
        if not self.__listwin:
            from ListViewer import ListViewer
            self.__listwin = ListViewer(self.__sb, self.__root)
            self.__sb.add_view(self.__listwin)
        self.__listwin.deiconify()

    def __popup_details(self, event=None):
        if not self.__detailswin:
            from DetailsViewer import DetailsViewer
            self.__detailswin = DetailsViewer(self.__sb, self.__root)
            self.__sb.add_view(self.__detailswin)
        self.__detailswin.deiconify()

    def withdraw(self):
        self.__root.withdraw()

    def deiconify(self):
        self.__root.deiconify()