Add ClutterGridLayout
ClutterGridLayout is port of GtkGrid to a Clutter layout manager. All the logic is taken from gtkgrid.c, so all the credits should go to Matthias Clasen for writing this nice piece of code. ClutterGridLayout supports adding children with it's own methods GridLayout.attach() and GridLayout.attach_next_to() as well as Actor.add_child() and friends. The latter adds children in a similar fashion to ClutterBoxLayout https://bugzilla.gnome.org/show_bug.cgi?id=677372
This commit is contained in:
parent
8ef55e4e98
commit
1eb869ec8f
@ -86,6 +86,7 @@ source_h = \
|
|||||||
$(srcdir)/clutter-fixed-layout.h \
|
$(srcdir)/clutter-fixed-layout.h \
|
||||||
$(srcdir)/clutter-flow-layout.h \
|
$(srcdir)/clutter-flow-layout.h \
|
||||||
$(srcdir)/clutter-gesture-action.h \
|
$(srcdir)/clutter-gesture-action.h \
|
||||||
|
$(srcdir)/clutter-grid-layout.h \
|
||||||
$(srcdir)/clutter-group.h \
|
$(srcdir)/clutter-group.h \
|
||||||
$(srcdir)/clutter-image.h \
|
$(srcdir)/clutter-image.h \
|
||||||
$(srcdir)/clutter-input-device.h \
|
$(srcdir)/clutter-input-device.h \
|
||||||
@ -164,6 +165,7 @@ source_c = \
|
|||||||
$(srcdir)/clutter-flatten-effect.c \
|
$(srcdir)/clutter-flatten-effect.c \
|
||||||
$(srcdir)/clutter-flow-layout.c \
|
$(srcdir)/clutter-flow-layout.c \
|
||||||
$(srcdir)/clutter-gesture-action.c \
|
$(srcdir)/clutter-gesture-action.c \
|
||||||
|
$(srcdir)/clutter-grid-layout.c \
|
||||||
$(srcdir)/clutter-image.c \
|
$(srcdir)/clutter-image.c \
|
||||||
$(srcdir)/clutter-input-device.c \
|
$(srcdir)/clutter-input-device.c \
|
||||||
$(srcdir)/clutter-interval.c \
|
$(srcdir)/clutter-interval.c \
|
||||||
|
@ -1237,6 +1237,24 @@ typedef enum { /*< prefix=CLUTTER_SCROLL >*/
|
|||||||
CLUTTER_SCROLL_BOTH = CLUTTER_SCROLL_HORIZONTALLY | CLUTTER_SCROLL_VERTICALLY
|
CLUTTER_SCROLL_BOTH = CLUTTER_SCROLL_HORIZONTALLY | CLUTTER_SCROLL_VERTICALLY
|
||||||
} ClutterScrollMode;
|
} ClutterScrollMode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ClutterGridPosition:
|
||||||
|
* @CLUTTER_GRID_POSITION_LEFT: left position
|
||||||
|
* @CLUTTER_GRID_POSITION_RIGHT: right position
|
||||||
|
* @CLUTTER_GRID_POSITION_TOP: top position
|
||||||
|
* @CLUTTER_GRID_POSITION_BOTTOM: bottom position
|
||||||
|
*
|
||||||
|
* Grid position modes.
|
||||||
|
*
|
||||||
|
* Since: 1.12
|
||||||
|
*/
|
||||||
|
typedef enum {
|
||||||
|
CLUTTER_GRID_POSITION_LEFT,
|
||||||
|
CLUTTER_GRID_POSITION_RIGHT,
|
||||||
|
CLUTTER_GRID_POSITION_TOP,
|
||||||
|
CLUTTER_GRID_POSITION_BOTTOM
|
||||||
|
} ClutterGridPosition;
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __CLUTTER_ENUMS_H__ */
|
#endif /* __CLUTTER_ENUMS_H__ */
|
||||||
|
2199
clutter/clutter-grid-layout.c
Normal file
2199
clutter/clutter-grid-layout.c
Normal file
File diff suppressed because it is too large
Load Diff
161
clutter/clutter-grid-layout.h
Normal file
161
clutter/clutter-grid-layout.h
Normal file
@ -0,0 +1,161 @@
|
|||||||
|
/*
|
||||||
|
* Clutter.
|
||||||
|
*
|
||||||
|
* An OpenGL based 'interactive canvas' library.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2010 Red Hat, Inc.
|
||||||
|
* Copyright (C) 2012 Bastian Winkler <buz@netbuz.org>
|
||||||
|
*
|
||||||
|
* 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, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* Author:
|
||||||
|
* Bastian Winkler <buz@netbuz.org>
|
||||||
|
*
|
||||||
|
* Based on GtkGrid widget by:
|
||||||
|
* Matthias Clasen
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if !defined(__CLUTTER_H_INSIDE__) && !defined(CLUTTER_COMPILATION)
|
||||||
|
#error "Only <clutter/clutter.h> can be included directly."
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __CLUTTER_GRID_LAYOUT_H__
|
||||||
|
#define __CLUTTER_GRID_LAYOUT_H__
|
||||||
|
|
||||||
|
#include <clutter/clutter-layout-manager.h>
|
||||||
|
|
||||||
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
|
#define CLUTTER_TYPE_GRID_LAYOUT (clutter_grid_layout_get_type ())
|
||||||
|
#define CLUTTER_GRID_LAYOUT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CLUTTER_TYPE_GRID_LAYOUT, ClutterGridLayout))
|
||||||
|
#define CLUTTER_IS_GRID_LAYOUT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CLUTTER_TYPE_GRID_LAYOUT))
|
||||||
|
#define CLUTTER_GRID_LAYOUT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CLUTTER_TYPE_GRID_LAYOUT, ClutterGridLayoutClass))
|
||||||
|
#define CLUTTER_IS_GRID_LAYOUT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CLUTTER_TYPE_GRID_LAYOUT))
|
||||||
|
#define CLUTTER_GRID_LAYOUT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CLUTTER_TYPE_GRID_LAYOUT, ClutterGridLayoutClass))
|
||||||
|
|
||||||
|
typedef struct _ClutterGridLayout ClutterGridLayout;
|
||||||
|
typedef struct _ClutterGridLayoutPrivate ClutterGridLayoutPrivate;
|
||||||
|
typedef struct _ClutterGridLayoutClass ClutterGridLayoutClass;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ClutterGridLayout:
|
||||||
|
*
|
||||||
|
* The #ClutterGridLayout structure contains only private data
|
||||||
|
* and should be accessed using the provided API
|
||||||
|
*
|
||||||
|
* Since: 1.12
|
||||||
|
*/
|
||||||
|
struct _ClutterGridLayout
|
||||||
|
{
|
||||||
|
/*< private >*/
|
||||||
|
ClutterLayoutManager parent_instance;
|
||||||
|
|
||||||
|
ClutterGridLayoutPrivate *priv;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ClutterGridLayoutClass:
|
||||||
|
*
|
||||||
|
* The #ClutterGridLayoutClass structure contains only private
|
||||||
|
* data and should be accessed using the provided API
|
||||||
|
*
|
||||||
|
* Since: 1.12
|
||||||
|
*/
|
||||||
|
struct _ClutterGridLayoutClass
|
||||||
|
{
|
||||||
|
/*< private >*/
|
||||||
|
ClutterLayoutManagerClass parent_class;
|
||||||
|
|
||||||
|
gpointer _padding[8];
|
||||||
|
};
|
||||||
|
|
||||||
|
CLUTTER_AVAILABLE_IN_1_12
|
||||||
|
GType clutter_grid_layout_get_type (void) G_GNUC_CONST;
|
||||||
|
|
||||||
|
CLUTTER_AVAILABLE_IN_1_12
|
||||||
|
ClutterLayoutManager * clutter_grid_layout_new (void);
|
||||||
|
|
||||||
|
CLUTTER_AVAILABLE_IN_1_12
|
||||||
|
void clutter_grid_layout_attach (ClutterGridLayout *layout,
|
||||||
|
ClutterActor *child,
|
||||||
|
gint left,
|
||||||
|
gint top,
|
||||||
|
gint width,
|
||||||
|
gint height);
|
||||||
|
|
||||||
|
CLUTTER_AVAILABLE_IN_1_12
|
||||||
|
void clutter_grid_layout_attach_next_to (ClutterGridLayout *layout,
|
||||||
|
ClutterActor *child,
|
||||||
|
ClutterActor *sibling,
|
||||||
|
ClutterGridPosition side,
|
||||||
|
gint width,
|
||||||
|
gint height);
|
||||||
|
|
||||||
|
CLUTTER_AVAILABLE_IN_1_12
|
||||||
|
ClutterActor * clutter_grid_layout_get_child_at (ClutterGridLayout *layout,
|
||||||
|
gint left,
|
||||||
|
gint top);
|
||||||
|
|
||||||
|
CLUTTER_AVAILABLE_IN_1_12
|
||||||
|
void clutter_grid_layout_insert_row (ClutterGridLayout *layout,
|
||||||
|
gint position);
|
||||||
|
|
||||||
|
CLUTTER_AVAILABLE_IN_1_12
|
||||||
|
void clutter_grid_layout_insert_column (ClutterGridLayout *layout,
|
||||||
|
gint position);
|
||||||
|
|
||||||
|
CLUTTER_AVAILABLE_IN_1_12
|
||||||
|
void clutter_grid_layout_insert_next_to (ClutterGridLayout *layout,
|
||||||
|
ClutterActor *sibling,
|
||||||
|
ClutterGridPosition side);
|
||||||
|
|
||||||
|
CLUTTER_AVAILABLE_IN_1_12
|
||||||
|
void clutter_grid_layout_set_orientation (ClutterGridLayout *layout,
|
||||||
|
ClutterOrientation orientation);
|
||||||
|
|
||||||
|
CLUTTER_AVAILABLE_IN_1_12
|
||||||
|
ClutterOrientation clutter_grid_layout_get_orientation (ClutterGridLayout *layout);
|
||||||
|
|
||||||
|
CLUTTER_AVAILABLE_IN_1_12
|
||||||
|
void clutter_grid_layout_set_column_spacing (ClutterGridLayout *layout,
|
||||||
|
guint spacing);
|
||||||
|
|
||||||
|
CLUTTER_AVAILABLE_IN_1_12
|
||||||
|
guint clutter_grid_layout_get_column_spacing (ClutterGridLayout *layout);
|
||||||
|
|
||||||
|
CLUTTER_AVAILABLE_IN_1_12
|
||||||
|
void clutter_grid_layout_set_row_spacing (ClutterGridLayout *layout,
|
||||||
|
guint spacing);
|
||||||
|
|
||||||
|
CLUTTER_AVAILABLE_IN_1_12
|
||||||
|
guint clutter_grid_layout_get_row_spacing (ClutterGridLayout *layout);
|
||||||
|
|
||||||
|
CLUTTER_AVAILABLE_IN_1_12
|
||||||
|
void clutter_grid_layout_set_column_homogeneous (ClutterGridLayout *layout,
|
||||||
|
gboolean homogeneous);
|
||||||
|
|
||||||
|
CLUTTER_AVAILABLE_IN_1_12
|
||||||
|
gboolean clutter_grid_layout_get_column_homogeneous (ClutterGridLayout *layout);
|
||||||
|
|
||||||
|
|
||||||
|
CLUTTER_AVAILABLE_IN_1_12
|
||||||
|
void clutter_grid_layout_set_row_homogeneous (ClutterGridLayout *layout,
|
||||||
|
gboolean homogeneous);
|
||||||
|
|
||||||
|
CLUTTER_AVAILABLE_IN_1_12
|
||||||
|
gboolean clutter_grid_layout_get_row_homogeneous (ClutterGridLayout *layout);
|
||||||
|
|
||||||
|
G_END_DECLS
|
||||||
|
|
||||||
|
#endif /* __CLUTTER_GRID_LAYOUT_H__ */
|
@ -66,6 +66,7 @@
|
|||||||
#include "clutter-fixed-layout.h"
|
#include "clutter-fixed-layout.h"
|
||||||
#include "clutter-flow-layout.h"
|
#include "clutter-flow-layout.h"
|
||||||
#include "clutter-gesture-action.h"
|
#include "clutter-gesture-action.h"
|
||||||
|
#include "clutter-grid-layout.h"
|
||||||
#include "clutter-group.h"
|
#include "clutter-group.h"
|
||||||
#include "clutter-image.h"
|
#include "clutter-image.h"
|
||||||
#include "clutter-input-device.h"
|
#include "clutter-input-device.h"
|
||||||
|
@ -745,6 +745,24 @@ clutter_grab_keyboard
|
|||||||
clutter_grab_pointer
|
clutter_grab_pointer
|
||||||
clutter_grab_pointer_for_device
|
clutter_grab_pointer_for_device
|
||||||
clutter_gravity_get_type
|
clutter_gravity_get_type
|
||||||
|
clutter_grid_layout_get_type
|
||||||
|
clutter_grid_layout_new
|
||||||
|
clutter_grid_layout_attach
|
||||||
|
clutter_grid_layout_attach_next_to
|
||||||
|
clutter_grid_layout_get_child_at
|
||||||
|
clutter_grid_layout_insert_row
|
||||||
|
clutter_grid_layout_insert_column
|
||||||
|
clutter_grid_layout_insert_next_to
|
||||||
|
clutter_grid_layout_set_orientation
|
||||||
|
clutter_grid_layout_get_orientation
|
||||||
|
clutter_grid_layout_set_column_spacing
|
||||||
|
clutter_grid_layout_get_column_spacing
|
||||||
|
clutter_grid_layout_set_row_spacing
|
||||||
|
clutter_grid_layout_get_row_spacing
|
||||||
|
clutter_grid_layout_set_column_homogeneous
|
||||||
|
clutter_grid_layout_get_column_homogeneous
|
||||||
|
clutter_grid_layout_set_row_homogeneous
|
||||||
|
clutter_grid_layout_get_row_homogeneous
|
||||||
clutter_group_get_nth_child
|
clutter_group_get_nth_child
|
||||||
clutter_group_get_n_children
|
clutter_group_get_n_children
|
||||||
clutter_group_get_type
|
clutter_group_get_type
|
||||||
|
@ -86,6 +86,7 @@
|
|||||||
<xi:include href="xml/clutter-flow-layout.xml"/>
|
<xi:include href="xml/clutter-flow-layout.xml"/>
|
||||||
<xi:include href="xml/clutter-box-layout.xml"/>
|
<xi:include href="xml/clutter-box-layout.xml"/>
|
||||||
<xi:include href="xml/clutter-table-layout.xml"/>
|
<xi:include href="xml/clutter-table-layout.xml"/>
|
||||||
|
<xi:include href="xml/clutter-grid-layout.xml"/>
|
||||||
</chapter>
|
</chapter>
|
||||||
|
|
||||||
<chapter>
|
<chapter>
|
||||||
|
@ -2292,6 +2292,45 @@ ClutterFlowLayoutPrivate
|
|||||||
clutter_flow_layout_get_type
|
clutter_flow_layout_get_type
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
|
<SECTION>
|
||||||
|
<FILE>clutter-grid-layout</FILE>
|
||||||
|
<TITLE>ClutterGridLayout</TITLE>
|
||||||
|
ClutterGridPosition
|
||||||
|
ClutterGridLayout
|
||||||
|
ClutterGridLayoutClass
|
||||||
|
clutter_grid_layout_new
|
||||||
|
clutter_grid_layout_attach
|
||||||
|
clutter_grid_layout_attach_next_to
|
||||||
|
clutter_grid_layout_get_child_at
|
||||||
|
clutter_grid_layout_insert_column
|
||||||
|
clutter_grid_layout_insert_row
|
||||||
|
clutter_grid_layout_insert_next_to
|
||||||
|
|
||||||
|
<SUBSECTION>
|
||||||
|
clutter_grid_layout_set_orientation
|
||||||
|
clutter_grid_layout_get_orientation
|
||||||
|
clutter_grid_layout_set_column_homogeneous
|
||||||
|
clutter_grid_layout_get_column_homogeneous
|
||||||
|
clutter_grid_layout_set_row_homogeneous
|
||||||
|
clutter_grid_layout_get_row_homogeneous
|
||||||
|
clutter_grid_layout_set_column_spacing
|
||||||
|
clutter_grid_layout_get_column_spacing
|
||||||
|
clutter_grid_layout_set_row_spacing
|
||||||
|
clutter_grid_layout_get_row_spacing
|
||||||
|
|
||||||
|
<SUBSECTION Standard>
|
||||||
|
CLUTTER_TYPE_GRID_LAYOUT
|
||||||
|
CLUTTER_GRID_LAYOUT
|
||||||
|
CLUTTER_GRID_LAYOUT_CLASS
|
||||||
|
CLUTTER_GRID_LAYOUT_GET_CLASS
|
||||||
|
CLUTTER_IS_GRID_LAYOUT
|
||||||
|
CLUTTER_IS_GRID_LAYOUT_CLASS
|
||||||
|
|
||||||
|
<SUBSECTION Private>
|
||||||
|
ClutterGridLayoutPrivate
|
||||||
|
clutter_grid_layout_get_type
|
||||||
|
</SECTION>
|
||||||
|
|
||||||
<SECTION>
|
<SECTION>
|
||||||
<TITLE>ClutterBoxLayout</TITLE>
|
<TITLE>ClutterBoxLayout</TITLE>
|
||||||
<FILE>clutter-box-layout</FILE>
|
<FILE>clutter-box-layout</FILE>
|
||||||
|
@ -40,6 +40,7 @@ clutter_effect_get_type
|
|||||||
clutter_fixed_layout_get_type
|
clutter_fixed_layout_get_type
|
||||||
clutter_flow_layout_get_type
|
clutter_flow_layout_get_type
|
||||||
clutter_gesture_action_get_type
|
clutter_gesture_action_get_type
|
||||||
|
clutter_grid_layout_get_type
|
||||||
clutter_group_get_type
|
clutter_group_get_type
|
||||||
clutter_input_device_get_type
|
clutter_input_device_get_type
|
||||||
clutter_interval_get_type
|
clutter_interval_get_type
|
||||||
|
Loading…
Reference in New Issue
Block a user