Structure of widgets

The following modules provide classes to wrap the raw Gtk+ function calls. Here are the widget classes contained in each module:

  • GPango: Pango font handling
  • Gdk: pixmaps, etc…
  • GObj: gtkobj, widget, style
  • GData: data, adjustment, tooltips
  • GContainer: container, item_container
  • GWindow: window, dialog, color_selection_dialog, file_selection, plug
  • GPack: box, button_box, table, fixed, layout, packer, paned, notebook
  • GBin: scrolled_window, event_box, handle_box, frame, aspect_frame, viewport, socket
  • GButton: button, toggle_button, check_button, radio_button, toolbar
  • GMenu: menu_item, tearoff_item, check_menu_item, radio_menu_item, menu_shell, menu, option_menu, menu_bar, factory
  • GMisc: separator, statusbar, calendar, drawing_area, misc, arrow, image, pixmap, label, tips_query, color_selection, font_selection
  • GTree: tree_item, tree, view (also tree/list_store, model)
  • GList: list_item, liste, clist
  • GEdit: editable, entry, spin_button, combo
  • GRange: progress, progress_bar, range, scale, scrollbar
  • GText: view (also buffer, iter, mark, tag, tagtable)

Practically, each widget class is composed of:

  • coerce method, returning the object coerced to the type widget.
  • as_widget method, returning the raw Gtk widget used for packing, etc…
  • destroy method, sending the destroy signal to the object.
  • get_oid method, the equivalent of Oo.id for Gtk objects.
  • connect sub-object, allowing one to widget specific signals (this is what prevents width subtyping in subclasses.)
  • misc sub-object, giving access to miscellanous functionality of the basic gtkwidget class, and a misc#connect sub-object.
  • event sub-object, for Xevent related functions (only if the widget has an Xwindow), and an event#connect sub-object.
  • drag sub-object, containing drag and drop functions, and a drag#connect sub-object.
  • widget specific methods.

Here is a diagram of the structure (- for methods, + for sub-objects)

        - coerce : widget
        - as_widget : Gtk.widget obj
        - destroy : unit -> unit
        - get_oid : int
        - ...
        + connect : mywidget_signals
        |   - after
        |   - signal_name : callback:(... -> ...) -> GtkSignal.id
        + misc : misc_ops
        |   - show, hide, disconnect, ...
        |   + connect : misc_signals
        + drag : drag_ops
        |   - ...
        |   + connect : drag_signals
        + event : event_ops
        |   - add, ...
        |   + connect : event_signals
comments powered by Disqus