2
LibGViewer - GTK+ File Viewer library
3
Copyright (C) 2006 Assaf Gordon
6
GNOME Commander - A GNOME based file manager
7
Copyright (C) 2001-2006 Marcus Bjurman
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
MERCHANTABILITY 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
31
#include <gtk/gtktable.h>
34
#include "scroll-box.h"
36
static GtkTableClass *parent_class = NULL ;
38
/* Class Private Data */
39
struct _ScrollBoxPrivate
46
/* Gtk class related static functions */
47
static void scroll_box_init (ScrollBox *w);
48
static void scroll_box_class_init (ScrollBoxClass *class);
50
static void scroll_box_destroy (GtkObject *widget);
51
static gboolean scroll_box_button_press( GtkWidget *widget,GdkEventButton *event, gpointer data );
53
/*****************************************
55
(defined in the header file)
56
*****************************************/
57
GtkType scroll_box_get_type (void)
59
static GtkType type = 0;
63
sizeof (ScrollBoxClass),
66
(GClassInitFunc) scroll_box_class_init,
71
(GInstanceInitFunc) scroll_box_init
73
type = g_type_register_static(GTK_TYPE_TABLE, "scrollbox", &info,0);
83
w = gtk_type_new (scroll_box_get_type ());
85
return GTK_WIDGET (w);
89
scroll_box_class_init (ScrollBoxClass *class)
91
GtkObjectClass *object_class;
93
object_class = GTK_OBJECT_CLASS (class);
94
parent_class = gtk_type_class(gtk_table_get_type());
96
object_class->destroy = scroll_box_destroy ;
100
scroll_box_init (ScrollBox *w)
102
w->priv = g_new0(ScrollBoxPrivate,1);
104
gtk_table_resize(GTK_TABLE(w), 2, 2);
105
gtk_table_set_homogeneous(GTK_TABLE(w),FALSE);
107
w->priv->vscroll = gtk_vscrollbar_new (NULL);
108
gtk_widget_show (w->priv->vscroll);
109
gtk_table_attach (GTK_TABLE(w), w->priv->vscroll, 1, 2, 0, 1,
110
(GtkAttachOptions) (GTK_FILL),
111
(GtkAttachOptions) (GTK_FILL), 0, 0);
113
w->priv->hscroll = gtk_hscrollbar_new (NULL);
114
gtk_widget_show (w->priv->hscroll);
115
gtk_table_attach (GTK_TABLE (w), w->priv->hscroll, 0, 1, 1, 2,
116
(GtkAttachOptions) (GTK_FILL),
117
(GtkAttachOptions) (GTK_FILL), 0, 0);
118
w->priv->client = NULL ;
120
g_signal_connect(G_OBJECT(w),"button-press-event", G_CALLBACK(scroll_box_button_press), (gpointer)w) ;
121
g_signal_connect(G_OBJECT(w),"destroy-event", G_CALLBACK(scroll_box_destroy), (gpointer)w) ;
125
scroll_box_destroy (GtkObject *widget)
129
g_return_if_fail (widget!= NULL);
130
g_return_if_fail (IS_SCROLL_BOX (widget));
132
w = SCROLL_BOX (widget);
136
g_object_unref(G_OBJECT(w->priv->client)) ;
137
w->priv->client=NULL ;
143
if (GTK_OBJECT_CLASS (parent_class)->destroy)
144
(* GTK_OBJECT_CLASS (parent_class)->destroy)(widget);
147
GtkRange* scroll_box_get_v_range(ScrollBox *obj)
149
g_return_val_if_fail (obj!= NULL, FALSE);
150
g_return_val_if_fail (IS_SCROLL_BOX (obj), FALSE);
152
return GTK_RANGE(obj->priv->vscroll);
156
static gboolean scroll_box_button_press( GtkWidget *widget, GdkEventButton *event, gpointer data)
160
g_return_val_if_fail (widget != NULL, FALSE);
161
g_return_val_if_fail (IS_SCROLL_BOX (widget), FALSE);
162
g_return_val_if_fail (event != NULL, FALSE);
164
w = SCROLL_BOX (widget);
169
void scroll_box_set_client ( ScrollBox *obj, GtkWidget* client)
171
g_return_if_fail (obj != NULL);
172
g_return_if_fail (IS_SCROLL_BOX (obj));
174
if (obj->priv->client) {
175
if (obj->priv->client)
176
g_object_unref(G_OBJECT(obj->priv->client)) ;
177
obj->priv->client=NULL ;
180
g_return_if_fail(client!=NULL);
181
g_object_ref(G_OBJECT(client));
182
gtk_widget_show(client);
183
obj->priv->client = client ;
184
gtk_table_attach (GTK_TABLE (obj), client , 0, 1, 0, 1,
185
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
186
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
189
GtkWidget* scroll_box_get_client ( ScrollBox *obj )
191
g_return_val_if_fail (obj!= NULL, NULL);
192
g_return_val_if_fail (IS_SCROLL_BOX (obj), NULL);
194
return obj->priv->client;
197
void scroll_box_set_h_adjustment (ScrollBox *obj, GtkAdjustment *adjustment)
199
g_return_if_fail (obj != NULL);
200
g_return_if_fail (IS_SCROLL_BOX(obj));
202
gtk_range_set_adjustment(GTK_RANGE(obj->priv->hscroll), adjustment);
205
void scroll_box_set_v_adjustment (ScrollBox *obj, GtkAdjustment *adjustment)
207
g_return_if_fail (obj != NULL);
208
g_return_if_fail (IS_SCROLL_BOX(obj));
210
gtk_range_set_adjustment(GTK_RANGE(obj->priv->vscroll), adjustment);
213
GtkAdjustment* scroll_box_get_h_adjustment (ScrollBox *obj)
215
g_return_val_if_fail (obj != NULL,NULL);
216
g_return_val_if_fail (IS_SCROLL_BOX(obj),NULL);
218
return gtk_range_get_adjustment(GTK_RANGE(obj->priv->hscroll));
221
GtkAdjustment* scroll_box_get_v_adjustment (ScrollBox *obj)
223
g_return_val_if_fail (obj != NULL,NULL);
224
g_return_val_if_fail (IS_SCROLL_BOX(obj),NULL);
226
return gtk_range_get_adjustment(GTK_RANGE(obj->priv->vscroll));