home *** CD-ROM | disk | FTP | other *** search
/ tusportal.tus.k12.pa.us / tusportal.tus.k12.pa.us.tar / tusportal.tus.k12.pa.us / Wyse / latest-image.raw / 0.img / usr / lib / pygtk / 2.0 / demos / tooltip.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2010-05-11  |  9KB  |  228 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. '''Tooltip
  5.  
  6. This is a test of the new gtk tooltip system.  It is a
  7. fairly straight forward port of the example distributed with gtk.
  8. '''
  9. import gtk
  10. import cairo
  11. import gobject
  12. import pango
  13. rects = [
  14.     {
  15.         'x': 10,
  16.         'y': 10,
  17.         'r': 0,
  18.         'g': 0,
  19.         'b': 0.9,
  20.         'tooltip': 'Blue box!' },
  21.     {
  22.         'x': 200,
  23.         'y': 170,
  24.         'r': 1,
  25.         'g': 0,
  26.         'b': 0,
  27.         'tooltip': 'Red thing' },
  28.     {
  29.         'x': 100,
  30.         'y': 50,
  31.         'r': 0.8,
  32.         'g': 0.8,
  33.         'b': 0,
  34.         'tooltip': 'Yellow thing' }]
  35.  
  36. class TooltipDemo(gtk.Window):
  37.     
  38.     def __init__(self, parent = None):
  39.         gtk.Window.__init__(self)
  40.         
  41.         try:
  42.             self.set_screen(parent.get_screen())
  43.         except AttributeError:
  44.             self.connect('destroy', (lambda : gtk.main_quit()))
  45.  
  46.         self.set_title(self.__class__.__name__)
  47.         self.set_border_width(10)
  48.         box = gtk.VBox(False, 3)
  49.         self.add(box)
  50.         button = gtk.CheckButton('This one uses the tooltip-markup property')
  51.         button.set_tooltip_text('Hello, I am a static tooltip.')
  52.         box.pack_start(button, False, False, 0)
  53.         button = gtk.CheckButton('I use the query-tooltip signal')
  54.         button.props.has_tooltip = True
  55.         button.connect('query-tooltip', self.query_tooltip_cb)
  56.         box.pack_start(button, False, False, 0)
  57.         label = gtk.Label('I am just a label')
  58.         label.set_selectable(False)
  59.         label.set_tooltip_text('Label & and tooltip')
  60.         box.pack_start(label, False, False, 0)
  61.         label = gtk.Label('I am a selectable label')
  62.         label.set_selectable(True)
  63.         label.set_tooltip_markup('<b>Another</b> Label tooltip')
  64.         box.pack_start(label, False, False, 0)
  65.         button = gtk.CheckButton('This one has a custom tooltip window!')
  66.         box.pack_start(button, False, False, 0)
  67.         tooltip_window = gtk.Window(gtk.WINDOW_POPUP)
  68.         tooltip_button = gtk.Label('blaat!')
  69.         tooltip_window.add(tooltip_button)
  70.         tooltip_button.show()
  71.         button.set_tooltip_window(tooltip_window)
  72.         button.connect('query-tooltip', self.query_tooltip_custom_cb)
  73.         button.props.has_tooltip = True
  74.         button = gtk.Button('This one is insensitive')
  75.         button.set_sensitive(False)
  76.         button.props.tooltip_text = 'Insensitive!'
  77.         box.pack_start(button, False, False, 0)
  78.         tree_view = gtk.TreeView(self.create_model())
  79.         tree_view.set_size_request(200, 240)
  80.         tree_view.insert_column_with_attributes(0, 'Test', gtk.CellRendererText(), text = 0)
  81.         tree_view.props.has_tooltip = True
  82.         tree_view.connect('query-tooltip', self.query_tooltip_tree_view_cb)
  83.         tree_view.get_selection().connect('changed', self.selection_changed_cb, tree_view)
  84.         column = tree_view.get_column(0)
  85.         column.set_clickable(True)
  86.         label = gtk.Label('Test')
  87.         column.set_widget(label)
  88.         label.show()
  89.         button = label.get_parent()
  90.         button.props.tooltip_text = 'Header'
  91.         box.pack_start(tree_view, False, False, 2)
  92.         iconview = gtk.IconView()
  93.         iconview.props.has_tooltip = True
  94.         iconview.connect('query-tooltip', self.query_tooltip_icon_view_cb)
  95.         model = gtk.ListStore(str, gtk.gdk.Pixbuf)
  96.         iconview.set_model(model)
  97.         iconview.set_text_column(0)
  98.         iconview.set_pixbuf_column(1)
  99.         pixbuf1 = iconview.render_icon(gtk.STOCK_APPLY, gtk.ICON_SIZE_BUTTON)
  100.         model.append([
  101.             'Apply',
  102.             pixbuf1])
  103.         pixbuf2 = iconview.render_icon(gtk.STOCK_CANCEL, gtk.ICON_SIZE_BUTTON)
  104.         model.append([
  105.             'Cancel',
  106.             pixbuf2])
  107.         box.pack_start(iconview, False, False, 2)
  108.         buffer = gtk.TextBuffer()
  109.         iter = buffer.get_end_iter()
  110.         buffer.insert(iter, 'Hello, the text ', -1)
  111.         tag = buffer.create_tag('bold')
  112.         tag.props.weight = pango.WEIGHT_BOLD
  113.         iter = buffer.get_end_iter()
  114.         buffer.insert_with_tags(iter, 'in bold', tag)
  115.         iter = buffer.get_end_iter()
  116.         buffer.insert(iter, ' has a tooltip!', -1)
  117.         text_view = gtk.TextView(buffer)
  118.         text_view.set_size_request(200, 50)
  119.         text_view.props.has_tooltip = True
  120.         text_view.connect('query-tooltip', self.query_tooltip_text_view_cb, tag)
  121.         box.pack_start(text_view, False, False, 2)
  122.         drawing_area = gtk.DrawingArea()
  123.         drawing_area.set_size_request(320, 240)
  124.         drawing_area.props.has_tooltip = True
  125.         drawing_area.connect('expose_event', self.drawing_area_expose)
  126.         drawing_area.connect('query-tooltip', self.query_tooltip_drawing_area_cb)
  127.         box.pack_start(drawing_area, False, False, 2)
  128.         self.show_all()
  129.  
  130.     
  131.     def query_tooltip_cb(self, widget, x, y, keyboard_tip, tooltip):
  132.         tooltip.set_markup(widget.get_label())
  133.         tooltip.set_icon_from_stock(gtk.STOCK_DELETE, gtk.ICON_SIZE_MENU)
  134.         return True
  135.  
  136.     
  137.     def query_tooltip_custom_cb(self, widget, x, y, keyboard_tip, tooltip):
  138.         color = gtk.gdk.Color(0, 65535, 0)
  139.         window = widget.get_tooltip_window()
  140.         window.modify_bg(gtk.STATE_NORMAL, color)
  141.         return True
  142.  
  143.     
  144.     def query_tooltip_text_view_cb(self, widget, x, y, keyboard_tip, tooltip, data):
  145.         if keyboard_tip:
  146.             offset = widget.props.buffer.cursor_position
  147.             iter = widget.props.buffer.get_iter_at_offset(offset)
  148.         else:
  149.             coords = widget.window_to_buffer_coords(gtk.TEXT_WINDOW_TEXT, x, y)
  150.             ret = widget.get_iter_at_position(coords[0], coords[1])
  151.         if ret[0].has_tag(data):
  152.             tooltip.set_text('Tooltip on text tag')
  153.         else:
  154.             return False
  155.         return ret[0].has_tag(data)
  156.  
  157.     
  158.     def query_tooltip_tree_view_cb(self, widget, x, y, keyboard_tip, tooltip):
  159.         if not widget.get_tooltip_context(x, y, keyboard_tip):
  160.             return False
  161.         (model, path, iter) = widget.get_tooltip_context(x, y, keyboard_tip)
  162.         value = model.get(iter, 0)
  163.         tooltip.set_markup('<b>Path %s:</b> %s' % (path[0], value[0]))
  164.         widget.set_tooltip_row(tooltip, path)
  165.         return True
  166.  
  167.     
  168.     def query_tooltip_icon_view_cb(self, widget, x, y, keyboard_tip, tooltip):
  169.         if not widget.get_tooltip_context(x, y, keyboard_tip):
  170.             return False
  171.         (model, path, iter) = widget.get_tooltip_context(x, y, keyboard_tip)
  172.         value = model.get(iter, 0)
  173.         tooltip.set_markup('<b>Path %s:</b> %s' % (path[0], value[0]))
  174.         widget.set_tooltip_item(tooltip, path)
  175.         return True
  176.  
  177.     
  178.     def query_tooltip_drawing_area_cb(self, widget, x, y, keyboard_tip, tooltip, data = None):
  179.         if keyboard_tip:
  180.             return False
  181.         for i in range(len(rects)):
  182.             if rects[i]['x'] < x and x < rects[i]['x'] + 50 and rects[i]['y'] < y and y < rects[i]['y'] + 50:
  183.                 tooltip.set_markup(rects[i]['tooltip'])
  184.                 return True
  185.         
  186.         return False
  187.  
  188.     
  189.     def selection_changed_cb(self, selection, tree_view):
  190.         tree_view.trigger_tooltip_query()
  191.  
  192.     
  193.     def create_model(self):
  194.         store = gtk.TreeStore(gobject.TYPE_STRING)
  195.         store.append(None, ('File Manager',))
  196.         store.append(None, ('Gossip',))
  197.         store.append(None, ('System Settings',))
  198.         store.append(None, ('The GIMP',))
  199.         store.append(None, ('Terminal',))
  200.         store.append(None, ('Word Processor',))
  201.         return store
  202.  
  203.     
  204.     def drawing_area_expose(self, drawing_area, event, data = None):
  205.         cr = drawing_area.window.cairo_create()
  206.         cr.rectangle(0, 0, drawing_area.allocation.width, drawing_area.allocation.height)
  207.         cr.set_source_rgb(1, 1, 1)
  208.         cr.fill()
  209.         for i in range(len(rects)):
  210.             cr.rectangle(rects[i]['x'], rects[i]['y'], 50, 50)
  211.             cr.set_source_rgb(rects[i]['r'], rects[i]['g'], rects[i]['b'])
  212.             cr.stroke()
  213.             cr.rectangle(rects[i]['x'], rects[i]['y'], 50, 50)
  214.             cr.set_source_rgba(rects[i]['r'], rects[i]['g'], rects[i]['b'], 0.5)
  215.             cr.fill()
  216.         
  217.         return False
  218.  
  219.  
  220.  
  221. def main():
  222.     TooltipDemo()
  223.     gtk.main()
  224.  
  225. if __name__ == '__main__':
  226.     main()
  227.  
  228.