From 9800eb0639c0e536b64cdab90de01eb3451eed00 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Wed, 28 Nov 2007 18:04:24 +0000 Subject: [PATCH] 2007-11-28 Emmanuele Bassi Add more introspection capabilities to the base model class * clutter/clutter-model.h: * clutter/clutter-model.c: (clutter_model_finalize): Do no leak the column types array. (clutter_model_get_n_columns): Function for getting the number of columns inside a model. (clutter_model_set_names): Add API for setting the names of the columns. (clutter_model_get_column_name), (_model_get_column_type): Add API for getting each column's name and the default implementation for ClutterModel. (clutter_model_get_column_type), (_model_get_iter_at_row): Add API for getting each column's type and the default implementation for ClutterModel. * clutter.symbols: Add ClutterModel and ClutterModelIter symbols, and keep the symbols file sorted. --- ChangeLog | 41 +- clutter.symbols | 879 +++++++++++++++++++++------------------- clutter/clutter-model.c | 263 +++++++++--- clutter/clutter-model.h | 100 +++-- 4 files changed, 749 insertions(+), 534 deletions(-) diff --git a/ChangeLog b/ChangeLog index fdc5ea0f5..9182c2a10 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,32 @@ +2007-11-28 Emmanuele Bassi + + Add more introspection capabilities to the base model class + + * clutter/clutter-model.h: + * clutter/clutter-model.c: + (clutter_model_finalize): Do no leak the column types array. + + (clutter_model_get_n_columns): Function for getting the number + of columns inside a model. + + (clutter_model_set_names): Add API for setting the names of the + columns. + + (clutter_model_get_column_name), + (_model_get_column_type): Add API for getting each column's name + and the default implementation for ClutterModel. + + (clutter_model_get_column_type), + (_model_get_iter_at_row): Add API for getting each column's type + and the default implementation for ClutterModel. + + * clutter.symbols: Add ClutterModel and ClutterModelIter symbols, + and keep the symbols file sorted. + 2007-11-28 Tomas Frydrych - * clutter/clutter-actor.c: - * clutter/clutter-actor.h: + * clutter/clutter-actor.c: + * clutter/clutter-actor.h: (clutter_actor_set_positionu): (clutter_actor_set_sizeu): (clutter_actor_get_widthu): @@ -14,14 +39,14 @@ (clutter_actor_set_yu): Expanded ClutterActor API with new ClutterUnit-base functions. - * clutter/clutter-stage.c: - * clutter/clutter-stage.h: + * clutter/clutter-stage.c: + * clutter/clutter-stage.h: (clutter_stage_get_resolution): (clutter_stage_get_resolutionx): New function to query stage resolution (floating and fixed point versions). - * clutter/clutter-units.h: + * clutter/clutter-units.h: (CLUTTER_UNITS_FROM_STAGE_WIDTH_PERCENTAGE): (CLUTTER_UNITS_FROM_STAGE_HEIGHT_PERCENTAGE): (CLUTTER_UNITS_FROM_PARENT_WIDTH_PERCENTAGE): @@ -34,11 +59,11 @@ * clutter.symbols: Added: - ClutterActor anchor_point functions, - clutter_stage_get_resolution functions. + ClutterActor anchor_point functions, + clutter_stage_get_resolution functions. Removed: - clutter_actor_scale_with_gravity functions. + clutter_actor_scale_with_gravity functions. 2007-11-28 Emmanuele Bassi diff --git a/clutter.symbols b/clutter.symbols index 433bbc3e9..d861321de 100644 --- a/clutter.symbols +++ b/clutter.symbols @@ -1,551 +1,586 @@ +clutter_actor_apply_transform_to_point clutter_actor_box_get_type -clutter_actor_get_type -clutter_actor_show -clutter_actor_show_all -clutter_actor_hide -clutter_actor_hide_all -clutter_actor_realize -clutter_actor_unrealize -clutter_actor_paint -clutter_actor_pick -clutter_actor_queue_redraw clutter_actor_destroy -clutter_actor_request_coords -clutter_actor_query_coords -clutter_actor_set_geometry -clutter_actor_get_geometry -clutter_actor_get_coords -clutter_actor_set_size -clutter_actor_set_sizeu -clutter_actor_set_position -clutter_actor_set_positionu +clutter_actor_flags_get_type clutter_actor_get_abs_position -clutter_actor_get_width +clutter_actor_get_abs_size +clutter_actor_get_anchor_point +clutter_actor_get_anchor_pointu +clutter_actor_get_clip +clutter_actor_get_coords +clutter_actor_get_depth +clutter_actor_get_geometry clutter_actor_get_height -clutter_actor_set_width -clutter_actor_set_height -clutter_actor_get_x -clutter_actor_set_x -clutter_actor_get_y -clutter_actor_set_y -clutter_actor_get_widthu clutter_actor_get_heightu -clutter_actor_set_widthu -clutter_actor_set_heightu -clutter_actor_get_xu -clutter_actor_set_xu -clutter_actor_get_yu -clutter_actor_set_yu -clutter_actor_set_rotation -clutter_actor_set_rotationx +clutter_actor_get_id +clutter_actor_get_name +clutter_actor_get_opacity +clutter_actor_get_parent +clutter_actor_get_reactive clutter_actor_get_rotation clutter_actor_get_rotationx -clutter_actor_set_opacity -clutter_actor_get_opacity -clutter_actor_set_name -clutter_actor_get_name -clutter_actor_get_id -clutter_actor_set_clip -clutter_actor_remove_clip -clutter_actor_has_clip -clutter_actor_get_clip -clutter_actor_set_parent -clutter_actor_get_parent -clutter_actor_reparent -clutter_actor_unparent -clutter_actor_raise -clutter_actor_lower -clutter_actor_raise_top -clutter_actor_lower_bottom -clutter_actor_set_depth -clutter_actor_get_depth -clutter_actor_set_scalex -clutter_actor_set_scale -clutter_actor_get_scalex clutter_actor_get_scale -clutter_actor_set_anchor_point -clutter_actor_get_anchor_point -clutter_actor_set_anchor_pointu -clutter_actor_get_anchor_pointu -clutter_actor_set_anchor_point_from_gravity -clutter_actor_get_abs_size +clutter_actor_get_scalex clutter_actor_get_size -clutter_actor_move_by +clutter_actor_get_type clutter_actor_get_vertices -clutter_actor_apply_transform_to_point +clutter_actor_get_width +clutter_actor_get_widthu +clutter_actor_get_x +clutter_actor_get_xu +clutter_actor_get_y +clutter_actor_get_yu +clutter_actor_has_clip +clutter_actor_hide +clutter_actor_hide_all +clutter_actor_lower +clutter_actor_lower_bottom +clutter_actor_move_by +clutter_actor_paint +clutter_actor_pick +clutter_actor_query_coords +clutter_actor_queue_redraw +clutter_actor_raise +clutter_actor_raise_top +clutter_actor_realize +clutter_actor_remove_clip +clutter_actor_reparent +clutter_actor_request_coords +clutter_actor_set_anchor_point +clutter_actor_set_anchor_point_from_gravity +clutter_actor_set_anchor_pointu +clutter_actor_set_clip +clutter_actor_set_depth +clutter_actor_set_geometry +clutter_actor_set_height +clutter_actor_set_heightu +clutter_actor_set_name +clutter_actor_set_opacity +clutter_actor_set_parent +clutter_actor_set_position +clutter_actor_set_positionu clutter_actor_set_reactive -clutter_actor_get_reactive -clutter_get_actor_by_id +clutter_actor_set_rotation +clutter_actor_set_rotationx +clutter_actor_set_scale +clutter_actor_set_scalex +clutter_actor_set_size +clutter_actor_set_sizeu +clutter_actor_set_width +clutter_actor_set_widthu +clutter_actor_set_x +clutter_actor_set_xu +clutter_actor_set_y +clutter_actor_set_yu +clutter_actor_show +clutter_actor_show_all +clutter_actor_unparent +clutter_actor_unrealize +clutter_alpha_get_alpha +clutter_alpha_get_timeline clutter_alpha_get_type clutter_alpha_new clutter_alpha_new_full -clutter_alpha_get_alpha clutter_alpha_set_func clutter_alpha_set_timeline -clutter_alpha_get_timeline -clutter_ramp_inc_func -clutter_ramp_dec_func -clutter_ramp_func -clutter_sine_func -clutter_sine_inc_func -clutter_sine_dec_func -clutter_sine_half_func -clutter_square_func -clutter_smoothstep_inc_func -clutter_smoothstep_dec_func -clutter_exp_inc_func -clutter_exp_dec_func -clutter_backend_get_type -clutter_get_default_backend -clutter_backend_set_resolution -clutter_backend_get_resolution -clutter_backend_set_double_click_time -clutter_backend_get_double_click_time -clutter_backend_set_double_click_distance clutter_backend_get_double_click_distance -clutter_behaviour_bspline_get_type -clutter_behaviour_bspline_new -clutter_behaviour_bspline_append_knot -clutter_behaviour_bspline_append -clutter_behaviour_bspline_truncate -clutter_behaviour_bspline_join -clutter_behaviour_bspline_split -clutter_behaviour_bspline_clear +clutter_backend_get_double_click_time +clutter_backend_get_resolution +clutter_backend_get_type +clutter_backend_set_double_click_distance +clutter_backend_set_double_click_time +clutter_backend_set_resolution +clutter_base_init +clutter_behaviour_actors_foreach +clutter_behaviour_apply clutter_behaviour_bspline_adjust -clutter_behaviour_bspline_set_origin +clutter_behaviour_bspline_append +clutter_behaviour_bspline_append_knot +clutter_behaviour_bspline_clear clutter_behaviour_bspline_get_origin +clutter_behaviour_bspline_get_type +clutter_behaviour_bspline_join +clutter_behaviour_bspline_new +clutter_behaviour_bspline_set_origin +clutter_behaviour_bspline_split +clutter_behaviour_bspline_truncate clutter_behaviour_depth_get_type clutter_behaviour_depth_new -clutter_behaviour_ellipse_get_type -clutter_behaviour_ellipse_new -clutter_behaviour_ellipse_newx -clutter_behaviour_ellipse_set_center -clutter_behaviour_ellipse_get_center -clutter_behaviour_ellipse_set_width -clutter_behaviour_ellipse_get_width -clutter_behaviour_ellipse_set_height -clutter_behaviour_ellipse_get_height -clutter_behaviour_ellipse_set_angle_begin -clutter_behaviour_ellipse_set_angle_beginx -clutter_behaviour_ellipse_get_angle_beginx clutter_behaviour_ellipse_get_angle_begin -clutter_behaviour_ellipse_set_angle_endx -clutter_behaviour_ellipse_set_angle_end -clutter_behaviour_ellipse_get_angle_endx +clutter_behaviour_ellipse_get_angle_beginx clutter_behaviour_ellipse_get_angle_end -clutter_behaviour_ellipse_set_angle_tiltx -clutter_behaviour_ellipse_set_angle_tilt -clutter_behaviour_ellipse_get_angle_tiltx +clutter_behaviour_ellipse_get_angle_endx clutter_behaviour_ellipse_get_angle_tilt -clutter_behaviour_ellipse_set_tilt -clutter_behaviour_ellipse_set_tiltx +clutter_behaviour_ellipse_get_angle_tiltx +clutter_behaviour_ellipse_get_center +clutter_behaviour_ellipse_get_direction +clutter_behaviour_ellipse_get_height clutter_behaviour_ellipse_get_tilt clutter_behaviour_ellipse_get_tiltx -clutter_behaviour_ellipse_get_direction +clutter_behaviour_ellipse_get_type +clutter_behaviour_ellipse_get_width +clutter_behaviour_ellipse_new +clutter_behaviour_ellipse_newx +clutter_behaviour_ellipse_set_angle_begin +clutter_behaviour_ellipse_set_angle_beginx +clutter_behaviour_ellipse_set_angle_end +clutter_behaviour_ellipse_set_angle_endx +clutter_behaviour_ellipse_set_angle_tilt +clutter_behaviour_ellipse_set_angle_tiltx +clutter_behaviour_ellipse_set_center clutter_behaviour_ellipse_set_direction +clutter_behaviour_ellipse_set_height +clutter_behaviour_ellipse_set_tilt +clutter_behaviour_ellipse_set_tiltx +clutter_behaviour_ellipse_set_width +clutter_behaviour_get_actors +clutter_behaviour_get_alpha +clutter_behaviour_get_n_actors +clutter_behaviour_get_nth_actor +clutter_behaviour_get_type +clutter_behaviour_is_applied clutter_behaviour_opacity_get_type clutter_behaviour_opacity_new -clutter_behaviour_path_get_type -clutter_behaviour_path_new -clutter_behaviour_path_get_knots clutter_behaviour_path_append_knot clutter_behaviour_path_append_knots -clutter_behaviour_path_insert_knot -clutter_behaviour_path_remove_knot clutter_behaviour_path_clear +clutter_behaviour_path_get_knots +clutter_behaviour_path_get_type +clutter_behaviour_path_insert_knot +clutter_behaviour_path_new +clutter_behaviour_path_remove_knot +clutter_behaviour_remove +clutter_behaviour_remove_all +clutter_behaviour_rotate_get_axis +clutter_behaviour_rotate_get_bounds +clutter_behaviour_rotate_get_boundsx +clutter_behaviour_rotate_get_center +clutter_behaviour_rotate_get_direction clutter_behaviour_rotate_get_type clutter_behaviour_rotate_new clutter_behaviour_rotate_newx -clutter_behaviour_rotate_get_center -clutter_behaviour_rotate_set_center -clutter_behaviour_rotate_get_axis clutter_behaviour_rotate_set_axis -clutter_behaviour_rotate_get_direction -clutter_behaviour_rotate_set_direction -clutter_behaviour_rotate_get_bounds clutter_behaviour_rotate_set_bounds -clutter_behaviour_rotate_get_boundsx clutter_behaviour_rotate_set_boundsx -clutter_behaviour_scale_get_type -clutter_behaviour_scale_new -clutter_behaviour_scale_newx +clutter_behaviour_rotate_set_center +clutter_behaviour_rotate_set_direction clutter_behaviour_scale_get_bounds clutter_behaviour_scale_get_boundsx clutter_behaviour_scale_get_gravity -clutter_behaviour_get_type -clutter_behaviour_apply -clutter_behaviour_remove -clutter_behaviour_remove_all -clutter_behaviour_actors_foreach -clutter_behaviour_get_n_actors -clutter_behaviour_get_nth_actor -clutter_behaviour_get_actors -clutter_behaviour_get_alpha +clutter_behaviour_scale_get_type +clutter_behaviour_scale_new +clutter_behaviour_scale_newx clutter_behaviour_set_alpha -clutter_behaviour_is_applied -clutter_box_get_type -clutter_box_set_color clutter_box_get_color -clutter_box_set_margin -clutter_box_get_margin -clutter_box_set_default_padding clutter_box_get_default_padding +clutter_box_get_margin +clutter_box_get_type clutter_box_pack clutter_box_pack_defaults -clutter_box_remove_all clutter_box_query_child clutter_box_query_nth_child +clutter_box_remove_all +clutter_box_set_color +clutter_box_set_default_padding +clutter_box_set_margin +clutter_button_event_button +clutter_clone_texture_get_parent_texture clutter_clone_texture_get_type clutter_clone_texture_new -clutter_clone_texture_get_parent_texture clutter_clone_texture_set_parent_texture -clutter_color_copy -clutter_color_free -clutter_color_parse -clutter_color_equal -clutter_color_to_string -clutter_color_get_type clutter_color_add -clutter_color_subtract -clutter_color_lighten +clutter_color_copy clutter_color_darken +clutter_color_equal +clutter_color_free +clutter_color_from_hls +clutter_color_from_hlsx +clutter_color_from_pixel +clutter_color_get_type +clutter_color_lighten +clutter_color_parse clutter_color_shade clutter_color_shadex -clutter_color_to_hlsx -clutter_color_from_hlsx +clutter_color_subtract clutter_color_to_hls -clutter_color_from_hls +clutter_color_to_hlsx clutter_color_to_pixel -clutter_color_from_pixel -clutter_container_get_type +clutter_color_to_string clutter_container_add clutter_container_add_actor clutter_container_add_valist +clutter_container_find_child_by_name +clutter_container_foreach +clutter_container_get_children +clutter_container_get_type +clutter_container_lower_child +clutter_container_raise_child clutter_container_remove clutter_container_remove_actor clutter_container_remove_valist -clutter_container_get_children -clutter_container_foreach -clutter_container_find_child_by_name -clutter_container_raise_child -clutter_container_lower_child clutter_container_sort_depth_order clutter_debug_flags; -clutter_effect_template_get_type -clutter_effect_template_new -clutter_effect_template_new_full -clutter_effect_template_new_for_duration -clutter_effect_template_set_timeline_clone -clutter_effect_template_get_timeline_clone -clutter_effect_fade -clutter_effect_depth -clutter_effect_move -clutter_effect_scale -clutter_effect_rotate_x -clutter_effect_rotate_y -clutter_effect_rotate_z -clutter_entry_get_type -clutter_entry_new -clutter_entry_new_full -clutter_entry_new_with_text -clutter_entry_set_text -clutter_entry_get_text -clutter_entry_set_font_name -clutter_entry_get_font_name -clutter_entry_set_color -clutter_entry_get_color -clutter_entry_get_layout -clutter_entry_set_alignment -clutter_entry_get_alignment -clutter_entry_set_position -clutter_entry_get_position -clutter_entry_handle_key_event -clutter_entry_insert_unichar -clutter_entry_delete_chars -clutter_entry_insert_text -clutter_entry_delete_text -clutter_entry_set_visible_cursor -clutter_entry_get_visible_cursor -clutter_entry_set_visibility -clutter_entry_get_visibility -clutter_entry_set_invisible_char -clutter_entry_get_invisible_char -clutter_entry_set_max_length -clutter_entry_get_max_length -clutter_event_get_type -clutter_events_pending -clutter_event_get -clutter_event_peek -clutter_event_put -clutter_event_new -clutter_event_copy -clutter_event_free -clutter_event_type -clutter_event_get_time -clutter_event_get_state -clutter_event_get_coords -clutter_key_event_symbol -clutter_key_event_code -clutter_key_event_unicode -clutter_button_event_button -clutter_keysym_to_unicode -clutter_event_get_source -clutter_feature_available -clutter_feature_get_all -clutter_qmulx -clutter_sinx -clutter_sini -clutter_tani -clutter_sqrtx -clutter_sqrti -clutter_log2x -clutter_pow2x -clutter_powx _clutter_double_to_fixed _clutter_double_to_int _clutter_double_to_uint -clutter_group_get_type -clutter_group_new -clutter_group_get_nth_child -clutter_group_get_n_children -clutter_group_remove_all +clutter_effect_depth +clutter_effect_fade +clutter_effect_move +clutter_effect_path +clutter_effect_rotate +clutter_effect_scale +clutter_effect_template_construct +clutter_effect_template_get_timeline_clone +clutter_effect_template_get_type +clutter_effect_template_new +clutter_effect_template_new_for_duration +clutter_effect_template_new_full +clutter_effect_template_set_timeline_clone +clutter_entry_delete_chars +clutter_entry_delete_text +clutter_entry_get_alignment +clutter_entry_get_color +clutter_entry_get_font_name +clutter_entry_get_invisible_char +clutter_entry_get_layout +clutter_entry_get_max_length +clutter_entry_get_position +clutter_entry_get_text +clutter_entry_get_type +clutter_entry_get_visibility +clutter_entry_get_visible_cursor +clutter_entry_handle_key_event +clutter_entry_insert_text +clutter_entry_insert_unichar +clutter_entry_new +clutter_entry_new_full +clutter_entry_new_with_text +clutter_entry_set_alignment +clutter_entry_set_color +clutter_entry_set_font_name +clutter_entry_set_invisible_char +clutter_entry_set_max_length +clutter_entry_set_position +clutter_entry_set_text +clutter_entry_set_visibility +clutter_entry_set_visible_cursor +clutter_event_copy +clutter_event_flags_get_type +clutter_event_free +clutter_event_get +clutter_event_get_coords +clutter_event_get_source +clutter_event_get_state +clutter_event_get_time +clutter_event_get_type +clutter_event_new +clutter_event_peek +clutter_event_put +clutter_events_pending +clutter_event_type +clutter_event_type_get_type +clutter_exp_dec_func +clutter_exp_inc_func +clutter_feature_available +clutter_feature_flags_get_type +clutter_feature_get_all +clutter_geometry_get_type +clutter_get_actor_by_id +clutter_get_debug_enabled +clutter_get_default_backend +clutter_get_keyboard_grab +clutter_get_motion_events_enabled +clutter_get_motion_events_frequency +clutter_get_option_group +clutter_get_pointer_grab +clutter_get_script_id +clutter_get_show_fps +clutter_get_timestamp +clutter_grab_keyboard +clutter_grab_pointer +clutter_gravity_get_type clutter_group_add clutter_group_add_many clutter_group_add_many_valist -clutter_group_remove clutter_group_find_child_by_id -clutter_group_raise +clutter_group_get_n_children +clutter_group_get_nth_child +clutter_group_get_type clutter_group_lower +clutter_group_new +clutter_group_raise +clutter_group_remove +clutter_group_remove_all clutter_group_sort_depth_order clutter_hbox_get_type clutter_hbox_new +clutter_init +clutter_init_error_get_type +clutter_init_with_args +clutter_key_event_code +clutter_key_event_symbol +clutter_key_event_unicode +clutter_keysym_to_unicode +clutter_knot_copy +clutter_knot_equal +clutter_knot_free +clutter_knot_get_type +clutter_label_get_alignment +clutter_label_get_attributes +clutter_label_get_color +clutter_label_get_ellipsize +clutter_label_get_font_name +clutter_label_get_layout +clutter_label_get_line_wrap +clutter_label_get_line_wrap_mode +clutter_label_get_text clutter_label_get_type +clutter_label_get_use_markup clutter_label_new clutter_label_new_full clutter_label_new_with_text -clutter_label_set_text -clutter_label_get_text -clutter_label_set_font_name -clutter_label_get_font_name -clutter_label_set_color -clutter_label_get_color -clutter_label_set_ellipsize -clutter_label_get_ellipsize -clutter_label_set_line_wrap -clutter_label_get_line_wrap -clutter_label_set_line_wrap_mode -clutter_label_get_line_wrap_mode -clutter_label_get_layout -clutter_label_set_attributes -clutter_label_get_attributes -clutter_label_set_use_markup -clutter_label_get_use_markup clutter_label_set_alignment -clutter_label_get_alignment -clutter_layout_get_type +clutter_label_set_attributes +clutter_label_set_color +clutter_label_set_ellipsize +clutter_label_set_font_name +clutter_label_set_line_wrap +clutter_label_set_line_wrap_mode +clutter_label_set_text +clutter_label_set_use_markup +clutter_layout_flags_get_type clutter_layout_get_layout_flags -clutter_layout_width_for_height +clutter_layout_get_type clutter_layout_height_for_width clutter_layout_natural_request clutter_layout_tune_request -clutter_base_init -clutter_init -clutter_init_with_args -clutter_get_option_group +clutter_layout_width_for_height +clutter_log2x clutter_main -clutter_main_quit clutter_main_level -clutter_redraw -clutter_get_debug_enabled -clutter_get_show_fps -clutter_get_timestamp -clutter_threads_init -clutter_threads_enter -clutter_threads_leave -clutter_threads_set_lock_functions -clutter_threads_add_idle -clutter_threads_add_idle_full -clutter_threads_add_timeout -clutter_threads_add_timeout_full -clutter_set_motion_events_enabled -clutter_get_motion_events_enabled -clutter_set_motion_events_frequency -clutter_get_motion_events_frequency -clutter_grab_pointer -clutter_ungrab_pointer -clutter_get_pointer_grab -clutter_grab_keyboard -clutter_ungrab_keyboard -clutter_get_keyboard_grab -clutter_media_get_type -clutter_media_get_uri +clutter_main_quit +clutter_margin_get_type +clutter_media_get_buffer_percent +clutter_media_get_can_seek +clutter_media_get_duration clutter_media_get_playing clutter_media_get_position +clutter_media_get_type +clutter_media_get_uri clutter_media_get_volume -clutter_media_get_can_seek -clutter_media_get_buffer_percent -clutter_media_get_duration +clutter_model_append +clutter_model_foreach +clutter_model_get_column_name +clutter_model_get_column_type +clutter_model_get_first_iter +clutter_model_get_iter_at_row +clutter_model_get_last_iter +clutter_model_get_n_columns +clutter_model_get_n_rows +clutter_model_get_sorting_column +clutter_model_get_type +clutter_model_insert +clutter_model_insert_value +clutter_model_iter_get +clutter_model_iter_get_model +clutter_model_iter_get_row +clutter_model_iter_get_type +clutter_model_iter_get_valist +clutter_model_iter_get_value +clutter_model_iter_is_first +clutter_model_iter_is_last +clutter_model_iter_next +clutter_model_iter_prev +clutter_model_iter_set +clutter_model_iter_set_valist +clutter_model_iter_set_value +clutter_model_new +clutter_model_newv +clutter_model_prepend +clutter_model_set_filter +clutter_model_set_names +clutter_model_set_sort +clutter_model_set_sorting_column +clutter_model_set_types +clutter_model_value +clutter_modifier_type_get_type +clutter_pack_type_get_type +clutter_padding_get_type +clutter_perspective_copy +clutter_perspective_free +clutter_perspective_get_type +clutter_pow2x +clutter_powx +clutter_qmulx +clutter_ramp_dec_func +clutter_ramp_func +clutter_ramp_inc_func +clutter_rectangle_get_border_color +clutter_rectangle_get_border_width +clutter_rectangle_get_color clutter_rectangle_get_type clutter_rectangle_new clutter_rectangle_new_with_color -clutter_rectangle_get_color -clutter_rectangle_set_color -clutter_rectangle_get_border_width -clutter_rectangle_set_border_width -clutter_rectangle_get_border_color clutter_rectangle_set_border_color -clutter_perspective_get_type -clutter_perspective_copy -clutter_perspective_free -clutter_stage_get_type -clutter_stage_get_default -clutter_stage_set_color -clutter_stage_get_color -clutter_stage_set_perspectivex -clutter_stage_get_perspectivex -clutter_stage_set_perspective -clutter_stage_get_perspective -clutter_stage_fullscreen -clutter_stage_unfullscreen -clutter_stage_show_cursor -clutter_stage_hide_cursor -clutter_stage_get_actor_at_pos -clutter_stage_snapshot +clutter_rectangle_set_border_width +clutter_rectangle_set_color +clutter_redraw +clutter_rotate_axis_get_type +clutter_rotate_direction_get_type +clutter_score_add +clutter_score_append +clutter_score_get_loop +clutter_score_get_type +clutter_score_is_playing +clutter_score_new +clutter_score_remove_all +clutter_score_rewind +clutter_score_start +clutter_score_stop +clutter_scriptable_get_id +clutter_scriptable_get_type +clutter_scriptable_parse_custom_node +clutter_scriptable_set_custom_property +clutter_scriptable_set_id +clutter_script_connect_signals +clutter_script_connect_signals_full +clutter_script_ensure_objects +clutter_script_error_get_type +clutter_script_error_quark +clutter_script_get_object +clutter_script_get_objects +clutter_script_get_type +clutter_script_get_type_from_name +clutter_script_load_from_data +clutter_script_load_from_file +clutter_script_new +clutter_script_unmerge_objects +clutter_scroll_direction_get_type +clutter_set_motion_events_enabled +clutter_set_motion_events_frequency +clutter_sine_dec_func +clutter_sine_func +clutter_sine_half_func +clutter_sine_inc_func +clutter_sini +clutter_sinx +clutter_smoothstep_dec_func +clutter_smoothstep_inc_func +clutter_sqrti +clutter_sqrtx +clutter_square_func clutter_stage_event -clutter_stage_set_title -clutter_stage_get_title -clutter_stage_set_user_resizable -clutter_stage_get_user_resizable -clutter_stage_set_key_focus -clutter_stage_set_use_fog -clutter_stage_get_use_fog -clutter_stage_set_fog +clutter_stage_fullscreen +clutter_stage_get_actor_at_pos +clutter_stage_get_color +clutter_stage_get_default clutter_stage_get_fog -clutter_stage_set_fogx clutter_stage_get_fogx +clutter_stage_get_perspective +clutter_stage_get_perspectivex clutter_stage_get_resolution clutter_stage_get_resolutionx +clutter_stage_get_title +clutter_stage_get_type +clutter_stage_get_use_fog +clutter_stage_get_user_resizable +clutter_stage_hide_cursor +clutter_stage_set_color +clutter_stage_set_fog +clutter_stage_set_fogx +clutter_stage_set_key_focus +clutter_stage_set_perspective +clutter_stage_set_perspectivex +clutter_stage_set_title +clutter_stage_set_use_fog +clutter_stage_set_user_resizable +clutter_stage_show_cursor +clutter_stage_snapshot +clutter_stage_state_get_type +clutter_stage_unfullscreen +clutter_tani +clutter_texture_bind_tile +clutter_texture_error_get_type clutter_texture_error_quark +clutter_texture_flags_get_type +clutter_texture_get_base_size +clutter_texture_get_n_tiles +clutter_texture_get_pixbuf clutter_texture_get_type +clutter_texture_get_x_tile_detail +clutter_texture_get_y_tile_detail +clutter_texture_has_generated_tiles +clutter_texture_is_tiled clutter_texture_new clutter_texture_new_from_pixbuf clutter_texture_set_from_rgb_data clutter_texture_set_from_yuv_data clutter_texture_set_pixbuf -clutter_texture_get_pixbuf -clutter_texture_get_base_size -clutter_texture_bind_tile -clutter_texture_get_n_tiles -clutter_texture_get_x_tile_detail -clutter_texture_get_y_tile_detail -clutter_texture_has_generated_tiles -clutter_texture_is_tiled +clutter_threads_add_idle +clutter_threads_add_idle_full +clutter_threads_add_timeout +clutter_threads_add_timeout_full +clutter_threads_enter +clutter_threads_init +clutter_threads_leave +clutter_threads_set_lock_functions +clutter_timeline_advance +clutter_timeline_clone +clutter_timeline_get_current_frame +clutter_timeline_get_delay +clutter_timeline_get_direction +clutter_timeline_get_duration +clutter_timeline_get_loop +clutter_timeline_get_n_frames +clutter_timeline_get_speed clutter_timeline_get_type +clutter_timeline_is_playing clutter_timeline_new clutter_timeline_new_for_duration -clutter_timeline_clone -clutter_timeline_get_speed -clutter_timeline_set_speed -clutter_timeline_get_direction -clutter_timeline_set_direction -clutter_timeline_start clutter_timeline_pause -clutter_timeline_stop -clutter_timeline_set_loop -clutter_timeline_get_loop clutter_timeline_rewind -clutter_timeline_skip -clutter_timeline_advance -clutter_timeline_get_current_frame -clutter_timeline_set_n_frames -clutter_timeline_get_n_frames -clutter_timeline_is_playing clutter_timeline_set_delay -clutter_timeline_get_delay +clutter_timeline_set_direction clutter_timeline_set_duration -clutter_timeline_get_duration -clutter_timeout_pool_new +clutter_timeline_set_loop +clutter_timeline_set_n_frames +clutter_timeline_set_speed +clutter_timeline_skip +clutter_timeline_start +clutter_timeline_stop clutter_timeout_pool_add +clutter_timeout_pool_new clutter_timeout_pool_remove -clutter_geometry_get_type -clutter_vertex_get_type -clutter_knot_get_type -clutter_knot_copy -clutter_knot_free -clutter_knot_equal -clutter_margin_get_type -clutter_padding_get_type +clutter_ungrab_keyboard +clutter_ungrab_pointer clutter_vbox_get_type clutter_vbox_new -cogl_get_proc_address +clutter_vertex_get_type cogl_check_extension -cogl_paint_init -cogl_push_matrix -cogl_pop_matrix -cogl_scale -cogl_translatex -cogl_translate -cogl_rotatex -cogl_rotate -cogl_color cogl_clip_set cogl_clip_unset +cogl_color cogl_enable -cogl_textures_create -cogl_textures_destroy -cogl_texture_bind -cogl_rectangle +cogl_get_bitmasks cogl_get_features cogl_get_modelview_matrix +cogl_get_proc_address cogl_get_projection_matrix cogl_get_viewport -cogl_get_bitmasks +cogl_paint_init +cogl_pop_matrix +cogl_push_matrix +cogl_rectangle +cogl_rotate +cogl_rotatex +cogl_scale +cogl_texture_bind +cogl_textures_create +cogl_textures_destroy +cogl_translate +cogl_translatex +pango_clutter_font_map_create_context pango_clutter_font_map_get_type pango_clutter_font_map_new pango_clutter_font_map_substitute_changed -pango_clutter_font_map_create_context pango_clutter_render_clear_caches -clutter_score_get_type -clutter_score_new -clutter_score_get_loop -clutter_score_rewind -clutter_score_is_playing -clutter_score_start -clutter_score_stop -clutter_score_remove_all -clutter_score_add -clutter_score_append -clutter_actor_flags_get_type -clutter_pack_type_get_type -clutter_modifier_type_get_type -clutter_event_flags_get_type -clutter_event_type_get_type -clutter_scroll_direction_get_type -clutter_stage_state_get_type -clutter_feature_flags_get_type -clutter_layout_flags_get_type -clutter_init_error_get_type -clutter_script_error_get_type -clutter_texture_error_get_type -clutter_texture_flags_get_type -clutter_gravity_get_type -clutter_rotate_axis_get_type -clutter_rotate_direction_get_type -clutter_script_error_quark -clutter_script_get_type -clutter_script_new -clutter_script_load_from_file -clutter_script_load_from_data -clutter_script_get_object -clutter_script_get_objects -clutter_script_unmerge_objects -clutter_script_ensure_objects -clutter_script_connect_signals -clutter_script_connect_signals_full -clutter_script_get_type_from_name -clutter_get_script_id -clutter_scriptable_get_type -clutter_scriptable_set_id -clutter_scriptable_get_id -clutter_scriptable_parse_custom_node -clutter_scriptable_set_custom_property diff --git a/clutter/clutter-model.c b/clutter/clutter-model.c index 9e6632fb6..9d4f3ac07 100644 --- a/clutter/clutter-model.c +++ b/clutter/clutter-model.c @@ -144,6 +144,7 @@ struct _ClutterModelPrivate GSequence *sequence; GType *column_types; + gchar **column_names; gint n_columns; ClutterModelFilterFunc filter; @@ -157,23 +158,15 @@ struct _ClutterModelPrivate }; /* Forwards */ +static const gchar * _model_get_column_name (ClutterModel *model, + guint column); +static GType _model_get_column_type (ClutterModel *model, + guint column); static ClutterModelIter * _model_get_iter_at_row (ClutterModel *model, - guint index_); + guint row); static void clutter_model_real_remove (ClutterModel *model, GSequenceIter *iter); -/* GObject stuff */ -static void -clutter_model_dispose (GObject *object) -{ - ClutterModel *self = CLUTTER_MODEL(object); - ClutterModelPrivate *priv; - - priv = self->priv; - - G_OBJECT_CLASS (clutter_model_parent_class)->dispose (object); -} - static void clutter_model_finalize (GObject *object) { @@ -188,12 +181,14 @@ clutter_model_finalize (GObject *object) } g_sequence_free (priv->sequence); - if (priv->sort && priv->sort_data && priv->sort_notify) + if (priv->sort_notify) priv->sort_notify (priv->sort_data); - if (priv->filter && priv->filter_data && priv->filter_notify) + if (priv->filter_notify) priv->filter_notify (priv->filter_data); + g_free (priv->column_types); + g_strfreev (priv->column_names); G_OBJECT_CLASS (clutter_model_parent_class)->finalize (object); } @@ -201,12 +196,13 @@ clutter_model_finalize (GObject *object) static void clutter_model_class_init (ClutterModelClass *klass) { - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - gobject_class->finalize = clutter_model_finalize; - gobject_class->dispose = clutter_model_dispose; + gobject_class->finalize = clutter_model_finalize; - klass->get_iter_at_row = _model_get_iter_at_row; + klass->get_iter_at_row = _model_get_iter_at_row; + klass->get_column_name = _model_get_column_name; + klass->get_column_type = _model_get_column_type; /** * ClutterModel::row-added: @@ -414,14 +410,12 @@ _model_filter (ClutterModel *model, ClutterModelIter *iter) static void -clutter_model_set_n_columns (ClutterModel *model, gint n_columns) +clutter_model_set_n_columns (ClutterModel *model, + gint n_columns) { - ClutterModelPrivate *priv; + ClutterModelPrivate *priv = model->priv; GType *new_columns; - g_return_if_fail (CLUTTER_IS_MODEL (model)); - priv = model->priv; - new_columns = g_new0 (GType, n_columns); priv->column_types = new_columns; @@ -433,10 +427,7 @@ clutter_model_set_column_type (ClutterModel *model, gint column, GType type) { - ClutterModelPrivate *priv; - - g_return_if_fail (CLUTTER_IS_MODEL (model)); - priv = model->priv; + ClutterModelPrivate *priv = model->priv; priv->column_types[column] = type; } @@ -532,9 +523,11 @@ clutter_model_newv (guint n_columns, * @n_columns: number of columns for the model * @types: an array of #GType types * + * Sets the types of the columns inside a #ClutterModel. + * * This function is meant primarily for #GObjects that inherit from - * #ClutterModel, and should only be used when contructing a #ClutterModel. It - * will not work after the initial creation of the #ClutterModel. + * #ClutterModel, and should only be used when contructing a #ClutterModel. + * It will not work after the initial creation of the #ClutterModel. * * Since 0.6 */ @@ -565,6 +558,55 @@ clutter_model_set_types (ClutterModel *model, } } +/** + * clutter_model_set_names: + * @model: a #ClutterModel + * @n_columns: the number of column names + * @names: an array of strings + * + * Assigns a name to the columns of a #ClutterModel. This function + * cannot be called twice on the same model. + * + * Since: 0.6 + */ +void +clutter_model_set_names (ClutterModel *model, + guint n_columns, + const gchar * const names[]) +{ + ClutterModelPrivate *priv; + gint i; + + g_return_if_fail (CLUTTER_IS_MODEL (model)); + g_return_if_fail (n_columns > 0); + + priv = model->priv; + + g_return_if_fail (priv->column_names == NULL); + g_return_if_fail (n_columns <= priv->n_columns); + + priv->column_names = g_new (gchar*, n_columns); + for (i = 0; i < n_columns; i++) + priv->column_names[i] = g_strdup (names[i]); +} + +/** + * clutter_model_get_n_columns: + * @model: a #ClutterModel + * + * Retrieves the number of columns inside @model. + * + * Return value: the number of columns + * + * Since: 0.6 + */ +guint +clutter_model_get_n_columns (ClutterModel *model) +{ + g_return_val_if_fail (CLUTTER_IS_MODEL (model), 0); + + return model->priv->n_columns; +} static GValueArray * clutter_model_new_row (ClutterModel *model) @@ -624,6 +666,7 @@ clutter_model_append (ClutterModel *model, "model", model, "iter", seq_iter, NULL); + va_start (args, model); clutter_model_iter_set_valist (iter, args); va_end (args); @@ -683,10 +726,10 @@ clutter_model_prepend (ClutterModel *model, /** * clutter_model_insert: * @model: a #ClutterModel - * @index_: the position to insert the new row + * @row: the position to insert the new row * @Varargs: pairs of column number and value, terminated with -1 * - * Inserts a new row to the #ClutterModel at @index_, setting the rows values + * Inserts a new row to the #ClutterModel at @row, setting the rows values * upon creation. For example, to insert a new row at index 100, where column 0 * is type G_TYPE_INT and column 1 is of type G_TYPE_STRING, you would write * clutter_model_insert (model, 100, 0, 100, 1, "string", -1); @@ -698,29 +741,29 @@ clutter_model_prepend (ClutterModel *model, */ gboolean clutter_model_insert (ClutterModel *model, - guint index_, + guint row, ...) { ClutterModelPrivate *priv; ClutterModelIter *iter; - GValueArray *row; + GValueArray *row_array; GSequenceIter *seq_iter; va_list args; g_return_val_if_fail (CLUTTER_IS_MODEL (model), FALSE); priv = model->priv; - row = clutter_model_new_row (model); + row_array = clutter_model_new_row (model); - seq_iter = g_sequence_get_iter_at_pos (priv->sequence, index_); - seq_iter = g_sequence_insert_before (seq_iter, row); + seq_iter = g_sequence_get_iter_at_pos (priv->sequence, row); + seq_iter = g_sequence_insert_before (seq_iter, row_array); iter = g_object_new (CLUTTER_TYPE_MODEL_ITER, "model", model, "iter", seq_iter, NULL); - va_start (args, index_); + va_start (args, row); clutter_model_iter_set_valist (iter, args); va_end (args); @@ -734,7 +777,7 @@ clutter_model_insert (ClutterModel *model, /** * clutter_model_insert_value: * @model: a #ClutterModel - * @index_: position of the row to modify + * @row: position of the row to modify * @column: column to modify * @value: new value for the cell * @@ -747,7 +790,7 @@ clutter_model_insert (ClutterModel *model, */ gboolean clutter_model_insert_value (ClutterModel *model, - guint index_, + guint row, guint column, const GValue *value) { @@ -758,7 +801,7 @@ clutter_model_insert_value (ClutterModel *model, g_return_val_if_fail (CLUTTER_IS_MODEL (model), FALSE); priv = model->priv; - seq_iter = g_sequence_get_iter_at_pos (priv->sequence, index_); + seq_iter = g_sequence_get_iter_at_pos (priv->sequence, row); iter = g_object_new (CLUTTER_TYPE_MODEL_ITER, "model", model, @@ -791,15 +834,15 @@ clutter_model_real_remove (ClutterModel *model, /** * clutter_model_remove: * @model: a #ClutterModel - * @index_: position of row to remove + * @row: position of row to remove * - * Removes a row at @index_ from the model. + * Removes the row at the given position from the model. * * Since 0.6 */ void clutter_model_remove (ClutterModel *model, - guint index_) + guint row) { ClutterModelPrivate *priv; ClutterModelIter *iter; @@ -817,7 +860,7 @@ clutter_model_remove (ClutterModel *model, g_object_set (iter, "iter", seq_iter, NULL); if (_model_filter (model, iter)) { - if (i == index_) + if (i == row) { g_signal_emit (model, model_signals[ROW_REMOVED], 0, iter); clutter_model_real_remove (model, seq_iter); @@ -831,32 +874,126 @@ clutter_model_remove (ClutterModel *model, g_object_unref (iter); } -static ClutterModelIter * -_model_get_iter_at_row (ClutterModel *model, - guint index_) +static const gchar * +_model_get_column_name (ClutterModel *model, + guint column) { + ClutterModelPrivate *priv = model->priv; + + if (column < 0 || column >= priv->n_columns) + return NULL; + + if (priv->column_names && priv->column_names[column]) + return priv->column_names[column]; + + return g_type_name (priv->column_types[column]); +} + +/** + * clutter_model_get_column_name: + * @model: #ClutterModel + * @column: the column number + * + * Retrieves the name of the @column + * + * Return value: the name of the column. The model holds the returned + * string, and it should not be modified or freed + * + * Since: 0.6 + */ +G_CONST_RETURN gchar * +clutter_model_get_column_name (ClutterModel *model, + guint column) +{ + ClutterModelPrivate *priv; + ClutterModelClass *klass; + g_return_val_if_fail (CLUTTER_IS_MODEL (model), NULL); + priv = model->priv; + if (column < 0 || column > priv->n_columns) + { + g_warning ("%s: Invalid column id value %d\n", G_STRLOC, column); + return NULL; + } + + klass = CLUTTER_MODEL_GET_CLASS (model); + if (klass->get_column_name) + return klass->get_column_name (model, column); + + return NULL; +} + +static GType +_model_get_column_type (ClutterModel *model, + guint column) +{ + ClutterModelPrivate *priv = model->priv; + + if (column < 0 || column >= priv->n_columns) + return G_TYPE_INVALID; + + return priv->column_types[column]; +} + +/** + * clutter_model_get_column_type: + * @model: #ClutterModel + * @column: the column number + * + * Retrieves the type of the @column. + * + * Return value: the type of the column. + * + * Since: 0.6 + */ +GType +clutter_model_get_column_type (ClutterModel *model, + guint column) +{ + ClutterModelPrivate *priv; + ClutterModelClass *klass; + + g_return_val_if_fail (CLUTTER_IS_MODEL (model), G_TYPE_INVALID); + + priv = model->priv; + if (column < 0 || column > priv->n_columns) + { + g_warning ("%s: Invalid column id value %d\n", G_STRLOC, column); + return G_TYPE_INVALID; + } + + klass = CLUTTER_MODEL_GET_CLASS (model); + if (klass->get_column_type) + return klass->get_column_type (model, column); + + return G_TYPE_INVALID; +} + +static ClutterModelIter * +_model_get_iter_at_row (ClutterModel *model, + guint row) +{ return g_object_new (CLUTTER_TYPE_MODEL_ITER, "model", model, - "row", index_, + "row", row, NULL); } /** * clutter_model_get_iter_at_row: * @model: a #ClutterModel - * @index_: position of the row to retrieve + * @row: position of the row to retrieve * - * Retrieves a #ClutterModelIter representing the row at @index_. + * Retrieves a #ClutterModelIter representing the row at the given position. * - * Return value: A new #ClutterModelIter, or NULL if @index_ was out-of-bounds + * Return value: A new #ClutterModelIter, or %NULL if @row was out-of-bounds * * Since 0.6 **/ ClutterModelIter * -clutter_model_get_iter_at_row (ClutterModel *model, - guint index_) +clutter_model_get_iter_at_row (ClutterModel *model, + guint row) { ClutterModelClass *klass; @@ -864,7 +1001,7 @@ clutter_model_get_iter_at_row (ClutterModel *model, klass = CLUTTER_MODEL_GET_CLASS (model); if (klass->get_iter_at_row) - return klass->get_iter_at_row (model, index_); + return klass->get_iter_at_row (model, row); return NULL; } @@ -874,8 +1011,7 @@ clutter_model_get_iter_at_row (ClutterModel *model, * clutter_model_get_first_iter: * @model: a #ClutterModel * - * Retrieves a #ClutterModelIter representing the first row in @model. It calls - * #clutter_model_get_iter_at_row with 0 as the index_ parameter. + * Retrieves a #ClutterModelIter representing the first row in @model. * * Return value: A new #ClutterModelIter * @@ -893,14 +1029,13 @@ clutter_model_get_first_iter (ClutterModel *model) * clutter_model_get_last_iter: * @model: a #ClutterModel * - * Retrieves a #ClutterModelIter representing the last row in @model. It calls - * #clutter_model_get_iter_at_row with model_length -1 as the index_ parameter. + * Retrieves a #ClutterModelIter representing the last row in @model. * * Return value: A new #ClutterModelIter * * Since 0.6 **/ - ClutterModelIter * +ClutterModelIter * clutter_model_get_last_iter (ClutterModel *model) { guint length; @@ -1658,10 +1793,11 @@ _model_iter_set_row (ClutterModelIter *iter, guint row) g_return_if_fail (CLUTTER_IS_MODEL (model)); model_priv = model->priv; - filter_next = g_sequence_get_begin_iter (model_priv->sequence); temp_iter = g_object_new (CLUTTER_TYPE_MODEL_ITER, - "model", model, NULL); + "model", model, + NULL); + filter_next = g_sequence_get_begin_iter (model_priv->sequence); while (!g_sequence_iter_is_end (filter_next)) { g_object_set (temp_iter, "iter", filter_next, NULL); @@ -1672,10 +1808,13 @@ _model_iter_set_row (ClutterModelIter *iter, guint row) iter_priv->seq_iter = filter_next; break; } + i++; } + filter_next = g_sequence_iter_next (filter_next); } + g_object_unref (temp_iter); } diff --git a/clutter/clutter-model.h b/clutter/clutter-model.h index 90b51d622..17640037e 100644 --- a/clutter/clutter-model.h +++ b/clutter/clutter-model.h @@ -135,8 +135,12 @@ struct _ClutterModelClass /*< public >*/ /* vtable */ - ClutterModelIter *(* get_iter_at_row) (ClutterModel *model, - guint index_); + const gchar * (* get_column_name) (ClutterModel *model, + guint column); + GType (* get_column_type) (ClutterModel *model, + guint column); + ClutterModelIter *(* get_iter_at_row) (ClutterModel *model, + guint row); /* signals */ void (* row_added) (ClutterModel *model, @@ -161,48 +165,60 @@ struct _ClutterModelClass GType clutter_model_get_type (void) G_GNUC_CONST; -ClutterModel * clutter_model_new (guint n_columns, - ...); -ClutterModel * clutter_model_newv (guint n_columns, - GType *types); -void clutter_model_set_types (ClutterModel *model, - guint n_columns, - GType *types); +ClutterModel * clutter_model_new (guint n_columns, + ...); +ClutterModel * clutter_model_newv (guint n_columns, + GType *types); +void clutter_model_set_types (ClutterModel *model, + guint n_columns, + GType *types); +void clutter_model_set_names (ClutterModel *model, + guint n_columns, + const gchar * const names[]); -gboolean clutter_model_append (ClutterModel *model, - ...); -gboolean clutter_model_prepend (ClutterModel *model, - ...); -gboolean clutter_model_insert (ClutterModel *model, - guint index_, - ...); -gboolean clutter_model_insert_value (ClutterModel *model, - guint index_, - guint column, - const GValue *value); -void clutter_model_remove (ClutterModel *model, - guint index_); -guint clutter_model_get_n_rows (ClutterModel *model); +gboolean clutter_model_append (ClutterModel *model, + ...); +gboolean clutter_model_prepend (ClutterModel *model, + ...); +gboolean clutter_model_insert (ClutterModel *model, + guint row, + ...); +gboolean clutter_model_insert_value (ClutterModel *model, + guint row, + guint column, + const GValue *value); +void clutter_model_remove (ClutterModel *model, + guint row); -ClutterModelIter *clutter_model_get_first_iter (ClutterModel *model); -ClutterModelIter *clutter_model_get_last_iter (ClutterModel *model); -ClutterModelIter *clutter_model_get_iter_at_row (ClutterModel *model, - guint index_); -void clutter_model_set_sorting_column (ClutterModel *model, - guint column); -guint clutter_model_get_sorting_column (ClutterModel *model); -void clutter_model_foreach (ClutterModel *model, - ClutterModelForeachFunc func, - gpointer user_data); -void clutter_model_set_sort (ClutterModel *model, - guint column, - ClutterModelSortFunc func, - gpointer user_data, - GDestroyNotify notify); -void clutter_model_set_filter (ClutterModel *model, - ClutterModelFilterFunc func, - gpointer user_data, - GDestroyNotify notify); +guint clutter_model_get_n_rows (ClutterModel *model); + +G_CONST_RETURN gchar *clutter_model_get_column_name (ClutterModel *model, + guint column); +GType clutter_model_get_column_type (ClutterModel *model, + guint column); +guint clutter_model_get_n_columns (ClutterModel *model); + +ClutterModelIter * clutter_model_get_first_iter (ClutterModel *model); +ClutterModelIter * clutter_model_get_last_iter (ClutterModel *model); +ClutterModelIter * clutter_model_get_iter_at_row (ClutterModel *model, + guint row); + +void clutter_model_set_sorting_column (ClutterModel *model, + guint column); +guint clutter_model_get_sorting_column (ClutterModel *model); + +void clutter_model_foreach (ClutterModel *model, + ClutterModelForeachFunc func, + gpointer user_data); +void clutter_model_set_sort (ClutterModel *model, + guint column, + ClutterModelSortFunc func, + gpointer user_data, + GDestroyNotify notify); +void clutter_model_set_filter (ClutterModel *model, + ClutterModelFilterFunc func, + gpointer user_data, + GDestroyNotify notify); /*