X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtkcsssection.c;h=9246d2d27c65fcd446e1e00f479bf404df5f8e7a;hb=ea043cab5718304d9b6170afa2d3f959fc99c718;hp=1b467570da137ab3258001fd000e3a0193ba3073;hpb=55f1799b96db6bb3daad34569d567c076d8d0c51;p=~andy%2Fgtk diff --git a/gtk/gtkcsssection.c b/gtk/gtkcsssection.c index 1b467570d..9246d2d27 100644 --- a/gtk/gtkcsssection.c +++ b/gtk/gtkcsssection.c @@ -12,9 +12,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library. If not, see . */ #include "config.h" @@ -51,13 +49,11 @@ G_DEFINE_BOXED_TYPE (GtkCssSection, gtk_css_section, gtk_css_section_ref, gtk_cs GtkCssSection * _gtk_css_section_new (GtkCssSection *parent, GtkCssSectionType type, - GtkCssParser *parser, - GFile *file) + GtkCssParser *parser) { GtkCssSection *section; g_return_val_if_fail (parser != NULL, NULL); - g_return_val_if_fail (file == NULL || G_IS_FILE (file), NULL); section = g_slice_new0 (GtkCssSection); @@ -65,8 +61,9 @@ _gtk_css_section_new (GtkCssSection *parent, section->section_type = type; if (parent) section->parent = gtk_css_section_ref (parent); - if (file) - section->file = g_object_ref (file); + section->file = _gtk_css_parser_get_file (parser); + if (section->file) + g_object_ref (section->file); section->start_line = _gtk_css_parser_get_line (parser); section->start_position = _gtk_css_parser_get_position (parser); section->parser = parser; @@ -171,10 +168,10 @@ gtk_css_section_get_section_type (const GtkCssSection *section) * * Gets the parent section for the given @section. The parent section is * the section that contains this @section. A special case are sections of - * type #GTK_CSS_SECTION_TYPE_DOCUMENT. Their parent will either be %NULL + * type #GTK_CSS_SECTION_DOCUMENT. Their parent will either be %NULL * if they are the original CSS document that was loaded by * gtk_css_provider_load_from_file() or a section of type - * #GTK_CSS_SECTION_TYPE_IMPORT if it was loaded with an import rule from + * #GTK_CSS_SECTION_IMPORT if it was loaded with an import rule from * a different file. * * Returns: the parent section or %NULL if none @@ -194,11 +191,11 @@ gtk_css_section_get_parent (const GtkCssSection *section) * @section: the section * * Gets the file that @section was parsed from. If no such file exists, - * for example because the CSS was loaded via + * for example because the CSS was loaded via * @gtk_css_provider_load_from_data(), then %NULL is returned. * - * Returns: the #GFile that @section was parsed from or %NULL if - * @section was parsed from other data. + * Returns: (transfer none): the #GFile that @section was parsed from + * or %NULL if @section was parsed from other data * * Since: 3.2 **/ @@ -306,3 +303,45 @@ gtk_css_section_get_end_position (const GtkCssSection *section) return section->end_position; } +void +_gtk_css_section_print (const GtkCssSection *section, + GString *string) +{ + if (section->file) + { + GFileInfo *info; + + info = g_file_query_info (section->file, G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME, 0, NULL, NULL); + + if (info) + { + g_string_append (string, g_file_info_get_display_name (info)); + g_object_unref (info); + } + else + { + g_string_append (string, ""); + } + } + else + { + g_string_append (string, ""); + } + + g_string_append_printf (string, ":%u:%u", + gtk_css_section_get_end_line (section) + 1, + gtk_css_section_get_end_position (section)); +} + +char * +_gtk_css_section_to_string (const GtkCssSection *section) +{ + GString *string; + + g_return_val_if_fail (section != NULL, NULL); + + string = g_string_new (NULL); + _gtk_css_section_print (section, string); + + return g_string_free (string, FALSE); +}