4
* Copyright (C) 2006 Vincent Geddes
7
* Vincent Geddes <vincent.geddes@gmail.com>
9
* This program is free software; you can redistribute it and/or modify
10
* it under the terms of the GNU General Public License as published by
11
* the Free Software Foundation; either version 2 of the License, or
12
* (at your option) any later version.
14
* This program is distributed in the hope that it will be useful,
15
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16
* MERCHANDESIGN_VIEWILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
* GNU General Public License for more details.
19
* You should have received a copy of the GNU General Public License
20
* along with this program; if not, write to the Free Software
21
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
26
#include "glade-utils.h"
27
#include "glade-design-view.h"
28
#include "glade-design-layout.h"
31
#include <glib/gi18n.h>
33
#define GLADE_DESIGN_VIEW_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), GLADE_TYPE_DESIGN_VIEW, GladeDesignViewPrivate))
35
#define GLADE_DESIGN_VIEW_KEY "GLADE_DESIGN_VIEW_KEY"
43
struct _GladeDesignViewPrivate
47
GladeProject *project;
50
static GtkVBoxClass *parent_class = NULL;
53
G_DEFINE_TYPE(GladeDesignView, glade_design_view, GTK_TYPE_VBOX)
56
glade_design_view_set_project (GladeDesignView *view, GladeProject *project)
58
g_return_if_fail (GLADE_IS_PROJECT (project));
60
view->priv->project = project;
62
g_object_set_data (G_OBJECT (view->priv->project), GLADE_DESIGN_VIEW_KEY, view);
67
glade_design_view_set_property (GObject *object,
75
glade_design_view_set_project (GLADE_DESIGN_VIEW (object), g_value_get_object (value));
78
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
84
glade_design_view_get_property (GObject *object,
92
g_value_set_object (value, GLADE_DESIGN_VIEW (object)->priv->project);
95
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
101
glade_design_view_init (GladeDesignView *view)
106
view->priv = GLADE_DESIGN_VIEW_GET_PRIVATE (view);
108
view->priv->project = NULL;
109
view->priv->layout = glade_design_layout_new ();
111
sw = gtk_scrolled_window_new (NULL, NULL);
112
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
113
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), GTK_SHADOW_IN);
115
viewport = gtk_viewport_new (NULL, NULL);
116
gtk_viewport_set_shadow_type (GTK_VIEWPORT (viewport), GTK_SHADOW_NONE);
117
gtk_container_add (GTK_CONTAINER (viewport), view->priv->layout);
118
gtk_container_add (GTK_CONTAINER (sw), viewport);
120
gtk_widget_show (sw);
121
gtk_widget_show (viewport);
122
gtk_widget_show (view->priv->layout);
124
gtk_box_pack_start (GTK_BOX (view), sw, TRUE, TRUE, 0);
126
gtk_container_set_border_width (GTK_CONTAINER (view), 0);
131
glade_design_view_class_init (GladeDesignViewClass *class)
133
GObjectClass *object_class;
134
GtkWidgetClass *widget_class;
136
parent_class = g_type_class_peek_parent (class);
137
object_class = G_OBJECT_CLASS (class);
138
widget_class = GTK_WIDGET_CLASS (class);
140
object_class->get_property = glade_design_view_get_property;
141
object_class->set_property = glade_design_view_set_property;
143
g_object_class_install_property (object_class,
145
g_param_spec_object ("project",
147
"The project for this view",
149
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
151
g_type_class_add_private (object_class, sizeof (GladeDesignViewPrivate));
155
glade_design_view_get_project (GladeDesignView *view)
157
g_return_val_if_fail (GLADE_IS_DESIGN_VIEW (view), NULL);
159
return view->priv->project;
164
glade_design_view_new (GladeProject *project)
166
GladeDesignView *view;
168
g_return_val_if_fail (GLADE_IS_PROJECT (project), NULL);
170
view = g_object_new (GLADE_TYPE_DESIGN_VIEW,
174
return GTK_WIDGET (view);
178
glade_design_view_get_from_project (GladeProject *project)
182
g_return_val_if_fail (GLADE_IS_PROJECT (project), NULL);
184
p = g_object_get_data (G_OBJECT (project), GLADE_DESIGN_VIEW_KEY);
186
return (p != NULL) ? GLADE_DESIGN_VIEW (p) : NULL;
191
glade_design_view_get_layout (GladeDesignView *view)
193
return GLADE_DESIGN_LAYOUT (view->priv->layout);