diff options
author | Michael Natterer <mitch@imendio.com> | 2008-09-30 08:14:11 +0000 |
---|---|---|
committer | Michael Natterer <mitch@src.gnome.org> | 2008-09-30 08:14:11 +0000 |
commit | ee3ea1b37611a1f422bd82525d1c855ca1b7aaac (patch) | |
tree | daf1151a31462901f2e8f9d5d2f982752b313b96 | |
parent | 885dd3ef6af50e34505c3dd089318a583ab04735 (diff) | |
download | gtk+-ee3ea1b37611a1f422bd82525d1c855ca1b7aaac.tar.gz |
Bug 541009 – Get rid of separate subclasses for horizontal and vertical
2008-09-30 Michael Natterer <mitch@imendio.com>
Bug 541009 – Get rid of separate subclasses for horizontal and
vertical orientation:
* gtk/Makefile.am
* gtk/gtk.symbols
* gtk/gtk.h
* gtk/gtkorientable.[ch]: add new interface GtkOrientable which
will be implemented by everything that can switch orientation.
svn path=/trunk/; revision=21550
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | gtk/Makefile.am | 2 | ||||
-rw-r--r-- | gtk/gtk.h | 1 | ||||
-rw-r--r-- | gtk/gtk.symbols | 8 | ||||
-rw-r--r-- | gtk/gtkorientable.c | 129 | ||||
-rw-r--r-- | gtk/gtkorientable.h | 60 |
6 files changed, 211 insertions, 0 deletions
@@ -1,3 +1,14 @@ +2008-09-30 Michael Natterer <mitch@imendio.com> + + Bug 541009 – Get rid of separate subclasses for horizontal and + vertical orientation: + + * gtk/Makefile.am + * gtk/gtk.symbols + * gtk/gtk.h + * gtk/gtkorientable.[ch]: add new interface GtkOrientable which + will be implemented by everything that can switch orientation. + 2008-09-30 Christian Dywan <christian@imendio.com> Fix a typo in the tutorial. diff --git a/gtk/Makefile.am b/gtk/Makefile.am index d17f59c322..a3e9eedc3a 100644 --- a/gtk/Makefile.am +++ b/gtk/Makefile.am @@ -240,6 +240,7 @@ gtk_public_h_sources = \ gtkmountoperation.h \ gtknotebook.h \ gtkobject.h \ + gtkorientable.h \ gtkpagesetup.h \ gtkpaned.h \ gtkpapersize.h \ @@ -498,6 +499,7 @@ gtk_base_c_sources = \ gtkmountoperation.c \ gtknotebook.c \ gtkobject.c \ + gtkorientable.c \ gtkpagesetup.c \ gtkpaned.c \ gtkpapersize.c \ @@ -128,6 +128,7 @@ #include <gtk/gtkmountoperation.h> #include <gtk/gtknotebook.h> #include <gtk/gtkobject.h> +#include <gtk/gtkorientable.h> #include <gtk/gtkpagesetup.h> #include <gtk/gtkpapersize.h> #include <gtk/gtkpaned.h> diff --git a/gtk/gtk.symbols b/gtk/gtk.symbols index ebe20d4b8e..537be335ca 100644 --- a/gtk/gtk.symbols +++ b/gtk/gtk.symbols @@ -2548,6 +2548,14 @@ gtk_object_get_type G_GNUC_CONST #endif #endif +#if IN_HEADER(__GTK_ORIENTABLE_H__) +#if IN_FILE(__GTK_ORIENTABLE_C__) +gtk_orientable_get_type +gtk_orientable_get_orientation +gtk_orientable_set_orientation +#endif +#endif + #if IN_HEADER(__GTK_OLD_EDITABLE_H__) #if IN_FILE(__GTK_OLD_EDITABLE_C__) gtk_old_editable_changed diff --git a/gtk/gtkorientable.c b/gtk/gtkorientable.c new file mode 100644 index 0000000000..5bd163878c --- /dev/null +++ b/gtk/gtkorientable.c @@ -0,0 +1,129 @@ +/* GTK - The GIMP Toolkit + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * gtkorientable.c + * Copyright (C) 2008 Imendio AB + * Contact: Michael Natterer <mitch@imendio.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * 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. + */ + +#include "config.h" + +#include "gtkorientable.h" +#include "gtkprivate.h" +#include "gtkintl.h" +#include "gtkalias.h" + + +static void gtk_orientable_base_init (GtkOrientableIface *iface); + + +GType +gtk_orientable_get_type (void) +{ + static GType orientable_type = 0; + + if (! orientable_type) + { + const GTypeInfo orientable_info = + { + sizeof (GtkOrientableIface), + (GBaseInitFunc) gtk_orientable_base_init, + (GBaseFinalizeFunc) NULL, + }; + + orientable_type = g_type_register_static (G_TYPE_INTERFACE, + I_("GtkOrientable"), + &orientable_info, 0); + } + + return orientable_type; +} + +static void +gtk_orientable_base_init (GtkOrientableIface *iface) +{ + static gboolean initialized = FALSE; + + if (initialized) + return; + + /** + * GtkOrientable:orientation: + * + * The orientation of the orientable. + * + * Since: 2.16 + **/ + g_object_interface_install_property (iface, + g_param_spec_enum ("orientation", + P_("Orientation"), + P_("The orientation of the orientable"), + GTK_TYPE_ORIENTATION, + GTK_ORIENTATION_HORIZONTAL, + GTK_PARAM_READWRITE)); + + initialized = TRUE; +} + +/** + * gtk_orientable_set_orientation: + * @orientable: a #GtkOrientable + * @orientation: the orientable's new orientation. + * + * Sets the orientation of the @orientable. + * + * Since: 2.16 + **/ +void +gtk_orientable_set_orientation (GtkOrientable *orientable, + GtkOrientation orientation) +{ + g_return_if_fail (GTK_IS_ORIENTABLE (orientable)); + + g_object_set (orientable, + "orientation", orientation, + NULL); +} + +/** + * gtk_orientable_get_orientation: + * @orientable: a #GtkOrientable + * + * Retrieves the orientation of the @orientable. + * + * Return value: the orientation of the @orientable. + * + * Since: 2.16 + **/ +GtkOrientation +gtk_orientable_get_orientation (GtkOrientable *orientable) +{ + GtkOrientation orientation; + + g_return_val_if_fail (GTK_IS_ORIENTABLE (orientable), + GTK_ORIENTATION_HORIZONTAL); + + g_object_get (orientable, + "orientation", &orientation, + NULL); + + return orientation; +} + +#define __GTK_ORIENTABLE_C__ +#include "gtkaliasdef.c" diff --git a/gtk/gtkorientable.h b/gtk/gtkorientable.h new file mode 100644 index 0000000000..fa2c85bf08 --- /dev/null +++ b/gtk/gtkorientable.h @@ -0,0 +1,60 @@ +/* GTK - The GIMP Toolkit + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * gtkorientable.h + * Copyright (C) 2008 Imendio AB + * Contact: Michael Natterer <mitch@imendio.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * 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. + */ + +#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) +#error "Only <gtk/gtk.h> can be included directly." +#endif + +#ifndef __GTK_ORIENTABLE_H__ +#define __GTK_ORIENTABLE_H__ + +#include <gtk/gtkwidget.h> + +G_BEGIN_DECLS + +#define GTK_TYPE_ORIENTABLE (gtk_orientable_get_type ()) +#define GTK_ORIENTABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_ORIENTABLE, GtkOrientable)) +#define GTK_ORIENTABLE_CLASS(vtable) (G_TYPE_CHECK_CLASS_CAST ((vtable), GTK_TYPE_ORIENTABLE, GtkOrientableIface)) +#define GTK_IS_ORIENTABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_ORIENTABLE)) +#define GTK_IS_ORIENTABLE_CLASS(vtable) (G_TYPE_CHECK_CLASS_TYPE ((vtable), GTK_TYPE_ORIENTABLE)) +#define GTK_ORIENTABLE_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), GTK_TYPE_ORIENTABLE, GtkOrientableIface)) + + +typedef struct _GtkOrientable GtkOrientable; /* Dummy typedef */ +typedef struct _GtkOrientableIface GtkOrientableIface; + +struct _GtkOrientableIface +{ + GTypeInterface base_iface; +}; + + +GType gtk_orientable_get_type (void) G_GNUC_CONST; + +void gtk_orientable_set_orientation (GtkOrientable *orientable, + GtkOrientation orientation); +GtkOrientation gtk_orientable_get_orientation (GtkOrientable *orientable); + +G_END_DECLS + +#endif /* __GTK_ORIENTABLE_H__ */ |