X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtkfilechooserwidget.c;h=27ef3f6119ee69a29e848ae150d3e026f35465ed;hb=HEAD;hp=645b0b0d57f876034182382675bedbaa2f6381e7;hpb=94eec042676a8e18cebc9af8f27cd251355f4ba4;p=~andy%2Fgtk diff --git a/gtk/gtkfilechooserwidget.c b/gtk/gtkfilechooserwidget.c index 645b0b0d5..27ef3f611 100644 --- a/gtk/gtkfilechooserwidget.c +++ b/gtk/gtkfilechooserwidget.c @@ -13,31 +13,41 @@ * 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 +#include "config.h" +#include "gtkfilechooserprivate.h" + #include "gtkfilechooserwidget.h" #include "gtkfilechooserdefault.h" #include "gtkfilechooserutils.h" #include "gtktypebuiltins.h" #include "gtkfilechooserembed.h" +#include "gtkorientable.h" #include "gtkintl.h" -#include "gtkalias.h" -struct _GtkFileChooserWidgetPrivate -{ - GtkWidget *impl; - char *file_system; -}; +/** + * SECTION:gtkfilechooserwidget + * @Short_description: File chooser widget that can be embedded in other widgets + * @Title: GtkFileChooserWidget + * @See_also: #GtkFileChooser, #GtkFileChooserDialog + * + * #GtkFileChooserWidget is a widget suitable for selecting files. + * It is the main building block of a #GtkFileChooserDialog. Most + * applications will only need to use the latter; you can use + * #GtkFileChooserWidget as part of a larger window if you have + * special needs. + * + * Note that #GtkFileChooserWidget does not have any methods of its + * own. Instead, you should use the functions that work on a + * #GtkFileChooser. + */ + #define GTK_FILE_CHOOSER_WIDGET_GET_PRIVATE(o) (GTK_FILE_CHOOSER_WIDGET (o)->priv) -static void gtk_file_chooser_widget_class_init (GtkFileChooserWidgetClass *class); -static void gtk_file_chooser_widget_init (GtkFileChooserWidget *chooser_widget); static void gtk_file_chooser_widget_finalize (GObject *object); static GObject* gtk_file_chooser_widget_constructor (GType type, @@ -52,63 +62,17 @@ static void gtk_file_chooser_widget_get_property (GObject *obj GValue *value, GParamSpec *pspec); -static GObjectClass *parent_class; - -GType -gtk_file_chooser_widget_get_type (void) -{ - static GType file_chooser_widget_type = 0; - - if (!file_chooser_widget_type) - { - static const GTypeInfo file_chooser_widget_info = - { - sizeof (GtkFileChooserWidgetClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) gtk_file_chooser_widget_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof (GtkFileChooserWidget), - 0, /* n_preallocs */ - (GInstanceInitFunc) gtk_file_chooser_widget_init, - }; - - static const GInterfaceInfo file_chooser_info = - { - (GInterfaceInitFunc) _gtk_file_chooser_delegate_iface_init, /* interface_init */ - NULL, /* interface_finalize */ - NULL /* interface_data */ - }; - - static const GInterfaceInfo file_chooser_embed_info = - { - (GInterfaceInitFunc) _gtk_file_chooser_embed_delegate_iface_init, /* interface_init */ - NULL, /* interface_finalize */ - NULL /* interface_data */ - }; - - file_chooser_widget_type = g_type_register_static (GTK_TYPE_VBOX, I_("GtkFileChooserWidget"), - &file_chooser_widget_info, 0); - - g_type_add_interface_static (file_chooser_widget_type, - GTK_TYPE_FILE_CHOOSER, - &file_chooser_info); - g_type_add_interface_static (file_chooser_widget_type, - GTK_TYPE_FILE_CHOOSER_EMBED, - &file_chooser_embed_info); - } - - return file_chooser_widget_type; -} +G_DEFINE_TYPE_WITH_CODE (GtkFileChooserWidget, gtk_file_chooser_widget, GTK_TYPE_BOX, + G_IMPLEMENT_INTERFACE (GTK_TYPE_FILE_CHOOSER, + _gtk_file_chooser_delegate_iface_init) + G_IMPLEMENT_INTERFACE (GTK_TYPE_FILE_CHOOSER_EMBED, + _gtk_file_chooser_embed_delegate_iface_init)) static void gtk_file_chooser_widget_class_init (GtkFileChooserWidgetClass *class) { GObjectClass *gobject_class = G_OBJECT_CLASS (class); - parent_class = g_type_class_peek_parent (class); - gobject_class->constructor = gtk_file_chooser_widget_constructor; gobject_class->set_property = gtk_file_chooser_widget_set_property; gobject_class->get_property = gtk_file_chooser_widget_get_property; @@ -126,6 +90,8 @@ gtk_file_chooser_widget_init (GtkFileChooserWidget *chooser_widget) GTK_TYPE_FILE_CHOOSER_WIDGET, GtkFileChooserWidgetPrivate); chooser_widget->priv = priv; + gtk_orientable_set_orientation (GTK_ORIENTABLE (chooser_widget), + GTK_ORIENTATION_VERTICAL); } static void @@ -135,7 +101,7 @@ gtk_file_chooser_widget_finalize (GObject *object) g_free (chooser->priv->file_system); - G_OBJECT_CLASS (parent_class)->finalize (object); + G_OBJECT_CLASS (gtk_file_chooser_widget_parent_class)->finalize (object); } static GObject* @@ -145,24 +111,19 @@ gtk_file_chooser_widget_constructor (GType type, { GtkFileChooserWidgetPrivate *priv; GObject *object; - gchar *current_folder; - object = parent_class->constructor (type, - n_construct_properties, - construct_params); + object = G_OBJECT_CLASS (gtk_file_chooser_widget_parent_class)->constructor (type, + n_construct_properties, + construct_params); priv = GTK_FILE_CHOOSER_WIDGET_GET_PRIVATE (object); gtk_widget_push_composite_child (); - priv->impl = _gtk_file_chooser_default_new (priv->file_system); + priv->impl = _gtk_file_chooser_default_new (); gtk_box_pack_start (GTK_BOX (object), priv->impl, TRUE, TRUE, 0); gtk_widget_show (priv->impl); - current_folder = g_get_current_dir (); - gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (priv->impl), current_folder); - g_free (current_folder); - _gtk_file_chooser_set_delegate (GTK_FILE_CHOOSER (object), GTK_FILE_CHOOSER (priv->impl)); @@ -184,10 +145,6 @@ gtk_file_chooser_widget_set_property (GObject *object, switch (prop_id) { - case GTK_FILE_CHOOSER_PROP_FILE_SYSTEM_BACKEND: - g_free (priv->file_system); - priv->file_system = g_value_dup_string (value); - break; default: g_object_set_property (G_OBJECT (priv->impl), pspec->name, value); break; @@ -224,31 +181,3 @@ gtk_file_chooser_widget_new (GtkFileChooserAction action) "action", action, NULL); } - -/** - * gtk_file_chooser_widget_new_with_backend: - * @action: Open or save mode for the widget - * @backend: The name of the specific filesystem backend to use. - * - * Creates a new #GtkFileChooserWidget with a specified backend. This is - * especially useful if you use gtk_file_chooser_set_local_only() to allow - * non-local files. This is a file chooser widget that can be embedded in - * custom windows and it is the same widget that is used by - * #GtkFileChooserDialog. - * - * Return value: a new #GtkFileChooserWidget - * - * Since: 2.4 - **/ -GtkWidget * -gtk_file_chooser_widget_new_with_backend (GtkFileChooserAction action, - const gchar *backend) -{ - return g_object_new (GTK_TYPE_FILE_CHOOSER_WIDGET, - "action", action, - "file-system-backend", backend, - NULL); -} - -#define __GTK_FILE_CHOOSER_WIDGET_C__ -#include "gtkaliasdef.c"