Menu

GTK+ progrmming, link error???help!!

2003-01-07
2012-09-26
  • Nobody/Anonymous

    I installed the gtk package and gtk-runtime
    and I have set the path of gtk include.

    and I complied it.

    lots of link error like
    [Linker error] undefined reference to `g_print'

    my sourcecode is from tuitors as follow:

    /* GTK - The GIMP Toolkit
    * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    * License as published by the Free Software Foundation; either
    * version 2 of the License, or (at your option) any later version.
    *
    * This library is distributed in the hope that it will be useful,
    * but WITHOUT ANY WARRANTY; without even the implied warranty of
    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.     See the GNU
    * Lesser General Public License for more details.
    *
    * You should have received a copy of the GNU Lesser General Public
    * License along with this library; if not, write to the
    * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    * Boston, MA 02111-1307, USA.
    */

    /*
    * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
    * file for a list of people on the GTK+ Team.  See the ChangeLog
    * files for a list of changes.  These files are distributed with
    * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
    */

    #ifndef __GTK_WIDGET_H__
    #define __GTK_WIDGET_H__

    #include <gdk/gdk.h>
    #include <gtk/gtkaccelgroup.h>
    #include <gtk/gtkobject.h>
    #include <gtk/gtkadjustment.h>
    #include <gtk/gtkstyle.h>
    #include <gtk/gtksettings.h>
    #include <atk/atkobject.h>

    #ifdef __cplusplus
    extern "C" {
    #endif /* __cplusplus */

    /* The flags that are used by GtkWidget on top of the
    * flags field of GtkObject.
    */
    typedef enum
    {
      GTK_TOPLEVEL         = 1 << 4,
      GTK_NO_WINDOW        = 1 << 5,
      GTK_REALIZED         = 1 << 6,
      GTK_MAPPED           = 1 << 7,
      GTK_VISIBLE          = 1 << 8,
      GTK_SENSITIVE        = 1 << 9,
      GTK_PARENT_SENSITIVE = 1 << 10,
      GTK_CAN_FOCUS        = 1 << 11,
      GTK_HAS_FOCUS        = 1 << 12,

      /* widget is allowed to receive the default via gtk_widget_grab_default
       * and will reserve space to draw the default if possible
       */
      GTK_CAN_DEFAULT      = 1 << 13,

      /* the widget currently is receiving the default action and should be drawn
       * appropriately if possible
       */
      GTK_HAS_DEFAULT      = 1 << 14,

      GTK_HAS_GRAB           = 1 << 15,
      GTK_RC_STYLE           = 1 << 16,
      GTK_COMPOSITE_CHILD  = 1 << 17,
      GTK_NO_REPARENT      = 1 << 18,
      GTK_APP_PAINTABLE    = 1 << 19,

      /* the widget when focused will receive the default action and have
       * HAS_DEFAULT set even if there is a different widget set as default
       */
      GTK_RECEIVES_DEFAULT = 1 << 20,

      GTK_DOUBLE_BUFFERED  = 1 << 21
    } GtkWidgetFlags;

    /* Kinds of widget-specific help */
    typedef enum
    {
      GTK_WIDGET_HELP_TOOLTIP,
      GTK_WIDGET_HELP_WHATS_THIS
    } GtkWidgetHelpType;

    /* Macro for casting a pointer to a GtkWidget or GtkWidgetClass pointer.
    * Macros for testing whether `widget' or `klass' are of type GTK_TYPE_WIDGET.
    */
    #define GTK_TYPE_WIDGET              (gtk_widget_get_type ())
    #define GTK_WIDGET(widget)          (GTK_CHECK_CAST ((widget), GTK_TYPE_WIDGET, GtkWidget))
    #define GTK_WIDGET_CLASS(klass)          (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_WIDGET, GtkWidgetClass))
    #define GTK_IS_WIDGET(widget)          (GTK_CHECK_TYPE ((widget), GTK_TYPE_WIDGET))
    #define GTK_IS_WIDGET_CLASS(klass)      (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_WIDGET))
    #define GTK_WIDGET_GET_CLASS(obj)         (GTK_CHECK_GET_CLASS ((obj), GTK_TYPE_WIDGET, GtkWidgetClass))

    /* Macros for extracting various fields from GtkWidget and GtkWidgetClass.
    */
    #define GTK_WIDGET_TYPE(wid)          (GTK_OBJECT_TYPE (wid))
    #define GTK_WIDGET_STATE(wid)          (GTK_WIDGET (wid)->state)
    #define GTK_WIDGET_SAVED_STATE(wid)      (GTK_WIDGET (wid)->saved_state)

    /* Macros for extracting the widget flags from GtkWidget.
    */
    #define GTK_WIDGET_FLAGS(wid)          (GTK_OBJECT_FLAGS (wid))
    #define GTK_WIDGET_TOPLEVEL(wid)      ((GTK_WIDGET_FLAGS (wid) & GTK_TOPLEVEL) != 0)
    #define GTK_WIDGET_NO_WINDOW(wid)      ((GTK_WIDGET_FLAGS (wid) & GTK_NO_WINDOW) != 0)
    #define GTK_WIDGET_REALIZED(wid)      ((GTK_WIDGET_FLAGS (wid) & GTK_REALIZED) != 0)
    #define GTK_WIDGET_MAPPED(wid)          ((GTK_WIDGET_FLAGS (wid) & GTK_MAPPED) != 0)
    #define GTK_WIDGET_VISIBLE(wid)          ((GTK_WIDGET_FLAGS (wid) & GTK_VISIBLE) != 0)
    #define GTK_WIDGET_DRAWABLE(wid)      (GTK_WIDGET_VISIBLE (wid) && GTK_WIDGET_MAPPED (wid))
    #define GTK_WIDGET_SENSITIVE(wid)      ((GTK_WIDGET_FLAGS (wid) & GTK_SENSITIVE) != 0)
    #define GTK_WIDGET_PARENT_SENSITIVE(wid)  ((GTK_WIDGET_FLAGS (wid) & GTK_PARENT_SENSITIVE) != 0)
    #define GTK_WIDGET_IS_SENSITIVE(wid)      (GTK_WIDGET_SENSITIVE (wid) && \                        GTK_WIDGET_PARENT_SENSITIVE (wid))
    #define GTK_WIDGET_CAN_FOCUS(wid)      ((GTK_WIDGET_FLAGS (wid) & GTK_CAN_FOCUS) != 0)
    #define GTK_WIDGET_HAS_FOCUS(wid)      ((GTK_WIDGET_FLAGS (wid) & GTK_HAS_FOCUS) != 0)
    #define GTK_WIDGET_CAN_DEFAULT(wid)      ((GTK_WIDGET_FLAGS (wid) & GTK_CAN_DEFAULT) != 0)
    #define GTK_WIDGET_HAS_DEFAULT(wid)      ((GTK_WIDGET_FLAGS (wid) & GTK_HAS_DEFAULT) != 0)
    #define GTK_WIDGET_HAS_GRAB(wid)      ((GTK_WIDGET_FLAGS (wid) & GTK_HAS_GRAB) != 0)
    #define GTK_WIDGET_RC_STYLE(wid)      ((GTK_WIDGET_FLAGS (wid) & GTK_RC_STYLE) != 0)
    #define GTK_WIDGET_COMPOSITE_CHILD(wid)      ((GTK_WIDGET_FLAGS (wid) & GTK_COMPOSITE_CHILD) != 0)
    #define GTK_WIDGET_APP_PAINTABLE(wid)      ((GTK_WIDGET_FLAGS (wid) & GTK_APP_PAINTABLE) != 0)
    #define GTK_WIDGET_RECEIVES_DEFAULT(wid)  ((GTK_WIDGET_FLAGS (wid) & GTK_RECEIVES_DEFAULT) != 0)
    #define GTK_WIDGET_DOUBLE_BUFFERED(wid)      ((GTK_WIDGET_FLAGS (wid) & GTK_DOUBLE_BUFFERED) != 0)
     
    /* Macros for setting and clearing widget flags.
    */
    #define GTK_WIDGET_SET_FLAGS(wid,flag)      G_STMT_START{ (GTK_WIDGET_FLAGS (wid) |= (flag)); }G_STMT_END
    #define GTK_WIDGET_UNSET_FLAGS(wid,flag)  G_STMT_START{ (GTK_WIDGET_FLAGS (wid) &= ~(flag)); }G_STMT_END

    #define GTK_TYPE_REQUISITION              (gtk_requisition_get_type ())

    /* forward declaration to avoid excessive includes (and concurrent includes)
    */
    typedef struct _GtkRequisition       GtkRequisition;
    typedef     GdkRectangle       GtkAllocation;
    typedef struct _GtkSelectionData   GtkSelectionData;
    typedef struct _GtkWidgetClass       GtkWidgetClass;
    typedef struct _GtkWidgetAuxInfo   GtkWidgetAuxInfo;
    typedef struct _GtkWidgetShapeInfo GtkWidgetShapeInfo;
    typedef void     (*GtkCallback)        (GtkWidget        *widget,
                        gpointer      data);

    /* A requisition is a desired amount of space which a
    *  widget may request.
    */
    struct _GtkRequisition
    {
      gint width;
      gint height;
    };

    /* The widget is the base of the tree for displayable objects.
    *  (A displayable object is one which takes up some amount
    *  of screen real estate). It provides a common base and interface
    *  which actual widgets must adhere to.
    */
    struct _GtkWidget
    {
      /* The object structure needs to be the first
       *  element in the widget structure in order for
       *  the object mechanism to work correctly. This
       *  allows a GtkWidget pointer to be cast to a
       *  GtkObject pointer.
       */
      GtkObject object;
     
      /* 16 bits of internally used private flags.
       * this will be packed into the same 4 byte alignment frame that
       * state and saved_state go. we therefore don't waste any new
       * space on this.
       */
      guint16 private_flags;
     
      /* The state of the widget. There are actually only
       *  5 widget states (defined in "gtkenums.h").
       */
      guint8 state;
     
      /* The saved state of the widget. When a widgets state
       *  is changed to GTK_STATE_INSENSITIVE via
       *  "gtk_widget_set_state" or "gtk_widget_set_sensitive"
       *  the old state is kept around in this field. The state
       *  will be restored once the widget gets sensitive again.
       */
      guint8 saved_state;
     
      /* The widgets name. If the widget does not have a name
       *  (the name is NULL), then its name (as returned by
       *  "gtk_widget_get_name") is its classes name.
       * Among other things, the widget name is used to determine
       *  the style to use for a widget.
       */
      gchar *name;
     
      /* The style for the widget. The style contains the
       *  colors the widget should be drawn in for each state
       *  along with graphics contexts used to draw with and
       *  the font to use for text.
       */
      GtkStyle *style;
     
      /* The widgets desired size.
       */
      GtkRequisition requisition;
     
      /* The widgets allocated size.
       */
      GtkAllocation allocation;
     
      /* The widgets window or its parent window if it does
       *  not have a window. (Which will be indicated by the
       *  GTK_NO_WINDOW flag being set).
       */
      GdkWindow *window;
     
      /* The widgets parent.
       */
      GtkWidget *parent;
    };

    struct _GtkWidgetClass
    {
      /* The object class structure needs to be the first
       *  element in the widget class structure in order for
       *  the class mechanism to work correctly. This allows a
       *  GtkWidgetClass pointer to be cast to a GtkObjectClass
       *  pointer.
       */
      GtkObjectClass parent_class;
     
      /* The signal to emit when a widget of this class is activated,
       * gtk_widget_activate() handles the emission.
       * Implementation of this signal is optional.
       */
      guint activate_signal;

      /* This signal is emitted  when a widget of this class is added
       * to a scrolling aware parent, gtk_widget_set_scroll_adjustments()
       * handles the emission.
       * Implementation of this signal is optional.
       */
      guint set_scroll_adjustments_signal;

      /* seldomly overidden */
      void (*dispatch_child_properties_changed) (GtkWidget   *widget,
                             guint        n_pspecs,
                             GParamSpec **pspecs);

      /* basics */
      void (* show)               (GtkWidget        *widget);
      void (* show_all)            (GtkWidget        *widget);
      void (* hide)               (GtkWidget        *widget);
      void (* hide_all)            (GtkWidget        *widget);
      void (* map)               (GtkWidget        *widget);
      void (* unmap)           (GtkWidget        *widget);
      void (* realize)           (GtkWidget        *widget);
      void (* unrealize)           (GtkWidget        *widget);
      void (* size_request)           (GtkWidget        *widget,
                    GtkRequisition   *requisition);
      void (* size_allocate)       (GtkWidget        *widget,
                    GtkAllocation    *allocation);
      void (* state_changed)       (GtkWidget        *widget,
                    GtkStateType         previous_state);
      void (* parent_set)           (GtkWidget        *widget,
                    GtkWidget        *previous_parent);
      void (* hierarchy_changed)   (GtkWidget        *widget,
                    GtkWidget        *previous_toplevel);
      void (* style_set)           (GtkWidget        *widget,
                    GtkStyle         *previous_style);
      void (* direction_changed)   (GtkWidget        *widget,
                    GtkTextDirection  previous_direction);
      void (* grab_notify)         (GtkWidget        *widget,
                    gboolean          was_grabbed);
      void (* child_notify)        (GtkWidget     *widget,
                    GParamSpec       *pspec);
     
      /* Mnemonics */
      gboolean (* mnemonic_activate) (GtkWidget    *widget,
                      gboolean      group_cycling);
     
      /* explicit focus */
      void     (* grab_focus)      (GtkWidget        *widget);
      gboolean (* focus)           (GtkWidget        *widget,
                                    GtkDirectionType  direction);
     
      /* events */
      gboolean (* event)            (GtkWidget         *widget,
                         GdkEvent         *event);
      gboolean (* button_press_event)    (GtkWidget         *widget,
                         GdkEventButton      *event);
      gboolean (* button_release_event)    (GtkWidget         *widget,
                         GdkEventButton      *event);
      gboolean (* scroll_event)        (GtkWidget           *widget,
                         GdkEventScroll      *event);
      gboolean (* motion_notify_event)    (GtkWidget         *widget,
                         GdkEventMotion      *event);
      gboolean (* delete_event)        (GtkWidget         *widget,
                         GdkEventAny         *event);
      gboolean (* destroy_event)        (GtkWidget         *widget,
                         GdkEventAny         *event);
      gboolean (* expose_event)        (GtkWidget         *widget,
                         GdkEventExpose      *event);
      gboolean (* key_press_event)        (GtkWidget         *widget,
                         GdkEventKey         *event);
      gboolean (* key_release_event)    (GtkWidget         *widget,
                         GdkEventKey         *event);
      gboolean (* enter_notify_event)    (GtkWidget         *widget,
                         GdkEventCrossing    *event);
      gboolean (* leave_notify_event)    (GtkWidget         *widget,
                         GdkEventCrossing    *event);
      gboolean (* configure_event)        (GtkWidget         *widget,
                         GdkEventConfigure   *event);
      gboolean (* focus_in_event)        (GtkWidget         *widget,
                         GdkEventFocus       *event);
      gboolean (* focus_out_event)        (GtkWidget         *widget,
                         GdkEventFocus       *event);
      gboolean (* map_event)        (GtkWidget         *widget,
                         GdkEventAny         *event);
      gboolean (* unmap_event)        (GtkWidget         *widget,
                         GdkEventAny         *event);
      gboolean (* property_notify_event)    (GtkWidget         *widget,
                         GdkEventProperty    *event);
      gboolean (* selection_clear_event)    (GtkWidget         *widget,
                         GdkEventSelection   *event);
      gboolean (* selection_request_event)    (GtkWidget         *widget,
                         GdkEventSelection   *event);
      gboolean (* selection_notify_event)    (GtkWidget         *widget,
                         GdkEventSelection   *event);
      gboolean (* proximity_in_event)    (GtkWidget         *widget,
                         GdkEventProximity   *event);
      gboolean (* proximity_out_event)    (GtkWidget         *widget,
                         GdkEventProximity   *event);
      gboolean (* visibility_notify_event)    (GtkWidget         *widget,
                         GdkEventVisibility  *event);
      gboolean (* client_event)        (GtkWidget         *widget,
                         GdkEventClient         *event);
      gboolean (* no_expose_event)        (GtkWidget         *widget,
                         GdkEventAny         *event);
      gboolean (* window_state_event)    (GtkWidget         *widget,
                         GdkEventWindowState *event);
     
      /* selection */
      void (* selection_get)           (GtkWidget          *widget,
                        GtkSelectionData   *selection_data,
                        guint               info,
                        guint               time);
      void (* selection_received)      (GtkWidget          *widget,
                        GtkSelectionData   *selection_data,
                        guint               time);

      /* Source side drag signals */
      void (* drag_begin)               (GtkWidget           *widget,
                        GdkDragContext     *context);
      void (* drag_end)               (GtkWidget           *widget,
                        GdkDragContext     *context);
      void (* drag_data_get)           (GtkWidget          *widget,
                        GdkDragContext     *context,
                        GtkSelectionData   *selection_data,
                        guint               info,
                        guint               time);
      void (* drag_data_delete)        (GtkWidget           *widget,
                        GdkDragContext     *context);

      /* Target side drag signals */
      void (* drag_leave)               (GtkWidget           *widget,
                        GdkDragContext     *context,
                        guint               time);
      gboolean (* drag_motion)         (GtkWidget           *widget,
                        GdkDragContext     *context,
                        gint                x,
                        gint                y,
                        guint               time);
      gboolean (* drag_drop)           (GtkWidget           *widget,
                        GdkDragContext     *context,
                        gint                x,
                        gint                y,
                        guint               time);
      void (* drag_data_received)      (GtkWidget          *widget,
                        GdkDragContext     *context,
                        gint                x,
                        gint                y,
                        GtkSelectionData   *selection_data,
                        guint               info,
                        guint               time);

      /* Signals used only for keybindings */
      gboolean (* popup_menu)          (GtkWidget          *widget);

      /* If a widget has multiple tooltips/whatsthis, it should show the
       * one for the current focus location, or if that doesn't make
       * sense, should cycle through them showing each tip alongside
       * whatever piece of the widget it applies to.
       */
      gboolean (* show_help)           (GtkWidget          *widget,
                                        GtkWidgetHelpType   help_type);
     
      /* accessibility support
       */
      AtkObject*   (* get_accessible)  (GtkWidget          *widget);

      /* Padding for future expansion */
      void (*_gtk_reserved1) (void);
      void (*_gtk_reserved2) (void);
      void (*_gtk_reserved3) (void);
      void (*_gtk_reserved4) (void);
      void (*_gtk_reserved5) (void);
      void (*_gtk_reserved6) (void);
      void (*_gtk_reserved7) (void);
      void (*_gtk_reserved8) (void);
    };

    struct _GtkWidgetAuxInfo
    {
      gint x;
      gint y;
      gint width;
      gint height;
      guint x_set : 1;
      guint y_set : 1;
    };

    struct _GtkWidgetShapeInfo
    {
      gint16     offset_x;
      gint16     offset_y;
      GdkBitmap *shape_mask;
    };

    GtkType       gtk_widget_get_type          (void) G_GNUC_CONST;
    GtkWidget* gtk_widget_new          (GtkType        type,
                           const gchar           *first_property_name,
                           ...);
    GtkWidget* gtk_widget_ref          (GtkWidget           *widget);
    void       gtk_widget_unref          (GtkWidget           *widget);
    void       gtk_widget_destroy          (GtkWidget           *widget);
    void       gtk_widget_destroyed          (GtkWidget           *widget,
                           GtkWidget          **widget_pointer);
    #ifndef GTK_DISABLE_DEPRECATED
    void       gtk_widget_set          (GtkWidget           *widget,
                           const gchar         *first_property_name,
                           ...);
    #endif /* GTK_DISABLE_DEPRECATED */
    void       gtk_widget_unparent          (GtkWidget           *widget);
    void       gtk_widget_show          (GtkWidget           *widget);
    void       gtk_widget_show_now            (GtkWidget           *widget);
    void       gtk_widget_hide          (GtkWidget           *widget);
    void       gtk_widget_show_all          (GtkWidget           *widget);
    void       gtk_widget_hide_all          (GtkWidget           *widget);
    void       gtk_widget_map          (GtkWidget           *widget);
    void       gtk_widget_unmap          (GtkWidget           *widget);
    void       gtk_widget_realize          (GtkWidget           *widget);
    void       gtk_widget_unrealize          (GtkWidget           *widget);

    /* Queuing draws */
    void       gtk_widget_queue_draw      (GtkWidget           *widget);
    void       gtk_widget_queue_draw_area      (GtkWidget           *widget,
                           gint                 x,
                           gint                 y,
                           gint                 width,
                           gint                 height);
    #ifndef GTK_DISABLE_DEPRECATED
    void       gtk_widget_queue_clear      (GtkWidget           *widget);
    void       gtk_widget_queue_clear_area      (GtkWidget           *widget,
                           gint                 x,
                           gint                 y,
                           gint                 width,
                           gint                 height);
    #endif /* GTK_DISABLE_DEPRECATED */

    void       gtk_widget_queue_resize      (GtkWidget           *widget);
    #ifndef GTK_DISABLE_DEPRECATED
    void       gtk_widget_draw          (GtkWidget           *widget,
                           GdkRectangle           *area);
    #endif /* GTK_DISABLE_DEPRECATED */
    void       gtk_widget_size_request      (GtkWidget           *widget,
                           GtkRequisition      *requisition);
    void       gtk_widget_size_allocate      (GtkWidget           *widget,
                           GtkAllocation       *allocation);
    void       gtk_widget_get_child_requisition (GtkWidget           *widget,
                             GtkRequisition    *requisition);
    void       gtk_widget_add_accelerator      (GtkWidget           *widget,
                           const gchar         *accel_signal,
                           GtkAccelGroup       *accel_group,
                           guint                accel_key,
                           GdkModifierType      accel_mods,
                           GtkAccelFlags        accel_flags);
    gboolean   gtk_widget_remove_accelerator  (GtkWidget           *widget,
                           GtkAccelGroup       *accel_group,
                           guint                accel_key,
                           GdkModifierType      accel_mods);
    void       gtk_widget_set_accel_path      (GtkWidget           *widget,
                           const gchar         *accel_path,
                           GtkAccelGroup       *accel_group);
    const gchar* _gtk_widget_get_accel_path   (GtkWidget           *widget);
    GList*     gtk_widget_list_accel_closures (GtkWidget           *widget);
    gboolean   gtk_widget_mnemonic_activate   (GtkWidget           *widget,
                           gboolean             group_cycling);
    gboolean   gtk_widget_event          (GtkWidget           *widget,
                           GdkEvent           *event);
    gint       gtk_widget_send_expose         (GtkWidget           *widget,
                           GdkEvent            *event);

    gboolean   gtk_widget_activate             (GtkWidget           *widget);
    gboolean   gtk_widget_set_scroll_adjustments (GtkWidget        *widget,
                              GtkAdjustment    *hadjustment,
                              GtkAdjustment    *vadjustment);
        
    void       gtk_widget_reparent          (GtkWidget           *widget,
                           GtkWidget           *new_parent);
    gboolean   gtk_widget_intersect          (GtkWidget           *widget,
                           GdkRectangle           *area,
                           GdkRectangle           *intersection);
    GdkRegion *gtk_widget_region_intersect      (GtkWidget           *widget,
                           GdkRegion           *region);

    void    gtk_widget_freeze_child_notify      (GtkWidget           *widget);
    void    gtk_widget_child_notify          (GtkWidget           *widget,
                           const gchar           *child_property);
    void    gtk_widget_thaw_child_notify      (GtkWidget           *widget);

    gboolean   gtk_widget_is_focus            (GtkWidget           *widget);
    void       gtk_widget_grab_focus      (GtkWidget           *widget);
    void       gtk_widget_grab_default      (GtkWidget           *widget);

    void                  gtk_widget_set_name               (GtkWidget    *widget,
                                 const gchar  *name);
    G_CONST_RETURN gchar* gtk_widget_get_name               (GtkWidget    *widget);
    void                  gtk_widget_set_state              (GtkWidget    *widget,
                                 GtkStateType  state);
    void                  gtk_widget_set_sensitive          (GtkWidget    *widget,
                                 gboolean      sensitive);
    void                  gtk_widget_set_app_paintable      (GtkWidget    *widget,
                                 gboolean      app_paintable);
    void                  gtk_widget_set_double_buffered    (GtkWidget    *widget,
                                 gboolean      double_buffered);
    void                  gtk_widget_set_redraw_on_allocate (GtkWidget    *widget,
                                 gboolean      redraw_on_allocate);
    void                  gtk_widget_set_parent             (GtkWidget    *widget,
                                 GtkWidget    *parent);
    void                  gtk_widget_set_parent_window      (GtkWidget    *widget,
                                 GdkWindow    *parent_window);
    void                  gtk_widget_set_child_visible      (GtkWidget    *widget,
                                 gboolean      is_visible);
    gboolean              gtk_widget_get_child_visible      (GtkWidget    *widget);

    GtkWidget *gtk_widget_get_parent          (GtkWidget           *widget);
    GdkWindow *gtk_widget_get_parent_window      (GtkWidget           *widget);
    gboolean   gtk_widget_child_focus         (GtkWidget           *widget,
                                               GtkDirectionType     direction);

    void       gtk_widget_set_size_request    (GtkWidget           *widget,
                                               gint                 width,
                                               gint                 height);
    void       gtk_widget_get_size_request    (GtkWidget           *widget,
                                               gint                *width,
                                               gint                *height);
    #ifndef GTK_DISABLE_DEPRECATED
    void       gtk_widget_set_uposition      (GtkWidget           *widget,
                           gint            x,
                           gint            y);
    void       gtk_widget_set_usize          (GtkWidget           *widget,
                           gint            width,
                           gint            height);
    #endif

    void       gtk_widget_set_events      (GtkWidget           *widget,
                           gint            events);
    void       gtk_widget_add_events          (GtkWidget           *widget,
                           gint                    events);
    void       gtk_widget_set_extension_events (GtkWidget        *widget,
                            GdkExtensionMode    mode);

    GdkExtensionMode gtk_widget_get_extension_events (GtkWidget    *widget);
    GtkWidget*   gtk_widget_get_toplevel    (GtkWidget    *widget);
    GtkWidget*   gtk_widget_get_ancestor    (GtkWidget    *widget,
                         GtkType    widget_type);
    GdkColormap* gtk_widget_get_colormap    (GtkWidget    *widget);
    GdkVisual*   gtk_widget_get_visual    (GtkWidget    *widget);

    GtkSettings* gtk_widget_get_settings    (GtkWidget      *widget);

    #ifndef GTK_DISABLE_DEPRECATED
    #define gtk_widget_set_visual(widget,visual)  ((void) 0)
    #define gtk_widget_push_visual(visual)        ((void) 0)
    #define gtk_widget_pop_visual()               ((void) 0)
    #define gtk_widget_set_default_visual(visual) ((void) 0)
    #endif /* GTK_DISABLE_DEPRECATED */

    /* Accessibility support */
    AtkObject*       gtk_widget_get_accessible               (GtkWidget          *widget);

    /* The following functions must not be called on an already
    * realized widget. Because it is possible that somebody
    * can call get_colormap() or get_visual() and save the
    * result, these functions are probably only safe to
    * call in a widget's init() function.
    */
    void         gtk_widget_set_colormap    (GtkWidget      *widget,
                         GdkColormap    *colormap);

    gint         gtk_widget_get_events    (GtkWidget    *widget);
    void         gtk_widget_get_pointer    (GtkWidget    *widget,
                         gint        *x,
                         gint        *y);

    gboolean     gtk_widget_is_ancestor    (GtkWidget    *widget,
                         GtkWidget    *ancestor);

    gboolean     gtk_widget_translate_coordinates (GtkWidget  *src_widget,
                               GtkWidget  *dest_widget,
                               gint        src_x,
                               gint        src_y,
                               gint       *dest_x,
                               gint       *dest_y);

    /* Hide widget and return TRUE.
    */
    gboolean     gtk_widget_hide_on_delete    (GtkWidget    *widget);

    /* Widget styles.
    */
    void       gtk_widget_set_style        (GtkWidget    *widget,
                         GtkStyle    *style);
    void       gtk_widget_ensure_style    (GtkWidget    *widget);
    GtkStyle*  gtk_widget_get_style        (GtkWidget    *widget);

    void_widget_modify_style(GtkWidget*widget,*style);*gtk_widget_get_modifier_style (GtkWidget*widget);_widget_modify_fg(GtkWidget*widget,*color);_widget_modify_bg(GtkWidget*widget,*color);_widget_modify_text(GtkWidget*widget,*color);_widget_modifyklzzwxh:10000baseklzzwxh:10361klzzwxh:10362klzzwxh:10363klzzwxh:10364klzzwxh:10365klzzwxh:10366klzzwxh:10367 klzzwxh:10001GtkWidgetklzzwxh:10368klzzwxh:10369klzzwxh:10370klzzwxh:10371klzzwxh:10372klzzwxh:10373klzzwxh:10374klzzwxh:10375klzzwxh:10376klzzwxh:10377klzzwxh:10378 klzzwxh:10002widget,klzzwxh:10503klzzwxh:10379klzzwxh:10380klzzwxh:10381klzzwxh:10382klzzwxh:10383klzzwxh:10384klzzwxh:10385klzzwxh:10386klzzwxh:10387klzzwxh:10388klzzwxh:10389klzzwxh:10390klzzwxh:10391klzzwxh:10392klzzwxh:10393klzzwxh:10394klzzwxh:10395klzzwxh:10396klzzwxh:10397klzzwxh:10398klzzwxh:10399klzzwxh:10400 GtkStateTypeklzzwxh:10401klzzwxh:10402klzzwxh:10403klzzwxh:10404klzzwxh:10405klzzwxh:10406klzzwxh:10407klzzwxh:10408klzzwxh:10409 state,klzzwxh:10504klzzwxh:10410klzzwxh:10411klzzwxh:10412klzzwxh:10413klzzwxh:10414klzzwxh:10415klzzwxh:10416klzzwxh:10417klzzwxh:10418klzzwxh:10419klzzwxh:10420klzzwxh:10421klzzwxh:10422klzzwxh:10423klzzwxh:10424klzzwxh:10425klzzwxh:10426klzzwxh:10427klzzwxh:10428klzzwxh:10429klzzwxh:10430klzzwxh:10431 GdkColorklzzwxh:10432klzzwxh:10433klzzwxh:10434klzzwxh:10435klzzwxh:10436klzzwxh:10437klzzwxh:10438klzzwxh:10439klzzwxh:10440klzzwxh:10441klzzwxh:10442klzzwxh:10443 klzzwxh:10003colorklzzwxh:10004;klzzwxh:10505voidklzzwxh:10444klzzwxh:10445klzzwxh:10446klzzwxh:10447klzzwxh:10448klzzwxh:10449klzzwxh:10450 gtkklzzwxh:10005widgetklzzwxh:10006modifyklzzwxh:10007fontklzzwxh:10451klzzwxh:10452klzzwxh:10453klzzwxh:10454klzzwxh:10455klzzwxh:10456klzzwxh:10457 klzzwxh:10008GtkWidgetklzzwxh:10458klzzwxh:10459klzzwxh:10460klzzwxh:10461klzzwxh:10462klzzwxh:10463klzzwxh:10464klzzwxh:10465klzzwxh:10466klzzwxh:10467klzzwxh:10468 klzzwxh:10009widget,klzzwxh:10506klzzwxh:10469klzzwxh:10470klzzwxh:10471klzzwxh:10472klzzwxh:10473klzzwxh:10474klzzwxh:10475klzzwxh:10476klzzwxh:10477klzzwxh:10478klzzwxh:10479klzzwxh:10480klzzwxh:10481klzzwxh:10482klzzwxh:10483klzzwxh:10484klzzwxh:10485klzzwxh:10486klzzwxh:10487klzzwxh:10488klzzwxh:10489klzzwxh:10490 PangoFontDescription klzzwxh:10010fontklzzwxh:10011descklzzwxh:10012;

    klzzwxh:10507ifndef GTKklzzwxh:10508DISABLEklzzwxh:10509DEPRECATEDklzzwxh:10548klzzwxh:10510define gtkklzzwxh:10511widgetklzzwxh:10512setklzzwxh:10513rcklzzwxh:10514styleklzzwxh:10515widgetklzzwxh:10516klzzwxh:10539klzzwxh:10540klzzwxh:10541klzzwxh:10542klzzwxh:10543klzzwxh:10544klzzwxh:10545klzzwxh:10546klzzwxh:10547 klzzwxh:10517gtkklzzwxh:10518widgetklzzwxh:10519setklzzwxh:10520style klzzwxh:10521widget, NULLklzzwxh:10522klzzwxh:10523klzzwxh:10549klzzwxh:10524define gtkklzzwxh:10525widgetklzzwxh:10526restoreklzzwxh:10527defaultklzzwxh:10528styleklzzwxh:10529widgetklzzwxh:10530 klzzwxh:10531gtkklzzwxh:10532widgetklzzwxh:10533setklzzwxh:10534style klzzwxh:10535widget, NULLklzzwxh:10536klzzwxh:10537klzzwxh:10550klzzwxh:10538endif

    PangoContext klzzwxh:10551gtkklzzwxh:10552widgetklzzwxh:10553createklzzwxh:10554pangoklzzwxh:10555context klzzwxh:10556GtkWidgetklzzwxh:10576klzzwxh:10577 klzzwxh:10557widgetklzzwxh:10558;klzzwxh:10613PangoContext klzzwxh:10559gtkklzzwxh:10560widgetklzzwxh:10561getklzzwxh:10562pangoklzzwxh:10563contextklzzwxh:10578klzzwxh:10579klzzwxh:10580 klzzwxh:10564GtkWidgetklzzwxh:10581klzzwxh:10582 klzzwxh:10565widgetklzzwxh:10566;klzzwxh:10614PangoLayoutklzzwxh:10583 klzzwxh:10567gtkklzzwxh:10568widgetklzzwxh:10569createklzzwxh:10570pangoklzzwxh:10571layoutklzzwxh:10584 klzzwxh:10572GtkWidgetklzzwxh:10585klzzwxh:10586 klzzwxh:10573widget,klzzwxh:10615klzzwxh:10587klzzwxh:10588klzzwxh:10589klzzwxh:10590klzzwxh:10591klzzwxh:10592klzzwxh:10593klzzwxh:10594klzzwxh:10595klzzwxh:10596klzzwxh:10597klzzwxh:10598klzzwxh:10599klzzwxh:10600klzzwxh:10601klzzwxh:10602klzzwxh:10603klzzwxh:10604klzzwxh:10605klzzwxh:10606klzzwxh:10607klzzwxh:10608klzzwxh:10609klzzwxh:10610klzzwxh:10611klzzwxh:10612 const gchar klzzwxh:10574textklzzwxh:10575;

    GdkPixbufklzzwxh:10626klzzwxh:10627klzzwxh:10628 klzzwxh:10616gtkklzzwxh:10617widgetklzzwxh:10618renderklzzwxh:10619iconklzzwxh:10629klzzwxh:10630klzzwxh:10631klzzwxh:10632klzzwxh:10633klzzwxh:10634klzzwxh:10635klzzwxh:10636klzzwxh:10637 klzzwxh:10620GtkWidgetklzzwxh:10638klzzwxh:10639 klzzwxh:10621widget,klzzwxh:10779klzzwxh:10640klzzwxh:10641klzzwxh:10642klzzwxh:10643klzzwxh:10644klzzwxh:10645klzzwxh:10646klzzwxh:10647klzzwxh:10648klzzwxh:10649klzzwxh:10650klzzwxh:10651klzzwxh:10652klzzwxh:10653klzzwxh:10654klzzwxh:10655klzzwxh:10656klzzwxh:10657klzzwxh:10658klzzwxh:10659klzzwxh:10660klzzwxh:10661klzzwxh:10662klzzwxh:10663klzzwxh:10664klzzwxh:10665klzzwxh:10666klzzwxh:10667klzzwxh:10668klzzwxh:10669klzzwxh:10670klzzwxh:10671klzzwxh:10672klzzwxh:10673klzzwxh:10674klzzwxh:10675klzzwxh:10676klzzwxh:10677klzzwxh:10678klzzwxh:10679klzzwxh:10680klzzwxh:10681klzzwxh:10682klzzwxh:10683klzzwxh:10684klzzwxh:10685 const gchar klzzwxh:10622stockklzzwxh:10623id,klzzwxh:10780klzzwxh:10686klzzwxh:10687klzzwxh:10688klzzwxh:10689klzzwxh:10690klzzwxh:10691klzzwxh:10692klzzwxh:10693klzzwxh:10694klzzwxh:10695klzzwxh:10696klzzwxh:10697klzzwxh:10698klzzwxh:10699klzzwxh:10700klzzwxh:10701klzzwxh:10702klzzwxh:10703klzzwxh:10704klzzwxh:10705klzzwxh:10706klzzwxh:10707klzzwxh:10708klzzwxh:10709klzzwxh:10710klzzwxh:10711klzzwxh:10712klzzwxh:10713klzzwxh:10714klzzwxh:10715klzzwxh:10716klzzwxh:10717klzzwxh:10718klzzwxh:10719klzzwxh:10720klzzwxh:10721klzzwxh:10722klzzwxh:10723klzzwxh:10724klzzwxh:10725klzzwxh:10726klzzwxh:10727klzzwxh:10728klzzwxh:10729klzzwxh:10730klzzwxh:10731 GtkIconSizeklzzwxh:10732 size,klzzwxh:10781klzzwxh:10733klzzwxh:10734klzzwxh:10735klzzwxh:10736klzzwxh:10737klzzwxh:10738klzzwxh:10739klzzwxh:10740klzzwxh:10741klzzwxh:10742klzzwxh:10743klzzwxh:10744klzzwxh:10745klzzwxh:10746klzzwxh:10747klzzwxh:10748klzzwxh:10749klzzwxh:10750klzzwxh:10751klzzwxh:10752klzzwxh:10753klzzwxh:10754klzzwxh:10755klzzwxh:10756klzzwxh:10757klzzwxh:10758klzzwxh:10759klzzwxh:10760klzzwxh:10761klzzwxh:10762klzzwxh:10763klzzwxh:10764klzzwxh:10765klzzwxh:10766klzzwxh:10767klzzwxh:10768klzzwxh:10769klzzwxh:10770klzzwxh:10771klzzwxh:10772klzzwxh:10773klzzwxh:10774klzzwxh:10775klzzwxh:10776klzzwxh:10777klzzwxh:10778 const gchar klzzwxh:10624detailklzzwxh:10625;

    /klzzwxh:10782 handle composite names for GTKklzzwxh:10783COMPOSITEklzzwxh:10784CHILD widgets,klzzwxh:10869 klzzwxh:10785 the returned name is newly allocated.klzzwxh:10870 klzzwxh:10786/klzzwxh:10871voidklzzwxh:10812klzzwxh:10813 gtkklzzwxh:10787widgetklzzwxh:10788setklzzwxh:10789compositeklzzwxh:10790nameklzzwxh:10814klzzwxh:10815klzzwxh:10816 klzzwxh:10791GtkWidgetklzzwxh:10817klzzwxh:10818klzzwxh:10819 klzzwxh:10792widget,klzzwxh:10872klzzwxh:10820klzzwxh:10821klzzwxh:10822klzzwxh:10823klzzwxh:10824klzzwxh:10825klzzwxh:10826klzzwxh:10827klzzwxh:10828klzzwxh:10829klzzwxh:10830klzzwxh:10831klzzwxh:10832klzzwxh:10833klzzwxh:10834klzzwxh:10835klzzwxh:10836klzzwxh:10837klzzwxh:10838klzzwxh:10839 const gcharklzzwxh:10840klzzwxh:10841klzzwxh:10842klzzwxh:10843klzzwxh:10844klzzwxh:10845 klzzwxh:10793nameklzzwxh:10794;klzzwxh:10873gcharklzzwxh:10795 gtkklzzwxh:10796widgetklzzwxh:10797getklzzwxh:10798compositeklzzwxh:10799nameklzzwxh:10846klzzwxh:10847klzzwxh:10848 klzzwxh:10800GtkWidgetklzzwxh:10849klzzwxh:10850klzzwxh:10851 klzzwxh:10801widgetklzzwxh:10802;klzzwxh:10874klzzwxh:10852klzzwxh:10853klzzwxh:10854klzzwxh:10855 klzzwxh:10875/klzzwxh:10803 Descend recursively and set rc-style on all widgets without user styles klzzwxh:10804/klzzwxh:10876voidklzzwxh:10856klzzwxh:10857klzzwxh:10858klzzwxh:10859klzzwxh:10860klzzwxh:10861 gtkklzzwxh:10805widgetklzzwxh:10806resetklzzwxh:10807rcklzzwxh:10808stylesklzzwxh:10862klzzwxh:10863 klzzwxh:10809GtkWidgetklzzwxh:10864klzzwxh:10865klzzwxh:10866klzzwxh:10867klzzwxh:10868 klzzwxh:10810widgetklzzwxh:10811;

    /klzzwxh:10877 Push/pop pairs, to change default values upon a widget's creation.klzzwxh:10960 klzzwxh:10878 This will override the values that got set by theklzzwxh:10961 klzzwxh:10879 gtkklzzwxh:10880widgetklzzwxh:10881setklzzwxh:10882defaultklzzwxh:10883klzzwxh:10884 klzzwxh:10885klzzwxh:10886 functions.klzzwxh:10962 klzzwxh:10887/klzzwxh:10963voidklzzwxh:10911klzzwxh:10912klzzwxh:10913klzzwxh:10914klzzwxh:10915klzzwxh:10916klzzwxh:10917klzzwxh:10918 gtkklzzwxh:10888widgetklzzwxh:10889pushklzzwxh:10890colormapklzzwxh:10919klzzwxh:10920klzzwxh:10921klzzwxh:10922klzzwxh:10923klzzwxh:10924klzzwxh:10925klzzwxh:10926 klzzwxh:10891GdkColormap klzzwxh:10892cmapklzzwxh:10893;klzzwxh:10964voidklzzwxh:10927klzzwxh:10928klzzwxh:10929klzzwxh:10930klzzwxh:10931klzzwxh:10932klzzwxh:10933klzzwxh:10934 gtkklzzwxh:10894widgetklzzwxh:10895pushklzzwxh:10896compositeklzzwxh:10897child klzzwxh:10898voidklzzwxh:10899;klzzwxh:10965voidklzzwxh:10935klzzwxh:10936klzzwxh:10937klzzwxh:10938klzzwxh:10939klzzwxh:10940klzzwxh:10941klzzwxh:10942 gtkklzzwxh:10900widgetklzzwxh:10901popklzzwxh:10902compositeklzzwxh:10903childklzzwxh:10943 klzzwxh:10904voidklzzwxh:10905;klzzwxh:10966voidklzzwxh:10944klzzwxh:10945klzzwxh:10946klzzwxh:10947klzzwxh:10948klzzwxh:10949klzzwxh:10950klzzwxh:10951 gtkklzzwxh:10906widgetklzzwxh:10907popklzzwxh:10908colormapklzzwxh:10952klzzwxh:10953klzzwxh:10954klzzwxh:10955klzzwxh:10956klzzwxh:10957klzzwxh:10958klzzwxh:10959 klzzwxh:10909voidklzzwxh:10910;

    /klzzwxh:10967 widget style propertiesklzzwxh:11308 klzzwxh:10968/klzzwxh:11309void gtkklzzwxh:10969widgetklzzwxh:10970classklzzwxh:10971installklzzwxh:10972styleklzzwxh:10973propertyklzzwxh:11019klzzwxh:11020klzzwxh:11021klzzwxh:11022klzzwxh:11023klzzwxh:11024klzzwxh:11025 klzzwxh:10974GtkWidgetClassklzzwxh:11026klzzwxh:11027klzzwxh:11028klzzwxh:11029 klzzwxh:10975klass,klzzwxh:11310klzzwxh:11030klzzwxh:11031klzzwxh:11032klzzwxh:11033klzzwxh:11034klzzwxh:11035klzzwxh:11036klzzwxh:11037klzzwxh:11038klzzwxh:11039klzzwxh:11040klzzwxh:11041klzzwxh:11042klzzwxh:11043klzzwxh:11044klzzwxh:11045klzzwxh:11046klzzwxh:11047klzzwxh:11048klzzwxh:11049klzzwxh:11050klzzwxh:11051klzzwxh:11052klzzwxh:11053klzzwxh:11054klzzwxh:11055klzzwxh:11056klzzwxh:11057 GParamSpecklzzwxh:11058klzzwxh:11059klzzwxh:11060klzzwxh:11061klzzwxh:11062klzzwxh:11063klzzwxh:11064klzzwxh:11065 klzzwxh:10976pspecklzzwxh:10977;klzzwxh:11311void gtkklzzwxh:10978widgetklzzwxh:10979classklzzwxh:10980installklzzwxh:10981styleklzzwxh:10982propertyklzzwxh:10983parser klzzwxh:10984GtkWidgetClassklzzwxh:11066klzzwxh:11067klzzwxh:11068klzzwxh:11069 klzzwxh:10985klass,klzzwxh:11312klzzwxh:11070klzzwxh:11071klzzwxh:11072klzzwxh:11073klzzwxh:11074klzzwxh:11075klzzwxh:11076klzzwxh:11077klzzwxh:11078klzzwxh:11079klzzwxh:11080klzzwxh:11081klzzwxh:11082klzzwxh:11083klzzwxh:11084klzzwxh:11085klzzwxh:11086klzzwxh:11087klzzwxh:11088klzzwxh:11089klzzwxh:11090klzzwxh:11091klzzwxh:11092klzzwxh:11093klzzwxh:11094klzzwxh:11095klzzwxh:11096klzzwxh:11097 GParamSpecklzzwxh:11098klzzwxh:11099klzzwxh:11100klzzwxh:11101klzzwxh:11102klzzwxh:11103klzzwxh:11104klzzwxh:11105 klzzwxh:10986pspec,klzzwxh:11313klzzwxh:11106klzzwxh:11107klzzwxh:11108klzzwxh:11109klzzwxh:11110klzzwxh:11111klzzwxh:11112klzzwxh:11113klzzwxh:11114klzzwxh:11115klzzwxh:11116klzzwxh:11117klzzwxh:11118klzzwxh:11119klzzwxh:11120klzzwxh:11121klzzwxh:11122klzzwxh:11123klzzwxh:11124klzzwxh:11125klzzwxh:11126klzzwxh:11127klzzwxh:11128klzzwxh:11129klzzwxh:11130klzzwxh:11131klzzwxh:11132klzzwxh:11133 GtkRcPropertyParser parserklzzwxh:10987;klzzwxh:11314void gtkklzzwxh:10988widgetklzzwxh:10989styleklzzwxh:10990getklzzwxh:10991property klzzwxh:10992GtkWidgetklzzwxh:11134klzzwxh:11135klzzwxh:11136klzzwxh:11137klzzwxh:11138klzzwxh:11139klzzwxh:11140klzzwxh:11141 klzzwxh:10993widget,klzzwxh:11315klzzwxh:11142klzzwxh:11143klzzwxh:11144klzzwxh:11145klzzwxh:11146klzzwxh:11147klzzwxh:11148klzzwxh:11149klzzwxh:11150klzzwxh:11151klzzwxh:11152klzzwxh:11153klzzwxh:11154klzzwxh:11155klzzwxh:11156klzzwxh:11157klzzwxh:11158klzzwxh:11159klzzwxh:11160 const gcharklzzwxh:11161klzzwxh:11162klzzwxh:11163 klzzwxh:10994propertyklzzwxh:10995name,klzzwxh:11316klzzwxh:11164klzzwxh:11165klzzwxh:11166klzzwxh:11167klzzwxh:11168klzzwxh:11169klzzwxh:11170klzzwxh:11171klzzwxh:11172klzzwxh:11173klzzwxh:11174klzzwxh:11175klzzwxh:11176klzzwxh:11177klzzwxh:11178klzzwxh:11179klzzwxh:11180klzzwxh:11181klzzwxh:11182 GValueklzzwxh:11183klzzwxh:11184klzzwxh:11185klzzwxh:11186klzzwxh:11187klzzwxh:11188klzzwxh:11189klzzwxh:11190 klzzwxh:10996valueklzzwxh:10997;klzzwxh:11317void gtkklzzwxh:10998widgetklzzwxh:10999styleklzzwxh:11000getklzzwxh:11001valistklzzwxh:11191klzzwxh:11192 klzzwxh:11002GtkWidgetklzzwxh:11193klzzwxh:11194klzzwxh:11195klzzwxh:11196klzzwxh:11197klzzwxh:11198klzzwxh:11199klzzwxh:11200 klzzwxh:11003widget,klzzwxh:11318klzzwxh:11201klzzwxh:11202klzzwxh:11203klzzwxh:11204klzzwxh:11205klzzwxh:11206klzzwxh:11207klzzwxh:11208klzzwxh:11209klzzwxh:11210klzzwxh:11211klzzwxh:11212klzzwxh:11213klzzwxh:11214klzzwxh:11215klzzwxh:11216klzzwxh:11217klzzwxh:11218klzzwxh:11219 const gcharklzzwxh:11220klzzwxh:11221klzzwxh:11222 klzzwxh:11004firstklzzwxh:11005propertyklzzwxh:11006name,klzzwxh:11319klzzwxh:11223klzzwxh:11224klzzwxh:11225klzzwxh:11226klzzwxh:11227klzzwxh:11228klzzwxh:11229klzzwxh:11230klzzwxh:11231klzzwxh:11232klzzwxh:11233klzzwxh:11234klzzwxh:11235klzzwxh:11236klzzwxh:11237klzzwxh:11238klzzwxh:11239klzzwxh:11240klzzwxh:11241 vaklzzwxh:11007listklzzwxh:11242klzzwxh:11243klzzwxh:11244klzzwxh:11245klzzwxh:11246klzzwxh:11247klzzwxh:11248klzzwxh:11249 varklzzwxh:11008argsklzzwxh:11009;klzzwxh:11320void gtkklzzwxh:11010widgetklzzwxh:11011styleklzzwxh:11012getklzzwxh:11250klzzwxh:11251klzzwxh:11252klzzwxh:11253klzzwxh:11254klzzwxh:11255klzzwxh:11256klzzwxh:11257klzzwxh:11258 klzzwxh:11013GtkWidgetklzzwxh:11259klzzwxh:11260klzzwxh:11261klzzwxh:11262klzzwxh:11263klzzwxh:11264klzzwxh:11265klzzwxh:11266 klzzwxh:11014widget,klzzwxh:11321klzzwxh:11267klzzwxh:11268klzzwxh:11269klzzwxh:11270klzzwxh:11271klzzwxh:11272klzzwxh:11273klzzwxh:11274klzzwxh:11275klzzwxh:11276klzzwxh:11277klzzwxh:11278klzzwxh:11279klzzwxh:11280klzzwxh:11281klzzwxh:11282klzzwxh:11283klzzwxh:11284klzzwxh:11285 const gcharklzzwxh:11286klzzwxh:11287klzzwxh:11288 klzzwxh:11015firstklzzwxh:11016propertyklzzwxh:11017name,klzzwxh:11322klzzwxh:11289klzzwxh:11290klzzwxh:11291klzzwxh:11292klzzwxh:11293klzzwxh:11294klzzwxh:11295klzzwxh:11296klzzwxh:11297klzzwxh:11298klzzwxh:11299klzzwxh:11300klzzwxh:11301klzzwxh:11302klzzwxh:11303klzzwxh:11304klzzwxh:11305klzzwxh:11306klzzwxh:11307 ...klzzwxh:11018;

    /klzzwxh:11323 Set certain default values to be used at widget creation time.klzzwxh:11371 klzzwxh:11324/klzzwxh:11372voidklzzwxh:11353klzzwxh:11354klzzwxh:11355klzzwxh:11356klzzwxh:11357klzzwxh:11358klzzwxh:11359klzzwxh:11360 gtkklzzwxh:11325widgetklzzwxh:11326setklzzwxh:11327defaultklzzwxh:11328colormap klzzwxh:11329GdkColormap klzzwxh:11330colormapklzzwxh:11331;klzzwxh:11373GtkStyleklzzwxh:11332klzzwxh:11361klzzwxh:11362klzzwxh:11363 gtkklzzwxh:11333widgetklzzwxh:11334getklzzwxh:11335defaultklzzwxh:11336styleklzzwxh:11364klzzwxh:11365klzzwxh:11366 klzzwxh:11337voidklzzwxh:11338;klzzwxh:11374GdkColormapklzzwxh:11339 gtkklzzwxh:11340widgetklzzwxh:11341getklzzwxh:11342defaultklzzwxh:11343colormap klzzwxh:11344voidklzzwxh:11345;klzzwxh:11375GdkVisualklzzwxh:11346klzzwxh:11367klzzwxh:11368 gtkklzzwxh:11347widgetklzzwxh:11348getklzzwxh:11349defaultklzzwxh:11350visualklzzwxh:11369klzzwxh:11370 klzzwxh:11351voidklzzwxh:11352;

    /klzzwxh:11376 Functions for setting directionality for widgetsklzzwxh:11378 klzzwxh:11377/

    voidklzzwxh:11391klzzwxh:11392klzzwxh:11393klzzwxh:11394klzzwxh:11395klzzwxh:11396klzzwxh:11397klzzwxh:11398klzzwxh:11399klzzwxh:11400klzzwxh:11401klzzwxh:11402 gtkklzzwxh:11379widgetklzzwxh:11380setklzzwxh:11381directionklzzwxh:11403klzzwxh:11404klzzwxh:11405klzzwxh:11406klzzwxh:11407klzzwxh:11408klzzwxh:11409klzzwxh:11410 klzzwxh:11382GtkWidgetklzzwxh:11411klzzwxh:11412klzzwxh:11413klzzwxh:11414klzzwxh:11415klzzwxh:11416klzzwxh:11417 klzzwxh:11383widget,klzzwxh:11460klzzwxh:11418klzzwxh:11419klzzwxh:11420klzzwxh:11421klzzwxh:11422klzzwxh:11423klzzwxh:11424klzzwxh:11425klzzwxh:11426klzzwxh:11427klzzwxh:11428klzzwxh:11429klzzwxh:11430klzzwxh:11431klzzwxh:11432klzzwxh:11433klzzwxh:11434klzzwxh:11435klzzwxh:11436klzzwxh:11437klzzwxh:11438klzzwxh:11439klzzwxh:11440klzzwxh:11441klzzwxh:11442klzzwxh:11443 GtkTextDirectionklzzwxh:11444 dirklzzwxh:11384;klzzwxh:11461GtkTextDirection gtkklzzwxh:11385widgetklzzwxh:11386getklzzwxh:11387directionklzzwxh:11445klzzwxh:11446klzzwxh:11447klzzwxh:11448klzzwxh:11449klzzwxh:11450klzzwxh:11451klzzwxh:11452 klzzwxh:11388GtkWidgetklzzwxh:11453klzzwxh:11454klzzwxh:11455klzzwxh:11456klzzwxh:11457klzzwxh:11458klzzwxh:11459 klzzwxh:11389widgetklzzwxh:11390;

    voidklzzwxh:11474klzzwxh:11475klzzwxh:11476klzzwxh:11477klzzwxh:11478klzzwxh:11479klzzwxh:11480klzzwxh:11481klzzwxh:11482klzzwxh:11483klzzwxh:11484klzzwxh:11485 gtkklzzwxh:11462widgetklzzwxh:11463setklzzwxh:11464defaultklzzwxh:11465direction klzzwxh:11466GtkTextDirectionklzzwxh:11486 dirklzzwxh:11467;klzzwxh:11487GtkTextDirection gtkklzzwxh:11468widgetklzzwxh:11469getklzzwxh:11470defaultklzzwxh:11471direction klzzwxh:11472voidklzzwxh:11473;

    /klzzwxh:11488 Counterpart to gdkklzzwxh:11489windowklzzwxh:11490shapeklzzwxh:11491combineklzzwxh:11492mask.klzzwxh:11594 klzzwxh:11493/klzzwxh:11595voidklzzwxh:11505klzzwxh:11506klzzwxh:11507klzzwxh:11508klzzwxh:11509klzzwxh:11510klzzwxh:11511klzzwxh:11512 gtkklzzwxh:11494widgetklzzwxh:11495shapeklzzwxh:11496combineklzzwxh:11497mask klzzwxh:11498GtkWidget klzzwxh:11499widget,klzzwxh:11596klzzwxh:11513klzzwxh:11514klzzwxh:11515klzzwxh:11516klzzwxh:11517klzzwxh:11518klzzwxh:11519klzzwxh:11520klzzwxh:11521klzzwxh:11522klzzwxh:11523klzzwxh:11524klzzwxh:11525klzzwxh:11526klzzwxh:11527klzzwxh:11528klzzwxh:11529klzzwxh:11530klzzwxh:11531klzzwxh:11532klzzwxh:11533klzzwxh:11534klzzwxh:11535 GdkBitmap klzzwxh:11500shapeklzzwxh:11501mask,klzzwxh:11597klzzwxh:11536klzzwxh:11537klzzwxh:11538klzzwxh:11539klzzwxh:11540klzzwxh:11541klzzwxh:11542klzzwxh:11543klzzwxh:11544klzzwxh:11545klzzwxh:11546klzzwxh:11547klzzwxh:11548klzzwxh:11549klzzwxh:11550klzzwxh:11551klzzwxh:11552klzzwxh:11553klzzwxh:11554klzzwxh:11555klzzwxh:11556klzzwxh:11557klzzwxh:11558 gintklzzwxh:11559klzzwxh:11560klzzwxh:11561klzzwxh:11562klzzwxh:11563klzzwxh:11564 offsetklzzwxh:11502x,klzzwxh:11598klzzwxh:11565klzzwxh:11566klzzwxh:11567klzzwxh:11568klzzwxh:11569klzzwxh:11570klzzwxh:11571klzzwxh:11572klzzwxh:11573klzzwxh:11574klzzwxh:11575klzzwxh:11576klzzwxh:11577klzzwxh:11578klzzwxh:11579klzzwxh:11580klzzwxh:11581klzzwxh:11582klzzwxh:11583klzzwxh:11584klzzwxh:11585klzzwxh:11586klzzwxh:11587 gintklzzwxh:11588klzzwxh:11589klzzwxh:11590klzzwxh:11591klzzwxh:11592klzzwxh:11593 offsetklzzwxh:11503yklzzwxh:11504;

    /klzzwxh:11599 internal function klzzwxh:11600/klzzwxh:11621voidklzzwxh:11607klzzwxh:11608klzzwxh:11609klzzwxh:11610klzzwxh:11611klzzwxh:11612klzzwxh:11613klzzwxh:11614 gtkklzzwxh:11601widgetklzzwxh:11602resetklzzwxh:11603shapesklzzwxh:11615klzzwxh:11616klzzwxh:11617klzzwxh:11618klzzwxh:11619klzzwxh:11620 klzzwxh:11604GtkWidget klzzwxh:11605widgetklzzwxh:11606;

    /klzzwxh:11622 Compute a widget's path in the form klzzwxh:11650GtkWindow.MyLabelklzzwxh:11651, andklzzwxh:11842 klzzwxh:11623 return newly alocated strings.klzzwxh:11843 klzzwxh:11624/klzzwxh:11844voidklzzwxh:11652klzzwxh:11653klzzwxh:11654klzzwxh:11655klzzwxh:11656klzzwxh:11657klzzwxh:11658klzzwxh:11659 gtkklzzwxh:11625widgetklzzwxh:11626pathklzzwxh:11660klzzwxh:11661klzzwxh:11662klzzwxh:11663klzzwxh:11664klzzwxh:11665klzzwxh:11666klzzwxh:11667klzzwxh:11668klzzwxh:11669 klzzwxh:11627GtkWidget klzzwxh:11628widget,klzzwxh:11845klzzwxh:11670klzzwxh:11671klzzwxh:11672klzzwxh:11673klzzwxh:11674klzzwxh:11675klzzwxh:11676klzzwxh:11677klzzwxh:11678klzzwxh:11679klzzwxh:11680klzzwxh:11681klzzwxh:11682klzzwxh:11683klzzwxh:11684klzzwxh:11685klzzwxh:11686klzzwxh:11687klzzwxh:11688klzzwxh:11689klzzwxh:11690klzzwxh:11691klzzwxh:11692 guintklzzwxh:11693klzzwxh:11694klzzwxh:11695klzzwxh:11696 klzzwxh:11629pathklzzwxh:11630length,klzzwxh:11846klzzwxh:11697klzzwxh:11698klzzwxh:11699klzzwxh:11700klzzwxh:11701klzzwxh:11702klzzwxh:11703klzzwxh:11704klzzwxh:11705klzzwxh:11706klzzwxh:11707klzzwxh:11708klzzwxh:11709klzzwxh:11710klzzwxh:11711klzzwxh:11712klzzwxh:11713klzzwxh:11714klzzwxh:11715klzzwxh:11716klzzwxh:11717klzzwxh:11718klzzwxh:11719 gcharklzzwxh:11720klzzwxh:11721klzzwxh:11722 klzzwxh:11631klzzwxh:11632path,klzzwxh:11847klzzwxh:11723klzzwxh:11724klzzwxh:11725klzzwxh:11726klzzwxh:11727klzzwxh:11728klzzwxh:11729klzzwxh:11730klzzwxh:11731klzzwxh:11732klzzwxh:11733klzzwxh:11734klzzwxh:11735klzzwxh:11736klzzwxh:11737klzzwxh:11738klzzwxh:11739klzzwxh:11740klzzwxh:11741klzzwxh:11742klzzwxh:11743klzzwxh:11744klzzwxh:11745 gcharklzzwxh:11746klzzwxh:11747klzzwxh:11748 klzzwxh:11633klzzwxh:11634pathklzzwxh:11635reversedklzzwxh:11636;klzzwxh:11848voidklzzwxh:11749klzzwxh:11750klzzwxh:11751klzzwxh:11752klzzwxh:11753klzzwxh:11754klzzwxh:11755klzzwxh:11756 gtkklzzwxh:11637widgetklzzwxh:11638classklzzwxh:11639pathklzzwxh:11757klzzwxh:11758klzzwxh:11759klzzwxh:11760klzzwxh:11761klzzwxh:11762 klzzwxh:11640GtkWidget klzzwxh:11641widget,klzzwxh:11849klzzwxh:11763klzzwxh:11764klzzwxh:11765klzzwxh:11766klzzwxh:11767klzzwxh:11768klzzwxh:11769klzzwxh:11770klzzwxh:11771klzzwxh:11772klzzwxh:11773klzzwxh:11774klzzwxh:11775klzzwxh:11776klzzwxh:11777klzzwxh:11778klzzwxh:11779klzzwxh:11780klzzwxh:11781klzzwxh:11782klzzwxh:11783klzzwxh:11784klzzwxh:11785 guintklzzwxh:11786klzzwxh:11787klzzwxh:11788klzzwxh:11789 klzzwxh:11642pathklzzwxh:11643length,klzzwxh:11850klzzwxh:11790klzzwxh:11791klzzwxh:11792klzzwxh:11793klzzwxh:11794klzzwxh:11795klzzwxh:11796klzzwxh:11797klzzwxh:11798klzzwxh:11799klzzwxh:11800klzzwxh:11801klzzwxh:11802klzzwxh:11803klzzwxh:11804klzzwxh:11805klzzwxh:11806klzzwxh:11807klzzwxh:11808klzzwxh:11809klzzwxh:11810klzzwxh:11811klzzwxh:11812 gcharklzzwxh:11813klzzwxh:11814klzzwxh:11815 klzzwxh:11644klzzwxh:11645path,klzzwxh:11851klzzwxh:11816klzzwxh:11817klzzwxh:11818klzzwxh:11819klzzwxh:11820klzzwxh:11821klzzwxh:11822klzzwxh:11823klzzwxh:11824klzzwxh:11825klzzwxh:11826klzzwxh:11827klzzwxh:11828klzzwxh:11829klzzwxh:11830klzzwxh:11831klzzwxh:11832klzzwxh:11833klzzwxh:11834klzzwxh:11835klzzwxh:11836klzzwxh:11837klzzwxh:11838 gcharklzzwxh:11839klzzwxh:11840klzzwxh:11841 klzzwxh:11646klzzwxh:11647pathklzzwxh:11648reversedklzzwxh:11649;

    GTypeklzzwxh:11868klzzwxh:11869klzzwxh:11870klzzwxh:11871klzzwxh:11872klzzwxh:11873klzzwxh:11874klzzwxh:11875klzzwxh:11876klzzwxh:11877 gtkklzzwxh:11852requisitionklzzwxh:11853getklzzwxh:11854type klzzwxh:11855voidklzzwxh:11856;klzzwxh:11903GtkRequisition klzzwxh:11857gtkklzzwxh:11858requisitionklzzwxh:11859copyklzzwxh:11878klzzwxh:11879klzzwxh:11880klzzwxh:11881 klzzwxh:11860const GtkRequisition klzzwxh:11861requisitionklzzwxh:11862;klzzwxh:11904voidklzzwxh:11882klzzwxh:11883klzzwxh:11884klzzwxh:11885klzzwxh:11886klzzwxh:11887klzzwxh:11888klzzwxh:11889klzzwxh:11890klzzwxh:11891klzzwxh:11892 gtkklzzwxh:11863requisitionklzzwxh:11864freeklzzwxh:11893klzzwxh:11894klzzwxh:11895klzzwxh:11896 klzzwxh:11865GtkRequisitionklzzwxh:11897klzzwxh:11898klzzwxh:11899klzzwxh:11900klzzwxh:11901klzzwxh:11902 klzzwxh:11866requisitionklzzwxh:11867;

    klzzwxh:11905ifklzzwxh:11935klzzwxh:11936klzzwxh:11937 defined klzzwxh:11906GTKklzzwxh:11907TRACEklzzwxh:11908OBJECTSklzzwxh:11909 klzzwxh:11938klzzwxh:11939 defined klzzwxh:11910klzzwxh:11911klzzwxh:11912GNUCklzzwxh:11913klzzwxh:11914klzzwxh:11915klzzwxh:11947klzzwxh:11916klzzwxh:11940 define gtkklzzwxh:11917widgetklzzwxh:11918ref gtkklzzwxh:11919objectklzzwxh:11920refklzzwxh:11948klzzwxh:11921klzzwxh:11941 define gtkklzzwxh:11922widgetklzzwxh:11923unref gtkklzzwxh:11924objectklzzwxh:11925unrefklzzwxh:11949klzzwxh:11926endifklzzwxh:11942klzzwxh:11943klzzwxh:11944 /klzzwxh:11927 GTKklzzwxh:11928TRACEklzzwxh:11929OBJECTS klzzwxh:11945klzzwxh:11946 klzzwxh:11930klzzwxh:11931GNUCklzzwxh:11932klzzwxh:11933 klzzwxh:11934/

    GtkWidgetAuxInfo klzzwxh:11950klzzwxh:11951gtkklzzwxh:11952widgetklzzwxh:11953getklzzwxh:11954auxklzzwxh:11955infoklzzwxh:11969klzzwxh:11970klzzwxh:11971klzzwxh:11972klzzwxh:11973klzzwxh:11974klzzwxh:11975klzzwxh:11976klzzwxh:11977klzzwxh:11978klzzwxh:11979klzzwxh:11980klzzwxh:11981klzzwxh:11982klzzwxh:11983 klzzwxh:11956GtkWidgetklzzwxh:11984klzzwxh:11985klzzwxh:11986 klzzwxh:11957widget,klzzwxh:12071klzzwxh:11987klzzwxh:11988klzzwxh:11989klzzwxh:11990klzzwxh:11991klzzwxh:11992klzzwxh:11993klzzwxh:11994klzzwxh:11995klzzwxh:11996klzzwxh:11997klzzwxh:11998klzzwxh:11999klzzwxh:12000klzzwxh:12001klzzwxh:12002klzzwxh:12003klzzwxh:12004klzzwxh:12005klzzwxh:12006klzzwxh:12007klzzwxh:12008klzzwxh:12009klzzwxh:12010klzzwxh:12011klzzwxh:12012klzzwxh:12013klzzwxh:12014klzzwxh:12015klzzwxh:12016 gbooleanklzzwxh:12017klzzwxh:12018klzzwxh:12019klzzwxh:12020klzzwxh:12021 createklzzwxh:11958;klzzwxh:12072voidklzzwxh:12022klzzwxh:12023klzzwxh:12024klzzwxh:12025klzzwxh:12026klzzwxh:12027klzzwxh:12028klzzwxh:12029klzzwxh:12030klzzwxh:12031klzzwxh:12032klzzwxh:12033klzzwxh:12034 klzzwxh:11959gtkklzzwxh:11960widgetklzzwxh:11961propagateklzzwxh:11962hierarchyklzzwxh:11963changed klzzwxh:11964GtkWidgetklzzwxh:12035klzzwxh:12036klzzwxh:12037 klzzwxh:11965widget,klzzwxh:12073klzzwxh:12038klzzwxh:12039klzzwxh:12040klzzwxh:12041klzzwxh:12042klzzwxh:12043klzzwxh:12044klzzwxh:12045klzzwxh:12046klzzwxh:12047klzzwxh:12048klzzwxh:12049klzzwxh:12050klzzwxh:12051klzzwxh:12052klzzwxh:12053klzzwxh:12054klzzwxh:12055klzzwxh:12056klzzwxh:12057klzzwxh:12058klzzwxh:12059klzzwxh:12060klzzwxh:12061klzzwxh:12062klzzwxh:12063klzzwxh:12064klzzwxh:12065klzzwxh:12066klzzwxh:12067 GtkWidgetklzzwxh:12068klzzwxh:12069klzzwxh:12070 klzzwxh:11966previousklzzwxh:11967toplevelklzzwxh:11968;

    GdkColormapklzzwxh:12074 klzzwxh:12075gtkklzzwxh:12076widgetklzzwxh:12077peekklzzwxh:12078colormap klzzwxh:12079voidklzzwxh:12080;

    klzzwxh:12081ifdef klzzwxh:12082klzzwxh:12083cplusplusklzzwxh:12090klzzwxh:12084klzzwxh:12091klzzwxh:12085endif /klzzwxh:12086 klzzwxh:12087klzzwxh:12088cplusplus klzzwxh:12089/

    klzzwxh:12092endif /klzzwxh:12093 klzzwxh:12094klzzwxh:12095GTKklzzwxh:12096WIDGETklzzwxh:12097Hklzzwxh:12098klzzwxh:12099 klzzwxh:12100/

    helpklzzwxh:12101klzzwxh:12102

     
    • Nobody/Anonymous

      #include <gtk/gtk.h>

      /* This is a callback function. The data arguments are ignored
      * in this example. More on callbacks below. */
      void hello( GtkWidget *widget,
                  gpointer   data )
      {
          g_print ("Hello World\n");
      }

      gint delete_event( GtkWidget *widget,
                         GdkEvent  *event,
                 gpointer   data )
      {
          /* If you return FALSE in the "delete_event" signal handler,
           * GTK will emit the "destroy" signal. Returning TRUE means
           * you don't want the window to be destroyed.
           * This is useful for popping up 'are you sure you want to quit?'
           * type dialogs. */

          g_print ("delete event occurred\n");

          /* Change TRUE to FALSE and the main window will be destroyed with
           * a "delete_event". */

          return TRUE;
      }

      /* Another callback */
      void destroy( GtkWidget *widget,
                    gpointer   data )
      {
          gtk_main_quit ();
      }

      int main( int   argc,
                char *argv[] )
      {
          /* GtkWidget is the storage type for widgets */
          GtkWidget *window;
          GtkWidget *button;
         
          /* This is called in all GTK applications. Arguments are parsed
           * from the command line and are returned to the application. */
          gtk_init (&argc, &argv);
         
          /* create a new window */
          window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
         
          /* When the window is given the "delete_event" signal (this is given
           * by the window manager, usually by the "close" option, or on the
           * titlebar), we ask it to call the delete_event () function
           * as defined above. The data passed to the callback
           * function is NULL and is ignored in the callback function. */
          g_signal_connect (G_OBJECT (window), "delete_event",
                    G_CALLBACK (delete_event), NULL);
         
          /* Here we connect the "destroy" event to a signal handler. 
           * This event occurs when we call gtk_widget_destroy() on the window,
           * or if we return FALSE in the "delete_event" callback. */
          g_signal_connect (G_OBJECT (window), "destroy",
                    G_CALLBACK (destroy), NULL);
         
          /* Sets the border width of the window. */
          gtk_container_set_border_width (GTK_CONTAINER (window), 10);
         
          /* Creates a new button with the label "Hello World". */
          button = gtk_button_new_with_label ("Hello World");
         
          /* When the button receives the "clicked" signal, it will call the
           * function hello() passing it NULL as its argument.  The hello()
           * function is defined above. */
          g_signal_connect (G_OBJECT (button), "clicked",
                    G_CALLBACK (hello), NULL);
         
          /* This will cause the window to be destroyed by calling
           * gtk_widget_destroy(window) when "clicked".  Again, the destroy
           * signal could come from here, or the window manager. */
          g_signal_connect_swapped (G_OBJECT (button), "clicked",
                        G_CALLBACK (gtk_widget_destroy),
                                    G_OBJECT (window));
         
          /* This packs the button into the window (a gtk container). */
          gtk_container_add (GTK_CONTAINER (window), button);
         
          /* The final step is to display this newly created widget. */
          gtk_widget_show (button);
         
          /* and the window */
          gtk_widget_show (window);
         
          /* All GTK applications must have a gtk_main(). Control ends here
           * and waits for an event to occur (like a key press or
           * mouse event). */
          gtk_main ();
         
          return 0;
      }

       

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.