예제 #1
0
static void
gimp_message_box_class_init (GimpMessageBoxClass *klass)
{
  GObjectClass      *object_class    = G_OBJECT_CLASS (klass);
  GtkWidgetClass    *widget_class    = GTK_WIDGET_CLASS (klass);
  GtkContainerClass *container_class = GTK_CONTAINER_CLASS (klass);

  object_class->constructed          = gimp_message_box_constructed;
  object_class->dispose              = gimp_message_box_dispose;
  object_class->finalize             = gimp_message_box_finalize;
  object_class->set_property         = gimp_message_box_set_property;
  object_class->get_property         = gimp_message_box_get_property;

  widget_class->get_preferred_width  = gimp_message_box_get_preferred_width;
  widget_class->get_preferred_height = gimp_message_box_get_preferred_height;
  widget_class->get_preferred_width_for_height = gimp_message_box_get_preferred_width_for_height;
  widget_class->get_preferred_height_for_width = gimp_message_box_get_preferred_height_for_width;
  widget_class->size_allocate        = gimp_message_box_size_allocate;

  container_class->forall            = gimp_message_box_forall;

  gtk_container_class_handle_border_width (container_class);

  g_object_class_install_property (object_class, PROP_ICON_NAME,
                                   g_param_spec_string ("icon-name", NULL, NULL,
                                                        NULL,
                                                        GIMP_PARAM_READWRITE |
                                                        G_PARAM_CONSTRUCT_ONLY));
}
예제 #2
0
static void
gtk_notification_class_init (GtkNotificationClass *klass)
{
  GObjectClass* object_class = G_OBJECT_CLASS (klass);
  GtkWidgetClass* widget_class = GTK_WIDGET_CLASS(klass);
  GtkContainerClass *container_class = GTK_CONTAINER_CLASS (klass);

  object_class->finalize = gtk_notification_finalize;
  object_class->set_property = gtk_notification_set_property;
  object_class->get_property = gtk_notification_get_property;

  widget_class->show = gtk_notification_show;
  widget_class->destroy = gtk_notification_destroy;
  widget_class->get_preferred_width = gtk_notification_get_preferred_width;
  widget_class->get_preferred_height_for_width = gtk_notification_get_preferred_height_for_width;
  widget_class->get_preferred_height = gtk_notification_get_preferred_height;
  widget_class->get_preferred_width_for_height = gtk_notification_get_preferred_width_for_height;
  widget_class->size_allocate = gtk_notification_size_allocate;
  widget_class->draw = gtk_notification_draw;
  widget_class->realize = gtk_notification_realize;
  widget_class->unrealize = gtk_notification_unrealize;
  widget_class->style_updated = gtk_notification_style_updated;
  widget_class->visibility_notify_event = gtk_notification_visibility_notify_event;

  container_class->add = gtk_notification_add;
  container_class->forall = gtk_notification_forall;
  gtk_container_class_handle_border_width (container_class);


  /**
   * GtkNotification:timeout:
   *
   * The time it takes to hide the widget, in seconds.
   *
   * Since: 0.1
   */
  g_object_class_install_property (object_class,
                                   PROP_TIMEOUT,
                                   g_param_spec_uint("timeout", "timeout",
                                                     "The time it takes to hide the widget, in seconds",
                                                     0, G_MAXUINT, 10,
                                                     GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT));

  notification_signals[DISMISSED] = g_signal_new ("dismissed",
                                                  G_OBJECT_CLASS_TYPE (klass),
                                                  G_SIGNAL_RUN_LAST,
                                                  G_STRUCT_OFFSET (GtkNotificationClass, dismissed),
                                                  NULL,
                                                  NULL,
                                                  g_cclosure_marshal_VOID__VOID,
                                                  G_TYPE_NONE,
                                                  0);

  g_type_class_add_private (object_class, sizeof (GtkNotificationPrivate));
}
예제 #3
0
static void
gwy_scroller_class_init(GwyScrollerClass *klass)
{
    GObjectClass *gobject_class = G_OBJECT_CLASS(klass);
    GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
    GtkContainerClass *container_class = GTK_CONTAINER_CLASS(klass);

    g_type_class_add_private(klass, sizeof(Scroller));

    gobject_class->dispose = gwy_scroller_dispose;
    gobject_class->finalize = gwy_scroller_finalize;
    gobject_class->get_property = gwy_scroller_get_property;
    gobject_class->set_property = gwy_scroller_set_property;

    widget_class->get_preferred_width = gwy_scroller_get_preferred_width;
    widget_class->get_preferred_height = gwy_scroller_get_preferred_height;
    widget_class->size_allocate = gwy_scroller_size_allocate;
    widget_class->scroll_event = gwy_scroller_scroll_event;

    container_class->add = gwy_scroller_add;
    container_class->remove = gwy_scroller_remove;
    container_class->child_type = gwy_scroller_child_type;
    gtk_container_class_handle_border_width(container_class);

    properties[PROP_HADJUSTMENT]
        = g_param_spec_object("hadjustment",
                              "Horizontal adjustment",
                              "Adjustment for the horizontal position",
                              GTK_TYPE_ADJUSTMENT,
                              G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);

    properties[PROP_VADJUSTMENT]
        = g_param_spec_object("vadjustment",
                              "Vertical adjustment",
                              "Adjustment for the vertical position",
                              GTK_TYPE_ADJUSTMENT,
                              G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);

    for (guint i = 1; i < N_PROPS; i++)
        g_object_class_install_property(gobject_class, i, properties[i]);

    /**
     * GwyScroller::scroll-child:
     * @gwyscroller: The #GwyScroller which received the signal.
     * @arg1: #GtkScrollType describing how much to scroll.
     * @arg2: %TRUE to scroll horizontally, %FALSE to scroll vertically.
     *
     * The ::scroll-child signal is a
     * <link linkend="keybinding-signals">keybinding signal</link>
     * which gets emitted when a keybinding that scrolls is pressed.
     * The horizontal or vertical adjustment is updated which triggers a
     * signal that the scroller child may listen to and scroll itself.
     */
    signals[SGNL_SCROLL_CHILD]
        = g_signal_new_class_handler("scroll-child",
                                     G_OBJECT_CLASS_TYPE(klass),
                                     G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
                                     G_CALLBACK(gwy_scroller_scroll_child),
                                     NULL, NULL,
                                     _gwy_cclosure_marshal_BOOLEAN__ENUM_BOOLEAN,
                                     G_TYPE_BOOLEAN, 2,
                                     GTK_TYPE_SCROLL_TYPE, G_TYPE_BOOLEAN);

    GtkBindingSet *binding_set = gtk_binding_set_by_class(klass);

    add_scroll_binding(binding_set, GDK_KEY_Left, GDK_CONTROL_MASK,
                       GTK_SCROLL_STEP_BACKWARD, TRUE);
    add_scroll_binding(binding_set, GDK_KEY_Right, GDK_CONTROL_MASK,
                       GTK_SCROLL_STEP_FORWARD, TRUE);
    add_scroll_binding(binding_set, GDK_KEY_Up, GDK_CONTROL_MASK,
                       GTK_SCROLL_STEP_BACKWARD, FALSE);
    add_scroll_binding(binding_set, GDK_KEY_Down, GDK_CONTROL_MASK,
                       GTK_SCROLL_STEP_FORWARD, FALSE);

    add_scroll_binding(binding_set, GDK_KEY_Page_Up, GDK_CONTROL_MASK,
                       GTK_SCROLL_PAGE_BACKWARD, TRUE);
    add_scroll_binding(binding_set, GDK_KEY_Page_Down, GDK_CONTROL_MASK,
                       GTK_SCROLL_PAGE_FORWARD, TRUE);
    add_scroll_binding(binding_set, GDK_KEY_Page_Up, 0,
                       GTK_SCROLL_PAGE_BACKWARD, FALSE);
    add_scroll_binding(binding_set, GDK_KEY_Page_Down, 0,
                       GTK_SCROLL_PAGE_FORWARD, FALSE);

    add_scroll_binding(binding_set, GDK_KEY_Home, GDK_CONTROL_MASK,
                       GTK_SCROLL_START, TRUE);
    add_scroll_binding(binding_set, GDK_KEY_End, GDK_CONTROL_MASK,
                       GTK_SCROLL_END, TRUE);
    add_scroll_binding(binding_set, GDK_KEY_Home, 0,
                       GTK_SCROLL_START, FALSE);
    add_scroll_binding(binding_set, GDK_KEY_End, 0,
                       GTK_SCROLL_END, FALSE);
}
예제 #4
0
static void
gd_stack_class_init (GdStackClass * klass)
{
  GObjectClass *object_class = G_OBJECT_CLASS (klass);
  GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
  GtkContainerClass *container_class = GTK_CONTAINER_CLASS (klass);

  object_class->get_property = gd_stack_get_property;
  object_class->set_property = gd_stack_set_property;
  object_class->finalize = gd_stack_finalize;

  widget_class->size_allocate = gd_stack_size_allocate;
  widget_class->draw = gd_stack_draw;
  widget_class->realize = gd_stack_realize;
  widget_class->unrealize = gd_stack_unrealize;
  widget_class->get_preferred_height = gd_stack_get_preferred_height;
  widget_class->get_preferred_height_for_width = gd_stack_get_preferred_height_for_width;
  widget_class->get_preferred_width = gd_stack_get_preferred_width;
  widget_class->get_preferred_width_for_height = gd_stack_get_preferred_width_for_height;
  widget_class->compute_expand = gd_stack_compute_expand;

  container_class->add = gd_stack_add;
  container_class->remove = gd_stack_remove;
  container_class->forall = gd_stack_forall;
  container_class->set_child_property = gd_stack_set_child_property;
  container_class->get_child_property = gd_stack_get_child_property;
  /*container_class->get_path_for_child = gd_stack_get_path_for_child; */
  gtk_container_class_handle_border_width (container_class);

  g_object_class_install_property (object_class,
				   PROP_HOMOGENEOUS,
				   g_param_spec_boolean ("homogeneous",
							 "Homogeneous",
							 "Homogeneous sizing",
							 TRUE,
							 GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT));
  g_object_class_install_property (object_class,
				   PROP_VISIBLE_CHILD,
				   g_param_spec_object ("visible-child",
							"Visible child",
							"The widget currently visible in the stack",
							GTK_TYPE_WIDGET,
							GTK_PARAM_READWRITE));
  g_object_class_install_property (object_class,
				   PROP_VISIBLE_CHILD_NAME,
				   g_param_spec_string ("visible-child-name",
							"Name of visible child",
							"The name of the widget currently visible in the stack",
							NULL,
							GTK_PARAM_READWRITE));
  g_object_class_install_property (object_class,
                                   PROP_TRANSITION_DURATION,
                                   g_param_spec_int ("transition-duration",
                                                     "Transition duration",
                                                     "The animation duration, in milliseconds",
                                                     G_MININT, G_MAXINT,
                                                     200,
                                                     GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT));
  g_object_class_install_property (object_class,
                                   PROP_TRANSITION_TYPE,
                                   g_param_spec_int ("transition-type",
                                                     "Transition type",
                                                     "The type of animation used to transition",
                                                     GD_STACK_TRANSITION_TYPE_NONE,
                                                     G_MAXINT,
                                                     GD_STACK_TRANSITION_TYPE_NONE,
                                                     GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT));

  gtk_container_class_install_child_property (container_class, CHILD_PROP_NAME,
    g_param_spec_string ("name",
                         "Name",
                         "The name of the child page",
                         NULL,
                         GTK_PARAM_READWRITE));

  gtk_container_class_install_child_property (container_class, CHILD_PROP_TITLE,
    g_param_spec_string ("title",
                         "Title",
                         "The title of the child page",
                         NULL,
                         GTK_PARAM_READWRITE));

  gtk_container_class_install_child_property (container_class, CHILD_PROP_SYMBOLIC_ICON_NAME,
    g_param_spec_string ("symbolic-icon-name",
                         "Symbolic icon name",
                         "The symbolic icon name of the child page",
                         NULL,
                         GTK_PARAM_READWRITE));

  gtk_container_class_install_child_property (container_class, CHILD_PROP_POSITION,
    g_param_spec_int ("position",
                      "Position",
                      "The index of the child in the parent",
                      -1, G_MAXINT, 0,
                      GTK_PARAM_READWRITE));

  g_type_class_add_private (klass, sizeof (GdStackPrivate));
}
예제 #5
0
static void
gstyle_color_widget_class_init (GstyleColorWidgetClass *klass)
{
  GObjectClass *object_class = G_OBJECT_CLASS (klass);
  GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
  GtkContainerClass *container_class = (GtkContainerClass*) klass;

  object_class->finalize = gstyle_color_widget_finalize;
  object_class->get_property = gstyle_color_widget_get_property;
  object_class->set_property = gstyle_color_widget_set_property;

  widget_class->size_allocate = gstyle_color_widget_size_allocate;
  widget_class->realize = gstyle_color_widget_realize;
  widget_class->get_preferred_width = gstyle_color_widget_get_preferred_width;
  widget_class->get_preferred_height = gstyle_color_widget_get_preferred_height;
  widget_class->hierarchy_changed = gstyle_color_widget_hierarchy_changed;
  widget_class->draw = gstyle_color_widget_draw;

  widget_class->drag_end = gstyle_color_widget_on_drag_end;
  widget_class->drag_failed = gstyle_color_widget_on_drag_failed;
  widget_class->drag_data_get = gstyle_color_widget_on_drag_data_get;
  widget_class->drag_data_delete = gstyle_color_widget_on_drag_data_delete;

  widget_class->drag_motion = gstyle_color_widget_on_drag_motion;
  widget_class->drag_leave = gstyle_color_widget_on_drag_leave;
  widget_class->drag_drop = gstyle_color_widget_on_drag_drop;
  widget_class->drag_data_received = gstyle_color_widget_on_drag_data_received;

  properties[PROP_COLOR] =
    g_param_spec_object ("color",
                         "color",
                         "A GstyleColor to use name and color from",
                         GSTYLE_TYPE_COLOR,
                         (G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));

  properties [PROP_NAME_VISIBLE] =
    g_param_spec_boolean ("name-visible",
                          "name-visible",
                          "set the color name visibility",
                          TRUE,
                          (G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));

  properties [PROP_FALLBACK_NAME_VISIBLE] =
    g_param_spec_boolean ("fallback-name-visible",
                          "fallback-name-visible",
                          "set the fallback name visibility",
                          TRUE,
                          (G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));

  properties [PROP_FALLBACK_NAME_KIND] =
    g_param_spec_enum ("fallback-name-kind",
                       "fallback-name-kind",
                       "if there's no name, the fallback kind displayed",
                       GSTYLE_TYPE_COLOR_KIND,
                       GSTYLE_COLOR_KIND_ORIGINAL,
                       (G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));

  properties [PROP_DND_LOCK] =
    g_param_spec_flags ("dnd-lock",
                        "dnd-lock",
                        "Dnd lockability",
                        GSTYLE_TYPE_COLOR_WIDGET_DND_LOCK_FLAGS,
                        GSTYLE_COLOR_WIDGET_DND_LOCK_FLAGS_NONE,
                        (G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));

  g_object_class_install_properties (object_class, N_PROPS, properties);

  gtk_container_class_handle_border_width (container_class);
  gtk_widget_class_set_css_name (widget_class, "gstylecolorwidget");
}
예제 #6
0
파일: gdl-dock.c 프로젝트: vldm/gdl
static void
gdl_dock_class_init (GdlDockClass *klass)
{
    GObjectClass       *g_object_class;
    GtkWidgetClass     *widget_class;
    GtkContainerClass  *container_class;
    GdlDockObjectClass *object_class;

    g_object_class = G_OBJECT_CLASS (klass);
    widget_class = GTK_WIDGET_CLASS (klass);
    container_class = GTK_CONTAINER_CLASS (klass);
    object_class = GDL_DOCK_OBJECT_CLASS (klass);

    g_object_class->constructor = gdl_dock_constructor;
    g_object_class->set_property = gdl_dock_set_property;
    g_object_class->get_property = gdl_dock_get_property;
    g_object_class->dispose = gdl_dock_dispose;

    /* properties */

    g_object_class_install_property (
        g_object_class, PROP_FLOATING,
        g_param_spec_boolean ("floating", _("Floating"),
                              _("Whether the dock is floating in its own window"),
                              FALSE,
                              G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY |
                              GDL_DOCK_PARAM_EXPORT));

    g_object_class_install_property (
        g_object_class, PROP_DEFAULT_TITLE,
        g_param_spec_string ("default-title", _("Default title"),
                             _("Default title for the newly created floating docks"),
                             NULL,
                             G_PARAM_READWRITE));

    g_object_class_install_property (
        g_object_class, PROP_WIDTH,
        g_param_spec_int ("width", _("Width"),
                          _("Width for the dock when it's of floating type"),
                          -1, G_MAXINT, -1,
                          G_PARAM_READWRITE | G_PARAM_CONSTRUCT |
                          GDL_DOCK_PARAM_EXPORT));

    g_object_class_install_property (
        g_object_class, PROP_HEIGHT,
        g_param_spec_int ("height", _("Height"),
                          _("Height for the dock when it's of floating type"),
                          -1, G_MAXINT, -1,
                          G_PARAM_READWRITE | G_PARAM_CONSTRUCT |
                          GDL_DOCK_PARAM_EXPORT));

    g_object_class_install_property (
        g_object_class, PROP_FLOAT_X,
        g_param_spec_int ("floatx", _("Float X"),
                          _("X coordinate for a floating dock"),
                          G_MININT, G_MAXINT, 0,
                          G_PARAM_READWRITE | G_PARAM_CONSTRUCT |
                          GDL_DOCK_PARAM_EXPORT));

    g_object_class_install_property (
        g_object_class, PROP_FLOAT_Y,
        g_param_spec_int ("floaty", _("Float Y"),
                          _("Y coordinate for a floating dock"),
                          G_MININT, G_MAXINT, 0,
                          G_PARAM_READWRITE | G_PARAM_CONSTRUCT |
                          GDL_DOCK_PARAM_EXPORT));

    /**
     * GdlDock:skip-taskbar:
     *
     * Whether or not to prevent a floating dock window from appearing in the
     * taskbar. Note that this only affects floating windows that are created
     * after this flag is set; existing windows are not affected.  Usually,
     * this property is used when you create the dock.
     *
     * Since: 3.6
     */
    g_object_class_install_property (
        g_object_class, PROP_SKIP_TASKBAR,
        g_param_spec_boolean ("skip-taskbar",
                              _("Skip taskbar"),
                              _("Whether or not to prevent a floating dock window from appearing in the taskbar"),
                              TRUE,
                              G_PARAM_READWRITE | G_PARAM_CONSTRUCT |
                              GDL_DOCK_PARAM_EXPORT));

    widget_class->get_preferred_width = gdl_dock_get_preferred_width;
    widget_class->get_preferred_height = gdl_dock_get_preferred_height;
    widget_class->size_allocate = gdl_dock_size_allocate;
    widget_class->map = gdl_dock_map;
    widget_class->unmap = gdl_dock_unmap;
    widget_class->show = gdl_dock_show;
    widget_class->hide = gdl_dock_hide;

    container_class->add = gdl_dock_add;
    container_class->remove = gdl_dock_remove;
    container_class->forall = gdl_dock_forall;
    container_class->child_type = gdl_dock_child_type;
    gtk_container_class_handle_border_width (container_class);

    gdl_dock_object_class_set_is_compound (object_class, TRUE);
    object_class->detach = gdl_dock_detach;
    object_class->reduce = gdl_dock_reduce;
    object_class->dock_request = gdl_dock_dock_request;
    object_class->dock = gdl_dock_dock;
    object_class->reorder = gdl_dock_reorder;
    object_class->child_placement = gdl_dock_child_placement;
    object_class->present = gdl_dock_present;

    /* signals */

    /**
     * GdlDock::layout-changed:
     *
     * Signals that the layout has changed, one or more widgets have been moved,
     * added or removed.
     */
    dock_signals [LAYOUT_CHANGED] =
        g_signal_new ("layout-changed",
                      G_TYPE_FROM_CLASS (klass),
                      G_SIGNAL_RUN_LAST,
                      G_STRUCT_OFFSET (GdlDockClass, layout_changed),
                      NULL, /* accumulator */
                      NULL, /* accu_data */
                      gdl_marshal_VOID__VOID,
                      G_TYPE_NONE, /* return type */
                      0);

    klass->layout_changed = NULL;

    g_type_class_add_private (object_class, sizeof (GdlDockPrivate));
}