inspector: Add a ruleview

This widget lists all the rules in the current CSS. For now it lives
next to the css editor widget.
This commit is contained in:
Benjamin Otte
2016-03-21 23:48:05 +01:00
parent ff7f62b3ca
commit 0fbdcc3cd1
8 changed files with 520 additions and 13 deletions

View File

@@ -4,6 +4,8 @@ inspector_c_sources = \
inspector/cellrenderergraph.c \
inspector/css-editor.c \
inspector/css-node-tree.c \
inspector/cssruleview.c \
inspector/cssruleviewrow.c \
inspector/data-list.c \
inspector/general.c \
inspector/gestures.c \
@@ -35,6 +37,8 @@ inspector_h_sources = \
inspector/cellrenderergraph.h \
inspector/css-editor.h \
inspector/css-node-tree.h \
inspector/cssruleview.h \
inspector/cssruleviewrow.h \
inspector/data-list.h \
inspector/general.h \
inspector/gestures.h \
@@ -63,6 +67,8 @@ inspector_templates = \
inspector/actions.ui \
inspector/css-editor.ui \
inspector/css-node-tree.ui \
inspector/cssruleview.ui \
inspector/cssruleviewrow.ui \
inspector/data-list.ui \
inspector/general.ui \
inspector/magnifier.ui \

View File

@@ -25,6 +25,8 @@
#include "css-editor.h"
#include "cssruleview.h"
#include "gtkcssdeclarationprivate.h"
#include "gtkcssprovider.h"
#include "gtkcssrbtreeprivate.h"
@@ -76,6 +78,7 @@ struct _GtkCssChunkTokenSource
struct _GtkInspectorCssEditorPrivate
{
GtkWidget *view;
GtkWidget *ruleview;
GtkTextBuffer *text;
GtkCssRbTree *tokens;
GtkCssProvider *provider;
@@ -475,6 +478,9 @@ update_style_sheet (GtkInspectorCssEditor *ce)
gtk_css_style_sheet_parse (priv->style_sheet, source);
gtk_css_token_source_unref (source);
gtk_inspector_css_rule_view_set_style_sheet (GTK_INSPECTOR_CSS_RULE_VIEW (ce->priv->ruleview),
ce->priv->style_sheet);
}
static gboolean
@@ -757,6 +763,9 @@ gtk_inspector_css_editor_init (GtkInspectorCssEditor *ce)
gtk_css_chunk_augment,
gtk_css_chunk_clear,
NULL);
gtk_inspector_css_rule_view_set_style_sheet (GTK_INSPECTOR_CSS_RULE_VIEW (ce->priv->ruleview),
ce->priv->style_sheet);
}
static void
@@ -802,6 +811,7 @@ gtk_inspector_css_editor_class_init (GtkInspectorCssEditorClass *klass)
gtk_widget_class_set_template_from_resource (widget_class, "/org/gtk/libgtk/inspector/css-editor.ui");
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorCssEditor, text);
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorCssEditor, view);
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorCssEditor, ruleview);
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorCssEditor, disable_button);
gtk_widget_class_bind_template_callback (widget_class, disable_toggled);
gtk_widget_class_bind_template_callback (widget_class, save_clicked);

View File

@@ -107,22 +107,36 @@
</object>
</child>
<child>
<object class="GtkScrolledWindow">
<object class="GtkPaned">
<property name="visible">True</property>
<property name="hscrollbar-policy">automatic</property>
<property name="vscrollbar-policy">automatic</property>
<property name="expand">True</property>
<property name="orientation">horizontal</property>
<child>
<object class="GtkTextView" id="view">
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="hscrollbar-policy">automatic</property>
<property name="vscrollbar-policy">automatic</property>
<property name="expand">True</property>
<child>
<object class="GtkTextView" id="view">
<property name="visible">True</property>
<property name="buffer">text</property>
<property name="wrap-mode">word</property>
<property name="monospace">True</property>
<property name="has-focus">True</property>
<property name="left-margin">6</property>
<property name="right-margin">6</property>
<property name="has-tooltip">True</property>
<signal name="query-tooltip" handler="query_tooltip_cb"/>
</object>
</child>
</object>
<packing>
<property name="resize">True</property>
</packing>
</child>
<child>
<object class="GtkInspectorCssRuleView" id="ruleview">
<property name="visible">True</property>
<property name="buffer">text</property>
<property name="wrap-mode">word</property>
<property name="monospace">True</property>
<property name="has-focus">True</property>
<property name="left-margin">6</property>
<property name="right-margin">6</property>
<property name="has-tooltip">True</property>
<signal name="query-tooltip" handler="query_tooltip_cb"/>
</object>
</child>
</object>

146
gtk/inspector/cssruleview.c Normal file
View File

@@ -0,0 +1,146 @@
/*
* Copyright (c) 2016 Benjamin Otte <otte@gnome.org>
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#include "config.h"
#include <glib/gi18n-lib.h>
#include "cssruleview.h"
#include "cssruleviewrow.h"
#include "gtkcssrulelistprivate.h"
#include "gtkcssstyleruleprivate.h"
typedef struct _GtkInspectorCssRuleViewPrivate GtkInspectorCssRuleViewPrivate;
struct _GtkInspectorCssRuleViewPrivate
{
GtkCssStyleSheet *style_sheet;
GtkWidget *list_widget;
};
G_DEFINE_TYPE_WITH_PRIVATE (GtkInspectorCssRuleView, gtk_inspector_css_rule_view, GTK_TYPE_BIN)
static void
finalize (GObject *object)
{
GtkInspectorCssRuleView *ruleview = GTK_INSPECTOR_CSS_RULE_VIEW (object);
gtk_inspector_css_rule_view_set_style_sheet (ruleview, NULL);
G_OBJECT_CLASS (gtk_inspector_css_rule_view_parent_class)->finalize (object);
}
static void
gtk_inspector_css_rule_view_class_init (GtkInspectorCssRuleViewClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
object_class->finalize = finalize;
gtk_widget_class_set_template_from_resource (widget_class, "/org/gtk/libgtk/inspector/cssruleview.ui");
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorCssRuleView, list_widget);
}
static gint
sort_func (GtkListBoxRow *row1,
GtkListBoxRow *row2,
gpointer data)
{
return - gtk_inspector_css_rule_view_row_compare_specificity (GTK_INSPECTOR_CSS_RULE_VIEW_ROW (row1),
GTK_INSPECTOR_CSS_RULE_VIEW_ROW (row2));
}
static void
gtk_inspector_css_rule_view_init (GtkInspectorCssRuleView *ruleview)
{
GtkInspectorCssRuleViewPrivate *priv;
gtk_widget_init_template (GTK_WIDGET (ruleview));
priv = gtk_inspector_css_rule_view_get_instance_private (ruleview);
gtk_list_box_set_sort_func (GTK_LIST_BOX (priv->list_widget),
sort_func,
ruleview,
NULL);
}
void
gtk_inspector_css_rule_view_set_style_sheet (GtkInspectorCssRuleView *ruleview,
GtkCssStyleSheet *style_sheet)
{
GtkInspectorCssRuleViewPrivate *priv;
g_return_if_fail (GTK_INSPECTOR_IS_CSS_RULE_VIEW (ruleview));
g_return_if_fail (style_sheet == NULL || GTK_IS_CSS_STYLE_SHEET (style_sheet));
priv = gtk_inspector_css_rule_view_get_instance_private (ruleview);
if (priv->style_sheet == style_sheet)
return;
if (priv->style_sheet)
{
GtkListBoxRow *row;
for (row = gtk_list_box_get_row_at_index (GTK_LIST_BOX (priv->list_widget), 0);
row != NULL;
row = gtk_list_box_get_row_at_index (GTK_LIST_BOX (priv->list_widget), 0))
{
gtk_container_remove (GTK_CONTAINER (priv->list_widget), GTK_WIDGET (row));
}
g_object_unref (priv->style_sheet);
}
priv->style_sheet = style_sheet;
if (style_sheet)
{
GtkCssRuleList *rule_list;
GtkCssRule *rule;
guint i, j;
g_object_ref (style_sheet);
rule_list = gtk_css_style_sheet_get_css_rules (style_sheet);
for (i = 0; i < gtk_css_rule_list_get_length (rule_list); i++)
{
rule = gtk_css_rule_list_get_item (rule_list, i);
if (!GTK_IS_CSS_STYLE_RULE (rule))
continue;
for (j = 0; j < gtk_css_style_rule_get_n_selectors (GTK_CSS_STYLE_RULE (rule)); j++)
{
GtkWidget *row = gtk_inspector_css_rule_view_row_new (GTK_CSS_STYLE_RULE (rule), j);
gtk_widget_show (row);
gtk_container_add (GTK_CONTAINER (priv->list_widget), row);
}
}
}
}

View File

@@ -0,0 +1,60 @@
/*
* Copyright (c) 2016 Benjamin Otte <otte@gnome.org>
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#ifndef _GTK_INSPECTOR_CSS_RULE_VIEW_H_
#define _GTK_INSPECTOR_CSS_RULE_VIEW_H_
#include <gtk/gtk.h>
#include "gtk/gtkcssstylesheetprivate.h"
#define GTK_TYPE_INSPECTOR_CSS_RULE_VIEW (gtk_inspector_css_rule_view_get_type())
#define GTK_INSPECTOR_CSS_RULE_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GTK_TYPE_INSPECTOR_CSS_RULE_VIEW, GtkInspectorCssRuleView))
#define GTK_INSPECTOR_CSS_RULE_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GTK_TYPE_INSPECTOR_CSS_RULE_VIEW, GtkInspectorCssRuleViewClass))
#define GTK_INSPECTOR_IS_CSS_RULE_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GTK_TYPE_INSPECTOR_CSS_RULE_VIEW))
#define GTK_INSPECTOR_IS_CSS_RULE_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GTK_TYPE_INSPECTOR_CSS_RULE_VIEW))
#define GTK_INSPECTOR_CSS_RULE_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GTK_TYPE_INSPECTOR_CSS_RULE_VIEW, GtkInspectorCssRuleViewClass))
typedef struct _GtkInspectorCssRuleView GtkInspectorCssRuleView;
typedef struct _GtkInspectorCssRuleViewClass GtkInspectorCssRuleViewClass;
typedef struct _GtkInspectorCssRuleView
{
GtkBin parent;
} GtkInspectorCssRuleView;
typedef struct _GtkInspectorCssRuleViewClass
{
GtkBinClass parent;
} GtkInspectorCssRuleViewClass;
G_BEGIN_DECLS
GType gtk_inspector_css_rule_view_get_type (void);
void gtk_inspector_css_rule_view_set_style_sheet (GtkInspectorCssRuleView *ruleview,
GtkCssStyleSheet *style_sheet);
G_END_DECLS
#endif // _GTK_INSPECTOR_CSS_RULE_VIEW_H_
// vim: set et sw=2 ts=2:

View File

@@ -0,0 +1,205 @@
/*
* Copyright (c) 2016 Benjamin Otte <otte@gnome.org>
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#include "config.h"
#include <glib/gi18n-lib.h>
#include "cssruleviewrow.h"
#include "gtkcssdeclarationprivate.h"
#include "gtkcssstylesheetprivate.h"
typedef struct _GtkInspectorCssRuleViewRowPrivate GtkInspectorCssRuleViewRowPrivate;
struct _GtkInspectorCssRuleViewRowPrivate
{
GtkCssStyleRule *rule;
guint selector_id;
GtkWidget *selector_label;
GtkWidget *location_button;
GtkWidget *style_label;
};
G_DEFINE_TYPE_WITH_PRIVATE (GtkInspectorCssRuleViewRow, gtk_inspector_css_rule_view_row, GTK_TYPE_LIST_BOX_ROW)
static gboolean
location_button_clicked (GtkLabel *label,
char *unused,
gpointer data)
{
g_print ("Link to %s was clicked.\n", gtk_label_get_text (label));
return TRUE;
}
static void
finalize (GObject *object)
{
GtkInspectorCssRuleViewRow *row = GTK_INSPECTOR_CSS_RULE_VIEW_ROW (object);
GtkInspectorCssRuleViewRowPrivate *priv = gtk_inspector_css_rule_view_row_get_instance_private (row);
g_object_unref (priv->rule);
G_OBJECT_CLASS (gtk_inspector_css_rule_view_row_parent_class)->finalize (object);
}
static void
gtk_inspector_css_rule_view_row_class_init (GtkInspectorCssRuleViewRowClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
object_class->finalize = finalize;
gtk_widget_class_set_template_from_resource (widget_class, "/org/gtk/libgtk/inspector/cssruleviewrow.ui");
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorCssRuleViewRow, selector_label);
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorCssRuleViewRow, location_button);
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorCssRuleViewRow, style_label);
gtk_widget_class_bind_template_callback (widget_class, location_button_clicked);
}
static void
gtk_inspector_css_rule_view_row_init (GtkInspectorCssRuleViewRow *ce)
{
gtk_widget_init_template (GTK_WIDGET (ce));
}
static GtkCssSelector *
gtk_inspector_css_rule_view_row_get_selector (GtkInspectorCssRuleViewRow *row)
{
GtkInspectorCssRuleViewRowPrivate *priv = gtk_inspector_css_rule_view_row_get_instance_private (row);
return gtk_css_style_rule_get_selector (GTK_CSS_STYLE_RULE (priv->rule), priv->selector_id);
}
static void
update_selector_label (GtkInspectorCssRuleViewRow *row)
{
GtkInspectorCssRuleViewRowPrivate *priv;
GtkCssSelector *selector;
GString *string;
priv = gtk_inspector_css_rule_view_row_get_instance_private (row);
selector = gtk_css_style_rule_get_selector (GTK_CSS_STYLE_RULE (priv->rule), priv->selector_id);
string = g_string_new (NULL);
_gtk_css_selector_print (selector, string);
g_string_append (string, " {");
gtk_label_set_text (GTK_LABEL (priv->selector_label), string->str);
g_string_free (string, TRUE);
}
static void
update_style_label (GtkInspectorCssRuleViewRow *row)
{
GtkInspectorCssRuleViewRowPrivate *priv;
GtkCssStyleDeclaration *style;
GString *string;
guint i;
priv = gtk_inspector_css_rule_view_row_get_instance_private (row);
style = gtk_css_style_rule_get_style (GTK_CSS_STYLE_RULE (priv->rule));
string = g_string_new (NULL);
for (i = 0; i < gtk_css_style_declaration_get_length (style); i++)
{
GtkCssDeclaration *decl = gtk_css_style_declaration_get_declaration (style, i);
if (i > 0)
g_string_append (string, "\n");
g_string_append (string, gtk_css_declaration_get_name (decl));
g_string_append (string, ": ");
_gtk_css_value_print (gtk_css_declaration_get_value (decl), string);
g_string_append (string, ";");
}
gtk_label_set_text (GTK_LABEL (priv->style_label), string->str);
g_string_free (string, TRUE);
}
static void
update_location_label (GtkInspectorCssRuleViewRow *row)
{
GtkInspectorCssRuleViewRowPrivate *priv;
GtkCssStyleSheet *style_sheet;
GString *string;
GFile *file;
priv = gtk_inspector_css_rule_view_row_get_instance_private (row);
string = g_string_new ("<a href=\"foo\">");
style_sheet = gtk_css_rule_get_parent_style_sheet (GTK_CSS_RULE (priv->rule));
file = gtk_css_style_sheet_get_file (style_sheet);
if (file)
{
GFileInfo *info;
info = g_file_query_info (file, G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME, 0, NULL, NULL);
if (info)
{
char *escaped = g_markup_escape_text (g_file_info_get_display_name (info), -1);
g_string_append (string, escaped);
g_free (escaped);
g_object_unref (info);
}
else
{
g_string_append (string, "&lt;broken file&gt;");
}
}
else
{
g_string_append (string, "&lt;data&gt;");
}
g_string_append (string, "</a>");
gtk_label_set_markup (GTK_LABEL (priv->location_button), string->str);
g_string_free (string, TRUE);
}
GtkWidget *
gtk_inspector_css_rule_view_row_new (GtkCssStyleRule *rule,
guint selector_id)
{
GtkInspectorCssRuleViewRowPrivate *priv;
GtkInspectorCssRuleViewRow *row;
row = g_object_new (GTK_TYPE_INSPECTOR_CSS_RULE_VIEW_ROW, NULL);
priv = gtk_inspector_css_rule_view_row_get_instance_private (row);
priv->rule = g_object_ref (rule);
priv->selector_id = selector_id;
update_selector_label (row);
update_location_label (row);
update_style_label (row);
return GTK_WIDGET (row);
}
gint
gtk_inspector_css_rule_view_row_compare_specificity (GtkInspectorCssRuleViewRow *row1,
GtkInspectorCssRuleViewRow *row2)
{
GtkCssSelector *selector1 = gtk_inspector_css_rule_view_row_get_selector (row1);
GtkCssSelector *selector2 = gtk_inspector_css_rule_view_row_get_selector (row2);
return _gtk_css_selector_compare (selector1, selector2);
}

View File

@@ -0,0 +1,64 @@
/*
* Copyright (c) 2016 Benjamin Otte <otte@gnome.org>
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#ifndef _GTK_INSPECTOR_CSS_RULE_VIEW_ROW_H_
#define _GTK_INSPECTOR_CSS_RULE_VIEW_ROW_H_
#include <gtk/gtk.h>
#include "gtk/gtkcssstyleruleprivate.h"
#define GTK_TYPE_INSPECTOR_CSS_RULE_VIEW_ROW (gtk_inspector_css_rule_view_row_get_type())
#define GTK_INSPECTOR_CSS_RULE_VIEW_ROW(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GTK_TYPE_INSPECTOR_CSS_RULE_VIEW_ROW, GtkInspectorCssRuleViewRow))
#define GTK_INSPECTOR_CSS_RULE_VIEW_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GTK_TYPE_INSPECTOR_CSS_RULE_VIEW_ROW, GtkInspectorCssRuleViewRowClass))
#define GTK_INSPECTOR_IS_CSS_RULE_VIEW_ROW(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GTK_TYPE_INSPECTOR_CSS_RULE_VIEW_ROW))
#define GTK_INSPECTOR_IS_CSS_RULE_VIEW_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GTK_TYPE_INSPECTOR_CSS_RULE_VIEW_ROW))
#define GTK_INSPECTOR_CSS_RULE_VIEW_ROW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GTK_TYPE_INSPECTOR_CSS_RULE_VIEW_ROW, GtkInspectorCssRuleViewRowClass))
typedef struct _GtkInspectorCssRuleViewRow GtkInspectorCssRuleViewRow;
typedef struct _GtkInspectorCssRuleViewRowClass GtkInspectorCssRuleViewRowClass;
typedef struct _GtkInspectorCssRuleViewRow
{
GtkListBoxRow parent;
} GtkInspectorCssRuleViewRow;
typedef struct _GtkInspectorCssRuleViewRowClass
{
GtkListBoxRowClass parent;
} GtkInspectorCssRuleViewRowClass;
G_BEGIN_DECLS
GType gtk_inspector_css_rule_view_row_get_type (void);
GtkWidget * gtk_inspector_css_rule_view_row_new (GtkCssStyleRule *rule,
guint selector_id);
gint gtk_inspector_css_rule_view_row_compare_specificity
(GtkInspectorCssRuleViewRow *row1,
GtkInspectorCssRuleViewRow *row2);
G_END_DECLS
#endif // _GTK_INSPECTOR_CSS_RULE_VIEW_ROW_H_
// vim: set et sw=2 ts=2:

View File

@@ -28,6 +28,7 @@
#include "cellrenderergraph.h"
#include "css-editor.h"
#include "css-node-tree.h"
#include "cssruleview.h"
#include "data-list.h"
#include "general.h"
#include "gestures.h"
@@ -61,6 +62,7 @@ gtk_inspector_init (void)
g_type_ensure (GTK_TYPE_INSPECTOR_ACTIONS);
g_type_ensure (GTK_TYPE_INSPECTOR_CSS_EDITOR);
g_type_ensure (GTK_TYPE_INSPECTOR_CSS_NODE_TREE);
g_type_ensure (GTK_TYPE_INSPECTOR_CSS_RULE_VIEW);
g_type_ensure (GTK_TYPE_INSPECTOR_DATA_LIST);
g_type_ensure (GTK_TYPE_INSPECTOR_GENERAL);
g_type_ensure (GTK_TYPE_INSPECTOR_GESTURES);