Port StTable to StThemeNode
Convert the StTable code from StStylable to StThemeNode. The :row-spacing and :col-spacing GObject properties are converted into spacing-rows and spacing-columns style properties. A new interactive test is added for StTable. https://bugzilla.gnome.org/show_bug.cgi?id=596811
This commit is contained in:
parent
af3ec56ca1
commit
5a42179a96
@ -48,17 +48,11 @@
|
|||||||
#include "st-private.h"
|
#include "st-private.h"
|
||||||
#include "st-table-child.h"
|
#include "st-table-child.h"
|
||||||
#include "st-table-private.h"
|
#include "st-table-private.h"
|
||||||
#include "st-stylable.h"
|
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
PROP_0,
|
PROP_0,
|
||||||
|
|
||||||
PROP_PADDING,
|
|
||||||
|
|
||||||
PROP_COL_SPACING,
|
|
||||||
PROP_ROW_SPACING,
|
|
||||||
|
|
||||||
PROP_HOMOGENEOUS,
|
PROP_HOMOGENEOUS,
|
||||||
|
|
||||||
PROP_ROW_COUNT,
|
PROP_ROW_COUNT,
|
||||||
@ -211,14 +205,6 @@ st_table_set_property (GObject *gobject,
|
|||||||
|
|
||||||
switch (prop_id)
|
switch (prop_id)
|
||||||
{
|
{
|
||||||
case PROP_COL_SPACING:
|
|
||||||
st_table_set_col_spacing (table, g_value_get_int (value));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PROP_ROW_SPACING:
|
|
||||||
st_table_set_row_spacing (table, g_value_get_int (value));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PROP_HOMOGENEOUS:
|
case PROP_HOMOGENEOUS:
|
||||||
if (table->priv->homogeneous != g_value_get_boolean (value))
|
if (table->priv->homogeneous != g_value_get_boolean (value))
|
||||||
{
|
{
|
||||||
@ -243,14 +229,6 @@ st_table_get_property (GObject *gobject,
|
|||||||
|
|
||||||
switch (prop_id)
|
switch (prop_id)
|
||||||
{
|
{
|
||||||
case PROP_COL_SPACING:
|
|
||||||
g_value_set_int (value, priv->col_spacing);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PROP_ROW_SPACING:
|
|
||||||
g_value_set_int (value, priv->row_spacing);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PROP_HOMOGENEOUS:
|
case PROP_HOMOGENEOUS:
|
||||||
g_value_set_boolean (value, priv->homogeneous);
|
g_value_set_boolean (value, priv->homogeneous);
|
||||||
break;
|
break;
|
||||||
@ -405,26 +383,21 @@ st_table_allocate_fill (ClutterActor *child,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
st_table_homogeneous_allocate (ClutterActor *self,
|
st_table_homogeneous_allocate (ClutterActor *self,
|
||||||
const ClutterActorBox *box,
|
const ClutterActorBox *content_box,
|
||||||
gboolean flags)
|
gboolean flags)
|
||||||
{
|
{
|
||||||
GSList *list;
|
GSList *list;
|
||||||
gfloat col_width, row_height;
|
gfloat col_width, row_height;
|
||||||
gint row_spacing, col_spacing;
|
gint row_spacing, col_spacing;
|
||||||
StTablePrivate *priv = ST_TABLE (self)->priv;
|
StTablePrivate *priv = ST_TABLE (self)->priv;
|
||||||
StPadding padding;
|
|
||||||
|
|
||||||
st_widget_get_padding (ST_WIDGET (self), &padding);
|
|
||||||
|
|
||||||
col_spacing = priv->col_spacing;
|
col_spacing = priv->col_spacing;
|
||||||
row_spacing = priv->row_spacing;
|
row_spacing = priv->row_spacing;
|
||||||
|
|
||||||
col_width = (box->x2 - box->x1
|
col_width = (content_box->x2 - content_box->x1
|
||||||
- padding.left - padding.right
|
|
||||||
- (col_spacing * (priv->n_cols - 1)))
|
- (col_spacing * (priv->n_cols - 1)))
|
||||||
/ priv->n_cols;
|
/ priv->n_cols;
|
||||||
row_height = (box->y2 - box->y1
|
row_height = (content_box->y2 - content_box->y1
|
||||||
- padding.top - padding.bottom
|
|
||||||
- (row_spacing * (priv->n_rows - 1)))
|
- (row_spacing * (priv->n_rows - 1)))
|
||||||
/ priv->n_rows;
|
/ priv->n_rows;
|
||||||
|
|
||||||
@ -454,10 +427,10 @@ st_table_homogeneous_allocate (ClutterActor *self,
|
|||||||
x_fill = meta->x_fill;
|
x_fill = meta->x_fill;
|
||||||
y_fill = meta->y_fill;
|
y_fill = meta->y_fill;
|
||||||
|
|
||||||
childbox.x1 = padding.left + (col_width + col_spacing) * col;
|
childbox.x1 = content_box->x1 + (col_width + col_spacing) * col;
|
||||||
childbox.x2 = childbox.x1 + (col_width * col_span) + (col_spacing * (col_span - 1));
|
childbox.x2 = childbox.x1 + (col_width * col_span) + (col_spacing * (col_span - 1));
|
||||||
|
|
||||||
childbox.y1 = padding.top + (row_height + row_spacing) * row;
|
childbox.y1 = content_box->y1 + (row_height + row_spacing) * row;
|
||||||
childbox.y2 = childbox.y1 + (row_height * row_span) + (row_spacing * (row_span - 1));
|
childbox.y2 = childbox.y1 + (row_height * row_span) + (row_spacing * (row_span - 1));
|
||||||
|
|
||||||
st_table_allocate_fill (child, &childbox, x_align, y_align, x_fill, y_fill);
|
st_table_allocate_fill (child, &childbox, x_align, y_align, x_fill, y_fill);
|
||||||
@ -478,7 +451,6 @@ st_table_calculate_col_widths (StTable *table,
|
|||||||
gint extra_col_width, n_expanded_cols = 0, expanded_cols = 0;
|
gint extra_col_width, n_expanded_cols = 0, expanded_cols = 0;
|
||||||
gint *pref_widths, *min_widths;
|
gint *pref_widths, *min_widths;
|
||||||
GSList *list;
|
GSList *list;
|
||||||
StPadding padding;
|
|
||||||
|
|
||||||
g_array_set_size (priv->is_expand_col, 0);
|
g_array_set_size (priv->is_expand_col, 0);
|
||||||
g_array_set_size (priv->is_expand_col, priv->n_cols);
|
g_array_set_size (priv->is_expand_col, priv->n_cols);
|
||||||
@ -492,12 +464,6 @@ st_table_calculate_col_widths (StTable *table,
|
|||||||
g_array_set_size (priv->min_widths, priv->n_cols);
|
g_array_set_size (priv->min_widths, priv->n_cols);
|
||||||
min_widths = (gint *) priv->min_widths->data;
|
min_widths = (gint *) priv->min_widths->data;
|
||||||
|
|
||||||
|
|
||||||
/* take off the padding values to calculate the allocatable width */
|
|
||||||
st_widget_get_padding (ST_WIDGET (table), &padding);
|
|
||||||
|
|
||||||
for_width -= (int)(padding.left + padding.right);
|
|
||||||
|
|
||||||
for (list = priv->children; list; list = g_slist_next (list))
|
for (list = priv->children; list; list = g_slist_next (list))
|
||||||
{
|
{
|
||||||
gint row, col;
|
gint row, col;
|
||||||
@ -591,12 +557,6 @@ st_table_calculate_row_heights (StTable *table,
|
|||||||
gint i, total_min_height;
|
gint i, total_min_height;
|
||||||
gint expanded_rows = 0;
|
gint expanded_rows = 0;
|
||||||
gint n_expanded_rows = 0;
|
gint n_expanded_rows = 0;
|
||||||
StPadding padding;
|
|
||||||
|
|
||||||
st_widget_get_padding (ST_WIDGET (table), &padding);
|
|
||||||
|
|
||||||
/* take padding off available height */
|
|
||||||
for_height -= (int)(padding.top + padding.bottom);
|
|
||||||
|
|
||||||
g_array_set_size (priv->row_heights, 0);
|
g_array_set_size (priv->row_heights, 0);
|
||||||
g_array_set_size (priv->row_heights, priv->n_rows);
|
g_array_set_size (priv->row_heights, priv->n_rows);
|
||||||
@ -762,40 +722,29 @@ st_table_calculate_row_heights (StTable *table,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
st_table_preferred_allocate (ClutterActor *self,
|
st_table_preferred_allocate (ClutterActor *self,
|
||||||
const ClutterActorBox *box,
|
const ClutterActorBox *content_box,
|
||||||
gboolean flags)
|
gboolean flags)
|
||||||
{
|
{
|
||||||
GSList *list;
|
GSList *list;
|
||||||
gint row_spacing, col_spacing;
|
gint row_spacing, col_spacing;
|
||||||
gint i, table_width, table_height;
|
gint i;
|
||||||
gint *col_widths, *row_heights;
|
gint *col_widths, *row_heights;
|
||||||
StTable *table;
|
StTable *table;
|
||||||
StTablePrivate *priv;
|
StTablePrivate *priv;
|
||||||
StPadding padding;
|
|
||||||
|
|
||||||
table = ST_TABLE (self);
|
table = ST_TABLE (self);
|
||||||
priv = ST_TABLE (self)->priv;
|
priv = ST_TABLE (self)->priv;
|
||||||
|
|
||||||
st_widget_get_padding (ST_WIDGET (self), &padding);
|
|
||||||
|
|
||||||
col_spacing = (priv->col_spacing);
|
col_spacing = (priv->col_spacing);
|
||||||
row_spacing = (priv->row_spacing);
|
row_spacing = (priv->row_spacing);
|
||||||
|
|
||||||
|
|
||||||
table_height = (int)(box->y2 - box->y1
|
|
||||||
- padding.top
|
|
||||||
- padding.bottom);
|
|
||||||
table_width = (int)(box->x2 - box->x1
|
|
||||||
- padding.right
|
|
||||||
- padding.left);
|
|
||||||
|
|
||||||
col_widths =
|
col_widths =
|
||||||
st_table_calculate_col_widths (table,
|
st_table_calculate_col_widths (table,
|
||||||
(int)(box->x2 - box->x1));
|
(int) (content_box->x2 - content_box->x1));
|
||||||
|
|
||||||
row_heights =
|
row_heights =
|
||||||
st_table_calculate_row_heights (table,
|
st_table_calculate_row_heights (table,
|
||||||
(int)(box->y2 - box->y1),
|
(int) (content_box->y2 - content_box->y1),
|
||||||
col_widths);
|
col_widths);
|
||||||
|
|
||||||
|
|
||||||
@ -865,13 +814,13 @@ st_table_preferred_allocate (ClutterActor *self,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* calculate child x */
|
/* calculate child x */
|
||||||
child_x = (int) padding.left
|
child_x = (int) content_box->x1
|
||||||
+ col_spacing * col;
|
+ col_spacing * col;
|
||||||
for (i = 0; i < col; i++)
|
for (i = 0; i < col; i++)
|
||||||
child_x += col_widths[i];
|
child_x += col_widths[i];
|
||||||
|
|
||||||
/* calculate child y */
|
/* calculate child y */
|
||||||
child_y = (int) padding.top
|
child_y = (int) content_box->y1
|
||||||
+ row_spacing * row;
|
+ row_spacing * row;
|
||||||
for (i = 0; i < row; i++)
|
for (i = 0; i < row; i++)
|
||||||
child_y += row_heights[i];
|
child_y += row_heights[i];
|
||||||
@ -896,6 +845,8 @@ st_table_allocate (ClutterActor *self,
|
|||||||
ClutterAllocationFlags flags)
|
ClutterAllocationFlags flags)
|
||||||
{
|
{
|
||||||
StTablePrivate *priv = ST_TABLE (self)->priv;
|
StTablePrivate *priv = ST_TABLE (self)->priv;
|
||||||
|
StThemeNode *theme_node = st_widget_get_theme_node (ST_WIDGET (self));
|
||||||
|
ClutterActorBox content_box;
|
||||||
|
|
||||||
CLUTTER_ACTOR_CLASS (st_table_parent_class)->allocate (self, box, flags);
|
CLUTTER_ACTOR_CLASS (st_table_parent_class)->allocate (self, box, flags);
|
||||||
|
|
||||||
@ -904,10 +855,12 @@ st_table_allocate (ClutterActor *self,
|
|||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
st_theme_node_get_content_box (theme_node, box, &content_box);
|
||||||
|
|
||||||
if (priv->homogeneous)
|
if (priv->homogeneous)
|
||||||
st_table_homogeneous_allocate (self, box, flags);
|
st_table_homogeneous_allocate (self, &content_box, flags);
|
||||||
else
|
else
|
||||||
st_table_preferred_allocate (self, box, flags);
|
st_table_preferred_allocate (self, &content_box, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -919,11 +872,9 @@ st_table_get_preferred_width (ClutterActor *self,
|
|||||||
gint *min_widths, *pref_widths;
|
gint *min_widths, *pref_widths;
|
||||||
gfloat total_min_width, total_pref_width;
|
gfloat total_min_width, total_pref_width;
|
||||||
StTablePrivate *priv = ST_TABLE (self)->priv;
|
StTablePrivate *priv = ST_TABLE (self)->priv;
|
||||||
|
StThemeNode *theme_node = st_widget_get_theme_node (ST_WIDGET (self));
|
||||||
GSList *list;
|
GSList *list;
|
||||||
gint i;
|
gint i;
|
||||||
StPadding padding;
|
|
||||||
|
|
||||||
st_widget_get_padding (ST_WIDGET (self), &padding);
|
|
||||||
|
|
||||||
if (priv->n_cols < 1)
|
if (priv->n_cols < 1)
|
||||||
{
|
{
|
||||||
@ -970,10 +921,7 @@ st_table_get_preferred_width (ClutterActor *self,
|
|||||||
pref_widths[col] = w_pref;
|
pref_widths[col] = w_pref;
|
||||||
}
|
}
|
||||||
|
|
||||||
total_min_width = padding.left
|
total_min_width = (priv->n_cols - 1) * (float) priv->col_spacing;
|
||||||
+ padding.right
|
|
||||||
+ (priv->n_cols - 1)
|
|
||||||
* (float) priv->col_spacing;
|
|
||||||
total_pref_width = total_min_width;
|
total_pref_width = total_min_width;
|
||||||
|
|
||||||
for (i = 0; i < priv->n_cols; i++)
|
for (i = 0; i < priv->n_cols; i++)
|
||||||
@ -986,6 +934,8 @@ st_table_get_preferred_width (ClutterActor *self,
|
|||||||
*min_width_p = total_min_width;
|
*min_width_p = total_min_width;
|
||||||
if (natural_width_p)
|
if (natural_width_p)
|
||||||
*natural_width_p = total_pref_width;
|
*natural_width_p = total_pref_width;
|
||||||
|
|
||||||
|
st_theme_node_adjust_preferred_width (theme_node, min_width_p, natural_width_p);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -997,10 +947,10 @@ st_table_get_preferred_height (ClutterActor *self,
|
|||||||
gint *min_heights, *pref_heights;
|
gint *min_heights, *pref_heights;
|
||||||
gfloat total_min_height, total_pref_height;
|
gfloat total_min_height, total_pref_height;
|
||||||
StTablePrivate *priv = ST_TABLE (self)->priv;
|
StTablePrivate *priv = ST_TABLE (self)->priv;
|
||||||
|
StThemeNode *theme_node = st_widget_get_theme_node (ST_WIDGET (self));
|
||||||
GSList *list;
|
GSList *list;
|
||||||
gint i;
|
gint i;
|
||||||
gint *min_widths;
|
gint *min_widths;
|
||||||
StPadding padding;
|
|
||||||
|
|
||||||
if (priv->n_rows < 1)
|
if (priv->n_rows < 1)
|
||||||
{
|
{
|
||||||
@ -1009,6 +959,8 @@ st_table_get_preferred_height (ClutterActor *self,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
st_theme_node_adjust_for_width (theme_node, &for_width);
|
||||||
|
|
||||||
/* Setting size to zero and then what we want it to be causes a clear if
|
/* Setting size to zero and then what we want it to be causes a clear if
|
||||||
* clear flag is set (which it should be.)
|
* clear flag is set (which it should be.)
|
||||||
*/
|
*/
|
||||||
@ -1057,12 +1009,8 @@ st_table_get_preferred_height (ClutterActor *self,
|
|||||||
pref_heights[row] = pref;
|
pref_heights[row] = pref;
|
||||||
}
|
}
|
||||||
|
|
||||||
st_widget_get_padding (ST_WIDGET (self), &padding);
|
/* start off with row spacing */
|
||||||
|
total_min_height = (priv->n_rows - 1) * (float) (priv->row_spacing);
|
||||||
/* start off with padding plus row spacing */
|
|
||||||
total_min_height = padding.top + padding.bottom + (priv->n_rows - 1) *
|
|
||||||
(float)(priv->row_spacing);
|
|
||||||
|
|
||||||
total_pref_height = total_min_height;
|
total_pref_height = total_min_height;
|
||||||
|
|
||||||
for (i = 0; i < priv->n_rows; i++)
|
for (i = 0; i < priv->n_rows; i++)
|
||||||
@ -1075,6 +1023,8 @@ st_table_get_preferred_height (ClutterActor *self,
|
|||||||
*min_height_p = total_min_height;
|
*min_height_p = total_min_height;
|
||||||
if (natural_height_p)
|
if (natural_height_p)
|
||||||
*natural_height_p = total_pref_height;
|
*natural_height_p = total_pref_height;
|
||||||
|
|
||||||
|
st_theme_node_adjust_preferred_height (theme_node, min_height_p, natural_height_p);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -1135,6 +1085,27 @@ st_table_hide_all (ClutterActor *table)
|
|||||||
clutter_actor_hide_all (CLUTTER_ACTOR (l->data));
|
clutter_actor_hide_all (CLUTTER_ACTOR (l->data));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
st_table_style_changed (StWidget *self)
|
||||||
|
{
|
||||||
|
StTablePrivate *priv = ST_TABLE (self)->priv;
|
||||||
|
StThemeNode *theme_node = st_widget_get_theme_node (self);
|
||||||
|
int old_row_spacing = priv->row_spacing;
|
||||||
|
int old_col_spacing = priv->col_spacing;
|
||||||
|
double row_spacing = 0., col_spacing = 0.;
|
||||||
|
|
||||||
|
st_theme_node_get_length (theme_node, "spacing-rows", FALSE, &row_spacing);
|
||||||
|
priv->row_spacing = (int)(row_spacing + 0.5);
|
||||||
|
st_theme_node_get_length (theme_node, "spacing-columns", FALSE, &col_spacing);
|
||||||
|
priv->col_spacing = (int)(col_spacing + 0.5);
|
||||||
|
|
||||||
|
if (priv->row_spacing != old_row_spacing ||
|
||||||
|
priv->col_spacing != old_col_spacing)
|
||||||
|
clutter_actor_queue_relayout (CLUTTER_ACTOR (self));
|
||||||
|
|
||||||
|
ST_WIDGET_CLASS (st_table_parent_class)->style_changed (self);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
st_table_class_init (StTableClass *klass)
|
st_table_class_init (StTableClass *klass)
|
||||||
{
|
{
|
||||||
@ -1142,7 +1113,7 @@ st_table_class_init (StTableClass *klass)
|
|||||||
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
||||||
ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
|
ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
|
||||||
|
|
||||||
/* StWidgetClass *st_widget_class = ST_WIDGET_CLASS (klass); */
|
StWidgetClass *widget_class = ST_WIDGET_CLASS (klass);
|
||||||
|
|
||||||
g_type_class_add_private (klass, sizeof (StTablePrivate));
|
g_type_class_add_private (klass, sizeof (StTablePrivate));
|
||||||
|
|
||||||
@ -1159,6 +1130,8 @@ st_table_class_init (StTableClass *klass)
|
|||||||
actor_class->show_all = st_table_show_all;
|
actor_class->show_all = st_table_show_all;
|
||||||
actor_class->hide_all = st_table_hide_all;
|
actor_class->hide_all = st_table_hide_all;
|
||||||
|
|
||||||
|
widget_class->style_changed = st_table_style_changed;
|
||||||
|
|
||||||
pspec = g_param_spec_boolean ("homogeneous",
|
pspec = g_param_spec_boolean ("homogeneous",
|
||||||
"Homogeneous",
|
"Homogeneous",
|
||||||
"Homogeneous rows and columns",
|
"Homogeneous rows and columns",
|
||||||
@ -1168,24 +1141,6 @@ st_table_class_init (StTableClass *klass)
|
|||||||
PROP_HOMOGENEOUS,
|
PROP_HOMOGENEOUS,
|
||||||
pspec);
|
pspec);
|
||||||
|
|
||||||
pspec = g_param_spec_int ("col-spacing",
|
|
||||||
"Column Spacing",
|
|
||||||
"Spacing between columns",
|
|
||||||
0, G_MAXINT, 0,
|
|
||||||
ST_PARAM_READWRITE);
|
|
||||||
g_object_class_install_property (gobject_class,
|
|
||||||
PROP_COL_SPACING,
|
|
||||||
pspec);
|
|
||||||
|
|
||||||
pspec = g_param_spec_int ("row-spacing",
|
|
||||||
"Row Spacing",
|
|
||||||
"Spacing between row",
|
|
||||||
0, G_MAXINT, 0,
|
|
||||||
ST_PARAM_READWRITE);
|
|
||||||
g_object_class_install_property (gobject_class,
|
|
||||||
PROP_ROW_SPACING,
|
|
||||||
pspec);
|
|
||||||
|
|
||||||
pspec = g_param_spec_int ("row-count",
|
pspec = g_param_spec_int ("row-count",
|
||||||
"Row Count",
|
"Row Count",
|
||||||
"The number of rows in the table",
|
"The number of rows in the table",
|
||||||
@ -1269,86 +1224,6 @@ st_table_new (void)
|
|||||||
return g_object_new (ST_TYPE_TABLE, NULL);
|
return g_object_new (ST_TYPE_TABLE, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* st_table_set_col_spacing
|
|
||||||
* @table: a #StTable
|
|
||||||
* @spacing: spacing in pixels
|
|
||||||
*
|
|
||||||
* Sets the amount of spacing between columns.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
st_table_set_col_spacing (StTable *table,
|
|
||||||
gint spacing)
|
|
||||||
{
|
|
||||||
StTablePrivate *priv;
|
|
||||||
|
|
||||||
g_return_if_fail (ST_IS_TABLE (table));
|
|
||||||
g_return_if_fail (spacing >= 0);
|
|
||||||
|
|
||||||
priv = ST_TABLE (table)->priv;
|
|
||||||
|
|
||||||
priv->col_spacing = spacing;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* st_table_set_row_spacing
|
|
||||||
* @table: a #StTable
|
|
||||||
* @spacing: spacing in pixels
|
|
||||||
*
|
|
||||||
* Sets the amount of spacing between rows.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
st_table_set_row_spacing (StTable *table,
|
|
||||||
gint spacing)
|
|
||||||
{
|
|
||||||
StTablePrivate *priv;
|
|
||||||
|
|
||||||
g_return_if_fail (ST_IS_TABLE (table));
|
|
||||||
g_return_if_fail (spacing >= 0);
|
|
||||||
|
|
||||||
priv = ST_TABLE (table)->priv;
|
|
||||||
|
|
||||||
priv->row_spacing = spacing;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* st_table_get_row_spacing
|
|
||||||
* @table: a #StTable
|
|
||||||
*
|
|
||||||
* Gets the amount of spacing between rows.
|
|
||||||
*
|
|
||||||
* Returns: the spacing between rows in device units
|
|
||||||
*/
|
|
||||||
gint
|
|
||||||
st_table_get_row_spacing (StTable *table)
|
|
||||||
{
|
|
||||||
StTablePrivate *priv;
|
|
||||||
|
|
||||||
g_return_val_if_fail (ST_IS_TABLE (table), -1);
|
|
||||||
priv = ST_TABLE (table)->priv;
|
|
||||||
|
|
||||||
return priv->row_spacing;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* st_table_get_col_spacing
|
|
||||||
* @table: a #StTable
|
|
||||||
*
|
|
||||||
* Gets the amount of spacing between columns.
|
|
||||||
*
|
|
||||||
* Returns: the spacing between columns in device units
|
|
||||||
*/
|
|
||||||
gint
|
|
||||||
st_table_get_col_spacing (StTable *table)
|
|
||||||
{
|
|
||||||
StTablePrivate *priv;
|
|
||||||
|
|
||||||
g_return_val_if_fail (ST_IS_TABLE (table), -1);
|
|
||||||
priv = ST_TABLE (table)->priv;
|
|
||||||
|
|
||||||
return priv->col_spacing;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* st_table_get_row_count:
|
* st_table_get_row_count:
|
||||||
* @table: A #StTable
|
* @table: A #StTable
|
||||||
|
@ -87,13 +87,6 @@ GType st_table_get_type (void) G_GNUC_CONST;
|
|||||||
|
|
||||||
StWidget* st_table_new (void);
|
StWidget* st_table_new (void);
|
||||||
|
|
||||||
void st_table_set_col_spacing (StTable *table,
|
|
||||||
gint spacing);
|
|
||||||
void st_table_set_row_spacing (StTable *table,
|
|
||||||
gint spacing);
|
|
||||||
gint st_table_get_col_spacing (StTable *table);
|
|
||||||
gint st_table_get_row_spacing (StTable *table);
|
|
||||||
|
|
||||||
gint st_table_get_row_count (StTable *table);
|
gint st_table_get_row_count (StTable *table);
|
||||||
gint st_table_get_column_count (StTable *table);
|
gint st_table_get_column_count (StTable *table);
|
||||||
|
|
||||||
|
56
tests/interactive/table.js
Normal file
56
tests/interactive/table.js
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||||
|
|
||||||
|
const Clutter = imports.gi.Clutter;
|
||||||
|
const St = imports.gi.St;
|
||||||
|
|
||||||
|
const UI = imports.testcommon.ui;
|
||||||
|
|
||||||
|
UI.init();
|
||||||
|
let stage = Clutter.Stage.get_default();
|
||||||
|
stage.width = stage.height = 600;
|
||||||
|
|
||||||
|
let vbox = new St.BoxLayout({ vertical: true,
|
||||||
|
width: stage.width,
|
||||||
|
height: stage.height,
|
||||||
|
style: 'padding: 10px; '
|
||||||
|
+ 'spacing: 10px;'
|
||||||
|
+ 'font: 15px sans-serif;' });
|
||||||
|
stage.add_actor(vbox);
|
||||||
|
|
||||||
|
function L(text, color) {
|
||||||
|
return new St.Label({ text: text,
|
||||||
|
style: "background: " + color + ";"
|
||||||
|
+ "border: 1px solid rgba(0,0,0,0.5);"
|
||||||
|
+ "padding: 1em;" });
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
let table = new St.Table({ style: "border: 10px solid #888888;"
|
||||||
|
+ "padding: 10px;"
|
||||||
|
+ "spacing-rows: 5px;"
|
||||||
|
+ "spacing-columns: 15px;" });
|
||||||
|
vbox.add(table, { expand: true });
|
||||||
|
|
||||||
|
table.add(L("1", "#ff0000"),
|
||||||
|
{ row: 0, col: 0, col_span: 3 });
|
||||||
|
table.add(L("2", "#00ff00"),
|
||||||
|
{ row: 1, col: 0, row_span: 2 });
|
||||||
|
table.add(L("3", "#0000ff"),
|
||||||
|
{ row: 1, col: 1,
|
||||||
|
x_expand: 0 });
|
||||||
|
table.add(L("4", "#ffff00"),
|
||||||
|
{ row: 1, col: 2,
|
||||||
|
y_expand: 0, y_fill: 0
|
||||||
|
});
|
||||||
|
table.add(L("5", "#ff00ff"),
|
||||||
|
{ row: 2, col: 1, x_expand: 0 });
|
||||||
|
table.add(L("6", "#00ffff"),
|
||||||
|
{ row: 2, col: 2,
|
||||||
|
x_expand: 0, x_fill: 0, x_align: 1.0,
|
||||||
|
y_expand: 0, y_fill: 0, y_align: 1.0 });
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
stage.show();
|
||||||
|
Clutter.main();
|
Loading…
Reference in New Issue
Block a user