034 toolbar.py :  » Ajax » pyjamas » src » pygtkweb » demos » Python Open Source

Home
Python Open Source
1.3.1.2 Python
2.Ajax
3.Aspect Oriented
4.Blog
5.Build
6.Business Application
7.Chart Report
8.Content Management Systems
9.Cryptographic
10.Database
11.Development
12.Editor
13.Email
14.ERP
15.Game 2D 3D
16.GIS
17.GUI
18.IDE
19.Installer
20.IRC
21.Issue Tracker
22.Language Interface
23.Log
24.Math
25.Media Sound Audio
26.Mobile
27.Network
28.Parser
29.PDF
30.Project Management
31.RSS
32.Search
33.Security
34.Template Engines
35.Test
36.UML
37.USB Serial
38.Web Frameworks
39.Web Server
40.Web Services
41.Web Unit
42.Wiki
43.Windows
44.XML
Python Open Source » Ajax » pyjamas 
pyjamas » src » pygtkweb » demos » 034-toolbar.py
#!/usr/bin/env python

# example toolbar.py

import pygtk
pygtk.require('2.0')
import gtk

class ToolbarExample:
    # This method is connected to the Close button or
    # closing the window from the WM
    def delete_event(self, widget, event=None):
        gtk.main_quit()
        return False

    # that's easy... when one of the buttons is toggled, we just
    # check which one is active and set the style of the toolbar
    # accordingly
    def radio_event(self, widget, toolbar):
        if self.text_button.get_active(): 
            toolbar.set_style(gtk.TOOLBAR_TEXT)
        elif self.icon_button.get_active():
            toolbar.set_style(gtk.TOOLBAR_ICONS)
        elif self.both_button.get_active():
            toolbar.set_style(gtk.TOOLBAR_BOTH)

    # even easier, just check given toggle button and enable/disable 
    # tooltips
    def toggle_event(self, widget, toolbar):
        toolbar.set_tooltips(widget.get_active())

    def __init__(self):
        # Here is our main window (a dialog) and a handle for the handlebox
        # Ok, we need a toolbar, an icon with a mask (one for all of 
        # the buttons) and an icon widget to put this icon in (but 
        # we'll create a separate widget for each button)
        # create a new window with a given title, and nice size
        dialog = gtk.Dialog()
        dialog.set_title("GTKToolbar Tutorial")
        dialog.set_size_request(450, 250)
        dialog.set_resizable(True)

        # typically we quit if someone tries to close us
        dialog.connect("delete_event", self.delete_event)

        # to make it nice we'll put the toolbar into the handle box, 
        # so that it can be detached from the main window
        handlebox = gtk.HandleBox()
        dialog.vbox.pack_start(handlebox, False, False, 5)

        # toolbar will be horizontal, with both icons and text, and
        # with 5pxl spaces between items and finally, 
        # we'll also put it into our handlebox
        toolbar = gtk.Toolbar()
        toolbar.set_orientation(gtk.ORIENTATION_HORIZONTAL)
        toolbar.set_style(gtk.TOOLBAR_BOTH)
        toolbar.set_border_width(5)
        handlebox.add(toolbar)

        # our first item is <close> button
        iconw = gtk.Image() # icon widget
        iconw.set_from_file("gtk.xpm")
        close_button = toolbar.append_item(
            "Close",           # button label
            "Closes this app", # this button's tooltip
            "Private",         # tooltip private info
            iconw,             # icon widget
            self.delete_event) # a signal
        toolbar.append_space() # space after item

        # now, let's make our radio buttons group...
        iconw = gtk.Image() # icon widget
        iconw.set_from_file("gtk.xpm")
        icon_button = toolbar.append_element(
            gtk.TOOLBAR_CHILD_RADIOBUTTON, # type of element
            None,                          # widget
            "Icon",                        # label
            "Only icons in toolbar",       # tooltip
            "Private",                     # tooltip private string
            iconw,                         # icon
            self.radio_event,              # signal
            toolbar)                       # data for signal
        toolbar.append_space()
        self.icon_button = icon_button

        # following radio buttons refer to previous ones
        iconw = gtk.Image() # icon widget
        iconw.set_from_file("gtk.xpm")
        text_button = toolbar.append_element(
            gtk.TOOLBAR_CHILD_RADIOBUTTON,
            icon_button,
            "Text",
            "Only texts in toolbar",
            "Private",
            iconw,
            self.radio_event,
            toolbar)
        toolbar.append_space()
        self.text_button = text_button

        iconw = gtk.Image() # icon widget
        iconw.set_from_file("gtk.xpm")
        both_button = toolbar.append_element(
            gtk.TOOLBAR_CHILD_RADIOBUTTON,
            text_button,
            "Both",
            "Icons and text in toolbar",
            "Private",
            iconw,
            self.radio_event,
            toolbar)
        toolbar.append_space()
        self.both_button = both_button
        both_button.set_active(True)

        # here we have just a simple toggle button
        iconw = gtk.Image() # icon widget
        iconw.set_from_file("gtk.xpm")
        tooltips_button = toolbar.append_element(
            gtk.TOOLBAR_CHILD_TOGGLEBUTTON,
            None,
            "Tooltips",
            "Toolbar with or without tips",
            "Private",
            iconw,
            self.toggle_event,
            toolbar)
        toolbar.append_space()
        tooltips_button.set_active(True)

        # to pack a widget into toolbar, we only have to 
        # create it and append it with an appropriate tooltip
        entry = gtk.Entry()
        toolbar.append_widget(entry,  "This is just an entry", "Private")

        # well, it isn't created within the toolbar, so we must still show it
        entry.show()

        # that's it ! let's show everything.
        toolbar.show()
        handlebox.show()
        dialog.show()

def main():
    # rest in gtk_main and wait for the fun to begin!
    gtk.main()
    return 0

if __name__ == "__main__":
    ToolbarExample()
    main()
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.